Importing directly from mysql using mysql-source and materialised view does not work

Seems like queries like the following are not supported now (Error: Logical error while creating StorageMaterializedView. Could not retrieve table name from select query.).
CREATE MATERIALIZED VIEW table_name ENGINE=MergeTree(...) POPULATE AS
SELECT  * FROM mysql('host:3306', 'db', ...);

And one has to CREATE it first and the use the INPUT... SELECT Statement. Is support for CREATE MATERIALIZED VIEW on a mysql source planned?

Materialized views act more like triggers for inserts into table they are attached to, so it doesn't make sense to create one on top of table function call.

relates #5207 (about better exception)
#4006 (some ideas of implementation something similar).


Do not restart the server if it's running with the same .jar

Edit launch.Jenkinsfile so that the server is stopped and rerun only if the new .jar file has a different checksum from the last one. However, if the server is not running, then start it with the .jar file regardless of whether it is the same or not.
This is important for the cases where the world editor module, test files or pipeline configurations are edited.

I give up.

...I'll give it another go. Commit 4a2e56e7c5e3517448c050d25077c96693eb324b worked perfectly so I should just do something similar now.


Create a self contained posting script

Current implementation adds users to a server, but that's not very useful on its own. It would be better to automate some sort of posting process. Hypothetical situation would go like this:

Generate a person
Provide the user with the login details, and guide them towards a platform to post on (can be automated???)
Prompt the user to share the login details, or have some way of intercepting the login and/or capturing the cookie
Automate posting to happen at random times within a given window, based on biographical information and/or current events.

Ayrshare seems like a good tool, but only for posting. Good to think about other automatable solutions for things like liking/reposting - think about what EDM DJs use, but less obviously a bot.

Demo Day TODOS

[ ] Write script that just generates a generic post in the voice of the character.
[ ] Create a social media account for the demo character.
[ ] Extend the script to post with Ayrshare

Alternate route to automation


refactor: Use full builder id

Internally use full builder IDs including server url rather than worflow ref as a path. This should hopefully avoid confusion between dealing with builder IDs and GITHUB_WORKFLOW_REF which only contains the path portion. GITHUB_WORKFLOW_REF is the only thing that doesn't include the domain/server url part of the workflow/builder ID. The Fulcio OID claims include the full url.
Code extracted from #641

Thanks! I agree the builder code was a little hard to read

Thanks. It also raised the issue of the server url. We validate github.com urls in a couple places but we often compared just the path portions of buliderIDs which I think could be problematic security-wise.


Add useRenderTimer() composable to help measure performance

This PR adds a simple composable to help measure how long rendering takes. Usually I use Vue devtools for that. However, this composable can be helpful in a couple of cases:

After each render, the composable console.log()s how long the render took. That can be useful if there's other console.log()-ing happening: you can see the render times around the the other logging that you're doing.
The composable returns summary statistics about the render times.

What has been done to verify that this works as intended?
I wrote this composable while debugging performance issues in another PR (not yet pushed), so I think it works. The composable is a tool for debugging and performance evaluation and isn't used in production. Given that, I think that tests aren't needed.
Why is this the best possible solution? Were any other approaches considered?
There may be external packages out there with similar functionality, but I just wanted something simple. In most cases, Vue devtools will be the most useful thing.
How does this change affect users? Describe intentional changes to behavior and behavior that could have accidentally been affected by code changes. In other words, what are the regression risks?
This change is not user-facing.
Does this change require updates to user documentation? If so, please file an issue here and include the link below.
No changes needed.
Before submitting this PR, please make sure you have:

[x] run npm run test and npm run lint and confirmed all checks still pass OR confirm CircleCI build passes
[x] verified that any code or assets from external sources are properly credited in comments or that everything is internally sourced

Ah I realized that I made a last-minute change that wasn't quite right. I had reordered timer._push() before console.log(), but it's actually important that console.log() happens first. (timer.state is read as part of the console.log(), but timer._push() may change timer.state.)


[BEAM-14383] Improve "FailedRows" errors returned by beam.io.WriteToBigQuery

WriteToBigQuery pipeline returns errors when trying to insert rows that do not match the BigQuery table schema. errors is a dictionary that cointains one FailedRows key. FailedRows is a list of tuples where each tuple has two elements: BigQuery table name and the row that didn't match the schema.
This can be verified by running the BigQueryIO deadletter pattern https://beam.apache.org/documentation/patterns/bigqueryio/
Using the template approach I can print the failed rows in a pipeline. When running the job, logger simultaneously prints out the reason why the rows were invalid.
The reason (for why the row is invalid) should also be included in the tuple in addition to the BigQuery table and the raw row. This way next pipeline could eg. insert the invalid rows into a different BigQuery table with a schema.
error_schema = (
    {
        'fields': [
            {'name': 'timestamp', 'type': 'TIMESTAMP', 'mode': 'REQUIRED'},
            {'name': 'table', 'type': 'STRING', 'mode': 'REQUIRED'},
            {'name': 'reason', 'type': 'STRING', 'mode': 'NULLABLE'},
            {'name': 'row_json', 'type': 'STRING', 'mode': 'REQUIRED'},
        ]
    }
)

The whole pipeline implementation could look something like this
with beam.Pipeline(options=pipeline_options) as p:

    errors = (
        p
        | "Read from Pub/Sub subscription" >> beam.io.gcp.pubsub.ReadFromPubSub(
            subscription=known_args.input_subscription,
            timestamp_attribute=None)
        | "UTF-8 bytes to string" >> beam.Map(lambda msg: msg.decode("utf-8"))
        | "Parse JSON messages" >> beam.Map(json.loads)
        | "WriteToBigQuery" >> beam.io.WriteToBigQuery(
            known_args.output_table,
            schema=schema,
            create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER,
            write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
            ignore_unknown_columns=False,
            insert_retry_strategy=RetryStrategy.RETRY_ON_TRANSIENT_ERROR
        )
    )

    result = (
        errors["FailedRows"]
        | 'ParseErrors' >> beam.Map(lambda err: {
                "timestamp": time.time_ns() /<PHONE_NUMBER>,
                "table": err[0],
                "reason": None, # TODO to be replaced with `err[2]`
                "row_json": json.dumps(err[1]),
            })
        | "WriteErrorsToBigQuery" >> beam.io.WriteToBigQuery(
            known_args.output_table + "_error_records",
            schema=error_schema,
            create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED,
            write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
            ignore_unknown_columns=False,
            insert_retry_strategy=RetryStrategy.RETRY_ON_TRANSIENT_ERROR
        )
    )

During my reasearch I found a couple of alternate solutions, but they are more complex than they need to be. Thats why I explored the beam source code and found the solution to be an easy and simple change.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Choose reviewer(s) and mention them in a comment (R: @username).
[x] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

R: @jrmccluskey

R: @TheNeuralBit

@pabloem could you take a look at this Python BigQueryIO PR?
@Firlej would it be possible to add a test exercising this?

Run PythonLint PreCommit

@TheNeuralBit i've implemented a test based on the other tests in the sdks/python/apache_beam/io/gcp/bigquery_write_it_test.py file.

Run Python 3.7 PostCommit

I haven't forgotten about this. It's in my queue : )

Thanks @Firlej! I triggers a CI check that should exercise this new test.
This looks good, I guess my only concern is this could be a breaking change for existing users, e.g. if they're unpacking the current result destination, row = value. I think that's OK as long as we document this as a breaking change in CHANGES.md, but I think @chamikaramj or @pabloem should make that call.

@TheNeuralBit I updated CHANGES.md with a note regarding the changes implemented here.

I'll agree with Brian, and say that we can accept this inl. It's onlybreaking one particular usage, and it adds to the functionality.
LGTM.

It looks like we didn't get a green run on the Python PostComit before merging, the new test is failing at HEAD. I filed BEAM-14447 to track the failure. Could you take a look @Firlej?
If its not quick to diagnose and fix, we might just rollback this PR to preserve test signal. It's easy enough to roll it forward with a fix once we figure it out.

ah makes sense. I'll fix that as well.


Bad support for chaining base power modifiers from move effects

According to 9635ea7d56 (@DanUgore), moves should have an onBasePowerPriority of 4. However, runEvent() with onEffect = true always runs the move singleEvent with maximum priority.
628f32e8fbad4 removed the following declarations for being noop with the current implementation of runEvent.
brine.onBasePowerPriority: 4
facade.onBasePowerPriority: 4
fusionbolt.onBasePowerPriority: 4
fusionflare.onBasePowerPriority: 4
knockoff.onBasePowerPriority: 4
retaliate.onBasePowerPriority: 4
solarbeam.onBasePowerPriority: 4
solarblade.onBasePowerPriority: 4
venoshock.onBasePowerPriority: 4

Move modifiers were never supposed to have priority, they were mostly intended to be "fake modifiers" that were always run first. Like the base power one is called basePowerCallback instead of onBasePower to reflect this (or did I rename it).
We could in theory add active moves to runEvent, but this would involve a reworking of the event engine.

@Zarel , basePowerCallback and onBasePower are two different concepts for moves. onBasePower supports chainModify(). See: 65ad3758910092f2f3bcda421ff9d7f5b5caa3c5
As for "reworking the event engine", I think that's an overstatement.

Wow, 65ad3758910 is some janky code. 2013 was a simpler time before I really thought about code quality...

But yeah if we still support that, it shouldn't be too hard to support ...Priority on chained singleEvents.


QuantifiedConstraints appears to confuse HLint

Consider the following source code:
{-# LANGUAGE QuantifiedConstraints #-}

module Foo where

foo :: (forall a . Show a => Show (Maybe a)) => a -> Int
foo = 3

GHC (>= 8.6 of course) will happily compile this, but HLint will instead complain:
src/Foo.hs:5:49: Error: Parse error
Found:
    module Foo where

  > foo :: (forall a . Show a => Show (Maybe a)) => a -> Int
    foo = 3

1 hint

Version info from hlint --version:
HLint v2.2.2, (C) Neil Mitchell 2006-2019

Edit: Provided a simpler example reproducing this.

Thanks for the report. Almost certainly an issue with HSE, and something that we'll fix when #645 has finished landing.

HSE has been updated to deal with quantified constraints: https://github.com/haskell-suite/haskell-src-exts/pull/427#issuecomment-548641260
Would it be possible to update hlint accordingly, or is #645 the only planned way forward?

I just upgraded to the new version of haskell-src-exts, where this code works, so no longer an issue. Happy to take new HSE releases as they come out in the meantime.


Ingress only rule should allow outgoing TCP connection

I discovered a behavior that differs from regular NetworkPolicies about ingress rules and outgoing traffic. Let me know if it is the intended behavior:
The scenario can be reproduced in a Kind (with Calico as default CNI network plugin) using this fork (branch multinetpolicy-bugs):
$ cd e2e
$ ./get_tools.sh
$ ./setup_cluster.sh
$ kubectl apply -f stacked.yml
$ ./onweay-test.sh

The scenario creates

namespace test-oneway-multi

3 pods (pod-a, pod-b, pod-c)
MultiNetworkPolicy test-multinetwork-policy-oneway-1

podSelector: pod-a
ingress[0].from.podSelector: pod-b

namespace test-oneway-reguar
<same as test-oneway-multi with regular NetworkPolicies

oneway-test.sh reproduces the behavior:
$ kubectl apply -f oneway.yml
networkattachmentdefinition.k8s.cni.cncf.io/macvlan1-oneway created
namespace/test-oneway-multi created
pod/pod-a created
pod/pod-b created
pod/pod-c created
multinetworkpolicy.k8s.cni.cncf.io/test-multinetwork-policy-oneway-1 created
namespace/test-oneway-regular created
pod/pod-a created
pod/pod-b created
pod/pod-c created
networkpolicy.networking.k8s.io/test-network-policy-oneway-1 created

$ ./oneway-test.sh
pod/pod-a condition met
(1 = NO connection, 0 = can connect)
MULTI: pod-a <-- pod-b 0
MULTI: pod-a <-- pod-c 1
MULTI: pod-a --> pod-b 0
MULTI: pod-a --> pod-c 1
REGULAR: pod-a <-- pod-b 0
REGULAR: pod-a <-- pod-c 1
REGULAR: pod-a --> pod-b 0
REGULAR: pod-a --> pod-c 0

test-oneway-multi/pod-a iptables

Chain INPUT (policy ACCEPT 9 packets, 486 bytes)
 pkts bytes target     prot opt in     out     source               destination
   13   726 MULTI-INGRESS  all  --  net1   *       <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 10 packets, 546 bytes)
 pkts bytes target     prot opt in     out     source               destination
   10   546 MULTI-EGRESS  all  --  *      net1    <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain MULTI-0-INGRESS (1 references)
 pkts bytes target     prot opt in     out     source               destination
   13   726 MARK       all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0            MARK and 0xfffcffff
   13   726 MULTI-0-INGRESS-0-PORTS  all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0
   13   726 MULTI-0-INGRESS-0-FROM  all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0
    9   486 RETURN     all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0            mark match 0x30000/0x30000
    4   240 DROP       all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0

Chain MULTI-0-INGRESS-0-FROM (1 references)
 pkts bytes target     prot opt in     out     source               destination
    9   486 MARK       all  --  net1   *       <IP_ADDRESS>             <IP_ADDRESS>/0            MARK or 0x20000

Chain MULTI-0-INGRESS-0-PORTS (1 references)
 pkts bytes target     prot opt in     out     source               destination
   13   726 MARK       all  --  *      *       <IP_ADDRESS>/0            <IP_ADDRESS>/0            /* no ingress ports, skipped */ MARK or 0x10000

Chain MULTI-EGRESS (1 references)
 pkts bytes target     prot opt in     out     source               destination

Chain MULTI-INGRESS (1 references)
 pkts bytes target     prot opt in     out     source               destination
   13   726 MULTI-0-INGRESS  all  --  net1   *       <IP_ADDRESS>/0            <IP_ADDRESS>/0            /* policy:test-multinetwork-policy-oneway-1 net-attach-def:default/macvlan1-oneway */

With regular NetworkPolicies, pod-a is able to create connections to pod-c, while it is not possible with MultiNetworkPolicies.
MULTI: pod-a --> pod-c 1
REGULAR: pod-a --> pod-c 0

Let me know if I can work on a fix on this

Thanks for the issue. Will take a look into it when I'm back from off.

Yes, I can tackle it

@s1061123 I tried it after #28 and seems to be fixed. Closing this


[lore-generate-new] add favicon to new projects

New projects don't include a favicon, which results in this console error the in the browser dev tools:
http://localhost:3000/favicon.ico
Failed to load resource: the server responded with a status of 404 (Not Found)

A favicon should be added to new projects as an example. Some discussion around how create-react-app chose to implement it can be found here, along with issues they found in the process:
https://github.com/facebookincubator/create-react-app/issues/69

This was resolved as part of #166, alongside the Webpack v2 upgrade, using the favicons-webpack-plugin .


Fix recreate bug

refer to https://github.com/react-native-community/react-native-webview/issues/81#issue-370428707
I think it just missing a judgement. Place it on 'didMoveToWindow' should be good for the performance.

@finalquest @viv3kk @fangasvsass @garrettm Can you guys test that PR and confirm it's working fine :) ?

From a quick test, appears to fix the problem

Any ETA for when this might get merged and a new release pushed?  Trying to figure out if I need to fork this repo or if I can wait for the fix here.

works fine for me

Perfect. With the work I did yesterday I can release from my phone 😍

Perfect. With the work I did yesterday I can release from my phone 😍

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

@Titozzz How should I prevent the webView being re-create but also still able to have the onMessage event? I do not quite familiar with WKWebView, please advice, without fix, this is a quite important bug for the WKWebView component.

@malonguwa Thanks. It is my fault.
‘ removeScriptMessageHandlerForName:MessageHanderName’ if not called, it maybe cause memory leak.  Call in 'dealloc' method can't solve this problem.
It affect 'ReactNative' messageHandler, so the method in javascript 'window.postMessage()' maybe not evaluate on right way.
So you can delete this code temp
else {     [_webView.configuration.userContentController removeScriptMessageHandlerForName:MessageHanderName];   }
and override 'removeFromSuperview' method
`

(void)removeFromSuperview{
[super removeFromSuperview];
if (_webview) {
[_webView.configuration.userContentController removeScriptMessageHandlerForName:MessageHanderName];
_webview = nil;
}
}
`

I will test it and submit a PR.

Hello guys, please keep me updated on this.

@malonguwa Good.

Any update ?

@Titozzz Have submitted a PR.


[feat]: match component names from shadcn to shadcn-solid

Feature description
On the shadcn-ui repo, they use Input, and on shadcn-solid, it uses TextField. Is it possible to match component names, or was there a reason not to?
Affected component/components
TextField
Additional Context
Additional details here...
Before submitting

[X] I've made research efforts and searched the documentation
[X] I've searched for existing issues and PRs

I just followed the name from Kobalte.


az vm create --no-nsg

Would be great when using az vm create if we could create a VM without any NSG.  It's getting assigned to an existing subnet using  --subnet $(az network vnet subnet show -g RGHERE--vnet-name VNETHERE -n default -o tsv --query id) that already has an NSG.  I dont' want an NSG assigned to the VM NIC directly.

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

ID: 152b549b-d4b3-13e5-081c-c604b6e4d89e
Version Independent ID: 3f79be78-ce75-ad31-304b-bad7d475ec9e
Content: az vm
Content Source: src/azure-cli/azure/cli/command_modules/vm/_help.py
Service: virtual-machines
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

@qwordy Please take a look

You can use --nsg "".
But if the NIC already has a NSG, I don't think you can remove it using vm command. Try to use az network. @MyronFanQiu do you know which command can do this?

@ElanShudnow you can use this command to remove the existed nsg.
az network nic update --ids /subscriptions/xxxxxxxx/resourceGroups/nsg-test-xxxx/providers/Microsoft.Network/networkInterfaces/ddddd --remove networkSecurityGroup

@ElanShudnow Do we solve your issue?

Hope your issue is solved. If you have any other problems, please open a new issue. Your voice is welcome.


Consider using Pilgrim Definitive Edition - ENB and Weather

Summary
Since you guys are going for the S.T.A.L.K.E.R. look, you might think about using Pilgrim.
Basic example
Pilgrim Definitive Edition - ENB and Weather.  Adds spooky/dreadful looking atmospherics, including creepy music and sounds.  Unfortunately the mod author claims it can't be used with other Weather mods.
Motivation
To me this would greatly support and enhance your decision to go for a S.T.A.L.K.E.R. type vibe.  I used the original version of Pilgrim a few years ago and it really does change your perception of the game to a dark and dreary commonwealth.  I have a feeling though that a patch can be made for various weather mods through xEdit.

Thank you, I forgot all about Pilgrim. I will look into this for the next update!


Stay on the old route while loading the next

Moved the discussion here (from #22), as per @tmeasday's request.
IRP should allow staying on the old route, while loading the next. It's how I originally imagined IRP to behave, so this should also turn into the default behaviour.
Currently it will show an empty page with the progress bar, unless you've defined a loadingTemplate. If you have, it'll show that and a progress bar.

Is this feature the cause of the following issue?:
https://github.com/ManuelDeLeon/viewmodel/issues/151


chore: migrate to new backend in local development

Hey, I just made a Pull Request!
additionally allow defining custom sidebar item for dev app page.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Wanna double check, will merging this break local dev due to the lack of guest sign-in, or is that fine for the test setup?

Well, it doesn't work with old devApp either, and a hack to the backend is required so it's nothing new. I think this should be fixed for the createDevApp for all local environments so they would be authenticated as a guest user; especially when the new backend requires authentication of all requests.

Not stale

Not stale, @Rugvip @freben any chance to get this merged? :)


OpenCL-dev needs to be updated

The structure of the main code has been changed since this was written and the code needs to be updated to use the new syntax and grammar.
Also:

The "Testing" directory has been superseded by our new testing regime.

Most of what is in there should be deleted because later versions are better

OpenCLtest.py can be incorporated into our automatic tests

If we add opencl4py (and maybe pyopencl) to our requirements

We should just make a new branch and move the files in the OpenCL branch
that were new into that.
I'm not sure we should put the content of OpenCLtest.py into our automatic
tests, as it requires an OpenCL platform to exist on the user's computer.
That's not something we can control through PyPI.
On Sun, Jul 7, 2019 at 5:59 PM Christopher Llorracc Carroll <
<EMAIL_ADDRESS>wrote:

The structure of the main code has been changed since this was written and
the code needs to be updated to use the new syntax and grammar.
Also:

The "Testing" directory has been superseded by our new testing
regime.

Most of what is in there should be deleted because later versions
are better

OpenCLtest.py can be incorporated into our automatic tests

If we add opencl4py (and maybe pyopencl) to our requirements

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=ADKRAFMOEQNN6GVHXVTTLD3P6JRMRA5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4G5XJUIA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADKRAFPZJUFIHAGSYSNEWQTP6JRMRANCNFSM4H6WWI3Q
.

move the files in the OpenCL branch that were new into that

Is there an easy way to figure out what those files are?
Even once we do that, though, within the new files, the syntax for some of the commands has changed a bit.
Good point that we can't assume the user's computer has a working OpenCL installation.   One solution would be to add a first line to the test basically aborting it (without an error, but with a notice to the user) if it can't find OpenCL.
PS.  I spent a bit of time Googling about whether OpenCL is "dying" and unfortunately the short answer is "yes" or at least "unless something changes."  Given how much money Nvidia must be making from the scientific community, it seems strange that neither AMD nor Intel is doing anything to promote either OpenCL or some other open source alternative.  I'll see if I can learn more at SciPy, and in particular get advice about the best alternatives.

#348 posted a version to master that works on some combinations of machine, OS, and GPU but not others

Yeah, I think OpenCL is dying, which really upsets me.  I finally got my
answer from AMD about dropping CPU support for OpenCL on the newest version
of their drivers, and it's apparently due to switching to clang as their
standard compiler.  I don't know enough to know why that's relevant, but
apparently they think it's not a priority.
OpenCL works really, really well on CPUs, and particularly AMD's latest
processor line (Ryzen / Threadripper), and is very easy to interface with
Python to use all cores without doing obnoxious things like disk
read/writes and spawning more Python processes.  I've been an AMD fan since
2000, but I'm going to have to switch to Intel and nVidia (and learn how to
get CUDA working through Python, apparently).
On Mon, Jul 8, 2019 at 6:21 PM Christopher Llorracc Carroll <
<EMAIL_ADDRESS>wrote:

move the files in the OpenCL branch that were new into that
Is there an easy way to figure out what those files are?
Even once we do that, though, within the new files, the syntax for some of
the commands has changed a bit.
Good point that we can't assume the user's computer has a working OpenCL
installation. One solution would be to add a first line to the test
basically aborting it (without an error, but with a notice to the user) if
it can't find OpenCL.
PS. I spent a bit of time Googling about whether OpenCL is "dying" and
unfortunately the short answer is "yes" or at least "unless something
changes." Given how much money Nvidia must be making from the scientific
community, it seems strange that neither AMD nor Intel is doing anything to
promote either OpenCL or some other open source alternative. I'll see if I
can learn more at SciPy, and in particular get advice about the best
alternatives.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=ADKRAFP2AF3UGSCBUQ6SXELP6O4XBA5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZOQRBI#issuecomment-509413509,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADKRAFL4GADUVQ6OGLCYEALP6O4XBANCNFSM4H6WWI3Q
.

Various interactions at SciPy confirmed that rumors of the death of openCL
have not been greatly exaggerated.
Numpy, however, now has GPU support both for Nvidia and AMD devices.  You
still have to use somewhat different code for each environment, but it
sounds like the changes you need to make are small relative to the
difference between OpenCL and CUDA.
On Sat, Jul 13, 2019 at 11:46 AM Matthew N. White<EMAIL_ADDRESS>wrote:

Yeah, I think OpenCL is dying, which really upsets me. I finally got my
answer from AMD about dropping CPU support for OpenCL on the newest version
of their drivers, and it's apparently due to switching to clang as their
standard compiler. I don't know enough to know why that's relevant, but
apparently they think it's not a priority.
OpenCL works really, really well on CPUs, and particularly AMD's latest
processor line (Ryzen / Threadripper), and is very easy to interface with
Python to use all cores without doing obnoxious things like disk
read/writes and spawning more Python processes. I've been an AMD fan since
2000, but I'm going to have to switch to Intel and nVidia (and learn how to
get CUDA working through Python, apparently).
On Mon, Jul 8, 2019 at 6:21 PM Christopher Llorracc Carroll <
<EMAIL_ADDRESS>wrote:

move the files in the OpenCL branch that were new into that
Is there an easy way to figure out what those files are?
Even once we do that, though, within the new files, the syntax for some
of
the commands has changed a bit.
Good point that we can't assume the user's computer has a working OpenCL
installation. One solution would be to add a first line to the test
basically aborting it (without an error, but with a notice to the user)
if
it can't find OpenCL.
PS. I spent a bit of time Googling about whether OpenCL is "dying" and
unfortunately the short answer is "yes" or at least "unless something
changes." Given how much money Nvidia must be making from the scientific
community, it seems strange that neither AMD nor Intel is doing anything
to
promote either OpenCL or some other open source alternative. I'll see if
I
can learn more at SciPy, and in particular get advice about the best
alternatives.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=ADKRAFP2AF3UGSCBUQ6SXELP6O4XBA5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZOQRBI#issuecomment-509413509
,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/ADKRAFL4GADUVQ6OGLCYEALP6O4XBANCNFSM4H6WWI3Q
.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=AAKCK7ZO77YVETYFRPO4U23P7H2D3A5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ3UCEI#issuecomment-511131921,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAKCK742X5AF5FF3WMQNHJDP7H2D3ANCNFSM4H6WWI3Q
.

--

Chris Carroll

To clarify, numpy is a typo here; you mean numba, yes?
On Mon, Jul 15, 2019 at 6:32 PM Christopher Llorracc Carroll <
<EMAIL_ADDRESS>wrote:

Various interactions at SciPy confirmed that rumors of the death of openCL
have not been greatly exaggerated.
Numpy, however, now has GPU support both for Nvidia and AMD devices. You
still have to use somewhat different code for each environment, but it
sounds like the changes you need to make are small relative to the
difference between OpenCL and CUDA.
On Sat, Jul 13, 2019 at 11:46 AM Matthew N. White <
<EMAIL_ADDRESS>wrote:

Yeah, I think OpenCL is dying, which really upsets me. I finally got my
answer from AMD about dropping CPU support for OpenCL on the newest
version
of their drivers, and it's apparently due to switching to clang as their
standard compiler. I don't know enough to know why that's relevant, but
apparently they think it's not a priority.
OpenCL works really, really well on CPUs, and particularly AMD's latest
processor line (Ryzen / Threadripper), and is very easy to interface with
Python to use all cores without doing obnoxious things like disk
read/writes and spawning more Python processes. I've been an AMD fan
since
2000, but I'm going to have to switch to Intel and nVidia (and learn how
to
get CUDA working through Python, apparently).
On Mon, Jul 8, 2019 at 6:21 PM Christopher Llorracc Carroll <
<EMAIL_ADDRESS>wrote:

move the files in the OpenCL branch that were new into that
Is there an easy way to figure out what those files are?
Even once we do that, though, within the new files, the syntax for some
of
the commands has changed a bit.
Good point that we can't assume the user's computer has a working
OpenCL
installation. One solution would be to add a first line to the test
basically aborting it (without an error, but with a notice to the user)
if
it can't find OpenCL.
PS. I spent a bit of time Googling about whether OpenCL is "dying" and
unfortunately the short answer is "yes" or at least "unless something
changes." Given how much money Nvidia must be making from the
scientific
community, it seems strange that neither AMD nor Intel is doing
anything
to
promote either OpenCL or some other open source alternative. I'll see
if
I
can learn more at SciPy, and in particular get advice about the best
alternatives.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<

https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=ADKRAFP2AF3UGSCBUQ6SXELP6O4XBA5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZOQRBI#issuecomment-509413509

,
or mute the thread
<

https://github.com/notifications/unsubscribe-auth/ADKRAFL4GADUVQ6OGLCYEALP6O4XBANCNFSM4H6WWI3Q

.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
<
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=AAKCK7ZO77YVETYFRPO4U23P7H2D3A5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ3UCEI#issuecomment-511131921
,
or mute the thread
<
https://github.com/notifications/unsubscribe-auth/AAKCK742X5AF5FF3WMQNHJDP7H2D3ANCNFSM4H6WWI3Q
.

--

Chris Carroll

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/econ-ark/HARK/issues/343?email_source=notifications&email_token=ADKRAFLUPVKDAWH2GN2FTUTP7T3HTA5CNFSM4H6WWI32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ7E7VQ#issuecomment-511594454,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADKRAFLNTUZXP7VDGGZSIKTP7T3HTANCNFSM4H6WWI3Q
.

See #347 for further discussion

CUDA yay!


What would be the best way to re-use the generated protobuf structs for other purposes?

This one's a little hard to explain, and I'm aware this is more advice than raising a bug. But I can't seem to find answers to this anywhere.
I have structs which are used to bind data to mgo/mongodb calls. Currently, I'm calling data from MongoDB, binding it to a struct, such as...
// Item -
type Item struct {
	ID          bson.ObjectId `json:"id"`
	Name        string        `json:"name" bson:"name"`
	Description string        `json:"description" bson:"description"`
	Prices      []Price       `json:"prices" bson:"prices"`
}

I then have a protobuf definition that matches these structs, trouble is to use the generated code, I have to manually do things like...
item := &pb.Item{
    Id: itemModel.ID.String(),
    Name: itemModel.Name,
    Description: itemModel.Description,
    Prices: convertPrices(itemModel.Prices),
}

And have functions to convert all embedded structs. Which is incredibly tedious and not great performance wise.
So are there any short cuts or plugins to be able to either use generated code for other purposes, such as database entities, or to somehow marshal between the two types?
Here's a Stack Overflow link with more details: https://stackoverflow.com/questions/45154825/what-would-be-the-best-approach-to-converting-protoc-generated-structs-from-bson?noredirect=1#comment77278817_45154825

I'm not familiar with mgo APIs.  A hacky and inefficient approach would be to convert to/from JSON as intermediary between protos and mgo bson as both seems to support some conversion to/from JSON.  It may be inefficient, but you don't need to do the one-to-one mapping of fields, simply need to make sure the JSON tags are matching.
Sorry, I can't think of a more efficient approach that doesn't entail more code.

Hi @cybrcodr ,
Thanks for your response, a few people have suggested writing my own plugin for protobuf, is this something that's supported in Golang + protobuf?
Cheers,
Ewan

I'm not aware of such.  Another possibility is to write copy functions that use reflect package.  One for converting from proto to bson and another doing the reverse.
With reflect, you can look for bson tags on the mgo struct and assuming you have the tag names match up with the proto field names, it should be easy to set the values.  Proto structs have "protobuf" tag with name= in the value.
I noticed that your struct has ID w/o the bson tag.  You can alway special case that one, i.e. simply look for either the bson.ObjectId field type or the field name ID and convert that to/from the proto message field Id.
And it's really up to you on how to deal with error cases, i.e. if types are not matching or fields are not matching, etc.

Closing this issue for now.  Feel free to reopen or post more questions based on this discussion.

Just adding this for others looking for a solution; The GoGo protobuf project allows custom tags to be configured for messages: https://github.com/gogo/protobuf/blob/master/extensions.md.

Any updates?

Facing the same issue.  Using the protobuf generated types also means we can't use any external package types in our structs.
Definitely not looking to take the JSON serialize/deserialize performance cost, but the manually updating a conversion package seems tedious also

For now I use this package, https://github.com/jinzhu/copier to copy from struct to struct.


Add store.override()

It would be nice to have an option to re-map the Vuex action used by core/store module in the VS
I see it as a method to extend the Vuex.store used by VS:-
store.override('product/list', (payload) => {})
or
store.override('product/list', 'mystore/list')
Then we need to override dispatch() method to make the usage of such a map. Of course, we'll be needing a dispatchOriginal() to execute the original action and allow the extension developers to modify the result
Such a "cheap IoC" could be of course generating some issues - like never be sure which exact method will be executed when few extensions will override some basic actions. Although it's still kind of useful option to modify the ways data is loaded from ES / other sources - without modifying the core.

If noone will take it I can start development next week.

@filrak @pkarw did you see this approach ?
article: https://blog.hellocomet.co/mixin-composition-in-vuex/
example: https://gitlab.com/etnbrd/vuex-composition-example/tree/master

@pkarw please assign this to me if my PR addressed this issue.


chore: bdd-gh-1586817841 to 0.0.1

chore: Promote bdd-gh-1586817841 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Problems with scrolling to the end of the list using maxScrollExtent

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
Hello! I am running into an issue with a ListView.builder (or anything scrollable that builds widgets on demand). I try to scroll to the _scrollController.position.maxScrollExtent and it will not scroll to the end of the list, if your current scroll offset is not the maxScrollExtent - i.e. if I don't scroll the list at all, and only add items, everything scrolls correctly, but as soon as I scroll the list manually to the very top, or middle of the larger list, and add an item - it will not scroll to the very end.
Interesting observation, if I manually scroll the list and scroll animation is still in progress after I release the finger, and I add the item - it will also scroll correctly, so it stops working only when scroll finishes, and you try to add an item (will be visible on a video).
Another observation, if the height of the items is the same, the list will not scroll to the exactly last item (newly added). However, if the height is dynamic, the list will not scroll to the random amount of offset, sometimes a couple of items, that were already there before + newly added item (will be visible on a video).
Expected results
I would expect the list to scroll to the very end when I call scroll to _scrollController.position.maxScrollExtent, no matter whether I start from the start, middle or end of the list, and whether scroll animation is running or not.
Actual results
List scrolls to the very end of the list, if I call the scroll when I am already at the current end of the list, or when I manually scroll the list, while scroll animation is running, it will also scroll to the very end of the list.
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _list = List.generate(2, (index) => 'Item $index');
  final _scrollController = ScrollController();

  void _addItem() {
    setState(() {
      _list.add('Item ${_list.length}');
    });

    SchedulerBinding.instance.addPostFrameCallback((_) {
      _scrollController.animateTo(
        _scrollController.position.maxScrollExtent,
        duration: const Duration(milliseconds: 250),
        curve: Curves.easeOut,
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ListView.builder(
          controller: _scrollController,
          itemCount: _list.length,
          itemBuilder: (context, index) => ListTile(
            title: Text(_list[index]),
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _addItem,
        child: const Icon(Icons.add),
      ),
    );
  }
}

In a video I also show example with different item heights, the same code, I just change string I add to the list to some lorem, adding flutter_lorem dependency to pubspec. Example with lorem:
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_lorem/flutter_lorem.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _list = List.generate(
    2,
    (index) => lorem(paragraphs: 1, words: Random().nextInt(30) + 1),
  );
  final _scrollController = ScrollController();

  void _addItem() {
    setState(() {
      _list.add(lorem(paragraphs: 1, words: Random().nextInt(30) + 1));
    });

    SchedulerBinding.instance.addPostFrameCallback((_) {
      _scrollController.animateTo(
        _scrollController.position.maxScrollExtent,
        duration: const Duration(milliseconds: 250),
        curve: Curves.easeOut,
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ListView.builder(
          controller: _scrollController,
          itemCount: _list.length,
          itemBuilder: (context, index) => ListTile(
            title: Text(_list[index]),
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _addItem,
        child: const Icon(Icons.add),
      ),
    );
  }
}

Screenshots or Video

[CORRECT] behaviour if I don't touch the list and only add items

[CORRECT] behaviour if I add an item while scroll animation is running

[NOT CORRECT] behaviour if I add an item and I am in the middle or beginning of the list and animation is not running

[NOT CORRECT] behaviour as above, but different with different item heights

Logs
Logs
I just ran flutter create bug, verbose logs contained apple certificates and file was enormous to edit, so I will not paste it here. Let me know if this will be helpful to include, however as I am saying, I just created an empty project using Flutter 3.10.5 and created minimum reproducible example in main.dart.

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F82 darwin-arm64, locale
    en-GB)
    • Flutter version 3.10.5 on channel stable at /Users/alex/Developer/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (2 weeks ago), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/alex/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/alex/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)

[✓] VS Code (version 1.79.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.66.0

[✓] VS Code (version 1.80.0-insider)
    • VS Code at /Applications/Visual Studio Code - Insiders.app/Contents
    • Flutter extension version 3.67.20230601

[✓] Connected device (3 available)
    • iPhone 14 Pro Max (mobile) • 8E99FC05-DB38-4653-A841-882EB500BA7B • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                •
      darwin-arm64   • macOS 13.4.1 22F82 darwin-arm64
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 114.0.5735.198

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Duplicate of #120583
This is the reason: https://github.com/flutter/flutter/issues/120583#issuecomment-1428076467

Thanks for the detailed report. Seeing the same reported behavior on latest versions.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.10.5, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.10.5 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (2 days ago), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.12.0-13.0.pre.17, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.12.0-13.0.pre.17 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 732429e35b (40 minutes ago), 2023-06-29 21:20:09 -0700
    • Engine revision 68cc1a7971
    • Dart version 3.1.0 (build 3.1.0-261.0.dev)
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

Any update on this? Still happening on v3.22.0 Stable

Is there any solution? This problem still exists

My content is long enough and it took me 4 scrolls to scroll to the end. Is there any way to scroll to the end in one go?
firstScrollToBottom() async {

    await scrollController.animateTo(
      scrollController.position.maxScrollExtent,
      duration: const Duration(milliseconds: 50),
      curve: Curves.easeOut,
    );
    if (scrollController.offset < scrollController.position.maxScrollExtent) {
      await scrollController.animateTo(
        scrollController.position.maxScrollExtent,
        duration: const Duration(milliseconds: 20),
        curve: Curves.easeIn,
      );
      if (scrollController.offset < scrollController.position.maxScrollExtent) {
        await scrollController.animateTo(
          scrollController.position.maxScrollExtent,
          duration: const Duration(milliseconds: 10),
          curve: Curves.easeIn,
        );

        if (scrollController.offset < scrollController.position.maxScrollExtent) {
          Log.d("scroll to bottom");
          await scrollController.animateTo(
            scrollController.position.maxScrollExtent,
            duration: const Duration(milliseconds: 10),
            curve: Curves.easeIn,
          );
        }
      }
    }

  }

@applebest I still use something like this:
WidgetsBinding.instance.addPostFrameCallback((_) async {
  if (!scrollController.hasClients || !mounted) return;

  await widget.scrollController.animateTo(
    widget.scrollController.position.maxScrollExtent,
    duration: widget.scrollToEndAnimationDuration,
    curve: Curves.linearToEaseOut,
  );

  if (!widget.scrollController.hasClients || !mounted) return;

  if (widget.scrollController.offset < widget.scrollController.position.maxScrollExtent) {
    scrollController.jumpTo(scrollController.position.maxScrollExtent);
  }
});

I guess the key is in the jump second time, not animate, and also addPostFrameCallback. It usually works, however I did not test this for hundreds of items in a list view. Obviously if it comes to that second jump animation is quirky, but this is the best I could do until Flutter team looks more closely at this issue.

@applebest I still use something like this:
WidgetsBinding.instance.addPostFrameCallback((_) async {
  if (!scrollController.hasClients || !mounted) return;

  await widget.scrollController.animateTo(
    widget.scrollController.position.maxScrollExtent,
    duration: const Duration(milliseconds: 250),
    curve: Curves.linearToEaseOut,
  );

  if (!scrollController.hasClients || !mounted) return;

  if (scrollController.offset < scrollController.position.maxScrollExtent) {
    scrollController.jumpTo(scrollController.position.maxScrollExtent);
  }
});

I guess the key is in the jump second time, not animate, and also addPostFrameCallback. It usually works, however I did not test this for hundreds of items in a list view. Obviously if it comes to that second jump animation is quirky, but this is the best I could do until Flutter team looks more closely at this issue.
UPD: I also noticed that your animation duration is very low, I usually use something like 250-300 milliseconds, cause it gives more time to Flutter to think about how many more items are there. I think with values like 50 it will never calculate it in time.

  WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
        firstScrollToBottom();
      });

 firstScrollToBottom() async {

    await scrollController.animateTo(
      scrollController.position.maxScrollExtent,
      duration: const Duration(milliseconds: 180),
      curve: Curves.linear,
    );
    if (scrollController.offset < scrollController.position.maxScrollExtent) {
      // await scrollController.animateTo(
      //   scrollController.position.maxScrollExtent,
      //   duration: const Duration(milliseconds: 20),
      //   curve: Curves.easeIn,
      // );
      scrollController.jumpTo(scrollController.position.maxScrollExtent);
      if (scrollController.offset < scrollController.position.maxScrollExtent) {
        // await scrollController.animateTo(
        //   scrollController.position.maxScrollExtent,
        //   duration: const Duration(milliseconds: 10),
        //   curve: Curves.easeIn,
        // );
        scrollController.jumpTo(scrollController.position.maxScrollExtent);

        if (scrollController.offset < scrollController.position.maxScrollExtent) {
          Log.d("scroll to bottom");
          // await scrollController.animateTo(
          //   scrollController.position.maxScrollExtent,
          //   duration: const Duration(milliseconds: 10),
          //   curve: Curves.easeIn,
          // );

          scrollController.jumpTo(scrollController.position.maxScrollExtent);

        }
      }
    }

  }

It does have a lot to do with the scrolling animation duration. After adjustment, you can scroll to the required position, but this may be a recursive operation. If your content is long enough, then 4 calls will not reach the ideal position.

well it is the best we have right now :) I hope this gets fixed one day

Slide to the end, recursive operation
  Future<void> firstScrollToBottom({bool isAnimated = true}) async {

    final double maxScroll = scrollController.position.maxScrollExtent;
    final double currentScroll = scrollController.offset;

    if (currentScroll < maxScroll) {
      if (isAnimated) {
        // Perform the animated scroll only on the first call
        await scrollController.animateTo(
          maxScroll,
          duration: const Duration(milliseconds: 100),
          curve: Curves.linear,
        );
      } else {
        // Perform an immediate jump to the bottom on subsequent recursive calls
        scrollController.jumpTo(maxScroll);
      }

      // Recursive call with isAnimated set to false
      await firstScrollToBottom(isAnimated: false);
    }
  }


David capstone develop

Added more to the prototype_ui

Waiting for a commit to add <span> tags around numeric text before pulling this in.


carousel spacing issue

closes #177

Please note that @akhilmhdh is also working on fixing this in #207

Hi @daliyajohn this issue has been fixed by #208, looks like it is a better way to implement the feature. Closing this PR since this is stale.


Can't open/close other flatpicker instances inside onOpen/onClose

I have two datepicker instances on a page (start + end)
When clicking the start, I would like it to also open the end datepicker. So inside the start picker's onOpen I place the following code, but the other date picker does not open...
onOpen() {
  endPicker.open();
}

However, placing the same code in the onChange works (whenever a date is selected, the other date picker opens).
https://jsfiddle.net/tj2Lo4z7/134/
Environment

flatpickr version used: 4.5.1
Browser name and version: Chrome 67.0.3396.99
OS and version: Win10

Same here...
I try to open a second flatpickr onClose of the first one.
I am using react-flatpickr (3.9.1) but it looks like it uses exactly the same hooks of flatpickr.
Are there no suggestions for this issue or have I done something wrong?


can not open file//error opening file

I use the LabelImgTool in Win7 with python2.7. However, there is a big question:
ValueError: u'C:/Users/Administrator/Desktop/data/photo/photo1.png' is not in list

you can try use opendir rather than open image

Yeah, when I open the file that I store data when I use the windows system, I will prompt the error openging file, but I will not have this problem with the Linux system.

and when i open image , prompt valuerror    my image is not in list


Rework trade and recover dialog

The recover dialog sometimes doesn't show up, doesn't get closed or is opened while the trade dialog is shown. These issues are all related because we don't have a consistent handling of dialogs.
The intention of this ticket is to rework the way dialogs are shown. Additionally this would be a good opportunity to redesign some dialogs.
Related issues

https://github.com/get10101/10101/issues/2089
https://github.com/get10101/10101/issues/1995

I think this is important because I guess this sometimes provokes an interruption of the protocol. e.g. if the user doesn't get the rollover dialog.


Ilan/katalyst remove perm

update API according to discussions.
remove permission less stuff.

Hmmm, the latest changes from the Katalyst branch haven't been pulled into this branch...
Can u try rebasing ur branch?
1.


Overhaul formatting of krnlmon source files

Use clang-format to canonicalize the C source files.

Fix issues in header file dependencies that were revealed
when we reformatted the source files with clang-format.

Correct a couple of aberrant include guards.

Update Intel copyright notices.

This is largely a pro forma review. The majority of the changes were made by procedures that are inherently trustworthy (running clang-format; doing a global search-and-replace on comment text). As a rule, they require only cursory inspection, primarily to make you aware of the transformation.
The thing to focus on here is the second of the three commits. These are manual changes that were made to fix issues that were exposed when clang-format reordered #include statements that were order-sensitive.

Formatting is fine, a much needed effort I would say. But can we also have some formatting in the way we are storing the files in krnlmon module? For example having src (for source code files), inc (for .h files), and test (for unit test files) sub directories. Currently I see everything clubbed together which doesn't look nice. Also, going forward when we introduce full-fledged unit test infra in krnlmon, having a test dir would certainly be helpful.

Formatting is fine, a much needed effort I would say. But can we also have some formatting in the way we are storing the files in krnlmon module? For example having src (for source code files), inc (for .h files), and test (for unit test files) sub directories. Currently I see everything clubbed together which doesn't look nice. Also, going forward when we introduce full-fledged unit test infra in krnlmon, having a test dir would certainly be helpful.

Krnlmon is definitely in need of structural change, though not necessarily along the lines you propose.
We want the end result to be modular, coherent, and cohesive. Partitioning by file type tends to have the opposite result. For example, unit tests should go with the unit they're testing.

With regard to making other kinds of changes in this CL:
If you're going to do a physical restructuring or a mass edit of a piece of a code base, it is generally better to make those changes in dedicated PRs, independently of other kinds of changes.
We do this for four reasons:

To expedite the review. The author agrees to limit the CL to a small class of changes, which are described up front. In return, the reviewers agree to do a pro forma review and provide a quicker approval.
To isolate the changes for test purposes.
To isolate the changes for debugging purposes.
To isolate changes that make file comparisons difficult.

Formatting is fine, a much needed effort I would say. But can we also have some formatting in the way we are storing the files in krnlmon module? For example having src (for source code files), inc (for .h files), and test (for unit test files) sub directories. Currently I see everything clubbed together which doesn't look nice. Also, going forward when we introduce full-fledged unit test infra in krnlmon, having a test dir would certainly be helpful.

Krnlmon is definitely in need of structural change, though not necessarily along the lines you propose.
We want the end result to be modular, coherent, and cohesive. Partitioning by file type tends to have the opposite result. For example, unit tests should go with the unit they're testing.
In any case, structural changes, like mass edits, deserve their own, purpose-specific commits.

Of course, that's why I started with "for example". My intention is to point out the areas where we can improve. First we need to agree on it, that yes there is a scope of improvement. How we want to do it, is the next step. We can spend some time brainstorming on the best approach. I just wanted to highlight this, so that it doesn't get missed out.


README update

Adding features, tech, installation and contributing
Feel free to delete/add/change anything :)

Headings has wrong level.

Headings has wrong level.

Oh yesn thanks ! It is now fixed


Players have choice : 1 question, 2 (or more?) answers

Hi guys !
I have an idea to improve this very nice plugin (I hope dev isn't really inactive :/)
Can you add a question/answer system, with differents actions possible for each choice
For instance, NPC asks to player "Do you want help me?"
Player can say "Yes" or "No".
If "yes", there is a particular action and story, if "no", another action and story.
If you don't understand something, please tell me !
Thanks in advance :)

I agree, add this :D

I agree, add this :D

This would be terrible to add this to the starting NPC, as you can't deny the quest if you accidentally click it. This would be better suitable if you are already in a quest.

Please create a new, updated ticket if this is still an issue. Thanks!


add a setattr

Currently if you have you an estimator some_estimator that has a property estimator_property, if you try to set it like
estimator = wrapper(some_estimator)
estimator.estimator_property = "some new value"

it will set that as a property of the wrapper. Setting properties like this in sklearn estimators isn't common behaviour, but afaik people might do it.
I need to add a setattr that either:

updates the property of the underlying estimator if it exists.
updates the property of the underlying estimator always, unless it is a property of the wrapper.
I need to think about this.

This has been resolved by adding __setattr__ that logs a warning if it is used with an attribute name that matches one of the estimator's properties.


Unfoldable leaves Gen state unmodified?

Apologies for my lack of source code to show this, as I'm encountering it in another project. I'll try to update this issue asap with proof.
In any case, I have a project where I am using the unfoldable combinator to craft a generator, and it seems that every time QuickCheck uses that generator, it generates the exact same data.

That's more likely to be a bug in the QC instance for MonadGen, since the interface here doesn't know about gen state or anything like that... I'm interested to see what's going on with this though!

Another possibility is that the issue doesn't reside in the unfoldable combinator, but rather in QuickCheck's MonadRec.

That's more likely to be a bug in the QC instance for MonadGen, since the interface here doesn't know about gen state or anything like that... I'm interested to see what's going on with this though!

Yes probably this, rather than MonadRec, actually, as each element in the unfoldable is indeed different.

This branch: https://github.com/matthewleon/purescript-sized-vectors/tree/gen
pulp test is rigged up to show the output of each iteration.

It's resize, actually :/
Eliminating the resize eliminates the problem.

Ah, I think I might know what's happening here then. resize was "fixed" not too long ago so that it doesn't resize everything after it, only things "inside" it. I guess that part was fixed, but it should still update the seed after it, and now it discards the modified inner state entirely, judging by this.

(So it is a bug in QC's instance)

🤦♂


raft: simplify truncateAndAppend

For https://github.com/coreos/etcd/pull/5790.
CI is acting weird now...

/cc @xiang90 @zhonglin6666
Sorry, your PR keeps failing pushd cmd/ && go get -t -v ./... && popd command in semaphore CI, for no reason. And also complains about Expected commit title format '<package>{", "<package>}: <description>' but the commit title raft: truncateAndAppend no need the value of 'after' with subbing one seems fine. No idea.
I just cherry-picked. Please review.

@gyuho
lgtm


Endpoint link is broken

Thanks for this! I plan to use it for my class this morning. :-)
I think Heroku changed things on you, but the current link that you have in the README (which also appears here, FYI) is broken. Instead of https://fortuneapi.heroku.com/, the correct link is now https://fortuneapi.herokuapp.com/.

Thanks so much for pointing this out - it should be all set now


Menu link color bug

Trello ticket: https://trello.com/c/64PtEXcR/534-bug-style-of-the-act-now-coalition-link

 Bug - Style of the Act Now Coalition link


fix whois crash bugs

This patch is going to fix whois crash bugs in following 2 scenarios

When you whois a user with the nick cased other than the case on server (SomeNick instead of somenick), the response comes back containing the nick with the case on server. Since we are storing the state in dictionary and the nick is part of the key which is case-sensitive; extra work has to be done to locate the key regardless of the case.

If we whois a user that is not connected, the response does not contain all the additional fields, a check is placed to make sure the response is right size.

Thanks!


No examples for workspace.yml file in `az ml workspace create' command

It is quite painful to not able to find any documentation or example for the YAML file which can be passed into az ml workspace create command to create workspace with existing resources.

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

ID: 63446f78-d3ac-0cc3-a102-a1612c54d90e
Version Independent ID: a20a657c-aeaa-d122-0714-1aa2cfecd966
Content: az ml workspace
Content Source: latest/docs-ref-autogen/ml/workspace.yml
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

route to service team

I know it is little frustrating to figure out the full YAML, good news is we  are working on the documentation. In the meantime here is a sample which has all the fields that and workspace create can take from file input (-f option), hope it helps:
name: full_workspace_name
location: EastUS
friendly_name: for_fun
description: some desc
storage_account: /subscriptions/SUBID/resourceGroups/RG_NAME/providers/Microsoft.Storage/storageAccounts/name
container_registry: /subscriptions/SUBID/resourceGroups/RG_NAME/providers/Microsoft.ContainerRegistry/registries/name
key_vault: /subscriptions/SUBID/resourceGroups/RG_NAME/providers/Microsoft.KeyVault/vaults/name
application_insights: /subscriptions/SUBID/resourceGroups/RG_NAME/providers/microsoft.insights/components/name
hbi_workspace: true
customer_managed_key:
key_vault: /subscriptions/SUBID/resourceGroups/RG_NAME/providers/Microsoft.KeyVault/vaults/name
key_uri: https://kv_name.vault.azure.net/keys/testvm/key_id
private_endpoints:
approval_type: AutoApproval
connections:
my-endpt1:
subscription_id: SUBID
resource_group: RG_NAME
location: EastUS
vnet_name: vntest
subnet_name: default
tags:
purpose: testing
team: management


Problem with Share Screen on device

Hello everyone.
I have a problem with share screen, other users can't see my screen.
If you disable the videoEncoderFactory setting, then crash on
Samsung Galaxy A32 4/64 GB | MediaTek Helio G80
And if it is enabled, then screen sharing for all users does not work.
My settings:
       room = LiveKit.create(appContext = App.getContext(),
        options = RoomOptions(adaptiveStream = true, dynacast = true),
        overrides = LiveKitOverrides(
            audioOptions = AudioOptions(audioOutputType = AudioType.MediaAudioType()),
            videoEncoderFactory = HardwareVideoEncoderFactory(
                EglBase.create().eglBaseContext, false, true)))

        room.connect(
        url = url,
        token = token,
        roomOptions =  RoomOptions(
            audioTrackCaptureDefaults = LocalAudioTrackOptions(
                noiseSuppression = false,
                echoCancellation = false,
                autoGainControl = false,
                highPassFilter = false,
                typingNoiseDetection = false
            ),
            videoTrackCaptureDefaults = LocalVideoTrackOptions(
                captureParams = VideoPreset169.H720.capture
            ),
            videoTrackPublishDefaults = VideoTrackPublishDefaults(
                 videoCodec = VideoCodec.VP8.codecName
             )
        )
    )

I also read some similar problem, where the solution is to disable this decoder, which causes me to crash

remove videoEncoderFactory

Well, I wrote above that if I delete. It stops working on samsung


Relabel and arrange menu items

Task: https://microbit-global.monday.com/boards/1162890768/pulses/1457889927
Update menu items ordering so that it is more like the iOS app:

Create Code
My Programs
Manage Connections
Project Ideas

@microbit-grace @jaustin
I already did this in my branch with the new flash-pair flow
https://github.com/martinwork/microbit-android/tree/new-flash-pair-flow
I wondered if "Manage Connections" might be too long as a page tile on some phones, and if it was was unnecessarily grand for Pair. The iOS app supports more than one pairing and removing a connection.
It all looks good, so I am happy for you to merge, and I'll fix up my branch.

Thanks @martinwork, I have reverted the change from "Manage Connections" to "Pair and copied your change from your new flash flow PR so that the header in the My Programs page is also updated to not show "Flash"

Oh yes @microbit-grace, I had forgotten about needing to make that change. Beware... I seem to remember one or two of those strings were reused in not-really-related places... or maybe it was just that there were two strings for Flash.

@martinwork Yes, I noticed that there were confusingly another "Flash" string, but I think that's for the Flash button. I haev also changed the main activity btn when they are landscape to have textAllCaps: false. If we want all the other buttons to not be fully capitalised, I think I might do it in a separate PR. If you are happy with changes, I shall squash and merge. Many thanks!

Closing in favour of #63.


Factory: validate factory content

This could help to validate the data before sending them to the server.
We need also to have an option to remove the validation to send invalid objects for testing purposes.
Extra: investigate how we could use these classes to create a dynamic documentation of the input structures. This documentation is created currently manually and it has not been always up-to-date.

After discussion with @samlesu, the need here is:

transform the *Spec classes from factory.py into pydantic-validated objects (similar to what is done for assets.py
make all AssetsFactory.create_* methods accept a new parameter, validate that defaults to True. Setting this parameter to false allows to pass invalid data to the spec that will be returned.

I'm having an issue with the second bullet point. I'll take an example:
A DatasetSpec is defined as such:
class DatasetSpec(_Spec):
    name: str
    data_opener: str
    type: str
    description: str
    permissions: Permissions = None
    objective_key: str = None

And the factory method to create one is:
    def create_dataset(self, objective=None, permissions=None):

Which means the factory method makes strong assumptions about the type of objective and permissions to then map it to the attributes objective_key and permissions. And if automatically generates acceptable values for all other properties.
Adding a validate=False argument to the function would break the argument to property mapping and the resulting spec would still have acceptable defaults everywhere else.
Since the objective was to be able to create invalid specs, I'm thinking that we could have a CopyCatSpec object and a Factory.create_copycat_spec(spec, **kwargs) method that would work as such:

CopyCatSpec has a dict() method that returns a dict (just like pydantic.BaseModel)
create_copycat_spec

creates a new CopyCatSpec object,
inspects the referenced spec object to find default property values, adds these default values to the CopyCatSpec object
takes the kwargs and sets them as property and values onto the CopyCatSpec object

This doesn't feel like a proper solution yet, but what do you think of the general idea?

Thanks @jmorel  for your feedback. As you said having a validate=False does not seem like a good idea. I had a brief look at the existing tests and it looks like this feature is not required now.
If it's required for a specific test we could build as you said a dedicated Spec. I think it could be done directly in the test and it don't have to be part of the factory.
One other solution could be to do modify the attributes manually (for instance):
x = Factory.create_valid_spec()
x.field = "invalid-value"

If this feature is not required right now, I propose to skip it and to focus on the 1st part.

I'm liking this create_valid_spec idea, it'd make very clear which "wrong" value we're injecting into the spec. But as you said, it's not required right now for the tests.
Since the related PR is merged, I'm closing the issue.


add isEmpty macro

Also notEmpty (since @ember/object/computed has both defined)
https://www.emberjs.com/api/ember/2.16/classes/@ember%2Fobject%2Fcomputed/methods/empty?anchor=empty
https://www.emberjs.com/api/ember/2.16/classes/@ember%2Fobject%2Fcomputed/methods/notEmpty?anchor=notEmpty

isEmpty is done. Anyone can use it as the basis for a notEmpty macro.

isEmpty is implemented in #443 for reference.

released in v3.1.0


Added aliases to get Tasmota-branded Nous A1T to work.

I have a "Tasmota-branded" Nous A1T Smart Plug which isn't properly recognised by the powercalc autodiscovery. I've enabled debug logging and discovered the following printout:

2023-08-15 21:23:57.610 DEBUG (MainThread) [custom_components.powercalc.discovery] switch.ender3v2: Auto discovered model (manufacturer=Tasmota, model=NOUS A1T)
2023-08-15 21:23:57.610 DEBUG (MainThread) [custom_components.powercalc.discovery] switch.ender3v2: Model not found in library, skipping discovery

For reference, the "Information" page of my Nous A1T shows the following info:

The manufacturer is listed as "Tasmota" and the model as "NOUS A1T". In #1721, support for Nous A1T was added, but this refers to manufacturer "Nous" and model "A1T". Within this PR, I have therefore added the required aliases to the manufacturer alias list as well as the device alias list. I can confirm that my Nous A1T plug gets discovered by powercalc using these settings.
Note: I am not entirely sure that adding the manufacturer alias is a good idea since it'll map all devices that report as being manufactured by "Tasmota" onto the "Nous" manufacturer. I am open to alternative solutions.

Let's merge now, we can rework the manufacturer alias mechanism in the future to support 1 to many mapping in the future when needed.