new macos rdp client >= 10.7.2 doesn't work over rdpgw

It does look like the connection cannot be upgraded to websocket, but more investigation is required. It works still with 10.7.1
Plausible reason is the following entry from the release notes:
Improved compatibility with third-party network devices and load balancers for workspace download and RD Gateway-based connections.

replicated locally
rdpgw_1     | 2021/12/21 10:38:29 Starting remote desktop gateway server rdpgw_1     | 2021/12/21 10:39:13 http: TLS handshake error from <IP_ADDRESS>:58920: remote error: tls: unknown certificate rdpgw_1     | 2021/12/21 10:39:13 http: TLS handshake error from <IP_ADDRESS>:58918: remote error: tls: unknown certificate rdpgw_1     | 2021/12/21 10:39:13 http: TLS handshake error from <IP_ADDRESS>:58926: remote error: tls: unknown certificate rdpgw_1     | 2021/12/21 10:39:25 Session {33001a58-6ad9-f0f6-a16b-14bbb641c5fe}, false, false rdpgw_1     | 2021/12/21 10:39:25 Opening RDGOUT for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:39:25 Session {33001a58-6ad9-f0f6-a16b-14bbb641c5fe}, true, false rdpgw_1     | 2021/12/21 10:39:25 Opening RDGIN for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:39:25 Legacy handshakeRequest done for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:39:25 Client handshakeRequest from <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:39:25 major: 1, minor: 0, version: 0, ext auth: 2 rdpgw_1     | 2021/12/21 10:39:25 Tunnel create rdpgw_1     | 2021/12/21 10:39:25 Tunnel auth rdpgw_1     | 2021/12/21 10:39:26 Channel create rdpgw_1     | 2021/12/21 10:39:26 Establishing connection to RDP server: xrdp:3389 rdpgw_1     | 2021/12/21 10:39:26 Connection established rdpgw_1     | 2021/12/21 10:39:29 Close channel rdpgw_1     | 2021/12/21 10:39:29 Cannot read message from stream read tcp <IP_ADDRESS>:9443-><IP_ADDRESS>:58940: use of closed network connection rdpgw_1     | 2021/12/21 10:40:32 http: TLS handshake error from <IP_ADDRESS>:58952: remote error: tls: unknown certificate rdpgw_1     | 2021/12/21 10:40:36 Session {1c9833c1-a626-6c5c-c5af-090f32ef9c40}, false, false rdpgw_1     | 2021/12/21 10:40:36 Opening RDGOUT for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:40:36 Session {1c9833c1-a626-6c5c-c5af-090f32ef9c40}, true, false rdpgw_1     | 2021/12/21 10:40:36 Opening RDGIN for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:40:36 Legacy handshakeRequest done for client <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:40:36 Client handshakeRequest from <IP_ADDRESS> rdpgw_1     | 2021/12/21 10:40:36 major: 1, minor: 0, version: 0, ext auth: 2 rdpgw_1     | 2021/12/21 10:40:36 Tunnel create rdpgw_1     | 2021/12/21 10:40:36 Tunnel auth rdpgw_1     | 2021/12/21 10:40:36 Channel create rdpgw_1     | 2021/12/21 10:40:36 Establishing connection to RDP server: xrdp:3389 rdpgw_1     | 2021/12/21 10:40:36 Connection established rdpgw_1     | 2021/12/21 10:40:38 Close channel rdpgw_1     | 2021/12/21 10:40:38 Cannot read message from stream read tcp <IP_ADDRESS>:9443-><IP_ADDRESS>:58956: use of closed network connection

well, it might be bit different locally, here the request hits xrdp

[20211221-17:40:55] [INFO ] Socket 11: AF_INET connection received from <IP_ADDRESS> port 41296
[20211221-17:40:55] [DEBUG] Closed socket 11 (AF_INET <IP_ADDRESS>:3389)
[20211221-17:40:55] [DEBUG] Closed socket 10 (AF_INET <IP_ADDRESS>:3389)
[20211221-17:40:55] [DEBUG] item ini_version, value 1
[20211221-17:40:55] [DEBUG] item fork, value true
[20211221-17:40:55] [DEBUG] item port, value 3389
[20211221-17:40:55] [DEBUG] item tcp_nodelay, value true
[20211221-17:40:55] [DEBUG] item tcp_keepalive, value true
[20211221-17:40:55] [DEBUG] item security_layer, value rdp
[20211221-17:40:55] [DEBUG] item crypt_level, value low
[20211221-17:40:55] [DEBUG] item certificate, value
[20211221-17:40:55] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20211221-17:40:55] [DEBUG] item key_file, value
[20211221-17:40:55] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20211221-17:40:55] [DEBUG] item ssl_protocols, value TLSv1, TLSv1.1, TLSv1.2
[20211221-17:40:55] [DEBUG] TLSv1.2 enabled
[20211221-17:40:55] [DEBUG] TLSv1.1 enabled
[20211221-17:40:55] [DEBUG] TLSv1 enabled
[20211221-17:40:55] [DEBUG] item autorun, value
[20211221-17:40:55] [DEBUG] item allow_channels, value true
[20211221-17:40:55] [DEBUG] item allow_multimon, value false
[20211221-17:40:55] [INFO ] Multi monitor server support disabled
[20211221-17:40:55] [DEBUG] item bitmap_cache, value true
[20211221-17:40:55] [DEBUG] item bitmap_compression, value true
[20211221-17:40:55] [DEBUG] item bulk_compression, value true
[20211221-17:40:55] [DEBUG] item max_bpp, value 16
[20211221-17:40:55] [DEBUG] item new_cursors, value false
[20211221-17:40:55] [DEBUG] item use_fastpath, value both
[20211221-17:40:55] [DEBUG] item blue, value 009cb5
[20211221-17:40:55] [DEBUG] item grey, value dedede
[20211221-17:40:55] [DEBUG] item ls_top_window_bg_color, value 009cb5
[20211221-17:40:55] [DEBUG] item ls_width, value 350
[20211221-17:40:55] [DEBUG] item ls_height, value 430
[20211221-17:40:55] [DEBUG] item ls_bg_color, value dedede
[20211221-17:40:55] [DEBUG] item ls_logo_filename, value
[20211221-17:40:55] [DEBUG] item ls_logo_x_pos, value 55
[20211221-17:40:55] [DEBUG] item ls_logo_y_pos, value 50
[20211221-17:40:55] [DEBUG] item ls_label_x_pos, value 30
[20211221-17:40:55] [DEBUG] item ls_label_width, value 60
[20211221-17:40:55] [DEBUG] item ls_input_x_pos, value 110
[20211221-17:40:55] [DEBUG] item ls_input_width, value 210
[20211221-17:40:55] [DEBUG] item ls_input_y_pos, value 220
[20211221-17:40:55] [DEBUG] item ls_btn_ok_x_pos, value 142
[20211221-17:40:55] [DEBUG] item ls_btn_ok_y_pos, value 370
[20211221-17:40:55] [DEBUG] item ls_btn_ok_width, value 85
[20211221-17:40:55] [DEBUG] item ls_btn_ok_height, value 30
[20211221-17:40:55] [DEBUG] item ls_btn_cancel_x_pos, value 237
[20211221-17:40:55] [DEBUG] item ls_btn_cancel_y_pos, value 370
[20211221-17:40:55] [DEBUG] item ls_btn_cancel_width, value 85
[20211221-17:40:55] [DEBUG] item ls_btn_cancel_height, value 30
[20211221-17:40:55] [INFO ] Security protocol: configured [RDP], requested [SSL|HYBRID|HYBRID_EX|RDP], selected [RDP]
[20211221-17:40:55] [DEBUG] Using RDP security, and reading the server configuration
[20211221-17:40:55] [DEBUG] [MCS Connection Sequence] receive connection request

tls log file details
CLIENT_HANDSHAKE_TRAFFIC_SECRET bac5b68ec069db4917052fb3c0dfdb1c5ed24d604f40c184174c2129cbc84494 50f0819872cdead0253bfe0603049466471f74c9b522aaff9179ae336d72256a
SERVER_HANDSHAKE_TRAFFIC_SECRET bac5b68ec069db4917052fb3c0dfdb1c5ed24d604f40c184174c2129cbc84494 6b728eea56794cdb0b43059e1f513410bd3aa42284e48a54e0660ee6d3e460ea
CLIENT_HANDSHAKE_TRAFFIC_SECRET f50b0dfe931fbbc11ec18e95200b6dc712175ae97eccbffb9095e12350a74e94 233757d5700d37680e9da81618ed767f4d0a59a843c88f695cf0eb3280575631
SERVER_HANDSHAKE_TRAFFIC_SECRET f50b0dfe931fbbc11ec18e95200b6dc712175ae97eccbffb9095e12350a74e94 6fc0e0c6a8a1e0dc757a22964f2088a4e40151182dad3acd4b2bb52ed46c0984
CLIENT_TRAFFIC_SECRET_0 f50b0dfe931fbbc11ec18e95200b6dc712175ae97eccbffb9095e12350a74e94 7fbde33e2c44ec55697fa252a94b508fb5852247f393a2359f1609348f3a188c
SERVER_TRAFFIC_SECRET_0 f50b0dfe931fbbc11ec18e95200b6dc712175ae97eccbffb9095e12350a74e94 5cc74975a3d16979a9420fd733339187ee2327ce7d2a62d402c9130056a4da9e
CLIENT_TRAFFIC_SECRET_0 bac5b68ec069db4917052fb3c0dfdb1c5ed24d604f40c184174c2129cbc84494 c44c374023c330ca5fc8e665de13bfe9813a83a61d2f777297947a8ecc0df9a3
SERVER_TRAFFIC_SECRET_0 bac5b68ec069db4917052fb3c0dfdb1c5ed24d604f40c184174c2129cbc84494 09e32301e2b9477f724d062a7994d977cdea922850d47fe4a4a7570d2379858f
CLIENT_HANDSHAKE_TRAFFIC_SECRET 3d10ddf95cc97400b1fffbaef8119b826e57fcb7e9b5814a07e9706b4d5eab80 7870b21751d4e174ad6976b769422954745ba83f4733e9bfeb33fa6c85baef27
SERVER_HANDSHAKE_TRAFFIC_SECRET 3d10ddf95cc97400b1fffbaef8119b826e57fcb7e9b5814a07e9706b4d5eab80 e1ec211dc0184f2764afbe54dc43775e30426d8c860f979a8206f5d0828a2db8
CLIENT_TRAFFIC_SECRET_0 3d10ddf95cc97400b1fffbaef8119b826e57fcb7e9b5814a07e9706b4d5eab80 27505e004db5c169c4cd039b2b698653e01425a6da104ea7af9f5bd0ad703d53
SERVER_TRAFFIC_SECRET_0 3d10ddf95cc97400b1fffbaef8119b826e57fcb7e9b5814a07e9706b4d5eab80 47ade0f7acc541637a908fb5cc4846ec36b6ede31c32a65e311637a1573333e4
CLIENT_HANDSHAKE_TRAFFIC_SECRET d763019d1aa93d45664b5586212ef70c8f1595e0adb86b3c1bcc87ae6914bd43 7f3f02919f93de2b44ace71f0cef35bbd9713d7a4fed4dabf1578860352cc410
SERVER_HANDSHAKE_TRAFFIC_SECRET d763019d1aa93d45664b5586212ef70c8f1595e0adb86b3c1bcc87ae6914bd43 33d51b82c498fc0887fc96e32b5e5dd6356f6ae6529dbd05104b4888242adaee
CLIENT_TRAFFIC_SECRET_0 d763019d1aa93d45664b5586212ef70c8f1595e0adb86b3c1bcc87ae6914bd43 6c8df6a398e5d12f66dd804b59a7d876b1f9316665264095607f8b5d595f2095
SERVER_TRAFFIC_SECRET_0 d763019d1aa93d45664b5586212ef70c8f1595e0adb86b3c1bcc87ae6914bd43 dd61b8456a405e3bd487c97dda0edf05c788dc3bc15fb7ed46e727bd241c8847
CLIENT_HANDSHAKE_TRAFFIC_SECRET 390bc524e7793c8c38bf902459ffd0ed04125006c73d0dfb7b4b114b5eda4b51 78e32c5ea0ff6cd7f6ce1281d428889ec3ca6098133caea4a744bdad91813175
SERVER_HANDSHAKE_TRAFFIC_SECRET 390bc524e7793c8c38bf902459ffd0ed04125006c73d0dfb7b4b114b5eda4b51 d3fffc85590ce3abf01250e234938476696a4423eb964ab2cd8962e8fb64f88b
CLIENT_TRAFFIC_SECRET_0 390bc524e7793c8c38bf902459ffd0ed04125006c73d0dfb7b4b114b5eda4b51 b2fd73063712120bd65683600617fa9f2b2eb093616b3130080a4edf03f4ec5a
SERVER_TRAFFIC_SECRET_0 390bc524e7793c8c38bf902459ffd0ed04125006c73d0dfb7b4b114b5eda4b51 8921ff71c2cab6c7fa6576be9c99a5795f309e36dd82161df922ec6f7efb4d15
CLIENT_RANDOM f1f1d6e937a4d49e7d65e99fe91eb06340da59fba6b564a00db64a170a22a9c6 ffb9b4e053fd66ccff0b81cbe7334f7f9a3da185c604ecd3f29113d97d294f190eb45eb1f208079a597519d1e18b65ac
CLIENT_RANDOM 79bde08e0decbe4cf4ce84b2779d6a82b491da734b661ac7565fe43afbeca2ad 1a6e21ddeb94261aec11f3bfe3cebe364c7603142a5399a789331ee36f1b50df607dd4265241a2a8a6574e6e1ee66a6

extract from the pcap @bolkedebruin

added some extra logging, it seems we are getting lost somewhere here
rdpgw_1     | 2021/12/23 10:10:59 Establishing connection to RDP server: xrdp:3389
rdpgw_1     | 2021/12/23 10:10:59 Connection established
rdpgw_1     | 2021/12/23 10:10:59 Entering channel response
rdpgw_1     | 2021/12/23 10:10:59 Leaving channel response
rdpgw_1     | 2021/12/23 10:10:59 Message pt: 10, sz: 29
rdpgw_1     | 2021/12/23 10:10:59 Data sent
rdpgw_1     | 2021/12/23 10:10:59 Writing data to stream
rdpgw_1     | 2021/12/23 10:10:59 Data packets received server side
rdpgw_1     | 2021/12/23 10:11:01 Message pt: 16, sz: 12
rdpgw_1     | 2021/12/23 10:11:01 Close channel
rdpgw_1     | 2021/12/23 10:11:01 Message pt: 0, sz: 0

connection seems to be closed after sending some data

@bolkedebruin it seems we are not the only one, we should probably wait for them to fix so it works over websockets or maybe there will be some param to set
https://techcommunity.microsoft.com/t5/azure-virtual-desktop-feedback/msrdc-10-7-2/idi-p/3042147

@krisss85 if you are capturing can you show what RDG_OUT_DATA is showing? Should be above RDG_IN_DATA somewhere.

I had a look myself. As per tech community post, the 10.7.2 client (and .3) do not ask for a websocket connection (e.g. there is no "upgrade" in the protocol asked for). This should still work for the docker version (however the legacy connection also seems to fail) but on kubernetes it doesn't and requires websockets.

@bolkedebruin the new beta client 10.7.4 resolved the issue, so I believe we can close this one as we are affected by the change on RDP client from MS
https://install.appcenter.ms/orgs/rdmacios-k2vy/apps/microsoft-remote-desktop-for-mac/distribution_groups/all-users-of-microsoft-remote-desktop-for-mac


Unable to change back to scheduled temperature (auto mode)

Description
When changing to thermostat mode to ECO, there is no way to going back to the scheduled temperature.
Steps to reproduce

A thermostat is in automatic mode following the weekly schedule at 22 degrees.
We enable the eco mode calling set_temperature_mode(device, 14.0, MAX_DEVICE_MODE_MANUAL)
We return to auto mode calling set_mode(device, MAX_DEVICE_MODE_AUTOMATIC)
The temperature should be back to 22 degrees but instead is keep at ECO temperature (14 degrees) until next scheduled change.

Resolved

Resolved


deal with the context - it should be able to pass different than app/this

utils.js#L70
utils.js#L112
hooks context

closing this, should be resolved and published as 0.1.0


IntegrityError raised if promo_price field is left blank

Current Behavior
The default value for the promo_price is 0 but the user can delete this value, that is, they can create a null value. The field cannot be null so an IntegrityError is raised.
Not sure why this happens since the field is set to blank=True.
Possible Solutions

Allow the field to be nullable, i.e, null=True
Override form_valid method and insert 0 if the user left the field blank

The second option is probably the better one as we don't actually want a null value in the database - do we?
Per the Django docs:

blank=True can be used with fields having null=False, but this will require implementing clean() on the model in order to programmatically supply any missing values.


feat: support amax dynamo converter

Description
Support amax dynamo converter.

Function Schema:
torch.ops.aten.amax.default

Original PyTorch API:
https://pytorch.org/docs/stable/generated/torch.amax.html

Fixes issue #2095
Type of change

New feature (non-breaking change which adds functionality)
This change requires a documentation update

Checklist:

[x] My code follows the style guidelines of this project (You can use the linters)
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas and hacks
[ ] I have made corresponding changes to the documentation
[x] I have added tests to verify my fix or my feature
[x] New and existing unit tests pass locally with my changes
[x] I have added the relevant labels to my PR in so that relevant reviewers are notified

Converter looks great, and the testing is very robust! Made a few small comments

Thanks for your review! I've solved all the issues and pushed.

It looks like failed on C++ tests that's nothing to do with this commit?

I reran that C++ test here

Passed! please let me know if anything need to fix in this PR.


Tutorial how to test with firebase

Hi this is a feature request not an issue.
Right now the Widget test secion of https://flutter.io/testing/ is kinda poor and does not give developers better examples of how to "mock" integration services.
Being firebase one of the most used altogether with flutter it would be nice to have a Firebase testing related tutorial/sample.
I know this is kind of testing101 with dart, but must of us (this is my personal belief) are coming to flutter  without any dart knowledge.
A clear example of this (and what I'm currently battling) is how to test components that rely on FirebaseAnimatedList
(Sorry if the issue does not follow the guidelines, I looked for feature requests and couldnt find)

@Panthro
The issue at https://github.com/flutter/flutter/issues/15245 has been closed and moved here. Future collaboration on this issue will be done here.

I have an authentication package that provides mocks for platform channels to allow running unit tests using flutter test. Integration tests with flutter drive do not need to mock platform channels as those run on a device platform normally.
It provides essentials like logging in, logging out, creating an account, requesting a password reset email. firebase_auth, google_sign_in and facebook_login plugins are supported. Not all messages are (yet) supported, nor are all authentication methods available through firebase, though I am happy to help add such functionality to the package if there is interest.
The meat of what is needed to support testing is done in the MockXXXChannel sources in the package.
I have not published it on pub.dev just yet, as I would like to get some external feedback first.
The source code can be found here: https://gitlab.com/playscale-free/authenticator
There is also a similar package for firebase storage in the works that follows the same pattern.

I've published mocks for Firestore, Firebase Storage and Firebase Auth (with Google Sign In) at:

https://pub.dev/packages/cloud_firestore_mocks
https://pub.dev/packages/firebase_storage_mocks
https://pub.dev/packages/firebase_auth_mocks
https://pub.dev/packages/google_sign_in_mocks

Here's how to test that Firestore's demo app renders messages using cloud_firestore_mocks:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:cloud_firestore_mocks/cloud_firestore_mocks.dart';
import 'package:firestore_example/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('shows messages', (WidgetTester tester) async {
    // Populate the mock database.
    final firestore = MockFirestoreInstance();
    await firestore.collection('messages').add({
      'message': 'Hello world!',
      'created_at': FieldValue.serverTimestamp(),
    });

    // Render the widget.
    await tester.pumpWidget(MaterialApp(
        title: 'Firestore Example', home: MyHomePage(firestore: firestore)));
    // Let the snapshots stream fire a snapshot.
    await tester.idle();
    // Re-render.
    await tester.pump();
    // // Verify the output.
    expect(find.text('Hello world!'), findsOneWidget);
    expect(find.text('Message 1 of 1'), findsOneWidget);
  });
}

You can find the full example at https://github.com/atn832/cloud_firestore_mocks/tree/master/example.

@atn832  I find it really difficult to test SignInWithEmailAndPassword using your Mock classes, I think it is because AuthResult that I don't know how to mock it and get a valid result and then a valid user after, can you please provide an illustration of that ?

So far firebase_auth_mocks only supports signInWithCredential. I've filed https://github.com/atn832/firebase_auth_mocks/issues/5 to support signInWithEmailAndPassword. I'll implement it some time this week

So far firebase_auth_mocks only supports signInWithCredential. I've filed atn832/firebase_auth_mocks#5 to support signInWithEmailAndPassword. I'll implement it some time this week

I can not wait to see your work, thank you for your help.

I've implemented it and just published an update.
In the future, feel free to post issues directly to the relevant repository so that people subscribed to this thread don't get alerts:

https://github.com/atn832/cloud_firestore_mocks
https://github.com/atn832/firebase_auth_mocks
https://github.com/atn832/google_sign_in_mocks
https://github.com/atn832/firebase_storage_mocks


create user settings

TODO:

[ ] Profile Picture Upload
[ ] Change Username (Supporter)
[ ] Change Password
[ ] User Pages
[ ] Socials (Bancho Profile?, Twitter, Twitch, Instagram, Other?)

@Varkaria design this when you have a chance!
Thank you! I will do the backend work 👍🏼


New package: XDG v0.1.0

Registering package: XDG
Repository: https://github.com/mehalter/XDG.jl
Created by: @mehalter
Version: v0.1.0
Commit: b1b5ded8b04171cb02279abb6458963b6f0f0493
Reviewed by: @mehalter
Reference: https://github.com/mehalter/XDG.jl/commit/b1b5ded8b04171cb02279abb6458963b6f0f0493#commitcomment-38318329

This is fixed in #12377


Use werkzeug.secure_filename instead of clean_path?

https://github.com/icubam/icubam/blob/71fcceea76a465e44289c84f7b9d9be038e39621/icubam/www/handlers/upload_csv.py#L9
Would it be better to use werkzeug.safe_file_name (either by importing it or by copying the source -- it seems self-contained) rather than rolling our own sanitisation code ?

Yes, agree that roll-your-own is not a good idea (although I'm /pretty/ confident).  I didn't want to include all of werkzeug just for the sanitation code but license-permitting we can copy/paste it.  Will look at this.

I had a look at secure_file_name and I'm pretty confident we're doing a superset of their cleaning.  In the end we only allow alphanumeric characters into the string anyways, anything happening before is mainly to avoid butchering anything unintentionally weird.

Even better I've outright removed using the filename.


error CS0103: The name 'Properties' does not exist in the current context

I'm building a .Net 6 C# WPF application, when trying to access Properties, as described on this page, I get a CS0103

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

ID: 8bf63644-510d-8160-566f-af4b6a34e8bd
Version Independent ID: 397693f7-4bdf-69a9-d5dc-bc2c50c4517d
Content: How To: Read Settings at Run Time With C# - Windows Forms .NET Framework
Content Source: dotnet-desktop-guide/framework/winforms/advanced/how-to-read-settings-at-run-time-with-csharp.md
Product: dotnet-framework
Technology: dotnet-winforms
GitHub Login: @adegeo
Microsoft Alias: adegeo

Hi @paul1923
It seems that the latest templates for .NET 6/7/8 don't include the settings file, you'll need to add it yourself.

In the Solution Explorer window of Visual Studio, create a folder in your project named Properties
Right click on Properties >Add > New Item
In the search box on the top right, put in settings
Most likely the last item in the results will be Settings File, select this
Set the name of the file to Settings.settings and press the Add button.

Now you'll have the settings file. Open it and add your settings.
This should fix your problem; I'll close this issue. Let me know if you need more help.


[Bug]: > Return code from the decrypter was non-0 (error), skipping!

What happened?
Hi. Some video files aren't getting decrypted, what can I do about this? Thanks.

Expected Result
The videos should get decrypted in audio and video format and then mixed together.
Branch
master/main
What operating systems are you seeing the problem on?
Windows
Relevant log output
No response
Other information
No response

I am also getting the same issue.
As the thread is still open, I will keep checking it and once it is fixed, will try again.

What happened?
Hi. Some video files aren't getting decrypted, what can I do about this? Thanks.
Expected Result
The videos should get decrypted in audio and video format and then mixed together.
Branch
master/main
What operating systems are you seeing the problem on?
Windows
Relevant log output
No response
Other information
No response

Please try the feat-shaka branch. this branch uses a different program for decryption that is much more stable, the current one used in the master branch has issues with languages other than English. You will need to get shaka-packager executable for your system (windows by the looks of it) and put it in your system path
Shaka-Packager: https://github.com/google/shaka-packager/releases/latest
Feat-Shaka Branch: https://github.com/Puyodead1/udemy-downloader/tree/feat-shaka

Thanks, now is working normally.

Thanks, now is working normally.


Adds support for building separate armhf artifacts

Currently if using a separate compiler prefix, it would get published to
the arm classifier. This modifies so there is now an armhf classifier
that is used if a separate compiler prefix is used.

I was actually just thinking about that too. I think I'd rather change this to specifically allow another property that would set the postfix. A little more work for the dependencies, but not too bad.

@333fred What do you think of the update? It now has a separate property to choose a prefix.


[BUG] JSQLParser Version : RDBMS : parse timeout, a simply sql, even set timeout to 3 minutes.

Always check against the Latest SNAPSHOT of JSQLParser and the Syntax Diagram
Failing SQL Feature:

parse timeout，just a common sql , haved set timeout argument to 3 minutes.
Example: WITH ROLLUP can't be parsed

SQL Example:

Simplified Query Example, focusing on the failing feature

INSERT INTO
C01_INDIV_TELBK_CUST_INFO_H_T2 (PARTY_ID, PARTY_SIGN_STAT_CD, SIGN_TM, CLOSE_TM)
SELECT
A1.PARTY_ID,
A1.PARTY_SIGN_STAT_CD,
CAST(
(
CASE
WHEN A1.SIGN_TM IS NULL
OR A1.SIGN_TM = '' THEN CAST(
CAST(
CAST('ATkkIVQJZm' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
WHEN CHARACTERS (TRIM(A1.SIGN_TM)) <> 19
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) > '1'
OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) > '3'
OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 4) = '0000'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '00'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '00'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) = '0' THEN CAST(
CAST(
CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
ELSE (
CASE
WHEN (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 29
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '02'
)
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 31
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <> '02'
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <= 12
)
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) = 31
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')
) THEN CAST(A1.SIGN_TM AS TIMESTAMP)
WHEN SUBSTR (TRIM(A1.SIGN_TM), 6, 2) || SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '0229'
AND (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 400 = 0
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 4 = 0
AND CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 100 <> 0
)
) THEN CAST(A1.SIGN_TM AS TIMESTAMP)
ELSE CAST(
CAST(
CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
END
)
END
) AS DATE FORMAT 'YYYYMMDD'
),
CAST(
(
CASE
WHEN A1.CLOSE_TM IS NULL
OR A1.CLOSE_TM = '' THEN CAST(
CAST(
CAST('ATkkIVQJZm' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
WHEN CHARACTERS (TRIM(A1.CLOSE_TM)) <> 19
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) > '1'
OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) > '3'
OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) = '0000'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '00'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '00'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) = '0' THEN CAST(
CAST(
CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
ELSE (
CASE
WHEN (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 29
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '02'
)
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 31
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <> '02'
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <= 12
)
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) = 31
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')
) THEN CAST(A1.CLOSE_TM AS TIMESTAMP)
WHEN SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) || SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '0229'
AND (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 400 = 0
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 4 = 0
AND CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 100 <> 0
)
) THEN CAST(A1.CLOSE_TM AS TIMESTAMP)
ELSE CAST(
CAST(
CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE
) || ' 00:00:00' AS TIMESTAMP
)
END
)
END
) AS DATE FORMAT 'YYYYMMDD'
)
FROM
T01_PTY_SIGN_H_T1 A1
WHERE
A1.PARTY_SIGN_TYPE_CD = 'CD_021'
AND A1.ST_DT <= CAST('LDBCGtCIyo' AS DATE FORMAT 'YYYYMMDD')
AND A1.END_DT > CAST('LDBCGtCIyo' AS DATE FORMAT 'YYYYMMDD')
GROUP BY
1,
2,
3,
4
```
Software Information:

JSqlParser 4.8
Database  Teradata

Tips:
Please write in English and avoid Screenshots (as we can't copy and paste content from it).
Try your example online with the latest JSQLParser and share the link in the error report.
Do provide Links or References to the specific Grammar and Syntax you are trying to use.

The query fails after 52 seconds:
CAST( expression AS DATE FORMAT char_literal) is not supported.

void testIssue1983() throws JSQLParserException {
        String sqlStr = "INSERT INTO\n" +
                "C01_INDIV_TELBK_CUST_INFO_H_T2 (PARTY_ID, PARTY_SIGN_STAT_CD, SIGN_TM, CLOSE_TM)\n" +
                "SELECT\n" +
                "A1.PARTY_ID,\n" +
                "A1.PARTY_SIGN_STAT_CD,\n" +
                "CAST(\n" +
                "(\n" +
                "CASE\n" +
                "WHEN A1.SIGN_TM IS NULL\n" +
                "OR A1.SIGN_TM = '' THEN CAST(\n" +
                "CAST(\n" +
                "CAST('ATkkIVQJZm' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "WHEN CHARACTERS (TRIM(A1.SIGN_TM)) <> 19\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) > '1'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) > '3'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 1, 4) = '0000'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '00'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '00'\n" +
                "OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) = '0' THEN CAST(\n" +
                "CAST(\n" +
                "CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "ELSE (\n" +
                "CASE\n" +
                "WHEN (\n" +
                "CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 29\n" +
                "AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '02'\n" +
                ")\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 31\n" +
                "AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <> '02'\n" +
                "AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <= 12\n" +
                ")\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) = 31\n" +
                "AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')\n" +
                ") THEN CAST(A1.SIGN_TM AS TIMESTAMP)\n" +
                "WHEN SUBSTR (TRIM(A1.SIGN_TM), 6, 2) || SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '0229'\n" +
                "AND (\n" +
                "CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 400 = 0\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 4 = 0\n" +
                "AND CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 100 <> 0\n" +
                ")\n" +
                ") THEN CAST(A1.SIGN_TM AS TIMESTAMP)\n" +
                "ELSE CAST(\n" +
                "CAST(\n" +
                "CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "END\n" +
                ")\n" +
                "END\n" +
                ") AS DATE FORMAT 'YYYYMMDD'\n" +
                "),\n" +
                "CAST(\n" +
                "(\n" +
                "CASE\n" +
                "WHEN A1.CLOSE_TM IS NULL\n" +
                "OR A1.CLOSE_TM = '' THEN CAST(\n" +
                "CAST(\n" +
                "CAST('ATkkIVQJZm' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "WHEN CHARACTERS (TRIM(A1.CLOSE_TM)) <> 19\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) > '1'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) > '3'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) < '0'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) > '9'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) = '0000'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '00'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '00'\n" +
                "OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) = '0' THEN CAST(\n" +
                "CAST(\n" +
                "CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "ELSE (\n" +
                "CASE\n" +
                "WHEN (\n" +
                "CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 29\n" +
                "AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '02'\n" +
                ")\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 31\n" +
                "AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <> '02'\n" +
                "AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <= 12\n" +
                ")\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) = 31\n" +
                "AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')\n" +
                ") THEN CAST(A1.CLOSE_TM AS TIMESTAMP)\n" +
                "WHEN SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) || SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '0229'\n" +
                "AND (\n" +
                "CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 400 = 0\n" +
                "OR (\n" +
                "CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 4 = 0\n" +
                "AND CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 100 <> 0\n" +
                ")\n" +
                ") THEN CAST(A1.CLOSE_TM AS TIMESTAMP)\n" +
                "ELSE CAST(\n" +
                "CAST(\n" +
                "CAST('cDXtwdFyky' AS DATE FORMAT 'YYYYMMDD') AS DATE\n" +
                ") || ' 00:00:00' AS TIMESTAMP\n" +
                ")\n" +
                "END\n" +
                ")\n" +
                "END\n" +
                ") AS DATE FORMAT 'YYYYMMDD'\n" +
                ")\n" +
                "FROM\n" +
                "T01_PTY_SIGN_H_T1 A1\n" +
                "WHERE\n" +
                "A1.PARTY_SIGN_TYPE_CD = 'CD_021'\n" +
                "AND A1.ST_DT <= CAST('LDBCGtCIyo' AS DATE FORMAT 'YYYYMMDD')\n" +
                "AND A1.END_DT > CAST('LDBCGtCIyo' AS DATE FORMAT 'YYYYMMDD')\n" +
                "GROUP BY\n" +
                "1,\n" +
                "2,\n" +
                "3,\n" +
                "4";
        CCJSqlParserUtil.parse(sqlStr, parser -> parser
                .withSquareBracketQuotation(false)
                .withAllowComplexParsing(true)
                .withTimeOut(60000));
    }

Seems to be Google BigQuery.

I have implemented Google BigQuery CAST with FORMAT clause and in the result the query does not fail anymore after 1 minute.
Instead it literally runs forever, likely because of the way how you call FUNCTION (which depends on expensive semantic LOOKAHEAD amplifying when nested deeply).
I can only encourage you to write more reasonable SQL. e.g. instead of calling SUBSTR (TRIM(A1.CLOSE_TM), x) a million times, you could just Split() your string into characters and then access this array.
Unfortunately I don't have the time to dig deeper into this particular statement right now. You can try to remove logical blocks until it parses normally in order to isolate the particular logical block where it starts hanging. Once we get this analysis, we can certainly do something about in the Grammar.
Good luck.

Thanks. This is old code, I  have to paser it.  I change cast expression manually, delete format keywords. The timeout exception is remain.  If I want to pasrse this query successfully, How many timeout I should set？
INSERT INTO
C01_INDIV_TELBK_CUST_INFO_H_T2 (PARTY_ID, PARTY_SIGN_STAT_CD, SIGN_TM, CLOSE_TM)
SELECT
A1.PARTY_ID,
A1.PARTY_SIGN_STAT_CD,
CAST(
(
CASE
WHEN A1.SIGN_TM IS NULL
OR A1.SIGN_TM = '' THEN CAST(
CAST(CAST('UsGgJQoxuH' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
WHEN CHARACTERS (TRIM(A1.SIGN_TM)) <> 19
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 2, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 3, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 4, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 1) > '1'
OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 7, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 1) > '3'
OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) < '0'
OR SUBSTR (TRIM(A1.SIGN_TM), 10, 1) > '9'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 4) = '0000'
OR SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '00'
OR SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '00'
OR SUBSTR (TRIM(A1.SIGN_TM), 1, 1) = '0' THEN CAST(
CAST(CAST('airHppDlix' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
ELSE (
CASE
WHEN (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 29
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) = '02'
)
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) < 31
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <> '02'
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) <= 12
)
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 9, 2) AS INTEGER) = 31
AND SUBSTR (TRIM(A1.SIGN_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')
) THEN CAST(A1.SIGN_TM AS TIMESTAMP)
WHEN SUBSTR (TRIM(A1.SIGN_TM), 6, 2) || SUBSTR (TRIM(A1.SIGN_TM), 9, 2) = '0229'
AND (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 400 = 0
OR (
CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 4 = 0
AND CAST(SUBSTR (TRIM(A1.SIGN_TM), 1, 4) AS INTEGER) MOD 100 <> 0
)
) THEN CAST(A1.SIGN_TM AS TIMESTAMP)
ELSE CAST(
CAST(CAST('airHppDlix' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
END
)
END
) AS DATE
),
CAST(
(
CASE
WHEN A1.CLOSE_TM IS NULL
OR A1.CLOSE_TM = '' THEN CAST(
CAST(CAST('UsGgJQoxuH' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
WHEN CHARACTERS (TRIM(A1.CLOSE_TM)) <> 19
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 2, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 3, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 4, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 1) > '1'
OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 7, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 1) > '3'
OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) < '0'
OR SUBSTR (TRIM(A1.CLOSE_TM), 10, 1) > '9'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) = '0000'
OR SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '00'
OR SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '00'
OR SUBSTR (TRIM(A1.CLOSE_TM), 1, 1) = '0' THEN CAST(
CAST(CAST('airHppDlix' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
ELSE (
CASE
WHEN (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 29
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) = '02'
)
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) < 31
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <> '02'
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) <= 12
)
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) AS INTEGER) = 31
AND SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) IN ('01', '03', '05', '07', '08', '10', '12')
) THEN CAST(A1.CLOSE_TM AS TIMESTAMP)
WHEN SUBSTR (TRIM(A1.CLOSE_TM), 6, 2) || SUBSTR (TRIM(A1.CLOSE_TM), 9, 2) = '0229'
AND (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 400 = 0
OR (
CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 4 = 0
AND CAST(SUBSTR (TRIM(A1.CLOSE_TM), 1, 4) AS INTEGER) MOD 100 <> 0
)
) THEN CAST(A1.CLOSE_TM AS TIMESTAMP)
ELSE CAST(
CAST(CAST('airHppDlix' AS DATE) AS DATE) || ' 00:00:00' AS TIMESTAMP
)
END
)
END
) AS DATE
)
FROM
T01_PTY_SIGN_H_T1 A1
WHERE
A1.PARTY_SIGN_TYPE_CD = 'CD_021'
AND A1.ST_DT <= CAST('oXKthfFlJH' AS DATE)
AND A1.END_DT > CAST('oXKthfFlJH' AS DATE)
GROUP BY
1,
2,
3,
4

I really don't know, you can only try out by yourself.


When choosing from closely spaced points, the maximum scale is not the maximum.

https://user-images.githubusercontent.com/25708359/191522624-152ac85a-df21-4fba-9b4d-4e0c0062ce5d.mp4

See #433

No, it's about something else.
When Every Door specifies which object you clicked on, the maximum zoom decreases. Stop at the first frames of the video, and compare with the following.

Done in 2.1.


In virtual environment populated with flit install -s (editable), python3 -m pip freeze raises AssertionError on MacOS

When I populate a virtual environment with flit install -s, executing python3 -m pip freeze raises Pip's AssertionError.
I described this yesterday on Stackoverflow, then filed a bug report for Pip with detailed instructions on how to reproduce the problem on MacOS 10.15.7 and Ubuntu 20.04.
Since then, however, I have noticed that pip freeze works in virtual environments populated using Flit 2.3.0 but not in environments populating using Flit 3.0.0.
Is this possibly an issue for Flit (and not for Pip)?

@tombaker probably related to https://github.com/takluyver/flit/pull/335, but I think the fix should be done in pip.

@sbidoul This has been fixed in pip, so I guess you could close this issue now - thanks!


Humble v1.5.0 Release

This PR targets 1.5.0. This will likely be the last major humble release and should pave the way for ROS index binaries. Following PRs will aim at rolling.

Targeted release 14/04/2024
Much improved integrability
Much improved testing
Better demos

Contributors

https://github.com/lbr-stack/fri/pull/22: fredRocs
https://github.com/lbr-stack/fri/pull/23: peterMitrano
https://github.com/lbr-stack/fri/pull/18: bowangFromMars
FRI 2.x testing: liver121888
#151: Nicolai-98

Related PRs

#158
#155
#151
#161
#170

Issues Tracker

#9 (following 1.5.0)
#163
#165
#172
#159

Desired Changes

[x] Black linting
[x] Fix link to docs
[x] Velocity limit checks in impedance control mode
[x] Matrix testing against multiple FRIs
[x] Add ${ROS_DISTRO} to install instruction (would require source, which renders it redundant)
[x] Introduce node composition in launch files to be done later
Blockers:

ros2_control via composition: https://github.com/ros-controls/ros2_control/issues/1261
rviz2 via composition: https://github.com/ros2/rviz/issues/1114

[x] Add development tools dependency https://github.com/lbr-stack/lbr_fri_ros2_stack/issues/145
[x] ros2_control_node: Read robot description from robot state publisher
[x] Use an event handler for robot state publisher https://github.com/ros-controls/ros2_control/issues/1262
[x] Add tests

[x] lbr_fri_msgs
[x] lbr_fri_ros2 interface tests

[x] De-couple interfaces by client command mode
[ ] Update launch files

[x] Remove redundant nones from launch
[ ] De-couple launch files for simplified custom setups

[ ] Add separate launch files for real / sim as no feature parity (would require Gazebo plugins)
[ ] Fix force torque broadcaster rviz config for simulation
[ ] Make separate moveit launch default

[x] Consider moving all launch mixins to lbr_bringup, or into launch_mixins, see https://github.com/mhubii/demo_launch
[ ] Add configurable static transform at launch, i.e. world -> lbr/world
[x] Remove app.launch.py from demos in favor for ros2_control variant (⚠ breaking change)

[ ] Update documentation for v1.4.x

[ ] Refer https://lbr-fri-ros2-stack-doc.readthedocs.io/en/latest/index.html
[x] Delete branches at https://github.com/lbr-stack/lbr_stack_doc in favor of tags
[ ] Add an architecture chart to highlight relation to ros2_control in readme

[x] Update parameter source for gazebo_ros2_control package in lbr.gazebo.xacro
[x] Add coloring a la https://github.com/ros-controls/ros2_control/blob/e149646d3f2595f269cfa4e1cd0681abde89ee69/controller_manager/controller_manager/spawner.py#L45
[x] De-couple the async client into position / torque / wrench
[x] Update Docker for new sources
[x] lbr_fri_msgs -> lbr_fri_idl (⚠ breaking change)
[ ] Build docs on PR: https://docs.readthedocs.io/en/stable/pull-requests.html

https://x.com/jdorfman/status/1655582823082782721?s=20

Hey! v1.5.0 doesn't seem to be able to build due to the lbr_demos related packages. I modify the related package.xml, CMakeList.txt, setup.py to the correct name and the other issue for python packages pops out though c++ packages are resolved. How do i solve this problem?
colcon build --packages-select lbr_demos_joint_trajectory_controller_python
Starting >>> lbr_demos_joint_trajectory_controller_python
--- stderr: lbr_demos_joint_trajectory_controller_python
error: can't copy 'resource/lbr_demos_joint_trajectory_controller_python': doesn't exist or not a regular file
Failed   <<< lbr_demos_joint_trajectory_controller_python [0.56s, exited with code 1]
colcon build --packages-select lbr_demos_forward_command_controllers_python
Starting >>> lbr_demos_forward_command_controllers_python
--- stderr: lbr_demos_forward_command_controllers_python
error: can't copy 'resource/lbr_demos_forward_command_controllers_python': doesn't exist or not a regular file
Failed   <<< lbr_demos_forward_command_controllers_python [0.55s, exited with code 1]
Summary: 0 packages finished [0.75s]
1 package failed: lbr_demos_forward_command_controllers_python
1 package had stderr output: lbr_demos_forward_command_controllers_python
colcon build --packages-select lbr_demos_admittance_control_python
Starting >>> lbr_demos_admittance_control_python
--- stderr: lbr_demos_admittance_control_python
error: can't copy 'resource/lbr_demos_admittance_control_python': doesn't exist or not a regular file
Failed   <<< lbr_demos_admittance_control_python [0.55s, exited with code 1]
Summary: 0 packages finished [0.75s]
1 package failed: lbr_demos_admittance_control_python
1 package had stderr output: lbr_demos_admittance_control_python

hi @shengyangzhuang , yes sorry, this is a little under construction

hi @shengyangzhuang this PR now lives on the humble branch. If you find time, please re-install drivers following
https://github.com/lbr-stack/lbr_fri_ros2_stack#quick-start
there was an issue with the previous version that can trigger an unexpected motion. This issue is now fully fixed.


Update readme 2022

I wanted to update it before releasing Volto 15.

@stevepiercy Thanks for watching over my crappy English Grammar :P

Just a few English syntax and grammar things, and a few MyST syntax things.
I might suggest simplifying the README by moving content from it into the docs, and linking to the docs. It's a pretty long readme.

What sections would you move to the docs? I guess all is about quick tips and directions for newbies, so the README contains all the necessary to quick start and make themselves an idea of what to expect, and try Plone 6 quickly.
I'm open to it, but I think we could do it later, after Volto 15 is released.

I think a hint to the ecosystem of add-ons via a link to "Awesome Volto" https://github.com/collective/awesome-volto would be beneficial.

I think a hint to the ecosystem of add-ons via a link to "Awesome Volto" https://github.com/collective/awesome-volto would be beneficial.

@ksuess I included it already:
https://github.com/plone/volto/pull/3131/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R31

What sections would you move to the docs? I guess all is about quick tips and directions for newbies, so the README contains all the necessary to quick start and make themselves an idea of what to expect, and try Plone 6 quickly.

Anything that already exists in the docs should be removed and linked to. Keep it DRY.
Other than that, if the part becomes too "document-ish", then it probably belongs in the docs. That's a subjective call.
It might be best to create a Quick Start Guide.

I'm open to it, but I think we could do it later, after Volto 15 is released.

I totally agree. Shall I make a new issue to track it?

hehe the logo inverted in dark mode:

How cool is that? :P

What did the Volto Marketing Team have to say about inverting the logo colors? 😜
That is nifty.

hehe the logo inverted in dark mode:

How cool is that? :P

What did the Volto Marketing Team have to say about inverting the logo colors? 😜
That is nifty.

😂


Teamcard glowup

Describe your changes
Making some changes according to figma

Issue or discord link

Testing/validation

Checklist before requesting a review (leave this PR as draft if any part of this list is not done.)

[ ] I have commented my code in hard-to understand areas.
[ ] I have made corresponding changes to README or wiki.
[ ] For front-end changes, I have updated the corresponding English translations.
[ ] I have run yarn run mini-ci locally to validate format and lint.
[ ] If I have added a new library or app, I have updated the deployment scripts to ignore changes as needed

Good catch.


Include the networkID when converting an address from str

Issue summary

When the string address is valid and contains a valid network id and protocol type Protocol::ID, the parsed address is being constructed using the default network id instead of the one included in the string being parsed.
for example:
let address = Address::from_str("f01")
then, calling the to_string() method will give:
t01 and not the initial f01
which I think is not correct, unless there are some assumptions or restrictions I do not know about?
The network_id should be included, so something like this would be better?:
           if protocol == Protocol::ID {
               if raw.len() > 20 {
                   // 20 is max u64 as string
                   return Err(Error::InvalidLength);
               }
               let id = raw.parse::<u64>()?;
               let mut address = Address::new_id(id);
               address.set_network(network);
               return Ok(address);
             }

Other information and links

ah, yeah, this was intentionally left out before because the network prefix was never serialized as bytes so there was never any need to store it (the prefix would still be lost whenever an address is serialized as bytes with the current protocol).
I was just leaving to see if they change to serialize the network prefix to bytes before I made this change, but I assume this might be final.
I just have to think about what is the best way to set this up, since it would be equally as confusing to retain the prefix on stringifying but not on bytes serialization, with also the negative of keeping more data in memory with every address.

I understand It makes sense.

Would you just need a string encode function with a network parameter,

about the go-like encode function, no I do not need that, the current stringifying function includes it.

or is there a reason for storing this network prefix with the address?

actually, the network id is already part of the address:
#[derive(PartialEq, Eq, Clone, Debug, Hash, Copy)]
 pub struct Address {
        network: Network,
        payload: Payload,
 }

what we need is to be able to get the "exact" address from the string and compare them, although the id is not part of it when serialize to bytes, but it is part of the string being parsed. I see that the id is being included in the other cases where the protocol is different than ID, so I think to keep consistency, we might just include/update it when the protocol ID is used? does it make sense?

actually, the network id is already part of the address:

Ah, right, I completely forgot I added the network enum, was a while ago. Yeah, I'll update this

actually, the network id is already part of the address:

Honestly been so long since I made that change I had a brain lapse there. Fixed in #611

wow that was fast. Thank you !!


how we get BDK key of magtek

we have magtek device and company provided document for generating key is key component- conveyance form which have key component details, and i want to know how we generate this BDK key with these information.

First read DUKPT in ANSI X9.24 part 1.
https://en.wikipedia.org/wiki/Derived_unique_key_per_transaction


BOAT_RESULT http2SubmitRequest(http2IntfContext *context)    bug

The http2SubmitRequest function return type is BOAT_RESULT, but the result at the end of the function is modified by nghttp2 related functions, which is not the expected type.

After the certification check, there is no problem


Integrate PNG

[x] WASM PNG Quant #8
[ ] Integrate PNG Quant

After that, PNG has a slightly different flow to the other encoders, as it has 'crushers', and sometimes there's a benefit of passing the image through multiple crushers.

[ ] WASM two crushers #7 #9
[ ] Integrate 'crush' as a checkbox to PNG encoders, which passes the output through PNG crushers.

The main codec may be "Browser PNG" or "PNG Quant" (#8), but then zero or more crushers (#7 #9) can be applied afterwards.
We need to investigate whether the crushers can be run in parallel, or whether there's a benefit to running them in series. I have a feeling that Zopfli PNG is best run at the end, after other crushers. I guess this depends on which crushers work on PNG data, and which work on raw image data.

[ ] Stretch goal: Allow each crusher to be enabled/disabled.
[ ] Stretch goal: Integrate options for each crusher.
[ ] Stretch goal: Show savings provided by each crusher.

Visualising this in the UI is interesting. It'd be nice to show the savings from the main codec, followed by the savings from each crusher. The crushers themselves have options, which dictate how much time they'll spend crushing the PNG.

I’d vote for punting that to v2. For v1 we should definitely ship a PNG encoder, but maybe with a predefined set of crushers? If we have time left before CDS, we can pull that into v1, but I am not sure the architecture and UI can be done in time. My 2¢

@surma I've edited the OP. Does this sound more reasonable?

sg!

I'll split this into seperate issues


Adding process to the Procfile does not create it

Creating an application with the following Procfile:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

Pushing it, then adding another process, thus making up the Procfile:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
rates: bash -c "while true; do bundle exec rake currency_reactor:update_cross_rates; sleep 43200; done"

... and pushing again does not create another process, deis info still reports only web.
Is there any specific way to add a process for an already existing application?

Here's the push log:
$ g push deis master
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 392 bytes | 0 bytes/s, done.

       Using grape 0.7.0
       Your bundle is complete!
       Gems in the groups development and test were not installed.
       It was installed into ./vendor/bundle
       Bundle completed (1.36s)
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL

-----> Discovering process types
       Procfile declares types -> web, rates
       Default process types for Ruby -> rake, console, web
-----> Compiled slug size is 72M

-----> Building Docker image
remote: Sending build context to Docker daemon 124.8 MB
remote: build context to Docker daemon
Step 0 : FROM deis/slugrunner
 ---> f612601cf1e5
Step 1 : RUN mkdir -p /app
 ---> Using cache
 ---> c180d66a879b
Step 2 : WORKDIR /app
 ---> Using cache
 ---> 22d7f1855f0c
Step 3 : ENTRYPOINT /runner/init
 ---> Using cache
 ---> 83fb5b7635bd
Step 4 : ADD slug.tgz /app
 ---> 64d37d23505d
Removing intermediate container f758ba0a903c
Step 5 : ENV GIT_SHA 910b66872edf4c1037ffd47339df1a721a29e78f
 ---> Running in 23d4b888f7af
 ---> bb327a643943
Removing intermediate container 23d4b888f7af
Successfully built bb327a643943
-----> Pushing image to private registry

-----> Launching...
       done, twenty-universe:v18 deployed to Deis

       http://twenty-universe.applications.com

       To learn more, use `deis help` or visit http://deis.io

To ssh://git@deis.applications.com:2222/twenty-universe.git
   8b017ee..910b668  master -> master

It clearly states that the process is being detected in the Procfile.

I've tried recreating the app, and it happens just the same. Only web process gets created.
Is it the expected behavior? If so, then what does http://docs.deis.io/en/latest/using_deis/process-types/#declaring-process-types talk about?

This is expected behaviour. You need to manually scale the process up via deis scale rates=1, though an argument could be made that the process should be scaled up for you.

The issue is that there's nothing to scale:
$ deis scale rates=1
Scaling processes... but first, coffee!
400 BAD REQUEST
Container type rates does not exist in application

And:
$ deis info
=== twenty-universe Application
{
  "updated": "2015-01-02T08:49:38UTC",
  "uuid": "75908216-a58d-423c-8f73-b9a16591fa35",
  "created": "2015-01-02T06:48:52UTC",
  "url": "twenty-universe.applications.com",
  "owner": "sky",
  "id": "twenty-universe",
  "structure": {
    "web": 1
  }
}

=== twenty-universe Processes

--- web:
web.1 up (v18)

=== twenty-universe Domains
...

Even though:
$ cat Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
rates: bash -c "while true; do bundle exec rake currency_reactor:update_cross_rates; sleep 43200; done"

@SkyWriter That certainly doesn't sound like intended behavior. Out of curiosity, what version of Deis is this? Procfile handling had a rewrite in v1.1.0, so if you're running anything older, you'll probably want to upgrade to the latest release.

I've installed it using deisctl v1.1.1:
$ deisctl --version
1.1.1

I think it's v1.1.1, so quite recent.


Analysis regression of prefer_const_constructors in version 3.2.0 in relation to generic constructors

Consider, the following program and analysis options files:
// main.dart
class A<T> {
  const A();
}

class B<T> {
  final A<T> Function() fn;

  const B(this.fn);
}

B<T> fn<T>() {
  return B(A<T>.new); // analyzer shows info message, when it shouldn't
}

# analysis_options.yaml
linter:
    rules:
        prefer_const_constructors: true

Running dart analyze returns the response:
  info • main.dart:12:10 • Use 'const' with the constructor to improve performance. Try adding the 'const' keyword to the constructor invocation. •
          prefer_const_constructors

However, if we add const before B(A<T>.new), the analyzer produces an error, since T is not static.
dart --version
Dart SDK version: 3.2.0 (stable) (Tue Nov 14 18:26:59 2023 +0000) on "macos_x64"
The program is correctly analyzed in version 3.1.

@kallentu - may this be related to any constant evaluation changes that you did recently?


"show all labels" 500 error on api/get_labels

The error is "QuerySet not JSON-serializable", should be easy fix

Fixed in PR #168 & merged with release/20210825


Updated contribution guidelines

Coverage remained the same at 99.835% when pulling 5796adbc9d72fa28390b9999f2a0f075adbb85c3 on contribution into 5c7e79a1ebccd7002533d7dbea3272c8234e45c5 on master.


Fixed typo

Pull Request Test Coverage Report for Build 216

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

Totals

Change from base Build 212:
0.0%

Covered Lines:
1204

Relevant Lines:
4284

💛  - Coveralls

Pull Request Test Coverage Report for Build 216

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

Totals

Change from base Build 212:
0.0%

Covered Lines:
1204

Relevant Lines:
4284

💛  - Coveralls

Thanks @jamesachamp !


choice to render task URL

something like:
{task_url}
    if (settings.taskPostfix.includes("{task_url}")) {
      const formattedUrl = "- [task link](https://todoist.com/app/task/" + task.taskId + ")";
      ;
      return formattedUrl;
    }

  function renderTaskPostfix(task) {
    let regex = /{task_finish_date}|{task_finish_datetime}|{current_date}|{current_datetime}|{task_url}/g;
    return settings.taskPostfix.replace(regex, renderTaskFinishDate(task));
  }

then each task would point to: https://todoist.com/app/task/<task_id>
Purpose would be have a link to original completed task (since todoist search is a pain to deal with

let me know if you have any question 🙂 Not sure if there is anything else to consider or a better way to accomplish this.
I do feel that this would be very helpful though!

Hi @erauner12
Looks like it could be a valuable feature and it is not difficult to implement.


Implement Infrastructure DevOPS Pipeline

Description
As a technical operator, I'd like to implement the unified pipeline for the azure devops workflow to manage the provisioning of the Terraform Infrastructure Template
Acceptance Criteria
Reference: [Done-Done Checklist] (https://github.com/Microsoft/code-with-engineering-playbook/blob/master/Engineering/BestPractices/DoneDone.md)

[x] Should include a yaml definition that bootstraps the build steps specified in the infrastructure technical design guidance.
[x] Should include release stages in a Azure DevOPS instance which satisfy the requirements of the infrastructure technical design guidance.
[x] Should verify that there's a model high-level definition IAC private git repository which acts as the Azure DevOPS pipeline trigger.
[x] Should verify that Terraform unit and integration tests pass in the pipeline's build definition.
[x] Should verify that this AzDO pipeline can successfully deploy the az-isolated-service-single-region template across all three release stages.
[x] Should verify that rejecting a release gate results into a build rejection and has no impact to resources running in that environment. This should be validated across all three stages.
[x] Should verify that parallel environment releases are disabled.
[x] Should verify that a service principal is created in each azure environment following a completed release.
[x] Should verify devops flow and test results with our enterprise customer.

Also, here are a few points that need to be addressed:

There needs to be a private HLD repository in Github which contains the target terraform template;
We'll need to verify that the configured git repository in the pipeline can also support Github Enterprise;

Resources
Technical Design Document
Pipeline Specifications

Addressed in #215


Add net6.0/net7.0 targets

The architecture of my app looks like this: maui app (android/ios) -> UI library -> Core library

maui app project holds the platform specific code (required to start the app)
UI library holds the UI code (pages, views)
Core library holds the business logic code (view models, services, models...)

Now that this plugin has a unified API, I'd like to call it from my Core library, which is pure net7.0.
However, the current build targets of this plugin only allows it to be called from platform specific code.
So, could you please add net6.0/net7.0 targets?
Thanks

Hi @tranb3r, maybe I will consider it for the next release, among other things.
Just out of curiosity, did you share your UI and core projects with some other projects? If not, then I don't understand why you don't use the standard Maui project organization, you can totally have the business logic and the UI separated within the same Maui project now.

For many reasons:

this design is inherited from a xamarin forms application
it's a big app, so it makes sense to split the code in several assemblies
this architecture enforces good practices: I'm sure the UI and the business logic stuff are not mixed
when I modify the business logic or the UI, I don't want to rebuild the whole app
I'm obfuscating the core dll, not the whole app
the core assembly is unit-tested, and it's easier to do when it's separated from the app project

Hi @tranb3r, after careful consideration, I decided to not move forward with this issue. This plugin is dependent on .Net MAUI and for that reason, it targets net6/7.0-android, net6/7.0-ios and net6/7.0-windows.
I highly recommend you create an implementation of this plugin on your MAUI project and use an interface via dependency injection into your Core project in order to use it correctly.
Best regards.

@FabriBertani
I respect your choice.
However, could you please explain a bit more your decision?
Most MAUI plugins support net6.0 or netstandard2.0, allowing them to be installed in a pure cross-platform project. To name just a few: CommunityToolkit.Maui, Plugin.Firebase, Plugin.Fingerprint, Plugin.InAppBilling, Sharpnado.Tabs.Maui...
So, what is specific to Plugin.Maui.ScreenSecurity, that would prevent you from doing it?

@tranb3r I made some time in my schedule and added net6 and net7 targets.
Will be available in the next release.
netstandard will not be supported.
Xamarin.Forms will not be supported due to we are close to EOL.


[vimeo] Original format no longer detected.

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
No response
Provide a description that is worded well enough to be understood
Example URL:
https://vimeo.com/412529232
When logged in, I am able to download this video's original format in my browser with Vimeo's internal download option. Until very recently, the same was possible with yt-dlp when passing the logged-in cookies, but now it doesn't appear to work anymore (for me at least...).
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vUFs', '--cookies-from-browser', 'chrome', 'https://vimeo.com/412529232']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp-nightly-builds [37c233562] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-8.1-6.3.9600-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 4.3, ffprobe 2022-07-24-git-39a538f430-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, curl_cffi-0.5.10, mutagen-1.47.0, requests-2.32.3, sqlite3-3.35.5, urllib3-2.2.2, websockets-12.0
[debug] Proxy map: {}
Extracting cookies from chrome
[debug] Extracting cookies from: "C:\Users\Redacted\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies"
[debug] Found local state file at "C:\Users\Redacted\AppData\Local\Google\Chrome\User Data\Local State"
Extracted 2013 cookies from chrome
[debug] cookie version breakdown: {'v10': 2013, 'other': 0, 'unencrypted': 0}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Loaded 1829 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp-nightly-builds)
[vimeo] Extracting URL: https://vimeo.com/412529232
[vimeo] 412529232: Downloading webpage
[vimeo] 412529232: Downloading JSON metadata
[vimeo] 412529232: Downloading JSON metadata
[vimeo] 412529232: Downloading jwt token
[vimeo] 412529232: Downloading JSON metadata
[vimeo] 412529232: Downloading akfire_interconnect_quic m3u8 information
[vimeo] 412529232: Downloading fastly_skyfire m3u8 information
[vimeo] 412529232: Downloading akfire_interconnect_quic MPD information
WARNING: [vimeo] 412529232: Failed to parse XML: not well-formed (invalid token): line 1, column 0
[vimeo] 412529232: Downloading fastly_skyfire MPD information
WARNING: [vimeo] 412529232: Failed to parse XML: not well-formed (invalid token): line 1, column 0
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, lang, vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, id
[info] Available formats for 412529232:
ID                                               EXT RESOLUTION FPS |   FILESIZE    TBR PROTO | VCODEC         VBR ACODEC     MORE INFO
---------------------------------------------------------------------------------------------------------------------------------------
hls-akfire_interconnect_quic-audio-high-Original mp4 audio only     |                   m3u8  | audio only         unknown    Original
hls-akfire_interconnect_quic-audio-low-Original  mp4 audio only     |                   m3u8  | audio only         unknown    Original
hls-fastly_skyfire-audio-high-Original           mp4 audio only     |                   m3u8  | audio only         unknown    Original
hls-fastly_skyfire-audio-low-Original            mp4 audio only     |                   m3u8  | audio only         unknown    Original
hls-akfire_interconnect_quic-336                 mp4 316x240     24 | ~161.46MiB   336k m3u8  | avc1.640015   336k video only
hls-fastly_skyfire-336                           mp4 316x240     24 | ~161.46MiB   336k m3u8  | avc1.640015   336k video only
hls-akfire_interconnect_quic-553                 mp4 474x360     24 | ~265.73MiB   553k m3u8  | avc1.64001E   553k video only
hls-fastly_skyfire-553                           mp4 474x360     24 | ~265.73MiB   553k m3u8  | avc1.64001E   553k video only
hls-akfire_interconnect_quic-1366                mp4 712x540     24 | ~656.41MiB  1366k m3u8  | avc1.64001F  1366k video only
hls-fastly_skyfire-1366                          mp4 712x540     24 | ~656.41MiB  1366k m3u8  | avc1.64001F  1366k video only
hls-akfire_interconnect_quic-2653                mp4 948x720     24 | ~  1.24GiB  2653k m3u8  | avc1.640020  2653k video only
hls-fastly_skyfire-2653                          mp4 948x720     24 | ~  1.24GiB  2653k m3u8  | avc1.640020  2653k video only
hls-akfire_interconnect_quic-5452                mp4 1422x1080   24 | ~  2.56GiB  5452k m3u8  | avc1.640028  5452k video only
hls-fastly_skyfire-5452                          mp4 1422x1080   24 | ~  2.56GiB  5452k m3u8  | avc1.640028  5452k video only
hls-akfire_interconnect_quic-12486               mp4 1896x1440   24 | ~  5.86GiB 12486k m3u8  | avc1.640032 12486k video only
hls-fastly_skyfire-12486                         mp4 1896x1440   24 | ~  5.86GiB 12486k m3u8  | avc1.640032 12486k video only
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 412529232: Downloading 1 format(s): hls-fastly_skyfire-12486+hls-fastly_skyfire-audio-low-Original

I can't reproduce the issue. I still get the Original format when passing cookies:
$ yt-dlp --cookies-from-browser firefox::dlp "https://vimeo.com/412529232"
[vimeo] Extracting URL: https://vimeo.com/412529232
[vimeo] 412529232: Downloading webpage
Extracting cookies from firefox
Extracted 70 cookies from firefox
[vimeo] 412529232: Downloading JSON metadata
[vimeo] 412529232: Downloading JSON metadata
[vimeo] 412529232: Checking Original video URL
[vimeo] 412529232: Downloading akfire_interconnect_quic m3u8 information
[vimeo] 412529232: Downloading fastly_skyfire m3u8 information
[vimeo] 412529232: Downloading akfire_interconnect_quic MPD information
WARNING: [vimeo] 412529232: Failed to parse XML: not well-formed (invalid token): line 1, column 0
[vimeo] 412529232: Downloading fastly_skyfire MPD information
WARNING: [vimeo] 412529232: Failed to parse XML: not well-formed (invalid token): line 1, column 0
[info] Available formats for 412529232:
ID                                               EXT RESOLUTION FPS │   FILESIZE    TBR PROTO │ VCODEC         VBR ACODEC     MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
hls-akfire_interconnect_quic-audio-high-Original mp4 audio only     │                   m3u8  │ audio only         unknown    Original
hls-akfire_interconnect_quic-audio-low-Original  mp4 audio only     │                   m3u8  │ audio only         unknown    Original
hls-fastly_skyfire-audio-high-Original           mp4 audio only     │                   m3u8  │ audio only         unknown    Original
hls-fastly_skyfire-audio-low-Original            mp4 audio only     │                   m3u8  │ audio only         unknown    Original
hls-akfire_interconnect_quic-336                 mp4 316x240     24 │ ~161.46MiB   336k m3u8  │ avc1.640015   336k video only
hls-fastly_skyfire-336                           mp4 316x240     24 │ ~161.46MiB   336k m3u8  │ avc1.640015   336k video only
hls-akfire_interconnect_quic-553                 mp4 474x360     24 │ ~265.73MiB   553k m3u8  │ avc1.64001E   553k video only
hls-fastly_skyfire-553                           mp4 474x360     24 │ ~265.73MiB   553k m3u8  │ avc1.64001E   553k video only
hls-akfire_interconnect_quic-1366                mp4 712x540     24 │ ~656.41MiB  1366k m3u8  │ avc1.64001F  1366k video only
hls-fastly_skyfire-1366                          mp4 712x540     24 │ ~656.41MiB  1366k m3u8  │ avc1.64001F  1366k video only
hls-akfire_interconnect_quic-2653                mp4 948x720     24 │ ~  1.24GiB  2653k m3u8  │ avc1.640020  2653k video only
hls-fastly_skyfire-2653                          mp4 948x720     24 │ ~  1.24GiB  2653k m3u8  │ avc1.640020  2653k video only
hls-akfire_interconnect_quic-5452                mp4 1422x1080   24 │ ~  2.56GiB  5452k m3u8  │ avc1.640028  5452k video only
hls-fastly_skyfire-5452                          mp4 1422x1080   24 │ ~  2.56GiB  5452k m3u8  │ avc1.640028  5452k video only
hls-akfire_interconnect_quic-12486               mp4 1896x1440   24 │ ~  5.86GiB 12486k m3u8  │ avc1.640032 12486k video only
hls-fastly_skyfire-12486                         mp4 1896x1440   24 │ ~  5.86GiB 12486k m3u8  │ avc1.640032 12486k video only
Original                                         mov 2048x1556      │   74.95GiB        https │ unknown            unknown

Okay, after restarting my browser, the format is accessible again.  So it had to be some issue with the cookie extraction? Odd enough, but I guess this can be closed.

hi @clusterized
so are u able to download vimeo videos?


Strip-prefix

Codecov Report

Merging #122 (d39be6f) into main (0918738) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #122      +/-   ##
==========================================
+ Coverage   89.46%   89.48%   +0.02%
==========================================
  Files          70       70
  Lines        3939     3947       +8
==========================================
+ Hits         3524     3532       +8
  Misses        298      298
  Partials      117      117

Flag
Coverage Δ

unittests
89.48% <100.00%> (+0.02%)
:arrow_up:

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

Impacted Files
Coverage Δ

diff/config.go
100.00% <ø> (ø)

diff/endpoints_diff.go
86.81% <100.00%> (ø)

diff/path_items_diff.go
100.00% <100.00%> (ø)

diff/paths_diff.go
92.50% <100.00%> (ø)

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Continuous helmrepo reconcile

It looks like this problem has been around for a long time. The subscription controller reconciles only if there is some change in the source helm repository (index.yaml). So if you delete a helmrelease but there is no change in the helm repository, the deleted helmrelease will not be recreated.

https://github.com/open-cluster-management/backlog/issues/3336


Add kazakh translations

Problem
Added kazakh translations
Solution
Generated them
Acceptance Criteria
link to: https://github.com/django-import-export/django-import-export/pull/1060

Coverage remained the same at 96.348% when pulling 429af3f784a87fceae88b141dcf0b70074dda03d on MuslimBeibytuly:master into 91b927f4a6b010a38776adc6be8091c664785284 on django-import-export:master.

@andrewgy8 what should I do to have it merged?:D I want to point this repository instead of fork in requirements of my projects:)

@MuslimBeibytuly I will merge this once Travis gives the green light.

@andrewgy8 perfect, thank you!:)

@andrewgy8 ready:)


modify example error about hpa of autoscaling/v2beta2 HorizontalPodAu…

HorizontalPodAutoscaler.spec.metrics.pods.target has no attibute of targetAverageValue
KIND:     HorizontalPodAutoscaler
VERSION:  autoscaling/v2beta2
kubectl explain --api-version=autoscaling/v2beta2 HorizontalPodAutoscaler.spec.metrics.pods.target
FIELDS:
   averageUtilization   <integer>
     averageUtilization is the target value of the average of the resource
     metric across all relevant pods, represented as a percentage of the
     requested value of the resource for the pods. Currently only valid for
     Resource metric source type

   averageValue <string>
     averageValue is the target value of the average of the metric across all
     relevant pods (as a quantity)

   type <string> -required-
     type represents whether the metric type is Utilization, Value, or
     AverageValue

   value        <string>
     value is the target value of the metric (as a quantity).

fixed #16759

/assign @kbarnard10

/assign @sftim


Fixed the typo in the readme

Please review the changes and merge the pull request. Thank you

Thank you!


overlay.enable doesn't seem to work

@benvonh
I added overlay.enable to my config but I still receive an error and need to set it manually

can you be any more descriptive.
What error are you getting and what's your full config?


Enhancements to DNS Probe

Actually validate the value of the dns probe top see if the Answer section contains non zero data and resolved something - add the resolved metric to indicate this
allow user to pass the record type as a config option

I have signed it

@dhananjaysathe
Sorry, we didn't review and merge this PR, but I think it's obsolete now. DNS probe supports the query_type field:
https://github.com/google/cloudprober/blob/3e2968bcfa401c3345af90d95518a1a098fe87ff/probes/dns/proto/config.proto#L6
and we also have the validation step now:
https://github.com/google/cloudprober/blob/3e2968bcfa401c3345af90d95518a1a098fe87ff/probes/dns/dns.go#L140


Readme: fix typo

CXX and CC also need to be different to run in docker (without path).

Closing in favor of #6


Dalek tests fail with command line runner

>npm install dalek-cli

>node_modules\.bin\dalek.cmd -- "test/v2/test_custom-widget.js"

><EMAIL_ADDRESS>dalek E:\p\gratipay\grtp.co
> dalek "test/v2/test_custom-widget.js"

Running tests
Running Browser: PhantomJS
OS: windows Vista 32bit
Browser Version: 1.9.8

RUNNING TEST - "v2 custom-widget: readystatus should be ready"
> OPEN http://localhost:9537/test/v2/custom-widget.html
> WAITFOR Interrupted by timeout
x ATTRIBUTE
0 EXPECTED: ready
0 FOUND: Element does not exist in cache
0 MESSAGE: readystatus should be ready
x TEST - "v2 custom-widget: readystatus should be ready" FAILED

RUNNING TEST - "v2 custom-widget: it should fill the standard values"
> OPEN http://localhost:9537/test/v2/custom-widget.html
> WAITFOR Interrupted by timeout
* TEXT teamslug should not be empty
* TEXT receiving should not be empty
* 2 Assertions run
* TEST - "v2 custom-widget: it should fill the standard values" SUCCEEDED

 2/3 assertions passed. Elapsed Time: 15.51 sec
>> ERROR: Error: read ECONNRESET
>> ERROR: Error: read ECONNRESET
>> ERROR: Error: socket hang up
>> ERROR: Error: socket hang up

The difference with "grunt test" here is that grunt spins up http://localhost:9537 independently before running tests:
grunt.registerTask('test', ['jshint', 'connect', 'dalek']);

We need to get rid of Dalek. Moved to #176.


Autoincrement index

WIP
Fixing issues:

https://github.com/owncloud/ocis-accounts/issues/62
https://github.com/owncloud/ocis-accounts/issues/77
https://github.com/owncloud/ocis-ocs/issues/45
https://github.com/owncloud/ocis-ocs/issues/46
https://github.com/owncloud/ocis-ocs/issues/51

Somehow the cs3 index integration tests are failing on drone (can't connect to metadata storage), but succeeding locally.

Most API and webUI tests are failing, because we have an issue in the index regarding the provisioning API. When trying to delete an account via OCS endpoint, this happens:
2020-10-15T22:25:42Z ERR could not remove account from index error="github.com.owncloud.ocis.accounts.pkg.proto.v0.Account with DisplayName= not found" accountId=user1 id=user1 service=accounts

Still nearly all API and webUI test pipelines failing. The regexes for listing users are not splitting on and and or, so this results in reva trying to find files with query parts still in it, instead of just the account name. E.g.:
2020-10-16T08:14:13Z ERR datasvc: file not found error="error: not found: /srv/app/tmp/ocis/storage/users/data/index.cs3/unique.github.com.owncloud.ocis.accounts.pkg.proto.v0.Account.OnPremisesSamAccountName/user1' or mail eq 'user1" pkg=rhttp service=storage traceid=7440e6b0f3b0b438b8910e5a6d8e7dcb

Notice that there is ' or mail eq 'user1 in the path of the file that is to be loaded. That is because we match queries from start to end instead of splitting on and and or first. Fixing regexes next...

please no force push 🙏

This PR had a successful CI run, except from a known random failure because of a phoenix logout issue in CI, here: https://drone.owncloud.com/owncloud/ocis/888


Question: Alias for vim -c 'VORAXConnect...' Always Cancels

I have created an alias for vim -c 'VORAXConnect...' but for some reason the connection starts but is cancelled and I don't know why.  Any idea?  Is there a good way to open vim and have vorax  automatically connected?
Thank you

Hello,
Sorry for this late reply. I couldn't reproduce it on my test setup. I've tried with the following command:
vim -c 'VORAXConnect system/oracle@localhost:1525/mydb'

Maybe you can provide some additional details....


Path error

"Failed to spawn command processing-java. Make sure processing-java is installed and on your PATH"
How do I confirm that processing-java is installed? And what exactly do I do to put it on my PATH?
Thanks,
Brandon

1


Reverting config parsing changes to preserve .istanbul.yml functionality

Commit fb4dea9502e9784303fe48a4f4add3bde28a90ba introduced a backwards-incompatible change, breaking the expectations that values set in the .istanbul.yml config file would be used if the corresponding parameter wasn't set to override it.  For instance, running with<EMAIL_ADDRESS>with this .istanbul.yml (notice the non-default values):
verbose: true
instrumentation:
    root: ./app
    default-excludes: false
    include-all-sources: true

and the following command (executed via npm):
babel-node $(npm bin)/isparta cover $(npm bin)/_mocha --compilers js:babel/register -- --recursive

Would result with the following output during coverage:
verbose: true
instrumentation:
    root: ./app
    default-excludes: false
    include-all-sources: true
    ...

However, each version since the aforementioned change disregards certain values in the .istanbul.yaml, specifically root, include-all-sources, and default-excludes, resulting in the following:
verbose: true
instrumentation:
    root: .
    default-excludes: true
    include-all-sources: false
    ...

Turns out it has to do with how the arguments are being passed to Istanbul's configuration functions.  For instance, mergeObjects overwrites template values with whatever is being passed in as the override.  You'll notice this works for some of the other default parameter values set up here because they're empty arrays (which mergeObjects discards in favor of what has been loaded from the config file).
It's probably worth revisiting how to make this configuration more robust, but I wanted to offer a quick solution to reestablish this functionality quickly, as I (and perhaps others) are going to have to stay pinned to 3.1.0 for the time being.

Fixes #84

Alright

Published in isparta 3.5.3 :rocket:


ngRepeat:dupes Error

I am running into an error when the Dashboard or ListView is loaded:
Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater:
entry in entries track by entry.identifierValue, Duplicate key: undefined, Duplicate value:
{"_entityName":"addresses","values":
{"city":"Atlanta","state":"GA","country":"USA","postalCode":"30326","createdOn":null,"updatedOn":null,
"version":null,"route":"addresses","reqParams":null,"restangularized":true,"fromServer":true,
"parentResource":null,"restangularCollection":false},"listValues":{}}

I am trying to programmatically load the entities into ng-admin but I run into this same issue when I revert to hard-coding the entity in-question as well.
The data return looks like this:
[
  {
    "id": 8,
    "line1": "1234 Main St.",
    "line2": null,
    "city": "Marietta ",
    "state": "GA",
    "country": "USA",
    "postalCode": "30066",
    "createdOn": null,
    "updatedOn": null,
    "version": null
  },
  {
    "id": 9,
    "line1": "555 Market Drive",
    "line2": null,
    "city": "Atlanta",
    "state": "GA",
    "country": "USA",
    "postalCode": "30326",
    "createdOn": null,
    "updatedOn": null,
    "version": null
  }
]

This was working last week, when it was hard-coded, so I'm not sure what has happened.
Any suggestions would be appreciated. It feels like I am missing something but the views do load, only without data.
Cheers.

Not sure, but it may be related to introduction of ui-select. Can you post your related configuration? I'll try to reproduce it on my side.

add the identifier to entity e.g. your id is an unique,so,try to do like below
nga.entity('buyer').identifier(nga.field('id'));

We recently merged some updates to the choices component. Can you retry with the last master version to check if it work?

No news for a month, closing.


STRESSTEST-VERIFY-RESTART does not work with the big size VM

Maybe need to tune the timer of provisioning, booting or restarting time.

@juhlee-microsoft As we talked internally, can we close it?

Gave the enough time during booting and provisioning. Will investigate VM inside.


BA.1 Lineage VCF Request

BA.1 Lineage VCF Request
This lineage is described at Pango-Designation issue 361, PHE Genomics Variant-Definition and outbreak.info

BA.1
As with the Omicron lineage VCF, BA.1 VCF is primarily built from Andrew Rambaut's list of shared and exclusive mutations between B.1.1.529, BA.1 and BA.2
Compared to Omicron/B.1.1.529, BA.1 contains 20 additional nucleotide mutations resulting in 6 deleted amino acids, 17 missense mutations and one 3AA insertion.
NOTE: Pango-Designation issue 361 notes for 11288_11296del seen in Omicron, BA.1 (and BA.1.1) and BA.2 that:

The exact position of this deletion is ambiguous in nucelotide coordinates.

Many other resources list this particular mutation as L105del, S106del, G107del, and so BA.1 and BA.1.1 VCFs will reflect this.


HEAD requests that have Content-Type of gzip fail every time

Try this out with 1.5.19:
val req = sttp.head(uri"https://www.google.com")
implicit val backend = HttpURLConnectionBackend()
req.send()

You'll see this failure:
java.io.EOFException
	at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:268)
	at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:258)
	at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
	at com.softwaremill.sttp.HttpURLConnectionBackend.wrapInput(HttpURLConnectionBackend.scala:283)

Apparently the GZIPInputStream is created despite the lack of a response body, immediately causing a failure.
It would be great if there was a way to stop sttp from creating the GZIPInputStream so I could ignore the body.

Should be fixed in 1.6.0: https://github.com/softwaremill/sttp/releases/tag/v1.6.0


Update setDataset / loadDataset

When path is given and invalid for dataset, it should fail. This patch updates
accordingly.
resolves #379
Self evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test: [X]Passed [ ]Failed []Skipped

Signed-off-by: Jihoon Lee<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.4.20191203. Thank you for submitting PR #385. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnsuite.mooo.com/.


Issue #151 Removed call to circl api

@aniket-chowdhury Thanks for this contribution. Please make sure all your commits are signed off and take into account my comment on the ticket.

@aniket-chowdhury are you still interested in finishing this pull request?

Yeah. I still am.

@haikoschol
Yeah. I still am.

Do you need help with fixing the issues or are you just busy and haven't gotten to it yet?

I think it would break functionality. Could you elaborate more on the issue.

I think it would break functionality. Could you elaborate more on the issue.

I already did elaborate on the ticket here.
We want to remove this route completely from the application, not just the call to the other API.
The other issue with your pull request is the failing DCO check. You can find documentation on how to fix that here.


Crash when assign a String in redirectGuestsTo

Laravel Version
11.1.1
PHP Version
8.3
Database Driver & Version
No response
Description
Crash when assign a String in redirectGuestsTo, but the app works when assign a function.
That is rare because in the line https://github.com/laravel/framework/blob/11.x/src/Illuminate/Foundation/Configuration/Middleware.php#L523 is configure to support string and function
Steps To Reproduce
I use Inertia and Redis, you only need assign a string in redirectGuestsTo
->withMiddleware(function (Middleware $middleware) {
        $middleware
            ->redirectGuestsTo(route('auth.login'))
            ->throttleWithRedis()
            ->web(append: [
                HandleInertiaRequests::class,
                AddLinkHeadersForPreloadedAssets::class,
            ]);
    })

But this is valid, right? ->redirectGuestsTo(route('auth.login'))

But this is valid, right? ->redirectGuestsTo(route('auth.login'))

I think is correct, because in the line https://github.com/laravel/framework/blob/11.x/src/Illuminate/Foundation/Configuration/Middleware.php#L523, transform the string to function and the types of $guests are "callable|string"

So what's the crash? and actual reproducing step?

The docs sound pretty clear to use a callback with using routes:
https://laravel.com/docs/11.x/authentication#redirecting-unauthenticated-users
The string is for hardcoded URLs. I believe it's not possible because the app hasn't fully booted yet (the reasoning for the required callback), but I am not entirely sure.

This can only be a hardcoded path or a callback. Never a named route like in the example above because of the reasons @ahinkle listed.


Added links to system categories.

[x ] I have read freeCodeCamp's contribution guidelines.
[x ] My pull request has a descriptive title (not a vague title like Update index.md)
[x ] My pull request targets the master branch of freeCodeCamp.
[x ] None of my changes are plagiarized from another source without proper attribution.
[x ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@tlevison Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝


Refs 105: symlink containerfile for remote podman building

ripping this from provisioning-backend, we're seeing podman builds fail
and suspect it is the location of the dockerfile.

https://issues.redhat.com/browse/HMSCONTENT-105


Assess yarn workspaces to handle multiple build configurations.

Originally, I thought it would be easy enough to separate code by parent folder and just use aliases (As in #270) but I think some sort of multipackage organization will be needed.
Here's the packages we're going to have:

vue-media-annotator library (published)
viame-web application common (private)
viame-web-girder web build configuration + API client (basically just API and a main.js file)
viame-web-electron desktop build configuration, which will have a slew of other dependencies unique to the electron ecosystem.
build-config a shared meta-package that has stuff like babel config, eslint config, jest config, all the stuff we'd have to duplicate across all other packages.

I've looked at how some other projects manage this, and they basically all ended up writing their own custom webpack to wrangle multiple build configurations.   I think I'd rather have multiple packages and a single build config in each one.
I'm looking at something like https://medium.com/trabe/monorepo-setup-with-lerna-and-yarn-workspaces-5d747d7c0e91 but without lerna.  Once Vue 3 launches, we're probably going to want to jump ship to vite, but I'm pretty sure using workspaces won't have any impact on that.
This will impact @mattrix27 as he explores electron.   Requesting comments from @BryonLewis and @AlmightyYakob

More research is clearly needed.
I also found https://github.com/nklayman/vue-cli-plugin-electron-builder

Are you thinking viame-web is the surrounding "annotation Application" outside of the direct geoJS drawing and editing stuff with the track data management?  Meaning things like the track list and type list interfaces?
Additionally I'm assuming the pipeline/training stuff falls into the viame-web-girder based on it's reliance of getting the data from server and utilizing the girder-worker?
Another assumption, the viame-web-girder package is meant to be interchangeable with whatever the electron stuff can provide for interfacing with the filesystem and the pipeline backend?
I don't know how on track I am here, but a final question is if we want to try to do this all at once or if we would want to try to do a a single section/package initially and then use what we learned for the other packages?

Are you thinking viame-web is the surrounding "annotation Application" outside of the direct geoJS drawing and editing stuff with the track data management? Meaning things like the track list and type list interfaces?

I actually put track and type list into the library, but yeah that's the idea.  UI that is specific to VIAME but common across web and desktop.

Additionally I'm assuming the pipeline/training stuff falls into the viame-web-girder based on it's reliance of getting the data from server and utilizing the girder-worker?

Well, the desktop app will need to run pipelines as well.  I imagine the UI bits will be in the common package, and an interface that describes async functions to dispatch jobs and check the status of jobs will be in the common package, then we will implement that interface 2 different ways.

Another assumption, the viame-web-girder package is meant to be interchangeable with whatever the electron stuff can provide for interfacing with the filesystem and the pipeline backend?

Not sure I understand.

I don't know how on track I am here, but a final question is if we want to try to do this all at once or if we would want to try to do a a single section/package initially and then use what we learned for the other packages?

In order to verify that what we've done works, you sort of need to start out with a minimum of 2 packages.  I was thinking we start with the library vue-media-annotator and everything else in viame-web.  Then we can split the girder parts off and add a new package for electron stuff at our convenience.

Another assumption, the viame-web-girder package is meant to be interchangeable with whatever the electron stuff can provide for interfacing with the filesystem and the pipeline backend?

Not sure I understand.

What I mean is that ideally the data taken from viame-web-girder (like the location of images, the formatted track data) and the actions provided by viame-web-girder (saving annotation data, running pipelines) is going to be interchangeable with whatever we have electron do.  The communication between  viame-web-girder and viame-web should be very similar to the ones used for viame-web-electron.  So these connections should be well defined which I think they mostly are right now.  I.E.  viame-web knows it need to save data, and hands it off, doesn't care whether it is saved to girder, or saved to the local filesystem.