[go_router_builder] Exception when restoring path from state

Is there an existing issue for this?

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

What package does this bug report belong to?
go_router_builder
What target platforms are you seeing this bug on?
iOS
Have you already upgraded your packages?
Yes
Dependency versions
pubspec.lock
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
  _fe_analyzer_shared:
    dependency: transitive
    description:
      name: _fe_analyzer_shared
      sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051
      url: "https://pub.dev"
    source: hosted
    version: "64.0.0"
  analyzer:
    dependency: transitive
    description:
      name: analyzer
      sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893"
      url: "https://pub.dev"
    source: hosted
    version: "6.2.0"
  args:
    dependency: transitive
    description:
      name: args
      sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
      url: "https://pub.dev"
    source: hosted
    version: "2.4.2"
  async:
    dependency: transitive
    description:
      name: async
      sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
      url: "https://pub.dev"
    source: hosted
    version: "2.11.0"
  boolean_selector:
    dependency: transitive
    description:
      name: boolean_selector
      sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.1"
  build:
    dependency: transitive
    description:
      name: build
      sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
      url: "https://pub.dev"
    source: hosted
    version: "2.4.1"
  build_config:
    dependency: transitive
    description:
      name: build_config
      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
      url: "https://pub.dev"
    source: hosted
    version: "1.1.1"
  build_daemon:
    dependency: transitive
    description:
      name: build_daemon
      sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65"
      url: "https://pub.dev"
    source: hosted
    version: "4.0.0"
  build_resolvers:
    dependency: transitive
    description:
      name: build_resolvers
      sha256: d912852cce27c9e80a93603db721c267716894462e7033165178b91138587972
      url: "https://pub.dev"
    source: hosted
    version: "2.3.2"
  build_runner:
    dependency: "direct dev"
    description:
      name: build_runner
      sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b"
      url: "https://pub.dev"
    source: hosted
    version: "2.4.6"
  build_runner_core:
    dependency: transitive
    description:
      name: build_runner_core
      sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
      url: "https://pub.dev"
    source: hosted
    version: "7.2.10"
  built_collection:
    dependency: transitive
    description:
      name: built_collection
      sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
      url: "https://pub.dev"
    source: hosted
    version: "5.1.1"
  built_value:
    dependency: transitive
    description:
      name: built_value
      sha256: ff627b645b28fb8bdb69e645f910c2458fd6b65f6585c3a53e0626024897dedf
      url: "https://pub.dev"
    source: hosted
    version: "8.6.2"
  characters:
    dependency: transitive
    description:
      name: characters
      sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
      url: "https://pub.dev"
    source: hosted
    version: "1.3.0"
  checked_yaml:
    dependency: transitive
    description:
      name: checked_yaml
      sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
      url: "https://pub.dev"
    source: hosted
    version: "2.0.3"
  clock:
    dependency: transitive
    description:
      name: clock
      sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
      url: "https://pub.dev"
    source: hosted
    version: "1.1.1"
  code_builder:
    dependency: transitive
    description:
      name: code_builder
      sha256: "315a598c7fbe77f22de1c9da7cfd6fd21816312f16ffa124453b4fc679e540f1"
      url: "https://pub.dev"
    source: hosted
    version: "4.6.0"
  collection:
    dependency: "direct main"
    description:
      name: collection
      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
      url: "https://pub.dev"
    source: hosted
    version: "1.17.2"
  convert:
    dependency: transitive
    description:
      name: convert
      sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
      url: "https://pub.dev"
    source: hosted
    version: "3.1.1"
  crypto:
    dependency: transitive
    description:
      name: crypto
      sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
      url: "https://pub.dev"
    source: hosted
    version: "3.0.3"
  cupertino_icons:
    dependency: "direct main"
    description:
      name: cupertino_icons
      sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
      url: "https://pub.dev"
    source: hosted
    version: "1.0.6"
  dart_style:
    dependency: transitive
    description:
      name: dart_style
      sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334
      url: "https://pub.dev"
    source: hosted
    version: "2.3.3"
  fake_async:
    dependency: transitive
    description:
      name: fake_async
      sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
      url: "https://pub.dev"
    source: hosted
    version: "1.3.1"
  file:
    dependency: transitive
    description:
      name: file
      sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
      url: "https://pub.dev"
    source: hosted
    version: "7.0.0"
  fixnum:
    dependency: transitive
    description:
      name: fixnum
      sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
      url: "https://pub.dev"
    source: hosted
    version: "1.1.0"
  flutter:
    dependency: "direct main"
    description: flutter
    source: sdk
    version: "0.0.0"
  flutter_lints:
    dependency: "direct dev"
    description:
      name: flutter_lints
      sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
      url: "https://pub.dev"
    source: hosted
    version: "2.0.3"
  flutter_test:
    dependency: "direct dev"
    description: flutter
    source: sdk
    version: "0.0.0"
  flutter_web_plugins:
    dependency: transitive
    description: flutter
    source: sdk
    version: "0.0.0"
  frontend_server_client:
    dependency: transitive
    description:
      name: frontend_server_client
      sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
      url: "https://pub.dev"
    source: hosted
    version: "3.2.0"
  glob:
    dependency: transitive
    description:
      name: glob
      sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.2"
  go_router:
    dependency: "direct main"
    description:
      name: go_router
      sha256: "5668e6d3dbcb2d0dfa25f7567554b88c57e1e3f3c440b672b24d4a9477017d5b"
      url: "https://pub.dev"
    source: hosted
    version: "10.1.2"
  go_router_builder:
    dependency: "direct main"
    description:
      name: go_router_builder
      sha256: "8f828e7d8985aaa347d8699830ccef96cf6c47319dce8051bba037e0252e9fe4"
      url: "https://pub.dev"
    source: hosted
    version: "2.3.2"
  graphs:
    dependency: transitive
    description:
      name: graphs
      sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
      url: "https://pub.dev"
    source: hosted
    version: "2.3.1"
  http_multi_server:
    dependency: transitive
    description:
      name: http_multi_server
      sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
      url: "https://pub.dev"
    source: hosted
    version: "3.2.1"
  http_parser:
    dependency: transitive
    description:
      name: http_parser
      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
      url: "https://pub.dev"
    source: hosted
    version: "4.0.2"
  io:
    dependency: transitive
    description:
      name: io
      sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.4"
  js:
    dependency: transitive
    description:
      name: js
      sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
      url: "https://pub.dev"
    source: hosted
    version: "0.6.7"
  json_annotation:
    dependency: transitive
    description:
      name: json_annotation
      sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
      url: "https://pub.dev"
    source: hosted
    version: "4.8.1"
  lints:
    dependency: transitive
    description:
      name: lints
      sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.1"
  logging:
    dependency: transitive
    description:
      name: logging
      sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.0"
  matcher:
    dependency: transitive
    description:
      name: matcher
      sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
      url: "https://pub.dev"
    source: hosted
    version: "0.12.16"
  material_color_utilities:
    dependency: transitive
    description:
      name: material_color_utilities
      sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
      url: "https://pub.dev"
    source: hosted
    version: "0.5.0"
  meta:
    dependency: transitive
    description:
      name: meta
      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
      url: "https://pub.dev"
    source: hosted
    version: "1.9.1"
  mime:
    dependency: transitive
    description:
      name: mime
      sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
      url: "https://pub.dev"
    source: hosted
    version: "1.0.4"
  package_config:
    dependency: transitive
    description:
      name: package_config
      sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.0"
  path:
    dependency: transitive
    description:
      name: path
      sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
      url: "https://pub.dev"
    source: hosted
    version: "1.8.3"
  pool:
    dependency: transitive
    description:
      name: pool
      sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
      url: "https://pub.dev"
    source: hosted
    version: "1.5.1"
  pub_semver:
    dependency: transitive
    description:
      name: pub_semver
      sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.4"
  pubspec_parse:
    dependency: transitive
    description:
      name: pubspec_parse
      sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
      url: "https://pub.dev"
    source: hosted
    version: "1.2.3"
  shelf:
    dependency: transitive
    description:
      name: shelf
      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
      url: "https://pub.dev"
    source: hosted
    version: "1.4.1"
  shelf_web_socket:
    dependency: transitive
    description:
      name: shelf_web_socket
      sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.4"
  sky_engine:
    dependency: transitive
    description: flutter
    source: sdk
    version: "0.0.99"
  source_gen:
    dependency: transitive
    description:
      name: source_gen
      sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16
      url: "https://pub.dev"
    source: hosted
    version: "1.4.0"
  source_helper:
    dependency: transitive
    description:
      name: source_helper
      sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd"
      url: "https://pub.dev"
    source: hosted
    version: "1.3.4"
  source_span:
    dependency: transitive
    description:
      name: source_span
      sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
      url: "https://pub.dev"
    source: hosted
    version: "1.10.0"
  stack_trace:
    dependency: transitive
    description:
      name: stack_trace
      sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
      url: "https://pub.dev"
    source: hosted
    version: "1.11.0"
  stream_channel:
    dependency: transitive
    description:
      name: stream_channel
      sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.1"
  stream_transform:
    dependency: transitive
    description:
      name: stream_transform
      sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.0"
  string_scanner:
    dependency: transitive
    description:
      name: string_scanner
      sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.0"
  term_glyph:
    dependency: transitive
    description:
      name: term_glyph
      sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
      url: "https://pub.dev"
    source: hosted
    version: "1.2.1"
  test_api:
    dependency: transitive
    description:
      name: test_api
      sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
      url: "https://pub.dev"
    source: hosted
    version: "0.6.0"
  timing:
    dependency: transitive
    description:
      name: timing
      sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.1"
  typed_data:
    dependency: transitive
    description:
      name: typed_data
      sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
      url: "https://pub.dev"
    source: hosted
    version: "1.3.2"
  vector_math:
    dependency: transitive
    description:
      name: vector_math
      sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
      url: "https://pub.dev"
    source: hosted
    version: "2.1.4"
  watcher:
    dependency: transitive
    description:
      name: watcher
      sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
      url: "https://pub.dev"
    source: hosted
    version: "1.1.0"
  web:
    dependency: transitive
    description:
      name: web
      sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
      url: "https://pub.dev"
    source: hosted
    version: "0.1.4-beta"
  web_socket_channel:
    dependency: transitive
    description:
      name: web_socket_channel
      sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
      url: "https://pub.dev"
    source: hosted
    version: "2.4.0"
  yaml:
    dependency: transitive
    description:
      name: yaml
      sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
      url: "https://pub.dev"
    source: hosted
    version: "3.1.2"
sdks:
  dart: ">=3.1.2 <4.0.0"
  flutter: ">=3.7.0"

Steps to reproduce

Run the code sample (a modified version of stateful_shell_route_example.dart).
Tap the button "Push DateTimeRoute" in Section A.
Go to Section B.
Go back to Section A.

Expected results
Section A would show and would show the latest route - the DateTime screen.
Actual results
Section A doesn't show and an exception is thrown "Null check operator used on a null value".
Code sample
Code sample
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

part 'main.g.dart';

final GlobalKey<NavigatorState> _sectionANavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'sectionANav');
final GlobalKey<NavigatorState> _sectionBNavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'sectionBNav');

void main() => runApp(App());

class App extends StatelessWidget {
  App({super.key});

  @override
  Widget build(BuildContext context) =>
      MaterialApp.router(routerConfig: _router);

  final GoRouter _router = GoRouter(
    routes: $appRoutes,
    initialLocation: '/detailsA',
  );
}

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

  @override
  Widget build(BuildContext context) =>
      Scaffold(appBar: AppBar(title: const Text('foo')));
}

@TypedStatefulShellRoute<MyShellRouteData>(
  branches: <TypedStatefulShellBranch<StatefulShellBranchData>>[
    TypedStatefulShellBranch<BranchAData>(
      routes: <TypedRoute<RouteData>>[
        TypedGoRoute<DetailsARouteData>(path: '/detailsA'),
      ],
    ),
    TypedStatefulShellBranch<BranchBData>(
      routes: <TypedRoute<RouteData>>[
        TypedGoRoute<DetailsBRouteData>(path: '/detailsB'),
      ],
    ),
  ],
)
class MyShellRouteData extends StatefulShellRouteData {
  const MyShellRouteData();

  @override
  Widget builder(
    BuildContext context,
    GoRouterState state,
    StatefulNavigationShell navigationShell,
  ) {
    return navigationShell;
  }

  static const String $restorationScopeId = 'restorationScopeId';

  static Widget $navigatorContainerBuilder(
    BuildContext context,
    StatefulNavigationShell navigationShell,
    List<Widget> children,
  ) {
    return ScaffoldWithNavBar(
      navigationShell: navigationShell,
      children: children,
    );
  }
}

class BranchAData extends StatefulShellBranchData {
  const BranchAData();

  static final GlobalKey<NavigatorState> $navigatorKey = _sectionANavigatorKey;
  static const String $restorationScopeId = 'restorationScopeId';
}

class BranchBData extends StatefulShellBranchData {
  const BranchBData();

  static final GlobalKey<NavigatorState> $navigatorKey = _sectionBNavigatorKey;
  static const String $restorationScopeId = 'restorationScopeId';
}

class DetailsARouteData extends GoRouteData {
  const DetailsARouteData();

  @override
  Widget build(BuildContext context, GoRouterState state) {
    return const DetailsScreen(label: 'A');
  }
}

class DetailsBRouteData extends GoRouteData {
  const DetailsBRouteData();

  @override
  Widget build(BuildContext context, GoRouterState state) {
    return const DetailsScreen(label: 'B');
  }
}

@TypedGoRoute<DateTimeRoute>(path: '/dates:dateTimeString')
class DateTimeRoute extends GoRouteData {
  const DateTimeRoute({required this.dateTimeString});

  final String dateTimeString;

  @override
  Widget build(BuildContext context, GoRouterState state) {
    return Center(child: Text(dateTimeString));
  }
}

/// Builds the "shell" for the app by building a Scaffold with a
/// BottomNavigationBar, where [child] is placed in the body of the Scaffold.
class ScaffoldWithNavBar extends StatelessWidget {
  /// Constructs an [ScaffoldWithNavBar].
  const ScaffoldWithNavBar({
    required this.navigationShell,
    required this.children,
    Key? key,
  }) : super(key: key ?? const ValueKey<String>('ScaffoldWithNavBar'));

  /// The navigation shell and container for the branch Navigators.
  final StatefulNavigationShell navigationShell;

  /// The children (branch Navigators) to display in a custom container
  /// ([AnimatedBranchContainer]).
  final List<Widget> children;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: AnimatedBranchContainer(
        currentIndex: navigationShell.currentIndex,
        children: children,
      ),
      bottomNavigationBar: BottomNavigationBar(
        // Here, the items of BottomNavigationBar are hard coded. In a real
        // world scenario, the items would most likely be generated from the
        // branches of the shell route, which can be fetched using
        // `navigationShell.route.branches`.
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Section A'),
          BottomNavigationBarItem(icon: Icon(Icons.work), label: 'Section B'),
        ],
        currentIndex: navigationShell.currentIndex,
        onTap: (int index) => _onTap(context, index),
      ),
    );
  }

  /// Navigate to the current location of the branch at the provided index when
  /// tapping an item in the BottomNavigationBar.
  void _onTap(BuildContext context, int index) {
    // When navigating to a new branch, it's recommended to use the goBranch
    // method, as doing so makes sure the last navigation state of the
    // Navigator for the branch is restored.
    navigationShell.goBranch(
      index,
      // A common pattern when using bottom navigation bars is to support
      // navigating to the initial location when tapping the item that is
      // already active. This example demonstrates how to support this behavior,
      // using the initialLocation parameter of goBranch.
      initialLocation: index == navigationShell.currentIndex,
    );
  }
}

/// Custom branch Navigator container that provides animated transitions
/// when switching branches.
class AnimatedBranchContainer extends StatelessWidget {
  /// Creates a AnimatedBranchContainer
  const AnimatedBranchContainer(
      {super.key, required this.currentIndex, required this.children});

  /// The index (in [children]) of the branch Navigator to display.
  final int currentIndex;

  /// The children (branch Navigators) to display in this container.
  final List<Widget> children;

  @override
  Widget build(BuildContext context) {
    return Stack(
        children: children.mapIndexed(
      (int index, Widget navigator) {
        return AnimatedScale(
          scale: index == currentIndex ? 1 : 1.5,
          duration: const Duration(milliseconds: 400),
          child: AnimatedOpacity(
            opacity: index == currentIndex ? 1 : 0,
            duration: const Duration(milliseconds: 400),
            child: _branchNavigatorWrapper(index, navigator),
          ),
        );
      },
    ).toList());
  }

  Widget _branchNavigatorWrapper(int index, Widget navigator) => IgnorePointer(
        ignoring: index != currentIndex,
        child: TickerMode(
          enabled: index == currentIndex,
          child: navigator,
        ),
      );
}

/// The details screen for either the A or B screen.
class DetailsScreen extends StatefulWidget {
  /// Constructs a [DetailsScreen].
  const DetailsScreen({
    required this.label,
    this.param,
    this.extra,
    super.key,
  });

  /// The label to display in the center of the screen.
  final String label;

  /// Optional param
  final String? param;

  /// Optional extra object
  final Object? extra;
  @override
  State<StatefulWidget> createState() => DetailsScreenState();
}

/// The state for DetailsScreen
class DetailsScreenState extends State<DetailsScreen> {
  int _counter = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Details Screen - ${widget.label}'),
      ),
      body: _build(context),
    );
  }

  Widget _build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Text(
            'Details for ${widget.label} - Counter: $_counter',
            style: Theme.of(context).textTheme.titleLarge,
          ),
          const Padding(padding: EdgeInsets.all(4)),
          TextButton(
            onPressed: () {
              setState(() {
                _counter++;
              });
            },
            child: const Text('Increment counter'),
          ),
          const Padding(padding: EdgeInsets.all(8)),
          if (widget.param != null)
            Text(
              'Parameter: ${widget.param!}',
              style: Theme.of(context).textTheme.titleMedium,
            ),
          const Padding(padding: EdgeInsets.all(8)),
          if (widget.extra != null)
            Text(
              'Extra: ${widget.extra!}',
              style: Theme.of(context).textTheme.titleMedium,
            ),
          const Padding(padding: EdgeInsets.all(8)),
          TextButton(
            onPressed: () {
              DateTimeRoute(
                dateTimeString: DateTime.now().toIso8601String(),
              ).push(context);
            },
            child: const Text('Push DateTimeRoute'),
          ),
        ],
      ),
    );
  }
}

Screenshots or Videos

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.13.4, on macOS 13.5.2 22G91 darwin-x64, locale en-US)
    • Flutter version 3.13.4 on channel stable at /Users/anthonymoretti/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 367f9ea16b (2 days ago), 2023-09-12 23:27:53 -0500
    • Engine revision 9064459a8b
    • Dart version 3.1.2
    • DevTools version 2.25.0

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed
      instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

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

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

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed
      instructions).

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

[✓] Connected device (3 available)
    • iPhone 14 Pro (mobile) • D39B9A0B-FAF8-42AA-A796-664401A9CE8C • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)        • macos                                • darwin-x64     • macOS 13.5.2
      22G91 darwin-x64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome
      116.0.5845.187

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

! Doctor found issues in 2 categories.

Reproducible using the code sample and the steps provided above.

logs(truncated)
flutter: ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
flutter: The following _TypeError was thrown while dispatching notifications for GoRouteInformationProvider:
flutter: Null check operator used on a null value
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      $DateTimeRouteExtension._fromState (package:emoji/main.g.dart:90:63)
flutter: #1      GoRouteData.$route.factoryImpl (package:go_router/src/route_data.dart:97:53)
flutter: #2      GoRouteData.$route.redirect (package:go_router/src/route_data.dart:107:9)
flutter: #3      RouteConfiguration._getRouteLevelRedirect (package:go_router/src/configuration.dart:464:44)
flutter: #4      RouteConfiguration._getRouteLevelRedirect.processRouteRedirect (package:go_router/src/configuration.dart:460:9)
flutter: #5      RouteConfiguration._getRouteLevelRedirect (package:go_router/src/configuration.dart:480:14)
flutter: #6      RouteConfiguration._getRouteLevelRedirect.processRouteRedirect (package:go_router/src/configuration.dart:460:9)
flutter: #7      RouteConfiguration._getRouteLevelRedirect (package:go_router/src/configuration.dart:480:14)
flutter: #8      RouteConfiguration.redirect.processRedirect.processTopLevelRedirect (package:go_router/src/configuration.dart:422:13)
flutter: #9      RouteConfiguration.redirect.processRedirect (package:go_router/src/configuration.dart:438:16)
flutter: #10     RouteConfiguration.redirect (package:go_router/src/configuration.dart:444:14)
flutter: #11     GoRouteInformationParser._redirect (package:go_router/src/parser.dart:149:10)
flutter: #12     GoRouteInformationParser.parseRouteInformationWithDependencies (package:go_router/src/parser.dart:73:34)
flutter: #13     _RouterState._processRouteInformation (package:flutter/src/widgets/router.dart:745:8)
flutter: #14     _RouterState._handleRouteInformationProviderNotification (package:flutter/src/widgets/router.dart:763:5)
flutter: #15     ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:433:24)
flutter: #16     GoRouteInformationProvider.notifyListeners (package:go_router/src/information_provider.dart:141:11)
flutter: #17     GoRouteInformationProvider._setValue (package:go_router/src/information_provider.dart:149:7)
flutter: #18     GoRouteInformationProvider.restore (package:go_router/src/information_provider.dart:182:5)
flutter: #19     GoRouter.restore (package:go_router/src/router.dart:328:30)
flutter: #20     StatefulNavigationShellState.goBranch (package:go_router/src/route.dart:1226:15)
flutter: #21     StatefulNavigationShell.goBranch (package:go_router/src/route.dart:1063:18)
flutter: #22     ScaffoldWithNavBar._onTap (package:emoji/main.dart:164:21)
flutter: #23     ScaffoldWithNavBar.build.<anonymous closure> (package:emoji/main.dart:153:31)

flutter doctor -v
[!] Flutter (Channel stable, 3.13.4, on macOS 13.5.2 22G91 darwin-arm64, locale en-GB)
    • Flutter version 3.13.4 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 367f9ea16b (2 days ago), 2023-09-12 23:27:53 -0500
    • Engine revision 9064459a8b
    • Dart version 3.1.2
    • DevTools version 2.25.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    ✗ Unable to get list of installed Simulator runtimes.
    • CocoaPods version 1.12.1

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

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

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.1)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.9559.10

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

[✓] Connected device (3 available)
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.0 21A5277j
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 13.5.2 22G91 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 117.0.5938.62

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

! Doctor found issues in 2 categories.

[✓] Flutter (Channel master, 3.14.0-14.0.pre.309, on macOS 13.5.2 22G91 darwin-arm64, locale en-GB)
    • Flutter version 3.14.0-14.0.pre.309 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 0b540a87f1 (9 hours ago), 2023-09-15 13:39:30 +0900
    • Engine revision 45bc4307cd
    • Dart version 3.2.0 (build 3.2.0-162.0.dev)
    • DevTools version 2.28.0-dev.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode-15.0.0-Release.Candidate.app/Contents/Developer
    • Build 15A240d
    ✗ Unable to get list of installed Simulator runtimes.
    • CocoaPods version 1.12.1

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

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

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.1)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.9559.10

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

[✓] Connected device (3 available)
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.0 21A5277j
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 13.5.2 22G91 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 117.0.5938.62

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

! Doctor found issues in 1 category.

this is a duplicate of https://github.com/flutter/flutter/issues/99099

Hi @chunhtai Are you sure it's a duplicate? The other issue has to do with:

Non-serializable extra parameter.
Widget inspector is open.

This issue has to do with:

Serializable path parameter (string).
Widget inspector is not open.

The root cause are the same. The extra is serialized and deserialized during the process, and it become null if extra is not serializable.


Improve find and package support

This PR upgrades cmake to 2.8.12 to implement proper cmake find_package support using config and export file generation. Having this support enables users to use installed cppformat with a simple find_package call. Directly using a version from a build directory is also supported. I think that this should also resolve #257.
I am aware that upgrading cmake is maybe not desired. However, 2.8.12 is already pretty old and even available on the current (and soon superseded) Ubuntu 14.04 LTS. It should further be no problem to build a current CMake from source, especially for a software developer which wants to use cppformat.
Additionally, packaging in out of source build directories is now supported.
Regards,
niosHD
Usage Example:
main.cpp:
#include <cppformat/format.h>
int main(int argc, char** argv)
{
  for(int i = 0; i < argc; ++i)
    fmt::print("{}: {}\n",i,argv[i]);
  return 0;
}

CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.12)

project(cppformat-test)

find_package(cppformat REQUIRED)

add_executable(cppformat-test "main.cpp")
target_link_libraries(cppformat-test cppformat)

Configuring when cppformat is installed under CMAKE_INSTALL_PREFIX: cmake <PATH_TO_TEST_SRC>
Configuring when cppformat is installed ELSEWHERE: cmake -Dcppformat_DIR=<ELSEWHERE>/lib/cmake/cppformat <PATH_TO_TEST_SRC>
Configuring when cppformat is only built: cmake -Dcppformat_DIR=<cppformat_BUILD_DIR> <PATH_TO_TEST_SRC>

Awesome, thanks for the contribution! I'm fine with increasing CMake version requirement to 2.8.12, but a newer version of CMake should be installed on Travis then, because the current version is 2.8.7 causing build failure: https://travis-ci.org/cppformat/cppformat/jobs/101819674
Also a minor comment regarding CPACK_SOURCE_PACKAGE_FILE_NAME above.

Great, your welcome! I will address your comment and also have a look at the travis config to fix the CI issue.

Merged with some minor, but opinionated =) changes in https://github.com/cppformat/cppformat/commit/22f61140d102af97501fa39ef03687f221a89295 mostly to improve consistency with existing code. Thanks!

Haha, consistency is definitely desired. =)
Anyway, thank you for this great library and the fast and responsive processing of this pull request!

Is it possible to use this in combination with ExternalProject_Add and/or git subtree?

Not sure about ExternalProject_Add but if you have cppformat's code in your repo via subtree or other method, then you can simply use add_subdirectory(path/to/cppformat) in CMake.

I have not tested it right now but it should work with ExternalProject_Add without a problem. It even simplifies this use case given that projects which use the library do not need to know what exact cppformat version it is, if it was build static or dynamic, or how the library file is named exactly.
However, I want to stress that this is only true for cmake powered super builds which exclusively build external projects.
If you want to use ExternalProject_Add in a project for dependencies of add_library or add_executable then this PR does not help you at all. This is due to a limitation/design decision of CMake. CMake needs the config files for find_package, which are now build at generation time of the library build system, at configuration/generation time of the project build system. ExternalProject on the other hand is only executed at build time which obviously is later in time. Use the add_subdirectory technique, which already has been mentioned by vitaut, instead if this is your use case.
Hope that helps,
niosHD

@vitaut I just realized that your changes in 22f6114 changed the behavior when the library is used from the build tree.
I previously copied the header into build tree under cppformat/format.h and exported the build directory as include directory. The new version omits the copy and directly exports the current source directory. I definitely would preferred this solution as well, but they are unfortunately not equivalent.
The problem of this solution is that the required include paths are different. Including an installed version is done via #include <cppformat/format.h>. Including cppformat using the exported target from the build directory on the other hand now is done via #include <format.h>.
We definitely should fix this discrepancy given that an application should not be aware of the way cppformat is built/installed.
I see three possible solutions:

Move the source files itself into a cppformat directory. However, this most likely breaks current users which simply include the cppformat source directory.
Reintroduce the copy to the build directory. This is more like a workaround but has the advantage that nothing changes for current users.
Remove the export feature from build tree completely altogether.

Suggestions?
Regards,
Mario

I'd go with one of the following options:

Require users to maintain the build directory naming consistent with whatever includes they use, so if they want to include cppformat/format.h, they should build in the directory named cppformat (in particular, this will work with an in-source build with the default repo name). Or they can simply include format.h and configure include directories accordingly.
Make export from build directory a configuration option disabled by default and copy files only if it is enabled. Kind of like your second option but controlled by a CMake flag.

What do you think?

I don't really like to force the user to mess with the include directories later on. The whole point of the export and find scripts is to get this right. I therefore would go with your second option.
What do you think if we make the export, or at least the header copy, conditional but instead of introducing a new option we only do it for out-of-source builds? In-source builds would than behave like right now and out-of source builds would behave like in the original PR.

I don't really like to force the user to mess with the include directories later on. The whole point of the export and find scripts is to get this right.

Fair enough.

What do you think if we make the export, or at least the header copy, conditional but instead of introducing a new option we only do it for out-of-source builds?

The point is to avoid copying headers for out-of-source builds, for in-source CMake might be clever enough not to do this by itself.
Thinking more of it, I'm starting to lean towards your first option, namely moving the source files to a cppformat subdirectory. This will break some current users who do add_subdirectory, but we'll have to do it anyway at some point as the library grows. It can be combined with some improvements to avoid breakage in the future, e.g. adding an interface include directory for the cppformat target so that users could just do
target_link_library(<target> cppformat)

and it would set up include directories without the need to specify them manually.

On 01/27/2016 05:22 PM, Victor Zverovich wrote:

What do you think if we make the export, or at least the header copy, conditional but instead of introducing a new option we only do it for out-of-source builds?

The point is to avoid copying headers for out-of-source builds, for in-source CMake might be clever enough not to do this by itself.

Understood. I previously assumed that you just want to get rid of this
behavior for in-source builds because it messes with the working copy.
Thank you for clarifying.

Thinking more of it, I'm starting to lean towards your first option, namely moving the source files to a cppformat subdirectory. This will break some current users who do add_subdirectory, but we'll have to do it anyway at some point as the library grows. It can be combined with some improvements to avoid breakage in the future, e.g. adding an interface include directory for the cppformat target so that users could just do

I am certain that this would be the cleanest solution. I was just
reserved about it given that it is quite invasive.

target_link_library(<target> cppformat)

and it would set up include directories without the need to specify them manually.

Right, this is exactly the nice behavior which you get from the new find
scripts. If we get the same nice usability when we include cppformat via
add_subdirectory that would be awesome.
I will give it a try tomorrow and submit a PR as soon as I have
something satisfying.

Great! BTW I think breakage can be avoided in most cases by having the following format.h in the top level:
#include "cppformat/format.h"
#warning "Including format.h from the top-level directory is deprecated."

or something like that.


[RFR] CurvyBot post die messages on chat

CurvyBot now post a message on the chat when a player dies.
3 types of messages:

"Mizu was killed by Daph."
"Daph crashed on the wall."
"Mizu committed suicide."

Arf.. I'm closing this PR as I've been told (I remember it too late) that it should be based on develop branch & not master.


refactor default + advanced generator approach in order to have 1 generator with if else statements

This issue has been addressed in PR #61


Switch sources to typed arrays instead of strings

[!Warning]
This is an interface breaking change.

Change our implementation to keep source file contents as Uint8Arrays instead of string. This is needed since AST source map are actually byte offsets into the file. We were erroneously trearting them as string indices, which breaks in the presence of multi-byte Unicode characters.
This involves:

Changing a bunch of the compile* interfaces to accept Map<string, Uint8Array> instead of Map<string, string>.
Changing the StructuredDocumentation pass to correctly compute docs by doing byte indexing.
Changing the ASTWriter to compute a correct map.
Adding tests.

Todo (@blitz-1306 ): I havent looked at inline assembly. Is there anything to do there?

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

Comparison is base (d35f0de) 91.59% compared to head (73492b7) 91.60%.
 Consider uploading reports for the commit 25f4805 to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #242   +/-   ##
=======================================
  Coverage   91.59%   91.60%
=======================================
  Files         267      270    +3
  Lines        6630     6636    +6
  Branches     1353     1350    -3
=======================================
+ Hits         6073     6079    +6
  Misses        291      291
  Partials      266      266

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


Add live example

Deploy a live examples so onlookers can view the project. Possibly deploy the example https://github.com/remcohaszing/codemirror-languageservice/tree/main/example to github pages or the sort?

I agree though counterpoint: the example source code will continue to be present if there's a viewable page + the fact that there is an example directory means there are concrete examples that could be shown.
Maybe I've misunderstood your point but if the question was showing it with multiple language services, wouldn't that just be multiple demos(?)

It would be cool to create a demo with mdx-analyzer

The example is now hosted on https://codemirror-languageservice.js.org. I made it a bit fancier, but not too much. I welcome changes to make it a bit nicer (i.e. light mode support), but I want to keep it a somewhat minimal.

It would be cool to create a demo with mdx-analyzer

I love that suggestion! :heart: But for now I’m leaving that out.


Add File path sanitization

Currently, the router serves the file path directly on the '/download' route, this can lead to leakage of sensitive system files to anyone connected to the server.

Fixed the issue


Make cop importable as import "contextjs"

Think of a solution so the import statement looks nice in apps using ContetxJS. package.json and bower in combination with an index.js might help.
That "main" file should export functions as indicated in #19, while more implementation details should be importable as they currently are, by importing directly from Layers.js.

Turnaround: don't do side-effects by default, so make the entry module import side-effect free again. And usually you want to do import { proceed, ... } from 'contextjs' again.

Done with merge #36


Swagger ui lists POST/PUT/DELETE/OPTIONS/HEAD/PATCH  operations for every GET op

I am using Swagger 2 in my Spring Boot application. I have 2 GET methods in my rest controller class which I expose through Swagger. Now in the Swagger page when I bring up the list of operations, for each of these GETs it also lists POST/PUT/DELETE/OPTIONS/HEAD/PATCH ops which I clearly do not want. How do I turn this off so that I could see only the 2 GETs that I intended ?
This is what I have in my POM.
       <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
            <scope>compile</scope>
        </dependency>

I could resolve this. My RequestMapping was not using method parameter earlier. The following illustrates it.
 //@RequestMapping("/greeting/{lang}")
@RequestMapping(value = "/greeting/{lang}", method = RequestMethod.GET)

You are right!!! After looking the answer for couple hours, finally .... I follow your suggestion and it works.
Thanks bro

Please use 2.7.0 tho' @FarianHadi

hemm, I use 2.6.1 at the moment, okay perhaps I will try later, thanks

Do you have another sulotion?  My project is too old and has hundreds of method only using @RequestMapping annotation. I just want to show all GET and PUST methods in swagger docs. Could you please help? @dilipkrish

Do you have another sulotion? My project is too old and has hundreds of method only using @RequestMapping annotation. I just want to show all GET and PUST methods in swagger docs. Could you please help? @dilipkrish

me too


Release version 0.2.0

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

Project coverage is 100.00%. Comparing base (041b905) to head (df38342).
Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #288   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           10        10
  Lines          304       304
  Branches        59        59
=========================================
  Hits           304       304

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


🐛 [firebase_app_check] getToken may return an invalid App Check token on Android

Bug report
Describe the bug
In the Android wrapper for the Flutter getToken method, I noticed it calls through to Android's getToken method. This method was intended for internal interop use with other Firebase SDKs (i.e. Firestore) and as such, returns a placeholder token if the App Check token exchange fails. However, the expected behavior for developers is for the exception to be propagated if the App Check token exchange fails.
Instead of calling Android's getToken method, the getAppCheckToken method, which is the public API method for obtaining an App Check token and propagates any exceptions, should be called instead.

Thanks for the report @rosalyntan

Is this probably related to https://github.com/firebase/flutterfire/issues/10084? In my production application, I also see a strange amount of invalid requests (3-5% consistently).

this is base64 encoded and means {"error":"UNKNOWN_ERROR"} i have the same issue with ^0.1.1+8

Same issue here. I think this have relation with sms authentication. Are you using this method?


Add proper README and tutorials

There are some documentation improvements which need to be made:

[x] Add a README
[x] Add an introduction and/or getting started page

README and tutorials added in https://github.com/tipccjs/tipcc.js/commit/7d5e76296b4df97abf17e395c2c399c7a591352c


Allow setting custom facecolors for figures

Hello. I'm having an issue where Matplotlib's facecolor options for the outside background is not working :
Situation 1 - should show white background if facecolor is not specified:

Situation 2 - should show the color specified on facecolor, but shows grey:

Situation 3 - Works normally without using MPL/Kitty backend:

I found on the code a reference to this:
https://github.com/jktr/matplotlib-backend-kitty/blob/d7681fe7cb6af100ad000626dca0128be2ec3f0f/matplotlib-backend-kitty/__init__.py#L55
Removing the , facecolor='#888888' option makes it work just like normal matplotlib does:
No facecolor setting shows as white:

Specified color shows correctly:

I'm creating a PR for this change (see below).
My info:
fedora in 🌐 server in ~
❯ kitty -v
kitty 0.27.1 created by Kovid Goyal
fedora in 🌐 server in ~
❯ pip list | grep matplot
matplotlib               3.7.1
matplotlib-backend-kitty 2.1.2
fedora in 🌐 server in ~
❯ cat /etc/os-release
NAME="Fedora Linux"
VERSION="37 (Cloud Edition)"
ID=fedora
VERSION_ID=37
VERSION_CODENAME=""
PLATFORM_ID="platform:f37"
PRETTY_NAME="Fedora Linux 37 (Cloud Edition)"
...
fedora in 🌐 server in ~
❯ python -VVV
Python 3.11.2 (main, Feb  8 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)]
fedora in 🌐 server in ~
❯

The reason for the gray facecolor is legibility of figure labels. Using either white or black labels by default makes the labels hard to read on a terminal that uses either a light or  dark color scheme, respectively. Partially transparent terminal backgrounds in combination with wallpapers complicate this further, but let's ignore that for now.
Ideally, I'd want  to auto-detect a label color that has high contrast with the terminal's background color, and not touch facecolor at all. I'm not aware of a way to do this, so forcing the facecolor to a known value is a way that at least keeps the labels somewhat consistently legible across color schemes. I went with gray for that because the contrast with both the dark and light color schemes isn't too jarring.
I can't really remove the facecolor override unless there is another way to keep the charts legible across color schemes. A workaround might be detecting if face/label colors were set explicitly and skipping the overrides in that case; if we can't detect that, an envvar color setting might be reasonable instead.
Could you describe your usecase for choosing a different facecolor? That might help in evaluating possible approaches.

The reason for the gray facecolor is legibility of figure labels. Using either white or black labels by default makes the labels hard to read on a terminal that uses either a light or dark color scheme, respectively. Partially transparent terminal backgrounds in combination with wallpapers complicate this further, but let's ignore that for now.

I'm really not sure what you're referring to. If facecolor is not specified, matplotlib defaults to white. But the color itself doesn't matter, it's not subject to the terminal colors or opacity. So any problem with legibility would already be there with matplotlib anyway, to be fixed by who's dealing with the plot.
I use it to plot a meteorological diagram on kitty terminal. Grey facecolor makes the legibility worse, as it's meant to be white.
No facecolor specified, kitty with 0.5 opacity:

Facecolor fixed to #888888, kitty with 0.5 opacity:

Fixing facecolor to #888888 is just removing a feature of matplotlib that should be users'  decision, and not something up to this module to fix.

I came here to make the same issue and pr!  Thanks @luciodaou.  (and thanks @jktr  for something I use almost every day).

Could you describe your usecase for choosing a different facecolor? That might help in evaluating possible approaches.

I use kitty with a black background, and plt.style.use("dark_background"), which sets the figure background to black and the foreground to light.   Much nicer with black figure backgrounds - as per the style - than gray, so  I end up patching __init__.py everytime.
I guess I'd argue that ensuring the charts are legible across color schemes is the user's, or the style's, problem rather than the renderer.   If I ask for something labelled in black on a black background that's on me.
E.g. here's what the default and dark style looks like with the background #888888:

and here's what it looks like not setting the facecolor:

(plots generated by https://matplotlib.org/stable/gallery/style_sheets/style_sheets_reference.html tweaked to use matplotlib-backend-kitty and only two styles).

I'm really not sure what you're referring to. If facecolor is not specified, matplotlib defaults to white. But the color itself doesn't matter, it's not subject to the terminal colors or opacity. So any problem with legibility would already be there with matplotlib anyway, to be fixed by who's dealing with the plot.

I was under the impression that matplotlib defaulted to transparency, but that is incorrect, which invalidates my earlier comment about color schemes.
Reading over old commit messages, it seems I originally set both transparency and facecolor to work around scrollback behavior in an older kitty release. When that behavior was changed, I dropped the transparency workaround, but seemingly forgot to also remove the facecolor override.
Given that the defaults are sane and the original reason for the override is gone, I have no problem with removing the override.

fixed in #9


Catalog parsing for nested objects not working

Migrated from GitLab: https://gitlab.com/meltano/sdk/-/issues/285
Originally created by @vischous on 2021-12-02 14:16:39

Not sure the easiest way to setup a test case here
tap is here https://github.com/AutoIDM/tap-googleads

meltano select --all tap-googleads
meltano select --list tap-googleads, response

        [selected ] geo_target_constant.geoTargetConstant
        [selected ] geo_target_constant.geoTargetConstant.canonicalName
        [selected ] geo_target_constant.geoTargetConstant.countryCode
        [selected ] geo_target_constant.geoTargetConstant.id
        [selected ] geo_target_constant.geoTargetConstant.name
        [selected ] geo_target_constant.geoTargetConstant.resourceName
        [selected ] geo_target_constant.geoTargetConstant.status
        [selected ] geo_target_constant.geoTargetConstant.targetType

meltano select --all --rm tap-googleads
meltano select geo_target_constant.geoTargetConstant.name
Output will not have any records with this subObject listed instead the output looks like

{"type": "RECORD", "stream": "geo_target_constant", "record": {}, "time_extracted": "2021-12-02T14:08:28.138997Z"}

View 9 previous comments from the original issue on GitLab


Shadow Blade

Hi Mate. Having a problem with Automation with SB atm. When it is summoned, any attacks made in 5ft range of target rolls at disadvantage as if the shadowblade is a ranged attack. If i move the token away from the enemy, say like 10 ft, the disadvantage goes away.
Ah i see what it is. The the "Thrown" Tag on the item that's created is interacting with Midiqol and it's giving it disadvantage.

Turn on attribution tooltip in the misc tab and then you can expand an attack to see the flags.

I turned it on. It is saying DIS due to enemy being nearby, which i noticed before turning this on. The thrown tag in SB is being given DIS due to been considered a ranged weapon within threatened space.

Its not a ranged weapon attack but it does have a ranged weapons range.  Maybe this is a breaking change caused by the new midi optional rule.

I believe this has been fixed with newer versions of Midi-Qol. Feel free to re-open this bug report if the issue still persists.


Windows 11 22H2 policy definitions msi installation failed

I get the following error

The msi still seems to install normally

and I see files in C:\Program Files (x86)\Microsoft Group Policy\Windows 11 September 2022 Update (22H2)\PolicyDefinitions

However, none of them gets copied over

Line 899 seems to be the issue

Similar issue here:

Possibly fixed with #42

@msfreaks Please close this issue.


[spike] cases: address Sharing Data

https://dvc.org/doc/use-cases/sharing-data-and-model-files is currently a step-by-step guide.

Is there a use case? If so rewrite the page to express it.
Where do we put the current content?
Is the figure useful out there? If so make sure to find it a new home.

The current content could be made into a How-To.
I think a shorter UC could be written around the image.

Questions:

it looks like it a bit too basic and generic for how to?
do you have any idea about the use case around the image title? what content we would to include there?

idea about the use case around the image title
caption [Data is stored in storage you control, separate from code.]

@shcheklein I think it's a basic part of efficient data management for DS: controlling data like code (versioning), but in separate buckets, yet automatically linked via DVC.
BTW this is briefly covered in https://dvc.org/doc/use-cases/versioning-data-and-model-files already:

The sharing aspect of it (current use case title) stems as an added benefit of that strategy. At the same time sharing may be a more relatable use case... 🤔

The current content could be made into a How-To.
it looks like it a bit too basic and generic for how to?

Yeah I think it will be included eventually in https://github.com/iterative/dvc.org/issues/2866. I added a checkbox there so we can feel free to remove the step-by-step info here or rewrite as needed for the Use Case format.

We decided that the best route is to repurpose the image completely for a new use case along the lines of "Organizing Team Datasets" but since there are other use case ideas in the pipeline we'll add this to #2544 and remove this page for now.


Bug/Issue: Swallowing Errors

Describe The Bug
The fetch method intentionally swallows errors, which messes up stack traces and logging
To Reproduce
Have any request fail, you'll get the console.error but without a stack trace, which when running this in a more complex environment is easy to miss and hard to trace
Expected behavior
Things are working as intended, but they probably should work differently in dev and prod
Relevant log output
No relevant logs beyond what was described.

Config for August-Yale
n/a

Screenshots
FWIW, I ran into this because home bridge was in a crash loop (for completely unrelated reasons). This caused a lot of requests to go out through the homebridge plugin that wraps this library and this triggered a rate limit. I then had to trace down why august was failing and because this bypasses the standard homebridge logging with console.error, that was not easy.
I'd suggest (and am happy to PR) either:

Adding a dev mode that keeps this behavior if opted into only.
Just removing this bypass and letting the error bubble up.

Device & Model
n/a
Node.js Version
v20.11.0
August-Yale Version
v0.2.0
Operating System
macOS

@joeybaker please open a PR. I opened this to be able to mange the API module myself.

Please open PRs and point towards beta branch.

@donavanbecker done! ^

Merged!


Change Cancel and Done nav button colors

Is there any way to change the nav button text colors ?

There's a few options...

Init/present the OpalImagePickerController manually and create delegate. If you have the controller, it's a UINavigationController so you can set the colors like you do normally.
Use a UIAppearance and filter to OpalImagePickerController to set the colors. Should require less changes.


Fix update policy for head node parameters

Description of changes

Fix update policy for the following head node parameters:

HeadNode/LocalStorage/RootVolume/Iops and Throughput: changing this will trigger a replacement of the head node, marking as UNSUPPORTED.
HeadNode/Networking/SecurityGroups and AdditionalSecurityGroups: : changing this will trigger a replacement of the head node, marking as UNSUPPORTED.

Checklist

[ ] Make sure you are pointing to the right branch and add a label in the PR title (i.e. 2.x vs 3.x)
[ ] Check all commits' messages are clear, describing what and why vs how.
[ ] Make sure to have added unit tests or integration tests to cover the new/modified code.
[ ] Check if documentation is impacted by this change.

Please review the guidelines for contributing and Pull Request Instructions.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

HeadNode/LocalStorage/RootVolume/Iops and Throughput: changing this will trigger a replacement of the head node, marking as UNSUPPORTED.

This has been already merged and it's part of our code, the second part must still be addressed.


DRY up the codebase _check fix

from "DRY up the codebase " issue. eliminating the duplication of error checker (_check) and calling it on every other functions.

Thank you very much!!!


Update issue templates

Added bug and feature request issue templates with https://github.com/fabric8-services/fabric8-wit/issues/templates/edit.
See this blog entry: https://blog.github.com/2018-05-02-issue-template-improvements/

Codecov Report

Merging #2091 into master will increase coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #2091      +/-   ##
==========================================
+ Coverage    67.4%   67.45%   +0.05%
==========================================
  Files         158      158
  Lines       14658    14658
==========================================
+ Hits         9880     9888       +8
+ Misses       3824     3816       -8
  Partials      954      954

Impacted Files
Coverage Δ

remoteworkitem/scheduler.go
60.97% <0%> (+7.31%)
:arrow_up:

remoteworkitem/jira.go
100% <0%> (+25%)
: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 cb104a3...b514890. Read the comment docs.


[Network] az network vhub create/update: Add parameters --allow-b2b-traffic and --auto-scale-config

This checklist is used to make sure that common guidelines for a pull request are followed.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Network

@prototypicalpro These two parameters seem too long, please fix it.

@prototypicalpro These two parameters seem too long, please fix it.

Updated to --allow-b2b-traffic and --auto-scale-config.

@prototypicalpro These two parameters seem too long, please fix it.

Updated to --allow-b2b-traffic and --auto-scale-config.

@necusjz I've fixed the integration tests and this PR is ready for review.


Proactively refresh tokens

I'm using Amplify 1.8.1 for user authentication, and including access token and ID token in subsequent request headers for authorization, and it works just fine for the most part
But when there are some user info updates need be done, the backend calls AdminUpdateUserAttributes method, which would update user info as well as ID token.
So now ID token in backend changes, but from iOS client perspective, its session could still be valid, and will provide me the cached tokens. Therefore, all subsequent requests to backend will fail with HTTP code 403, until the cached tokens in iOS client expire and get refreshed.
It would be great if I can initiate the token refresh process on demand from client side. (Or are there any alternative approaches to avoid getting stuck when backend udpates user attributes?) Any help would be much appreciated!

Hi, @philip-zhang
I wonder what's your use case with AdminUpdateUserAttributes
With normal updateUserAttribute, this is not be an issue.
For your use case, is user re-authentication going to work? Re-authenticate means sign out and sign in the user again.

Proactively refreshing token is not currently supported in Auth category. We will take this as a feature request and update here when we have more info.

Proactively refreshing token is not currently supported in Auth category.

Hi @royjit, thanks for responding! Actually I believe I've found a solution -- or at least a workaround -- for refreshing tokens from client side.
In AWSCognitoIdentityProvider pod , AWSCognitoIdentityUser.h, there is this method

It suits my use case, and as I tested, it works perfectly. To refresh token, I just need to call clearSession before fetching session:
//Clear session to trigger force refresh if indicated
if amplifyNeedsTokenRefresh {
    amplifyNeedsTokenRefresh = false
    AWSCognitoIdentityUserPool.default().currentUser()?.clearSession()
}
//Then call `fetchAuthSession`
...

Do you think it's a proper solution? Please let me know!

PR - https://github.com/aws-amplify/amplify-ios/pull/2141

Force refresh of token is now available in v2.0.0


Abnormal data output and training period

Sorry to disturb you. I come across a similar problem that I follow the instruction to run the project and I add --final-eval-only 0 but the project takes such an abnormal training period (I use a V100) , it has not finished the training after 8 hours.
And on my wandb website I can only see 2 data points for each diagram until now.
I wonder where I have made a mistake?
My output :
root@dl-0947440725-pod-jupyter-fccff46d6-xvhs7:# cd spr-release
root@dl-0947440725-pod-jupyter-fccff46d6-xvhs7:/spr-release# rm -rf wandb
root@dl-0947440725-pod-jupyter-fccff46d6-xvhs7:/spr-release# conda activate spr
(spr) root@dl-0947440725-pod-jupyter-fccff46d6-xvhs7:/spr-release# python -m scripts.run --public --game kung_fu_master --momentum-tau 1. --final-eval-only 0
wandb: Currently logged in as: alexgranger (use wandb login --relogin to force relogin)
wandb: Tracking run with wandb version 0.12.11
wandb: Run data is saved locally in wandb/run-20220327_233137-3l5mkumo
wandb: Run wandb offline to turn off syncing.
wandb: Syncing run dry-eon-3
wandb: ⭐ View project at https://wandb.ai/alexgranger/uncategorized
wandb: 🚀 View run at https://wandb.ai/alexgranger/uncategorized/runs/3l5mkumo
logger_context received log_dir outside of /root/spr-release/data: prepending by /root/spr-release/data/local///
2022-03-27 23:31:43.907745 | dqn_kung_fu_master_0 Runner master CPU affinity: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71].
2022-03-27 23:31:43.908008 | dqn_kung_fu_master_0 Runner master Torch threads: 36.
using seed 0
Spatial latent size is torch.Size([64, 7, 7])
Initialized model with 4045991 parameters
Spatial latent size is torch.Size([64, 7, 7])
Initialized model with 4045991 parameters
2022-03-27 23:32:05.931997 | dqn_kung_fu_master_0 Sampler decorrelating envs, max steps: 0
2022-03-27 23:32:05.933166 | dqn_kung_fu_master_0 Agent at itr 0, sample eps 1.0 (min itr: 50, max_itr: 1000)
2022-03-27 23:32:05.933360 | dqn_kung_fu_master_0 Serial Sampler initialized.
2022-03-27 23:32:05.933493 | dqn_kung_fu_master_0 Running 100000 iterations of minibatch RL.
2022-03-27 23:32:15.510158 | dqn_kung_fu_master_0 Initialized agent model on device: cuda:0.
2022-03-27 23:32:15.576100 | dqn_kung_fu_master_0 From sampler batch size 1, training batch size 32, and replay ratio 64, computed 2 updates per iteration.
2022-03-27 23:32:15.576465 | dqn_kung_fu_master_0 Agent setting min/max epsilon itrs: 2000, 2001
2022-03-27 23:32:15.679657 | dqn_kung_fu_master_0 Frame-based buffer using 4-frame sequences.
2022-03-27 23:32:23.633687 | dqn_kung_fu_master_0 itr #0 Evaluating agent...
2022-03-27 23:32:23.634627 | dqn_kung_fu_master_0 itr #0 Agent at itr 0, eval eps 1.0
2022-03-27 23:32:24.872641 | dqn_kung_fu_master_0 itr #0 Agent at itr 0, eval eps 1.0
2022-03-27 23:33:47.222620 | dqn_kung_fu_master_0 itr #0 Evaluation reached max num trajectories (100).
2022-03-27 23:33:47.224658 | dqn_kung_fu_master_0 itr #0 Evaluation runs complete.
2022-03-27 23:33:47.224950 | dqn_kung_fu_master_0 itr #0 saving snapshot...
2022-03-27 23:33:47.653684 | dqn_kung_fu_master_0 itr #0 saved
/root/.local/conda/envs/spr/lib/python3.6/site-packages/numpy/lib/function_base.py:380: RuntimeWarning: Mean of empty slice.
avg = a.mean(axis)
/root/.local/conda/envs/spr/lib/python3.6/site-packages/numpy/core/methods.py:170: RuntimeWarning: invalid value encountered in double_scalars
ret = ret.dtype.type(ret / rcount)
2022-03-27 23:33:47.714302 | ----------------------------- -------------
2022-03-27 23:33:47.714680 | Diagnostics/StepsInEval 89813
2022-03-27 23:33:47.715209 | Diagnostics/TrajsInEval 100
2022-03-27 23:33:47.715299 | Diagnostics/CumEvalTime 83.5899
2022-03-27 23:33:47.715376 | Diagnostics/CumTrainTime 0.430582
2022-03-27 23:33:47.715452 | Diagnostics/Iteration 0
2022-03-27 23:33:47.715525 | Diagnostics/CumTime (s) 84.0205
2022-03-27 23:33:47.715588 | Diagnostics/CumSteps 1
2022-03-27 23:33:47.715665 | Diagnostics/CumCompletedTrajs 0
2022-03-27 23:33:47.715727 | Diagnostics/CumUpdates 0
2022-03-27 23:33:47.715780 | Diagnostics/StepsPerSecond nan
2022-03-27 23:33:47.715826 | Diagnostics/UpdatesPerSecond nan
2022-03-27 23:33:47.715885 | Diagnostics/ReplayRatio 0
2022-03-27 23:33:47.715938 | Diagnostics/CumReplayRatio 0
2022-03-27 23:33:47.715983 | LengthAverage 898.13
2022-03-27 23:33:47.716036 | LengthStd 136.602
2022-03-27 23:33:47.716108 | LengthMedian 890.5
2022-03-27 23:33:47.716180 | LengthMin 580
2022-03-27 23:33:47.716243 | LengthMax 1206
2022-03-27 23:33:47.716332 | ReturnAverage 2.76
2022-03-27 23:33:47.716428 | ReturnStd 2.0006
2022-03-27 23:33:47.716486 | ReturnMedian 2
2022-03-27 23:33:47.716547 | ReturnMin 0
2022-03-27 23:33:47.716599 | ReturnMax 9
2022-03-27 23:33:47.716667 | NonzeroRewardsAverage 2.76
2022-03-27 23:33:47.716727 | NonzeroRewardsStd 2.0006
2022-03-27 23:33:47.716780 | NonzeroRewardsMedian 2
2022-03-27 23:33:47.716849 | NonzeroRewardsMin 0
2022-03-27 23:33:47.716912 | NonzeroRewardsMax 9
2022-03-27 23:33:47.716963 | DiscountedReturnAverage 0.0968938
2022-03-27 23:33:47.717033 | DiscountedReturnStd 0.121937
2022-03-27 23:33:47.717095 | DiscountedReturnMedian 0.0532579
2022-03-27 23:33:47.717172 | DiscountedReturnMin 0
2022-03-27 23:33:47.717243 | DiscountedReturnMax 0.62236
2022-03-27 23:33:47.717322 | GameScoreAverage 441
2022-03-27 23:33:47.717409 | GameScoreStd 320.654
2022-03-27 23:33:47.717481 | GameScoreMedian 400
2022-03-27 23:33:47.717541 | GameScoreMin 0
2022-03-27 23:33:47.717614 | GameScoreMax 1500
2022-03-27 23:33:47.717686 | lossAverage nan
2022-03-27 23:33:47.717748 | lossStd nan
2022-03-27 23:33:47.717822 | lossMedian nan
2022-03-27 23:33:47.717870 | lossMin nan
2022-03-27 23:33:47.717941 | lossMax nan
2022-03-27 23:33:47.718022 | gradNormAverage nan
2022-03-27 23:33:47.718083 | gradNormStd nan
2022-03-27 23:33:47.718157 | gradNormMedian nan
2022-03-27 23:33:47.718227 | gradNormMin nan
2022-03-27 23:33:47.718302 | gradNormMax nan
2022-03-27 23:33:47.718378 | tdAbsErrAverage nan
2022-03-27 23:33:47.718439 | tdAbsErrStd nan
2022-03-27 23:33:47.718515 | tdAbsErrMedian nan
2022-03-27 23:33:47.718578 | tdAbsErrMin nan
2022-03-27 23:33:47.718652 | tdAbsErrMax nan
2022-03-27 23:33:47.718714 | modelRLLossAverage nan
2022-03-27 23:33:47.718766 | modelRLLossStd nan
2022-03-27 23:33:47.718833 | modelRLLossMedian nan
2022-03-27 23:33:47.718894 | modelRLLossMin nan
2022-03-27 23:33:47.718945 | modelRLLossMax nan
2022-03-27 23:33:47.719014 | RewardLossAverage nan
2022-03-27 23:33:47.719075 | RewardLossStd nan
2022-03-27 23:33:47.719148 | RewardLossMedian nan
2022-03-27 23:33:47.719210 | RewardLossMin nan
2022-03-27 23:33:47.719298 | RewardLossMax nan
2022-03-27 23:33:47.719371 | modelGradNormAverage nan
2022-03-27 23:33:47.719433 | modelGradNormStd nan
2022-03-27 23:33:47.719485 | modelGradNormMedian nan
2022-03-27 23:33:47.719553 | modelGradNormMin nan
2022-03-27 23:33:47.719615 | modelGradNormMax nan
2022-03-27 23:33:47.719690 | SPRLossAverage nan
2022-03-27 23:33:47.719753 | SPRLossStd nan
2022-03-27 23:33:47.719805 | SPRLossMedian nan
2022-03-27 23:33:47.719873 | SPRLossMin nan
2022-03-27 23:33:47.719976 | SPRLossMax nan
2022-03-27 23:33:47.720034 | ModelSPRLossAverage nan
2022-03-27 23:33:47.720104 | ModelSPRLossStd nan
2022-03-27 23:33:47.720166 | ModelSPRLossMedian nan
2022-03-27 23:33:47.720218 | ModelSPRLossMin nan
2022-03-27 23:33:47.720273 | ModelSPRLossMax nan
2022-03-27 23:33:47.720344 | ----------------------------- -------------
2022-03-27 23:33:47.720917 | dqn_kung_fu_master_0 itr #0 Optimizing over 10000 iterations.
2022-03-27 23:33:47.724755 | dqn_kung_fu_master_0 itr #0 Agent at itr 0, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:47.725975 | dqn_kung_fu_master_0 itr #0 Agent at itr 0, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:48.536667 | dqn_kung_fu_master_0 itr #200 Agent at itr 200, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:48.537071 | dqn_kung_fu_master_0 itr #200 Agent at itr 200, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [# ] 100% | ETA: 00:00:372022-03-27 23:33:49.265005 | dqn_kung_fu_master_0 itr #400 Agent at itr 400, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:49.265436 | dqn_kung_fu_master_0 itr #400 Agent at itr 400, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:49.970561 | dqn_kung_fu_master_0 itr #600 Agent at itr 600, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:49.970965 | dqn_kung_fu_master_0 itr #600 Agent at itr 600, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [## ] 100% | ETA: 00:00:342022-03-27 23:33:50.703183 | dqn_kung_fu_master_0 itr #800 Agent at itr 800, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:50.703541 | dqn_kung_fu_master_0 itr #800 Agent at itr 800, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [### ] 100% | ETA: 00:00:332022-03-27 23:33:51.414277 | dqn_kung_fu_master_0 itr #1000 Agent at itr 1000, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:51.415657 | dqn_kung_fu_master_0 itr #1000 Agent at itr 1000, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:52.193086 | dqn_kung_fu_master_0 itr #1200 Agent at itr 1200, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:52.193518 | dqn_kung_fu_master_0 itr #1200 Agent at itr 1200, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [#### ] 100% | ETA: 00:00:322022-03-27 23:33:52.937921 | dqn_kung_fu_master_0 itr #1400 Agent at itr 1400, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:52.938333 | dqn_kung_fu_master_0 itr #1400 Agent at itr 1400, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:53.651224 | dqn_kung_fu_master_0 itr #1600 Agent at itr 1600, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:53.659388 | dqn_kung_fu_master_0 itr #1600 Agent at itr 1600, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [##### ] 100% | ETA: 00:00:302022-03-27 23:33:54.373088 | dqn_kung_fu_master_0 itr #1800 Agent at itr 1800, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:54.373503 | dqn_kung_fu_master_0 itr #1800 Agent at itr 1800, sample eps 1.0 (min itr: 2000, max_itr: 2001)
0% [###### ] 100% | ETA: 00:00:292022-03-27 23:33:55.090011 | dqn_kung_fu_master_0 itr #2000 Agent at itr 2000, sample eps 1.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:55.090488 | dqn_kung_fu_master_0 itr #2000 Agent at itr 2000, sample eps 1.0 (min itr: 2000, max_itr: 2001)
/root/spr-release/src/algos.py:150: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad(True), rather than torch.tensor(sourceTensor).
opt_info.gradNorm.append(torch.tensor(grad_norm).item()) # grad_norm is a float sometimes, so wrap in tensor
/root/spr-release/src/algos.py:153: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
opt_info.modelGradNorm.append(torch.tensor(model_grad_norm).item())
2022-03-27 23:33:56.678533 | dqn_kung_fu_master_0 itr #2001 Agent at itr 2001, sample eps 0.0 (min itr: 2000, max_itr: 2001)
2022-03-27 23:33:56.679209 | dqn_kung_fu_master_0 itr #2001 Agent at itr 2001, sample eps 0.0 (min itr: 2000, max_itr: 2001)
0% [##############################] 100% | ETA: 00:00:00
Total time elapsed: 03:16:422022-03-28 02:50:30.281019 | dqn_kung_fu_master_0 itr #9999 Evaluating agent...
2022-03-28 02:50:30.284811 | dqn_kung_fu_master_0 itr #9999 Agent at itr 9999, eval eps 0.001
2022-03-28 02:50:31.487369 | dqn_kung_fu_master_0 itr #9999 Agent at itr 9999, eval eps 0.001
2022-03-28 02:51:48.012106 | dqn_kung_fu_master_0 itr #9999 Evaluation reached max num trajectories (100).
2022-03-28 02:51:48.014187 | dqn_kung_fu_master_0 itr #9999 Evaluation runs complete.
2022-03-28 02:51:48.014417 | dqn_kung_fu_master_0 itr #9999 saving snapshot...
2022-03-28 02:51:48.556121 | dqn_kung_fu_master_0 itr #9999 saved
2022-03-28 02:51:48.688185 | ----------------------------- ---------------
2022-03-28 02:51:48.688282 | Diagnostics/StepsInEval 86153
2022-03-28 02:51:48.688353 | Diagnostics/TrajsInEval 100
2022-03-28 02:51:48.688369 | Diagnostics/CumEvalTime 161.319
2022-03-28 02:51:48.688457 | Diagnostics/CumTrainTime 11803.6
2022-03-28 02:51:48.688488 | Diagnostics/Iteration 9999
2022-03-28 02:51:48.688503 | Diagnostics/CumTime (s) 11964.9
2022-03-28 02:51:48.688517 | Diagnostics/CumSteps 10000
2022-03-28 02:51:48.688570 | Diagnostics/CumCompletedTrajs 10
2022-03-28 02:51:48.688599 | Diagnostics/CumUpdates 16000
2022-03-28 02:51:48.688613 | Diagnostics/StepsPerSecond 0.84723
2022-03-28 02:51:48.688627 | Diagnostics/UpdatesPerSecond 1.35557
2022-03-28 02:51:48.688641 | Diagnostics/ReplayRatio 51.2
2022-03-28 02:51:48.688696 | Diagnostics/CumReplayRatio 51.2
2022-03-28 02:51:48.688727 | LengthAverage 861.53
2022-03-28 02:51:48.688742 | LengthStd 50.7432
2022-03-28 02:51:48.688755 | LengthMedian 880
2022-03-28 02:51:48.688769 | LengthMin 793
2022-03-28 02:51:48.688783 | LengthMax 968
2022-03-28 02:51:48.688820 | ReturnAverage 3.85
2022-03-28 02:51:48.688851 | ReturnStd 0.952628
2022-03-28 02:51:48.688866 | ReturnMedian 4
2022-03-28 02:51:48.688879 | ReturnMin 3
2022-03-28 02:51:48.688893 | ReturnMax 7
2022-03-28 02:51:48.688906 | NonzeroRewardsAverage 3.85
2022-03-28 02:51:48.688938 | NonzeroRewardsStd 0.952628
2022-03-28 02:51:48.688963 | NonzeroRewardsMedian 4
2022-03-28 02:51:48.688998 | NonzeroRewardsMin 3
2022-03-28 02:51:48.689014 | NonzeroRewardsMax 7
2022-03-28 02:51:48.689027 | DiscountedReturnAverage 0.0332842
2022-03-28 02:51:48.689042 | DiscountedReturnStd 0.0181958
2022-03-28 02:51:48.689055 | DiscountedReturnMedian 0.0294325
2022-03-28 02:51:48.689069 | DiscountedReturnMin 0.0146507
2022-03-28 02:51:48.689117 | DiscountedReturnMax 0.074113
2022-03-28 02:51:48.689147 | GameScoreAverage 444
2022-03-28 02:51:48.689162 | GameScoreStd 116.893
2022-03-28 02:51:48.689175 | GameScoreMedian 400
2022-03-28 02:51:48.689189 | GameScoreMin 300
2022-03-28 02:51:48.689203 | GameScoreMax 800
2022-03-28 02:51:48.689216 | lossAverage 0.989625
2022-03-28 02:51:48.689230 | lossStd 0.261377
2022-03-28 02:51:48.689269 | lossMedian 0.940089
2022-03-28 02:51:48.689286 | lossMin 0.400819
2022-03-28 02:51:48.689300 | lossMax 3.95609
2022-03-28 02:51:48.689314 | gradNormAverage 0.901282
2022-03-28 02:51:48.689327 | gradNormStd 0.692513
2022-03-28 02:51:48.689341 | gradNormMedian 0.725976
2022-03-28 02:51:48.689355 | gradNormMin 0.24104
2022-03-28 02:51:48.689368 | gradNormMax 25.3801
2022-03-28 02:51:48.689382 | tdAbsErrAverage 0.196824
2022-03-28 02:51:48.689395 | tdAbsErrStd 0.382023
2022-03-28 02:51:48.689413 | tdAbsErrMedian 0.0395497
2022-03-28 02:51:48.689427 | tdAbsErrMin 0.000149499
2022-03-28 02:51:48.689472 | tdAbsErrMax 4.2798
2022-03-28 02:51:48.689502 | modelRLLossAverage 0
2022-03-28 02:51:48.689517 | modelRLLossStd 0
2022-03-28 02:51:48.689531 | modelRLLossMedian 0
2022-03-28 02:51:48.689544 | modelRLLossMin 0
2022-03-28 02:51:48.689558 | modelRLLossMax 0
2022-03-28 02:51:48.689572 | RewardLossAverage 0.731391
2022-03-28 02:51:48.689585 | RewardLossStd 0.103771
2022-03-28 02:51:48.689599 | RewardLossMedian 0.734766
2022-03-28 02:51:48.689613 | RewardLossMin 0.374675
2022-03-28 02:51:48.689626 | RewardLossMax 1.1154
2022-03-28 02:51:48.689640 | modelGradNormAverage 0.0540919
2022-03-28 02:51:48.689678 | modelGradNormStd 0.111477
2022-03-28 02:51:48.689707 | modelGradNormMedian 0.0481481
2022-03-28 02:51:48.689723 | modelGradNormMin 0.00393918
2022-03-28 02:51:48.689736 | modelGradNormMax 8.68913
2022-03-28 02:51:48.689750 | SPRLossAverage 0.0268906
2022-03-28 02:51:48.689764 | SPRLossStd 0.130056
2022-03-28 02:51:48.689777 | SPRLossMedian 0.0198887
2022-03-28 02:51:48.689791 | SPRLossMin 0.0023902
2022-03-28 02:51:48.689805 | SPRLossMax 9.96364
2022-03-28 02:51:48.689818 | ModelSPRLossAverage 0.00537812
2022-03-28 02:51:48.689832 | ModelSPRLossStd 0.0260111
2022-03-28 02:51:48.689866 | ModelSPRLossMedian 0.00397775
2022-03-28 02:51:48.689896 | ModelSPRLossMin 0.000478041
2022-03-28 02:51:48.689911 | ModelSPRLossMax 1.99273
2022-03-28 02:51:48.689925 | ----------------------------- ---------------
2022-03-28 02:51:48.690080 | dqn_kung_fu_master_0 itr #9999 Optimizing over 10000 iterations.
0% [##############################] 100% | ETA: 00:00:002022-03-28 06:55:33.890054 | dqn_kung_fu_master_0 itr #19999 Evaluating agent...
Total time elapsed: 04:03:45
2022-03-28 06:55:33.892141 | dqn_kung_fu_master_0 itr #19999 Agent at itr 19999, eval eps 0.001
2022-03-28 06:55:35.105315 | dqn_kung_fu_master_0 itr #19999 Agent at itr 19999, eval eps 0.001
2022-03-28 06:57:00.138217 | dqn_kung_fu_master_0 itr #19999 Evaluation reached max num trajectories (100).
2022-03-28 06:57:00.139980 | dqn_kung_fu_master_0 itr #19999 Evaluation runs complete.
2022-03-28 06:57:00.140213 | dqn_kung_fu_master_0 itr #19999 saving snapshot...
2022-03-28 06:57:00.719706 | dqn_kung_fu_master_0 itr #19999 saved
2022-03-28 06:57:00.860795 | ----------------------------- ---------------
2022-03-28 06:57:00.860942 | Diagnostics/StepsInEval 94353
2022-03-28 06:57:00.860964 | Diagnostics/TrajsInEval 100
2022-03-28 06:57:00.861059 | Diagnostics/CumEvalTime 247.567
2022-03-28 06:57:00.861093 | Diagnostics/CumTrainTime 26429.5
2022-03-28 06:57:00.861108 | Diagnostics/Iteration 19999
2022-03-28 06:57:00.861122 | Diagnostics/CumTime (s) 26677.1
2022-03-28 06:57:00.861136 | Diagnostics/CumSteps 20000
2022-03-28 06:57:00.861150 | Diagnostics/CumCompletedTrajs 20
2022-03-28 06:57:00.861214 | Diagnostics/CumUpdates 36000
2022-03-28 06:57:00.861284 | Diagnostics/StepsPerSecond 0.683718
2022-03-28 06:57:00.861315 | Diagnostics/UpdatesPerSecond 1.36744
2022-03-28 06:57:00.861330 | Diagnostics/ReplayRatio 64
2022-03-28 06:57:00.861344 | Diagnostics/CumReplayRatio 57.6
2022-03-28 06:57:00.861358 | LengthAverage 943.53
2022-03-28 06:57:00.861372 | LengthStd 73.1543
2022-03-28 06:57:00.861407 | LengthMedian 931
2022-03-28 06:57:00.861437 | LengthMin 852
2022-03-28 06:57:00.861452 | LengthMax 1275
2022-03-28 06:57:00.861466 | ReturnAverage 8.02
2022-03-28 06:57:00.861479 | ReturnStd 1.22458
2022-03-28 06:57:00.861493 | ReturnMedian 8
2022-03-28 06:57:00.861507 | ReturnMin 4
2022-03-28 06:57:00.861546 | ReturnMax 11
2022-03-28 06:57:00.861570 | NonzeroRewardsAverage 8.02
2022-03-28 06:57:00.861602 | NonzeroRewardsStd 1.22458
2022-03-28 06:57:00.861617 | NonzeroRewardsMedian 8
2022-03-28 06:57:00.861630 | NonzeroRewardsMin 4
2022-03-28 06:57:00.861644 | NonzeroRewardsMax 11
2022-03-28 06:57:00.861658 | DiscountedReturnAverage 0.492846
2022-03-28 06:57:00.861672 | DiscountedReturnStd 0.1024
2022-03-28 06:57:00.861706 | DiscountedReturnMedian 0.460267
2022-03-28 06:57:00.861735 | DiscountedReturnMin 0.371805
2022-03-28 06:57:00.861750 | DiscountedReturnMax 0.677866
2022-03-28 06:57:00.861764 | GameScoreAverage 1256
2022-03-28 06:57:00.861778 | GameScoreStd 201.157
2022-03-28 06:57:00.861792 | GameScoreMedian 1300
2022-03-28 06:57:00.861806 | GameScoreMin 600
2022-03-28 06:57:00.861819 | GameScoreMax 1800
2022-03-28 06:57:00.861857 | lossAverage 0.769059
2022-03-28 06:57:00.861887 | lossStd 0.138844
2022-03-28 06:57:00.861902 | lossMedian 0.767441
2022-03-28 06:57:00.861916 | lossMin 0.317752
2022-03-28 06:57:00.861930 | lossMax 1.36424
2022-03-28 06:57:00.861950 | gradNormAverage 0.713153
2022-03-28 06:57:00.861964 | gradNormStd 0.215024
2022-03-28 06:57:00.861978 | gradNormMedian 0.679873
2022-03-28 06:57:00.861992 | gradNormMin 0.255769
2022-03-28 06:57:00.862012 | gradNormMax 3.37628
2022-03-28 06:57:00.862059 | tdAbsErrAverage 0.176727
2022-03-28 06:57:00.862090 | tdAbsErrStd 0.270876
2022-03-28 06:57:00.862105 | tdAbsErrMedian 0.0628458
2022-03-28 06:57:00.862119 | tdAbsErrMin 0.000104254
2022-03-28 06:57:00.862133 | tdAbsErrMax 3.40443
2022-03-28 06:57:00.862147 | modelRLLossAverage 0
2022-03-28 06:57:00.862161 | modelRLLossStd 0
2022-03-28 06:57:00.862175 | modelRLLossMedian 0
2022-03-28 06:57:00.862189 | modelRLLossMin 0
2022-03-28 06:57:00.862203 | modelRLLossMax 0
2022-03-28 06:57:00.862236 | RewardLossAverage 0.541511
2022-03-28 06:57:00.862278 | RewardLossStd 0.0829435
2022-03-28 06:57:00.862293 | RewardLossMedian 0.543767
2022-03-28 06:57:00.862308 | RewardLossMin 0.246088
2022-03-28 06:57:00.862322 | RewardLossMax 0.854726
2022-03-28 06:57:00.862336 | modelGradNormAverage 0.130482
2022-03-28 06:57:00.862349 | modelGradNormStd 0.0415271
2022-03-28 06:57:00.862363 | modelGradNormMedian 0.125761
2022-03-28 06:57:00.862378 | modelGradNormMin 0.0329402
2022-03-28 06:57:00.862392 | modelGradNormMax 0.456768
2022-03-28 06:57:00.862425 | SPRLossAverage 0.0664854
2022-03-28 06:57:00.862461 | SPRLossStd 0.0181049
2022-03-28 06:57:00.862475 | SPRLossMedian 0.0649353
2022-03-28 06:57:00.862489 | SPRLossMin 0.0227788
2022-03-28 06:57:00.862502 | SPRLossMax 0.165078
2022-03-28 06:57:00.862516 | ModelSPRLossAverage 0.0132971
2022-03-28 06:57:00.862530 | ModelSPRLossStd 0.00362097
2022-03-28 06:57:00.862544 | ModelSPRLossMedian 0.0129871
2022-03-28 06:57:00.862558 | ModelSPRLossMin 0.00455576
2022-03-28 06:57:00.862572 | ModelSPRLossMax 0.0330155
2022-03-28 06:57:00.862613 | ----------------------------- ---------------
2022-03-28 06:57:00.862793 | dqn_kung_fu_master_0 itr #19999 Optimizing over 10000 iterations.
0% [###### ] 100% | ETA: 03:14:22

Did you fix this? As far as I can tell the main issue is that training is taking too long -- only seeing two points is normal for how much progress the run made.

Not yet ! At first I thought it was because I chose a difficult game, but after changing to a more simple game, I found that the training speed still did not change significantly. Could you please tell me how to fix this?

I'm not totally sure -- there have been a few reports of similar problems from other users, and I haven't been able to replicate it. I think it's likely an issue caused by a pytorch version change.
One thing that someone reported helping was not moving the losses to CPU before doing the backwards step -- could you try that and tell me if it improves things for you?
(Also, the training time shouldn't really depend on what game you choose. There should only be a ~10% difference at most between them.)

Thanks for providing this method! I will try it and tell you the result~~ Thanks again for your help!


Unable to get local issuer certificate when trying to getUpdates

Whenever I try to call getUpdates() on a TelegramBot object, it throws an error in the console:
Unhandled rejection RequestError: Error: unable to get local issuer certificate
    at new RequestError (<redacted>\node_modules\node-telegram-bot-api\node_modules\request-promise\lib\errors.js:11:15)
    at Request.RP$callback [as _callback] (C:\Users\18Straw.Evan\Desktop\NodeJS\node_modules\node-telegram-bot-api\node_modules\request-promise\lib\rp.js:60:32)
    at self.callback (C:\Users\18Straw.Evan\Desktop\NodeJS\node_modules\node-telegram-bot-api\node_modules\request\request.js:186:22)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.onRequestError (C:\Users\18Straw.Evan\Desktop\NodeJS\node_modules\node-telegram-bot-api\node_modules\request\request.js:845:8)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)
    at TLSSocket.socketErrorListener (_http_client.js:310:9)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:188:7)
    at emitErrorNT (net.js:1276:8)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickDomainCallback (internal/process/next_tick.js:122:9)

This error will also be spammed repeatedly if I enable polling.
I'm not sure why this happens, I've never needed a certificate of any kind on any other computer. It could be caused by a proxy screwing with HTTPS, I am on a school network which uses OpenDNS for network censorship/category blocking but I've managed to run this successfully on another computer behind this same network so I don't know why only this computer is having an issue.
Does anyone have any advice or ideas on how to fix this? Any help would be appreciated.
PS. I don't have admin privileges on this Windows computer, i'm running a local install of NodeJS on a local path.

Can you run it with debug and try to connect to the URL? Something like:
DEBUG=* node index.js

I'm no longer on that pc, I'll have to test later sorry
On Dec 7, 2016 2:09 PM, "Yago"<EMAIL_ADDRESS>wrote:

Can you run it with debug and try to connect to the URL? Something like:
DEBUG=* node index.js
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/yagop/node-telegram-bot-api/issues/234#issuecomment-265589005,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AK1zH7P20lEHZeJabtynv2ezKae_Iu48ks5rFy58gaJpZM4LHGpt
.

I'm not sure what the equivalent of that command would be on Windows...
I tried running node debug bottest.js and it gave the same error with no extra information.
I bet it's probably just the network censorship software, it always messes up HTTPS when using web browsers... I don't have this problem on any machine not monitored by this software. I have a server I can SSH into that's not on the network, I can do this from there.
Thanks for the help!

Its just environment variables, I think it can be set on windows by:
set DEBUG=*
node bottest.js

But I don't code on Windows. [Insert rage against Winodws here]

Oh I don't either lol I just happen to be on a Windows computer right now.
Running that command produced this output:
C:\Users\<redacted>\Desktop\NodeJS>set DEBUG=*

C:\Users\<redacted>\Desktop\NodeJS>node bottest.js
  node-telegram-bot-api HTTP request: {"form":{},"url":"https://api.telegram.org/bot306589704:AAFzSl45lqZqc4psSWJA0EpRjTiGIsvSJys/getUpdates","simple":false,"resolveWithFullResponse":true} +0ms
Unhandled rejection RequestError: Error: unable to get local issuer certificate
    at new RequestError (C:\Users\<redacted>\Desktop\NodeJS\node_modules\request-promise\lib\errors.js:11:15)
    at Request.RP$callback [as _callback] (C:\Users\<redacted>\Desktop\NodeJS\node_modules\request-promise\lib\rp.js:60:32)
    at self.callback (C:\Users\<redacted>\Desktop\NodeJS\node_modules\request\request.js:186:22)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.onRequestError (C:\Users\<redacted>\Desktop\NodeJS\node_modules\request\request.js:845:8)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)
    at TLSSocket.socketErrorListener (_http_client.js:310:9)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:188:7)
    at emitErrorNT (net.js:1276:8)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)```

As you said, there is an issue whith the certificate: Unhandled rejection RequestError: Error: unable to get local issuer certificate. Maybe you can bypass the error by setting this environment variable:
set NODE_TLS_REJECT_UNAUTHORIZED = "0"

You should re-generate the bot token, it was exposed you your comment (I edited it.)

Ok, I'll try that when I get back on that certain PC. I think if it doesn't work though I can just SSH into my server to work around it.
As for the token, I've regenerated it. Thanks for catching that, I was so focused on redacting my username and didn't even remember it was supposed to be secret XD


Add support for range of lines

Add a way to support a range of lines when passing a line number with a file
oogg path/to/file:50-100

Will actually convert to the URL
https://github.com/{user}/{repository}/blob/{branch}/{file}#L50-L100

Solved on #5


Season of Discovery support?

Hello, I see you have met your donation goal for TBC/Wrath and I'm quite excited for that. I would also love to see Season of Discovery supported. While it is Classic and some voices should possibly be covered it is my understanding they're adding new quests etc to this. Would there also be a donation goal for this project or do we just not know enough yet?

My current goal is completing tbc and wrath, new voices for classic are included in that. I'm working on a web application to manage everything so people can efficiently help with the process.
If someone hands me the required data to generate new voice lines for season of discovery, I don't see why we couldnt add them. retail-plan.md includes a scalable plan to support every variation of WoW, but I'm still on part 1 and I don't currently see myself doing the scraper unless something changes.