[Bug] invoice.total_tax isn't going into general_ledger.amount

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the issue
I am investigating discrepancies in the balance sheet between quickbooks UI and quickbooks__balance_sheet.
One source of discrepancy I found is that for invoices with tax amounts, the totals aren't reflecting properly in the ledger. The tax amounts are included in the Quickbooks UI balance sheet, but not in Fivetran's ledger.
The general ledger is summing the invoice_line amounts (this code), which do not include tax and have no line for the tax. The tax can be found in invoice.total_tax and it's included in the invoice.total_amount.
When the invoice is paid, it is paid in full, including the tax amounts.
Note that I think (but not sure) that the revenue side of the invoice double entry is behaving correctly. When I look up that line item in the Quickbooks UI balance sheet, it does not include tax. So I think taxes need to be added to the A/R account total, but continue to be left out of the revenue accounts total. But this needs confirmation.
I'm attaching a csv with an example invoice and its eventual payment, including the columns for invoice, invoice_line, quickbooks__general_ledger. The invoice is for $1168.67 plus tax of $30.21 for total of $1198.88
invoice tax example.csv
Relevant error log or model output
No response
Expected behavior
the balance sheet amount should match quickbook's balance sheet
dbt Project configurations
quickbooks:
using_address:        true
using_bill:           true
using_credit_memo:    true
using_department:     true
using_deposit:        true
using_estimate:       true
using_invoice:        true
using_invoice_bundle: true
using_journal_entry:  true
using_payment:        true
using_refund_receipt: true
using_transfer:       true
using_vendor_credit:  true
using_sales_receipt:  true
using_purchase_order: true
using_credit_card_payment_txn: true
Package versions
packages:
git: https://github.com/fivetran/dbt_quickbooks.git
revision: feature/backwards-credit-card
warn-unpinned: false

note: using this branch to make sure we're properly counting credit card payment transactions
What database are you using dbt with?
bigquery
dbt Version
unknown
Additional Context
No response
Are you willing to open a PR to help address this issue?

[ ] Yes.
[X] Yes, but I will need assistance and will schedule time during our office hours for guidance
[ ] No.

Hi @mel-restori thanks for opening this incredibly thorough issue!
I would agree with you that I believe tax in this situation should be excluded from the revenue piece. However, I could see that this may need to be included within the AR totals. Based on what you are proposing, it may be as simple as swapping the amount in the line you called out to be total_amount.

Hi @fivetran-joemarkiewicz,
I believe yes in these examples. But that means the whole case statement would collapse and it would just always be invoices.total_amount. I'm not sure if there was a reason that the case statement was put in in the first place so not sure the risk of swapping that for other types of transactions.
And I believe changing that line would then include it in the revenue piece, which, to your point, shouldn't be.

Hi @mel-restori I am looking back into this and still a bit concerned to make the adjustment when the tax amount is factoring into the revenue calculation. I was wondering though, is there an account in your QuickBooks implementation that is for Taxes? If that is the case, there may be a way we can break these out while not erroneously adding to revenue.

@fivetran-joemarkiewicz not that I know of. In Quickbooks UI they totals are included in the accounts tied to the invoices

Hi @mel-restori ! After initial investigation, we're thinking that the best approach here would be to create an additional double entry model that pulls the invoices.total_tax into its own model, and then create an Invoice Tax line item type that you can then factor into the general ledger and reconcile these discrepancies.
Let us know your thoughts! We will attempt development of this model in a coming sprint.

I had this same issue. It didn't affect the income statement, but it did affect my balance sheet as we had tax payables accounts for tax owed.
I think this is actually a difficult problem to fix because I couldn't find a mapping in QBO online from the tax agency owed tax to a payables account in the chart of accounts. To solve this, I had to include a manual account mapping in my dbt transformation
I'm not sure if a new double-entry model just for the invoice tax is needed, I just made edits to the invoice double-entry model.
https://github.com/fivetran/dbt_quickbooks/commit/66e20011404ea666fcb9b55f9d0c540b3467a068

@caffeinebounce thanks for sharing that you are experiencing the same issue and the additional insight and code. If you are interested in opening a PR I would be happy to review your changes and collaborate with you to integrate a version of these updates into the package.
In the meantime I am checking with our product team to determine if there is a way we can infer the mapping from the data. If not, there is likely a way we will be able to leverage variables to allow users to customize the mapping. Out of curiosity, how were you able to determine the mapping you included manually?

@mel-restori @caffeinebounce I have been able to link up with our product team and it looks like you may be able to link accounts to the tax agency by using the following join path.
ACCOUNT → TAX_CODE → TAX_RATE_DETAIL → TAX_RATE → TAX_AGENCY
Unfortunately, I do not have data that links accounts to the tax agency so I am unable to verify this. Would either of you be able to validate that this path works on your end for what we are trying to achieve.
Thanks!

I think this is probably a good add to the dbt in general, but unfortunately, it does not work for me. It may be the case that my bookkeepers are not following best practices, but the TAX_CODE_ID column in my ACCOUNT table is completely blank.
In my QB, the TAX_CODE table is the lowest segmentation of sales tax, which is basically by state and local jurisdiction because sales tax can vary between jurisdictions within a state. However, when the sales tax is mapped to the balance sheet (for tax payable), they've aggregated by state (e.g., CA Sales Tax Payable) to avoid an excessive amount of line items. Quickbooks apparently isn't great for calculating and tracking sales tax, so we use another tool to manage sales tax, and only the aggregate number is useful for our financial reporting. It's not clear to me how QB is handling the mapping, because things are being mapped to specific accounts but I can't trace the logic in the table.
I will ask my bookkeepers if they could be doing something differently and best practice would to be to maintain via an account mapping.

Unfortunately at the moment I am still unable to find a way with the given data to resolve this discrepancy 🤔.
If others run into the same issue please respond to this thread so we may understand the urgency of this ticket and so we may work with more folks to try and find a resolution. However, for the time being I will mark this ticket as stale until we are able to pick it back up and get more insight into resolving the issue.

I noticed that Value added tax on the JOURNAL_ENTRY table isn't posted to the VAT Control account somehow. So I joined the total tax of JOURNAL_ENTRY_TAX_LINE into the correct period's VAT PAYABLE account which balanced it out.
What puzzles me is that the general__ledger doesn't balance at all, yet this error is known since November 2022 without any fixes? It's not even a bug, the transformation is just plain wrong.

Hi @finalspace-alwyn thanks for responding to this issue. As stated in the previous comments, this is a known issue which we were unable to solve at the time and we were waiting until another member of the community chimed in to get more information on how we may solve this issue.
Would you be able to elaborate on the code changes you made to support the below statement? I would be very interested in seeing if we may apply a similar code update to address the issue. Our previous understanding was that we would need a manual mapping to ensure the tax amounts would be accounted for properly.

I noticed that Value added tax on the JOURNAL_ENTRY table isn't posted to the VAT Control account somehow. So I joined the total tax of JOURNAL_ENTRY_TAX_LINE into the correct period's VAT PAYABLE account which balanced it out.

I would also be willing to meet over a call with you to better understand the discrepancies you are seeing and determine if we can apply updates to the transformation.

Hi @fivetran-joemarkiewicz, I first did a full aggregation of the general ledger and noticed it was out of balance, I then did the same aggregation by period/transaction_id and realised that the journals weren't balancing to zero, so I went to those transactions in Quickbooks itself and saw that whenever there's value added tax on a transaction, the tax portion is missing from the journal.
The reasoning is that if the expense / loan account legs of the transactions are fine, the difference needs to be in vat payable / suspense.
I then at random noticed that my differences are exactly the contents of the JOURNAL_TAX_ENTRY_LINE. Since I have 25+ quickbooks companies to manage, I simply ran a script to check the account_id of the VAT payable accounts in each, and then based on the period of the tax transaction_id, I joined the TAX_ENTRY_LINE table onto the tax payable account based on those.

This would make sense why your general ledger isn't balancing out as we do not currently take the journal_entry_tax_line source into account when building the general ledger. The primary reason this source table was not included originally was solely due to lack of available data. When we designed and as we have updated the QuickBooks data model, we did not come across a dataset with these transactions. Now that you have raised this, we can clearly see these are records need to be included in order for balances to tie out when journal entry tax lines are present.
The only concern I have (which also resembles the same issue highlighted for the invoice tax line above) is which account_id the tax line should be associated with? I see you have included the following line which seems to match the tax line to the proper account:
WHERE WILDMATCH(UPPER(ACCOUNT_NAME),'PAYABLE') AND WILDMATCH(UPPER(ACCOUNT_NAME),'VAT')

This resembles a manual mapping that @caffeinebounce included in their solution here (but for invoice tax line). As the account_name can be different from customer to customer I don't feel this is the most scalable approach. Do you know if there is a way to dynamically associate the tax line entries with the proper account?
In the meantime, I will do some investigating to see if this suggestion above will work for the journal_entry_tax_line records

Hi @fivetran-joemarkiewicz,
Thanks for the prompt and detailed response. The current wildmatch solution I'm using is a very cowboy way of dealing with the issue since there's no procedural way to identify these accounts. Their ID's also differ from company to company,  which is why I had to go for the account name.
I'll investigate further and let you know what I find - but I understand that this approach prohibits you from rolling out a fix.

Thanks for the partnership and your understanding here @finalspace-alwyn. It's important we find the right solution, and your input is extremely helpful in making sure we can have all the proper information to make the correct adjustments.
Since we are at the same crossroads with not directly being able to associate the proper tax account with these tax entries, I have reached out to our product manager of the QuickBooks connector to determine if there is a way to make this connection. It may result in us needing to talk with QuickBooks directly, but I will keep you all informed here if I am able to come up with a possible solution.

Always a pleasure @fivetran-joemarkiewicz, a solution would be mutually beneficial.
Logic dictates that since quickbooks has a whole function for dealing with value added tax and creating custom reports for it, the system must have an identifier to know which account it should use for it's built in VAT function.
I'm look forward to hearing back from the quicbkooks connector team.

@fivetran-joemarkiewicz We have a more serious issue at the moment - none of the balance sheets are reconciling to quickbooks due to the way Fivetran handles VAT Inclusive transactions.
The result is that all accounts balance except for the VAT inclusive affected accounts, being:

Customer Control.
Supplier Control.
Current Account / Bank
VAT Payable / (Receivable)

I noticed in the Supplier control account that VAT transactions are exclusive of VAT where they are actually Inclusive if you view it on the front end.
An example is a bill in Quickbooks:
Cr Supplier Control R16,562
Dr Municipal Expense R14,402
DR Vat Control R2,160
But Fivetran's "General Ledger" table shows:
Cr Supplier Control R14,402
Dr Municipal Expense R14,402
Completely ignoring the VAT portion of the transaction. This affects customer control as well.
What's strange though, is that despite the General ledger "ADJUSTED_AMOUNT" and "RUNNING_BALANCE" being wrong, the "ACCOUNT_CURRENT_BALANCE" field shows the correct balance.
This is obviously a huge problem as my entire client base is receiving incorrect information regarding their customers, suppliers and cash balances, adversely affecting their ability to make decisions.
I've also made a ticket on Fivetran, this issue is critical.

Hi @finalspace-alwyn thanks for raising this issue and I understand the criticality of this data needing to be accurate.
Based on the discovery in this thread, being that VAT is not properly accounted for, I believe I understand how you are seeing client environments running into the above issue. In the example you shared the Fivetran generated General Ledger entries are not able to link the proper tax amount to the VAT account. Therefore, resulting in an entry without any reference to VAT. In order to rectify this discrepancy I believe we would need to be able to understand how to attribute the tax amount to the appropriate VAT account. However, here seems to be a gap in the raw data which is stalling us from making this connection and therefore the proper GL entry in these cases. Please let me know if you disagree or if you believe this issue is entirely separate. I want to make sure I am understanding the issue properly and how it is occurring.
Regarding the "ACCOUNT_CURRENT_BALANCE" field being correct, this is expected as the value in this field is populated directly from QuickBooks. However, we are not able to rely on this field for our General Ledger or other financial report generation due to the field only reporting on the current balance as of the latest sync. This field will change following every sync and we will lose all historical information. Ideally, the latest value generated by the "RUNNING_BALANCE" should match what you see in "ACCOUNT_CURRENT_BALANCE".
Following my previous message from a few weeks ago, we have been trying to make contact with QuickBooks to get an understanding of why this is not possible giving the available endpoints. However, we have not had any luck establishing contact with the right individuals. I believe it may be best if a customer such as yourself were to raise this directly with QuickBooks. You could then loop us in and we can uncover what changes need to be applied to the connector and/or data model.
Nevertheless, I believe a call to address this open issue would be most beneficial. Please feel free to schedule some time with me using the following link. Let me know if no times are available on your end. I am happy to adjust where possible to accommodate timezone differences.

Hi @fivetran-joemarkiewicz, this is a separate issue which I believe to have a much easier solution as the actual base tables you use to do the transformation has the right information in it - so I'm not sure how it's actually being rolled up incorrectly.
if I query "FIVETRAN_DATABASE.JETLINE_JDS_AFROPULSE.BILL" I get the following amount of R16,562.32 - which is correct and should be what's displayed in the GENERAL_LEDGER, it also clearly shows "GLOBAL_TAX_CALCULATION" as "Tax Inclusive" meaning there's no further action needed.
ID	DOC_NUMBER	GLOBAL_TAX_CALCULATION	TOTAL_AMOUNT	TRANSACTION_DATE
141	7678	TaxInclusive	16562.320000000000000000	2019-04-11
However, if I pull BILL_LINE for the same ID 141 I get 14,402.02:
BILL_ID | INDEX | DESCRIPTION | AMOUNT
141 | 0 | Ferum House 42712 | 14402.020000000
TRANSACTION_DATE  AMOUNT | ACCOUNT_ID | TRANSACTION_SOURCE | ADJUSTED_AMOUNT
2019-04-11 | 14402.020000000 | 101 | bill | credit  | 14402.020000000
So somehow when you transform the BILL table you transform the amount to remove tax where it's not necessary.
So finally, I did a SUM of AMOUNT in both BILL and BILL_ID and the difference is literally the difference on the supplier control account as per the below image:

@finalspace-alwyn thanks for your response and for clarifying the issue you are seeing.
Based on your example, it seems that the tax item is not recorded in the bill_line table. When looking at the transformation logic for double entry bills I can see that we are basing the granularity of bill records off the raw bill_line table. We can further see that we are only utilizing the bill_line.amount when recording the amount for the bill entries. It seems then that your source bill_line table does not include the tax entry within the bill_line for this bill. Is that correct? If so, is that expected?
My understanding in this scenario is we should see in the bill_line table an entry for the appropriate bill amount of 14402.02 (which you do already see) and then the appropriate tax entry in the bill_line table for this bill of the amount 2160.30. If we do not see this tax entry in the bill_line table, then I wonder if this is something missing from the connector as opposed to the transformations. I can also confirm we are not filtering out any tax entries within the bill_line table from our staging model. If this tax entry is not intended to be recorded in the bill_line raw table, then we likely will need to find some way to link the delta between bill and bill_line some other way.
I see you scheduled time to meet this week. We can discuss in more detail and investigate further when we meet. Looking forward to chatting then.

Hi Joe,
I reviewed the dbt models and understandably it seems that there is something missing from the connector - however I wonder if it's not possible to join BILL onto bill_line to check whether the global tax classification is "TaxInclusive" in which case we can calculate the tax using the appropriate TAX_ID.
But I agree, might be better to have that discussion in our session as I'm guessing more than anything at this point.

@finalspace-alwyn thanks for meeting with me today! Following our conversation, it seems there are a couple of updates we can explore on our end within the data model:

For invoices and bills we will be able to identify records with tax included in the total amount by leveraging the global_tax_calculation field when it is "TaxInclusive".
For mapping these tax entries to the proper accounts, we can leverage the "globaltax" account_type (can you confirm the account_type name?).

I believe there were still some outstanding discrepancies which we were unable to identify for another account type, but you were going to continue investigating to see if there were any trends that could lead to possible updates on the data model end.
Let me know if there were any items I missed in this recap, and I look forward to confirming these updates as we work to address them next week!


Audio not working

I have no audio from the sample healthcare app, is this a recent bug?.

Did you resolve this @jmsalcido ? I am able to receive audio, but not send any when I join a meeting anonymously using the GuestJoinMeeting sample.

Could you please confirm if you are muted or not?
The sample may have a bug with the mute state.
Thanks!
From: Connel Hooley<EMAIL_ADDRESS>Sent: Sunday, October 16, 2016 9:34 AM
To: OfficeDev/skype-android-app-sdk-samples<EMAIL_ADDRESS>Subject: Re: [OfficeDev/skype-android-app-sdk-samples] Audio not working (#12)
Did you resolve this @jmsalcidohttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjmsalcido&data=01|01|rahulf%40microsoft.com|8a01d45d3c1b42faea9d08d3f5e24e0e|72f988bf86f141af91ab2d7cd011db47|1&sdata=M5D4Vs%2FoSpqPcdI0no7HqiyDAsonAqTcalIclmj9fRI%3D&reserved=0 ? I am able to receive audio, but not send any when I join a meeting anonymously using the GuestJoinMeeting sample.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FOfficeDev%2Fskype-android-app-sdk-samples%2Fissues%2F12%23issuecomment-254057501&data=01|01|rahulf%40microsoft.com|8a01d45d3c1b42faea9d08d3f5e24e0e|72f988bf86f141af91ab2d7cd011db47|1&sdata=1xCZ636VK%2FYYLpKU2kh6F3wt%2By4ndPgY4mp5SVv3wKk%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAG-MfMjWvTQDW-9_lncfJkpRpACrZXeIks5q0lIVgaJpZM4J4oOQ&data=01|01|rahulf%40microsoft.com|8a01d45d3c1b42faea9d08d3f5e24e0e|72f988bf86f141af91ab2d7cd011db47|1&sdata=c3MEhhGI28LxWGO7187k7KvLjthVawJatLJd5usYPbs%3D&reserved=0.

I can confirm I was not muted.

I created a Meet Now conference using the SfB desktop client.
Joined that conference using the GuestJoinMeet app.
I joined muted, so I un-muted the anonymous user from the desktop client.
I still could not hear the audio from my phone in the desktop client.

I have also tried toggling my mute state using the SDK (via the self participant object). The SfB desktop client reports back my correct mute status as I toggle it in the SDK.
My initial thoughts were that this feature wasn't implemented in the SDK yet or was a hardware issue or a Android version issue.
I'm testing using a Nexus 6P running Android 7 Marshmellow.

Mute is implemented in the SDK and we have tested using the Nexus.
Let me try a few things as well.
I am assuming audio just works fine for you from others apps. Just ruling out a hardware issue…
Thank you!
From: Connel Hooley<EMAIL_ADDRESS>Reply-To: OfficeDev/skype-android-app-sdk-samples<EMAIL_ADDRESS>Date: Monday, October 17, 2016 at 1:40 AM
To: OfficeDev/skype-android-app-sdk-samples<EMAIL_ADDRESS>Cc: Rahul Fadnavis<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [OfficeDev/skype-android-app-sdk-samples] Audio not working (#12)
I can confirm I was not muted.

I created a Meet Now conference using the SfB desktop client.
Joined that conference using the GuestJoinMeet app.
I joined muted, so I un-muted the anonymous user from the desktop client.
I still could not hear the audio from my phone in the desktop client.

I have also tried toggling my mute state using the SDK (via the self participant object). The SfB desktop client reports back my correct mute status as I toggle it in the SDK.
My initial thoughts were that this feature wasn't implemented in the SDK yet or was a hardware issue or a Android version issue.
I'm testing using a Nexus 6P running Android 7 Marshmellow.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FOfficeDev%2Fskype-android-app-sdk-samples%2Fissues%2F12%23issuecomment-254147212&data=01|01|rahulf%40microsoft.com|28a38966a22346cebda508d3f6693f7f|72f988bf86f141af91ab2d7cd011db47|1&sdata=ZqrTiVX1OGC4Dm8m81rQguOzulxDkwAsTV0RHcEX0Po%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAG-MfI8KdXM1pMSWDgHN4v7-P1Zd4734ks5q0zR7gaJpZM4J4oOQ&data=01|01|rahulf%40microsoft.com|28a38966a22346cebda508d3f6693f7f|72f988bf86f141af91ab2d7cd011db47|1&sdata=cDCdnzWOZkC5vAjgHrs6HKRaluVZUoWJV7jnk5rO0G8%3D&reserved=0.

I can confirm I can use the microphone to e.g. do a voice based 'Ok Google' search, so the microphone is functional.

I have not tested if it was updated, but I was not on mute, I could take a
look this week.
On Monday, 17 October 2016, rahulyaa<EMAIL_ADDRESS>wrote:

Could you please confirm if you are muted or not?
The sample may have a bug with the mute state.
Thanks!
From: Connel Hooley<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','notifications@github.com');>]
Sent: Sunday, October 16, 2016 9:34 AM
To: OfficeDev/skype-android-app-sdk-samples <skype-android-app-sdk-
<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','skype-android-app-sdk-samples@noreply.github.com');>>
Subject: Re: [OfficeDev/skype-android-app-sdk-samples] Audio not working
(#12)
Did you resolve this @jmsalcido<https://na01.safelinks.protection.outlook.
com/?url=https%3A%2F%2Fgithub.com%2Fjmsalcido&data=01%7C01%
7Crahulf%40microsoft.com%7C8a01d45d3c1b42faea9d08d3f5e24e0e%
7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=M5D4Vs%
2FoSpqPcdI0no7HqiyDAsonAqTcalIclmj9fRI%3D&reserved=0> ? I am able to
receive audio, but not send any when I join a meeting anonymously using the
GuestJoinMeeting sample.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<https://na01.safelinks.
protection.outlook.com/?url=https%3A%2F%2Fgithub.com%
2FOfficeDev%2Fskype-android-app-sdk-samples%2Fissues%2F12%
23issuecomment-254057501&data=01%7C01%7Crahulf%40microsoft.com%
7C8a01d45d3c1b42faea9d08d3f5e24e0e%7C72f988bf86f141af91ab2d7cd011
db47%7C1&sdata=1xCZ636VK%2FYYLpKU2kh6F3wt%2By4ndPgY4mp5SVv3wKk%3D&
reserved=0>, or mute the thread<https://na01.safelinks.
protection.outlook.com/?url=https%3A%2F%2Fgithub.com%
2Fnotifications%2Funsubscribe-auth%2FAG-MfMjWvTQDW-9_
lncfJkpRpACrZXeIks5q0lIVgaJpZM4J4oOQ&data=01%7C01%7Crahulf%
40microsoft.com%7C8a01d45d3c1b42faea9d08d3f5e24e0e%
7C72f988bf86f141af91ab2d7cd011db47%7C1&sdata=
c3MEhhGI28LxWGO7187k7KvLjthVawJatLJd5usYPbs%3D&reserved=0>.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/OfficeDev/skype-android-app-sdk-samples/issues/12#issuecomment-254135429,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAUsYBwcWz53XaMG1Z2Hl1kvo3zw9Qjaks5q0yeogaJpZM4J4oOQ
.

--
Software Engineer at Nearsoft http://nearsoft.com
twitter: jmsalcido http://twitter.com/jmsalcido
G+: http://google.com/+JoseMiguelSalcidoAguilar

We have a new version of the SDK now. Please try this again on the new version. This works for us.
The local participant always joins the meeting muted. to unmute, go to the participants view in the sample and unmute self participant.
Please let me know if this works.

Hi @rahulyaa , I have just tried the <IP_ADDRESS> release. I am seeing the following behaviour in both my own prototype and the GuestMeetingJoin sample (I just downloaded it again so I have the latest version).
Audio does not start at all now when I join the conference anonymously. I join the conference but only via IM. I have linked screenshots below of my desktop client and mobile app.
The end call button in the GuestMeetingJoin also does not work which makes sense as I guess it expects me to be joined via audio but I'm not.
The conference I created was a meet now, on prem, conference.
Desktop client:
https://1drv.ms/i/s!Aj8XEJtTbLMbjCs0m-UFBnc1-Okg
Mobile:
https://1drv.ms/i/s!Aj8XEJtTbLMbjCrIjVtOIvTrQpmm

Hi Connel,
Could you please post the spew that you see in logcat. This will surely help me in isolating the issue.
Does this happen for scheduled conferences too?
Thanks a lot
Rahul

I joined a meet now conference with the app. I sent an IM, replied to the IM on my desktop, then pressed the stop call button. The Logcat output is here:
https://1drv.ms/t/s!Aj8XEJtTbLMbjCxKJKQ8JvuhJn4j
The same happened for a scheduled conference. The Logcat output is here:
https://1drv.ms/t/s!Aj8XEJtTbLMbjC5Xth5m1suPxn7C
Thanks
Connel

Perfect. Thanks for the output. Let me look through and will get back to you.

Hi there,
I am experiencing same issue here. I tried with healthcare, guest meeting sample and also with my own example. In each situation in desktop client is shown that I don't have audio and video while chatting is working.
I'm using SDK <IP_ADDRESS> and also tried on Samsung Galaxy A5 (2016), Samsung Galaxy S5 and Sony Xperia Z3.
Is this limitation of SDK or issue with samples?
Thanks,
Danijel

We have identified the issue. We will post an update this week.
Thank you!

Hi,
We have addressed this issue and updated bits are available on the download site:
https://msdn.microsoft.com/en-us/skype/appsdk/download
Please take a look at the note on the download page.
Let me know if you see issues.

Now going to give it a try. Just downloaded it and I think I have the correct version.
The downloaded file name is actually <IP_ADDRESS> not 0.7.1. I'm hoping they're the same? Screenshot is linked below.
https://1drv.ms/i/s!Aj8XEJtTbLMbjC8fpXZnDC0KqgTv
The readme.txt also says v0.5 just so you know.

@rahulyaa can confirm the latest version works as expected. I've tested using both a 365 and on-prem meet now conference.
Thanks
Connel

@connelhooley Thanks for reporting this and verifying.


Implement Error trait for RetryError

Problem description
It makes more sense if Error trait is implemented for the RetryError.

Probably need to prioritize this issue as it is also required by users.


DATE function not working

the DATE function is not working as expected
> alasql('CREATE TABLE t (id BIGINT, dt DATE)')
1
> alasql('INSERT INTO t (1, NOW())')
1
> alasql('INSERT INTO t (1, "2022-01-30 01:00:00")')
1
> alasql('SELECT * FROM t')
[
  { id: 1, dt: '2023-01-30 15:22:41.470' },
  { id: 1, dt: '2022-01-30 01:00:00' }
]

in general, timestamp / date objects don't work as expected (we've overridden function slike NOW, DATE_ADD etc for this)
however DATE itself seems to not throw an error but overriding also doesn't work..
> alasql('SELECT DATE(dt) FROM t')
[
  { 'DATE(dt)': 2023-01-30T06:22:41.470Z },
  { 'DATE(dt)': 2022-01-29T16:00:00.000Z }
]

I've tried overriding DATE for this but this throws a confusing error
> const alasql = require('alasql');
undefined
> const moment = require('moment');
undefined
> alasql('CREATE TABLE t (id BIGINT, dt DATE)')
1
> const DATE_FORMAT = 'YYYY-MM-DD';
undefined
> alasql.fn.DATE = (dt) => moment(dt).format(DATE_FORMAT);
[Function (anonymous)]
> alasql.exec('INSERT INTO t (id, dt) values (1, "2022-01-30 01:00:00")')
Uncaught ReferenceError: DATE is not defined
    at yy.Insert.eval (eval at yy.Insert.compile (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:14433:18), <anonymous>:3:67)
    at statement (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:14493:14)
    at Function.alasql.dexec (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:4682:11)
    at Function.alasql.exec (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:4664:17)

(consistent regardless of whether DATE is overriden before the DDL or after)
> const alasql = require('alasql');
undefined
> const moment = require('moment');
undefined
> const DATE_FORMAT = 'YYYY-MM-DD';
undefined
> alasql.fn.DATE = (dt) => moment(dt).format(DATE_FORMAT);
[Function (anonymous)]
> alasql('CREATE TABLE t (id BIGINT, dt DATE)')
1
> alasql.exec('INSERT INTO t (id, dt) values (1, "2022-01-30 01:00:00")')
Uncaught ReferenceError: DATE is not defined
    at yy.Insert.eval (eval at yy.Insert.compile (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:14433:18), <anonymous>:3:67)
    at statement (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:14493:14)
    at Function.alasql.dexec (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:4711:28)
    at Function.alasql.exec (/home/mark/work/gopax/node_modules/alasql/dist/alasql.fs.js:4664:17)

node version: v14.17.3
alasql version: 2.5.3

general, timestamp / date objects don't work as expected (we've overridden function slike NOW, DATE_ADD etc for this)

Interesting. Do you mind sharing the functions so we can improve this for the community?

The problem is the time part of the field as its a date - right?

general, timestamp / date objects don't work as expected (we've overridden function slike NOW, DATE_ADD etc for this)

Interesting. Do you mind sharing the functions so we can improve this for the community?

I'm currently using alasql for semi-unit testing sql queries so I've only fixed it to the point that it works for us
const DATE_FORMAT = 'YYYY-MM-DD';
const DATE_TIME_FORMAT = `${DATE_FORMAT} HH:mm:ss`;

alasql.fn.CURRENT_TIMESTAMP = alasql.fn.NOW = () => moment()
  .utc()
  .format(DATE_TIME_FORMAT);
alasql.fn.DATE_SUB = (dt, interval) => moment(dt)
  .subtract(interval, 'milliseconds')
  .format(DATE_TIME_FORMAT);
alasql.fn.DATE_ADD = (dt, interval) => moment(dt)
  .add(interval, 'milliseconds')
  .format(DATE_TIME_FORMAT);
alasql.fn.UNIX_TIMESTAMP = (dt) => moment(dt, DATE_TIME_FORMAT).unix();

the overrides also use moment which I'm not sure alasql would want just for datetime functionality

Thanks for sharing.
Do you remember why the build in function was not working for you?

in sql, these two should return as the same data type but it turns out the returned data types are different

I see. Yes. Hmm. This is a good point. Ill make sure to align this. This is not good.

Hey there, i'm interested in this issue will you please assign this to me.

Sure!

Any luck @Mohit269 ?

Note

Database
Output

MySQL
2023-06-09 15:11:18

PostgreSQL
2023-06-09T15:11:18.000Z

Microsoft SQL Server
2023-06-09 15:11:18.123

Oracle
2023-06-09 15:11:18

IBM DB2
2023-06-09 15:11:18.123

SQLite
2023-06-09 15:13:13

Yes. This is absolutely broken. We need to make a series of breaking changes.

We need a formatter that you can configure for all the date options - including the option to use the date object - (like some of them got now)

We will be planning for a breaking change where all date data returned are formatted the same way
@agershun and I have decided that we will default to the string format and provide an option get all raw dates information as a javascript object.

If the issue is still not fixed, I 'd like to contribute. @mathiasrw

Do note that recently, the alasql.options.dateAsString option was introduced (defaults to true for backwards compatibility).
When set to false, both NOW and GETDATE will just return a Date object instead of a string formatted Date.

@paulrutter Thank you for pointing this out. I have updated https://github.com/AlaSQL/alasql/wiki/Alasql-Options
@Shibn2 any progress on this?

I want to work on this issue , if nobody is doing it

@mathewalexKerala Please!

@mathiasrw @mathewalexKerala can you please make sure that when using alasql.options.dateAsString, it remains to work as is?
We use dates a lot with that setting, and have no issues at all (as long as JS dates are used instead of string values).

Its a good point. We should make sure to not change any of the old tests in order to get the new things working.

@mathiasrw @mathewalexKerala can you please make sure that when using alasql.options.dateAsString=false, it remains to work as is? We use dates a lot with that setting, and have no issues at all (as long as JS dates are used instead of string values).

sure

@paulrutter  @mathiasrw  should fix the both the browser side and server side code ?

That is the same code, as it's javascript either run in the browser or in nodejs. Thus, both environments will work if you have a fix for the issue at hand.


[vue-compat] globalProperty with function as value is always bound to instance proxy

Version
3.2.4
Reproduction link
https://github.com/Fiona-SUN/vue3-minimal-reproduction
Steps to reproduce

update vue to 3.2.4, install @vue/compat of the same version
install UI Components Vant 3.2.0
Global Register Toast (eg: https://youzan.github.io/vant/v3/#/en-US/quickstart#cdn)
use this.$toast.loading in .vue file

What is expected?
The project should run on Vue 3 with Vant.
What is actually happening?
Uncaught(in promise) TypeError: this.$toast.loading is not a function.project broken

PublicInstanceProxyHandlers function use Function.prototype.bind() cause Toast lost some properties.
if there have any other methos to resolve the problem instead of Function.prototype.bind().

Please report the bug in Vant's repository or provide a repro without Vant

I felt like looking into this even though the repo wasn't really minimal with the added dependency.
It's an edge-case issue with the compat behaviour for app.config.globalProperties:
https://github.com/vuejs/vue-next/blob/4adc5042f92c384d9aec2d19e05c8bc2c74b2a93/packages/runtime-core/src/componentPublicInstance.ts#L359

in plain Vue 3, whatever we provide down, we leave untouched
in @vue/compat, if the value of a globalProperty is a function, we bind it to the instance proxy, in order to mimic the bound behavior of Vue.prototype.someGlobalProperty = function () { ... }

The repo is running in compat MODE: 3 - maybe we should disable this behaviour then? Would need documentation.
We should discuss it

Thanks for helping me to explain this problem clearer.
I think that globalProperty with function as value should be a common approach in dependency libraries.such as ElementUI ,Vant and so on.
Now most of us would like to migrate our project from Vue2 to Vue3(Migration Build)，but the dependency package can not supported fully which makes me confused.Losts of code need to rewrite.I don't think this is a good performance in version migration.
(Forgive me for my poor English expression skills~

I think this behavior should be fixed, because the official versions of vue2 and vue3 do not have this problem, which will lead to differences in the perception of migrated users

It is a bug, but it's an edge case, really. it only affects you if you pass a function via a global Property that also has additional properties (which is not something people do quite often), because situation.
A plain function without additional properties on it will work just fine.

@LinusBorg Thanks for you helping!
I agree with this. Indeedly, a function has additional properties should be function extension. - but it is undeniable that convenient methods are more popular with people.

I just ran into this same issue and it took me a couple hours to figure out that this is an unsupported edge case; I only figured it out after putting it together from this and some other GitHub issues.
I want to suggest updating the documentation to include a reference to this unsupported edge case, especially since the example in the Plugins documentation gives an example of passing data to the $translate function. While it does use Provide/Inject to finish the example, it's not explained that this is necessary when using a function that passes a variable.
I would also suggest mentioning this in the Api documentation for globalProperties as well:

For those who run into this same situation, I have created a repository to show the scope/combinations of globalProperties and Provide/Inject and where they do and don't work when using the Composition API:

https://github.com/benwills/vue-globalProperties-exceptions

I would be happy to submit pull requests to both of the documentation pages I linked to above, adding notes at the bottom about the scope and usage limitations of globalProperties. Let me know if that's something you'd like for me to do, and if you have any suggestions/requirements for how I word/structure anything, etc.

Until #4873 is merged, a quick workaround is to convert the function property into an object.
For Vant's Toast plugin that sets up a global $toast  property (as in the @Fiona-SUN's case here):
app.use(Toast)

const toast = app.config.globalProperties.$toast
app.config.globalProperties.$toast = { ...toast } 👈

demo 1
For Axios:
const axiosInstance = axios.create({ withCredentials: true })
app.config.globalProperties.$axios = { ...axiosInstance } 👈

demo 2


Fixed fallback of media file-version meta

Q
A

Bug fix?
yes

New feature?
no

BC breaks?
no

Deprecations?
no

Fixed tickets
fixes #2066

Related issues/PRs
none

License
MIT

Documentation PR
none

What's in this PR?
Fixes a small UI bug when you load fallbacks for a already loaded media model in javascript. For example if you load a media in de and the en-description is null then you will get the de-description when you load the en model afterwards.
Why?
Because of a reported issue (:

Your answer to the question "Why?" Is the exact reason why I am always a bit skeptical about predefined templates (for PRs in that case).
@webmozart What would you suggest to put into the  "Why?" paragraph, if there is already an issue describing the misbehavior in detail? Shouldn't that be optional?
@chirimoya @c00n84 IIRC we said that this behavior has to be changed, but should we already merge that now? As you've pointed out some people are already making use of that bug...

@danrot the flag was unnecessary and i have removed it.

@danrot see #2108


support running in browsers (with emscripten)

need a frontend wrapper, lets see when i can finish it (i have no idea about frontend things)

im still trying to make this

currently web branch has staging support for running directly in desktop and mobile browsers

Is environment value available?

this wip port is now deployed to https://magiskboot-build-wasm.pages.dev/

i will probably finish the file manager today

so i guess i will keep this open until all these get resolved

the only reliable way seems to be using pthread or workers api


Upload a file locally

is there a way to upload a file from your local like a normal file upload dialog? why does it have to be a URL provided?

Not that I know. Ckeditor does not provide such feature, you can upload files with drag and drop with the help of additional plugins. Look at question #237


document supported SQL Server versions

Is your feature request related to a problem? Please describe.
we ship a product that uses SqlClient to connect to SQL Server databases.  we would like to be able to document what versions of SQL Server our product supports, but currently we can't do that because SqlClient itself doesn't document that.
Describe the solution you'd like
i would like the release notes (or some other appropriate location) to document the supported versions of SQL Server alongside the existing requirements such as .NET version.
Describe alternatives you've considered
i don't see any alternatives to this.  our current policy is that we only support versions of SQL Server that are currently supported by Microsoft, but i'm not sure this is actually correct, since our support depends on what SqlClient supports.
Additional context
unlike (i suppose) most software, our product doesn't include any SQL itself, but only runs queries provided by the user.  since we aren't writing the queries, we can't say we require a particular T-SQL feature that is only supported in (say) SQL Server 2008 or later, and therefore our product only supports SQL Server 2008 or later.
our product is mainly used in a very specific, niche market segment that tends to be quite conservative when upgrading; for example, one of our customers only recently upgraded from SQL Server 2005 to SQL Server 2012.  so it's not unthinkable that we might get asked "does this product support SQL Server 7.0?" or something like that - and i'd like to be able to give a firm answer to that, no matter if it's "yes" or "no".

In development terms there is code for dealing with versions all the way back to 7.0. Changes are implemented in a way that detect the version and takes account of their capabilities. I have never tried it with a 7.0 or 2005 server but I would expect it to work.
As far as I know the supported servers are the list of currently supported SQL Server versions. That doesn't mean it is disabled for older versions but that you're not going to get help and the usual answer to any question about an unsupported SQL Server version will be to tell you to upgrade to a supported version, as always.
So the question becomes: do you want to know if it will work or if it will be supported? If it's supported then I think the official SQL Server support list is your answer.

@unixwitch Will this help? https://docs.microsoft.com/en-us/sql/connect/ado-net/sqlclient-driver-support-lifecycle?view=sql-server-ver15#sql-version-compatibility-with-microsoftdatasqlclient

MDC works with SQL Server 2005+
SQL Server 2000 use older protocol and support for it was removed in .net core (you still can connect to SQL Server 2000 using SDC from .net framework).
No idea about v7


Update documentation to say tasks are signed, not encrypted

This resolves #300.

Thanks for this!


systest: fail fast tests to avoid timeout

Motivation

attempt to differentiate test failures vs test timeout
make systest I log at info level

bors try

bors merge


Fix panic in prepare_stack_trace_callback when global interceptor throws

Fix panic when a global interceptor is misconfigured or throws an exception. Example
https://github.com/denoland/deno/pull/24985#issuecomment-2365460210

Maybe a short unit test?


Update Worker template for Worker SDK

https://github.com/aspnet/AspNetCore/issues/7875

Looks like we've resolved all the issues with this, is there a reason to not merge it now?

I was holding onto it for a few days to see if we picked up a build that actually had the Worker sdk in it.


Blob is not getting created after certain period of time

I have created a Nodejs application and using PM2 I am running the process. This process log all the logs to blob in azure on hourly basis. It appears that blob creation is not happening for every hour. Unless we restart the process in PM2, it will not work. After restart it will work for some more time and then it will stop working.

Hi @sasidhar8785, thanks for informing me of this. Can you share a minimum reproducible example or elaborate on how you have set this up? I will need more context to look into this.

Hi @agmoss ,
Here is the code sample which I am using.
const { winstonAzureBlob, extensions } = require("winston-azure-blob");
const blobpath = hostName + '/' + date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate();
var transport = new winstonAzureBlob({
account: {
name: blob_name,
key: blob_key
},
blobName: blobpath + '/sm-beta-v2-' + PORT,
bufferLogSize: 1,
containerName: blob_containername,
eol: "\n",
extension: extensions.LOG,
level: "info",
rotatePeriod: "YYYY-MM-DD-HH",
syncTimeout: 0,
});
transport.on('rotate', function (oldFilename, newFilename) {
console.log(oldFilename);
console.log(newFilename);
});
var logger = winston.createLogger({
transports: [
transport,
esTransport
]
});
Run the application for 3-4 hours and keep on sending logs every min, then you will see that after some time blob in the folder it supposed to be created wont create.
Here are the packages that I am using.

BTW, I am using both elastic and blob for the logs.

Thanks for sharing this, @sasidhar8785. I have been a bit busy recently. I will take a look at this over the weekend. Cheers!

Hi @sasidhar8785,
I am not sure I can reproduce the issue. I can see created blobs at the rotatePeriod specified. Are you trying to have a new folder created for each rotatePeriod? If so, you would need to alter your blobpath variable to include hours.
I have a reproduction example here. This has package scripts for node and pm2. I am using a rotatePeriod that includes SS for brevity. Check it out to see if I am missing anything.


Add UISwitch accessory type

We added support for a 'switch' accessory type.
Note that the 'SwitchAccessory' subclass was necessary to bind a closure to .valueChanged (there are other ways to achieve this if you'd rather use objc associated objects)

Hi @hyperspacemark , any thoughts on this? I'm leaning towards 🍏

Thank you @apptekstudios, for your pull request feature


[BUG] Fedora 37 libsrt version mismatch

Bug description:
tsduck-3.33-3139.fc37.x86_64.rpm fails to install on Fedora 37 updated as of 25 Jan 2023
How to reproduce:
sudo dnf install tsduck-3.33-3139.fc37.x86_64.rpm
Expected behavior:
tsduck should install without errors
Errors and logs:
sudo dnf install tsduck-3.33-3139.fc37.x86_64.rpm
Last metadata expiration check: 1:02:53 ago on Wed 25 Jan 2023 20:26:08 HST.
Error:
 Problem: conflicting requests
  - nothing provides libsrt.so.1.4()(64bit) needed by tsduck-3.33-3139.fc37.x86_64
bash-5.2$ sudo ls -l /usr/lib64/libsrt.*
lrwxrwxrwx. 1 root root     13 Oct  2 21:56 /usr/lib64/libsrt.so -> libsrt.so.1.5
lrwxrwxrwx. 1 root root     15 Oct  2 21:56 /usr/lib64/libsrt.so.1.5 -> libsrt.so.1.5.1
-rwxr-xr-x. 1 root root 906808 Oct  2 21:56 /usr/lib64/libsrt.so.1.5.1

Environment:

OS:  Fedora 37 Linux
OS version: 6.1.7-200.fc37.x86_64
TSDuck full version: 3.33-3139
Installation type: official binary tsduck-3.33-3139.fc37.x86_64.rpm

Additional information:
Thanks for offering a Fedora 37 binary. Hope it can be updated to use the current Fedora 37 libsrt version

Hi @DougLung2000
Thanks for reporting this. However, it is not as straightforward as it seems.
On my Fedora 37, a regular installation without exotic tweak and regular updates, I only see SRT 1.4 in the updates:
# dnf list 'srt-*'
Last metadata expiration check: 0:13:13 ago on Thu 26 Jan 2023 08:42:16 PM CET.
Installed Packages
srt-devel.x86_64                                                               1.4.4-2.fc36                                                                        @fedora
srt-libs.x86_64                                                                1.4.4-2.fc36                                                                        @fedora
Available Packages
srt-devel.i686                                                                 1.4.4-2.fc36                                                                        fedora
srt-libs.i686                                                                  1.4.4-2.fc36                                                                        fedora

However, if I browse to some Fedora mirror, here for instance, I see this:
srt-1.5.0-2.fc37.x86_64.rpm             2022-Jul-23 14:36:46    1.0M     application/octet-stream
srt-devel-1.5.0-2.fc37.i686.rpm         2022-Jul-23 14:36:43    36.4K    application/octet-stream
srt-devel-1.5.0-2.fc37.x86_64.rpm       2022-Jul-23 14:36:45    36.3K    application/octet-stream
srt-libs-1.5.0-2.fc37.i686.rpm          2022-Jul-23 14:36:43    393.3K   application/octet-stream
srt-libs-1.5.0-2.fc37.x86_64.rpm        2022-Jul-23 14:36:44    358.2K   application/octet-stream

I will investigate...

For some reason I cannot explain, dnf continued to point to Fedora 36 repos while the system identifies itself as Fedora 37 and has all gnome desktop appearance of Fedora 37 and most - but not all - packages are identified as -fc37. The upgrade from 36 to 37 went smoothly, as far as I remember. But the system is in some kind of hybrid state. I will fix this and rebuild TSDuck packages.

OK, I reinstalled and rebuilt TSDuck. This time, SRT 1.5 is up to date. The packages have been updated and you may retry.
Sorry for the inconvenience.


Include Binaries

For those of us who want to have a locked down CI/CD system, the method you guys have today doesn't work. We don't authorize our build agents to access outside of the firewall. All modules go through a proxy (artifactory), so the script you have to fetch the binaries doesn't work.
My option is to fork your module, add them in and rebuild it and host it internally to keep things clean.
Can you ship the binaries somehow which each release of the npm module itself?

This is something we are looking at resolving and ultimately, we will end up without the need to require those binaries at all.  However, for the current implementation they are still required.  I'll look at whether we can modify our packaging to prevent the fetching of the binaries

The challenge with including all the binaries is the additional size the package becomes. To support the matrix of all OS/architecture combinations and major Node.js versions would increase the package size to ~12MB today, and that would increase with new versions of Node.js (major and minor) are supported.
Ultimately, as @tobespc says, we know we need to remove the binary dependency - and the way to do that is to provide the source so those binaries can be compiled on install.
I know Artifactory can host packages of many types. As a (hopefully very) short term solution is there scope to host the binaries in Artifactory, and for us to provide a mechanism to pull from the Artifactory instance?

node-pre-gyp has a reasonable approach, it tries to fetch, if it fails, it tries to build, if that fails... it fails.

the next release of appemetrics - 1.0.12 will package all binaries together on npm removing the need to have firewalls opened for other host sites


Refactored all services code for converting id into UUID

What

Converting ids into UUID from backend

Why

To enhance data security and privacy by making it harder for malicious actors to guess or infer object identifiers.

How

Updated schema.prisma for changing auto-incremented id into UUID
Updated ledger service APIs
Updated ecosystem service APIs
Updated organization service APIs
Updated user service APIs
Updated connection service APIs
Updated agent service APIs
Updated agent-provisioning service APIs
Updated issuance service APIs
Updated verification service APIs
Updated start_agent shellscript

SonarCloud Quality Gate failed.
  1 Bug   0 Vulnerabilities   0 Security Hotspots   58 Code Smells
 No Coverage information  19.0% Duplication
 Catch issues before they fail your Quality Gate with our IDE extension  SonarLint

Could you please check a bug and try to solve it.


HIVE-28071: Sync jetty version across modules

What changes were proposed in this pull request?
Sync jetty version across the standalone-metastore/pom.xml and itests/qtest-druid/pom.xml
Why are the changes needed?
Looks like this was skipped in HIVE-27757. As in HIVE-24484, it was upgraded uniformly
Does this PR introduce any user-facing change?
NO
Is the change a dependency upgrade?
Yes
How was this patch tested?
Will see the outcome of CI

@ayushtkn, can you please review it?


debug mode enabled on a fresh 20.04 install

Describe the bug
The documentation states that the default value for the Operator's "debug" parameter is 'false'.
However, debug mode is enabled anyway.
Environment

Trident version: [e.g. 19.10] 20.04

To Reproduce
Look in the deploy/bundle.yaml file or the deploy/operator.yaml file for the command parameter:
          command:
          - "/usr/local/bin/trident-operator"
          - "--debug"

or the TridentProvisioner description in a default/fresh install:
Spec:
  Debug:  true

Expected behavior
Consistency between documentation & deployment package

Hi @YvosOnTheHub: TridentProvisioner's debug value installs Trident in debug mode not the Trident Operator.
This installs the Trident Operator in debug mode.
command:           - "/usr/local/bin/trident-operator"           - "--debug"
This tell Trident Operator to install Trident in debug mode, this defaults to false.
Spec:   Debug:  true

ok for the operator part.
However, Trident was installed with debug enabled by default
the "Spec: Debug: True" was automatically set during the installation, which was completly standard.
this is what I got immediatly after installing Trident:
[root@rhel3 trident-installer]# kubectl describe tprov trident -n trident | grep Spec: -A 5
Spec:
  Debug:  true
Status:
  Message:  Trident installed
  Status:   Installed
  Version:  v20.04

This link also shows Debug:True
https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operator-install.html#creating-a-tridentprovisioner-cr-and-installing-trident
Said differently, I had to patch the provisioner to disactivate debug mode, where I was expecting the opposite, ie patch the provisioner to activate debug mode

@YvosOnTheHub I can understand your expectation that debug should be off by default. The majority of our support cases though are related to the installation and the debug logs are needed in those cases to resolve customer issues. With the Operator, you are able to easily turn debug mode on or off compared to how you could only set the debug mode using the tridentctl install previously.
Considering this we would like to keep debug mode on by default in order to better assist customers that encounter problems. We are planning on updating the Status section of the CR to reflect all settings, including default settings, in the Trident 20.07 release so that this should be apparent to the end-user.

got it
thank you @gnarl


Suggestion: self-update

Is your feature request related to a problem? Please describe.
Since this a new project that is rapidly developed and constantly adds new feature,
the repeated updates are becoming slightly more painful to deploy on multiple servers.
Describe the solution you'd like
Add a self-update functionality that will pull the latest binary from github/your build source and replace/update existing binary. lazydocker self-update
Describe alternatives you've considered
A shell script that pulls newest version and replaces the old binary.
But in this case it's already 2 files and they may not work in all environments.
Additional context
Another GO project that implemented a self-update feature and can possibly provide code for the update function.
https://github.com/restic/restic/pull/1949

I'm not sure if this is a good idea,
If everyone pulled from source this could be totally fine but most users will get it from a package manager.
When lazydocker would auto update itself it will probably get in conflict with the package because they will have 2 different versions.
And this will get worse when the package manager has a newer version but the version is older than the latest release thus the user will get downgraded by it's package manager with the problems that might come from that like conflicting configs.
Also the code is changed every month but the project is stable and most users won't care much about updates unless they know what is added every update and they know what that makes a difference for them.
If a user really always wants the best version just use:
go get -u github.com/jesseduffield/lazydocker

To me this seems like something that only saves time for the package deployed.
And if that is the case i think most users are fine with waiting a week for a new version of the program.
But correct me if i'm wrong because what you suggest is likable idea,

Sure, I'll take you up on it.
Think of it in this way, packages are prepared and compiled from source for the said distribution.
As a means of better integration into the system. What you are probably talking about are the rolling releases and some bleeding edge user repositories that provide the package.
It is possible to, deactivate the self-update feature via a build flag, which would not bother the packaged versions of the software.

Since this a GO project and the software is statically compiled, it make the portable to a point that if you have single version of it, you might just copy it everywhere from your systems.
But that is beside the point that, it's about people that are downloading the software from here(github).

Also the code is changed every month but the project is stable and most users won't care much about updates unless they know what is added every update and they know what that makes a difference for them.

unless they know
bingo, there you have it. it's basically a QOL feature, that makes it easy to update.

https://api.github.com/repos/jesseduffield/lazydocker/releases :
113 lazydocker_0.2.4_Linux_arm64.tar.gz
114 lazydocker_0.2.1_Linux_x86_64.tar.gz
139 lazydocker_0.2.1_Darwin_x86_64.tar.gz
386 lazydocker_0.2.5_Linux_x86_64.tar.gz
468 lazydocker_0.7_Linux_x86_64.tar.gz
491 lazydocker_0.5.4_Linux_x86_64.tar.gz
527 lazydocker_0.6.3_Linux_x86_64.tar.gz
682 lazydocker_0.5.4_Darwin_x86_64.tar.gz
698 lazydocker_0.2.5_Darwin_x86_64.tar.gz
971 lazydocker_0.7_Darwin_x86_64.tar.gz
975 lazydocker_0.6.4_Linux_x86_64.tar.gz
1127 lazydocker_0.4_Linux_x86_64.tar.gz
1188 lazydocker_0.6.3_Darwin_x86_64.tar.gz
1234 lazydocker_0.4_Darwin_x86_64.tar.gz
1336 lazydocker_0.2.4_Linux_x86_64.tar.gz
1351 lazydocker_0.2.4_Darwin_x86_64.tar.gz
1468 lazydocker_0.6.4_Darwin_x86_64.tar.gz
1706 lazydocker_0.3_Darwin_x86_64.tar.gz
1914 lazydocker_0.3_Linux_x86_64.tar.gz
3428 lazydocker_0.5.5_Darwin_x86_64.tar.gz
3555 lazydocker_0.5.5_Linux_x86_64.tar.gz

You can actually see how often the people visit this repo to download/update the package.
Run: wget https://api.github.com/repos/jesseduffield/lazydocker/releases -q -O- | jq '.[]["assets"][]|"\(.download_count) \(.name)"' -r
If you look at it, you can see how often the software and what version is downloaded. It's basically people remembering to check the project for new releases.

go get -u github.com/jesseduffield/lazydocker

Why thank you for the build environment that is not really needed.
I know what you mean, but it's adding packages, downloading data and other parts and then compiling it.
It works, but do you really want to have that in production?

To me this seems like something that only saves time for the package deployed.
And if that is the case i think most users are fine with waiting a week for a new version of the program.

saves time for the package deployed

What repo? https://repology.org/project/lazydocker/versions

But that is beside the point that, it's about people that are downloading the software from here(github).

Oww, i thought you also meant the lazydocker packages in the repositories (here).
In that case this makes a lot more sense because this is something frustrating when having binaries from the github release page.
If it's just that i'm totally fine with this change, this is indeed something nice to have in these blobs.

lazygit actually has an update feature in the app. I removed it for lazydocker because I felt it wasn't really an important feature, but it appears I was wrong! I suspect it wouldn't be hard to grab the code from lazygit and port it over to here. Relevant file: https://github.com/jesseduffield/lazygit/blob/master/pkg/updates/updates.go
Worth noting that that supports auto-updates, and its an open question whether we want to support that here or just to support user-initiated updated from within the app

If it ain't broke, don't fix it. Auto-updates should be plannable, but not self-executing.
Can be fixed by an alias alias lazydocker='lazydocker --update' , since I guess that's what it would basically do if it were implemented as auto-update.


Repeating Loop/Lockup with the Upgrade Assistant

Problem encountered on https://dotnet.microsoft.com/en-us/platform/upgrade-assistant/tutorial/install-upgrade-assistant
Operating System: windows

I was upgrading a .NET Framework 4.7.2 project using the Upgrade Assistant. On the last step, it appears I accidentally hit "2" instead of "1", and then the command window proceeded to fill up with a repeating message - "Initializing upgrade step Select project to upgrade" (see the first screenshot).
After a while, the messages changed (see the second screenshot).

I copied as much text as was available in the cmd wintow and saved it into the file that is attached.
CommandPromptText.txt

@MillerMark Appears to be some weird async issue that went into a loop, were you able to complete your upgrade later with the right option? Could you also attach the upgrade-assistant.clef file?

I was able to complete the upgrade later (after exiting and restarting the tool). Where can I find upgrade-assistant.clef?

I was able to complete the upgrade later (after exiting and restarting the tool). Where can I find upgrade-assistant.clef?

It will be in the same folder where you are running the upgrade-assistant from

Closing stale issues; if you're able to provide the clef file, though, let us know.


Overrides editor.tabSize setting for yaml files

VS Code Version: 1.52.1
Kubernetes Plugin Version: 1.2.3
OS: WSL/Ubuntu 20.04
YAML Plugin Version: 0.14.0
Yaml extension is a dependency which, when installed on its own, has a its own settings.
  "[yaml]": {
    ...
    "editor.tabSize": 2
    ...
  },

This works fine until I installed the Kubernetes plugin, then VS Code returns to the default tabSize (4, in my case) and ignores this yaml setting.
I've reproduced a number of times by making sure the YAML extension was installed, saw that tab spacing was correct, then I install the Kubernetes extension and see that the spacing goes up to 4. Then I uninstall Kubernetes extension and it's still incorrect, uninstall YAML extension and it's still incorrect. Install YAML extension and it works again. (I usually reload VS Code after uninstalling these extensions.

To help us track this down, where do you see the incorrect spacing taking effect e.g. snippets, Format Document, typing in an existing 2-spaced YAML document?  Thanks!

To help us track this down, where do you see the incorrect spacing taking effect e.g. snippets, Format Document, typing in an existing 2-spaced YAML document?  Thanks!

@itowlson were you able to replicate it? I tried it without any success. I uninstalled/reinstalled vscode k8s extension several time, also closed/reloaded vscode. I can still see that the yaml extension rule is used. I can also ping someone from the yaml extension if we need help.
@flockoftanks any other info that could help us to replicate this?

Hmm... I'm using Remote: Ubuntu 20.04. on WSL. Windows 10.  I don't know if that was obvious from first post. I just installed Kubernetes Extension again and it's still happening. I opened any random YAML file (after installing) and hit tab and it added 4 spaces instead of 2. Everything in the chain from Windows to VS Code to Ubuntu to the Extension are all on the most recent versions. I tried changing color schemes (in desperation) and that didn't make a difference.


QUIC 39

Hi guys,
As for Lucas:
v0.6.0 (2017-12-12)
Add support for QUIC 39, drop support for QUIC 35 - 37
But when i try to download caddy from home i got only
alt-svc:quic=":443"; ma=2592000; v="38,37,36,35"
Can you please update to the latest version?
Thanks.

See https://github.com/mholt/caddy/pull/1968, it's coming soon.


tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/Projects.resource: remove calls to 'Maybe Wait For Dashboard Loading Spinner Page' for performance timing

Following the discussion in #709 I open this PR to discuss how to get this change merged in the code, in a way that is compatible with the notebook scale test and QE tests at the same time.
The reason why we can't have it as part of the notebook scale test is that this call introduce a Sleep 5s delay that invalidates the timing measurements.

Jenkins Jobs:

DS Project suites against RHODS v1.25: 1671 RUNNING

@bdattoma I have updated the PR as discussed offline.
The new behavior is that by default, nothing is changed.
but if this is defined:
${ODH_DASHBOARD_DO_NOT_WAIT_FOR_SPINNER_PAGE}  ${true}

then the wait for the spinner is skipped.

Jenkins Job (installing latest 1.25 version and run DS Project test): 1704 RUNNING


Use esp32 cam modules stream

Write a python script which uses esp32 cam module stream, if any changes detected by cam module, script should perform a defined action like sending notification or turning on/off any electrical appliances (this output behavior is dependent on environmental factors, like if user has ture on motoring mode then it should send message, or if user has turn on power saving mode then that script should check if there is any person detected by camera if no then turn off unwanted electrical appliances)

Completed in #143


facing UnhandledPromiseRejectionWarning: Error: Request failed with status code 403 on making API requests.

λ starred_search --user 'link-' --find 'es6' -d
(node:12837) UnhandledPromiseRejectionWarning: Error: Request failed with status code 403
    at createError (/home/greyhound/.nvm/versions/node/v14.15.0/lib/node_modules/starred_search/bin/starred_search:1212:15)
    at settle (/home/greyhound/.nvm/versions/node/v14.15.0/lib/node_modules/starred_search/bin/starred_search:1471:12)
    at IncomingMessage.handleStreamEnd (/home/greyhound/.nvm/versions/node/v14.15.0/lib/node_modules/starred_search/bin/starred_search:598:11)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1327:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:12837) 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: 2)
(node:12837) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

λ starred_search --version
0.1.10

λ node --version
v14.15.0

I installed using npm install starred_search -g
The operating system is Ubuntu 20.04 LTS in WSL1.
I'm not a nodejs person, but these warnings/errors are not fetching any results, yields 403. README didn't say anything about adding keys.
Is there anything i'm doing wrong?

Thank you for reporting this @greed2411 - Let me try to reproduce the error

I tried this both in a container and on a Windows machine and it worked on both :( You don't need any keys as the API used is accessible without authentication up to 60 calls per hour.

Can I bother you to try uninstalling it and installing again?
$ npm uninstall starred_search -g
$ npm install starred_search -g
$ starred_search --user 'link-' --find 'es6' -V -d

hey @Link- thanks for responding.
I uninstalled and installed it again.
starred_search --user 'link-' --find 'es6' -V -d

this worked once, magically. but after that I'm facing the same error again. I'm not sure if you can reproduce this tho.

@greed2411 I suspect this is related to caching, I will keep testing until I'm able to replicate.

@greed2411 I'm not able to replicate this issue. The 403 is due to hitting the rate limit. The rate limit for unauthenticated requests to the GitHub APIs (which this tool does) is 60 per hour per IP address.
I'm starting to think that you might have something else running and/or sharing your IP with another service that's causing this API rate limit failure.
Is this something you can investigate?


Remove scan-start-where-left-test from CI and avoid caching state in lwd-update-sync job

Motivation
The scan_start_where_left test is failing our CI apparently for this reason.
Additionally there is a workflow issue described more in detail here
Solution

Instead of fixing it we want to disable the scan_start_where_left test from the workflow keeping the rust test available for local runs.

Avoid caching the state in lwd-update-sync job.

Tests
CI should not fail in this workflow as it will not be there anymore.
PR Author's Checklist

[ ] The PR name will make sense to users.
[ ] The PR provides a CHANGELOG summary.
[ ] The solution is tested.
[ ] The documentation is up to date.
[ ] The PR has a priority label.

PR Reviewer's Checklist

[ ] The PR Author's checklist is complete.
[ ] The PR resolves the issue.

@mergify refresh


Localization missing in Item sheets

The localization for the tabs Description and Modifiers in the item sheets is actually missing. (See Screenshot)

Fixed by CStadther for next update.


Change the inappropriate message when failing to parse TimestampType and DateType.

When failing to parse TimestampType and DateType, it emits IllegalArgumentException. In this PR, it moved the exception to parsing exception.

Current coverage is 85.68%

Merging #47 into master will not affect coverage as of 27aa1ac

@@            master     #47   diff @@
======================================
  Files           11      11
  Stmts          573     573
  Branches        76      76
  Methods          0       0
======================================
  Hit            491     491
  Partial          0       0
  Missed          82      82

Review entire Coverage Diff as of 27aa1ac

Powered by Codecov. Updated on successful CI builds.

Merged.


Dynamically load response - fixes #1

WOO
can we keep it saying 'no' forever and if we get data back add a second line of smaller text that says what the upcoming election is? and if we don't have data it just doesn't show anything


[BUG] Torii in-memory sqlite db get deleted after awhile

When running torii with in-memory db, after awhile of inactivity sqlite will reclaim memory and delete db. Subsequent queries will result in no such tables errors.
https://www.sqlite.org/inmemorydb.html
The database ceases to exist as soon as the database connection is closed.
Steps to reproduce:

Start torii in default mode and index some data torii --world 0x123
Wait for ~20min (not sure when exactly last db connection gets dropped)
Query either from grpc or graphql and encounter error

Current workaround is to persist db: https://book.dojoengine.org/toolchain/torii/reference#database-url
We should somehow be able to keep the connection alive, or configure sqlite to not automatically reclaim memory.

This issue should be about configuration. Here are some hints on possible reason for this behavior:
Auto-Vacuum Feature
SQLite's auto-vacuum feature can automatically reclaim space by compacting the database file and cleaning up unused space. If auto-vacuum is enabled, SQLite might perform these operations during periods of inactivity.
WAL Checkpointing
If the Write-Ahead Logging (WAL) mode is enabled, checkpoints that happen automatically or manually can lead to space being reclaimed. Checkpoints flush data from the WAL file back to the main database file, potentially leading to space reclamation during periods of low activity.
Temporary Files Cleanup
SQLite creates temporary files for various operations. These files are usually cleaned up after the operations complete, but cleanup might also occur during downtime or when the database connection is closed.
This list might not be exhaustive but gives an idea of where the search can begin.

I can take a look at this

Fixed in #1543.


Consider avoid_dynamic_calls as a lint rule.

I think avoid_dynamic_calls would be a great addition to the lint rule sets. Either in core or in recommended.
https://dart-lang.github.io/linter/lints/avoid_dynamic_calls.html
It is currently marked experimental. See  https://github.com/dart-lang/linter/issues/2666

Not approved

@mit-mit How does a lint prevent a developer from using dynamic calls if they desire? :thinking: My understanding is that the lint would be used (optionally) by developers who do not desire to have dynamic calls in their codebase, or at least, in rare situations where they do need one, it can be flagged and worked around using an // ignore: avoid_dynamic_calls.
I was looking forward to this lint to use in the Flutter Web engine. We don't need dynamic invocations in the engine, but our codebase is big, so we don't know if we have some dynamic calls that sneaked in by accident, potentially hurting performance and/or code size.

This issue doesn't track the availability of this lint; it tracks whether the lint is enable by default in package:lints / package:flutter_lints. Thus the triage decision is wrt. what we decide to enforce out of the box, not what you can individually configure in your analysis_options.yaml file. Does that explain our triage decision?

Oh, but maybe the confusion is that @srawlins logged this as a request to have this as a supported lint? Then we can certainly reactivate and transfer to https://github.com/dart-lang/linter/issues...

The rule exists. This was a request to add the rule to the lints:core or lints:recommended rule set.

Ah, cool. If this can be optionally added to analysis options, I have no further concerns.

I guess it is possible to disable a recommended lint in a package and certainly using // ignore_for_file:.... That might make it a good trade-off to enable this lint for anyone who doesn't actively turn it off. After all, a dynamic invocation which is not seen as such can be rather misleading when it comes to potential run-time errors.

@mit-mit Can you reopen this issue for reconsideration during our next lint triage?

It came up in a recent discussion that a surprisingly high number of the top 200 runtime errors reported by our flutter analytics are related to dynamic. There is some hope that enforcing a lint like this (and/or https://github.com/dart-lang/lints/issues/125 could help in reducing that number).

I guess it is possible to disable a recommended lint in a package and certainly using

From a discussion, I believe another way that was proposed to disable this lint was via an explicit cast; so:
(value as dynamic).fooBar();

cc @leafpetersen

Together with strict-casts (#125), this would completely remove dynamic from the language - no implicit down-casts and no dynamic invocations.
If we're not willing to actually remove dynamic from the language, I don't think we should enable these restrictions by default, which is what adding to core or recommended would imply.

If we're not willing to actually remove dynamic from the language

A big "if"! Surely not a settled decision, but an open possibility.

If we're not willing to actually remove dynamic from the language

To me, the lints we recommend are about best practices - and from our crash reporting we can see that a lot of people are struggling with dynamic. Therefore, it would make sense to me to guide people away from this particular language feature. That doesn't necessarily mean that the feature has to be removed from the language (that can be a separate discussion). We enable some other lints as well where we guide people away from certain coding patterns that are technically possible in Dart, but good practice has shown they should be avoided.

I wonder if some fraction of these crashes are coming from users that are just doing "let me just try it and see what happens"

Are we able to pivot the crash reporting on release mode (debug vs release)? I'd suspect such "let me just try it" development would be all debug mode?

If we actually want to take dynamic out of the language as a type, we probably could.
I'd just remove the type, and add an "operator"/special-syntax of .dynamic that can be applied to any expression, and then that single expression behaves as if it has type dynamic today - can invoke any method, can assign to any type. The result of the invocation will have type Object?, you'd need to do .dynamic again if you want more dynamism.
It might be hard on JSON access, but I hope pattern matching will help with that.
The global migration would add .dynamic at every existing dynamic invocation or implicit downcast, then change every occurrence of dynamic to Object?.
Migration order will be a problem, if something changes to returning Object? before the downstream code migrates, it can't see where to add the .dynamic (but it might guess based on the type errors).
Or there could be a phase where we allow you to write dynamic, but language version X.Y and above treats it as Object? and requires .dynamic, those below do not.
Possibly automatable, but not easy.

I strongly agree with everything @eernstg said. With Dart 2.0, we pivoted Dart away from the "gradual typing" user experience where a use uses dynamic because they just don't want to deal with types (or don't want to deal with them yet). Once we made List<dynamic> no longer a subtype of other list types (and likewise other generics), we basically lost that use case. Dart doesn't support the "don't worry about types" use case when code like this is prohibited:
var a = [];
var b = [1, 2, 3];
b.addAll(a);

I'm happy to give up this use case (though I believe it does have value!) because losing that means much better user experience for users who do want the full benefit of types. I think the trade-off is a very clear net win.
But it does mean that, like Erik suggests, dynamic is basically just a specialized tool for specialized use cases. Given that, it probably doesn't warrant the level of direct language support that it has. If we had designed Dart without ever having dynamic, I suspect we wouldn't be considering adding it now.

If we had designed Dart without ever having dynamic, I suspect we wouldn't be considering adding it now.

I think we would be considering adding something that allows dynamically invoking a method without knowing the type declaring it.
We might not do so, but we would be considering it, because there would be requests for it.
The implicit downcast, probably not.
I do think that using is checks and promotion is better than just "knowing" the type, and that pattern matching and destructing gives a way to do that which works for recursive dynamically typed structures like JSON, but there will likely be a core of very dynamic patterns that cannot be implemented without dynamic dispatch.
But I don't know all those cases, so I can't say whether the cost of supporting them is worse than the loss of not supporting them at all.

I am completely in favor of considering avoid_dynamic_calls a lint rule, along with #125.
Even if we don't remove dynamic entirely form the language (which I am also in favor of), I think we should make dynamic the more explicit as possible. Thus, requiting an explicit cast and/or explicit lint ignore commentary would be positive and surely avoid a lot of runtime errors, specially from beginners.

What about an avoid_dynamic lint that combines the behavior of no_implicit_dynamic as well as more strictness around using dynamic anywhere. As a rough proposal, disallow:

Implicit or explicit dynamic return types - use Object? instead.
Implicit or explicit dynamic argument types.
Invoking any member on a dynamic expression - use (expression as dynamic).dynamicCall(); when it is intended.
Downcasts from dynamic.

If we come up with what we think are the total set of best practices around dynamic, it would be nicer to enable that all together than to have to piece together different bits of config.
I do think that what a lot of our customers want is effectively Dart without dynamic, but a way to make dynamic calls when there is no other choice. I don't think it matters much whether the syntax for that is verbose like (expression as dynamic).dynamicCall() or if it had sugar like expression!.dynamicCall().
We can align the analysis towards removing dynamic from the language entirely, without actually making the decision about doing that now.

Implicit or explicit dynamic argument types.

This one is very hard to comply with today, without making a lot of exceptions. There are gobs and gobs of generic types (with dynamic as the bound) where it is not typical, and often not useful, to specify type arguments. I've been trying to get the flutter devtools codebase to be compliant with strict-inference, which requires type arguments to be explicitly written where they are not inferred, and I think it would make the code much harder to read and a pain to write. A few examples:

Future.delayed() - even though it's obvious to me that this returns a Future<void> or Future<Null>, the rule would require you to write Future<void>.delayed() (unless the context type results in void being inferred). (Often Future.delayed is just awaited, so no context type.) The same with Future.value().
Typically a type parameter is used on an "input" type, like a parameter of a constructor, or a parameter of a function. There are a few cases I've seen where it is used in an "output" type (I think Iterable.fold is an example of this). In devtools, they use showDialog a few times, which is generic with a type parameter T, but that T does not show up in the parameter list; it only shows up in the return type, Future<T?>. I think this happens with injection frameworks as well. Anyhow, when devtools just awaits showDialog, inference does not infer anything for T, so dynamic is used. But it seems arduous, and unhelpful, to require await showDialog<void> everywhere.
Heterogeneous collections. I don't think I write stuff like this very much, but I've seen it in internal code, where types often exist in a list, or a map, or a tree. So if you have something like FooNode<T>, which has FooNode children, you end up writing FooNode<Object?> or something similar, a lot, where it really doesn't look helpful.

These examples can be alleviated, but it requires some work:

Make the type parameter on Future.void, and Future.delayed required, and introduce new equivalent static methods that return Future<void>. See https://github.com/dart-lang/sdk/issues/53364. Other similar cases.
Replace oh so many dynamic bounds with Object?.
Alternatively, change the default bound to Object?.

I would 100% support a lint rule that required you to change bounds from dynamic. I don't think we have anything that enforces this. It also might be an annoying amount of churn if we're going to eventually change the default bound to Object?. I imagine that, while that would be a breaking change to change the default bound, it would break an extremely small amount of code. (Except the cases of List and Map maybe, because JSON parsing; those bounds could be explicitly made dynamic.)

Invoking any member on a dynamic expression  - use (expression as dynamic).dynamicCall(); when it is intended.

Available to day as avoid_dynamic_calls lint rule.

Downcasts from dynamic.

Available today as language: strict-casts. Painful to implement in JSON-heavy code, but I'm very curious to see if macros can alleviate this pain (or hide it under the rug).

If we come up with what we think are the total set of best practices around dynamic, it would be nicer to enable that all together than to have to piece together different bits of config.

We could release an analysis options file that enables different bits of config.

I'm starting to come around to re-considering if https://dart.dev/tools/linter-rules/avoid_dynamic_calls should indeed be added to the recommended lint set. Do we think this would trigger a bunch of prevalent code being written today?

There aren't that many dynamic type variable bounds. The SDK contains none.
In Dart 2.12, the default bound of a generic type variable with no specified bound was changed to Object?.
In hindsight, that phrasing was problematic, because there was no concept of "default bound" before, so we failed to enumerate the precise places where one should now use Object? instead of what was used before. The most obvious is that invoking members on a T-typed value was not doing it on Object but on Object? (which might matter for extensions).
But it didn't change what instantiate to bounds did for type variables with no bound, which is to use dynamic. Because that's what raw types have always used, since the dawn of Dart 1.
It really should (IMO) have changed that to instantiating to the (default) bound. That might have been very breaking,  but the null safety migration was the right place for such a breaking change, especially since this one was automatable by just inserting <dynamic> in all the places where instantiate to bound would have inferred it.
I'd love to change instantiate-to-bounds to not insert spurious dynamics. Separately from everything else.
(And I'd love to avoid any other way to accidentally get dynamic, like var x; or untyped parameters having type dynamic. Those are all accidental dynamics, where using Object? is just as good for subtyping and promotion, but won't hide typo'ed member access. I'd even consider making var x; an "always promote on assignment" variable, which should be a relatively cheap feature to introduce, if we think that's better for users.)
TL;DR: The issue with Future.delayed is not the bound, it's the instantiation-to-bound algorithm used for raw types.
About:

Invoking any member on a dynamic expression - use (expression as dynamic).dynamicCall(); when it is intended.

The problem with taking that literally is that the result will have type dynamic, and now you have to deal with that.
Can you do a dynamic invocation on something that does have type dynamic? If not, doing String name = json["context"]["project"]["name"]; would turn into:
  var name = (((json as dynamic)["context"] as dynamic)["project"] as dynamic)["name"] as String;

Sure, you can use as Map<String, dynamic> instead of as dynamic, and it might be more efficient, but sure won't be shorter.
If you can, then var name = (json as dynamic)["context"]["project"]["name"] as String; will be enough. But that also means that any API that does return dynamic will opt you in, and it'll be hard to tell the difference between returnsDynamic().arglebargle and Map()[42].argleBargele. The former explicitly returns dynamic. The latter is a Map<dynamic, dynamic>, by instantiate to bounds today, which just as explicitly returns dynamic.
(Unless we want to distinguish a verbatim dynamic from a generic bound to dynamic, which is going to get complicated.)
(Example valid only until someone creates an extension type wrapper for JSON. I know I will. :wink:)

In Dart 2.12, the default bound of a generic type variable with no specified bound was changed to Object?. But it didn't change what instantiate to bounds did for type variables with no bound, which is to use dynamic. It really should (IMO) have changed that to instantiating to the (default) bound. I'd love to change instantiate-to-bounds to not insert spurious dynamics.

Yes, this is what I meant, sorry for the imprecision. Instead of, "There are gobs and gobs of generic types (with dynamic as the bound)" I should have said "There are gobs and gobs of generic types (with no specified bound, in which case instantiate-to-bounds uses dynamic.)
Instead of "Alternatively, change the default bound to Object?." I should have said "change the default bound used in instantiate-to-bounds to be Object?."

Can you do a dynamic invocation on something that does have type dynamic?

Nope, that's the goal :D

(Example valid only until someone creates an extension type wrapper for JSON. I know I will. 😉)

Do you mean something like these? https://github.com/flutter/devtools/pulls?q=is%3Apr+extension+is%3Aclosed+author%3Asrawlins Or more generic?

Would it help if the language allowed a type parameter bound to be extends void which means "in the absence of any other context type, instantiate with void"?

@munificent wrote:

[allow] a type parameter bound to be extends void

Interesting! That's actually a kind of "don't use this member when the receiver type is raw" mechanism:
typedef Void = void;

class C<X extends Void> {
  final X x;
  C(this.x);
  void foo() {}
}

void main() {
  C c = C(1);
  c.foo(); // No problem.
  print(c.x); // Error!
}

Yeah, it's basically allowing bounds that let you pick which top type you want if the type parameter is unconstrained. We could also treat the default instantiate-to-bound as Object? and then allow extends dynamic for backwards compatibility in places where a user really does want that to be what inference defaults to.

The problem with taking that literally is that the result will have type dynamic, and now you have to deal with that. Can you do a dynamic invocation on something that does have type dynamic? If not, doing String name = json["context"]["project"]["name"]; would turn into:
  var name = (((json as dynamic)["context"] as dynamic)["project"] as dynamic)["name"] as String;

Sure, you can use as Map<String, dynamic> instead of as dynamic, and it might be more efficient, but sure won't be shorter.

FWIW I would personally be fine with this verbosity, but I agree that many users would find this annoying.
There are also alternative ways to write this today, both approaches that give more opportunity to custom handle inputs with unexpected shape:
  var name = switch(json) {
      {'context': {'project': {'name':String name}}} => name,
      _ => throw FormatException('Expected a Map with <format>'),
  };

Or a terse approach:
var {'context': {'project': {'name': String name}}} = json;

Also folks could just disable the lint for a particular file.
Outside of toy CLI scripts, everyone uses some sort of JSON code generation solution at this point, or a wrapper/helper.


Add Windows VERSIONINFO resource to fips provider dll.

Fixes #18388
This just looks like an omission, as this is added to libcrypto and libssl

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

We also do not seem to generate the version info for legacy.so (if it is produced). That seems like an equivalent bug.

I can see why version info is relevant for shared libraries (that you link your program with on building), but for modules (that you load dynamicaly in runtime)? Not sure i get it...unless it's a packaging thing.

If I remember correctly, it's at least good practice in Windows world.

Okie. But then, as @t8m says, this should be done with all modules we produce.... which also includes engines

This pull request is ready to merge


Regression: Cannot retrieve upload_date or publish_date

By using following script and git bisect start && git bisect good v1.5.1 && git bisect bad main && git bisect run ./check.py, I found that the commit 31dfb19 introduced this regression:
#!/usr/bin/env python3
import sys
from youtubesearchpython import Video

info = Video.getInfo("https://www.youtube.com/watch?v=9eQfJqWLXwY") # example video which is quite new
sys.exit(0 if (info.get("uploadDate") or info.get("publishDate")) is not None else 1)

The commit 31dfb19 was introduced by PR #142, which fixed #134. In the PR, the author stated YouTube suddenly does not give this information in a common way. However older versions of youtubesearchpython can still extract these dates, even on newer videos.
I really don't know how to fix this while keeping the fix for #134, but maybe this information is helpful to someone else

Indeed, I know about that since #142
Problem comes from commit 59ce6b12f0546a1d69b3a6d34500220951a588fc, where I migrated from HTML parsing to InnerTube API. For some reason, the InnerTube API comes without publish_date & upload_date. If we'd use HTML parsing, StreamURLFetcher wouldn't work. I could add it using another request to HTML & parse it, but that's very very unoptimal, so I'm thinking of adding another variable to Video class, for example useHTML, which would default to false.


training input and target

Hi, I have another question regarding the training input and target.
Why is the training input x sliced from the flattened tensor? what I'm getting is that the input x is removing the value from last step of the sequence length while the target y is removing the 1st dimension of obs in the 1st step? shouldn't the training inputs be sliced along the seq_len rather than flattening everything and only taking out 1 token?
In the code below, shouldn't we not reshape and slice it.
joined_discrete = self.discretizer.encode(joined).reshape(-1).astype(np.long)         loss_pad_mask = loss_pad_mask.reshape(-1)         return joined_discrete[:-1], joined_discrete[1:], loss_pad_mask[:-1]

Hi! As this is the code in getitem of the dataset, it only operates on [seq_len, ...] shapes, i.e. unbatched.

@wj210 But that's the point! We discretize each domain such as states, actions, reward, then concatenate it to the one sequence and then flatten it (see architecture figure in the original paper). Thus, our task is to predict next token (not entire next timestamp!).
For example, we will predict from token 0 of trajectory 0 ($s_0^0$) next token 1 of trajectory 0 ($s_0^1$), which is just next state dimension. Actual sequence length for the transformer is seq_len * (state_dim + action_dim + 1 for return to go)

Right, yes i guess i was just confused about that... Thanks again!


Bandwidth limit

Will be really useful if I can set the bandwidth limit as command line option. e.g.
./phantomjs --limit-rate <rate>
Any chance to be added in phantomjs?

+1 for this feature

+1

+1
Chrome already implements an equivalent feature in the mobile view, it would be awesome if it could be added to PhantomJS!

+1 would like to see this feature

+1

+1


Icon in KDE's small panel is oversized and clipped

It would be nice if it autoresized based on the panel's size.
OS: Kubuntu 17.04

Okay, latest version (at least since 1.0.45-20180319160058.429a547345) seems to have fixed the situation.

Okay, it's broken again. At least since 2.3.0-20180709200003.45fcb46147 if not earlier.

This is really really weird. It sometimes starts up with the correct, right size icon, sometimes doesn't. On KUbuntu the icon is just oversized, on KFedora it's just really really blurry.

It seems to be fixed now for a last few updates.

Hmm, just updated to 4.1.0-20190612201656.952fee6c59, and the icon still looks like shown above by @anatolyborodin, so still hardly visible.


Add Github Action for R.

Fix all lintr errors.

I haven't complete the transition to github action yet so no existing test is removed.  The reason for adding R Github action test now is I'm currently working on fixing https://github.com/dmlc/xgboost/issues/5878 , and want to have a clean code base first.  The linter runs correctly on github action.  Also the PR can help with https://github.com/dmlc/xgboost/issues/5796 .

It seems I have to first commit to master branch before I can start running action on PR ...

Codecov Report

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

@@           Coverage Diff           @@
##           master    #5911   +/-   ##
=======================================
  Coverage   78.11%   78.11%
=======================================
  Files          12       12
  Lines        2979     2979
=======================================
  Hits         2327     2327
  Misses        652      652

Continue to review full report at Codecov.

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

@hcho3 Action is running now.


Update js link

Point SDK JS to dapr docs instead of GitHub
Closes #2142

Closing as https://github.com/dapr/docs/pull/2151 was merged


Add tap-mode

Migrated from GitLab: https://gitlab.com/meltano/hub/-/issues/117
Originally created by @tayloramurphy on 2021-09-15 20:56:50

https://github.com/franloza/tap-mode

View 3 previous comments from the original issue on GitLab