add support for Struct in Map

This fixes #103 also fixes #90 however I am not sure it is enough as I see other issues with map.

@vdemeester I have added a unit test which hopefully is correct and better shows the issue, however I have not managed to make the code work yet.

@vdemeester go test ./... is passing for me, however I have just started understanding reflect in Golang so I appreciate there is a much better way of doing this. I changed some of the unit tests as isNil returns true for int when equal to 0.
If you wish to nit use this PR and close it that is fine by me, though IMO at the very least issue90_test.go  should be reused.

Any thoughts on this PR @vdemeester, @imdario?

I'll check it this evening.

Hopefully this'll also fix #14

Thanks @svyotov. After a long wait, I've decided to go ahead.


Commit working Forc.lock files to ensure that core is pinned to a working state

Just a reminder to commit the Forc.lock files for the test projects. This will ensure that even if sway-lib-core breaks, tests will continue to work until they are explicitly updated with forc update.

The top-level .gitignore may need to be changed, as it currently ignores Forc.lock.

Just to clarify, we should still ignore the top-level std library's Forc.lock - it's just the test lock files that we want to keep. But yes we should check that our .gitignore pattern doesn't also accidentally ignore the test locks :+1:


build(main): release 1.0.2

:robot: I have created a release beep boop
1.0.2 (2024-09-24)
Continuous Integration

Add simple and basic tests for the index.js (5feab11)

Documentation

Update README.md with improved formatting and very basic additional information (f8c1f0e)

Bug Fixes

Refactor MenuItemStructured to handle empty nested items in the structure (5feab11)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.0.2
:sunflower:


Tried to allocate 18.07 GiB

Hi @CommissarMa
the dropbox link to the Shanghai dataset is broken already and I couldn't make use of the Baidu disk link to download the dataset since I don't have any Chinese account. Could you help fixing this?
Because of that, I tried the model out with the UCF-QNRF_ECCV18 dataset but the training requires allocating 18.07 GiB of memory where my running machine only has 8 GiB. Could you give some advice on how to reduce this amount so that I can train it on my local machine. If possible, could you also open-source the pre-trained models as well?
Thanks in advance.
Minh

the mcnn model is relatively small，so out of memory may not happen.  you can down sample the input image or cut the image into small patch to solve this problem.
---Original---
From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 21:30 PM
To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7)
Hi @CommissarMa
the training requires allocating 18.07 GiB of memory where my running machine only has 8 GiB. Could you give some advice on how to reduce this amount so that I can train it on my local machine. If possible, could you also open-source the pre-trained models as well?
Thanks in advance.
Minh
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

does resizing the image affect the model performance?

yeah，downsample may hurt the performance. and patch may be better.
---Original---
From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 21:35 PM
To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: Re: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7)
does resizing the image affect the model performance?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

yeah，downsample may hurt the performance. and patch may be better.
…
---Original--- From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 21:35 PM To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: Re: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7) does resizing the image affect the model performance? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks a lot for the recommendation. Also, the Shanghaitech dataset link is broken and everywhere else on the internet seemed to also use the same link. could you somehow share that dataset? I would be very appreciated

the dataset is in remote server but can not connect because of virus in the whole world and no people can get in the lab.  sorry
---Original---
From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 21:43 PM
To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: Re: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7)
yeah，downsample may hurt the performance. and patch may be better.
…
---Original--- From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 21:35 PM To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: Re: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7) does resizing the image affect the model performance? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
Thanks a lot for the recommendation. Also, the Shanghaitech dataset link is broken and everywhere else on the internet seemed to also use the same link. could you somehow share that dataset? I would be very appreciated
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks a lot anyway, please hit me up if you reupload it.
Just one more thing I have in mind, since I used your data preparation script to generate density maps for the UCF-QNRF_ECCV18 and its data has a very large resolution, and I also don't know about this for the Shanghaitech dataset as well. In this project, it seemed you didn't generate image patches so I wonder if you used patched images in your training at all? if yes, could you share the code? it would make my life a bit easier and make learning faster :p

shanghaitech will not happen  out of memory.  when I get access to the server I will give you the dataset at once.
---Original---
From: "Anh<EMAIL_ADDRESS>Date: Tue, Apr 7, 2020 22:08 PM
To<EMAIL_ADDRESS>Cc: "Mention"<mention@noreply.github.com>;"Ma<EMAIL_ADDRESS>Subject: Re: [CommissarMa/MCNN-pytorch] Tried to allocate 18.07 GiB (#7)
Thanks a lot anyway, please hit me up if you reupload it.
Just one more thing I have in mind, since I used your data preparation script to generate density maps for the UCF-QNRF_ECCV18 and its data has a very large resolution, and I also don't know about this for the Shanghaitech dataset as well. In this project, it seemed you didn't generate image patches so I wonder if you used patched images in your training at all? if yes, could you share the code? it would make my life a bit easier and make learning faster :p
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


[status-dashboard] - Siddhi App Component Statistics 'value' column not update correctly

Description:
As shown in the image even though the graph for each type has historical data, 'value' column not update correctly.

Suggested Labels:

Suggested Assignees:

Affected Product Version:
SP-4.1.0
OS, DB, other environment details and versions:
H2, MySQL, MSSQL and Oracle
Steps to reproduce:

Enable the Metrics feature in the dashboard and worker runtime.
Deploy the following siddhi application in worker runtime.

@App:name('TestSiddhiApp')
@app:statistics(reporter = 'jdbc')

@source(type = 'http',
        receiver.url='http://localhost:8006/productionStream',
        basic.auth.enabled='false',@map(type='json', @attributes( name = '$.item.id', amount = '$.item.amount')))
define stream SweetProductionStream (name string, amount double);

@sink(type='log')
define stream LowProductionAlertStream (name string, amount double);

-- passthrough data in the SweetProductionStream into LowProducitonAlertStream
@info(name='query1')
from SweetProductionStream
select *
insert into LowProductionAlertStream;

Login to the status dashboard and add the worker runtime details.
Nevigate to the Siddhi App statistics page
Publish the data using follwoing curl command

curl -X POST -d "{\"item\": {\"id\":\"Sugar\",\"amount\": 300.5}}"  http://localhost:8006/productionStream --header "Content-Type:application/json" -k

Analyze values in Siddhi App Component Statistics table

Related Issues:

Fixed in https://github.com/wso2/carbon-analytics/issues/1236


New airzone cloud interface. Temperature changing bug

Describe The Bug:
Temperature can’t be modified. When a room is on and try to change temperature, it doesn’t work and an error appears in log. Version 0.2.0 of the plug-in. Using new airzone cloud interface.
To Reproduce:
Open a room with airzone on and try to change temperature
Expected behavior:
Temperature changes to value provided in home app on iOS.
Logs:

[9/19/2021, 7:40:18 PM] [AirzoneCloud] SALON1     : Set Characteristic TargetTemperature -> 28.5ºC
[9/19/2021, 7:40:18 PM] [AirzoneCloud] Error calling to AirzoneCloud. Status: 400 Bad Request  Response: {"_id":"commandNotSupportedMode","msg":"Unable to execute the specified command with the actual unit mode","data":{"reason":"Device must be in Stop mode"},"reqId":"da666a14-0d14-4996-8a7e-0839341f55f4#1449172"}
(node:5970) UnhandledPromiseRejectionWarning: Error: Status: 400 Bad Request
    at AirzoneCloudApi._request (/homebridge/node_modules/homebridge-airzone-cloud/src/AirzoneCloudApi.ts:201:13)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at AirzoneCloudApi._patch (/homebridge/node_modules/homebridge-airzone-cloud/src/AirzoneCloudApi.ts:135:12)
    at AirzoneCloudApi.setTemperature (/homebridge/node_modules/homebridge-airzone-cloud/src/AirzoneCloudApi.ts:425:12)
(node:5970) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)

Plugin Config:
Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

Plugin Version: 0.2.0
Homebridge Version: 1.3.4
Node.js Version: 14.17.5
NPM Version: 6.14.14
Operating System: docker on synology

Hi I have installed the new version and I have selected: "New Airzone Cloud" and after reboot everything gone well, it logged in successfully and Websocket Connected, but not Airzone devices on the accessories tab and therefore not device to add to HomeKit.
The Airzone device is Aidoo Wi-Fi for DAIKIN SKY AIR/VRY
Any idea why is not working?
Thanks in advance

Hello @gtgGitHub, at this moment the plugin only admits Airzone or DKN, I am working on Aidoo's support

Added support for Aidoo in version 0.3.0


Fix race condition in GRPCCall

Fixes #2690
(Although debugging it revealed a bunch of other issues, but they'll be tracked separately).
@DavidPhillipOster to review.
Tested by running the OAuth2 sample app, which luckily was triggering the race condition on more than half the RPCs made.

I think all issues are addressed now.

LGTM - Looks good to me.


fix dashboard wrong port mapping in notes

What this PR does / why we need it:
The pod create by dashboard charts will expose service on port 8443 not 9090.

/assign @foxish

/assign

/ok-to-test

/lgtm


Fix library Ecore model

Resolves #14

Pull Request Test Coverage Report for Build 52

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 97.727%

Totals

Change from base Build 49:
0.0%

Covered Lines:
29

Relevant Lines:
30

💛  - Coveralls

Pull Request Test Coverage Report for Build 52

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 97.727%

Totals

Change from base Build 49:
0.0%

Covered Lines:
29

Relevant Lines:
30

💛  - Coveralls

Pull Request Test Coverage Report for Build 52

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 97.727%

Totals

Change from base Build 49:
0.0%

Covered Lines:
29

Relevant Lines:
30

💛  - Coveralls


Typo in pricing...

In the pricing section, under pro plan it says '1 year day page history' instead of "1 year page history".

hey @shaaanuu,
thank you for pointing that out
could you please make a PR for the correction? additionally, while you're at it, could you also fix another typo in the Pro plan card? It should read:
₹499/mo
Billed annually. ₹555 billed monthly

Assign me

Done... And i am little confused about
₹499/mo
₹555 billed monthly
It should be ₹5,988 billed annually, right? Maybe i am wrong...
(Missed alot of maths class... ; ) )

#41

Done... And i am little confused about ₹499/mo ₹555 billed monthly
It should be ₹5,988 billed annually, right? Maybe i am wrong... (Missed alot of maths class... ; ) )

it's like if you buy an annual subscription, itll cost ₹499/mo, but if you buy a monthly subscription, itll cost ₹555/mo
i hope if clears yours confusion
and thanks for the pr 👍🏻


Bumping issue #510

Something I reported on https://github.com/klaussilveira/gitlist/issues/510, and it's stopping me from using gitlist.
Is it related to the caching issue? or can it be fixed?

See #605 for related discussion.


Set topic_tools branches to distro branches

We're switching from using a main branch for all distros to using distro-specific branches, like humble, iron, and rolling. See https://github.com/ros-tooling/topic_tools/issues/62. The branches all currently have the same version (and tag) and have not really diverged. New releases will be made soon to make new improvements available.
I've updated the branch names in the release repo: https://github.com/ros2-gbp/topic_tools-release/commit/6ae603ac0b5ecd039e99839aceae646da3ddfa5a

We'll have to wait for the end of the Humble hold, which should be on November 20th: https://discourse.ros.org/t/preparing-for-humble-sync-and-patch-release-2023-11-20/34628/5

I think all sync holds are over.


crash on long filenames or special characters?

DC-1@tecra:~/video/youtube/chill$ rtfm
Traceback (most recent call last):
	3: from /usr/local/bin/rtfm:376:in `<main>'
	2: from /usr/local/bin/rtfm:376:in `loop'
	1: from /usr/local/bin/rtfm:399:in `block in <main>'
/usr/local/bin/rtfm:399:in `*': negative argument (ArgumentError)
DC-1@tecra:~/video/youtube/chill$ ls
'Bunraku - Meguro-sv_zhIBgxkY.jpg'
'Bunraku - Meguro-sv_zhIBgxkY.mkv'
'db (Dave Bessell) & Ishq - Atlas Obscura [Ambient Psychedelia].mp4'
'db (Dave Bessell) & Ishq - Iodine Vapours [Psychedelic Ambient Electronica with Psychedelic Visuals]-0oyHVHsr89w.jpg'
'db (Dave Bessell) & Ishq - Iodine Vapours [Psychedelic Ambient Electronica with Psychedelic Visuals]-0oyHVHsr89w.mkv'

rtfm always crashes in this folder. If i'm running from it or navigate to it in rtfm.

I had this problem before with long filenames overflowing the top window/line, but fixed that. Did you check with latest commit?

Sorry, my fault. I didn't think it would be updated so often.
It is a good time to open a new ticket. ;->


[FR]: Add paging in the demo, and add the drop-down refresh and drop-down load functions

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the problem
No dropdown refresh, dropdown load more features on the page
Describe the solution
Add paging in the demo, and add the drop-down refresh and drop-down load functions
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

ok，thanks

Hi :
The latest version of paging-compose is 3.2.0,  Is there a plan to add paging now?
Looking forward to integrating the paging library in NowInAndroid.


Current Max size limit is 1GB this is too restrictive for some uses.

Current Max file size is limited to 1024MB for some scenarios this is too limited.

Adjusted value to 256 - 4096 as valid range

Adjusted value to 256 - 4096 as valid range


usb: allow application to set callback after devices enable USB

I'm just going to toss this one out there: it's not a complete fix, but it meets the core need.
Some devices enable the USB infrastructure without a callback before the application is given a chance to provide a callback.  Allow usb_enable() to be invoked multiple times with only the first enabling USB, but subsequent ones allowed to specify a status callback if none has been installed.
Fixes #27071

@sslupsky fyi

The problem I have with that is the, let's say, second context which will usb_enable(callback) will "think" it has just enabled the usb subsystem what is wrong. Imagine the situation:
-> console:
usb_enable(NULL);
-> main (HID):
if (button_pressed) {
    usb_enable(callback);
}
callback(status) {
    main_status = status;
}

if (main_status == USB_DC_CONFIGURED) {
    send_data(); //every 1ms
}

It's possible that main app will never send_data() because USB subsystem has already started (skipped notification to app because callback was NULL). The status was not saved by the application.

From the testing I did if the application registers the callback in main it will probably be in time to get the CONNECTED and CONFIGURED events.  But I concede the general point; the problem is solving that is a much harder problem.
It would be possible to have a late-added callback invoked immediately with the latest status so the caller knows the state at the point usb_enabled(cb) completes.  I'd intended to do this, but it was a bigger change that I didn't want to bother with until people confirmed the basic approach was sound.  I can go back and add it if people think it's worthwhile.

One of the reason to make users call usb_enable() was to avoid the situation some events were dropped (happend ncs/nrf_desktop).

It would be possible to have a late-added callback invoked immediately with the latest status so the caller knows the state at the point usb_enabled(cb) completes

The problem is sometimes You need more than one to determine the state.
usb_enable(NULL);
USB_DC_CONFIGURED
. . .
USB_DC_SUSPEND
usb_enable(callback);
USB_DC_RESUME // device is now in CONFIGURED state, the callback would likely got USB_DC_RESUME

I will rethink that next week.

How about adding a config option "CONFIG_USB_UART_EARLY_CONSOLE" to enable the USB before the application does?  The default condition would be no.  If you want to enable it early, it is set to yes.  This config option is used in uart_console.c to conditionally include the enable and dtr code.  How "early" the USB is enabled should be considered.
Another idea is create a separate API function to register the user status callback.  So, the application can register the callback.  This is similar to what @pabigot has proposed but a distinct API function.  This will not address the race condition issue raised by @emob-nordic where the status update could be missed.  I too share this concern because my use case involves changing the power management status as a result of a change in USB status.  More specifically, I enable certain power management when USB is "disconnected" to reduce power consumption.  The consequence of missing a status update is that the device could remain in a high power state.

@emob-nordic

USB_DC_SUSPEND
usb_enable(callback);
USB_DC_RESUME // device is now in CONFIGURED state, the callback would likely got USB_DC_RESUME

That is precisely the reason I didn't go ahead and do the "send initial state on registration" solution: the USB DC infrastructure does not seem to record its current state anywhere, at least not as a value of the required enumeration.  It emits the events, but not the state entered as a result of the event.
@sslupsky

More specifically, I enable certain power management when USB is "disconnected" to reduce power consumption. The consequence of missing a status update is that the device could remain in a high power state.

That's exactly the use case I have for a certain sensor platform.  My current belief is that I get enough information to tell whether I'm still connected or not, so it meets my needs.

That is precisely the reason I didn't go ahead and do the "send current state on registration" solution: the USB DC infrastructure does not seem to record its current state anywhere, at least not as a value of the required enumeration. It emits the events, but not the state entered as a result of the event.

I am aware of this. I would like to make it emits states rather that statuses but for this I need some time and testing with all drivers. I remember that we had some troubles with that when merging #20375 (drivers diffs).

How about adding a config option "CONFIG_USB_UART_EARLY_CONSOLE" to enable the USB before the application does?

That was the initial idea #20011 and it was voted not to do that. We came up this #20375.
Based on other issues posted and related to this PR (Issue: #26818, PR: #26122) I assume the problem exists for console + anything else USB. Can't we just remove usb_enable(NULL); from uart_console.c and insist on users to call usb_enable by themselves?

Can't we just remove usb_enable(NULL); from uart_console.c and insist on users to call usb_enable by themselves?

Only if you also remove CONFIG_USB_UART_DTR_WAIT=y and so lose all log messages that are generated before the application gets control (in the case where the console is a CDC-ACM).


Spanner.Data 2-Beta-5 - C# - Nullable Timestamp is dropping results without an error from a select query results.

Running the following scalar query on the web console or C# driver 2-beta-5 is resulting 476577 results.
SELECT count(*) FROM Players;
Running the following query with C# Spanner.Data 2-beta-5 is resulting 452593 results.
SELECT p.PlayerId, p.FirstRealPurchaseTime FROM Players As p;
When I removed the p.FirstRealPurchaseTime which is a Nullable Timestamp and ran:
SELECT p.PlayerId FROM Players As p;
I got the correct number of records which is 476577.
Meaning that when a Nullable Timestamp field (FirstRealPurchaseTime) is presented some records are not returning and no error get thrown in the driver side.
Example Code:
var players = new List<string>();
using (var connection =
new SpannerConnection("Data source=projects/XX/instances/YY/databases/ZZ"))
{
   connection.Open();
   var command = connection.
                   CreateSelectCommand("SELECT p.PlayerId, p.FirstRealPurchaseTime FROM Players AS p");
   var result = command.ExecuteReaderAsync().Result;
   if (result.HasRows)
   {
                     while (result.Read()) {
                        players.Add(result[0].ToString());
                       }
    }
    connection.Close();
}
Console.WriteLine("Query Returned " + players.Count); //452593
Console.WriteLine("Query Retunred On Google Web Console  476577 Results");

if you remove "p.FirstRealPurchaseTime" from the select query all rows will return as expected.

Thanks for the report. I'll investigate as soon as I'm back from holidays, which will be January 2nd.
In the meantime, could I just check:

Is this consistent, as in you get the same results every time?
Is the difference between the two (i.e. 452593 - 476577 = 23984) the same as the number of records where FirstRealPurchaseTime is null?

Consistent.
The 20k diff is not null or not null, it's a mix of both.
On Sun, Dec 30, 2018, 04:53 Jon Skeet<EMAIL_ADDRESS>wrote:

Thanks for the report. I'll investigate as soon as I'm back from holidays,
which will be January 2nd.
In the meantime, could I just check:

Is this consistent, as in you get the same results every time?
Is the difference between the two (i.e. 452593 - 476577 = 23984) the
same as the number of records where FirstRealPurchaseTime is null?

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/googleapis/google-cloud-dotnet/issues/2779#issuecomment-450535644,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFS2vq8_jJ1dYKENyyQXL43dfVqa49yjks5u-CqagaJpZM4ZkuVd
.

Just to check, you mentioned the version number in the title - I wouldn't expect this to differ based on whether you're using 2.0.0-beta05 or an earlier version. Could you let me know if you are seeing any difference between versions?
I'm going to try to reproduce this today, but it's possible that I'll need more information about the data. I'll update the bug when I've seen or not seen it.

Hey,
In previous versions we haven't encountered this issue.(2.0.0 Beta 03) and
it doesn't reproducible there.
Thanks
On Wed, Jan 2, 2019 at 7:19 AM Jon Skeet<EMAIL_ADDRESS>wrote:

Just to check, you mentioned the version number in the title - I wouldn't
expect this to differ based on whether you're using 2.0.0-beta05 or an
earlier version. Could you let me know if you are seeing any difference
between versions?
I'm going to try to reproduce this today, but it's possible that I'll need
more information about the data. I'll update the bug when I've seen or not
seen it.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/googleapis/google-cloud-dotnet/issues/2779#issuecomment-450799163,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFS2vpctKWtEuJIqqnGVfruD-xvqICJHks5u_F17gaJpZM4ZkuVd
.

Okay, that's pretty surprising, but thanks for the info. I'm populating a table now (with the same schema as #2777 so that I can hopefully use one table for both issues).
If you're able to test the same query with 2.0.0-beta03 again (in case it's service or data changes that happened at roughly the same time as your update to 2.0.0-beta05) that would be great, but if you don't have a test program handy that would easily demonstrate it, don't worry.

I haven't been able to reproduce this. Complete sample code is included below - you just need to provide your data source and a table name as command line arguments. (I'm assuming that default credentials are okay.) I've built this against 2.0.0-beta05.
You can easily run the test against existing data by commenting out the calls to CreateTable and PopulateTable.
Could you try this code against your Spanner instance and report the results? It's going to be very hard to work out what's going on if we can't reproduce it :(
using Google.Cloud.Spanner.Data;
using System;

namespace Issue2779
{
    class Program
    {
        private const int RowCount = 500_000;
        private const int BatchSize = 2000;
        private const int BatchCount = RowCount / BatchSize;
        private const int NullTimestampPercentage = 10;
        private const int BatchReportingFrequency = 10;

        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Please specify 2 command line arguments:");
                Console.WriteLine("- Data source (projects/x/instances/y/databases/z)");
                Console.WriteLine("- Table name");
                return;
            }

            string connectionString = $"Data Source={args[0]}";
            string tableName = args[1];

            CreateTable(connectionString, tableName);
            PopulateTable(connectionString, tableName);
            CountQueryResults(connectionString, $"SELECT p.PlayerId FROM {tableName} AS p");
            CountQueryResults(connectionString, $"SELECT p.PlayerId, p.FirstRealPurchaseTime FROM {tableName} AS p");
        }

        static void CreateTable(string connectionString, string tableName)
        {
            Log("Creating table");
            using (var connection = new SpannerConnection(connectionString))
            {
                string sql = $@"CREATE TABLE {tableName} (
                                PlayerId STRING(MAX) NOT NULL,
                                FirstRealPurchaseTime TIMESTAMP,
                                IsRandom BOOL,
                                RandomNumber INT64
                                ) PRIMARY KEY (PlayerId)";

                using (var command = connection.CreateDdlCommand(sql))
                {
                    command.ExecuteNonQuery();
                }
            }
        }

        static void PopulateTable(string connectionString, string tableName)
        {
            Log("Populating table");
            DateTime timestamp = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            Random random = new Random();

            using (var connection = new SpannerConnection(connectionString))
            {
                var cmd = connection.CreateInsertCommand(tableName);
                var idParameter = cmd.Parameters.Add("PlayerId", SpannerDbType.String);
                var timestampParameter = cmd.Parameters.Add("FirstRealPurchaseTime", SpannerDbType.Timestamp);
                var isRandomParameter = cmd.Parameters.Add("IsRandom", SpannerDbType.Bool);
                var randomNumberParameter = cmd.Parameters.Add("RandomNumber", SpannerDbType.Int64);
                for (int i = 0; i < BatchCount; i++)
                {
                    if (i % BatchReportingFrequency == 0)
                    {
                        Log($"Populating batch {i}");
                    }

                    // Note: normally this code would be inside a retry loop. I've omitted that for simplicity -
                    // I just rerun the whole test if it fails.
                    using (var transaction = connection.BeginTransaction())
                    {
                        cmd.Transaction = transaction;
                        for (int j = 0; j < BatchSize; j++)
                        {
                            idParameter.Value = Guid.NewGuid().ToString();
                            timestampParameter.Value = random.Next(100) < NullTimestampPercentage ? null : (object) timestamp;
                            isRandomParameter.Value = random.Next(2) == 1;
                            randomNumberParameter.Value = random.Next();
                            cmd.ExecuteNonQuery();
                            timestamp = timestamp.AddMinutes(1);
                        }
                        transaction.Commit();
                    }
                }
            }
            Log($"Completed populating table");
        }

        static void CountQueryResults(string connectionString, string sql)
        {
            Log($"Counting results for {sql}");
            using (var connection = new SpannerConnection(connectionString))
            {
                var command = connection.CreateSelectCommand(sql);
                using (var result = command.ExecuteReader())
                {
                    int count = 0;
                    while (result.Read())
                    {
                        count++;
                    }
                    Log($"Total rows: {count}");
                }
            }
        }

        static void Log(string message) =>
            Console.WriteLine(FormattableString.Invariant($"{DateTime.UtcNow:HH:mm:ss'Z'} {message}"));
    }
}

Hey,
I've tried to reproduce it over my data table.
Everything runs on the main thread (Single Thread)
Correct Count is = 476577.
Program:
CountQueryResults(connectionString, $"SELECT p.PlayerId FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.PlayerId, p.FirstRealPurchaseTime FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.PlayerId, p.Nickname FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.PlayerId, p.Nickname, p.FirstRealPurchaseTime FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.Nickname, p.FirstRealPurchaseTime FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.FirstRealPurchaseTime FROM {tableName} AS p");
CountQueryResults(connectionString, $"SELECT p.Nickname FROM {tableName} AS p");
Results:
09:59:18Z Counting results for SELECT p.PlayerId FROM Players AS p
10:00:16Z Total rows: 476577
10:00:16Z Counting results for SELECT p.PlayerId, p.FirstRealPurchaseTime FROM Players AS p
10:01:11Z Total rows: 476577
10:01:11Z Counting results for SELECT p.PlayerId, p.Nickname FROM Players AS p
10:02:05Z Total rows: 476577
10:02:05Z Counting results for SELECT p.PlayerId, p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:03:40Z Total rows: 452608
10:03:40Z Counting results for SELECT p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
Null Pointer Exception
at Google.Cloud.Spanner.V1.ReliableStreamReader.MergeChunk(Value currentValue, Value nextValue)
at Google.Cloud.Spanner.V1.ReliableStreamReader.d__40.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.Spanner.Data.SpannerDataReader.<>c__DisplayClass57_0.<b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.Spanner.Data.ExecuteHelper.d__2`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Google.Api.Gax.TaskExtensions.WaitWithUnwrappedExceptions(Task task)
at Google.Cloud.Spanner.Data.SpannerDataReader.Read()
at SpannerCleanTestingConsole.Program.CountQueryResults(String connectionString, String sql) in C:\Users\alyaros\Downloads\SpannerCleanTestingConsole\SpannerCleanTestingConsole\Program.cs:line 254
at SpannerCleanTestingConsole.Program.Main(String[] args) in C:\Users\alyaros\Downloads\SpannerCleanTestingConsole\SpannerCleanTestingConsole\Program.cs:line 144

Those also works correctly:
10:16:02Z Counting results for SELECT p.FirstRealPurchaseTime FROM Players AS p
10:17:03Z Total rows: 476577
10:17:03Z Counting results for SELECT p.Nickname FROM Players AS p
10:18:00Z Total rows: 476577

Field Scheme Type:
Nickname | STRING(50) | Yes

That's very interesting!
I suspect at this point the problem is very data-centric - and may well depend on other fields that aren't even being queried. I'm not sure of the best way to diagnose this.
If I were to create a special NuGet package file (.nupkg) for you to put on your local system in a directory that you add as a package source, would you be able to run the same test with that? I can add lots of extra logging, then you could email me the log file.
Let me know if that sounds feasible, and I'll start working on the extra logging.

I ran the queries in different order - different results:
10:27:28Z Counting results for SELECT p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:28:40Z Total rows: **459716 (No NPE this time..)
10:28:46Z Counting results for SELECT p.PlayerId, p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:30:22Z Total rows: 452608

I think I can send you privately those 3 columns dataset (PlayerId, FirstRealPurchaseTime, Nickname) - if this will make it easier\quicker for you to debug it.

Let's try the logging first, but then that would be very helpful if that doesn't sort things. I wouldn't be surprised if even with that data, we found it only reproduced in certain situations - I'm going to be fascinated to see what the result of this is in the end...
I'm just testing my new packages locally first, then I'll put them on Google Drive.

I ran it on a new table with only those 3 columns (p.PlayerId, p.Nickname, p.FirstRealPurchaseTime) and it does not reproduce, currently the only way to reproduce it is directly on this specific table.

By the way the NPE is not stable - sometimes I get NPE and sometimes not.
10:27:28Z Counting results for SELECT p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:28:40Z Total rows: **459716 (Sometimes NPE sometimes NOT )
10:28:46Z Counting results for SELECT p.PlayerId, p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:30:22Z Total rows: 452608

Different run different results:
10:50:04Z Counting results for SELECT p.PlayerId, p.Nickname, p.FirstRealPurchaseTime FROM Players AS p
10:52:53Z Total rows: 669583

Okay, I've attached the packages here as a zip file.
So you'll need to:

Create a local directory (e.g. "LocalPackages")
Unzip the zip file there
Add that as a package source (e.g. in VS it's under "NuGet Package Manager / Package Sources" in settings)
Update the dependencies in the project to 2.0.0-issue2779a

Then add the following line at the start of Main:
Google.Cloud.Spanner.V1.Internal.Logging.Logger.DefaultLogger.LogLevel = Google.Cloud.Spanner.V1.Internal.Logging.LogLevel.Debug;

Run the program as before, redirecting the output to a text file. If you could then email me<EMAIL_ADDRESS>with the log file, that would be wonderful. (You'll want to zip it first...)
packages.zip

Okay, I'm pretty sure I now understand the issue.
The current default timeout is 1 minute. That's an RPC timeout; a query can last longer than that, but each call within the query times out after a minute. It then resumes from where it was - but the current implementation skips one result from the stream. That usually leads to missing rows; it could very occasionally lead to a NullReferenceException as per #2777. (I haven't observed that yet, but I can see how it could happen.)
Steps to fix:

Test against 2.0.0-beta03 to find out why it wasn't failing there. My suspicion is that the default timeout is longer, but I need to confirm that. (I want to reproduce it failing with a 1 minute timeout, too.)
Write unit tests for ReliableStreamReader. (Currently we just rely on integration tests which clearly don't cut it.)
Optionally refactor the code, as it's fiddly at the moment.
Remove the "extra MoveNext" call
Potentially restrict the exceptions we retry on; I've seen one case where retrying after the gRPC stream was removed still caused a problem.
Release

I'm going to see how much of that I can do today, although we probably wouldn't want to actually do the release on a Friday. I'm away next week, but may still be able to spend some time working on this - it's definitely my top priority.


Failed to locate custom template: "typescript-webpack"

Preflight Checklist

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Issue Details

Electron Forge Version:

6.0.0-beta.46

Operating System:

macOS 10.15.2

Last Known Working Electron Forge version::

n/a, first time user

Expected Behavior
The app directory is built without issues.
Actual Behavior
The installation process stops at Locating custom template: "typescript-webpack"
To Reproduce

Followed instructions here: https://www.electronforge.io/templates/typescript-+-webpack-template
Run npx create-electron-app my-new-app --template=typescript-webpack

Additional Information
Error message is as follows:
An unhandled error has occurred inside Forge:
Failed to locate custom template: "typescript-webpack"

Try `npm install -g @electron-forge-template-typescript-webpack`
Error: Failed to locate custom template: "typescript-webpack"

Try `npm install -g @electron-forge-template-typescript-webpack`
    at /private/var/root/.npm/_npx/22022/lib/node_modules/create-electron-app/node_modules/@electron-forge/core/src/api/init-scripts/init-custom.ts:34:21

I tried to run npm install -g @electron-forge-template-typescript-webpack as instructed but got this:
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "@electron-forge-template-typescript-webpack": Tags may not have any characters that encodeURIComponent encodes.
...

This has been released in beta 47, which was published a few minutes ago.

What are the odds! Thanks @malept


[collectors/jenkins] properties-builder.sh: Fix MONGO_HOST parsing

@abesto - I know this pattern is weird but look more closely at the regex and you will see that what is in place correctly parses the mongo host and port.

Ah, I totally missed the fact that MONGO_PORT should contain the protocol and host as well (even though it's in the comment above). Thank you.


[FLINK-33650][doc] Add the Checkpoint Storage part for Chinese Checkpoint page

[FLINK-33650][doc] Remove manage memory part in FileSystemCheckpointStorage due to it can be used for rocksdb state backend.
[FLINK-33650][doc] Add the Checkpoint Storage part for Chinese Checkpoint page

Thanks @JingGe  for the review, merging~


There has been an error publishing your resume. (username: res.username TypeError: Cannot read property 'username' of undefined)

Yeah, the registry server needs some fixes. We'll get to this, thanks.

This report is so long ago it probably doesn't exist any more, so closing for now, sorry guys!


No extension exist

Description:
I have issue with extensions in SP. I have all jar with OSGi bundle placed in {SP_Home}/lib directory, but when I use for example reorder:kslack extension in siddhi app, "No extension exist" error is thrown.

Did you try this with the latest SP-4.1.0?

Great! With that feedback, we are closing this issue.


PR & issue templates

After a migration to a monorepo there are multiple PR/issue templates. It's still possible to keep multiple templates using query parameters, but I see no point in keeping these in each package separately.
Do you guys agree?

+1, agreed, we should pick a single canonical one, move it up to the top level, and delete the rest.

Closing due to inactivity.


Please provide an OSS license with your code

I'd really like to use your code in my company's paid product, but since you've not specified a license, the default applies, which is that you retain all rights to it. Is this what you intended? If not, could I ask you to choose a license like the MIT or Apache licenses? Thanks much!

The default (ISC) license for NPM is the intended licens, and is specified in package.json. By my understanding, it's equivalent to the MIT license?
I haven't dealt rigorously with licensing concerns before; can you be more specific about what I should do to satisfy your need here? And, if the ISC license is unsuitable, can you explain why MIT is preferable?


Add support for updating multiple projects in a workspace

When working with multimodule project or multiple projects in a single workspace, It would be really handy to have a global Update project command to update all projects in the workspace.
One quick suggestion is to add a command in the project view after Clean Workspace.

Could you give more description about: update all projects? What should be the expected result after triggering that?

When i trigger this new command i would expect the current update command to run on all projects. Today the update command update maven dependecies and update the classpath configuration.

I see. Thanks for the explanation.


Make it a kivy-garden

It would be nice to have it available in Kivy Garden.

Here's my take on it:
https://github.com/AndreMiras/garden.zbarcam


Why the submodule PTSD include the wrong version

That version is not exist our config. e.g. window size...

Please update submodule-ized to commit c7dade5


Package 'php-****' has no installation candidate

Description
When trying to initiate a new site, we keep running into these errors:
nitro add
Unable to find machine "nitro-dev", want to create it [yes]
Initialize the primary machine now? [yes]
How many CPU cores? [4]
How much memory? [4G]
How much disk space? [40G]
Which version of PHP? [7.4]
Which database engine? [mysql]
Which version of mysql? [5.7]
Applying the changes now...
Launched: nitro-dev
Reading package lists...
Building dependency tree...
Reading state information...
Package php-imagick is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
Package php-xdebug is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'php-xdebug' has no installation candidate
E: Package 'php-imagick' has no installation candidate
Error: exit status 100

Steps to reproduce

nitro add
see errors

Additional info

Nitro version: 1.1.1
Multipass version: 1.5.0
OS: OSX Big Sur

Is anyone else having this issue? We are still unable to get Nitro up and running because of this error.

Is anyone else having this issue? We are still unable to get Nitro up and running because of this error.

We were able to get this to work by disabling several things locally: proxy, snort, pfBlocker and DNSResolver.

@TonyDeStefano might be worth checking out https://twitter.com/CraftCMS/status/1357054202766266368


Low quality recordings

I'm recording 1920xauto resolution. My recording anyways get quite pixelated (when you look at the areas where the bloom effect is applied) compared to a clean version I have in the Unity editor (I'm recording from a texture I just display).
Any idea how I could improve quality of the outcoming video?
Video from the 1920xauto recording
https://github.com/natmlx/videokit/assets/10696948/0bb56c58-9c3c-4738-bb6f-d9bcd763ca5c

I attached my video recording script I slightly modified compared to the version of your VideoKit recording component.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Events;
using Assets;
using VideoKit.Devices;
using VideoKit.Internal;
using VideoKit.Recorders;
using VideoKit.Recorders.Clocks;
using VideoKit.Recorders.Inputs;
using VideoKit;
using VideoKit.Assets;
using System.Collections;

namespace VideoKit
{

    /// <summary>
    /// Recorder input for recording video frames from a texture.
    /// Unlike the standard `TextureInput` family, this class serves primarily as a
    /// way to connect Unity's `Update` loop to a texture input's `CommitFrame` method.
    /// </summary>
    internal sealed class CustomTextureInputSecond : IDisposable
    {

        #region --Client API--
        /// <summary>
        /// Number of successive camera frames to skip while recording.
        /// This is very useful for GIF recording, which typically has a lower framerate appearance.
        /// </summary>
        public int frameSkip;

        /// <summary>
        /// Create a custom texture input.
        /// </summary>
        /// <param name="recorder">Media recorder to receive video frames.</param>
        /// <param name="clock">Clock for generating timestamps.</param>
        /// <param name="generator">Texture to record from.</param>
        public CustomTextureInputSecond(MediaRecorder recorder, IClock clock, Texture texture) : this(TextureInput.CreateDefault(recorder), clock, texture) { }

        /// <summary>
        /// Create a custom texture input.
        /// </summary>
        /// <param name="recorder">Media recorder to receive video frames.</param>
        /// <param name="generator">Texture to record from.</param>
        public CustomTextureInputSecond(MediaRecorder recorder, Texture texture) : this(recorder, default, texture) { }

        /// <summary>
        /// Create a custom texture input.
        /// </summary>
        /// <param name="input">Texture input to receive video frames.</param>
        /// <param name="clock">Clock for generating timestamps.</param>
        /// <param name="generator">Texture to record from.</param>
        public CustomTextureInputSecond(TextureInput input, IClock clock, Texture texture)
        {
            this.input = input;
            this.clock = clock;
            this.texture = texture;
            this.attachment = new GameObject(@"VideoKitCustomTextureInputAttachment").AddComponent<CustomTextureInputAttachment>();
            this.frameIdx = 0;
            // Start recording
            attachment.StartCoroutine(CommitFrames());
        }

        /// <summary>
        /// Create a custom texture input.
        /// </summary>
        /// <param name="input">Texture input to receive video frames.</param>
        /// <param name="generator">Texture to record from.</param>
        public CustomTextureInputSecond(TextureInput input, Texture texture) : this(input, default, texture) { }

        /// <summary>
        /// Stop recorder input and release resources.
        /// </summary>
        public void Dispose()
        {
            GameObject.DestroyImmediate(attachment.gameObject);
            input.Dispose();
        }
        #endregion

        #region --Operations--
        private readonly TextureInput input;
        private readonly IClock clock;
        private readonly Texture texture;
        private readonly CustomTextureInputAttachment attachment;
        private int frameIdx;

        private IEnumerator CommitFrames()
        {
            var yielder = new WaitForEndOfFrame();
            for (; ; )
            {
                // Check frame index
                yield return yielder;
                if (frameIdx++ % (frameSkip + 1) != 0)
                    continue;
                // Commit
                input.CommitFrame(texture, clock?.timestamp ?? 0L);
            }
        }

        private sealed class CustomTextureInputAttachment : MonoBehaviour { }
        #endregion
    }

    [DisallowMultipleComponent]
    public sealed partial class VideoRecordingCreator : MonoBehaviour
    {
        #region --Enumerations--
        /// <summary>
        /// Video recording mode.
        /// </summary>
        public enum VideoMode : int
        {
            /// <summary>
            /// Don't record video.
            /// </summary>
            None = 0,
            /// <summary>
            /// Record video frames from one or more game cameras.
            /// </summary>
            Camera = 1,
            /// <summary>
            /// Record video frames from the screen.
            /// </summary>
            Screen = 2,
            /// <summary>
            /// Record video frames from a texture.
            /// </summary>
            Texture = 3,
            /// <summary>
            /// Record video frames from a camera device.
            /// </summary>
            CameraDevice = 4,
        }

        /// <summary>
        /// Audio recording mode.
        /// </summary>
        [Flags]
        public enum AudioMode : int
        {
            /// <summary>
            /// Don't record audio.
            /// </summary>
            None = 0b00,
            /// <summary>
            /// Record audio frames from the scene's audio listener.
            /// </summary>
            AudioListener = 0b01,
            /// <summary>
            /// Record audio frames from an audio device.
            /// </summary>
            AudioDevice = 0b10,
        }

        /// <summary>
        /// Video recording resolution presets.
        /// </summary>
        public enum Resolution : int
        {
            /// <summary>
            /// QVGA resolution.
            /// </summary>
            _240xAuto = 11,
            /// <summary>
            /// QVGA resolution.
            /// </summary>
            _320xAuto = 5,
            /// <summary>
            /// HVGA resolution.
            /// </summary>
            _480xAuto = 6,
            /// <summary>
            /// SD resolution.
            /// </summary>
            _640xAuto = 0,
            /// <summary>
            /// Potrait HD resolution.
            /// </summary>
            _720xAuto = 7,
            /// <summary>
            /// Portrait Full HD resolution.
            /// </summary>
            _1080xAuto = 12,
            /// <summary>
            /// HD resolution.
            /// </summary>
            _1280xAuto = 1,
            /// <summary>
            /// Full HD resolution.
            /// </summary>
            _1920xAuto = 2,
            /// <summary>
            /// 2K WQHD resolution.
            /// </summary>
            _2560xAuto = 3,
            /// <summary>
            /// 4K UHD resolution.
            /// </summary>
            _3840xAuto = 4,
            /// <summary>
            /// Screen resolution.
            /// </summary>
            Screen = 9,
            /// <summary>
            /// Half of the screen resolution.
            /// </summary>
            HalfScreen = 10,
            /// <summary>
            /// Custom resolution.
            /// </summary>
            Custom = 8,
        }

        /// <summary>
        /// Recorder status.
        /// </summary>
        public enum Status : int
        {
            /// <summary>
            /// No recording session is in progress.
            /// </summary>
            Idle = 0,
            /// <summary>
            /// Recording session is in progress.
            /// </summary>
            Recording = 1,
            /// <summary>
            /// Recording session is in progress but is paused.
            /// </summary>
            Paused = 2,
        }

        /// <summary>
        /// Video watermark mode.
        /// </summary>
        public enum WatermarkMode : int
        {
            /// <summary>
            /// No watermark.
            /// </summary>
            None = 0,
            /// <summary>
            /// Place watermark in the bottom-left of the frame.
            /// </summary>
            BottomLeft = 1,
            /// <summary>
            /// Place watermark in the bottom-right of the frame.
            /// </summary>
            BottomRight = 2,
            /// <summary>
            /// Place watermark in the upper-left of the frame.
            /// </summary>
            UpperLeft = 3,
            /// <summary>
            /// Place watermark in the upper-right of the frame.
            /// </summary>
            UpperRight = 4,
            /// <summary>
            /// Place watermark in a user-defined rectangle.
            /// Set the rect with the `watermarkRect` property.
            /// </summary>
            Custom = 5,
        }

        /// <summary>
        /// Recording action.
        /// </summary>
        [Flags]
        public enum RecordingAction : int
        {
            /// <summary>
            /// Nothing.
            /// </summary>
            None = 0,
            /// <summary>
            /// Save the media asset to the camera roll.
            /// </summary>
            CameraRoll = 1 << 1,
            /// <summary>
            /// Prompt the user to share the media asset with the native sharing UI.
            /// </summary>
            Share = 1 << 2,
            /// <summary>
            /// Playback the video with the platform default media player.
            /// </summary>
            Playback = 1 << 3,
            /// <summary>
            /// Delete the media asset immediately.
            /// </summary>
            Delete = 1 << 4,
            /// <summary>
            /// Define a custom callback to receive the media asset.
            /// NOTE: This is mutually exclusive with all other recording actions.
            /// </summary>
            Custom = 1 << 5,
        }
        #endregion

        #region --Inspector--
        [Header(@"Format")]
        /// <summary>
        /// Recording format.
        /// </summary>
        [Tooltip(@"Recording format.")]
        public MediaFormat format = MediaFormat.MP4;

        /// <summary>
        /// Prepare the hardware encoders on awake.
        /// This prevents a noticeable stutter that occurs on the very first recording.
        /// </summary>
        [Tooltip(@"Prepare the hardware encoders on awake. This prevents a noticeable stutter that occurs on the very first recording.")]
        public bool prepareOnAwake = false;

        [Header(@"Video")]
        /// <summary>
        /// Video recording mode.
        /// </summary>
        [Tooltip(@"Video recording mode.")]
        public VideoMode videoMode = VideoMode.Camera;

        /// <summary>
        /// Video recording resolution.
        /// </summary>
        [Tooltip(@"Video recording resolution.")]
        public Resolution resolution = Resolution._1280xAuto;

        /// <summary>
        /// Recording texture for recording video frames from a texture.
        /// </summary>
        [Tooltip(@"Recording texture for recording video frames from a texture.")]
        public Texture texture;

        /// <summary>
        /// Frame rate for animated GIF images.
        /// This only applies when recording GIF images.
        /// </summary>
        [Tooltip(@"Frame rate for animated GIF images."), Range(5f, 30f)]
        public float frameRate = 10f;

        [Header(@"Audio")]
        /// <summary>
        /// Audio recording mode.
        /// </summary>
        [Tooltip(@"Audio recording mode.")]
        public AudioMode audioMode = AudioMode.None;

        /// <summary>
        /// Audio manager for recording audio sample buffers from an audio device.
        /// </summary>
        [Tooltip(@"Audio manager for recording audio sample buffers from an audio device.")]
        public VideoKitAudioManager audioManager;

        /// <summary>
        /// Whether the recorder can configure the audio manager for recording.
        /// Unless you intend to override the audio manager configuration, leave this `true`.
        /// </summary>
        [Tooltip(@"Whether the recorder can configure the audio manager for recording.")]
        public bool configureAudioManager = true;

        /// <summary>
        /// Audio device gain when recording both game and microphone audio.
        /// </summary>
        [Tooltip(@"Audio device gain when recording both game and microphone audio."), Range(1f, 5f)]
        public float audioDeviceGain = 2f;

        [Header(@"Recording")]
        /// <summary>
        /// Recording action.
        /// </summary>
        [Tooltip(@"Recording action.")]
        public RecordingAction recordingAction = 0;

        /// <summary>
        /// Event raised when a recording session is completed.
        /// </summary>
        [Tooltip(@"Event raised when a recording session is completed.")]
        public UnityEvent<MediaAsset> OnRecordingCompleted;
        #endregion

        #region --Client API--
        /// <summary>
        /// Recording path prefix when saving recordings to the app's documents.
        /// </summary>
        [HideInInspector]
        public string mediaPathPrefix = @"recordings";

        /// <summary>
        /// Video bit rate in bits per second.
        /// </summary>
        [HideInInspector]
        public int videoBitRate = 10_000_000;

        /// <summary>
        /// Video keyframe interval in seconds.
        /// </summary>
        [HideInInspector]
        public int keyframeInterval = 2;

        /// <summary>
        /// Audio bit rate in bits per second.
        /// </summary>
        [HideInInspector]
        public int audioBitRate = 64_000;

        /// <summary>
        /// Recorder status.
        /// </summary>
        public Status status => clock?.paused switch
        {
            true => Status.Paused,
            false => Status.Recording,
            null => Status.Idle,
        };

        /// <summary>
        /// Start recording.
        /// </summary>
        public async Task StartRecording()
        {
            // Check active
            if (!isActiveAndEnabled)
                throw new InvalidOperationException(@"VideoKitRecorder cannot start recording because component is disabled");
            // Check status
            if (status != Status.Idle)
                throw new InvalidOperationException(@"VideoKitRecorder cannot start recording because a recording session is already in progress");
            // Check camera device mode

            // Check audio mode
            if (audioMode.HasFlag(AudioMode.AudioListener) && Application.platform == RuntimePlatform.WebGLPlayer)
            {
                Debug.LogWarning(@"VideoKitRecorder cannot record audio from AudioListener because WebGL does not support `OnAudioFilterRead`");
                audioMode &= ~AudioMode.AudioListener;
            }
            // Check audio device
            if (audioMode.HasFlag(AudioMode.AudioDevice))
            {
                // Check audio manager
                if (!audioManager)
                    throw new InvalidOperationException(@"VideoKitRecorder cannot start recording because the audio mode includes `AudioMode.AudioDevice` but `audioManager` is null");
                // Configure audio manager
                if (configureAudioManager)
                {
                    // Set format
                    if (audioMode.HasFlag(AudioMode.AudioListener))
                    {
                        audioManager.sampleRate = VideoKitAudioManager.SampleRate.MatchUnity;
                        audioManager.channelCount = VideoKitAudioManager.ChannelCount.MatchUnity;
                    }
                    // Start running
                    await audioManager.StartRunning();
                }
                // Check audio stream
                if (!audioManager.running)
                    throw new InvalidOperationException(@"VideoKitRecorder cannot start recording because the audio mode includes to `AudioMode.AudioDevice` but the `audioManager` is not running");
            }
            // Check format
            if (format == MediaFormat.MP4 && Application.platform == RuntimePlatform.WebGLPlayer)
            {
                format = MediaFormat.WEBM;
                Debug.LogWarning(@"VideoKitRecorder will use WEBM format on WebGL because MP4 is not supported");
            }
            // Create recorder
            var (width, height) = CreateVideoFormat();
            Debug.Log("Create recorder width:" + width + ", height:" + height);
            var (sampleRate, channelCount) = CreateAudioFormat();
            recorder = await MediaRecorder.Create(
                format,
                width: width,
                height: height,
                frameRate: format == MediaFormat.GIF ? frameRate : 30,
                sampleRate: sampleRate,
                channelCount: channelCount,
                videoBitRate: videoBitRate,
                keyframeInterval: keyframeInterval,
                compressionQuality: 0.8f,
                audioBitRate: audioBitRate,
                prefix: mediaPathPrefix
            );
            // Create inputs
            clock = new RealtimeClock();
            videoInput = CreateVideoInput();
            audioInput = CreateAudioInput();
        }

        /// <summary>
        /// Pause recording.
        /// </summary>
        public void PauseRecording()
        {
            // Check
            if (status != Status.Recording)
            {
                Debug.LogError(@"Cannot pause recording because no recording session is in progress");
                return;
            }
            // Stop audio manager
            if (configureAudioManager && audioManager)
                audioManager.StopRunning();
            // Dispose inputs
            videoInput?.Dispose(); // this implicitly disposes the `textureInput`, perhaps not the best API design
            audioInput?.Dispose();
            videoInput = null;
            audioInput = null;
            // Pause clock
            clock.paused = true;
        }

        /// <summary>
        /// Resume recording.
        /// </summary>
        public async void ResumeRecording()
        {
            // Check status
            if (status != Status.Paused)
            {
                Debug.LogError(@"Cannot resume recording because the recording session is not paused");
                return;
            }
            // Check active
            if (!isActiveAndEnabled)
            {
                Debug.LogError(@"Cannot resume recording because component is disabled");
                return;
            }
            // Check audio manager
            if (configureAudioManager && audioManager)
                await audioManager.StartRunning();
            // Unpause clock
            clock.paused = false;
            // Create inputs
            videoInput = CreateVideoInput();
            audioInput = CreateAudioInput();
        }

        /// <summary>
        /// Stop recording.
        /// </summary>
        public async Task StopRecording()
        {
            // Check
            if (status == Status.Idle)
            {
                Debug.LogWarning(@"Cannot stop recording because no recording session is in progress");
                return;
            }
            // Stop audio manager
            if (configureAudioManager && audioManager)
                audioManager.StopRunning();
            // Stop inputs
            audioInput?.Dispose();
            videoInput?.Dispose();
            videoInput = null;
            audioInput = null;
            clock = null;
            // Stop recording
            var recordingPath = await recorder.FinishWriting();
            var mediaAsset = await MediaAsset.FromFile(recordingPath);
            // Check that this is not result of disabling
            if (!isActiveAndEnabled)
            {
                mediaAsset.Delete();
                return;
            }
            // Post action
            if (recordingAction.HasFlag(RecordingAction.Custom))
                OnRecordingCompleted?.Invoke(mediaAsset);
            if (recordingAction.HasFlag(RecordingAction.CameraRoll))
                await mediaAsset.SaveToCameraRoll();
            if (recordingAction.HasFlag(RecordingAction.Share))
                await mediaAsset.Share();
            if (recordingAction.HasFlag(RecordingAction.Playback) && mediaAsset is VideoAsset videoAsset)
                videoAsset.Playback();
            if (recordingAction.HasFlag(RecordingAction.Delete))
                mediaAsset.Delete();
        }
        #endregion

        #region --Operations--
        private MediaRecorder recorder;
        private RealtimeClock clock;
        private IDisposable videoInput;
        private IDisposable audioInput;

        private void Reset()
        {
            audioManager = FindObjectOfType<VideoKitAudioManager>();
        }

        private async void Awake()
        {
            if (prepareOnAwake)
                await PrepareEncoder();
        }

        private async void OnDestroy()
        {
            if (status != Status.Idle)
                await StopRecording();
        }

        private (int width, int height) CreateVideoFormat()
        {
            if (Screen.width > Screen.height)
            {
                // Get video size
                var width = GetVideoWidth();
                var aspect = GetVideoAspect();
                var height = Mathf.RoundToInt(width / aspect) >> 1 << 1;
                return (width, height);
            } else {
                // Get video size
                var height = GetVideoWidth();
                var aspect = GetVideoAspect();
                var width = Mathf.RoundToInt(height * aspect) >> 1 << 1;
                return (width, height);
            }
        }

        private int GetVideoWidth() => resolution switch
        {
            Resolution._240xAuto => 240,
            Resolution._320xAuto => 320,
            Resolution._480xAuto => 480,
            Resolution._640xAuto => 640,
            Resolution._720xAuto => 720,
            Resolution._1080xAuto => 1080,
            Resolution._1280xAuto => 1280,
            Resolution._1920xAuto => 1920,
            Resolution._2560xAuto => 2560,
            Resolution._3840xAuto => 3840,
            _ => 1280,
        };

        private float GetVideoAspect() => videoMode switch
        {
            VideoMode.Camera => (float)Screen.width / Screen.height,
            VideoMode.Screen => (float)Screen.width / Screen.height,
            VideoMode.Texture => (float)texture.width / texture.height,
            _ => 1f,
        };

        private (int sampleRate, int channelCount) CreateAudioFormat() => audioMode switch
        {
            var mode when mode.HasFlag(AudioMode.AudioListener) => (AudioSettings.outputSampleRate, (int)AudioSettings.speakerMode),
            AudioMode.AudioDevice => (audioManager?.device?.sampleRate ?? 0, audioManager?.device?.channelCount ?? 0),
            _ => (0, 0),
        };

        /* private RecorderTextureInput CreateTextureInput() => new RecorderTextureInput(recorder, new[] { // no side effects
            new WatermarkTextureInput(null as TextureInput) { // MUST be `TextureInput`
                watermark = watermarkMode != WatermarkMode.None ? watermark : null
            },
        }); */

        private IDisposable CreateVideoInput() => videoMode switch
        { // no side effects
            /* VideoMode.Texture => new AsyncTextureInput(recorder), */
            // TODO: Add check if async texture is supported
            VideoMode.Texture => new CustomTextureInputSecond(SystemInfo.supportsAsyncGPUReadback?new AsyncTextureInput(recorder):new TextureInput(recorder), clock, texture) {  },
            /* var x when !format.SupportsVideo() => null,
            VideoMode.Texture => new CustomTextureInput(CreateTextureInput(), clock, texture) { frameSkip = frameSkip },
            _ => null, */
        };

        private IDisposable CreateAudioInput() => audioMode switch
        { // no side effects
            var x when !format.SupportsAudio() => null,
            /* var x when x.HasFlag(AudioMode.AudioDevice | AudioMode.AudioListener) => new AudioMixerInput(recorder, clock, audioManager, FindObjectOfType<AudioListener>()) { audioDeviceGain = audioDeviceGain }, */
            AudioMode.AudioListener => new AudioInput(recorder, clock, FindObjectOfType<AudioListener>()),
            AudioMode.AudioDevice => new AudioDeviceInput(recorder, clock, audioManager),
            _ => null,
        };
        #endregion

        #region --Utility--

        private static async Task PrepareEncoder()
        {
            // Check platform
            if (Application.platform == RuntimePlatform.WebGLPlayer)
                return;
            // Create recorder
            var width = 1280;
            var height = 720;
            var clock = new FixedIntervalClock(30);
            var recorder = await MediaRecorder.Create(MediaFormat.MP4, width: width, height: height, frameRate: 30);
            // Commit empty frames
            var pixelBuffer = new byte[width * height * 4];
            for (var i = 0; i < 3; ++i)
                recorder.CommitFrame(pixelBuffer, clock.timestamp);
            // Finis and delete
            var path = await recorder.FinishWriting();
            File.Delete(path);
        }
    }
    #endregion
}

@marvpaul are you recording on Windows by any chance?

@marvpaul are you recording on Windows by any chance?

No i'm on Mac OS. I close this issue for now as I use your VideoKit in another project of mine and there it works fine regarding video quality. So I assume the problem is on my end.

Sounds good.


Includes check for views in screenshots module and changes to nearest cuts

This pull request tries to solve the issue #11 . It includes a check in the selected views for the screenshots module to see whether or not the selected cuts are compatible with the volumetric data. If not compatible the nearest compatible cut is computed and the view is changes to that one. This allows the screenshots module to work with images with voxel size different than 1mm and  avoids interpolation of volumetric data.

Thank you for the contribution, it is really helpful.


Use attrsOf instead of attrs

Replaces some unnecessary use of types.attrs.

Thanks for having a look! Rebased to master now.


Add autofix for B004

Summary
Adds autofix for hasattr case of B004. I don't think it's safe (or simple) to implement it for the getattr case because, inter alia, calling getattr may have side effects.
Fixes #3545
Test Plan
Existing tests were sufficient. Updated snapshots

I don't think it's safe (or simple) to implement it for the getattr case because, inter alia, calling getattr may have side effects.

FYI, hasattr has the same side effects as getattr, it's basically getattr + try-except.

@bluetech oof, good point. Sad but not surprising.


Fleet agents bundle on ErrApplied state after upgrade to v2.5.8-rc9

What kind of request is this:
Steps to reproduce:

RKE HA install v2.5.7
Upgrade to v2.5.8-rc9

Result:
Fleet Agents on local and downstream clusters on error state
message: 'query: failed to query with labels: secrets is forbidden: User "system:serviceaccount:fleet-system:fleet-agent"         cannot list resource "secrets" in API group "" in the namespace "fleet-system"'

Other details that may be helpful:
OpenLDAP auth
Environment information

Rancher version: v2.5.7 upgrade to v2.5.8-rc9
Installation option: HA

Rancher version v2.5.8-rc11 upgrade from v2.5.7
Fleet versions v0.3.5-rc7 upgrade from v0.3.4
After upgrading the fleet controller on local I see the fleet agents properly upgrading to v0.3.5-rc7 too.
P1 test case continued working after upgrade.

@izaac Hey Can we retest this with rc9 when you have a chance? I recently found that the previous fix to deal with upgrade is not good, as it causes chatty connection to downstream cluster.

@izaac sure thing I will @StrongMonkey

@StrongMonkey at this point do I need an RC? I don't see 0.3.5 listed as an option to upgrade on v2.5-head


space and stateelement shortcuts

Initializing space and statelements is currently a little cumbersome. There are some shortcuts, but they are still too verbose.
Envisioned solution:

[x] Have separate classes for categorical, ordinal, interval and ratio scale (maybe only categorical and ratio scale will suffice) (use different naming convention)
[x] Make sure they subclass Space
[x] add tests and docs for that
[x] try to have an interface that is as close to possible a numpy's or gym's for maximum transfer

See branch infer-obs for a start

see PR #76


PR Template in .yml format

Is your feature request related to a problem? Please describe.
Pull Request Template means when someone opens a Pull Request, they will have a template that they can edit making it easier for maintainers of the project to review PR and make sure that no PR is submitted without proper description.
Describe the solution you'd like
I will create a PR Template accoring to GitHub Rules
Describe alternatives you've considered
No response
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@AshutoshDash1999 Please assign me this under GSSoC 23

@ManasMadan this issue is already covered. You want to add  on top of it?

@AshutoshDash1999 Is the issue closed because the PR Template is in md format i want to contribute a yml format PR Template. As yml format can handle logic also

@ManasMadan what are the conditions you want to add?

No New Conditions as such Just Logic Check on Existing Input and some basic basic fields @AshutoshDash1999

can you give me some example?

Advantages of YAML Format for PR Templates

Readability and Maintainability
YAML's clean and intuitive syntax enhances the readability of PR templates. Its indentation-based structure promotes easy comprehension and maintenance of the template. Developers can quickly understand the different sections, steps, and configurations defined in the template, leading to improved collaboration and reduced confusion.

Flexibility and Extensibility
YAML supports a wide range of data types and allows for complex data structures. This flexibility enables the creation of comprehensive PR templates that can adapt to project-specific requirements. Developers can define custom sections, environment variables, conditional logic, and more within the template, ensuring that all necessary information is captured in a standardized manner.

Integration with Automation Tools
YAML-based PR templates seamlessly integrate with various automation tools and frameworks. Continuous Integration (CI) platforms like GitHub Actions, CircleCI, and GitLab CI/CD are built to interpret YAML files directly. This integration allows for automated execution of defined steps, enabling efficient and consistent PR reviews. Additionally, YAML-based PR templates can trigger automated workflows, perform tests, and even deploy code to designated environments.

Version Control
As YAML PR templates reside within the project repository, they become part of the version control system. This integration ensures that changes made to the templates can be tracked, reviewed, and rolled back when necessary. Developers can collaborate on improving the PR templates over time, utilizing the power of version control tools to manage revisions effectively.

Separation of Concerns
Using YAML for PR templates enables a clear separation of concerns between the template structure and the actual content. The template structure remains consistent, allowing developers to focus on populating the template with relevant information specific to each PR. This separation streamlines the process and encourages adherence to the defined template structure, reducing human errors and ensuring consistent PR documentation.

Just Logic Check on Existing Input and some basic basic fields

I asked for examples for this.


Implemented proc_macro_derive extract description from rust docs and …

Reference Issue: #393
This PR implements a procedural macro derive_description that automates the generation of a get_description method for enums. The macro extracts documentation comments (specified with /// Description...) associated with enum variants and generates an implementation that provides optional descriptions for each variant.

Looks good! Perhaps just call the new internal crate "macros" so we can use it for other Limbo core specific macros?

Looks good! Perhaps just call the new internal crate "macros" so we can use it for other Limbo core specific macros?

I have rename it


Replace 'get' with indexing operator

Task/Issue URL:
Description
Adopt idiomatic Kotlin , replace 'get' with the indexing operator.
Steps to test this PR
No need, there is no bytecode difference between before and after this modification.

Strange error:


BUG: Missing Constant in Documentation

Describe your issue.
The table in the documentation that lists constants is missing the characteristic impedance of a vacuum. This is because the constant is not listed directly in the CODATA 2018 table (this occured in #10920); however, it has been maintained in scipy since January 2020 (see #11343). Because the code that handles the documentation of constants defines obsolete values as those not in the CODATA 2018 table, the constant isn't included in the documentation. I'm a little out of my depth of expertise here, but I'm not sure that the characteristic impedance of a vacuum should be counted as an obsolete constant. I'm not really sure why it's not included in the CODATA 2018 table, despite the fact that it is still listed on NIST's website as a fundamental constant. Is it fair to say that this should not be included as an obsolete constant? I'd love to hear from anybody who knows more about this subject and its nuances, thanks!
Reproducing Code Example
>>> from scipy import constants
>>> constants.physical_constants['characteristic impedance of vacuum']
(376.73031366686166, 'ohm', 5.61366546036269e-08)
>>> 'characteristic impedance of vacuum' in constants._obsolete_constants
True

Error message
N/A

SciPy/NumPy/Python version information
1.7.3 1.21.5 sys.version_info(major=3, minor=7, micro=11, releaselevel='final', serial=0)

Ok, I think I found the location where the actual text in the source comes from (https://physics.nist.gov/cuu/Constants/Table/allascii.txt) which does indeed list characteristic impedance of a vacuum. A quick diff (https://www.diffchecker.com/1hgzMrhi) shows that characteristic impedance of a vacuum is the only constant that was dropped when the table was inserted into the source code. This makes me think the correct move is to add it back in to the table, which will fix the obsolete issue and put it back into the documentation. Is the redefinition that currently sets the value still necessary?

Apparently, codata data table was updated sometime between the Sep 26, 2019 ( https://web.archive.org/web/20190926042548/https://physics.nist.gov/cuu/Constants/Table/allascii.txt) and Sep 06, 2020 ( https://web.archive.org/web/20200906102720/https://physics.nist.gov/cuu/Constants/Table/allascii.txt ). So, adding the one line should be sufficient to introduce the constant.

Given that the redefinition using the exact_values approach was added as a stopgap, should that now be removed as well?

Thanks for making the PR for this!


Replace LeapCSharp DLL with the actual LeapCSharp source code, bring tests back

[x] LeapCSharp is dead
[x] Long live LeapCSharp
[x] Verify all the examples are working and that builds don't accumulate memory indefinitely
[x] Sanity-check the LeapCSharp source and make sure nothing crazy is in there
[x] Make sure the LeapCSharp tests pass. Some are Ignore'd, the reasons should be sensible

I may go through and confirm that we don't have any dangling unused code like old ObjectPool and PooledObject, but this is ready for review.

meeergiiiing


Parse TypeScript 3.7 shipped proposals

Do you want to rewrite the commit to have your github email? If not then I can merge as is.

@rchl Oh, oops, now it should be fine :) Thank you!

Thanks!


Switch from Psalm to PHPStan level 6

Needs https://github.com/moneyphp/money/pull/802
Fixes #798

@frederikbosch I was able to bring it to level 6. I cannot really spend more time on it, but I think this is a good starting point.
I replaced all @psalm- specific prefixes and replaced them with @phpstan- specific ones, but ideally, we remove that prefix completely. There is no need for those vendor prefixes anymore, sine it's widely supported by PHPStorm et all.

Damn, that must have been quite some work. Fantastic work. I will schedule my review soon.

I'm not really the right person to approve this these days, so I'll just leave a couple emojis here to salute your effort
✅ 🎉 :shipit: 🍾 🥂 ❤

I couldn't find any real code changes that were required for this change. Changes that were included were code removals. So I believe there is no reason why not merging this PR, is there?

@frederikbosch There is only 1 line changed, but I think that's fine. Let's ship this :shipit:


Limit does not work

I don't really know why limit does not seem to work. Below is my code. I want to set limit to 15 but it always show 5 suggestions maximum. Really appreciate any healp
var suggestionName = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.nonword('name'),
            queryTokenizer: Bloodhound.tokenizers.nonword,
            local: data,
            items: 15,
            limit: 15,
        });
        suggestionName.initialize()

let searchMaster = $('#searchBoxMaster')
        searchMaster.typeahead({
                hint: false,
                highlight: true,
                minLength: 1,
            },
            {
                name: 'Indicators',
                source: suggestionName,
                items: 15,
                limit: 15,
                displayKey: 'value',
            });

A couple things I've noticed...
The limit parameter should be passed in the typeahead dataset, not in the Bloodhound parameters, so you can remove that.
I'm not sure what the items parameter you've included in both places. That doesn't appear anywhere in the docs.
Also, verify that more than five suggestions are being returned in the dataset. You should be able to call suggestionName.search(...) directly to see the results from the Bloodhound instance. See the docs on the .search() method.
If the problem persists, I'd suggest creating a JSFiddle of CodePen example to reproduce it.

Adding limit at typeahead somehow makes it that nothing shows, even when data is supplied.
this.input.typeahead(null, {
    name: 'response',
    display: '_none',
    source: this.bloodhound,
    limit: 10,
    templates: {
        suggestion: (response) => {
            if(response['type'] === 'product') {
                return this._getProduct(response);
            }
        }
    }
});

Adding limit at typeahead somehow makes it that nothing shows, even when data is supplied.
this.input.typeahead(null, {
    name: 'response',
    display: '_none',
    source: this.bloodhound,
    limit: 10,
    templates: {
        suggestion: (response) => {
            if(response['type'] === 'product') {
                return this._getProduct(response);
            }
        }
    }
});

@FluffyDiscord Could you create a minimum reproducible test case in JSFiddle or CodePen using the latest release of Typeahead.js?

@FluffyDiscord Could you create a minimum reproducible test case in JSFiddle or CodePen using the latest release of Typeahead.js?

Why are you closing it, it does not work for me, I will try to include snippet I use. Nver used JSFiddle before

Why are you closing it, it does not work for me, I will try to include snippet I use. Nver used JSFiddle before

Hi @FluffyDiscord, Perhaps @tqdo closed this because it started as a pretty specific question about the code in the original post. Happy to have you start a new issue with your test case in a JsFiddle or CodePen so we can reproduce it.

Hi @FluffyDiscord, Perhaps @tqdo closed this because it started as a pretty specific question about the code in the original post. Happy to have you start a new issue with your test case in a JsFiddle or CodePen so we can reproduce it.

Same problem! Always show 5 suggestions
$('#typeahead').typeahead({
    limit: 10,
    minLength: 0
},{
    source: function(q, cb){cb(['1','2','3','4','5','6','7','8','9','10'])}
});

v1.3.1


Why no "getEntityById" lookup?

I'm curious if there was a design decision not to include something like a world.getEntityById(). Method.
My use case involves ray tracing in three.js. The three.js ray tracer hits an object and returns an instance of three's Object3D class, which has a unique ID. What I want to do is find the existing ecsy entity associated with this object so that I can add / remove components.
At the moment there is no apparent way for me to do this, unless I somehow attach the ecsy entity to the Object3D instance itself, which feels like a bit of an antipattern.

I can't speak on why it's not included, but I also found myself needing this. In my case, I needed to update entities when a message is received from the server with the id of the entity to update. You might've already come up with a solution, but I figured I'd share mine for posterity. Basically, I took a cue from the suggestions in #107 and maintained a separate data structure in the system that needs it, in this case just a hashmap.
Something like this would probably work:
class SomeSystem extends System {
  raytraceables = new Map()

  execute() {
    for (const entity of this.queries.raytraceable.added) {
      const { someId } = entity.getComponent(Raytraceable)
      this.raytraceables.set(someId, entity)
    }

    const id = doRaytrace()
    const entity = this.raytraceables.get(id)
  }
}

SomeSystem.queries = {
  raytraceable: {
    components: [Raytraceable]
    listen: {
      added: true
    }
  }
}

Hope this is helpful 😄

Yup, that is what I ended up doing in quite a few places. Was just curious if it was an anti-pattern, or would interfere with the lifecycle management of the entity. Seems to be working so far! Thanks.


Update BASHUTILS_HOME to use HOME

In run_tests we set BASHUTILS_HOME, but it is hard coded to my home directory. It should use the HOME shell variable.

Fixed.


Call to a member function authorize() on null

This error occurs when wyOptimizerChain() is used like here in documention
laravel/framework: "^11.0
outl1ne/nova-media-hub: "^2.0"

Heya! Fixed the docs. There was a race-condition issue with loading the ServiceProviders and assuming the tools() to be created when running a non-nova job queue in the background for example. The optimizer chain sadly has to be configured statically in AppServiceProvider. :(


Cabal build for GHC < 8.10 is broken

On GHC 8.8.3:
src/Extension.hs:61:25: error:
    • Couldn't match type ‘ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension’
                     with ‘Extension’
      NB: ‘Extension’
            is defined in ‘GHC.LanguageExtensions.Type’
                in package ‘ghc-lib-parser-<IP_ADDRESS>00324’
          ‘ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension’
            is defined in ‘GHC.LanguageExtensions.Type’
                in package ‘ghc-boot-th-8.8.3’
      Expected type: [(Extension, ([Extension], [Extension]))]
        Actual type: [(ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension,
                       ([ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension],
                        [ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension]))]
    • In the expression: GhclibParserEx.extensionImplications
      In an equation for ‘extensionImplications’:
          extensionImplications = GhclibParserEx.extensionImplications
   |
61 | extensionImplications = GhclibParserEx.extensionImplications

λ> :t GhclibParserEx.extensionImplications
GhclibParserEx.extensionImplications
  :: [(ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension,
       ([ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension],
        [ghc-boot-th-8.8.3:GHC.LanguageExtensions.Type.Extension]))]
λ>

cc @shayne-fletcher

btw the build doesn't work for GHC 8.10 either, because hlint => cpphs => polyparse, and polyparse has an upper bound for base: <4.14

Hi @zliu41 . I think what's more likely here is that the necessary Cabal flags aren't making their way to ghc-lib-parser-ex - an issue we're working on. Can you please make sure that the flags -f hlint:ghclib and -f ghc-lib-parser-ex:ghclib are passed on the cabal invocation please? That should work - let me know! (See also https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues/38)

btw the build doesn't work for GHC 8.10 either, because hlint => cpphs => polyparse, and polyparse has an upper bound for base: <4.14

Now this one I haven't seen before :-/

Can you please make sure that the flags -f hlint:ghc-lib and -f ghc-lib-parser-ex:ghc-lib are passed on the cabal invocation please?

I'd also note that when I encountered this today (via stack), I had to go so far as to rm -rf my cache to get a rebuild with the right flags (a stack bug I guess).

Checking this myself now but it looks like cabal new-build --constraint "ghc-lib-parser-ex +ghc-lib" should fix this.

cabal new-build --constraint "ghc-lib-parser-ex +ghc-lib"

Yeah this one does work. Thanks!

Outstanding! FWIW, am working through a couple of ideas right now that will mean not having to pass this constraint in future so expect the need for this go away soon!

@zliu41 A fix for this went in this afternoon. On your next pull from master it won't be necessary anymore to pass any cabal flags through to ghc-lib-parser-ex. Thanks for your understanding!

@shayne-fletcher Thanks, I verified both GHC 8.8 and 8.6 work.


enable customized default location

Feature: Enable customization of default store files location using AIVOC_HOME environment variable
Motivation
I use a-shell to run Aivoc on my iPhone. However, due to file permission limitations, the ~/.aivoc_db directory is expanded to /private/var/mobile/Containers/Data/Application/xxxx/.aivoc_db, which a-shell does not have permission to write in.
Solution
To overcome this limitation, I propose providing a way to customize the default location of store files by introducing the AIVOC_HOME environment variable. This feature will allow users to set the AIVOC_HOME variable to a directory where Aivoc can write store files.
For example:
export AIVOC_HOME=$HOME/Documents
aivoc

This solution will be particularly useful for iOS users who cannot write in the ~ directory and can only write in ~/Documents/, ~/Library/ and ~/tmp directories.
As per a-shell documentation:

In iOS, you cannot write in the ~ directory, only in ~/Documents/, ~/Library/ and ~/tmp. Most Unix programs assume the configuration files are in $HOME.

pull request message written by ChatGPT

update as suggested, also add descprtion

Thank you.


Redefine Gradle task and deduplicate classpath calls

Switch from << (leftShift) task definition that's been deprecated in Gradle to supported version
Define the classpath task for only the root project to remove duplicate calls for all sub projects

@artur-shaik rebased this PR, pulled in the changes you made to the gradle functionality. I wasn't sure if deleting your branch was intentional or not, but, they work really well and I'd like to keep them if possible unless you have other plans

Yeah, basically, the changes now in develop branch. Need to make some regularity on versioning, so before bump version, will push everything in develop branch.

Gotcha - I'll rebase this off of develop tomorrow and resubmit then :-)

Gotcha - thanks for pulling it in :-)
Edit: deleted my last comment since I misread you


TypeScript auto-imports / import suggestions not working reliably

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

VS Code Version: 1.77.3
OS Version: MacOS Ventura 13.3.1 (22E261)

Steps to Reproduce:

Clone this repository https://github.com/AlessioGr/payload-plugin-lexical/blob/vscode-autosuggest-bug and install the dependencies of both the root and the demo folder (using yarn install)
Go to the index.tsx file and/or the problemhere.tsx and try to autocomplete "payload" and "useField".

You will notice that VSCode will auto-complete the payload import, but it will not auto-complete the useField import which is part of the payload package. For comparison, Webstorm is able to auto-complete both. Importing it manually works fine.
I generally find VSCode's autocomplete appearing a lot less compared to Webstorm. I've hand-picked "useField" here, so you can reproduce it and test it out.

Auto-import cannot offer imports from your entire hard drive. It can only offer up imports from two places:

Files already in your program
Listed dependencies in package.json

node_modules\payload\components\forms.ts does not match either of those conditions.

Isn't something in node_modules considered a listed dependency in a package.json? If not, how would one specify this particular dependency?


Is it possible to have optional command parameter?

Currently if you want to use a parameter in the command passed into the event you have to inject it and it cannot be undefined.
We would like to have optional parameter and if it's not passed give it a default value instead.
Is that possible?
And one more question. Aspects have possibility to exchange data with each other using processor. Would it be possible to do the same for commands?
Thank you.

At the moment, you can dispatch an event with a data object in it, so you really don't need to inject the data. There is not feature that allow you to have a optional parameter, but I'm not sure if that is really needed.
To share data between commands in a group or flow you can use de commandModel. It is and object that exits during the command livecycle and can be injected on every command. You can see and example here : https://github.com/yukatan/commangular/blob/master/test/groups/command-model-test.js


urllib.error.HTTPError

Too Many Requests
Traceback (most recent call last):
  File "PhoneAnalyzer.py", line 75, in <module>
    analyse(number)
  File "PhoneAnalyzer.py", line 61, in analyse
    for result in request:
  File "/home/nk0/.local/lib/python3.8/site-packages/googlesearch/__init__.py", line 305, in search
    html = get_page(url, user_agent, verify_ssl)
  File "/home/nk0/.local/lib/python3.8/site-packages/googlesearch/__init__.py", line 174, in get_page
    response = urlopen(request)
  File "/usr/lib/python3.8/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 563, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 755, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 429: Too Many Requests

should be good now, I added a delay beetween the requests

should be patched even tho you might get the error again if you use the script multiple times on a short period of time.


update dependabo

open all PRs against staging rather than main
limit dependabot PRs to 1 per package ecosystem to minimize excessive PRs

closes #785