TextSpan with recognizer in ListTile fails assertion

Steps to Reproduce
$ flutter test <file.dart>

import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets("ups ...", (WidgetTester tester) async {
    TextSpan w = TextSpan(
      text: 'foo',
      style: TextStyle(color: Colors.blueAccent, fontWeight: FontWeight.bold),
      recognizer: TapGestureRecognizer()
        ..onTap = () {
          // navigate to desired screen
        },
    );

    await tester.pumpWidget(
      MaterialApp(
        home: Scaffold(
          body: SwitchListTile(
            title: RichText(
              text: w,
            ),
            value: false,
            onChanged: (_) {},
          ),
        ),
      ),
    );
    await tester.pumpAndSettle();
  });
}

Expected results:
Test succeeds.
Actual results:
Test fails with the following error:
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
'package:flutter/src/semantics/semantics.dart': Failed assertion: line 2626 pos 16: 'node.parent ==
null || !node.parent.isPartOfNodeMerging || node.isMergedIntoParent': is not true.

See flutter test in Logs for whole output!

Logs

Testing started at 16:54 ...
/Users/xxxxxx/development/flutter/bin/flutter --no-color test --machine --plain-name "ups ..." test/widget/richtext_link_test.dart
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
'package:flutter/src/semantics/semantics.dart': Failed assertion: line 2626 pos 16: 'node.parent ==
null || !node.parent.isPartOfNodeMerging || node.isMergedIntoParent': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

When the exception was thrown, this was the stack:
#2      SemanticsOwner.sendSemanticsUpdate (package:flutter/src/semantics/semantics.dart:2626:16)
#3      PipelineOwner.flushSemantics (package:flutter/src/rendering/object.dart:1042:23)
#4      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:985:31)
#5      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:283:5)
#6      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15)
#7      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1041:9)
#8      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:872:9)
#11     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#12     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:859:27)
#13     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:323:22)
#16     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:41)
#17     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:320:27)
#18     main.<anonymous closure> (file:///Users/xxxxxx77/coding-pers/glutyfree/frontend-flutter/test/widget/richtext_link_test.dart:16:18)
#20     main.<anonymous closure> (file:///Users/xxxxxx77/coding-pers/glutyfree/frontend-flutter/test/widget/richtext_link_test.dart:6:26)
#21     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:124:25)
#23     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:122:9)
#24     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:696:19)
#38     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1066:17)
#40     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1054:35)
(elided 37 frames from class _AssertionError, class _FakeAsync, package dart:async, package dart:async-patch, and package stack_trace)
════════════════════════════════════════════════════════════════════════════════════════════════════

Test failed. See exception logs above.
The test description was: ups ...

Nothing to show, test is provided.

[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E266, locale en-DE)
    • Flutter version 1.12.13+hotfix.9 at /Users/xxxxxx/development/flutter
    • Framework revision f139b11009 (2 weeks ago), 2020-03-30 13:57:30 -0700
    • Engine revision af51afceb8
    • Dart version 2.7.2

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
    • Android SDK at /Users/xxxxxx/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.0.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

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

[✓] Connected device (3 available)
    • Android SDK built for x86 • emulator-5554                        • android-x86 • Android 10 (API 29) (emulator)
    • iPhone 11 Pro             • F5B265ED-92AE-4C3E-BCBB-FB695B0CF5A2 • ios         • com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)
    • iPhone 11 Pro Max         • 40A5CB14-4898-4953-B776-B83CAFFCC589 • ios         • com.apple.CoreSimulator.SimRuntime.iOS-13-4 (simulator)

• No issues found!

flutter doctor -v
[✓] Flutter (Channel dev, v1.18.0, on Mac OS X 10.15.4 19E287, locale en-GB)
    • Flutter version 1.18.0 at /Users/taha/Code/flutter_dev
    • Framework revision 8f7327f83a (6 days ago), 2020-04-06 22:11:01 -0400
    • Engine revision 49891e0653
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 1210d27678)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
[✓] VS Code (version 1.44.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.9.1
[✓] Connected device (4 available)
    • SM M305F   • 32003c30dc19668f • android-arm64  • Android 10 (API 29)
    • macOS      • macOS            • darwin-x64     • Mac OS X 10.15.4 19E287
    • Chrome     • chrome           • web-javascript • Google Chrome
      81.0.4044.92
    • Web Server • web-server       • web-javascript • Flutter Tools
• No issues found!

Hi @nachtmaar
for my understanding on the matter
SwitchListTile merge the semantics and onChange
is actually onTap in disguise.
I tried changing  in TapGestureRecognizer onTap to onTapDown,
without luck, but I have teh feeling that is the right direction.
return MergeSemantics(
      child: ListTileTheme.merge(
        selectedColor: activeColor ?? Theme.of(context).accentColor,
        child: ListTile(
          leading: secondary,
          title: title,
          subtitle: subtitle,
          trailing: control,
          isThreeLine: isThreeLine,
          dense: dense,
          contentPadding: contentPadding,
          enabled: onChanged != null,
          onTap: onChanged != null ? () { onChanged(!value); } : null,
          selected: selected,
        ),
      ),
    );

I'll try looking into it
Thanks for reporting that

testing the code above with the latest master
logs
00:17 +0: ups ...
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
'package:flutter/src/semantics/semantics.dart': Failed assertion: line 2621 pos 16: 'node.parent ==
null || !node.parent.isPartOfNodeMerging || node.isMergedIntoParent': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

When the exception was thrown, this was the stack:
#2      SemanticsOwner.sendSemanticsUpdate (package:flutter/src/semantics/semantics.dart:2621:16)
#3      PipelineOwner.flushSemantics (package:flutter/src/rendering/object.dart:1085:23)
#4      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1018:31)
#5      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5)
#6      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15)
#7      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9)
#8      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:879:9)
#11     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#12     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:866:27)
#13     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:441:22)
#16     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#17     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:438:27)
#18     main.<anonymous closure> (file:///Users/nevercode/Desktop/projects/master/test/widget_test.dart:14:18)
#19     main.<anonymous closure> (file:///Users/nevercode/Desktop/projects/master/test/widget_test.dart:6:26)
#20     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:140:29)
#33     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1099:17)
#34     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1087:35)
(elided 33 frames from class _AssertionError, class _FakeAsync, dart:async, and package:stack_trace)
════════════════════════════════════════════════════════════════════════════════════════════════════
00:17 +0 -1: ups ... [E]
  Test failed. See exception logs above.
  The test description was: ups ...

00:17 +0 -1: Some tests failed.

doctor
[✓] Flutter (Channel master, 1.21.0-6.0.pre.17, on Mac OS X 10.15.5 19F101, locale en-GB)
    • Flutter version 1.21.0-6.0.pre.17 at /Users/nevercode/development/flutter_master
    • Framework revision e64fe11542 (11 hours ago), 2020-07-23 18:11:17 -0700
    • Engine revision 626244a72c
    • Dart version 2.9.0 (build 2.9.0-21.0.dev a3815b6590)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/nevercode/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.9.0

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

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.2

[✓] Connected device (4 available)
    • Pixel 3a (mobile) • 965AY0WP5C • android-arm64  • Android 10 (API 29)
    • macOS (desktop)   • macos      • darwin-x64     • Mac OS X 10.15.5 19F101
    • Web Server (web)  • web-server • web-javascript • Flutter Tools
    • Chrome (web)      • chrome     • web-javascript • Google Chrome 84.0.4147.89

• No issues found!

the issue persists
Thank you

another workaround is to wrap the RichtText in ExcludeSemantics.

I verified this issue on the latest stable and the master channel and I was able to reproduce the issue.

logs
mahesh@Maheshs-MacBook-Air-M1 flutter_issue % flutterm test test/widget_test.dart
00:01 +0: ups ...
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
'package:flutter/src/semantics/semantics.dart': Failed assertion: line 3105 pos 16: 'node.parent ==
null || !node.parent!.isPartOfNodeMerging || node.isMergedIntoParent': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

When the exception was thrown, this was the stack:
#2      SemanticsOwner.sendSemanticsUpdate (package:flutter/src/semantics/semantics.dart:3105:16)
#3      PipelineOwner.flushSemantics (package:flutter/src/rendering/object.dart:1246:24)
#4      AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1348:31)
#5      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:381:5)
#6      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1289:15)
#7      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1218:9)
#8      AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:1185:9)
#11     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:71:41)
#12     AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:1171:27)
#13     WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:558:22)
#16     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:71:41)
#17     WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:555:27)
#18     main.<anonymous closure> (file:///Users/mahesh/Desktop/flutter_issue/test/widget_test.dart:16:18)
#19     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:171:29)
<asynchronous suspension>
<asynchronous suspension>
(elided 7 frames from class _AssertionError, dart:async, and package:stack_trace)
════════════════════════════════════════════════════════════════════════════════════════════════════
00:01 +0 -1: ups ... [E]
  Test failed. See exception logs above.
  The test description was: ups ...

To run this test again: /Users/mahesh/Development/flutter_master/bin/cache/dart-sdk/bin/dart test /Users/mahesh/Desktop/flutter_issue/test/widget_test.dart -p vm --plain-name 'ups ...'
00:01 +0 -1: Some tests failed.

flutter doctor -v (mac)
[✓] Flutter (Channel master, 3.6.0-6.0.pre.33, on macOS 12.6 21G115 darwin-arm64,
    locale en-IN)
    • Flutter version 3.6.0-6.0.pre.33 on channel master at
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a9858ec524 (72 minutes ago), 2022-11-21 10:58:11 -0500
    • Engine revision 46a6b54295
    • Dart version 2.19.0 (build 2.19.0-406.0.dev)
    • DevTools version 2.19.0
    • If those were intentional, you can disregard the above warnings; however it is
      recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

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

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64
      • macOS 12.6 21G115 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript
      • Google Chrome 107.0.5304.110

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

• No issues found!

[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
    • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

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

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

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

• No issues found!


fix(material/chips): remove button is too small

Fixes Angular Components Chip component where the touch target of the remove button of a chip is too small. Updates .mat-mdc-chip-remove to target more specific styles to override original style of padding: 8px so that the user has a larger touch target particularly on mobile devices.
Fixes b/286959517
Before screenshot
After screenshot
BREAKING CHANGE: updates chip remove button touch target to increase accessibility of the button especially on touch/mobile devices.

As recommended, tested on Mac Chrome and Firefox against React, Vue, W3, and dialog native html. The issue is reproducible in each of these when using a Mac OS.
Examples tested:
-React dialog demo
-Vue dialog demo
-W3.org dialog demo
-Native html dialog demo

Looks good! I notice that the chip content seems slightly off center, but that appears to be an issue at HEAD, likely a regression introduced by https://github.com/angular/components/pull/29357 and not something blocking for this PR


After 100 or so api calls, api start sending empty list

Your code works great, but after few api calls (like 100 or so)  api start sending empty list. I believe there this rate limiter per account on https://ais.usvisa-info.com/en-ca/, any idea how can we over come that?

I had the same issue. It's been a day but I am still not able to see open days. My wife's account can see open days but apparently mine is blocked. "There are no available appointments at the selected location. Please try again later."

Merhaba aynı sorun bendede oldu sizinki çözüldü mü

Okay system locks after 60 tries in 5 hours. So you need to change the code abit. Set a new counter to 59 and put await for 5 hours before next try.

Same question here, do we know what the rate limit is and how long we get blocked?

@bhavik4748

I initially tried and was making 70 or so calls using this api but it didn't help much as manually people were very active, before you get an email someone would have already taken that appointment.
So I joined some other telegram groups where the agents were posting the appointment availability(via their bots) so I got the date using that and have stopped working on this one.

Am closing this issue as not much can be done here due to api rate limiting.

@bhavik4748 i still want to know how long will i be unblocked in ?

As of now, i cant see any dates on the website. even when i go to the site manually

5-6 hours and you can ask Customer care.

Sometime Customer care was able to see dates so they can select appointments on phone for you

I initially tried and was making 70 or so calls using this api but it didn't help much as manually people were very active, before you get an email someone would have already taken that appointment. So I joined some other telegram groups where the agents were posting the appointment availability(via their bots) so I got the date using that and have stopped working on this one.

Hi Bhavik,
I have been trying to get an appointment since last 2 months but to no avail.
Would you be kind enough in sharing that telegram link please?
I can share my email address with you.
<EMAIL_ADDRESS>

@bhavik4748 can you please share any info with me as well ?
<EMAIL_ADDRESS>

https://t.me/contact_akki
https://t.me/+SGN5yCPZjb8zNjU1

I know this issue is closed because not much can be done about the rate limiting, but I do think it's a good opportunity to share what everyone is seeing regarding rate limiting as it seems change over time or based on use.
I personally don't use the code in this repo, but I did write my own script which implements similar tactics with a few improvements (at least in my mind). I began running my script around 15 months ago and have strictly used it for friends and family, less than 10 total, so I don't have a great sample size.
Here's what my experience has been:
Originally I ran into the same issues that others report here, you hit the endpoint a certain number of times within a certain time window and the endpoint begins returning a 200 response but with an empty array, essentially a soft rate limit. The rate limit is based on the account (or maybe the schedule) as you can replicate this across different IPs as well as by logging in through the UI and checking the calendar (which becomes unavailable for the same time frame). The block isn't absolute, and is solely related to when you check, so 2 scripts that begin checking at different times would be blocked at different times.
With the pinging schedule that I implement I can hit the endpoint about for around 4 hours before being blocked for 5 hours. I never felt the need to improve on this as I had enough success, usually being able to get an appointment within a few weeks for ~1-3 months out.
After a few months of running the script I felt I had enough data to start looking for patterns. I noticed that there were certain times where good appointments appeared more often, and others where appointments never appeared. I modified my script's schedule to only check during these good windows. Initially I had great success, and I no longer had to worry about being blocked as I was checking far fewer times during the day.
All good, right? Well eventually I think someone caught on as I was now rate-limited for 90% of the day. I gave up on this improved schedule and reverted to my original one (checking all day, enduring blocks, etc) and within 1-2 days everything went back to normal. This was around May-June of this year.
After about 2 months of not running the script due to lack of need I started running it again in September, but I started seeing much more strict rate-limiting. Instead of being rate-limited for 5 hours, I'm now rate-limited for about 20 hours.
I plan on trying different strategies to adapt to these new rate limit rules, but I am curious what everyone else's experience is and I have a few specific questions:

Are others seeing the same rate limit rules as I am? (4 hours on / 5 hours off in the past and now 4 hours on / 20 hours off, and potentially different rules based on approach).
What pinging strategies are others using? How often are you pinging the endpoint? I definitely see different levels of success with new appointments based on pinging strategy.
Has anyone noticed differences in rate limiting based on account? It seems like all accounts have the same rules, but I may just be in a bubble. I sometimes wonder if my friends' accounts are linked to me via IPs/etc and inherit stricter rate-limit rules due to being associated with a bad apple.


Function prop generates function is not defined error

I created a function using Angular and I'm trying to pass it into r2wc React web component. It doesn't get passed and I'm getting an error ( g is not a function )

I was facing this issue, but as a workaround I made a change in the transform function to dispatch an Event with the prop name. So in my angular app I just added a event listener to trigger my method.

@r2wc/core/transforms/function.ts

import type { Transform } from "./index"

const string: Transform<(...args: unknown[]) => unknown> = {
  stringify: (value) => value.name,
  parse: (value, element) => {
    const dispatch = (): any => {
      element.dispatchEvent(new Event(value, {}))
    }

    const fn = (() => {
      return dispatch
    })()

    return fn.bind(element)
  },
}

export default string

Angular app html

<react-doc-viewer [file]="file" action="action"> </react-doc-viewer>

Angular app component

ngAfterViewInit(): void {
    const doc = document.getElementsByTagName('react-doc-viewer')[0];
    doc.addEventListener('action', () => this.action());
  }

  action() {
    console.log(`Current file ${this?.file}`);
    alert(`Current file ${this?.file}`);
  }

It looks like this is solved, so I'm going to close this. We are looking into better supporting usage within Angular though!


New version: JetBrains.WebStorm.EAP version 231.5920.7

Result: Installation Failed

Manifest
Add/Remove Programs

Name
WebStorm (EAP)

Version
231.5920.7

Publisher
JetBrains s.r.o.

ProductCode

Auto-updated by vedantmgoyal2009/winget-pkgs-automation in workflow run 5655
Microsoft Reviewers: Open in CodeFlow

@wingetbot run

@wingetbot run

/AzurePipelines run


Use exec to forward signals like SIGTERM to gunicorn

Otherwise the container cannot be shutdown orderly and will be killed after a 10sec timeout
Also see: https://hynek.me/articles/docker-signals/

Looks good. We should look into using tini in the future, though.


Linear mode connect replecation

All code works as expected, one thing to note is the equation for epochs; please can someone confirm this; it is based off of the official repo at:
https://github.com/facebookresearch/open_lth/blob/2ce732fe48abd5a80c10a153c45d397b048e980c/foundations/hparams.py#L168


NFC_SETUP: Didn't find PN53x board

Hello!
I used some ESP32-S and wire everything correct. NFC reader LED is on. But everytime I started the ESP get this error message:
NFC_SETUP: Didn't find PN53x board
Any ideas what my mistake is? What i can do to run this setup correctly :-(
See also my settings:

Did you see issue #124?

Did you see issue #124?

Yes I see this post and buy "the not china" version of the nfc board. Now it works but only for some minutes or hours (max 1 hours.) after this time i must restart the esp32 and with a littel bit luck it will work than. So the problem is that the connection to the nfc ist lost but led on nfc board is still on. any ideas?
Thanks!

Please try the latest version, I’ve lowered the spi clock speed, It is possible the PN532 cannot remain stable at that speed for some reason. Fake ICs are also unfortunately a thing.


feat: add card component

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/Udixio/UI/blob/master/CONTRIBUTING.md
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
What is the new behavior?
Card component has been created
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

:tada: This PR is included in version 1.0.0-beta.12 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Achieves final validation loss of 0.794 on my data

Interesting stuff you got here, I am gonna be out of town over the next week, but afterwards do you wanna go over what you've figured out here?

yea for sure. happy to chat here or on discord.


std.typecons: Make RefCounted pure nothrow @nogc when possible

This makes RefCounted!T pure/nothrow/@nogc when possible.

OK how about you keep the safe but for now drop the pure. The notion of marking malloc as pure is disquieting - it never returns the same void* for the same number. Then we'll see how we can do about pure. Thanks!

The notion of marking malloc as pure is disquieting - it never returns the same void* for the same number.

I would point out that we're in the same boat with the GC and new. It's pure and doesn't necessarily return the same value - just an equivalent one. The only real difference is that with the GC, we have something to manage freeing that memory, whereas since you have to worry about it with malloc, you have to be concerned about whether you really do get the same value so that you don't free it twice.
So, I don't know what the right answer is, but there's definitely an argument that malloc should be considered pure given what we do with new.

@jmdavis new is special so we can special case it

AFAICT, C-style memory allocations cannot be qualified correctly in D using pure. For instance if we declare malloc as pure the optimizer will optimize away successive calls to malloc which is incorrect. The return value of malloc shall not in the RefCounted case have any side-effect on the program only the values that are stored in it. This semantics cannot currently be expressed.
Instead we have to qualify the code that it's using them and privately import *alloc and free locally for each use. I believe the same holds for GC.addRange.

@andralex:

The notion of marking malloc as pure is disquieting - it never returns the same void* for the same number.

That's not a requirement of D's pure attribute. Or if it is, we have to fix the compiler to enforce it and probably break lots of code.

new is special so we can special case it

GC.malloc and GC.free aren't really special, though. They can be used just like C's malloc and free. Yet GC.malloc and GC.free are pure and the C functions are not. I don't see the reason for the disparity.
GC.malloc being (weakly) pure is ok because void* has a mutable indirection, so the compiler must not reuse the result (but: issue 15862). GC.free being (weakly) pure is ok because the visible effect it has is on its mutable argument. The same points apply to C's malloc and free.
See also<EMAIL_ADDRESS>@nordlow:

if we declare malloc as pure the optimizer will optimize away successive calls to malloc

Actually, the compiler must not do that. It does right now, but that's issue 15862.

@aG0aep6G I think it's a slippery slope that GC.malloc and free are marked as pure. I don't like that, and I don't like that used as a precedent.
There must be some acknowledgment at a point that our type system has limitations that doesn't allow it to express certain valid programs.

@aG0aep6G I think it's a slippery slope that GC.malloc and free are marked as pure. I don't like that, and I don't like that used as a precedent.

This needs to be sorted out. Either it's wrong that GC.malloc and GC.free are marked pure, or we should be able to mark C's malloc and free too. Either we have a disaster waiting to happen with the GC functions, or we're needlessly preventing code from being pure.

There must be some acknowledgment at a point that our type system has limitations that doesn't allow it to express certain valid programs.

Ok, but I don't think it's a good idea to draw that line between GC.malloc and C's malloc.

Hmmm, this notion of a function that returns data with mutable indirection is very interesting. In particular, if the data returned has mutable indirections leading to values that cannot be present in the parameters, that means that's "fresh" data, i.e. newly allocated. Consider:
pure int[] fun(float[]);

Without even looking at the definition, the compiler can infer that the array of integers is freshly-allocated for the simple reason there's no other place it could come from :o). Being able to characterize "fresh" without making language addition can be a big win.
For now, I agree that fixing https://issues.dlang.org/show_bug.cgi?id=15862 would allow us to make malloc pure.

In particular, if the data returned has mutable indirections leading to values that cannot be present in the parameters, that means that's "fresh" data, i.e. newly allocated.

Yeah, dmd uses this to allow implicit conversion to immutable when the value comes from a pure function (and other requirements are met). This example compiles with pure and is correctly rejected without it:
int* f() pure { return new int; }
void main() { immutable p = f(); }

Consider:
pure int[] fun(float[]);

Without even looking at the definition, the compiler can infer that the array of integers is freshly-allocated for the simple reason there's no other place it could come from :o).

I'm not so sure about that example. fun is allowed to cast the argument to int[], isn't it? Then again, dmd seems to disregard that possibility, too. This is currently accepted:
pure int[] fun(float[] arg) { return cast(int[]) arg; }
void main() { float[] a = [1, 2, 3]; immutable i = fun(a); }

If dmd is correct here, that would mean casting from one array type to another is invalid (aka has undefined behavior), wouldn't it? That doesn't seem right. I'd say this is another bug in dmd, and it cannot be assumed that fun returns a unique result. Filed as issue 16585.

@andralex I thought you had decided upon non-safety in https://github.com/dlang/phobos/pull/4692

Current coverage is 89.27% (diff: 75.00%)

Merging #4832 into master will increase coverage by <.01%

@@             master      #4832   diff @@
==========================================
  Files           121        121
  Lines         76114      76116     +2
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits          67950      67956     +6
+ Misses         8164       8160     -4
  Partials          0          0

Powered by Codecov. Last update 08c587e...1055e95

@andralex I thought you had decided upon non-safety in #4692 ...

@nordlow not sure I understand?

For now, I agree that fixing https://issues.dlang.org/show_bug.cgi?id=15862 would allow us to make malloc pure.

The bug has been fixed ;-)
https://github.com/dlang/dmd/pull/6197
So what's still blocking this?

The RefCounted destructor calls free. It too has to be marked as pure. I can look into making it pure aswell and then go forward with this.

I think instead of marking free pure to make this PR successful, we can work around the purity.
Make a private binding to free, something like:
pragma(mangle, "free") extern(C) private purefree(void *mem) pure;

Then you can call it in one place where we can control the context, and not expose the whole world.

@schveiguy, It doesn't. I just thought making core.stdc pure was the direction @andralex wanted. Andrei?

Ok, does that include gc_addRange and gc_removeRange, @andralex ?

yes those should be fine too (or at least subject to the same subtleties)
@schveiguy 's seems a bit clearer

Made it so, @andralex

Don't worry about the name, let's get the coverage. Thx!

Coverage fixed.

Next up is Mallocator. Right, @andralex?

I think this looks good. Let's wait and see whether dlang/druntime#1735 is merged or not. If so, then you need to have a pure_malloc as well.

If https://github.com/dlang/druntime/pull/1735 gets merged we can use pureMalloc instead, right?

@nordlow I guess this is next!

So we should make use of pureMalloc and pureRealloc. What about purity of gc_addRange and gc_removeRange? Should we use locally purefied versions of them?

local is fine for now

Ok, in that case this is ready, @andralex !

@nordlow you have style failures, see ci/circleci

@andralex That's actually a dscanner error. It isn't working correctly with the new DIP1000 syntax.

So what to do, @andralex ?

Auto-merge toggled on

Great!


Convert User Flag UI from Moqups to Figma

We have a wireframe in Moqups for a new UI in CC Search:
Moqups
We'd like to create this in Figma, using our Design Library, to ensure seamless implementation.
Once completed, this will unblock https://github.com/creativecommons/cccatalog-frontend/issues/425

Here is the flow of flagging content. The mockups use Design Library components.


Auto-role based on stats

possibly a command that could enable giving a role based on how many elements you have or leaderboard position automatically? similar to eod's roles, but automated

Duplicate of #20


How can i check if a player was killed by another player or anything else?

Hi,
I'm making a minigame using MinestomPvP and was wondering how can i check if the player killed themselves (or anything else) or if they were killed by another player. I also want to get the killer (if theres one), so i can reward them for a kill. How can i do this?

In  a listener forEntityDamageEvent (or FinalAttackEvent when MinestomPvP specific logic is required), use event.getDamage(). From this object it is possible to get the direct damager (e.g. the arrow for a bowshot) or the attacker (e.g. the player shooting the bow, or the player using their sword).

Doesn't that fire for every hit? How can i tell if the player was killed?

I'm sorry for apparently not being able to read 🤣
It is possible to use LivingEntity#getLastDamageSource() to get the last Damage object.

Using the latest commit, it is also possible to get the damage source from EntityPreDeathEvent.
On a side note: if you want to cancel the death (for example switch the player to spectator mode instead of actually killing them), you should use EntityPreDeathEvent#setCancelDeath(), because it will make sure the attack sounds and other effects are not cancelled.

Thanks. Also, I need to kill the player when they touch water (im making gungame). How can i check if someone hhit them to the water or they jumped there by themselves? Can i somehow reset the last damage source after a few seconds of not receiving any damage?

It would be best to just keep track of the incoming hits (paired by the time) by yourself, in a list or something. You could add entries inside a listener for the damage event.

So i need to create an external hashmap with the player username and the damage source with time?

You can also use a tag on the player.
https://minestom.net/docs/feature/tags

Oh sorry i didnt know these existed. This can also cleanup my build mode code :D Thanks

Yep, and be sure to use Tag.Transient to avoid unnecessary serialization


Build the BDII sub-package for everything but the OSG

CC-IN2P3 uses BDII and grabs HTCondor-CE from the condor repos

Did Tim make the corresponding change for the spec file in the Condor repo?

We don't have the CE spec file in the condor repo


Borrow errors when building

I get:
$ cargo build --release

   Compiling racer v0.0.1 (file:///D:/Programming/Lumenix/racer)
src\racer\ast.rs:562:43: 562:45 error: cannot borrow immutable local variable `it`as mutable
src\racer\ast.rs:562                 for (name, typesearch) in it {
                                                               ^~
src\racer\ast.rs:598:35: 598:37 error: cannot borrow immutable local variable `it`as mutable
src\racer\ast.rs:598         for (name, typesearch) in it {
                                                       ^~
src\racer\nameres.rs:556:33: 556:39 error: cannot borrow immutable local variable `codeit` as mutable
src\racer\nameres.rs:556     for (blobstart, blobend) in codeit {
                                                         ^~~~~~
src\racer\nameres.rs:603:32: 603:38 error: cannot borrow immutable local variable `codeit` as mutable
src\racer\nameres.rs:603     for (blobstart,blobend) in codeit {
                                                        ^~~~~~
error: aborting due to 4 previous errors
Could not compile `racer`.

To learn more, run the command again with --verbose.

When building on Win 8.1,

Hi @Centril,
Which version of rustc is this? It may be that the windows nightly isn't as up to date as the linux one
Cheers,
Phil

$ rustc --version
rustc 1.0.0-nightly (1d00c545e 2015-01-30 19:56:34 +0000)

Fixed now, thanks.


Implement a simple type checker

This implements type checking in the interpreter.
The type system is simple:

All type variables have kind *.

All function declarations have full type signatures.

No elaboration is necessary: method calls are implemented via (type, method) lookups.

Traits have only one type parameter.

We also don't implement row polymorphism for anonymous types in the interpreter.
The result is a very simple type checker that checks each function in isolation.

Almost there.. we need to implement default trait methods so that __gt etc. will work when you only implement cmp.

I think we just need to check that the predicates hold after checking functions and that should be it! (for now)


#3955 - Issue with Tabs Jumping Scroll Position

#3955 - Issue with Tabs Jumping Scroll Position
The reason for that was that the content for the previously active tab was being hidden before the content for the next tab was being shown, which was shortening the document.
As a fix the next tab content is shown first before the old tab content is hidden.
If the tabs are much different lengths then the document will still be shortened and there will still be some movement, but only if the bottom of the shorter tab is above the bottom of the screen

Thanks!


Creating new SQL project from Database fails to load new project in workspace in Project view

Repro:
0. Install SQL Database Projects extension

Connect to database, right-click on database and select "Create Project from Database"
Choose location inside the currently-open workspace/folder
Click "Okay", project gets created correctly

Expected:
Database Projects view automatically opens the newly-created project because it's within the current workspace
Reality:
Get error saying the project is already open (it isn't).  Project is detected and loads correctly upon reloading the workspace.

Work-around:
Reload the workspace or restart ADS.  The project will now be detected as part of the workspace, and will open automatically.

@Charles-Gagnon as an FYI.  Likely related to the workspace changes for VS Code.  Not major enough to take to release shiproom, so we'll fix this for next month.

This is likely in the extension anyways so we can just fix it and then push a new release as needed. Let me know if you want me to help out with the fix at all.

@Benjin, @Charles-Gagnon - just checking if we will be able to take it for August?

I will definitely take a look at it if @Benjin isn't able to

Already in the process of looking at it; it'll be in for August
From: Charles Gagnon @.>
Sent: Wednesday, July 28, 2021 2:49 PM
To: microsoft/azuredatastudio @.>
Cc: Benjin Dubishar @.>; Mention @.>
Subject: Re: [microsoft/azuredatastudio] Creating new SQL project from Database fails to load new project in workspace in Project view (#16227)
I will definitely take a look at it if @Benjinhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FBenjin&data=04|01|benjind%40microsoft.com|dea505e83f134a91da2208d9521178c2|72f988bf86f141af91ab2d7cd011db47|1|0|637631057263409566|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=9l15kMbOWJFRNbXuq4P8HgU3NiYGcw2INyrTYeKXuJM%3D&reserved=0 isn't able to

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fazuredatastudio%2Fissues%2F16227%23issuecomment-888643728&data=04|01|benjind%40microsoft.com|dea505e83f134a91da2208d9521178c2|72f988bf86f141af91ab2d7cd011db47|1|0|637631057263419522|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=LXOZngTUVeeYqd7Bue8VcoX9%2Fj38DH89JtY6MCQR%2Bow%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAAMJAYYRHJJEF6SWCV4HU6LT2B3LXANCNFSM5AQAL56Q&data=04|01|benjind%40microsoft.com|dea505e83f134a91da2208d9521178c2|72f988bf86f141af91ab2d7cd011db47|1|0|637631057263419522|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=A%2BIDlQ2%2BGbtuhEivqdZNvepckT%2BbMBmSK51ZFSMe%2BjU%3D&reserved=0.


Variants - inheriting data from the base

I created an Organism that includes an array of a single molecule.
http://mayflower.digital.mass.gov/?p=organisms-contact-list
I then created a variant of that Pattern using the contact-list~single-item.json method to show how the component should be rendered if there is only one molecule in the array.
http://mayflower.digital.mass.gov/?p=organisms-contact-list-single-item
After upgrading our site to the Drupal Pattern Lab (https://github.com/massgov/mayflower/pull/488), the Variant began showing two items instead of one.  The first item was being displayed correctly, but the second item, which shouldn't have been there, was coming from the base json file.
I'm not sure why this is happening, but it seems like a bug.

{
  "contactList": {
    "compHeading": {
      "title": "Contacts",
      "sub": "",
      "color": "",
      "id": "contacts",
      "centered": ""
    },

    "contacts":[{
      "accordion": false,
      "isExpanded": false,
      "subTitle": {
        "href":"",
        "text": "Department of Conservation and Recreation"
      },
      "groups": [{
        "icon"<EMAIL_ADDRESS>        "name": "Phone",
        "items": [{
          "type": "phone",
          "property": "",
          "label":"Main:",
          "link": {
            "href": "+14134994262",
            "text": "(413) 499-4262",
            "info": "",
            "property": ""
          },
          "details":"This line is open from 9:00 a.m. - 5:00 p.m., M-F"
        },{
          "type": "phone",
          "property": "",
          "label":"Toll Free:",
          "link":{
            "href": "+18004324321",
            "text": "(800) 432-4321",
            "info": "",
            "property": ""
          },
          "details":"This line is open from 9:00 a.m. - 5:00 p.m., M-F"
        },{
          "type": "phone",
          "property": "",
          "label":"TTY:",
          "link": {
            "href":"+16175557777",
            "text": "(617) 555-7777",
            "info": "",
            "property": ""
          },
          "details":"For those who need accessible services"
        },{
          "type": "phone",
          "property": "",
          "label":"Voice Relay:",
          "link":{
            "href":"16175555255",
            "text": "(617) 555-5255",
            "info": "",
            "property": ""
          },
          "details":""
        }]
      },{
        "icon"<EMAIL_ADDRESS>        "name": "Online",
        "hidden": "",
        "items": [{
          "type": "email",
          "property": "",
          "label":"Email:",
          "link": {
<EMAIL_ADDRESS>            "text"<EMAIL_ADDRESS>            "info": "",
            "property": ""
          },
          "details":""
        },{
          "type": "online",
          "property": "",
          "label":"Web:",
          "link": {
            "href":"#",
            "text": "Contact Form",
            "info": "",
            "property": ""
          },
          "details":""
        }]
      },{
        "icon"<EMAIL_ADDRESS>        "name": "Fax",
        "items": [{
          "type": "fax",
          "property": "",
          "label":"Main:",
          "link": {
            "href":"+14134994262",
            "text": "(413) 499-4262",
            "info": "",
            "property": ""
          },
          "details":"Please allow 24 hours for a response"
        }]
      },{
        "icon"<EMAIL_ADDRESS>        "name": "Address",
        "items": [{
          "type": "address",
          "property": "",
          "label": "",
          "address": "555 Park Drive\nBoston, MA 02231",
          "link": {
            "href": "https://www.google.com/maps/place/555+Park+Dr,+Boston,+MA+02215",
            "text": "directions",
            "info": "",
            "property": ""
          },
          "details": ""
        }]
      }]
    }]
  }
}

Hey @legostud - so after doing quite a bit of digging (and a whole lot of experimenting with the logic behind how the psuedo-pattern data gets merged together in the vendor/pattern-lab/core/src/PatternLab/PatternData/Rules/PseudoPatternRule.php file) I think I better understand the problem here... but I'm not sure I necessarily have a "solution" per say.
Lemme try to break this down a bit.
1. Regarding this quirk showing up w/ the PR from a couple weeks ago updating Mayflower to the Drupal Pattern Lab Fork:
From what I can tell, this issue with some of the data getting duplicated in the pseudo pattern stems from this commit from @dmolsen from a little over a year ago that changed the default data merging behavior for pseudo-patterns in Pattern Lab from a simple array_merge to a array_replace_recursive merge.
Sure enough, if I revert those two lines locally, the single item variant renders how I believe you'd be expecting it to:

2. That said, this brings up the important question, what's the correct behavior here?
Let's pretend for a moment that this single item variant didn't/shouldn't want to manually re-include the "Contacts" title by default (after all, that's sort of the whole point of having inherited data).
Rather than setting the contactList.compHeading.title value to an empty string, let's assume we just don't include that value in our json file and re-generate Pattern Lab.
contactList": {
    "example-prop": "contact list",
    "viewSpecific": false,
    "compHeading": {
      "sub": "",
      "color": "",
      "id": "contacts",
      "centered": ""
    },
    ...
}

Instead of inheriting the "Contact Us" text from the original pattern (or some other data property we'd want to trickle down into variants so we don't need to duplicate the data structure over and over again, instead the title gets overwritten by the other compHeading data values and we're left without a title...
 vs. the update from July of last year which replaced array_merge with array_replace_recursive
 which properly inherit the default title set in the base pattern. If I'd have to guess, this is probably why the data across the board in PL is replaced recursively vs merged.
So.... what's the correct behavior? ¯_(ツ)_/¯
3. All that said, I think there's a couple options we could go from here.
My personal opinion would be to go in one of two different directions:
Option 1: Keep the default merging behavior, but take a slightly different approach to generating variants.
@EvanLovely had some awesome slides during his Drupalcon Baltomore 2017 presentation on working with Pinterest on their component library and had this one slide in particular that really stood out:

Essentially, each pattern should have a vanilla pristine underscored version that both PL and Drupal reference and pass in the data per usual via separate twig file variations.
So for this example, you could simply have a _contact-list.twig template that gets included or extended via a separate contact-list--single-item.twig file to get all the benefits of the array_merge + array_replace_recursive:
{% extends<EMAIL_ADDRESS>%}

OR
{% include<EMAIL_ADDRESS>%}

Option 2: Allow for Default PL Rules to Be Configurable
Alternatively, if we went down this route, we could allow PL users to pick and choose which is the right behavior for them (while still providing an out of the box default set of rules to start off with).

Side note: I'm sad that the slides for Evan's presentation didn't get included in the YouTube video. A PDF of the slides would be amazing....
CC @EvanLovely, @aleksip, or @jesconstantine -- any thoughts?

@sghoweri - In your example of omitting "title", the pattern is still rendering (see the green line) just without any text.  All of the html is still there.
In the example I'm showing, the second item is an accordion that expands to show another element.
The question I still have is that I have reset the "contactList.contacts" variable from having two values to having one value in it array, as such it should render one element.  I could accept it rendering two elements if I omitted the contacts variable, because I then wouldn't be overriding the default contacts variable.

Salem, I'm on vacation this week, but I wanted to drop in the link to my slides from the presentation. I'm super bummed they messed up the recording and plan to fix it myself eventually.
http://www.evanlovely.com/presentations/drupalcon-2017-pinterest-pattern-lab/DrupalCon_2017_-_Pinterest_Pattern_Lab.pdf

Those slides provided some insight into this problem.  Base on what I'm seeing in Evans slides, the pattern for creating variants is different than how I've been doing them.  In these examples, all of the data passed is done using 'with' so a variant is created as a new twig file with a different data object passed down.
For my project, I'm using pseudo patterns, which uses multiple json files for one twig file.
http://patternlab.io/docs/pattern-pseudo-patterns.html

found another broken pattern.  Similar issue with the array being extended.

Hey thanks @EvanLovely - enjoy your time off!


Feature/document navigation components

Add inline documentation to navigation components to help developers use them in their own application.
Removed some example stories where the documented examples replaced them.
Added notes on HOC and nested CSS selectors

[x] Documentation
[x] Tests
[x] Ready to be merged

Codecov Report

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

@@          Coverage Diff          @@
##           master   #305   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          70     70
  Lines         378    378
  Branches       13     13
=====================================
  Hits          378    378

Impacted Files
Coverage Δ

components/breadcrumb/src/index.js
100% <ø> (ø)
:arrow_up:

components/back-link/src/index.js
100% <ø> (ø)
:arrow_up:

components/pagination/src/index.js
100% <ø> (ø)
:arrow_up:

components/related-items/src/index.js
100% <ø> (ø)
:arrow_up:

components/list-navigation/src/index.js
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Travis failed on chromatic, but passed everything else so merging into master! Hopefully we can get Chromatic back in to the mix as it was helping us a lot.


Register

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/21959
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.1.0 -m "<description of version>" 411d69233570505ebf5acaa97f54e14155daf7fb
git push origin v1.1.0

@JuliaRegistrator register()

Registration pull request updated: JuliaRegistries/General/21959
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.1.0 -m "<description of version>" 336eeb714c2d50c16dbcff7c4bb4d3a4a6a95416
git push origin v1.1.0

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/22412
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.0 -m "<description of version>" d7d304037b41860811f9bbae19d15034a6d942fc
git push origin v1.2.0

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/23023
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.1 -m "<description of version>" cc1bbb486c10100fab37b6b0ec3615a14f290f4a
git push origin v1.2.1

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/24519
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.2 -m "<description of version>" 6e5d4398fa52c42a21ec8a080f61e6f912add7d9
git push origin v1.2.2

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/24848
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.3 -m "<description of version>" 94d639390bc742d16a120066a7c442d1ac35d367
git push origin v1.2.3

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25267
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.4 -m "<description of version>" 4eb172a2ebf6773b06238a97e812032868b2553c
git push origin v1.2.4

@JuliaRegistrator register()

Error while trying to register: "Tag with name v1.2.4 already exists and points to a different commit"

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25534
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.5 -m "<description of version>" be14b179b85dbab5d0a446b4e4c3e41735e10305
git push origin v1.2.5

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25596
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.6 -m "<description of version>" 40e1722d6273740dac1e3449e39b6803173b7411
git push origin v1.2.6

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25602
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.7 -m "<description of version>" 6c96af0f5faec2b3ae061f757908453bdb4bc05d
git push origin v1.2.7

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25679
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.8 -m "<description of version>" 44f337cd90c60c85ff35b0061bb50db399205747
git push origin v1.2.8

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25797
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.9 -m "<description of version>" 280b39e7a2f8cd57d510dbc8e5ab27ce7dcb866c
git push origin v1.2.9

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/25943
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.10 -m "<description of version>" 499f812a12d845730890cc8f78a2ad9b16892553
git push origin v1.2.10

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/31034
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.11 -m "<description of version>" 6ae8b93faeafafb50f10b488ca1720e54a78e17e
git push origin v1.2.11

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/33816
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.12 -m "<description of version>" e4ee890e71eabf0a1b537e6bc8496294d69ffd8b
git push origin v1.2.12

@JuliaRegistrator register()

Registration pull request updated: JuliaRegistries/General/33816
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.12 -m "<description of version>" cece28eaef6384b94d70b886d49c18ecc98fdca0
git push origin v1.2.12

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/43070
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.14 -m "<description of version>" 3c8a0fabfa4c8a639afd164fb83a7722a05122ed
git push origin v1.2.14

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/43072
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.15 -m "<description of version>" 376a30cf8b4bcbfde464b5460c915d189267c0f4
git push origin v1.2.15

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/44277
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.16 -m "<description of version>" b0dd2d07edacc91de637b3ead525f751abaed801
git push origin v1.2.16

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/44887
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.17 -m "<description of version>" c29067c8d8a72778118a5f669d9aafa1ab734199
git push origin v1.2.17

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/55368
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.18 -m "<description of version>" 967e7f33d4dca49e207a297cda45cdb7d02e40a2
git push origin v1.2.18

@JuliaRegistrator register()

Registration pull request updated: JuliaRegistries/General/55368
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.18 -m "<description of version>" 834ef0c648a2f25fdeda4add9c7affa7a276c16b
git push origin v1.2.18

Registration pull request created: JuliaRegistries/General/73628
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.19 -m "<description of version>" 56951c8dcca9a1062490000f265bdcb51d615dc5
git push origin v1.2.19

@JuliaRegistrator register()

Registration pull request updated: JuliaRegistries/General/73628
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.2.19 -m "<description of version>" dc6d5308e65278c31764165ca6226039a8b8365c
git push origin v1.2.19


NoMethodError for version 5.6.1

I'm trying to use version of this cookbook because it was the last version that allowed for setting a repl password in the mysql_service lwrp. I am getting the following:
`  mysql2_chef_gem[default] action install
Error executing action `install` on resource 'mysql2_chef_gem[default]'

NoMethodError
-------------
undefined method `version' for Chef::Resource::MysqlClient

Cookbook Trace:
---------------
/var/chef/cache/cookbooks/mysql2_chef_gem/libraries/provider_mysql2_chef_gem_mysql.rb:17:in `block (2 levels) in <class:Mysql>'
/var/chef/cache/cookbooks/mysql2_chef_gem/libraries/provider_mysql2_chef_gem_mysql.rb:16:in `block in <class:Mysql>'

Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/database/recipes/mysql.rb

  2: mysql2_chef_gem 'default' do
  3:   client_version node['mysql']['version'] if node['mysql']
  4:   action :install
  5: end

Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/database/recipes/mysql.rb:2:in `from_file'

mysql2_chef_gem("default") do
  action [:install]
  retries 0
  retry_delay 2
  guard_interpreter :default
  cookbook_name "database"
  recipe_name "mysql"
end

`
I can't figure out the right combination of versioning to get this to work again.

The mysql2_chef_gem depends on the 6.x version of the mysql cookbook to get access to the multiple version support in the mysql_client resource. 5.x did not have this.
You should really upgrade to the 6.x series. Managing the repl password with Chef wasn't appropriate, since what you're really doing is managing a database table. It was breaking replication left and right due to every server node considering itself the source of truth for that record.
-s

It's worked just fine for me in my configuration for the better part of 6 months. It was providing me a way to set that password so that a deployment of a mysql instance would automatically join as a slave without any further manual intervention.


Fix: Market data cache

CLOB-131

Updated getMarket() method. Modified the getMarket method to fetch market data directly via API requests, bypassing previously used cached data. This ensures up-to-date market information is retrieved with each call

New getCachedMarkets() method. Added the getCachedMarkets method, which returns market data from cache if available. If no cached data exists, it triggers an API request to fetch all markets data

Replaced calls from getMarkets to getCachedMarkets within mapping functions

@n-strekalov


Replay webhook requests

Feature Description
I think it would be great if Gitea could replay webhook requests. That would make it very easy do re-trigger a CI run that previously failed for some error or another where I can't restart the build in the CI itself.
From a UX point of view, a button in the webhook history would be the best.

I also think this is necessary.

I was looking for another issue related to webhooks and saw that this issue was open. I'm not certain exactly which version added this, but as of 1.16.3 there is now a button in the configuration page for a webhook that implements resending the POST request associated with a webhook containing its original payload.


Added a new game Rainy Day

PR Description 📜
Added a new game Rainy Day Fixes. #5148
Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for website preview in assets/images
[x] I have added entries for my game in GameZone's README.md
[x] I have added README.md in my Game folder
[x] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.
[x] I have added my Game to gamesData.json file and it is loading properly on main website as intended.

Thank you @Shantnu-singh ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Hey @Shantnu-singh, You have reached your limit to contribute in GameZone with a score of 180.
We believe in giving equal opportunity to everyone so you will not be able to contribute to GameZone now onwards. 💗
Thank you for your valuable time and contribution in GameZone 🕹!
Your merged pull requests:

#5142 with labels: level3 score: (45)
#4952 with labels: level3 score: (45)
#4940 with labels: level3 score: (45)
#4772 with labels: level3 score: (45)

Thank you  @Shantnu-singh , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


Stalled node continues to run

The stalled node 2 in #1496 ran for 22 minutes in a stalled state (stuck at the switch block immediately before the upgrade).  I was expecting that after being stalled for 10 minutes that consensus would trigger a shutdown.
(Related: #1501)

In principle the standstill alert works. I set
maximum_round_exponent = 12

in the chainspec, so the maximum round length would be 4 seconds. A node counts as offline after being silent for three maximum-length rounds, i.e. after 12 seconds in this test.
I also set
standstill_timeout = "1min"

in the config of node 1.

After its restart, node 1 waited for 1 minute. Since no new units were coming in it requested the latest state.
After one more minute it was happy: progress detected. Because it had requested and received the first few units of the era from nodes 2 and 3.
Another minute passed and it was unhappy again: no progress. It had synced the protocol state but not new units were being produced anymore because too much weight was offline to finalize anything. It raised the standstill alert and shut down.

{"timestamp":"May 31 11:59:38.713","level":"INFO","fields":{"message":"no progress in the last 1m, creating latest state request","instance_id":"fc7de4c239ea9286cf60fcb1769c4867763f2bf5a96a0601394c1ef3cd325e9a"},"target":"casper_node::components::consensus::protocols::highway","span":{"ev":267,"name":"dispatch events"},"spans":[{"ev":267,"name":"crank"},{"ev":267,"name":"dispatch events"}]}

{"timestamp":"May 31 12:00:38.713","level":"DEBUG","fields":{"message":"progress detected; scheduling next standstill check in 1m","instance_id":"fc7de4c239ea9286cf60fcb1769c4867763f2bf5a96a0601394c1ef3cd325e9a"},"target":"casper_node::components::consensus::protocols::highway","span":{"ev":777,"name":"dispatch events"},"spans":[{"ev":777,"name":"crank"},{"ev":777,"name":"dispatch events"}]}

{"timestamp":"May 31 12:01:38.713","level":"INFO","fields":{"message":"no progress in the last 1m, raising standstill alert","instance_id":"fc7de4c239ea9286cf60fcb1769c4867763f2bf5a96a0601394c1ef3cd325e9a"},"target":"casper_node::components::consensus::protocols::highway","span":{"ev":1021,"name":"dispatch events"},"spans":[{"ev":1021,"name":"crank"},{"ev":1021,"name":"dispatch events"}]}

{"timestamp":"May 31 12:01:38.713","level":"ERROR","fields":{"message":"fatal error via control announcement","file":"node/src/components/consensus/era_supervisor.rs","line":"1196","msg":"current era is stalled; please retry"},"target":"casper_node::reactor","span":{"ev":1022,"name":"dispatch events"},"spans":[{"ev":1022,"name":"crank"},{"ev":1022,"name":"dispatch events"}]}

So it takes surprisingly long for the standstill alert to trigger, especially for a restarting node, because:

It takes three maximum round lengths until the online nodes realize that too much state is offline, and stop adding to the protocol state.
A joining node will not shutdown after a single standstill_timeout: It will first request the protocol state and wait for another standstill_timeout. After that, if it received any unit in the meantime, it will just reschedule the timer. Only after a third standstill_timeout it will raise the standstill alert and shut down.

However, if in #1496 the joining node really received no units, that still doesn't explain why it kept running for 22 minutes. Unfortunately the problem is hard to reproduce and we didn't have the above logs yet.

Closing this, since we cannot reproduce it.


Can you make a version compatible with python 2?

I would really love to use this tool at work, but we're using python 2.7.

Python 3 can be installed side-by-side with Python 2...

True, no big deal if you don't want to make another version


Undefined Index: HTTPS; Undefined variable: legacy

Just installed and trying it out.
Ran php -S <IP_ADDRESS>:8080 www/index.php and get the following in terminal:
[Mon Dec  7 13:47:11 2015] PHP Notice:  Undefined index: HTTPS in /Users/andrew/Sites/example-client/www/helpers.php on line 18
[Mon Dec  7 13:47:11 2015] PHP Notice:  Undefined variable: legacy in /Users/andrew/Sites/example-client/www/discovery-form.php on line 14

+1

Huh. What version of PHP are you running?

I see this on 5.6.13.

Thanks, fixed now :)


Symmetric

Fixes two bugs, one returning a None when a [] is better, and one indentation
Optimizes the enrichment calculation a little bit by checking the fail conditions before doing calculations
Partially modifies the enrichment to handle the fact that symmetric edges are only stored in one direction

Things still to do:

The symmetry handling is looking only for related_to, it needs to be expanded to all symmetric predicates.  This probably means bringing in BMT, and creating a set of symmetric predicates at startup time, then checking against that instead of just looking for related_to

Also need to fix the tests.  This may relate to whether or not to filter on the number of input nodes.  For normal AC we often want to do that, but then we also may not for the prototype-style enrichments.  So we probably need to make that an option on the function.


Stl 1821 erica api v.2

Short Description

Added v2 version leaned to FastAPI structure (v1 adapted to that structure).

Changes

Version 01 restructured, leaned to FastAPI structure
Create new version 02 with only "tax_offices" implemented
Other requests will communicate with the job queue and therefore for now NotImplementedError, but with an exception catch for producing a dummy response in accordance with the specification
There are 2 preconfigured docs urls that can be accessed as soon as the erica service is started:
-- Swagger UI served at /docs
-- ReDoc UI served at /redoc

Feedback

I am not really happy with the big class/variable names, specially for the unlock_code requests.
But i wanted to maintain all params/variables passed in the v1 requests
The success responses should be defined when the actual implementation is done, right?
About the documentation, are the docs urls what was meant in the ticket?
Grundsteuer folder in v2 is empty. What about informing the team? How should it be done and what is to say?

How to review this Pull Request
Link to Confluence (internal)

@JulianRoesner

Variable "include_elster_response" removed from all payload models.
Variable "ttlInMinutes" unchanged, using camel case would means the actual name of the variable in the request payload would differ from your Tech Spec
Response models for v2 were added but for the get_job-requests the default 422 ValidationError from openAPI will be displayed in the docs. Actually it is not possible that this error occurs since if we don't pass a request_id then we would be trying to access the API of the POST request and we would get a HTTp 405 Method not allowed. There is a way to completely removed the default 422 from openAPI but this would mean inherting from FastAPI and rewriting the method openapi (https://github.com/tiangolo/fastapi/issues/3424)
Creating response models for v1 would mean updating all API resources so that we return JSONRespones and not HTTPException, but you said, v2 would be important and v1 only if possible and easy?

If you find all changes OK, just approve and I would merge to main and let Frede now about our changes.

@JulianRoesner  I added an enum for the "Status" and modified the base class of the response model when getting a job from the queue


CRITICAL: Install important dependency to make this work

This will allow more users to use and enjoy this amazing project!

Auth-ui-shared is already in package-lock via dependency chain. Why add it to the package.json directly?

Closing: implicit dependency, will still be installed by "npm install". Let me know if I'm wrong or missed something.


Add granted cache clear all command

Request from slack:
Is there a command or way to clear all the cached credentials in one go, in batch and headless. Like run granted cache clear for everything, specifically session-credentials.
I did this workaround, but it is just a hack:
while granted cache list 2>&1 | grep -q session-credentials ; do (echo -e 'session-credentials\n'; sleep 0.1; echo) | granted cache clear >/dev/null 2>&1 ; done

I use to fetch credentials with a custom flow and put those in .aws/credentials file. The point is that I put short lived credentials there, and granted caches those credential (with which TTL? It's not clear to me).
It would be great to have this "granted cache clear all" command, or a customizable TTL so that granted session-credentials can expire accordingly to the .aws/credentials session tokens.

Other workaround in macosx: Open KeyChain Access app, search for "granted" and delete the credentials there:

Or from the command line run this. This is quicker than the example above
while security delete-generic-password -l "granted-aws-session-credentials"; do true; done


Invalid arch detection when installing Dart?

Hello,
I am using dsm to install Dart inside a devcontainer running on a Mac M1.
And I believe running dsm install 3.1.2 installs the wrong architecture version of Dart.
Indeed, when trying to run dart after the installation I get the following error:
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory

If I run dsm install --arch arm64 3.1.2, then all is good I can invoke dart.
I believe it detect the wrong architecture because if I run dsm install --arch x64 latest then I get the same error as when running dsm install latest.
Is it related to #2 ?
Running uname -m inside the VM gives me aarch64
Reproduction
Dockfile I am using:
# Use x86_64 architecture to avoid all the small pains
# coming from alpine over ARM --platform=linux/amd64
FROM mcr.microsoft.com/devcontainers/base:debian
# Install the xz-utils package
RUN apt-get update && apt-get install -y xz-utils

# Options
# Let it here to avoid conflicts with Microsoft options !!!
ARG DOTNET_VERSION=6.0.406
ARG NODE_VERSION=18.8.0
ARG PYTHON_VERSION=3.11.5
ARG DART_VERSION=3.1.2

USER vscode

# Change the default shell to zsh
SHELL ["/bin/zsh", "-c"]

# # Install .NET
WORKDIR /home/vscode

# Instal dart
RUN curl -fsSL https://dsm-vm.vercel.app/install.sh | bash
RUN echo "# Load dart path" >> .zshrc
RUN echo 'export PATH="/home/vscode/.dsm:$PATH"' >> .zshrc
RUN echo 'eval "`dsm env zsh`"' >> .zshrc
# RUN source .zshrc && dsm install $DART_VERSION
# RUN source .zshrc && dsm use $DART_VERSION

# Force docker to load the zsh profile
# This should be the last steps
CMD [ "/bin/zsh" ]

docker build --tag fable-dev .
docker run -it --rm fable-dev
dsm install latest
dart <- See that this fails with the reported error

In my case, I indeed use --arch arm64.
Because, I am using dsm as part of a dev container setup I created a small script:
#!/bin/zsh

if [[ $(uname -m) == 'aarch64' ]]; then
    dsm install --arch arm64 $1;
else
    dsm install $1;
fi

I don't know rust well and don't everything that is happening inside https://github.com/Yakiyo/dsm/blob/main/src/arch.rs
But am I correct to guess that the code in https://github.com/Yakiyo/dsm/blob/main/src/arch.rs is actually decided at compilation time?
I am saying that because from my research #[cfg(...)] seems to be a conditional compiler configuration.
With this hypothesis, is it possible that the problem is not actually arch.rs but the install.sh script which install the wrong release of dsm? In this case, this would means that
https://github.com/Yakiyo/dsm/blob/22f97944e986b6c2b13dcc1c9b2c5c91a10b6917/tools/install.sh#L71-L79
Should be changed to arm | armv7*| aarch64) ?
Inside of my VM if I run the following script which is a copy of the filename function from dsm install script. I get as a result dsm-x86_64-unknown-linux-musl.
#!/bin/bash

set -e

OS=$(echo `uname -s`|tr '[:upper:]' '[:lower:]')

case "$OS" in
    mingw*) OS='windows';;
    msys*) OS='windows';;
esac

filename() {
  if [ "$OS" = "linux" ]; then
    case "$(uname -m)" in
      arm | armv7*)
        FILENAME="arm-unknown-linux-gnueabihf"
        ;;
      *)
        FILENAME="x86_64-unknown-linux-musl"
    esac
  elif [ "$OS" = "darwin" ]; then
    FILENAME="x86_64-apple-darwin"
  elif [ "$OS" = "windows" ]; then
    FILENAME="x86_64-pc-windows-msvc.exe"
  else
    echo "OS $OS is not supported."
    echo "If you think that's a bug - please file an issue to https://github.com/Yakiyo/dsm/issues"
    exit 1
  fi
  FILE="dsm-$FILENAME"
}

filename
echo $FILE

If I change arm | armv7*) to arm | armv7* | aarch64) then I get dsm-arm-unknown-linux-gnueabihf which I believe is the correct binary regarding my Linux VM which is running on an ARM Apple M1 mac.

yes the things in arch.rs are decided at compile time and are hardcoded in the app. Ig the issue itself was in the installation script. Thanks for pointing that out. I'll fix the script and that should hopefully prevent any more similar issues in the future. Thanks for mentioning it.

Hum, I have another problem now.
When using the new installation script it is now installing arm-unknown-linux-gnueabihf version of dsm. But when trying to run dsm I now get this error:
qemu-arm: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
Which is a bit worth that before, because before I was able to run dsm it just didn't choose the right arch for dart.
I feel like on linux aarch64 we can't run the arm-unknown-linux-gnueabihf build of dsm. And need another release of dsm for aarch64 architecture. I tired to look at how to build dsm locally to make such a build and test ideas on how to fix the arch.rs  file too but I don't know how to do that.
Would it be possible to explain to me how I can produce a build of dsm and decide which target_arch I build it for?

arch.rs uses conditional compilation for hardcoding architecture values at compile time.
You can tinker with it as you want.
#[cfg(all(
    target_pointer_width = "32", // target pointer width here - 32bit/64bit
    any(target_arch = "arm", target_arch = "aarch64") // target arch here
))]
pub fn platform_arch() -> &'static str {
    "armv7"
}

all and any are some handy funcs. in the above example any(target_arch = "arm", target_arch = "aarch64") means it will use the function if, the target arch is either arm or aarch64. The entire cfg part can be written as following in boolean terms.
target_pointer == 32 && (target_arch == "arm" || target_arch == "aarch64")

You can tinker with it as you want and see what happens.

Thanks for the explanation on the compiler directives.
I was more looking to the cargo or rust command to run to compile the project and specify which architectures we are targeting. Something like cargo build --arch aarch64, I tried to look at the repo code but didn't really understand what the CI pipelines where doing sorry.

Generally cargo builds on the default system target. But it can be configured to build for a different target, though not a specific architecture. Here's the relevant docs: [ref](https://doc.rust-lang.org/cargo/commands/cargo-build.html#compilation-options

Ok thank you, I will give it a try


fix: Fix more validation issues

Including the ones @rjsparks sent me in email

Not sure why the tests fail, they succeed locally


Unnecessary Source.php file deleted

The current list of contributors is indicated in the Credit block of the README.md file.

Thank you


feat: sum fees in block and pay out

Please read contributing guidelines and remove this line.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#6482  👈
#6439
#6436
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @just-mitch and the rest of your teammates on  Graphite

Benchmark results
Metrics with a significant change:

app_circuit_proving_time_in_ms (Test:emit_nullifier): 2,744 (+20%)
app_circuit_proving_time_in_ms (FPC:fee_entrypoint_public): 16,619 (+90%)
app_circuit_proving_time_in_ms (FPC:fee_entrypoint_private): 9,060 (-49%)
app_circuit_proving_time_in_ms (Token:unshield): 37,039 (-20%)
protocol_circuit_witness_generation_time_in_ms (base-parity): 968 (+79%)
protocol_circuit_witness_generation_time_in_ms (public-kernel-teardown): 387 (-16%)
protocol_circuit_proving_time_in_ms (public-kernel-app-logic): 791 (-19%)
protocol_circuit_proving_time_in_ms (public-kernel-setup): 1,084 (+20%)
protocol_circuit_proving_time_in_ms (merge-rollup): 2,165 (+36%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
772 (+4%)
772 (+4%)
772 (+4%)

l1_rollup_calldata_gas
6,856 (+2%)
6,868 (+3%)
6,856 (+3%)

l1_rollup_execution_gas
587,411
587,423
587,411

l2_block_processing_time_in_ms
1,609
6,057
12,051

l2_block_building_time_in_ms
35,335
138,890
275,693

l2_block_rollup_simulation_time_in_ms
35,117
138,104
274,066

l2_block_public_tx_process_time_in_ms
16,609 (+1%)
71,021 (+1%)
141,826

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
18,057
33,718

node_database_size_in_bytes
21,373,008
38,027,344

pxe_database_size_in_bytes
29,868
59,425

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
13.1
21.4
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.7
31.8
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.767
0.660
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
62.0
97.6 (-1%)
317
613
1,200
2,379 (+1%)
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.636
0.604 (-1%)
0.576
0.573 (+1%)
0.569
0.569
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
73.9
143
455
897
1,774
3,531
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
106
208
692
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.645
0.645
0.619
0.618
0.615
0.616
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
80.8

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
108

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.710

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
84,505
673,247

Transaction size based on fee payment method
| Metric |  |
| - |  |
Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes
2 new note hashes

tx_pxe_processing_time_ms
37,689 (+1%)
3,683
114,210 (+2%)

Metric
0 public data writes
1 public data writes
2 public data writes
4 public data writes
8 public data writes

tx_sequencer_processing_time_ms
1,317 (-14%)
2,273 (+1%)
1,907
2,831 (-1%)
1,816

Close in favor of #6522


test: waffle tool example

Description:
Related issue(s):
Fixes #
Notes for reviewer:
Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 76.73%. Comparing base (265e137) to head (1d2eea5).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2640      +/-   ##
==========================================
- Coverage   77.06%   76.73%   -0.34%
==========================================
  Files          40       40
  Lines        3266     3301      +35
  Branches      683      691       +8
==========================================
+ Hits         2517     2533      +16
- Misses        529      544      +15
- Partials      220      224       +4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@acuarica Thank you! I’ve implemented your suggestions.