[Question] package:desktop_multi_window compatibility

Problem:
Currently, there seems to be an issue when trying to use the Video Player (Video Widget) in combination with multiple windows on macOS. Other platforms I could not verify/test.
When opening a new window and initialising a VideoController, Player and the video Widget the following exception is thrown and a black screen is rendered.
Does this note in the desktop_multi_window library might lead to the issue?
The windows run on different flutter engine. So we need use DesktopMultiWindow.invokeMethod and DesktopMultiWindow.invokeMethod to handle method calls between windows.

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method VideoOutputManager.Create on channel com.alexmercerind/media_kit_video)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:313:7)
<asynchronous suspension>
#1      VideoControllerNative.create (package:media_kit_video/src/video_controller_native.dart:81:5)
<asynchronous suspension>
#2      _VideoPlayerState.initState.<anonymous closure> (package:iptv_player/video_player/video_player.dart:38:25)
<asynchronous suspension>

if the player.open method is called in the initState nothing happens, except the black screen.
While if added within the build() method it at least plays the sound of the video.
Expected Behaviour:
Instead of throwing this exception, the video widget should still render the video and not just play the sound.
Dependencies:
  desktop_multi_window: ^0.2.0                   # Used for multi window support in Flutter
  media_kit: ^0.0.6                              # Primary package.
  media_kit_video: ^0.0.8                        # For video rendering.
  media_kit_native_event_loop: ^1.0.3            # Support for higher number of concurrent instances & better performance.           # iOS package for video native libraries.
  media_kit_libs_macos_video: ^1.0.4             # macOS package for video native libraries.

Example Code that should help to reproduce:
Main

import 'dart:convert';

import 'package:collection/collection.dart';
import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/material.dart';
import 'package:iptv_player/video_player/video_player.dart';
import 'package:media_kit/media_kit.dart';

Future<void> main(List<String> args) async {
  WidgetsFlutterBinding.ensureInitialized();
  MediaKit.ensureInitialized();
  if (args.firstOrNull == 'multi_window') {
    final windowId = int.parse(args[1]);
    final arguments = args[2].isEmpty
        ? const {}
        : jsonDecode(args[2]) as Map<String, dynamic>;
    if (arguments.containsValue('player')) {
      final link = arguments['args1'];
      runApp(
        MaterialApp(
          home: VideoPlayer(
             windowController: WindowController.fromWindowId(windowId),
             videoUrl: link,
             args: {},
            ),
          )
      );
    }
  } else {
    runApp(
      App(),
    );
  }
}

Widget to open a new window

import 'dart:convert';

import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/material.dart';

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

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () async {
        final window = await DesktopMultiWindow.createWindow(jsonEncode(
          {
            'args0': 'player',
            'args1': 'https://user-images.githubusercontent.com/28951144/229373695-22f88f13-d18f-4288-9bf1-c3e078d83722.mp4',
          },
        ));
        window
          ..setFrame(const Offset(0, 0) & const Size(960, 540))
          ..center()
          ..setTitle("Stream")
          ..show();
      },
      child: Column(children: [
        Expanded(
          child: SizedBox(height:100, width: 100,),
        ),
      ]),
    );
  }
}

Video Player Widget that is rendered in the new Window

import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/material.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';

class VideoPlayer extends StatefulWidget {
  const VideoPlayer({
    required this.windowController,
    required this.videoUrl,
    super.key,
  });

  final WindowController windowController;
  final String videoUrl;

  @override
  State<VideoPlayer> createState() => _VideoPlayerState();
}

class _VideoPlayerState extends State<VideoPlayer> {
  final Player player = Player(
    configuration: const PlayerConfiguration(
      logLevel: MPVLogLevel.warn,
    ),
  );

  VideoController? videoController;

  @override
  void initState() {
    super.initState();

    Future.microtask(() async {
      videoController = await VideoController.create(player);
      await player.open(
        Media(widget.videoUrl),
      );
      setState(() {});
    });
  }

  @override
  void dispose() {
    Future.microtask(() async {
      debugPrint('Disposing [Player] and [VideoController]...');
      await player.dispose();
      await videoController?.dispose();
    });
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Video(
        controller: videoController,
      ),
    );
  }
}

Hi!
First of all, thanks for the descriptive bug report.
I will say this is a bug within desktop_multi_window. Let's forget media_kit for a moment, are you sure that any other native plugins are working inside that newly created window (associated with different engine)?
The log you shared indicates that a connection with native platform implementation could not be established.
The audio playback is working because it does not depend on platform channels. In our architecture, most implementation e.g. most methods, events etc. (including audio) are part of FFI (thus shared across all the platforms). Only video rendering is platform specific & uses platform channels. If platform channel is not working/registered on the new window, I suppose there is very little that can be done by us. The usage of FFI in our project is also a big difference as compared to other plugins. But, video playback & texture registry is something exclusive to platform channels.

Hi @alexmercerind,
thanks for this fast response!
You might be right, I will check with the authors of that repository if they can share if platform channels would work with multi-window.
Will keep you up to date!

It is actually possible to use platform channels with the plugin.
https://github.com/MixinNetwork/flutter-plugins/issues/58#issuecomment-1060371162
Adding this into the MainFlutterWindow.swift file now allows me to use the player with video successfully in a new window.
import desktop_multi_window
import isar_flutter_libs
import macos_ui
import media_kit_libs_macos_video
import media_kit_video
import path_provider_foundation
import screen_retriever
import sqflite
import wakelock_macos
import window_manager

class MainFlutterWindow: NSWindow, NSWindowDelegate {
  override func awakeFromNib() {
    ......
    RegisterGeneratedPlugins(registry: blurryContainerViewController.flutterViewController)

    FlutterMultiWindowPlugin.setOnWindowCreatedCallback { controller in
      FlutterMultiWindowPlugin.register(with: controller.registrar(forPlugin: "FlutterMultiWindowPlugin"))
      IsarFlutterLibsPlugin.register(with: controller.registrar(forPlugin: "IsarFlutterLibsPlugin"))
      MacOSUiPlugin.register(with: controller.registrar(forPlugin: "MacOSUiPlugin"))
      MediaKitLibsMacosVideoPlugin.register(with: controller.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin"))
      MediaKitVideoPlugin.register(with: controller.registrar(forPlugin: "MediaKitVideoPlugin"))
      PathProviderPlugin.register(with: controller.registrar(forPlugin: "PathProviderPlugin"))
      ScreenRetrieverPlugin.register(with: controller.registrar(forPlugin: "ScreenRetrieverPlugin"))
      SqflitePlugin.register(with: controller.registrar(forPlugin: "SqflitePlugin"))
      WakelockMacosPlugin.register(with: controller.registrar(forPlugin: "WakelockMacosPlugin"))
      WindowManagerPlugin.register(with: controller.registrar(forPlugin: "WindowManagerPlugin"))
    }
    ......
  }

Sorry for reopening this one, but after playing around with this combination of packages I found another issue which I think this time applies to this plugin.
If you create multiple new windows, let's say two, next to the main window the plugin runs all of them in a different flutter engine and new runApp() Scope.
Due to this it is required to call ensureInitalized whenever a new window is created that should contain a player.
  MediaKit.ensureInitialized();

I realized that opening a new window with a new video player always stopped the playback on the first. The console shows the reason for it. Whenever calling the initalize method again, it seems to clear existing instances.
media_kit: Destroying 1 [Player] instances...
media_kit: Done.

void MediaKitEventLoopHandler::Initialize() {
  std::lock_guard<std::mutex> l(mutex_);
  if (mutexes_.size() > 0 && promises_.size() > 0) {
    // Destroy already running |mpv_handle|(s).
    std::cout << "media_kit: "
              << "Destroying " << mutexes_.size() << " [Player] instances..."
              << std::endl;
    for (auto& [handle, _] : mutexes_) {
      mpv_command_string(handle, "quit 0");
    }
    std::cout << "media_kit: Done." << std::endl;
    mutexes_.clear();
    promises_.clear();
  }
}

Is there another way to allow me to initialise the plugin without stopping existing instances?

Hi @pauli2406!
The stopping of existing instances on hot-restart is a "feature" which I implemented in #127. This greatly improves the development experience since that's how hot-restart is meant to work (clearing the existing state & resources).
I don't think I can provide any further support about something which isn't officially supported or endorsed by me i.e. package:desktop_multi_window. However, you can prevent stopping existing instances by commenting following line in your local file:
https://github.com/alexmercerind/media_kit/blob/5e65ba53391ce6921a4d3da26052f9ab32c97933/media_kit/lib/src/libmpv/core/initializer_native_event_loop.dart#L57
Still, you have to keep in mind that it's still not an issue on our end. Our point of focus is video & audio playback, which is infact working in a very stable manner. Multi window support & it's handling is not part of Flutter engine or framework, it's you who is choosing to depend on a third-party package (for which, none of us is liable).

Hi @pauli2406
I am trying to use this library with the "desktop_multi_window" plugin
I think i am encountiring your same problem.
Have you found any valid solution?
Commenting the line proposed by @alexmercerind makes the app crash immediatly

@alexmercerind do you have any tips or advice on how to solve this?
If i comment the "_initialize?.call();" the app just crash with no exception thrown

@alexmercerind @pauli2406 any help please?

Hey @Andrekarma
I decided in the end to not allow more than a second window to be opened.
Whenever I create a new instance I check if their is an existing id already an close that one before:
try {
                final windowIds = await DesktopMultiWindow.getAllSubWindowIds();
            if (windowIds.isNotEmpty) {
              for (var element in windowIds) {
                await WindowController.fromWindowId(element).close();
              }
            }
            } catch (e) {
              debugPrint(e.toString());
            }
            final window = await DesktopMultiWindow.createWindow(jsonEncode(
              {
                'args0': 'player',
                'link': widget.link,
              },
            ));
            debugPrint('$window');
            window
              ..setFrame(const Offset(0, 0) & const Size(960, 540))
              ..center()
              ..setTitle(widget.title ?? "Stream")
              ..show();

To get this running correctly I had to extend my viewer widget with the WindowListener from the window_manager library so that the player is correctly disposed when closing the new window via the close button
class _VideoPlayerState extends State<VideoPlayer> with WindowListener {
  final Player player = Player(
    configuration: const PlayerConfiguration(
      logLevel: MPVLogLevel.warn,
    ),
  );
  late VideoController videoController;

  @override
  void initState() {
    super.initState();
    windowManager.addListener(this);
    videoController = VideoController(player);
    Future.microtask(() async {
      await player.open(
        Media(widget.videoUrl),
      );
      setState(() {});
    });
  }

  @override
  void dispose() {
    Future.microtask(() async {
      debugPrint('Disposing [Player] and [VideoController]...');
      await player.dispose();
    });
    super.dispose();
  }

  @override
  void onWindowClose() async {
    dispose();
    super.onWindowClose();
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        if (Navigator.of(context).userGestureInProgress) {
          return false;
        } else {
          return true;
        }
      },
      child: MaterialApp(
        home: Scaffold(
          body: Video(controller: videoController),
        ),
        debugShowCheckedModeBanner: false,
      ),
    );
  }
}


support ratio for crop image

Can I setup crop image by ratio by 1:1, 4:3 and more.

Please see #2190


Comma for $1,000's

Great script! Thank you. I love that the .js is uncompiled.
This is not an issue, just a useage inquiry. Please tell if there is a way to add the comma for amounts over $999.99 in both the item and cart total. Thanks again for your hard work.

Thank you again. This not an issue, just a feature request. Is it conceivable that minicart could handle promo/coupon codes? Thank you for your work.


Underwater Noise - splitting source-event types

Split source event: “Sonar or acoustic deterrent” NE – Event: Source_event
Currently this source event is combined, it is suggested to split into two separate source-event types.

Vocab, http://vocab.ices.dk/?ref=1431 need to add two new terms:
o	Sonar
o	Acoustic deterrent
And deprecate current term “Sonar of acoustic deterrent” but leave visible

also remove

The codes have been added, but just a question on the "Sonar" description. Should it be "Sonar" or "Sonar deterrents"? The phrasing of the old code makes it difficult to interpret.

@pcrjoana for the label description, go with "Sonar deterrents" 🔈


mygui: 3.4.0 -> 3.4.1

Description of changes
Supersedes #182905, since stuntrally is now on Ogre 13.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 222680 run on aarch64-linux 1

5 packages built:

mygui
openmw
portmod
portmod.dist
stuntrally


Revert "Revert "Add announcement bar""

Add BetterUptime announcement thing. Originally made by @JoshAtticus but has been reverted because it needs reviews before being merged.

@Bloctans @MikeDev101 @zedthehedgehog @CST1229 @silvxrcat pls review

what does it look like?

what does it look like?

good


feat(dispatch): improving capabilities when COMBINE service is down

Closes #2750

Run simulation

Added timeout to loading similar algorithms
Enabled filtering of simulation tools without algorithm similarity from COMBINE service

View simulation

Fixed display of metadata loading indicator
Fixed visualization loading indicator
Enabled designing and displaying plots without specs of SED-ML files from COMBINE service

Closes #2738
Added simpler way to create 2D line/scatter plot with multiple curves

:tada: This PR is included in version 3.5.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Maven dependency not being update from a private repo

I am using dependabot in Gitlab CICD and configured accordingly with example implementation from dependabot-script. The workflow is for a JAVA Maven project.
I have added the following in generic-update-script.rb regarding acces to Nexus repo.
'''
credentials << {
"type" => "maven_repository",
"url" => "https://private_repo/nexus3",
"username" => "nexus_username",
"password" => "#########"
'''
The POM has the following :

distributionManagement - with repository definition for releases and snapshot
dependencies - with 2 definiton - 1 internal and 1 external.
repositories - - with 1 repository definition for private nexus.

In current configuration it makes the updates only for public dependencies but not for private.
Does currently dependabot support scanning other repos rathen then Maven central ?

It looks like this issue has been open for a while and we’ve made a bunch of improvements to Dependabot since, including better support for private registries. Is this still happening, or has this problem been resolved and can we close this issue?

hey. cant test at the moment as i dont work anymore on that project but i will simulate similar configuration.

I have encountered an issue with private maven repo, where it wouldn't work due to how the repository behaves and how dependabot-core tries to resolve new versions.
For example repo https://api.mapbox.com/downloads/v2/releases/maven would not work because the way new versions are fetched is first by trying to retrieve metadata.xml via what I suspect is a mavencentral like url, com/mapbox/search/mapbox-search-android-ui/maven-metadata.xml for example. Mapbox will simply return 404 error for such a request which will fail the update process.
I'm not sure if nexus has the same issue, but I would imagine some other repositories might.

@lseppala I'm having a similar issue.
I have setup the dependabot.yml on my github repo. The dependabot has registries pointing to our internal maven repository and from the updates section it has the registries pointing to the registry declared.
Looks like the configuration is correct, however the dependabot keeps going to maven central instead of my private maven repo.
This is a snippet of the dependabot.yml:
version: 2
registries:
  my-artifactory:
    type: maven-repository
    url: https://my.internal.repo
    username: MY_USER
    password: ${{secrets.MY_SECRET}}
updates:
  - package-ecosystem: "maven"
    directory: "/"
    registries:
      - my-artifactory
    schedule:
      interval: "daily"

This is the dependabot log:
updater | INFO <job_437815072> Starting job processing
updater | INFO <job_437815072> Starting update job for organization/app-repository
updater | INFO <job_437815072> Checking if my.internal.groupid:internal-artifact 1.0.0 needs updating
  proxy | 2022/08/10 16:36:04 [012] GET https://my.internal.repo:443/artifactory/internal-releases-virtual/my/internal/groupid/internal-artifact/1.0.0/internal-artifact.pom
  proxy | 2022/08/10 16:36:04 [012] * authenticating maven repository request (host: my.internal.repo)
  proxy | 2022/08/10 16:36:24 [014] GET https://repo.maven.apache.org:443/maven2/my/internal/groupid/internal-artifact/1.0.0/internal-artifact.pom
  proxy | 2022/08/10 16:36:24 [014] 404 https://repo.maven.apache.org:443/maven2/my/internal/groupid/internal-artifact/1.0.0/internal-artifact.pom
  proxy | 2022/08/10 16:36:24 [016] GET https://repo.maven.apache.org:443/maven2/my/internal/groupid/internal-artifact/1.0.0/maven-metadata.xml
  proxy | 2022/08/10 16:36:24 [016] 404 https://repo.maven.apache.org:443/maven2/my/internal/groupid/internal-artifact/1.0.0/maven-metadata.xml
updater | INFO <job_437815072> Latest version is
updater | INFO <job_437815072> Requirements to unlock update_not_possible
updater | INFO <job_437815072> Requirements update strategy
updater | INFO <job_437815072> No update possible for my.internal.groupid:internal-artifact 1.0.0

Is there something I'm missing?

I've improved private registry support with #5924, #5908, #5907, and #5884.
@gianielsevier has a specific issue open for that case
I'm going to close this out, feel free to open a new issue with details if you're still having problems.
Thanks for you patience!


Transformer variant

Have you considered having a transformer variant of Managed so that extra effects could be layered on top of IO?
Or at that point is it just as easy to use ContT ()?

I've been thinking about doing this, even though it would be very similar to ContT.  The main benefit of ManagedT over ContT would be more instances such as a Monoid or Num instance and MonadManaged, of course.  Also, it would have a more descriptive name and a slightly simpler inferred type
I think the only reason I haven't provided this so far is that I haven't seen a lot of use cases for it yet

I've got a broken one if it would be useful to debug together somewhere. I could pull it out and submit a WIP later this afternoon.
--
Evan Cofsky<EMAIL_ADDRESS>Support tech pedagogy for everyone, especially people "not a culture fit":
https://www.patreon.com/teamunixman
On Jun 22, 2017, at 10:58, Gabriel Gonzalez<EMAIL_ADDRESS>wrote:
I've been thinking about doing this, even though it would be very similar to ContT. The main benefit of ManagedT over ContT would be more instances such as a Monoid or Num instance and MonadManaged, of course. Also, it would have a more descriptive name and a slightly simpler inferred type
I think the only reason I haven't provided this so far is that I haven't seen a lot of use cases for it yet
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Yeah, you can always open a PR and I can take a look at it


the problem about multiple namespace

I have some namespaces, when i login in grafana, i just can see "default" and "kube-system" namespaces and cannot find others

Without knowing details about your cluster, there's nothing we can do.  Please indicate your versions of Heapster and Kubernetes, and check the Heapster logs.

@yin32167 just type in the name of your namespace and it will show your pods.. at least thats what helped me

Hi everybody,
I got the same error as @yin32167. I also have some namespaces like default, kube-public, kube-system, nginx-ingress, test1, test2 and etc. I installed Heapster stack from
deploy/kube-config/influxdb/ and
deploy/kube-config/rbac/heapster-rbac.yaml
I install latest version of container:
heapster-grafana-amd64:v4.4.1
heapster-amd64:v1.4.1
heapster-influxdb-amd64:v1.1.1
In Grafana in dashboard "Pods" I can select only "kube-system" or "default" namespaces and in "default" there are no pods at all (although there are some). In "kube-system" those pods are seen, which are deployed only on two out of ten nodes. In dashboard "Cluster" I can see all my nodes.
When I open URL heapster I see only two namespaces - "kube-system" and "nginx-ingress".
curl http://<IP_ADDRESS>/api/v1/model/namespaces/
[
  "nginx-ingress",
  "kube-system"

Could you please help me to install Heapster correctly?
I have the following configuration on all my nodes:
#lsb_release -a
Description:	Ubuntu 16.04.2 LTS
#uname -r
4.4.0-79-generic
#kubectl version
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.4", GitCommit:"793658f2d7ca7f064d2bdf606519f9fe1229c381", GitTreeState:"clean", BuildDate:"2017-08-17T08:48:23Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3", GitCommit:"2c2fe6e8278a5db2d15a013987b53968c743f2a1", GitTreeState:"clean", BuildDate:"2017-08-03T06:43:48Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

docker version
docker version
Client:
 Version:      1.12.6
 OS/Arch:      linux/amd64

I solved my problem with heapster. If you want to have actual information in Grafana from database you need to configure Template:

go to YOUR_DASHBOARD (for example Pods) - Templating
press "Edit" in tab Variables
set fields "Data source =  influxdb-datasource" and "Refresh = On Dashboard Load"
After that you will have actual namespaces and pods list.

@DanyalITMO

But when I open URL heapster, I see only two namespaces - "kube-system" and "nginx-ingress".

Just restart kubelet service on all the nodes. For my Ubuntu 16.04:
systemctl restart kubelet
Now I have all my namespaces and pods in my InfluxDB.

@DanyalITMO   thanks very much, i try it and it works. and i find that you needn't restart your kubelet, just press the 'Save & Test' button in 'Data Sources', it will reload the namespaces


Fix flash error processing

Regeexp is changed to a greedy one to handle lines like
    error: ENOENT: not such file or directory

Change-type: patch
Signed-off-by: Roman Mazur<EMAIL_ADDRESS>

@balena-ci retest please


reqwest-retry: Retry from the last position via a Range request if connection fails in the middle of the body

Motivations
For use-cases where the whole body is received as a single, not too large blob, the current behaviour makes sense but for e.g. downloading media files it would make sense to also handle the case where the request succeeds but somewhere in the middle of the body there's a connection failure.
Solution
In that case a Range request to start at the last previously downloaded position could be performed on retry. This needs keeping track of the position and also of any Range header in the original requests.

This is an interesting idea. I think this should be a separate middleware since it's quite a strong requirement - eg we would need to read the body which is something we currently don't do.
Criteria: If there's the Accept-Ranges: bytes and a Content-Length specified in the response, we can enable the range loop.
While the reqwest::Response object cannot have the body re-inserted, I believe we may be able to reconstruct it by using http::Response to pass back in the chain.


Handle Back in browser properly to transition back to Game Setup screen

Now, when I move from Game Setup screen to the Game screen, it all happens inside a single page (I basically do the transition with JavaScript, just rendering different components), even though it feels like we are going to another page.
Therefore, just clicking Back button on the Game screen does not take you back to the Game Setup screen and instead just takes you on the previous web page (sometime that's not even Rokumon page).
We should figure out how to handle that Back putton in JS and just revert the app state back to GameSetup.

This should be done with react-router: https://reacttraining.com/react-router/web/guides/quick-start
Basically instead of my custom state management to transition between different pages inside the app, we just need to use client side routing. It will automatically handle URLs and Back button


Non-localized skill name when you click on weapon name

Add weapon to agent.
Click on the weapon name.

In the chat card you will see non-localized skill name.

I think I found this one and fixed it (along with a related tooltip error).  So should be fixed in the next package.


Transparent pixels are too opaque

Related to #31.
Using 1.7.10 and Ears 1.4.5_01. Transparent pixels on the skin overlay layer are incorrectly rendered as almost fully opaque, other than the ones on the head, which look correct.
I compared the last few versions against ears-fabric-1.17-1.4.5_01 on 1.18, which revealed the following timeline: they rendered correctly in 1.4.2, then they became a bit more opaque than they should be in 1.4.3, then in 1.4.5 they became almost fully opaque.
Comparison screenshots
1.18 (Baseline)

Version
Hand
Body
Comment

1.4.5_01

OK

1.7.10

Version
Hand
Body
Comment

1.4.2

OK

1.4.3 - 1.4.4

A bit too opaque (other than head)

1.4.5_01

Almost fully opaque (other than head)

Test skin

Nope, these are clean instances with only Ears installed.


Remove code generating invoices for previous years

The invoicing code is currently a little over-engineered – it supports generating invoices for multiple conferences, however in practice we only generate it for one conference at the time, and then switch to a new branch for a new conference, so the code that sets this up (mostly tests and constants) can be removed.

https://github.com/EuroPython/epcon/blob/dev/ep2020/conference/invoicing.py#L30-L90


Fix decoding & error correction

Decoding had a few bugs/differences when compared to zxing -

Didn't try mirroring the QR code and redecoding.
Reed Solomon just didn't work (due to a properties vs method calling bug).

This fixes those issues and adds regression test(s).

lgtm.


paste.awesom.eu site is forcing https and failing

paste.awesome.eu is now redirecting to https it seems
but failing to connect trough SSL (lack of/expired cert?)
(i actually was using this because it DID NOT required https  hehe)

Hi! paste.awesom.eu has been taken down unfortunately. It was apparently being used to host malware, which resulted in the server being blacklisted by the provider. I decided to completely remove the paste service.

oh sadly... because of the HTTP convenience and popularity i guess... that's SAD to hear... any chance i can recover a specific paste with links, that i forgot to backup?

The hard drive failed last year, so I'll have to go through old backups. Hit me up by email and next time I'm going through backups, I can look if I still have that.


Typings

[x] tests and linter show no problems (npm t)
[ ] tests are added/updated for bug fixes and new features
it possible to add the following test to approve typing changes
but in my opinion we should not do this becouse of this test contains unhandled promises

metatests.test('Type checking', async (test) => {
  const configInstance = new Config('./examples/example5');
  test.strictSame(configInstance instanceof Config, false);
  test.strictSame(configInstance instanceof Promise, true);

  const readedConfig = await readConfig('./examples/example1');
  test.strictSame(readedConfig instanceof Config, false);
  test.end();
});

[x] code is properly formatted (npm run fmt)
[x] description of changes is added in CHANGELOG.md
[x] update .d.ts typings

Of couse the Config instance contains "names" and "load" entries
but code-users cant call it because of the Config constructor do not returns a Config instance.
Also typescript show an error on new Config().then call
because of this method does not described at old type definition
Also the awaited readConfig result is not an instance of Config in fact.

Also I think a generic will be useful for a strict type checking

We use async constructor. So const promisedConfig = new Config('./examples/example5'); will not return configInstance, it will return Promise, so we should add const promisedConfig = await promisedConfig; or just combine it: const configInstance = await new Config('./examples/example5');. There is no way to define it in TS, because TS is not a superset of JS. Your patch adds inheritance, but configInstance is not a an instance of Promise.

of cause the Config does not extends a Promise in fact.
but you writing d.ts files to help people use your stack with typescript.
current definitions leads to:

await new Config() - leads to a warning that you using unnecessary await
(new Config()).then - leads to a compillation error. a Config instance does not contains a "then" method
readedConfig().then((conf) => console.log(conf.names.length)) - leads to a runtime error. the conf variable does not contains a "names" field (also current definition does not takes into the fact that names is nullable)

Sure my definition does not match the reality as well as the current one.
But my definition make it able to call variable's methods and fields according with reality.

Nobody will use Config class in their code, we have auto loader for configs, so developer will access loaded structures from memory.

well, in this case may be the best decision is cleanup any d.ts files from a project? )))

so what is a reason to move metaconfiguration to a separate lib?
I using metatests (without impress or other metarhia stack components) at my freelance project. it's pretty simple, fast and lightweight.
may be somebody will use metaconfiguration standalone for his project...


demo-ng - ns migrate to ns8 and ng14

updated demo-ng and tested it on physical device and arduino BLE device

@two-bridges thanks again ;)!


numericLiteral is always integer

when using:
builder.AddProjection(new Function("AVG", new Multiplication(new NumericLiteral(1.0), new Column("col1"))), metric);
i'm getting :
SELECT AVG((1 * col1))
instead of :
SELECT AVG((1.0 * col1))

NumericLiteral has a Format property that you can use to force how the
number is converted back to a string.
On Sep 7, 2015 10:06 AM, "erez l"<EMAIL_ADDRESS>wrote:

when using:
builder.AddProjection(new Function("AVG", new Multiplication(new
NumericLiteral(1.0), new Column("col1"))), metric);
i'm getting :
SELECT AVG((1 * col1))
instead of :
SELECT AVG((1.0 * col1))
—
Reply to this email directly or view it on GitHub
https://github.com/jehugaleahsa/SQLGeneration/issues/23.


Provide more font overlay styles and animations

Here is an example of overlay font effects: https://www.youtube.com/watch?v=Ifvrt-G9-nE

Anything on this?

moving text script under the advanced scripts folder is already implementing some of those text animations. You don't need me to implement the others. You can edit that script and implement them yourself.

@tanersener But, I am talking about a set of standard built in text and animations to it. For example:

Text at the bottom with padding from the bottom.
Text at the top with padding from the top.
Text that fades in at any position and fades out.
etc

moving text script supports changing the position of the text and the text frame. There are two variables that control them. You can also change the text size and frame height. You can increase padding by playing with them. Did you try to do that?
Could you please take a look at #30?

OK got it. Il give it a go.


Update BUILDING with required Python packages

These packages were added to openweave.io/guides/build, so adding here too to keep in sync.
Also fixed some code-font formatting issues.

Thank you @Vyrastas !


ONIX V 0.3 enhancements

Description
Create a list of enhancements that can be part of ONIX next release.
Goals

[ ] List the feature enhancements in the next release of ONIX version.

Expected Outcome
A brief document listing the enhancements required in the ONIX V0.2 that can be taken as incremental updates to the ONIX next version.
Acceptance Criteria

[ ] Documented enhancements for ONIX V0.2
[ ] Enhancements should be cleared mentioned and which components they are applicable.
[ ] Pointing out the script where they will be added during execution time.
[ ] Create the user flow how it will look like after the enhancements are implemented.

Implementation Details
NA
Mockups / Wireframes
NA

[Please note that the below section of the ticket has to be in the format as mentioned as it is key to enabling proper listing of the project. Please only choose the options mentioned under the headings wherever applicable.]
Product Name
ONIX
Project Name
ONIX
Organization Name:
FIDE
Domain
NA
Tech Skills Needed:
Docker
Docker-compose
shell script
ONIX understanding
Complexity
Medium
Category
Deployment, Documentation
Sub Category
Documentation

The requirements has to come from business.

@vbabuEM is this a valid issue?


Support sparsefiles Copy in blockfile snapshotter

Adds the ability to copy sparse files and can be configured in the config.
In the Go language, io.Copy is equivalent to cp --sparse=never xxx, so even if the initial scratch file is a sparse file, it is still a non-sparse file after go io.copy. Each snapshot block file will occupy the full block file size by default.

cc @dmcgowan @dcantah @fuweid

Can we stat each file after the copy to  see if the block usage differs? The expectation right now is blockfile snapshotter is not very efficient when copy file range is not used.  Are the sparse file properties preserved when it doesn't go through a full read/write copy of the file?

according to https://wiki.archlinux.org/title/sparse_file
We use the command "fallocate -d copy.img" to make the snapshot blockfile sparse.
here is the test demo,using nginxt,which has 7 layers
root@n37-006-180:~# nerdctl pull nginx --snapshotter blockfile
docker.io/library/nginx:latest:                                                   resolved       |++++++++++++++++++++++++++++++++++++++|
index-sha256:32e76d4f34f80e479964a0fbd4c5b4f6967b5322c8d004e9cf0cb81c93510766:    exists         |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:43df308e3a5e165fd5d4e077c991ed936aebca01bf20ab25961d7e542db410a0: exists         |++++++++++++++++++++++++++++++++++++++|
config-sha256:1d668e06f1e534ab338404ba891c37d618dd53c9073dcdd4ebde82aa7643f83f:   exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:e58cbd904f7f72cc6e30b30dc19b47fc4c1ee2a0103c69eb5b20f8e950c58e42:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:b0a0cf830b12453b7e15359a804215a7bcccd3788e2bcecff2a03af64bbd4df7:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:1e5314d67f1699f049bf4bd694833e1e2b1b35905847570442f75ca71e758a62:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:4d84de5fb9b2d32bc417c2e043fcc88e3303970c61cd4916956e66431a9ce7d3:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:05f7109fea9eb1af4aae06cbc0894f5e2c5b07a638ebb509f0d88b6dfc948997:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:2818b7b6a9db4d0901d74850cf1096f76fa22d8a7fad4d711710fbf6ab1b48d1:    exists         |++++++++++++++++++++++++++++++++++++++|
layer-sha256:8066e07ce4f22945d61fa9682f5ef843bb750a4829d3176009d383933c27eedd:    exists         |++++++++++++++++++++++++++++++++++++++|
elapsed: 3.7 s                                                                    total:   0.0 B (0.0 B/s)

After
After 7 snapshots (18~24) were sparsified, the results are as follows:
du -h
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# du -h 18 19 20 21 22 23 24
86M	18
198M	19
198M	20
198M	21
198M	22
198M	23
198M	24

du -h --apparent-size
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# du -h --apparent-size 18 19 20 21 22 23 24
512M	18
512M	19
512M	20
512M	21
512M	22
512M	23
512M	24

stat
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# stat 18 19 20 21 22 23 24
  File: 18
  Size: 536870912 	Blocks: 175208     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835365     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:06:57.442605960 +0800
Modify: 2024-05-08 16:06:57.422605477 +0800
Change: 2024-05-08 16:06:57.422605477 +0800
 Birth: -
  File: 19
  Size: 536870912 	Blocks: 403536     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835373     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:02.313723617 +0800
Modify: 2024-05-08 16:07:02.289723037 +0800
Change: 2024-05-08 16:07:02.289723037 +0800
 Birth: -
  File: 20
  Size: 536870912 	Blocks: 403496     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835380     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:06.029813372 +0800
Modify: 2024-05-08 16:07:06.020813155 +0800
Change: 2024-05-08 16:07:06.020813155 +0800
 Birth: -
  File: 21
  Size: 536870912 	Blocks: 403496     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835420     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:09.975908685 +0800
Modify: 2024-05-08 16:07:09.966908468 +0800
Change: 2024-05-08 16:07:09.966908468 +0800
 Birth: -
  File: 22
  Size: 536870912 	Blocks: 403496     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835428     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:13.929004166 +0800
Modify: 2024-05-08 16:07:13.921003973 +0800
Change: 2024-05-08 16:07:13.921003973 +0800
 Birth: -
  File: 23
  Size: 536870912 	Blocks: 403496     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835429     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:17.882099647 +0800
Modify: 2024-05-08 16:07:17.874099454 +0800
Change: 2024-05-08 16:07:17.874099454 +0800
 Birth: -
  File: 24
  Size: 536870912 	Blocks: 403496     IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835436     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-08 16:07:21.825194887 +0800
Modify: 2024-05-08 16:07:21.834195105 +0800
Change: 2024-05-08 16:07:21.834195105 +0800
 Birth: -

before
before 7 snapshots (18~24) were sparsified, the results are as follows:
du -h
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# du -h 25 26 27 28 29 30 31
513M	25
513M	26
513M	27
513M	28
513M	29
513M	30
512M	31

du -h --apparent-size
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# du -h --apparent-size 25 26 27 28 29 30 31
512M	25
512M	26
512M	27
512M	28
512M	29
512M	30
512M	31

stat
root@n37-006-180:/var/lib/containerd/io.containerd.snapshotter.v1.blockfile/snapshots# stat 25 26 27 28 29 30 31
  File: 25
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835047     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:07.107070124 +0800
Modify: 2024-05-10 11:41:07.090069713 +0800
Change: 2024-05-10 11:41:07.090069713 +0800
 Birth: -
  File: 26
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835048     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:11.804183768 +0800
Modify: 2024-05-10 11:41:11.786183332 +0800
Change: 2024-05-10 11:41:11.786183332 +0800
 Birth: -
  File: 27
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835053     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:15.521273699 +0800
Modify: 2024-05-10 11:41:15.513273505 +0800
Change: 2024-05-10 11:41:15.513273505 +0800
 Birth: -
  File: 28
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835056     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:19.467369176 +0800
Modify: 2024-05-10 11:41:19.459368982 +0800
Change: 2024-05-10 11:41:19.459368982 +0800
 Birth: -
  File: 29
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835059     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:23.421464842 +0800
Modify: 2024-05-10 11:41:23.413464649 +0800
Change: 2024-05-10 11:41:23.413464649 +0800
 Birth: -
  File: 30
  Size: 536870912 	Blocks: 1048584    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835103     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:27.374560482 +0800
Modify: 2024-05-10 11:41:27.367560313 +0800
Change: 2024-05-10 11:41:27.367560313 +0800
 Birth: -
  File: 31
  Size: 536870912 	Blocks: 1048576    IO Block: 4096   regular file
Device: fe01h/65025d	Inode: 1835104     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-10 11:41:31.315655833 +0800
Modify: 2024-05-10 11:41:31.325656075 +0800
Change: 2024-05-10 11:41:31.325656075 +0800
 Birth: -

gently ping ... @dmcgowan


Clear local prison when coordinator is changed

Clients wait up to a couple of days to unban UTXOs from their local prison. When a user changes coordinators, any bans applied by the old coordinator should be automatically removed.

https://github.com/WalletWasabi/WalletWasabi/pull/13313


MM-47763 - Calls: "who is speaking" state

Summary

@enahum noticed that the voiceOn (who is currently speaking) state in the CurrentCallBar was completely lost when you move around screens, which is not a great UX. It's even worse when you move from watching the CurrentCallBar (and seeing UserA speaking) to the CallScreen (and then see no-one speaking), or vise versa.
So moving the voiceOn state to the CurrentCall state. The detailed state (other than "there is a call happening") is only observed by the CurrentCallBar and the CallScreen, so it shouldn't cause any performance issues. (But I do have a benchmarking branch, so if you want numbers it will take an hour to set it up and run them.)
Second ticket was "Call bar speaker is flaky" -- this was happening because the old method only kept the most recent speaker. So if UserA started speaking, UserB said something quick, and UserA kept speaking, it would show no-one speaking after UserB stopped speaking. This is fixed.

Ticket Link

https://mattermost.atlassian.net/browse/MM-47763
https://mattermost.atlassian.net/browse/MM-47764

Checklist

[x] Added or updated unit tests (required for all new features)
[ ] Has UI changes
[ ] Includes text changes and localization file updates
[ ] Have tested against the 5 core themes to ensure consistency between them.

Device Information

Android: 13, Pixel 6
iOS: 15.7, iPhone 7 plus

Release Note
Calls: The "who is speaking" state is now retained when switching screens.

@streamer45 DeviceEventEmitter was good for sending the event directly to the component (callBar or callScreen), but then the state still needs to be stored past the lifetime of any callBar or callScreen (which get recreated on every new screen).
Since callBar and callScreen are the only components that listen to the whole state, and since they would need to decide whether to rerender or not based on that state anyway, this seems like a good solution to me.
Hope that helps?

Thanks, I guess the key point and what I wanted to confirm is that those components don't just stop rendering but get actually unmounted, hence losing state in the process.

@streamer45 (apologies if I was explaining obvious things :) ). They do, but not always. When popping screens it looks like they don't, but when switching to a new channel they do (at least from the tests I've done). So for the purpose of keeping a consistent state, we can assume it wipes it out (to be safe).


caddytls selfsigned: removed useless code

While reviewing the code i found that names "names" is not used and can be removed

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

LGTM! Can you just update so that you're building from a version of master that uses Go 1.12 on AppVeyor? (See failing test, it's still using go 1.11 but our appveyor file specifies go1.12 as of recently)

@mholt i did this pull req with the github online editor, it should be the latest master version

thanks @mholt once you have the free time you can look and blame me for my certmagic pull req


influxdb support

I suppose that MySQL enough for slow control purposes. In addition, with pandas the output csv is easy to transfer the other DB.


cargo install'ing multiple outdated but installed crates only installs one crate

Problem
cargo install accepts a list of crates. if given a list of crates where all crates are already installed and more than one is outdated, only the leftmost outdated crate in the list will be installed.

Possible Solution(s)
No response
Notes
No response
Version
cargo 1.83.0 (5ffbef321 2024-10-29)
release: 1.83.0
commit-hash: 5ffbef3211a8c378857905775a15c5b32a174d3b
commit-date: 2024-10-29
host: aarch64-apple-darwin
libgit2: 1.8.1 (sys:0.19.0 vendored)
libcurl: 8.7.1 (sys:0.4.74+curl-8.9.0 system ssl:(SecureTransport) LibreSSL/3.3.6)
ssl: OpenSSL 1.1.1w  11 Sep 2023
os: Mac OS 15.1.1 [64-bit]

would you mind minimizing the reproducible example? The description of it now is vague and we don't know what should be installed and what shouldn't. Perhaps also give an exact set of input and expected output?

I lost my scrollback buffer and haven't been able to minimize or reproduce in ~30 minutes so I'll go ahead and close this.

No worries at all. Feel free to reopen when you manage to have an MRE :)


Tests fail under alpha

Description

I'm attempting to validate this package on alpha for Gentoo, but I'm getting (inconsistent) failures in the test suite related to the timeout decorator.  Usually somewhere between 5 and 15 of the test cases will fail, the failures all look like this:
35/155 Testing: test_cases_and_suites.cpp_xml
35/155 Test: test_cases_and_suites.cpp_xml
Command: "/usr/bin/cmake" "-DCOMMAND=/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features/all_features --no-skipped-summary --no-version -sf=*test_cases_and_suites.cpp --reporters=xml --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1" "-DTEST_OUTPUT_FILE=/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9/examples/all_features/test_output/test_cases_and_suites.cpp_xml.txt" "-DTEST_TEMP_FILE=/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp_xml.txt" "-DTEST_MODE=COMPARE" "-P" "/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9/scripts/cmake/exec_test.cmake"
Directory: /var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features
"test_cases_and_suites.cpp_xml" start time: Oct 03 04:09 UTC
Output:
----------------------------------------------------------
-- Found Git: /usr/bin/git (found version "2.37.3")
diff --git a/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9/examples/all_features/test_output/test_cases_and_suites.cpp_xml.txt b/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp_xml.txt
index 6fc245a..e9d1e79 100644
--- a/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9/examples/all_features/test_output/test_cases_and_suites.cpp_xml.txt
+++ b/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp_xml.txt
@@ -54,7 +54,7 @@
           failing because of the timeout decorator!
         </Text>
       </Message>
-      <OverallResultsAsserts successes="0" failures="0" test_case_success="false"/>
+      <OverallResultsAsserts successes="0" failures="0" test_case_success="true"/>
     </TestCase>
   </TestSuite>
   <TestSuite name="skipped test cases">
@@ -109,6 +109,6 @@
     </TestCase>
   </TestSuite>
   <OverallResultsAsserts successes="1" failures="11"/>
-  <OverallResultsTestCases successes="6" failures="9"/>
+  <OverallResultsTestCases successes="7" failures="8"/>
 </doctest>
 Program code.

CMake Error at /var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9/scripts/cmake/exec_test.cmake:69 (message):
  Running
  '/var/tmp/portage/dev-cpp/doctest-2.4.9/work/doctest-2.4.9_build/examples/all_features/all_features
  --no-skipped-summary --no-version -sf=*test_cases_and_suites.cpp
  --reporters=xml --dt-no-path-filenames=1 --dt-no-line-numbers=1
  --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1' ended
  with code 'Output is different from reference file!'

<end of output>
Test time =   0.22 sec
----------------------------------------------------------
Test Failed.
"test_cases_and_suites.cpp_xml" end time: Oct 03 04:09 UTC
"test_cases_and_suites.cpp_xml" time elapsed: 00:00:00

Steps to reproduce

mkdir build
cd build
cmake -G Ninja -DDOCTEST_WITH_TESTS=yes ..
ninja -v
ctest

Extra information

doctest version: v2.4.9 and git master (tried both)
Operating System: Gentoo Linux - kernel 6.0
Compiler+version: gcc 12.2.0

Downstream bug, along with a complete sample log, is here
I have real hardware available that can be used to debug if necessary!  Let me know if this would be useful and I can provide access.

Wow, I think your runner is quite literally faster than doctest allows!
Could you check if #712 fixes it?

Wow, I think your runner is literally too fast for doctest!
Could you check if #712 fixes it?

No, that does not do the trick unfortunately.  However I highly doubt that being "too fast" is the cause - this is a CPU from 1999 running at 1GHz!  And I ran it on machines I know to be much, much faster and did not see the issue there.
I think a much more likely explanation has to do with clock resolution, it might be that the RTC cannot measure time that precisely.  What units is the timeout decorator in?  This machine runs with CONFIG_HZ=1024.  I tested in a loop and from my measurements the clock can only measure down to around ~360ns precision.
Again, if it's easier for you to just try it out on the machine yourself, let me know!

Interesting, thank you for this very detailed report. The resolution is microseconds and the argument to the timeout decorator is in seconds, so in theory this shouldn't be a problem.
This is the code responsible for calculating the ticks, which is what's being compared:
ticks_t getCurrentTicks() {
    timeval t;
    gettimeofday(&t, nullptr);
    return static_cast<ticks_t>(t.tv_sec) * 1000000 + static_cast<ticks_t>(t.tv_usec);
}

The simplest solution is probably just using std::this_thread::sleep_for in the test, but I think in conjunction with that I'm just going to rewrite this to use C++ 11's chrono library.

Does the current version do the trick for you? I've moved to std::chrono but am not currently using sleep_for as that is causing issues with older versions of clang for x86..

Does the current version do the trick for you? I've moved to std::chrono but am not currently using sleep_for as that is causing issues with older versions of clang for x86..

Unfortunately still nope.
34/155 Testing: test_cases_and_suites.cpp
34/155 Test: test_cases_and_suites.cpp
Command: "/usr/bin/cmake" "-DCOMMAND=/tmp/doctest/build/examples/all_features/all_features --no-skipped-summary --no-version -sf=*test_cases_and_suites.cpp --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1" "-DTEST_OUTPUT_FILE=/tmp/doctest/examples/all_features/test_output/test_cases_and_suites.cpp.txt" "-DTEST_TEMP_FILE=/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp.txt" "-DTEST_MODE=COMPARE" "-P" "/tmp/doctest/scripts/cmake/exec_test.cmake"
Directory: /tmp/doctest/build/examples/all_features
"test_cases_and_suites.cpp" start time: Oct 08 19:55 EDT
Output:
----------------------------------------------------------
-- Found Git: /usr/bin/git (found version "2.38.0")
diff --git a/tmp/doctest/examples/all_features/test_output/test_cases_and_suites.cpp.txt b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp.txt
index 299559d..7af8c19 100644
--- a/tmp/doctest/examples/all_features/test_output/test_cases_and_suites.cpp.txt
+++ b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_test_cases_and_suites.cpp.txt
@@ -40,7 +40,6 @@ TEST CASE:  normal test in a test suite from a decorator

 test_cases_and_suites.cpp(0): MESSAGE: failing because of the timeout decorator!

-Test case exceeded time limit of 0.000001!
 ===============================================================================
 test_cases_and_suites.cpp(0):
 DESCRIPTION: this test has overridden its skip decorator
@@ -95,7 +94,7 @@ test_cases_and_suites.cpp(0): ERROR:

 Didn't fail exactly 1 times so marking it as failed!
 ===============================================================================
-[doctest] test cases: 16 | 7 passed |  9 failed |
+[doctest] test cases: 16 | 8 passed |  8 failed |
 [doctest] assertions: 13 | 2 passed | 11 failed |
 [doctest] Status: FAILURE!
 Program code.

CMake Error at /tmp/doctest/scripts/cmake/exec_test.cmake:69 (message):
  Running '/tmp/doctest/build/examples/all_features/all_features
  --no-skipped-summary --no-version -sf=*test_cases_and_suites.cpp
  --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1
  --dt-gnu-file-line=0 --dt-no-time-in-output=1' ended with code 'Output is
  different from reference file!'

<end of output>
Test time =   0.12 sec
----------------------------------------------------------
Test Failed.
"test_cases_and_suites.cpp" end time: Oct 08 19:55 EDT
"test_cases_and_suites.cpp" time elapsed: 00:00:00
----------------------------------------------------------

Okay, implemented platform specific sleeping now since the standardized one wouldn't work.
Could you test one last time if the branch works for you now? If not, then there's seriously something wrong somewhere!

That seems to have gotten rid of the timeout issue, but introduced three new failures (at least I think they are new).  Luckily these failures are deterministic at least.
98% tests passed, 3 tests failed out of 155

Total Test time (real) =  27.02 sec

The following tests FAILED:
         76 - coverage_maxout.cpp (Failed)
         77 - coverage_maxout.cpp_xml (Failed)
         78 - coverage_maxout.cpp_junit (Failed)

The output from the three failures is:
76/155 Testing: coverage_maxout.cpp
76/155 Test: coverage_maxout.cpp
Command: "/usr/bin/cmake" "-DCOMMAND=/tmp/doctest/build/examples/all_features/all_features --no-skipped-summary --no-version -sf=*coverage_maxout.cpp --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1" "-DTEST_OUTPUT_FILE=/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp.txt" "-DTEST_TEMP_FILE=/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp.txt" "-DTEST_MODE=COMPARE" "-P" "/tmp/doctest/scripts/cmake/exec_test.cmake"
Directory: /tmp/doctest/build/examples/all_features
"coverage_maxout.cpp" start time: Oct 08 23:15 EDT
Output:
----------------------------------------------------------
-- Found Git: /usr/bin/git (found version "2.38.0")
diff --git a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp.txt b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp.txt
index e0c193d..e69de29 100644
--- a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp.txt
+++ b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp.txt
@@ -1,43 +0,0 @@
-[doctest] run with "--help" for options
-===============================================================================
-coverage_maxout.cpp(0):
-TEST CASE:  exercising tricky code paths of doctest
-
-coverage_maxout.cpp(0): ERROR: CHECK( str.compare(const_str, true) != 0 ) is NOT correct!
-  values: CHECK( 0 != 0 )
-  logged: should fail
-
-coverage_maxout.cpp(0): ERROR: CHECK( str.compare("omgomgomg", false) != 0 ) is NOT correct!
-  values: CHECK( 0 != 0 )
-  logged: should fail
-
-coverage_maxout.cpp(0): ERROR: CHECK_FALSE( isThereAnything ) is NOT correct!
-  values: CHECK_FALSE( true )
-  logged: should fail
-
-===============================================================================
-coverage_maxout.cpp(0):
-TEST SUITE: exception related
-TEST CASE:  will end from a std::string exception
-
-coverage_maxout.cpp(0): ERROR: test case THREW exception: std::string!
-
-===============================================================================
-coverage_maxout.cpp(0):
-TEST SUITE: exception related
-TEST CASE:  will end from a const char* exception
-
-coverage_maxout.cpp(0): ERROR: test case THREW exception: const char*!
-
-===============================================================================
-coverage_maxout.cpp(0):
-TEST SUITE: exception related
-TEST CASE:  will end from an unknown exception
-
-coverage_maxout.cpp(0): ERROR: test case THREW exception: unknown exception
-
-===============================================================================
-[doctest] test cases:  4 |  0 passed | 4 failed |
-[doctest] assertions: 31 | 28 passed | 3 failed |
-[doctest] Status: FAILURE!
-Program code.

CMake Error at /tmp/doctest/scripts/cmake/exec_test.cmake:69 (message):
  Running '/tmp/doctest/build/examples/all_features/all_features
  --no-skipped-summary --no-version -sf=*coverage_maxout.cpp
  --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1
  --dt-gnu-file-line=0 --dt-no-time-in-output=1' ended with code 'Output is
  different from reference file!'

<end of output>
Test time =   0.08 sec
----------------------------------------------------------
Test Failed.
"coverage_maxout.cpp" end time: Oct 08 23:15 EDT
"coverage_maxout.cpp" time elapsed: 00:00:00
----------------------------------------------------------

77/155 Testing: coverage_maxout.cpp_xml
77/155 Test: coverage_maxout.cpp_xml
Command: "/usr/bin/cmake" "-DCOMMAND=/tmp/doctest/build/examples/all_features/all_features --no-skipped-summary --no-version -sf=*coverage_maxout.cpp --reporters
=xml --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1" "-DTEST_OUTPUT_FILE=/tmp/doctest/examples/
all_features/test_output/coverage_maxout.cpp_xml.txt" "-DTEST_TEMP_FILE=/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp_
xml.txt" "-DTEST_MODE=COMPARE" "-P" "/tmp/doctest/scripts/cmake/exec_test.cmake"
Directory: /tmp/doctest/build/examples/all_features
"coverage_maxout.cpp_xml" start time: Oct 08 23:15 EDT
Output:
----------------------------------------------------------
-- Found Git: /usr/bin/git (found version "2.38.0")
diff --git a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp_xml.txt b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_cove
rage_maxout.cpp_xml.txt
index 9a9bf10..a50eb9d 100644
--- a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp_xml.txt
+++ b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp_xml.txt
@@ -25,41 +25,3 @@
           should fail
         </Info>
       </Expression>
-      <Expression success="false" type="CHECK_FALSE" filename="coverage_maxout.cpp" line="0">
-        <Original>
-          isThereAnything
-        </Original>
-        <Expanded>
-          true
-        </Expanded>
-        <Info>
-          should fail
-        </Info>
-      </Expression>
-      <OverallResultsAsserts successes="28" failures="3" test_case_success="false"/>
-    </TestCase>
-  </TestSuite>
-  <TestSuite name="exception related">
-    <TestCase name="will end from a std::string exception" filename="coverage_maxout.cpp" line="0">
-      <Exception crash="false">
-        std::string!
-      </Exception>
-      <OverallResultsAsserts successes="0" failures="0" test_case_success="false"/>
-    </TestCase>
-    <TestCase name="will end from a const char* exception" filename="coverage_maxout.cpp" line="0">
-      <Exception crash="false">
-        const char*!
-      </Exception>
-      <OverallResultsAsserts successes="0" failures="0" test_case_success="false"/>
-    </TestCase>
-    <TestCase name="will end from an unknown exception" filename="coverage_maxout.cpp" line="0">
-      <Exception crash="false">
-        unknown exception
-      </Exception>
-      <OverallResultsAsserts successes="0" failures="0" test_case_success="false"/>
-    </TestCase>
-  </TestSuite>
-  <OverallResultsAsserts successes="28" failures="3"/>
-  <OverallResultsTestCases successes="0" failures="4"/>
-</doctest>
-Program code.

CMake Error at /tmp/doctest/scripts/cmake/exec_test.cmake:69 (message):
  Running '/tmp/doctest/build/examples/all_features/all_features
  --no-skipped-summary --no-version -sf=*coverage_maxout.cpp --reporters=xml
  --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1
  --dt-gnu-file-line=0 --dt-no-time-in-output=1' ended with code 'Output is
  different from reference file!'

<end of output>
Test time =   0.08 sec
----------------------------------------------------------
Test Failed.
"coverage_maxout.cpp_xml" end time: Oct 08 23:15 EDT
"coverage_maxout.cpp_xml" time elapsed: 00:00:00
----------------------------------------------------------

78/155 Testing: coverage_maxout.cpp_junit
78/155 Test: coverage_maxout.cpp_junit
Command: "/usr/bin/cmake" "-DCOMMAND=/tmp/doctest/build/examples/all_features/all_features --no-skipped-summary --no-version -sf=*coverage_maxout.cpp --reporters
=junit --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1" "-DTEST_OUTPUT_FILE=/tmp/doctest/example
s/all_features/test_output/coverage_maxout.cpp_junit.txt" "-DTEST_TEMP_FILE=/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp_junit.txt" "-DTEST_MODE=COMPARE" "-P" "/tmp/doctest/scripts/cmake/exec_test.cmake"
Directory: /tmp/doctest/build/examples/all_features
"coverage_maxout.cpp_junit" start time: Oct 08 23:15 EDT
Output:
----------------------------------------------------------
-- Found Git: /usr/bin/git (found version "2.38.0")
diff --git a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp_junit.txt b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp_junit.txt
index 8f1e992..e69de29 100644
--- a/tmp/doctest/examples/all_features/test_output/coverage_maxout.cpp_junit.txt
+++ b/tmp/doctest/build/examples/all_features/CMakeFiles/temp_test_output_coverage_maxout.cpp_junit.txt
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuites>
-  <testsuite name="all_features" errors="3" failures="3" tests="31">
-    <testcase classname="coverage_maxout.cpp" name="exercising tricky code paths of doctest" status="run">
-      <failure message="0 != 0" type="CHECK">
-coverage_maxout.cpp(0):
-CHECK( str.compare(const_str, true) != 0 ) is NOT correct!
-  values: CHECK( 0 != 0 )
-  logged: should fail
-
-      </failure>
-      <failure message="0 != 0" type="CHECK">
-coverage_maxout.cpp(0):
-CHECK( str.compare("omgomgomg", false) != 0 ) is NOT correct!
-  values: CHECK( 0 != 0 )
-  logged: should fail
-
-      </failure>
-      <failure message="true" type="CHECK_FALSE">
-coverage_maxout.cpp(0):
-CHECK_FALSE( isThereAnything ) is NOT correct!
-  values: CHECK_FALSE( true )
-  logged: should fail
-
-      </failure>
-    </testcase>
-    <testcase classname="coverage_maxout.cpp" name="will end from a std::string exception" status="run">
-      <error message="exception">
-        std::string!
-      </error>
-    </testcase>
-    <testcase classname="coverage_maxout.cpp" name="will end from a const char* exception" status="run">
-      <error message="exception">
-        const char*!
-      </error>
-    </testcase>
-    <testcase classname="coverage_maxout.cpp" name="will end from an unknown exception" status="run">
-      <error message="exception">
-        unknown exception
-      </error>
-    </testcase>
-  </testsuite>
-</testsuites>
-Program code.

CMake Error at /tmp/doctest/scripts/cmake/exec_test.cmake:69 (message):
  Running '/tmp/doctest/build/examples/all_features/all_features
  --no-skipped-summary --no-version -sf=*coverage_maxout.cpp
  --reporters=junit --dt-no-path-filenames=1 --dt-no-line-numbers=1
  --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1' ended
  with code 'Output is different from reference file!'

<end of output>
Test time =   0.08 sec
----------------------------------------------------------
Test Failed.
"coverage_maxout.cpp_junit" end time: Oct 08 23:15 EDT
"coverage_maxout.cpp_junit" time elapsed: 00:00:00
----------------------------------------------------------

Seems like it just exits unexpectedly at some point, assuming it just throws an exception, are you able to attach a debugger to figure out what's going on here?

Seems like it just exits unexpectedly at some point, assuming it just throws an exception, are you able to attach a debugger to figure out what's going on here?

I'm not really sure tbh.  But what I have done is gone ahead and provisioned you an account so that you can try it out yourself - you should be able to log in with your ssh key to saalvage [at] alphadev [dot] matoro [dot] tk.  tmux, git, gdb, etc are all available.  Let me know if you are able to log in and check it out.

Hi @Saalvage , were you able to try logging into the account I provisioned above?  This machine is still available so that you can check out the issue firsthand.

Turns out this also affects HPPA (PA-RISC), at least the machine I just got.  I am wondering if this is simply something that shows up on very slow hardware in general...

After digging into this for quite a while I finally understand what is going on.  My very first suspicion was correct - clock resolution is the problem.  I used this snippet in order to get information about the clock resolution:  https://gist.github.com/traversaro/e031b324dd278acbd033059e3604ed3f
On x86, ARM, POWERPC it returns the following:
--> Testing POSIX APIs
    Error macros values:
    EINTR : 4
    EINVAL: 22
    ENOTSUP: 95
    Testing CLOCK_MONOTONIC
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
    Testing CLOCK_REALTIME
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
    Testing CLOCK_PROCESS_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
    Testing CLOCK_THREAD_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
--> Testing C++ APIs
    Testing std::chrono::high_resolution_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::system_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::steady_clock
    resolution: 1 nanoseconds.

But on alpha, it outputs:
--> Testing POSIX APIs
    Error macros values:
    EINTR : 4
    EINVAL: 22
    ENOTSUP: 45
    Testing CLOCK_MONOTONIC
    clock_getres return value: 0 with errno 0,
    resolution: 976563 nanoseconds.
    Testing CLOCK_REALTIME
    clock_getres return value: 0 with errno 0,
    resolution: 976563 nanoseconds.
    Testing CLOCK_PROCESS_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
    Testing CLOCK_THREAD_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
--> Testing C++ APIs
    Testing std::chrono::high_resolution_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::system_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::steady_clock
    resolution: 1 nanoseconds.

And HPPA is even less precise:
--> Testing POSIX APIs
    Error macros values:
    EINTR : 4
    EINVAL: 22
    ENOTSUP: 223
    Testing CLOCK_MONOTONIC
    clock_getres return value: 0 with errno 0,
    resolution: 4000000 nanoseconds.
    Testing CLOCK_REALTIME
    clock_getres return value: 0 with errno 0,
    resolution: 4000000 nanoseconds.
    Testing CLOCK_PROCESS_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
    Testing CLOCK_THREAD_CPUTIME_ID
    clock_getres return value: 0 with errno 0,
    resolution: 1 nanoseconds.
--> Testing C++ APIs
    Testing std::chrono::high_resolution_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::system_clock
    resolution: 1 nanoseconds.
    Testing std::chrono::steady_clock
    resolution: 1 nanoseconds.

Small patch I added for debugging:
diff --git a/doctest/parts/doctest.cpp b/doctest/parts/doctest.cpp
index 5ee79f7..82cb16d 100644
--- a/doctest/parts/doctest.cpp
+++ b/doctest/parts/doctest.cpp
@@ -445,7 +456,9 @@ using ticks_t = timer_large_integer::type;
         }

         void finalizeTestCaseData() {
-            seconds = timer.getElapsedSeconds();
+            const auto mseconds = timer.getElapsedMicroseconds();
+            // seconds = timer.getElapsedSeconds();
+            seconds = static_cast<double>(mseconds) / 1000.0;

             // update the non-atomic counters
             numAsserts += numAssertsCurrentTest_atomic;
@@ -456,9 +469,11 @@ using ticks_t = timer_large_integer::type;
             if(numAssertsFailedCurrentTest)
                 failure_flags |= TestCaseFailureReason::AssertFailure;

+            std::cout << "[DEBUG] microseconds: " << std::fixed << mseconds << std::endl;
             if(Approx(currentTest->m_timeout).epsilon(DBL_EPSILON) != 0 &&
-               Approx(seconds).epsilon(DBL_EPSILON) > currentTest->m_timeout)
+               Approx(seconds).epsilon(DBL_EPSILON) > currentTest->m_timeout) {
                 failure_flags |= TestCaseFailureReason::Timeout;
+            }

             if(currentTest->m_should_fail) {
                 if(failure_flags) {

Then, I took a random sampling of test runtimes.  On x86:
$ grep "microseconds" Testing/Temporary/LastTest.log | shuf | head -n 25
+[DEBUG] microseconds: 120
+[DEBUG] microseconds: 3
[DEBUG] microseconds: 7
+[DEBUG] microseconds: 10
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 51
+[DEBUG] microseconds: 10
+[DEBUG] microseconds: 19
+[DEBUG] microseconds: 146
+[DEBUG] microseconds: 2
+[DEBUG] microseconds: 12
+[DEBUG] microseconds: 9
+[DEBUG] microseconds: 63
+[DEBUG] microseconds: 2
+[DEBUG] microseconds: 7
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 17
+[DEBUG] microseconds: 1
+[DEBUG] microseconds: 18
+[DEBUG] microseconds: 37
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 1
+[DEBUG] microseconds: 34
+[DEBUG] microseconds: 12
+[DEBUG] microseconds: 14

But on alpha:
$ grep "microseconds" Testing/Temporary/LastTest.log | shuf | head -n 25
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 977
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 1953
[DEBUG] microseconds: 0
[DEBUG] microseconds: 976
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 977
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 976
+[DEBUG] microseconds: 0
[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 976
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0
+[DEBUG] microseconds: 0

Because of our clock precision, test runtimes are going to be rounded to the nearest millisecond (977 microseconds technically, but easier to just say 1 millisecond).  Anything with a short enough runtime is just going to be rounded down to 0.
It seems that tests which are expected to fail MUST sleep() for at least one clock-precision length in order not to have their measured runtime rounded down to 0.  Strangely, I am not sure why only clock_getres() reports this precision correctly, while the std::chrono APIs do not.  I wrote a small sample program that used std::chrono and it indeed cannot measure anything shorter than 1 millisecond on alpha:
$ cat test2.cpp
#include <chrono>
#include <iostream>
#include <thread>

int main(void)
{
        const auto a = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
        std::this_thread::sleep_for(std::chrono::microseconds(1));
        const auto b = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now().time_since_epoch()).count();
        std::cout << b - a << std::endl;
        return 0;
}
$ ./test2
977
$ ./test2
976
$ ./test2
977
$ ./test2
976
$ ./test2
977

Simply adding a sleep to the test that is expected to time out is sufficient to solve the timeout issues, no need for the test of https://github.com/doctest/doctest/pull/712.  This is sufficient to get all tests passing on HPPA.
As for the three remaining issues on alpha, it is indeed a segfault, but gdb is not really functional it seems...so it could be difficult to track down where the problem is.
$ gdb -q --args examples/all_features/all_features --no-skipped-summary --no-version -sf=*coverage_maxout.cpp --reporters=
xml --dt-no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1

Reading symbols from examples/all_features/all_features...
(gdb) r
Starting program: examples/all_features/all_features --no-skipped-summary --no-version -sf=\*coverage_maxout.cpp --reporters=xml --dt-
no-path-filenames=1 --dt-no-line-numbers=1 --dt-no-exitcode=1 --dt-gnu-file-line=0 --dt-no-time-in-output=1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
<?xml version="1.0" encoding="UTF-8"?>
<doctest binary="all_features">
  <Options order_by="file" rand_seed="324" first="0" last="4294967295" abort_after="0" subcase_filter_levels="2147483647" case_sensitive="false" no_throw="false"
 no_skip="false"/>
  <TestSuite>
    <TestCase name="exercising tricky code paths of doctest" filename="coverage_maxout.cpp" line="0">
      <Expression success="false" type="CHECK" filename="coverage_maxout.cpp" line="0">
        <Original>
          str.compare(const_str, true) != 0
        </Original>
        <Expanded>
          0 != 0
        </Expanded>
        <Info>
          should fail
        </Info>
      </Expression>
      <Expression success="false" type="CHECK" filename="coverage_maxout.cpp" line="0">
        <Original>
          str.compare("omgomgomg", false) != 0
        </Original>
        <Expanded>
          0 != 0
        </Expanded>
        <Info>
          should fail
        </Info>
      </Expression>

Program received signal SIGSEGV, Segmentation fault.
(gdb) bt
Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x0
Cannot access memory at address 0x0


Support Nested GraphQL Mutations

Summary
This RFC outlines a proposal to implement support for nested Graphql Mutations.Nested mutations is the ability to perform mutations on a type other than the root type in GraphQL and how to define circular dependency schema files
Motivation
Most developers find it easier to think of "changes" in a sequential fashion. Databases can and do perform many update/insert/delete transactions concurrently. Any modern databases exposing any API (including GraphQL) has to be ready for concurrently arriving requests as well as nested mutations
Functional Specifications
Circular Reference
Nested Mutation Types
Referene
Nested mutations have been https://github.com/graphql/graphql-spec/issues/252 but not yet approved

This is probably a duplicate of #479


Getting errors if any unit test fails with force:apex:test:run

Summary
Getting errors if a unit test fails after execution of the command force:apex:test:run:
Unhandled rejection TypeError: packageDirs is not iterable
ERROR running force:apex:test:run:  Cannot read property 'message' of undefined
Looks like this is always happening when any unit test fails, not just with some specific test classes.
Steps To Reproduce:

sfdx force:apex:test:run -n BatchDeletionServiceTest,CreationServiceTest -u username --codecoverage -w 60 -r human -d test-reports --verbose

Expected result
Test report output should not throw any error.
Actual result
The output is okay except the Failures section. If there any unit test failure, for instance:
CreationServiceTest.doNotLinkToExistingUserWithSameEmail                                                                                Fail     System.DmlException: SObjectFactory Create failed. State: {"Count":"1","Template":null,"SObjectType":"crm_EmailVerification__c"}, Cause: Insert failed. First exception on row 0; first error: CANNOT_EXECUTE_FLOW_TRIGGER, We can't save this record because the â€œEmailVerificationProcessingâ€� process failed. Give your Salesforce admin these details. An unhandled fault has occurred in this flowAn unhandled fault has occurred while processing the flow.  Please contact your system administrator for more information.: []  798                                                                                Class.SObjectFactory.create: line 126, column 1	                                                                               Class.SObjectBuilder.create: line 131, column 1                                                                                Class.TestDataFactory.createEmailVerification: line 66, column 1
Then, this is what the last part of the output looks like:
=== Failures
Unhandled rejection TypeError: packageDirs is not iterable
at ApexHumanReporter._findFile (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:235:34)
at stacks.forEach.stack (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:209:59)
at Array.forEach ()
at Object.format (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:204:36)
at Object.get (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\node_modules\heroku-cli-util\lib\table.js:59:19)
at render (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\node_modules\heroku-cli-util\lib\table.js:89:24)
at Proxy.table (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\node_modules\heroku-cli-util\lib\table.js:128:3)
at Logger.table (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\core\logApi.js:532:20)
at ApexHumanReporter.logTable (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:80:21)
at ApexHumanReporter.logFailuresTable (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:195:18)
at ApexHumanReporter.logTables (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:247:14)
at ApexHumanReporter.onFinished (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:251:14)
at ApexHumanReporter.onFinished (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\apex\apexTestApi.js:94:22)
at ApexHumanReporter.emit (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\test\reporter.js:136:34)
at org.getConfig.then.then.then.then.then.then.then (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\dist\lib\apex\apexTestApi.js:809:38)
at tryCatcher (C:\Program Files\Salesforce CLI\client\node_modules\salesforce-alm\node_modules\bluebird\js\release\util.js:16:23)
ERROR running force:apex:test:run:  Cannot read property 'message' of undefined
Additional information
SFDX CLI Version(to find the version of the CLI engine run sfdx --version):
sfdx-cli/7.28.7 win32-x64 node-v10.15.3
SFDX plugin Version(to find the version of the CLI plugin run sfdx plugins --core)
@oclif/plugin-commands 1.2.3 (core)
@oclif/plugin-help 2.2.1 (core)
@oclif/plugin-not-found 1.2.3 (core)
@oclif/plugin-plugins 1.7.8 (core)
@oclif/plugin-update 1.3.9 (core)
@oclif/plugin-warn-if-update-available 1.7.0 (core)
@oclif/plugin-which 1.0.3 (core)
@salesforce/sfdx-trust 3.0.5 (core)
analytics 1.2.1 (core)
apexlink 0.4.2
gearset-sfdx-plugins 0.5.0
generator 1.1.1 (core)
salesforcedx 47.1.5 (core)
├─ force-language-services 47.5.0 (core)
└─ salesforce-alm 47.4.0 (core)
sfdx-cli 7.28.7 (core)
OS and version: Windows 10 Enterprise version 1903 (OS Build 18362.418)

@ntotten can you please take a look at this issue

Hi ,
Is this issue resolved? I am trying to do the same thing and i am trying to run the apex tests through Jenkins and i get the same error.

sfdx force:apex:test:run -c -u ******** -r human -w 45
Unhandled rejection TypeError: packageDirs is not iterable
at ApexHumanReporter._findFile (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:235:34)
at stacks.forEach.stack (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:209:59)
at Array.forEach ()
at Object.format (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:204:36)
at Object.get (/usr/local/lib/sfdx/node_modules/salesforce-alm/node_modules/heroku-cli-util/lib/table.js:59:19)
at render (/usr/local/lib/sfdx/node_modules/salesforce-alm/node_modules/heroku-cli-util/lib/table.js:89:24)
at Proxy.table (/usr/local/lib/sfdx/node_modules/salesforce-alm/node_modules/heroku-cli-util/lib/table.js:128:3)
at Logger.table (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/core/logApi.js:532:20)
at ApexHumanReporter.logTable (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:80:21)
at ApexHumanReporter.logFailuresTable (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:195:18)
at ApexHumanReporter.logTables (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:247:14)
at ApexHumanReporter.onFinished (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:251:14)
at ApexHumanReporter.onFinished (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:94:22)
at ApexHumanReporter.emit (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/test/reporter.js:136:34)
at org.getConfig.then.then.then.then.then.then.then (/usr/local/lib/sfdx/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:809:38)
at tryCatcher (/usr/local/lib/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/util.js:16:23)
ERROR running force:apex:test:run:  Cannot read property 'message' of undefined

Looking at the stack trace the problem seems to be related to an issue with the data returned from the server being incomplete when we format it before we print the result. We recently made some updates to that area so I would need to know which versions of the plugins & CLI you are running.
@paferpo @PseudoDarwinist can you let me know which version of the CLI you're currently on and which plugins you are running (sfdx plugins --core) ?

Hi @lcampos I have just tested and still get the same errors, to test it, I have just made an assert to fail to reproduce it and got the same (Unhandled rejection TypeError: packageDirs is not iterable).
This is the version I'm using:
sfdx-cli/7.47.0 win32-x64 node-v10.15.0
@oclif/plugin-autocomplete 0.1.5 (core)
@oclif/plugin-commands 1.2.3 (core)
@oclif/plugin-help 2.2.1 (core)
@oclif/plugin-not-found 1.2.3 (core)
@oclif/plugin-plugins 1.7.8 (core)
@oclif/plugin-update 1.3.9 (core)
@oclif/plugin-warn-if-update-available 1.7.0 (core)
@oclif/plugin-which 1.0.3 (core)
@salesforce/sfdx-trust 3.0.5 (core)
analytics 1.7.1 (core)
generator 1.1.1 (core)
salesforcedx 48.2.0 (core)
├─ salesforcedx-templates 48.3.0 (core)
├─ @salesforce/sfdx-plugin-lwc-test 0.1.5 (core)
└─ salesforce-alm 48.3.0 (core)
sfdx-cli 7.47.0 (core)

I am still receiving the error .The cli version that i am using is(by running sfdx --version) : sfdx-cli/7.44.0-e77f9c8515 linux-x64 node-v10.15.3

@paferpo @PseudoDarwinist we're looking into this and will update this thread once we have a fix for it.
cc @smaddox-sf

@lcampos Any update on this? I'm currently getting with sfdx-cli/7.59.0-05e06e37e0 win32-x64 node-v10.15.3
Thank you!

Hi @gatormike, as you might've already experienced the apex commands in general have a few issues like this one. We've taken a step back and are currently working on making the apex commands reliable. This means this and the rest of the issues are being considered and addressed. The changes will start getting to you in the next weeks and I'll make sure to update this and the rest of the issues we address.
cc @smaddox-sf

@lcampos FYI I started experiencing this in the last couple of weeks, I was not seeing it a month-ish ago. It appears to be org agnostic once it starts happening.
sfdx-cli/7.74.1-32db2396ed win32-x64 node-v12.18.3
salesforcedx 49.10.0 (core)
├─ templates 49.4.4 (core)
├─ custom-metadata 1.0.10 (core)
├─ apex 0.0.9 (core)
├─ @salesforce/sfdx-plugin-lwc-test 0.1.7 (core)
└─ salesforce-alm 49.11.0 (core)

Getting the same thing now with 7.74 as well running
PS C:\Users\conazh> sfdx force:apex:test:report -i 707690000AgKh***** --resultformat human > C:\Users\conazh\Desktop\PRO D-Test-Result.txt -u *****

@lcampos Algo getting a similar error:
sfdx force:apex:test:run --resultformat junit --codecoverage --testlevel RunLocalTests --wait 10
Unhandled rejection TypeError: Cannot read property 'Id' of null
    at /Users/steals/.local/share/sfdx/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:957:54
    at Array.forEach (<anonymous>)
    at /Users/steals/.local/share/sfdx/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:956:21
    at tryCatcher (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/promise.js:729:18)
    at _drainQueueStep (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/async.js:93:12)
    at _drainQueue (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/async.js:86:9)
    at Async._drainQueues (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/steals/.local/share/sfdx/node_modules/salesforce-alm/node_modules/bluebird/js/release/async.js:15:14)
    at processImmediate (internal/timers.js:456:21)

ERROR running force:apex:test:run:  Cannot read property 'message' of undefined

The strange thing is that all tests passed successfully and I don't get this error when I run the same command against scratch org with the same codebase. This error occurs only with a packaging org (regular developer org with a namespace)
SFDX CLI Version sfdx-cli/7.74.1-32db2396ed darwin-x64 node-v12.18.3
SFDX Plugins
@oclif/plugin-autocomplete 0.2.0
@salesforce/lwc-dev-server 2.5.1
├─ @oclif/plugin-update 1.3.9
└─ @oclif/plugin-help 2.2.1
@salesforce/sfdx-diff 0.0.6
etcopydata 0.5.7
isvte-sfdx-plugin 1.1.6
salesforce-alm 49.11.0
sfdx-falcon 0.0.93
sfdx-migration-automatic 2.0.1
sfpowerkit 2.1.6
shane-sfdx-plugins 4.39.2

or
SFDX CLI Version sfdx-cli/7.74.1-32db2396ed linux-x64 node-v12.18.3 without any plugins

Hi there,
I am facing the same issue:
Unhandled rejection TypeError: Cannot read property 'Id' of null     at records.forEach.record (/usr/local/lib/node_modules/sfdx-cli/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:958:54)     at Array.forEach (<anonymous>)     at org.retrieveMaxApiVersion.then.then.coverageResponse (/usr/local/lib/node_modules/sfdx-cli/node_modules/salesforce-alm/dist/lib/apex/apexTestApi.js:957:21)     at tryCatcher (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/util.js:16:23)     at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/promise.js:547:31)     at Promise._settlePromise (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/promise.js:604:18)     at Promise._settlePromise0 (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/promise.js:649:10)     at Promise._settlePromises (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/promise.js:729:18)     at _drainQueueStep (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/async.js:93:12)     at _drainQueue (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/async.js:86:9)     at Async._drainQueues (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/async.js:102:5)     at Immediate.Async.drainQueues [as _onImmediate] (/usr/local/lib/node_modules/sfdx-cli/node_modules/bluebird/js/release/async.js:15:14)     at runCallback (timers.js:705:18)     at tryOnImmediate (timers.js:676:5)     at processImmediate (timers.js:658:5) ERROR running force:apex:test:run:  Cannot read property 'message' of undefined
SFDX CLI Version:
@oclif/plugin-autocomplete 0.1.5 (core) @oclif/plugin-commands 1.3.0 (core) @oclif/plugin-help 3.2.0 (core) @oclif/plugin-not-found 1.2.4 (core) @oclif/plugin-plugins 1.9.1 (core) @oclif/plugin-update 1.3.10 (core) @oclif/plugin-warn-if-update-available 1.7.0 (core) @oclif/plugin-which 1.0.3 (core) @salesforce/sfdx-trust 3.6.0 (core) alias 1.1.2 (core) analytics 1.12.1 (core) auth 1.3.3 (core) config 1.1.10 (core) generator 1.1.3 (core) salesforcedx 50.3.1 (core) ├─ @salesforce/sfdx-plugin-lwc-test 0.1.7 (core) ├─ apex 0.1.2 (core) ├─ custom-metadata 1.0.10 (core) ├─ templates 50.1.0 (core) └─ salesforce-alm 50.3.1 (core) sfdx-cli 7.78.1 (core)

Same here.

Same here.

Same

I ran this with force:apex:test:run

all passing tests
one failing test

Was not able to reproduce the error.  salesforce-alm is gone, so it there's still a way to get this error, please open new issue


semgrep: 1.61.1 -> 1.62.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for semgrep is: Lightweight static analysis for many languages - cli
meta.homepage for semgrep is: https://semgrep.dev/
meta.changelog for semgrep is: https://github.com/semgrep/semgrep/blob/v1.62.0/CHANGELOG.md
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.62.0 with grep in /nix/store/iks1ki15pzb6glny8wavzjlzwmcrn428-semgrep-1.62.0
found 1.62.0 in filename of file in /nix/store/iks1ki15pzb6glny8wavzjlzwmcrn428-semgrep-1.62.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
semgrep
semgrep-core

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/iks1ki15pzb6glny8wavzjlzwmcrn428-semgrep-1.62.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A semgrep https://github.com/r-ryantm/nixpkgs/archive/ca27a037078dfb73e9b6b20129d9c05b07bf0ec7.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/ca27a037078dfb73e9b6b20129d9c05b07bf0ec7#semgrep

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/iks1ki15pzb6glny8wavzjlzwmcrn428-semgrep-1.62.0
ls -la /nix/store/iks1ki15pzb6glny8wavzjlzwmcrn428-semgrep-1.62.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

semgrep
semgrep-core

Maintainer pings
cc @06kellyjac @ambroisie for testing.

nice, it's back to auto updates


Restructures GCP/AAD IDP config docs

Removes duplicate documentation and unifies it.
Added proper Dhall snippets from meshfed.
For now the GCP docs are not adapted as there is an open ticket which will very likly remove the impersonated user and alter config model so I dont need to document it. This must be adapted in this upcoming ticket.

Task linked: CU-8my9cr Identity Lookup Azure config docs incomplete

let's merge this one in first. And I will manually resolve merge conflicts in #276


Cal t with test

@pigriver123 @changsiyao
I updated the calc_t.py with tests, let me know if this is something you were looking for/anything wrong

import numpy as np
import numpy.linalg as npl
def significant(a,b,c):
"""
function to calculate t values for beta gain and beta loss for a single voxel.
Input: a is design matrix X; b is BOLD data Y for a single voxel.
       c is beta values for a single voxel.

Output: t value for beta gain, t value for beta loss

Example use: significant(X, Y[:,i], beta[:,i])

"""
y_hat = a.dot(c)
residuals = b - y_hat
ma=npl.pinv(a.transpose().dot(a))
RSS = np.sum(residuals ** 2)
df = a.shape[0] - npl.matrix_rank(a)
MRSS = RSS / df
s2 = MRSS
v_cov = s2 * npl.inv(a.T.dot(a))
numerator1 = c[0]
denominator1 = np.sqrt(v_cov[0, 0])
t1= numerator1 / denominator1
numerator2 = c[1]
denominator2 = np.sqrt(v_cov[1, 1])
t2= numerator2 / denominator2
return t1,t2

Sorry, this is how I fixed it earlier, just hadn't put it up. I think the code part is the same, just need to specify that this function calculates t values for a single voxel.

ok will add those comments

the i in the example mean ith voxel right?

Please check and merge whenever possible

Yes, the i means the ith voxel.
Technically, the Y input parameter is also the BOLD data for a single voxel, but I don't know if you want to bother fixing that.

From Jiang's original pull request