Change the chaincode lifecycle to make it compatible with fabric v2.x

Signed-off-by: Rohan Shrothrium<EMAIL_ADDRESS>

Hi @dexhunter and @yeasy!
I am raising this PR as a starting point to making our codebase compatible with the v2.x.
This can be a template and can be considered as work under progress for changing the whole chaincode lifecycle.
Let me know your thoughts on this.
Thanks!

Hi @dexhunter and @yeasy! I am raising this PR as a starting point to making our codebase compatible with the v2.x. This can be a template and can be considered as a draft for changing the whole chaincode lifecycle.
Let me know your thoughts on this. Thanks!

@RohanShrothrium sure, each pr should make the CI happy. And it will be better to explain the design and implementation in the commit msg.


Is Telegana districtwise all timeseries data available?

In https://api.covid19india.org/v4/min/data-all.min.json, I can find only 'Unknown' listed under districts for Telegana (TG). Is there any other source for this info?

No.
Telengana does not publish district level recovery and deceased numbers. (Only daily new cases are reported districtwise) Hence we do not have the district wise data for TG.


Mozilla is not showing network svg images properly(Flutter web)

Mozilla is not reacting to "fit: BoxFit.contain" property properly, it works fine in Chrome and Edge but not in Mozilla.
I've a cdn with SVGs images and I use Image.network() to show them, Mozilla has an strange behaviour with the property BoxFit.contain, as shown in the following image:
Mozilla:

Chrome/Edge:

Steps to Reproduce
I've uploaded a Github project so you can easy reproduce the issue, just deploy it and test it with Mozilla browser.
Github project
Expected results:
It should be shown as it is in Chrome/Edge browsers

Logs
[√] Flutter (Channel beta, 1.25.0-8.3.pre, on Microsoft Windows [VersiÃ³n 10.0.19042.746], locale es-ES)
    • Flutter version 1.25.0-8.3.pre at C:\flutter
    • Framework revision 5d36f2e7f5 (8 days ago), 2021-01-14 15:57:49 -0800
    • Engine revision 7a8f8ca02c
    • Dart version 2.12.0 (build 2.12.0-133.7.beta)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\F-Laptop\AppData\Local\Android\sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 3.5)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 43.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

[√] IntelliJ IDEA Ultimate Edition (version 2020.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.3
    • Flutter plugin version 52.2.5
    • Dart plugin version 203.6912

[√] VS Code, 64-bit edition (version 1.42.1)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.8.1

[√] Connected device (2 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 87.0.4280.141
    • Edge (web)   • edge   • web-javascript • Microsoft Edge 87.0.664.75

• No issues found!

Issue replicable on latest beta.

Can't verify this on latest master, due to this issue. https://github.com/flutter/flutter/issues/74489.

latest beta flutter doctor -v
[✓] Flutter (Channel beta, 1.25.0-8.3.pre, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-IN)
    • Flutter version 1.25.0-8.3.pre at /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 5d36f2e7f5 (8 days ago), 2021-01-14 15:57:49 -0800
    • Engine revision 7a8f8ca02c
    • Dart version 2.12.0 (build 2.12.0-133.7.beta)

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

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.9.3

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

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

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

[✓] Connected device (3 available)
    • AOSP on IA Emulator (mobile) • emulator-5554                        •
      android-x86    • Android 9 (API 28) (emulator)
    • iPhone 12 Pro Max (mobile)   • A5473606-0213-4FD8-BA16-553433949729 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • Chrome (web)                 • chrome                               •
      web-javascript • Google Chrome 87.0.4280.141

• No issues found!

Issue replicable on latest beta.

Can't verify this on latest master, due to this issue. https://github.com/flutter/flutter/issues/74489.

latest beta flutter doctor -v
[✓] Flutter (Channel beta, 1.25.0-8.3.pre, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-IN)
    • Flutter version 1.25.0-8.3.pre at /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 5d36f2e7f5 (8 days ago), 2021-01-14 15:57:49 -0800
    • Engine revision 7a8f8ca02c
    • Dart version 2.12.0 (build 2.12.0-133.7.beta)

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

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.9.3

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

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

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

[✓] Connected device (3 available)
    • AOSP on IA Emulator (mobile) • emulator-5554                        •
      android-x86    • Android 9 (API 28) (emulator)
    • iPhone 12 Pro Max (mobile)   • A5473606-0213-4FD8-BA16-553433949729 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • Chrome (web)                 • chrome                               •
      web-javascript • Google Chrome 87.0.4280.141

• No issues found!

May be related to https://github.com/flutter/flutter/issues/66412

May be related to https://github.com/flutter/flutter/issues/66412

We currently do not support SVG natively in the engine. This happens to work today in the HTML renderer because we use the <img> tag, which supports more formats than Flutter normally does. However, it does not implement all features if Image.network.
Alternatives are:

Use a platform view and create an <svg> tag in it ourself. This solution should be fine if you have few SVG images displayed simultaneously.
Use package:flutter_svg. This only supports a subset of SVG but is efficient when you have lots of SVG images on the screen.

This topic is more generally discussed in https://github.com/flutter/flutter/issues/1831, so I'm deduplicating this issue with that one.

We currently do not support SVG natively in the engine. This happens to work today in the HTML renderer because we use the <img> tag, which supports more formats than Flutter normally does. However, it does not implement all features if Image.network.
Alternatives are:

Use a platform view and create an <svg> tag in it ourself. This solution should be fine if you have few SVG images displayed simultaneously.
Use package:flutter_svg. This only supports a subset of SVG but is efficient when you have lots of SVG images on the screen.

This topic is more generally discussed in https://github.com/flutter/flutter/issues/1831, so I'm deduplicating this issue with that one.


Fix scaling of last LED in page

There are 0xB4 (0x00 through 0xB3) LEDs/registers in the first page. Plus one for the scaling byte.
Similar for the second page.
My board has an LED at 0xB3 but not at 0xAA, so I tested only the former.

I just ran into an issue with two LEDs with seemingly dead blue channels on my 13x9 RGB display, and this is indeed the fix. I'll use your fork till this is merged, thanks @JohnAZoidberg!


Update Nyan cat link

Link to the never ending nyan cat theme song website instead of youtube.

Seems not working in Chrome.


[Azure Stack] Mark the properties of Drive and Volume as readonly

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[x] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

Automation for azure-sdk-for-go

Automation for azure-sdk-for-python

@bganapa @deathly809 please help review.

Can one of the admins verify this patch?

@raych1 Thanks, we have already added new version of API (#6666 ), and this PR is only for some additional changes.

@bganapa, @deathly809, can you review?  It looks good to me.


serde error at installation

Hi there,
I was trying to install the lsp using cargo install lsp-ai. However, I get the following error:
error: couldn't read /Users/candemircan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.22/src/serde.rs: Operation not permitted (os error 1)
   --> /Users/candemircan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.22/src/lib.rs:395:1
    |
395 | mod serde;
    | ^^^^^^^^^^

error: could not compile `log` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `lsp-ai v0.6.2`, intermediate artifacts can be found at `/var/folders/2t/zlktsbp913sc2d_5zx40s3rh0000gn/T/cargo-installINdsmm`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

I am using cargo 1.81.0 on an Apple Silicon machine. Many thanks for your help!
Best,
Can

This seems like an issue with your permissions with cargo and rust. I would remove your .cargo directory and reinstall rust. That should fix it.


unclear wording using "users" at "entitlement limits"

it is unclear what the term "users" cover in text regarding "entitlement limits".
Please list "user" types that are counted towards "entitlement limits".
I assumption is that entitlement limit is for "end users/interactive users" of product and not for Application users( non-interactive users), but please clarify in documentation.

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

ID: b61960df-dcdc-d4e5-749b-0f55e22a385d
Version Independent ID: baddf389-6252-fe30-1a60-48c18f256ed8
Content: API limits overview (Common Data Service) - Power Apps
Content Source: powerapps-docs/maker/common-data-service/api-limits-overview.md
Service: powerapps
GitHub Login: @JimDaly
Microsoft Alias: jdaly

@cpdSeattle  Cameron - can you look at this?

Is there clarification on limits for Application users ( non-interactive users)? We are working on pushing data in Dataverse (from logic apps) and we might have to pull the plug on Dataverse if there is no way to overcome the entitlement limits. We just want to push data nightly into CDS.


Package multicluster-gateway-controller as an OLM bundle

Make multicluster-gateway-controller installable via OLM. Custom built catalog image pushed to quay.io/kuadrant will suffice for now.

This has moved to the current iteration

able to generate the bundle
able to make it available in a cluster via a catalog (can be our own for now)
able to install MGC and add-on manager via a subscription when OLM installed
docs
Github CI
Stable channel

https://github.com/Kuadrant/multicluster-gateway-controller/pull/491


Update sbt-scalafix, scalafix-core to 0.9.16

Updates

ch.epfl.scala:sbt-scalafix
ch.epfl.scala:scalafix-core

from 0.9.11 to 0.9.16.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "ch.epfl.scala" } ]

labels: library-update, semver-patch

CI failure is under discussion at #310


Basic native select to have material styling/look and fill

Feature Description
To have Material look and fill to basic native select component with complete accessibility support
Use Case
Consider page has material component except select component with native styles. Looks and fill complete page impacted because of native select component. Do we have that ability to apply material styles to native element.
or
Is there any way to apply css styles to native select component to have material look and fill.

It's impossible to style the pop-up of a native select because it's rendered by the operating system and is not part of the DOM.

Can we have mat-select component with accessibility support in near future?


MAINT Lint with CircleCI

Add a CircleCI config that runs,

cargo fmt
cargo clippy: failures are allowed, and one would need to actually look at the logs to see warnings / errors there.

Also @stefan-k you would need to enable "Run on PRs" under "Advanced Settings" of CircleCI settings for this project, for it to actually run here. Otherwise it would only run for existing branches of this repo.

I've set "Build forked pull requests" to "on". Is this correct?

Yes, thanks!

Thanks for your great work! CircleCI seems to work fine, can I merge this?

It's good to merge, on my side.  Thanks!


Include add_qubit and remove_qubit method within EGraph 🪄⚛

This issue has been tagged for a bounty during unitaryHACK.
Task
Integrate a simple but important feature to the EGraph class: adding and removing qubits (nodes) of an EGraph object by preserving other arguments of the object consistent. This would correspond to adding or removing a separable or entangled state to the graph state (depending on whether the new node is connected by an edge to an old node). Another way to view this is as an "injection" or "deletion" operation on the graph.
You should:

Include an add_qubit method to the EGraph class that has at least two optional arguments: existing_neighbours and new_node_position. The first of these will specify which existing qubits to entangle with the new qubit. If not supplied, the qubit will be added as a separable state. The second of these allows the user to customize where to place the qubit. If not supplied, a default convenient position should be selected (that doesn't accidentally place it too close to or at the location of another qubit).
Include a remove_qubit function to the EGraph class that has one mandatory argument (which qubit to remove).

Explanation
Consider the following:
If we draw the adjacency matrix, then add a qubit, and then draw the adjacency matrix again, we do not get an updated adj matrix.
from flamingpy.utils import graph_states
state = graph_states.ring_graph(3)
state.draw_adj()

state.add_node((2,2,2))
state.draw_adj()

If we add a qubit, draw the adjacency matrix, then remove that qubit, and draw the adjacency matrix again, it does not get updated:
state = graph_states.ring_graph(3)
state.add_node((2,2,2))
state.draw_adj()

state.remove_node( (2,2,2))
state.draw_adj()

Requirements

You should add corresponding unit tests to check your modifications are covered.
Qubits (EGraph nodes) are labelled with tuples (x, y, z).
Other issues may arise with EGraph.index_generator(), EGraph.adj_generator(), and other functions of the EGraph class. The goal of these add_qubit and remove_qubit functions is to add and remove qubits effortlessly.
It is not necessarily a good idea to regenerate indices every time a new qubit is added: it is probably enough just to add to or remove from the existing index dictionaries.

I would like to work on this issue.

Thanks, @Avhijit-codeboy ! Go right ahead.

I'll close this issue as it was resolved in PR #100.


AKS Learn feedback:

Type of issue
Typo
Feedback
Faced this error. Please update the teraform code.
https://stackoverflow.com/questions/78457405/azapi-resource-action-invalid-value-for-str-parameter-string-required
From
output "key_data" {
  value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey
}

output "key_data" {
  value = azapi_resource_action.ssh_public_key_gen.output.publicKey
}

Page URL
https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-terraform?tabs=bash&pivots=development-environment-azure-cli
Content source URL
https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/aks/learn/quick-kubernetes-deploy-terraform.md
Author
@schaffererin
Document Id
93009f1b-a279-2a19-5c87-6352d8af10c8

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

ID: aec38183-fa51-15e3-d3d0-c84724be95f3
Version Independent ID: 93009f1b-a279-2a19-5c87-6352d8af10c8
Content: Quickstart: Deploy an Azure Kubernetes Service (AKS) cluster using Terraform - Azure Kubernetes Service
Content Source: articles/aks/learn/quick-kubernetes-deploy-terraform.md
Service: azure-kubernetes-service
GitHub Login: @schaffererin
Microsoft Alias: schaffererin

@bannarisoftwares
Thanks for your feedback! We will investigate and update as appropriate.

@bannarisoftwares
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

Thank you for your dedication to our documentation. Unfortunately, at this time we have been unable to review your issue in a timely manner, and we sincerely apologize for the delayed response. The requested updates have not been made since the creation of this issue, and the timeline for resolution may vary based on resourcing, so we've created an internal work item to incorporate your suggestions. We are closing this issue for now, but feel free to comment here as necessary.
#please-close


(node:5507) UnhandledPromiseRejectionWarning: TypeError: unspentOutputs.map is not a function     at Object.makeTransferTransaction (/home/gokul/node_modules/bigchaindb-driver/dist/node/transaction/makeTransferTransaction.js:35:33)     at transferAsset (/home/gokul/Documents/BigchainDB/role.js:244:43)     at createUser (/home/gokul/Documents/BigchainDB/role.js:180:30)     at      at process._tickCallback (internal/process/next_tick.js:118:7) (node:5507) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3) (node:5507) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Please do not submit support requests or "How to" questions here. For that, go to StackOverflow.
What you were expecting:

What happened instead:

Steps to reproduce:

Related code:

insert short code snippets here

Other information:

Environment

EventDrops version
Browser:
Stack trace (in case of a JS error):

This is not an EventDrops related issue:

TypeError: unspentOutputs.map is not a function at Object.makeTransferTransaction (/home/gokul/node_modules/bigchaindb-driver/dist/node/transaction/makeTransferTransaction.js:35:33)

Moreover, please keep the title short and concise. It will ease readability. :)


[Bug]: Can't start Postgres Container on Ubuntu 22.04

Testcontainers version
3.2.0
Using the latest Testcontainers version?
Yes
Host OS
Ubuntu 22.04
Host arch
x86
.NET version
7.0
Docker version
Client: Docker Engine - Community
 Cloud integration: v1.0.33
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:51:00 2023
 OS/Arch:           linux/amd64
 Context:           desktop-linux

Server: Docker Desktop 4.20.0 (109717)
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:52:17 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker info
Client: Docker Engine - Community
 Version:    24.0.2
 Context:    desktop-linux
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.10.5
    Path:     /usr/lib/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.18.1
    Path:     /usr/lib/docker/cli-plugins/docker-compose
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.0
    Path:     /usr/lib/docker/cli-plugins/docker-dev
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.19
    Path:     /usr/lib/docker/cli-plugins/docker-extension
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v0.1.0-beta.4
    Path:     /usr/lib/docker/cli-plugins/docker-init
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     /usr/lib/docker/cli-plugins/docker-sbom
  scan: Docker Scan (Docker Inc.)
    Version:  v0.26.0
    Path:     /usr/lib/docker/cli-plugins/docker-scan
  scout: Command line tool for Docker Scout (Docker Inc.)
    Version:  v0.12.0
    Path:     /usr/lib/docker/cli-plugins/docker-scout

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 24.0.2
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
 runc version: v1.1.7-0-g860f061
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.49-linuxkit-pr
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 7.674GiB
 Name: docker-desktop
 ID: 0652941c-45fe-4342-b4c7-5193c59e6af1
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  <IP_ADDRESS>/8
 Live Restore Enabled: false

What happened?
public sealed class DbFixture : IAsyncLifetime
    {
        private readonly PostgreSqlContainer _dbContainer = new PostgreSqlBuilder()
                .WithCleanUp(true)
                .Build();
        private string _connectionString = string.Empty;

        public MyDbContext CreateContext()
        {
            var context = new(
                new DbContextOptionsBuilder<MyDbContext>()
                .UseSnakeCaseNamingConvention()
                .UseNpgsql(_connectionString, o => o
                    .UseNodaTime()
                    .CommandTimeout((int)TimeSpan.FromMinutes(5).TotalSeconds)
                )
            .Options);

            context.Database.EnsureDeleted();
            context.Database.EnsureCreated();
            return context;
        }

        public async Task DisposeAsync() => await _dbContainer.StopAsync();

        public async Task InitializeAsync()
        {
            await _dbContainer.StartAsync();
            _connectionString = _dbContainer.GetConnectionString();
        }
    }

I'm using the above DbFixture for my tests, however it errors out stating that the docker container is not found. The stack trace is attached below.
Relevant log output
Docker.DotNet.DockerContainerNotFoundException: Docker API responded with status code=NotFound, response={"message":"No such container: a105c6a4aa2a2a...

Docker.DotNet.DockerContainerNotFoundException
Docker API responded with status code=NotFound, response={"message":"No such container: a105c6a4aa2a2a65cedaacb8c09f864c3fee407dad410face73600175b2b9d7b"}

   at Docker.DotNet.ContainerOperations.<>c.<.cctor>b__30_0(HttpStatusCode statusCode, String responseBody)
   at Docker.DotNet.DockerClient.HandleIfErrorResponseAsync(HttpStatusCode statusCode, HttpResponseMessage response, IEnumerable`1 handlers)
   at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken token)
   at Docker.DotNet.ContainerOperations.InspectContainerAsync(String id, CancellationToken cancellationToken)
   at DotNet.Testcontainers.Containers.DockerContainer.<>c__DisplayClass57_0.<<UnsafeStartAsync>g__CheckPortBindingsAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at DotNet.Testcontainers.Configurations.WaitStrategy.<>c__DisplayClass1_0.<<WaitUntilAsync>g__UntilAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at DotNet.Testcontainers.Configurations.WaitStrategy.WaitUntilAsync(Func`1 wait, TimeSpan frequency, TimeSpan timeout, CancellationToken ct)
   at DotNet.Testcontainers.Containers.DockerContainer.UnsafeStartAsync(CancellationToken ct)
   at DotNet.Testcontainers.Containers.DockerContainer.StartAsync(CancellationToken ct)
   at DotNet.Testcontainers.Containers.ResourceReaper.GetAndStartNewAsync(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, Boolean requiresPrivilegedMode, TimeSpan initTimeout, CancellationToken ct)
   at DotNet.Testcontainers.Containers.ResourceReaper.GetAndStartNewAsync(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, Boolean requiresPrivilegedMode, TimeSpan initTimeout, CancellationToken ct)
   at DotNet.Testcontainers.Containers.ResourceReaper.GetAndStartDefaultAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, Boolean isWindowsEngineEnabled, CancellationToken ct)
   at DotNet.Testcontainers.Clients.TestcontainersClient.RunAsync(IContainerConfiguration configuration, CancellationToken ct)
   at DotNet.Testcontainers.Containers.DockerContainer.UnsafeCreateAsync(CancellationToken ct)
   at DotNet.Testcontainers.Containers.DockerContainer.StartAsync(CancellationToken ct)
   at UnitTests.DbFixture.InitializeAsync() in /home/irsoc/Documents/CatalanV2/service/Tests/DbFixture.cs:line 49
   at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in /_/src/xunit.core/Sdk/ExceptionAggregator.cs:line 90

Additional information
No response

Can you please try to set the environment variable TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE to /var/run/docker.sock and try it again? I think you run into https://github.com/testcontainers/testcontainers-dotnet/pull/911.

I did add try adding this env variable, but the result was the same.

The stack trace looks like Testcontainers cannot start moby-ryuk on your machine. Can you try to run Ryuk manual:
docker run -v /var/run/docker.sock:/var/run/docker.sock -e RYUK_PORT=8080 -p 8080:8080 testcontainers/ryuk:0.5.1

I'm getting the same problem, testcontainers got stuck and doesn't start the postgres container when running github actions.

I've tried to start moby-ryuk as seen on the github action below, but it doesn't help. (I don't know if I've done it right, by the way)
https://github.com/xilapa/SiteWatcher/actions/runs/5271983930/jobs/9533630643

You are having a different issue than the one we are discussing here. Based on your Workflow file (.github/workflows/dotnet-sonar.yml), it looks like that the problem relates in invoking the tests through the dotnet-coverage collect command. I would suggest trying to run dotnet test instead. Please note that our tests are running fine on Ubuntu (as you can see here). Furthermore, I have noticed the following lines in your code that do not make any sense at all, you can remove them.

Since we have not received any response, I will close this issue. If you still struggle running Testcontainers please do not hesitate to reopen the issue again. Please note, the mentioned workaround in my first comment is no longer necessary with version 3.3.0.

Interesting topic though.
This kind of problem arises whatever the image you pull in a TestContainer.
I had the same issue while using MongoDb gateway and the solution was to add 2 env variables to the CLI I use to start the test in the container
It goes like:
docker run  --rm -v /var/run/docker.sock:/var/run/docker.sock  -v /tmp/TestResults:/src/TestResults -e TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal -e TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock myimageoftestproject


Scalar Equation is incorrect ? Documentation

http://tensorflow.org/tutorials/mnist/beginners/index.md#the_mnist_data

https://upload.wikimedia.org/math/7/3/f/73fc7ef1bf6f6822115c41cff58535e1.png

http://api.tensorflow.org/system/image/body/1704/softmax-regression-scalargraph.png

http://api.tensorflow.org/system/image/body/1707/softmax-regression-scalarequation.png

http://api.tensorflow.org/system/image/body/1705/softmax-regression-vectorequation.png

scalar equation should be:
[W11 * X1 + W12 * X2 +  W13 * X3 + b1]
[W21 * X1 +W22 * X2 + W23 * X3 + b2]
[W31 * X1 + W32 * X2 + W33 * X3 + b3]

Thanks for the report -- we'll update the image soon and let you know when this is fixed!

Fixed in f6d5a2caedd3982a1e6dcaa99bfafe0539527144 by colah.  Thanks!

(will take some time to propagate to the website though)


bookmarks support

shortcut and function example like below:
CTRL+SHIFT+1:create a bookmark，eg：bookmark1
CTRL+1:go to bookmark1
CTRL+SHIFT+2:create a bookmark，eg：bookmark2
CTRL+2:go to bookmark2
...
CTRL+SHIFT+9:create a bookmark，eg：bookmark9
CTRL+9:go to bookmark9

Are you using a bookmarks extension or are you asking that that functionality be built in to vscode?

Are you using a bookmarks extension or are you asking that that functionality be built in to vscode?

yep,I'm using the booksmarks extension.
I hope it can be built in to vscode and extend the funtion like the bookmarks supported by resharper.(bookmarks supported by resharper in visual studio is very efficent)


Use heigher value for PASSPHRASE_ENCRYPTION_ITERATIONS_DEFAULT

PASSPHRASE_ENCRYPTION_ITERATIONS_DEFAULT is set to 1 at the moment, which basically means no computation time for the password -> AES key operation. In order to get proper security, a user must choose a 128 bit entropy password or stronger. I don't think that's a good assumption.
PASSPHRASE_ENCRYPTION_ITERATIONS_DEFAULT should be as high as possible while making without annoying the user too much. In the Lisk core issue related to key derivation, we were talking about 1,000,000 iterations, which takes about 800 ms to perform. I think this is a good default because 800ms is fast enough when enabling forging and it makes brute force attacks roughly 1,000,000x times harder.
The reason iterations is set to 1 in the Lisk core test data is that they do not want to wait 101*800ms when running tests.

I agree, this shouldn't be constant, i will soon address it, but i think it's unnecessary high by default in lisk-js, It does take too long to compute, it's too big cost when it comes to forging failover scripts and it's efficiency and essentially, brute-forcing forging position has no real economic incentive in my opinion, rendering those encryption efforts purely wasted. In 0.9.X there is plain passphrase in config.json or sent via SSL to toggle forging and yet, it was never hacked. Attacking forging position to gain access to account forging feature is useless because:

Most accounts are protected by second passphrase before accessing funds

Hacked account can be easily down voted by community (no long term hack benefit)

Forging delegate accounts usually are not cold wallets

There is many easier and cheaper attacks to perform on Lisk like, unclaimed accounts, 2^64 effort and there is one 1.6m LSK wallet unclaimed ;)

I agree that the whole encryption is questionable at this point. HQ devs said this protects you from someone who gains read access to the node's filesystem (backups, cloud providers, ...).
However, I think when something is encrypted, the user can expect that it is safe to publish. And thus check in the encrypted password in config repositories or similar. Thus, a default value should give the user a very good security while reducing the parameter can be done when very high entropy passwords are used. For this reason I suggest setting the default parameter to 1,000,000 or at least 100,000.

Does using the vanity can perform the 2^64 attack?

@webmaster128 Fair point, 1,000,000 set, can be easily reduced if needed.
https://github.com/karek314/lisk-php/commit/2fe32e87cbc296e35b742dbb85338f97e76d383a
@bigvito19 With lisk-php vanity, highly unlikely - it's side feature in lisk-php, its slow, you should looking for very good implementation in opencl.


[5.0] %swift-target-frontend => %target-swift-frontend.

Looks like it was a typo.

@swift-ci test

4.1: #14569

@swift-ci test


add annotation to secrets field

What this PR does / why we need it:  Followed up on https://github.com/Azure/acs-engine/pull/3227, the CloneAndConform function will added at RP codebase.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
If applicable:

[ ] documentation
[ ] unit tests
[ ] tested backward compatibility (ie. deploy with previous version, upgrade with this branch)

Release note:

/lgtm


overgrowth: init at 2022-04-29

Description of changes
Overgrowth engine has recently been released under Apache 2.0.  I am not sure if this should be named overgrowth-engine instead though, since the data are not included.  This PR shall remain to be a draft until Wolfire tag a new version on the engine repo (a lot of cleaning up is still going on).
Things done

Built on platform(s)

[x] 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
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

I am a bit confused how -Wformat-security was injected, since it's neither specified nor the default.

format is a default hardening setting in Nixpkgs*, to disable it use
hardeningDisable = [ "format" ];

*Check 6.9.1. Hardening flags enabled by default in the Nixpkgs manual.

It failed to install for me on linux nixos-unstable amd64:
[100%] Built target App_obj2sdf
buildPhase completed in 26 minutes 57 seconds
@nix { "action": "setPhase", "phase": "glibPreInstallPhase" }
glibPreInstallPhase
@nix { "action": "setPhase", "phase": "installPhase" }
installing
install: missing destination file operand after '/nix/store/mkxx9cdzfvymqdy7a84sn2n13m6vwb3i-overgrowth-unstable-2022-04-29/bin/overgrowth'
Try 'install --help' for more information.

@rapenne-s, I'm sorry that you spent half an hour compiling the engine with the borken declaration :sweat_smile:  I will push the update when https://github.com/WolfireGames/overgrowth/pull/68 is merged.

Could you rebase? There is a conflict with pkgs/top-level/all-packages.nix

Sure, I didn't notice that.

Result of nixpkgs-review pr 170874 run on x86_64-linux 1

1 package built:

overgrowth

This is fine for me :)


Appender API support

Hi, are there any plans to support DuckDB's Appender API? From my limited testing, it unlocks an astronomical amount of performance when appending data in tight loops.
After an exchange with a DuckDB developer who pointed me towards the Appender API, I observed the following performance characteristics of my program which inserts ~10k rows (~40 bytes each) on a small sample dataset. Sample size of 1:

Baseline runtime without DuckDB: ~5-6s
Prepared INSERT statements with automatic transactions: ~27s
Prepared INSERT statements with manual transaction wrapping all INSERT operations: ~10s
Appender API: ~6s

I'd be happy to contribute to implementation with some guidance.
General documentation: https://duckdb.org/docs/data/appender
API documentation: https://duckdb.org/docs/api/c/appender.html

I've been avoiding it because it can't deal with default values.
I didn't get to play with it much, so I'm not going to officially document it, but if you have a chance to play with the latest, please let me know how it works out:
var appender = try conn.appender("schema_or_null", "table");
defer appender.deinit();

try appender.append("over");
try appender.append(9000);
try appender.endRow()

// append another row

You can use appender.err() ?[]const u8 which will return the duckdb error message (if there is any). This is automatically freed with appender.deinit is called.

That was quick, thank you! I'm trying it out now, found a small bug #5 but otherwise it appears to be working fine.

Heads up that this implementation is being changed, and the API is going to change slightly. There's an appender branch where the work is taking place. The main goal is to add support for appending single-dimension lists, which wasn't possible using the original API (the DuckDB C api doesn't support it). However by writing to the underlying data_chunk and vectors directly (as the Go driver does), we can do anything we want.


Resolved issue #19. Implemented pagination in the GET /api/Tickets route to limit results

Related Issue
Closes issue #19
Type of Change
Put x inside the square bracket to specify what type of change your PR is:

[x] New Feature
[ ] Bug Fix
[ ] Code Refactor
[ ] Documentation Update
[ ] Other (please specify):

Description of Change
Implemented pagination in the GET /api/Tickets route to limit results. Also edited readme file to change include tickets per page thing in env file.
Implementation Details
Implemented pagination in the GET /api/Tickets route to limit results with help of .limit() and .skip() of mongoose. If there is no page and ticketsNo passed then all tickets are sent in response. Along with that there is default page set to 1 and default number of tickets as per .env file or 10 if not mentioned in .env file.
Also edited readme file to change include tickets per page thing in env file.
Demo

good work @MadhavDhall,
i can see that your implementation is robust and backward compatible
your PR is ready to be merged


Fix home username font size

[ ] Documentation update

[x] Bug fix

[ ] New feature

[x] Other, please explain:

Font size and weight for Username seemed a little off so I updated that in Home component.

Also fixed the typo for Repository button in Home component

Hi @kazmi066,
Thanks for correction.


Fix/contained list sentence capitlization

Closes carbon-design-system/carbon-components-angular#
Closes  #2464 Fixed capitlization issues. Not addressing the comment about readonly instead of @Input? as if using @input would have to handle it and don't think it needs handling rn.
Changelog
New

{{new thing}}

Changed

{{change thing}}

Removed

{{removed thing}}

I have read the DCO document and I hereby sign the DCO.

Thanks for contributing this, we recently merged contained list! So I'll be closing this PR!


Unworking links changed

The links on the page missed the 1.18 part in the web address.

Thank you for the PR


removing the need for jsons dependency

removing the need for jsons dependency
remove tokenizer reinitialization when language or task is changed since it can be changed directly without creating a new tokenizer
remove the need for a separate encode_batched function
enable word timestamps using original functions
remove PyAV and use torchaudio instead, this fixes the memory leak in the resampler
use gpu in feature extraction for 35x speedup, I also removed the old feature extraction since it has no use case, so there's no need to keep it while we have a faster one that has the same accuracy

the diff seems to be messed up for a reason, but the changes are minimal

@Jiltseb

When testing, I encountered problem with word timestamps, they are a bit weird:
[68.42s -> 68.92s]  => [41.48s -> 42.58s] => [68.92s -> 71.76s]
[0.00s -> 1.88s]  Would you see what you can get for this, please?
[5.36s -> 7.44s]  Not the royal ring, your highness.
[10.50s -> 10.94s]  Shh!
[12.12s -> 12.60s]  Do you want to help out?
[27.38s -> 28.44s]  Excuse me.
[45.36s -> 49.24s]  Is that man actually royalty?
[52.74s -> 54.02s]  No, madame.
[55.54s -> 57.40s]  But you called him your highness.
[59.42s -> 60.74s]  It was a faux pas.
[62.42s -> 63.34s]  Please forget about it.
[64.20s -> 67.12s]  You can trust me.
[68.42s -> 68.92s]  I won't tell.
[41.48s -> 42.58s]  Madame, I am...
[68.92s -> 71.76s]  Extraordinary man of destiny.
[92.46s -> 96.00s]  Your highness.
[100.20s -> 101.82s]  Your highness, don't be alarmed.
[105.18s -> 106.26s]  I can be trusted.
[108.82s -> 110.56s]  Are you one of my subjects?
[112.96s -> 113.60s]  No.
[114.38s -> 118.64s]  I'm an American, Fanny Eubanks of Omaha.
[121.44s -> 122.66s]  I couldn't help overhearing.
[126.06s -> 126.38s]  If you're in trouble and there's some way I can help,
[98.92s -> 101.24s]  thank you, but I cannot accept.
[105.72s -> 108.84s]  You've already risked too much just in speaking to me.
[112.22s -> 118.18s]  I still want to help.
[123.90s -> 127.10s]  You must understand, I have powerful enemies.
[131.92s -> 135.42s]  They may be watching even as we...
[140.60s -> 146.26s]  My God, you're attractive.
[121.52s -> 122.52s]  It's late.
[126.24s -> 127.54s]  I must go.
[128.92s -> 134.88s]  As he left?
[141.82s -> 143.78s]  Yes, just a moment to calm.
[148.94s -> 149.74s]  Good.
[151.90s -> 152.28s]  Please.
[153.72s -> 158.90s]  You must tell me where he lives.
[164.14s -> 166.36s]  I feel it only fair to wonder.
[168.64s -> 169.78s]  I know.
[170.68s -> 174.12s]  He told me he has powerful enemies.
[176.62s -> 178.06s]  There may also be an emotional risk.
[182.24s -> 182.56s]  You see, his highness has been a widower for five years.
[158.92s -> 160.20s]  For five years?
[174.20s -> 177.00s]  Please, your highness.
[181.04s -> 187.32s]  Fanny, the Freedom Fighters thank you.
[195.52s -> 197.20s]  This is for the overhead.
[200.52s -> 202.24s]  This goes to you, Arthur.
[206.08s -> 208.70s]  This goes to you, Andre.
[211.58s -> 212.50s]  This goes to me, which means it's time to go to Zurich.
[188.92s -> 190.18s]  Thank you.

I didn't use word_timestamps=True:
model = WhisperModel("large-v3", device="cuda")
segments, info = model.transcribe(audio_path, word_timestamps=True)
for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

Could you take a look ?

Yes, The error in timestamps looks to repeat after every batch, it starts a lot earlier than the final timestamp of the previous batch.

I managed to reproduce this on several audio files but after pulling a new copy of the repo I couldn't anymore, can someone test again and provide a minimum example?

Used the example faster-whisper/tests/data/physicsworks.wav to test both batched and sequential versions.
Batched version:
[0.00s -> 27.44s] Now I want to return to the conservation of mechanical energy. I have here a pendulum. I have an object that weighs 15 kilograms, and I can lift it up one meter, which I have done now. That means I've done work. MGH is the work I have done, believe me. I've increased the potential energy of this object. 15 times 10 is about 150 joules. If I let it fall,
[28.11s -> 53.91s] then that will be converted to kinetic energy.  They use these devices. It's called a wrecker ball. They use them to demolish buildings. You lift up a very heavy object, even heavier than this,
[54.35s -> 82.93s] and then you let it go, you swing it, thereby converting gravitational potential energy into kinetic energy, and that way you can demolish a building. You just let it hit... and it breaks a building. And that's the whole idea of wrecking. So you're using, then, the conversion of gravitational potential energy to kinetic energy.
[84.21s -> 113.45s] Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger. If I release it from this height,
[114.17s -> 137.71s] and it swings, then when it reaches here, it could not be higher. There is a conversion from gravitational potential energy to kinetic energy back to gravitational potential energy, and it will come to a stop here. And when it swings back, it should not be able to reach any higher, provided that I do not give this object an initial speed when I stand here.
[141.28s -> 169.74s] the conservation of mechanical energy for 100%. I may not trust myself. I'm going to release this object, and I hope I will be able to do it at zero speed, so that when it comes back, it may touch my chin, but it may not crush my chin. I want you to be extremely quiet, because this is no joke. If I don't succeed in giving it zero speed,
[170.18s -> 187.62s] Then, this will be my last lecture. I will close my eyes. I don't want to see this. So please be very quiet. I almost didn't sleep all night. 3, 2, 1, 0.
[200.73s -> 202.73s] Physics works, and I'm still alive.

Did not see timestamps issue for this test. The timestamps are still not sparse, are you yet to commit those changes?
Sequential version:
[0.00s -> 8.98s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum.
[20.48s -> 25.00s]  I have an object that weighs 15 kilograms, and I can lift it up one meter, which I have
[30.22s -> 36.12s]  done now. That means I've done work. MGH is the work I have done, believe me. I've increased
[42.38s -> 48.14s]  the potential energy of this object. 15 times 10 is about 150 joules. If I let it fall,
[48.14s -> 53.56s]  I use them to demolish buildings. You lift up a very heavy object, even heavier than
[59.98s -> 66.12s]  this, and then you let it go. You swing it, thereby converting gravitational potential
[73.08s -> 82.42s]  energy into kinetic energy, and that way you can demolish a building. You just let it hit,
[93.42s -> 99.78s]  and it breaks a building. And that's the whole idea of wrecking. So you are using then the
[100.10s -> 110.40s]  that bob from a certain height, then that bob can never come back to a point where the height
[120.98s -> 128.02s]  is any larger. If I release it from this height, and it swings, then when it reaches here,
[135.30s -> 140.78s]  it could not be higher. There is a conversion from gravitational potential energy to kinetic
[146.44s -> 149.92s]  energy back to gravitational potential energy, and it will come to a stop here. And when it
[156.32s -> 163.90s]  comes back, it may touch my chin, but it may not crush my chin. I want you to be extremely
[178.48s -> 185.58s]  quiet, because this is no joke. If I don't succeed in giving it zero speed, then this
[193.10s -> 200.52s]  will be my last lecture. I will close my eyes. I don't want to see this. So please be very
[201.40s -> 201.58s]  quiet.
[230.28s -> 230.76s]  Physics works, and I'm still alive.

Surprisingly, the timestamps here are wrong, as it ends at 230 sec, longer than the total length of the audio.

Ah I had to remove and install latest one again, it shows similar results now. I will compare with previous versions and get back.

Yes, I managed to get the batched version to work with without_timestamps=False and it outputs the same segments as the non batched version, but it's much slower so I'm still trying to investigate this, from what I understand, the generation step is three times or more slower when timestamp tokens are generated, and this slowdown increases when batch size is increased

It throws error :    [token for token in subsegment["tokens"] if token < tokenizer.eot] TypeError: string indices must be integers when using word_timestamps to True in batched version. Can you check that?

I still have uncommitted changes so maybe it's fixed in them
this is the result for batched version with both segment timestamps and word timestamps, large-v3 model
[0.00s -> 8.86s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum.
[20.36s -> 24.88s]  I have an object that weighs 15 kilograms and I can lift it up one meter, which I have
[29.90s -> 35.12s]  done now. That means I've done work. MGH is the work I have done, believe me. I've increased
[28.11s -> 30.57s]  then that will be converted to kinetic energy.
[35.83s -> 40.91s]  If I would let it swing from one meter height,
[46.21s -> 50.51s]  and you would be there and it would hit you, you'd be dead.
[54.17s -> 57.41s]  150 joules is enough to kill you.
[61.63s -> 64.99s]  They use these devices, they're called a racquetball,
[68.59s -> 68.91s]  they use them to demolish buildings.
[54.35s -> 59.77s]  And then you let it go, you swing it, thereby converting gravitational potential energy
[66.69s -> 71.85s]  into kinetic energy and that way you can demolish a building.
[77.51s -> 85.07s]  You just let it hit and it breaks a building and that's the whole idea of wrecking.
[83.87s -> 93.17s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to
[103.93s -> 108.49s]  put my life on the line.
[113.61s -> 124.47s]  If I release that bulb from a certain height, then that bulb can never come back to a point
[135.53s -> 136.53s]  where the height is any larger.
[114.17s -> 119.85s]  and it swings, then when it reaches here it could not be higher. There is a conversion
[126.39s -> 131.03s]  from gravitational potential energy to kinetic energy back to gravitational potential energy
[135.99s -> 140.47s]  and it will come to a stop here. And when it swings back it should not be able to reach
[141.28s -> 144.38s]  the conservation of mechanical energy, for 100%.
[150.30s -> 154.32s]  I may not trust myself.
[158.32s -> 160.72s]  I'm going to release this object,
[163.32s -> 167.16s]  and I hope I will be able to do it at zero speed,
[171.20s -> 174.24s]  so that when it comes back, it may touch my chin,
[177.56s -> 181.00s]  but it may not crush my chin.
[185.04s -> 186.74s]  I want you to be extremely quiet, because this is no joke.
[170.18s -> 178.52s]  this will be my last lecture. I will close my eyes. I don't want to see this. So please
[200.73s -> 202.49s]  Physics works, and I'm still alive.

Quick summary to the status of this PR:

without_timestamps option is now supported which should make the logs less denser, but it's slower so it's turned off by default
my investigation shows that the slowdown comes from the generation part which is handled by ctranslate2, and the slowdown increases when the batch size increases
tiny model, , 34 mins audio
without_timestamps=False
batch_size=8
20.3 s ± 495 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
batch_size=32
29.6 s ± 779 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

without_timestamps=True
batch_size=8
7.36 s ± 114 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
batch_size=32
6.21 s ± 53.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

batched inference pipeline now works even if the batch size is one and it still shows speedups compared to sequential inference

there is a bug that appears when word timestamps are enabled for sequential inference. When enabled, it skips parts of the audio based on the timestamp heuristic adopted from original whisper cause by these lines:
https://github.com/SYSTRAN/faster-whisper/blob/bced5f04c09967b91ced5d2d605e4c9853b2479e/faster_whisper/transcribe.py#L721-L724
this problem doesn't occur when batched inference is used with batch_size=1 and can be reproduced on the master branch, it's not related to my changes, the easiest way to verify this to compare the concatenated text from all segments in the physicsworcs when word_timestamps are enabled and disabled

as for the PyAV vs torchaudio debate, I said that torchaudio isn't maintained but its loading functions are merely wrappers around the three backends used FFMpeg, Soundfile, and sox, and the loading interface is pretty stable for a while so there's no worries on that side, and since PyAV and torchaudio use FFMpeg, the supported formats are almost the same and torchaudio has a fallback option if no valid installation of FFMpeg is found

Just tried to run your master branch, and model loading has the below error:
faster_whisper/transcribe.py", line 1106, in WhisperModel
    tokens: list[int],
TypeError: 'type' object is not subscriptable

Should be fixed now
FYI: https://stackoverflow.com/a/75202688

Seems timestamps are off in the word_timestamps=True case:
[0.00s -> 27.24s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum. I have an object that weighs 15 kilograms and I can lift it up one meter, which I have done now. That means I have done work. MGH is the work I have done, believe me. I have increased the potential energy of this object. Fifteen times ten is about 150 joules. If I let it fall,
[55.47s -> 81.03s]  then that will be converted to kinetic energy.  They use these devices, it's called a racquetball, they use them to demolish buildings. You lift up a very heavy object, even heavier than this,
[135.38s -> 163.84s]  And then you let it go, you swing it, thereby converting gravitational potential energy into kinetic energy. And that way you can demolish a building. You just let it hit and it breaks a building. And that's the whole idea of wrecking. So you are using then the conversion of gravitational potential energy to kinetic energy.
[248.11s -> 277.11s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger. If I release it from this height,
[391.28s -> 417.46s]  and it swings then when it reaches here it could not be higher. There is a conversion from gravitational potential energy to kinetic energy back to gravitational potential energy and it will come to a stop here. And when it swings back it should not be able to reach any higher provided that I do not give this object an initial speed when I stand here. I trust
[558.74s -> 586.86s]  the conservation of mechanical energy for 100%. I may not trust myself. I'm going to release this object, and I hope I will be able to do it at zero speed, so that when it comes back, it may touch my chin, but it may not crush my chin. I want you to be extremely quiet, because this is no joke. If I don't succeed in giving it zero speed,
[757.30s -> 774.36s]  then this will be my last lecture. I will close my eyes. I don't want to see this. So please be very quiet. I almost didn't sleep all night. Three, two, one, zero.
[975.09s -> 976.87s]  Physics works, and I'm still alive.

should be fixed now, btw non-batched inference hallucinates and it increases when word timestamps are enabled
this is a comparison between non-batched and batched with batch_size=1, both with word timestamps enabled

Nice, Can you do this comparison also with sequential Faster whisper (master branch) with word timestamps enabled, just to be sure that it's not coming from any of the current changes? I will also verify it once you let me know the details.

@Jiltseb , should be fixed now, the problem was caused when using float16 in feature extraction, it's weird because it only caused the hallucinations in sequential inference only
I also made some other changes to unify the behavior of the batched inference with the sequential inference

Has there been any testing of transcribing multiple files at once? It seems that the tokenizer gets set to None in the code, and then I get the following:
len(tokens) >= 2 and tokens[-2] < tokenizer.timestamp_begin <= tokens[-1]
AttributeError: 'NoneType' object has no attribute 'timestamp_begin'

So some inferences are successful and others are not.
Re: https://github.com/SYSTRAN/faster-whisper/pull/856#issuecomment-2181179071 I think it's a related issue.

@hargunmujral Transcribing multiple files at once is not in the scope of this PR, but it is definitely in the plan.
How can I reproduce the tokenizer error when running a single file? Can you try to transcribe the test file many times and see if it happens again?

@MahmoudAshraf97 Please me know once ready for review

@hargunmujral running multiple transcripe calls using the same pipeline will cause this for sure, the correct method is to use a either a single pipeline with maximum batch size or multiple pipelines referencing a single model
@Jiltseb I'm ready

@MahmoudAshraf97 I just compared default batched transcription and its variant when both word_timestamps=True and without_timestamps=False. There are some missing words in the second version. Can you check?
Default:
[0.00s -> 27.79s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum. I have an object that weighs 15 kilograms and I can lift it up one meter, which I have done now. That means I have done work. mgh is the work I have done, believe me. I have increased the potential energy of this object. Fifteen times ten is about 150 joules. If I let it fall,
[28.11s -> 54.20s]  then that will be converted to kinetic energy.  They use these devices, it's called a racquetball, they use them to demolish buildings. You lift up a very heavy object, even heavier than this,
[54.35s -> 83.17s]  And then you let it go, you swing it, thereby converting gravitational potential energy into kinetic energy. And that way you can demolish a building. You just let it hit and it breaks a building. And that's the whole idea of wrecking. So you are using then the conversion of gravitational potential energy to kinetic energy.
[83.87s -> 113.77s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger. If I release it from this height,
[114.17s -> 140.95s]  and it swings then when it reaches here it could not be higher. There is a conversion from gravitational potential energy to kinetic energy back to gravitational potential energy and it will come to a stop here. And when it swings back it should not be able to reach any higher provided that I do not give this object an initial speed when I stand here. I trust
[141.28s -> 170.04s]  the conservation of mechanical energy for 100%. I may not trust myself. I'm going to release this object, and I hope I will be able to do it at zero speed, so that when it comes back, it may touch my chin, but it may not crush my chin. I want you to be extremely quiet, because this is no joke. If I don't succeed in giving it zero speed,
[170.18s -> 187.90s]  then this will be my last lecture. I will close my eyes. I don't want to see this. So please be very quiet. I almost didn't sleep all night. Three, two, one, zero.
[200.73s -> 202.90s]  Physics works, and I'm still alive.
Elapsed time: 3.1877

Default with word_timestamps=True and without_timestamps=False.
[0.00s -> 8.86s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum.
[9.74s -> 14.52s]  I have an object that weighs 15 kilograms and I can lift it up one meter, which I have
[14.52s -> 20.10s]  done now. That means I have done work. MGH is the work I have done, believe me. I have
[20.10s -> 27.26s]  increased the potential energy of this object. 15 x 10 is about 150 joules. If I let it fall,
[28.11s -> 30.57s]  then that will be converted to kinetic energy.
[31.59s -> 36.35s]  If I would let it swing from one meter height,
[37.03s -> 39.49s]  and you would be there and it would hit you, you'd be dead.
[40.65s -> 42.53s]  150 joules is enough to kill you.
[43.89s -> 46.91s]  They use these devices, it's called a racquetball,
[47.47s -> 49.21s]  they use them to demolish buildings.
[49.97s -> 53.79s]  You lift up a very heavy object, even heavier than this,
[54.35s -> 59.79s]  And then you let it go, you swing it, thereby converting gravitational potential energy
[60.35s -> 64.95s]  into kinetic energy and that way you can demolish a building.
[65.39s -> 73.53s]  You just let it hit and it breaks a building and that's the whole idea of wrecking.
[74.95s -> 82.81s]  So you are using then the conversion of gravitational potential energy to kinetic energy.
[83.87s -> 93.17s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to
[93.83s -> 95.73s]  put my life on the line.
[97.85s -> 108.71s]  If I release that bulb from a certain height, then that bulb can never come back to a point
_[109.47s -> 110.93s]  where the height is any larger.
[114.17s -> 119.85s]  and it swings,_ then when it reaches here it could not be higher. There is a conversion
[119.85s -> 124.95s]  from gravitational potential energy to kinetic energy back to gravitational potential energy
[124.95s -> 129.65s]  and it will come to a stop here. And when it swings back it should not be able to reach
[130.22s -> 137.55s]  any higher, provided that I do not give this object an initial speed when I stand here.
_[141.28s -> 144.36s]  the conservation of mechanical energy for 100%._
[145.42s -> 146.84s]  I may not trust myself.
[149.44s -> 151.16s]  I'm going to release this object,
[151.74s -> 154.54s]  and I hope I will be able to do it at zero speed,
[155.62s -> 158.34s]  so that when it comes back, it may touch my chin,
[159.02s -> 160.32s]  but it may not crush my chin.
[162.24s -> 165.44s]  I want you to be extremely quiet, because this is no joke.
[166.30s -> 169.40s]  If I don't succeed in giving it zero speed,
[170.42s -> 178.52s]  this will be my last lecture. I will close my eyes. I don't want to see this. So please
[178.52s -> 187.50s]  be very quiet. I almost didn't sleep all night. Three, two, one, zero.
[200.73s -> 202.51s]  Physics works, and I'm still alive.
Elapsed time: 5.2835

@MahmoudAshraf97 I just compared default batched transcription and its variant when both word_timestamps=True and without_timestamps=False. There are some missing words in the second version. Can you check?
Default:
[0.00s -> 27.79s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum. I have an object that weighs 15 kilograms and I can lift it up one meter, which I have done now. That means I have done work. mgh is the work I have done, believe me. I have increased the potential energy of this object. Fifteen times ten is about 150 joules. If I let it fall,
[28.11s -> 54.20s]  then that will be converted to kinetic energy.  They use these devices, it's called a racquetball, they use them to demolish buildings. You lift up a very heavy object, even heavier than this,
[54.35s -> 83.17s]  And then you let it go, you swing it, thereby converting gravitational potential energy into kinetic energy. And that way you can demolish a building. You just let it hit and it breaks a building. And that's the whole idea of wrecking. So you are using then the conversion of gravitational potential energy to kinetic energy.
[83.87s -> 113.77s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger. If I release it from this height,
[114.17s -> 140.95s]  and it swings then when it reaches here it could not be higher. There is a conversion from gravitational potential energy to kinetic energy back to gravitational potential energy and it will come to a stop here. And when it swings back it should not be able to reach any higher provided that I do not give this object an initial speed when I stand here. I trust
[141.28s -> 170.04s]  the conservation of mechanical energy for 100%. I may not trust myself. I'm going to release this object, and I hope I will be able to do it at zero speed, so that when it comes back, it may touch my chin, but it may not crush my chin. I want you to be extremely quiet, because this is no joke. If I don't succeed in giving it zero speed,
[170.18s -> 187.90s]  then this will be my last lecture. I will close my eyes. I don't want to see this. So please be very quiet. I almost didn't sleep all night. Three, two, one, zero.
[200.73s -> 202.90s]  Physics works, and I'm still alive.
Elapsed time: 3.1877

Default with word_timestamps=True and without_timestamps=False.
[0.00s -> 8.86s]  Now I want to return to the conservation of mechanical energy. I have here a pendulum.
[9.74s -> 14.52s]  I have an object that weighs 15 kilograms and I can lift it up one meter, which I have
[14.52s -> 20.10s]  done now. That means I have done work. MGH is the work I have done, believe me. I have
[20.10s -> 27.26s]  increased the potential energy of this object. 15 x 10 is about 150 joules. If I let it fall,
[28.11s -> 30.57s]  then that will be converted to kinetic energy.
[31.59s -> 36.35s]  If I would let it swing from one meter height,
[37.03s -> 39.49s]  and you would be there and it would hit you, you'd be dead.
[40.65s -> 42.53s]  150 joules is enough to kill you.
[43.89s -> 46.91s]  They use these devices, it's called a racquetball,
[47.47s -> 49.21s]  they use them to demolish buildings.
[49.97s -> 53.79s]  You lift up a very heavy object, even heavier than this,
[54.35s -> 59.79s]  And then you let it go, you swing it, thereby converting gravitational potential energy
[60.35s -> 64.95s]  into kinetic energy and that way you can demolish a building.
[65.39s -> 73.53s]  You just let it hit and it breaks a building and that's the whole idea of wrecking.
[74.95s -> 82.81s]  So you are using then the conversion of gravitational potential energy to kinetic energy.
[83.87s -> 93.17s]  Now, I am such a strong believer of the conservation of mechanical energy that I am willing to
[93.83s -> 95.73s]  put my life on the line.
[97.85s -> 108.71s]  If I release that bulb from a certain height, then that bulb can never come back to a point
**[109.47s -> 110.93s]  where the height is any larger.
[114.17s -> 119.85s]  and it swings,** then when it reaches here it could not be higher. There is a conversion
[119.85s -> 124.95s]  from gravitational potential energy to kinetic energy back to gravitational potential energy
[124.95s -> 129.65s]  and it will come to a stop here. And when it swings back it should not be able to reach
[130.22s -> 137.55s]  any higher, provided that I do not give this object an initial speed when I stand here.
**[141.28s -> 144.36s]  the conservation of mechanical energy for 100%**
[145.42s -> 146.84s]  I may not trust myself.
[149.44s -> 151.16s]  I'm going to release this object,
[151.74s -> 154.54s]  and I hope I will be able to do it at zero speed,
[155.62s -> 158.34s]  so that when it comes back, it may touch my chin,
[159.02s -> 160.32s]  but it may not crush my chin.
[162.24s -> 165.44s]  I want you to be extremely quiet, because this is no joke.
[166.30s -> 169.40s]  If I don't succeed in giving it zero speed,
[170.42s -> 178.52s]  this will be my last lecture. I will close my eyes. I don't want to see this. So please
[178.52s -> 187.50s]  be very quiet. I almost didn't sleep all night. Three, two, one, zero.
[200.73s -> 202.51s]  Physics works, and I'm still alive.
Elapsed time: 5.2835

technically speaking, the words are not missing because they were never generated, given the same encoder input
result = self.model.generate(encoder_output, [prompt] * batch_size)
tokenizer.decode(result[0].sequences_ids[0]) # 62 tokens
>>> ' Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger.'

result = self.model.generate(encoder_output, [prompt+[50364]] * batch_size) # no timestamps token added to the prompt
tokenizer.decode(result[0].sequences_ids[0]) # 61 tokens
>>> ' Now, I am such a strong believer of the conservation of mechanical energy that I am willing to put my life on the line. If I release that bulb from a certain height, then that bulb can never come back to a point where the height is any larger. If I release it from this height,'

note that the length of prompt + generation is 65 tokens in both cases
the strange thing is that when the timestamp is enabled, appending tokenizer.language or tokenizer.language token to the prompt seems to fix the issue in this specific segment, but not in all segments
I guess this is a problem on ctranslate2 side

I see the issue on the sequential side as well (it hallucinates at some places even though it does not miss them). But the original faster-whisper version (sequential) does a perfect job, it does not matter if it is withput_timestamps or not. Interestingly if I enable torchaudio feature extraction, it still hallucinates in sequential. The features have different dynamic ranges,

I would suggest keeping enable_ta_fe flag and original feature extraction for the sequential version.
For the batched version, the issue can be alleviated via vad-based segmentation, instead of using without_timestamps=True or by still using the original feature extraction (with a speed trade-off).

reimplementing the original feature extraction in torch instead of numpy can be faster that the kaldi implementation, but it results in a slightly higher WER on the included benchmark, so we keep the current transcription performance of faster whisper without the speed trade-off, btw the kaldi implementation might perform worse on the included file, but it performed better on other files too, I guess the final choice between the two should be based on extensive benchmarking

We did an internal benchmarking to compare them already and the results are the reason why we proposed to have both FE in the package based on speed vs WER trade-off.
Batched whisper torchaudio
WER: 6.5
Speed: 86.6x

Batched whisper Default
WER: 6.14
Speed: 65.8x

I will still recommend to keep both versions to avoid some new transcription errors popping up once the main PR is merged.

I suggest rerunning the benchmarks again as there should be no speed difference between torchaudio and the implementation in this PR, and go with the one with the lowest WER, I'd vote against keeping two feature extraction implementations as the difference in performance is negligible and would be a hassle to maintain (ignoring the fact that most users will not bother with testing both and choosing the best one)

Makes sense. I am waiting for confirmation from @trungkienbkhn before a final review before merging.

I suggest rerunning the benchmarks again (9f78b36 vs d95c7a6) as there should be no speed difference between torchaudio and the implementation in this PR, and go with the one with the lowest WER, I'd vote against keeping two feature extraction implementations as the difference in performance is negligible and would be a hassle to maintain (ignoring the fact that most users will not bother with testing both and choosing the best one)

I ran benchmarks for this with GPU H100:
Sequential FW

Speech

Current: 36.459s
Torchaudio kaldi: 35.749s

WER

Current: 3.212
Torchaudio kaldi: 2.002

Batched FW

Speech

Current: 7.084s
Torchaudio kaldi: 7.275s

And WER with Batched FW?
Note the typo- speech for total processing time.

And WER with Batched FW? Note the typo- speech for total processing time.

I just updated the wer benchmark. For torchaudio kaldi, I replaced the current logic with logic in here

Are these numbers using librispeech_asr if so, I guess we need to test it on longform audio too, so far the conclusion is that kaldi is superior in sequential and almost the same in batched, and both have the same speed
I suggest running the whole benchmark suite here

I think it is librispeech_asr looking at the numbers. I have tested it on long-form audio internal benchmark and the open-source benchmark I shared in the original PR.
The only change was for WER with torchaudio-kaldi from 6.5 to 6.2. But I would consider it as negligible difference, as a seasoned speech researcher (Many reasons behind this intuition).
open_asr_eval is NOT a long-form audio dataset, infact, the average duration of samples comes under 10 sec in most of them. It is ONLY good for evaluating short-form audio.  For long-form audio, we can use a subset of Youtube-Commons, It provides a realistic measure the speed, although the WER values need to be taken with a pinch of salt (owing to errors in Human annotation).
In my opinion, the performance is similar for both short and long-form audios and we should be able to choose torchaudio.

Yes I used librispeech_asr. I will try with mobiuslabsgmbh/youtube-commons-asr-eval

I have done this comparison before the PR and now reran the batched whisper on this dataset, just to make sure the speed and WER stays the same (In the original batched whisper PR, the default feature extraction was torchaudio)
#Before (torchaudio)
#average speed: 104x
#Test WER: 0.13164

#Before (systran FE)
#average speed: 63.5x
#Test WER: 0.13143

After changes (torchaudio)
#average speed: 103.7x
#Test WER: 0.13125

I also did the comparison between sequential versions:
#with systran FE
# average speed: 20.1x
#WER: 14.6

#with torchaudio
#average speed: 28.5x
#WER: 14.4

Note: HF whisper also now uses torchaudio based FE whenever it is available

I ran WER benchmark with youtube-common-asr dataset

WER: 13.287 torch kaldi
WER: 13.120 current

There is not too much difference.

Note: HF whisper also now uses torchaudio based FE whenever it is available

Yes, HF also use torchaudio kaldi. So I think should keep both versions of FE: current and a new option enable_ta_fe (maybe with default value is True). Do you have any other opinions?

I ran WER benchmark with youtube-common-asr dataset

WER: 13.287 torch kaldi
WER: 13.120 current

There is not too much difference.

Note: HF whisper also now uses torchaudio based FE whenever it is available

Yes, HF also use torchaudio kaldi. So I think should keep both versions of FE: current and a new option enable_ta_fe (maybe with default value is True). Do you have any other opinions?

HF doesn't use that implementation for whisper, it's used for other models, these are the implementations used for whisper which are a numpy and a torch implementations of the original whisper implementaion.
Regardless of that, HF can maintain multiple implementations because it's a multi-framework library and whisper can still be used without having pytorch installed, hence the need for a numpy implementation, but this is not the case for faster-whisper where torch must exist. Having two implementations is counter intuitive since they serve the same purpose with very close performance and no clear guide when to use one over the other, one can think of that as functionality duplication which is not a good practice

As @MahmoudAshraf97 mentioned, my opinion is to go with ONLY torchaudio since it has the same functionality at an increased speed.
I would say, we can stick with fp32 for the time-being as int16 does not add any reasonable benefit and would require further benchmarking and visual inspection.

After several different benchmark runs, I noticed that torchaudio kaldi is faster, while WER doesn't change much (increased slightly but not significantly, compared with current torch FE). So I think speed should be a priority. That's also why the project name is faster-whisper. In my opinion, I agree with just using torchaudio.
@Jiltseb , could you rollback code to use torchaudio for FE ? Tks.

Speed is indeed a priority, but to a certain extent IMO, faster-whisper is already the fastest implementation available after TensorRT-LLM, so squeezing more speed while trading off WER isn't a wise decision if you ask me, given that the speed difference between the two is 104x vs 103.7x as you stated in an earlier comment

I think there is a misunderstanding here:

We all agree original faster whisper feature extraction is slower and there is no great benefit in WER.
Then there is torchaudio-kaldi based feature extraction that has faster speed and similar WER.
The current FE implementation provided by @MahmoudAshraf97 uses torch.stft (like in whisperx), which is also faster than the original faster whisper implementation and similar WER.

Now we have to select between torchaudio FE and torch FE both have similar WER and speed (negligible differences).
I don't see any problem using the current implementation as it is. If there are no objections, let's finalize on this and move to the main PR for any further reviews/comments before merging.

@trungkienbkhn  As a final step before merging the main PR, could you also check with your organization to confirm about the Licensing as some parts are borrowed from whisperx?
We can have alternatives in place if needed.

@trungkienbkhn Discussing here on the further changes.
There is a set of different opinions regarding the latest PR we added. The reason was the apparent slowness in speed for CPU versions caused when there is only a limited number of cores. There was dissatisfaction owing to the introduction of additional dependencies.
As you already know, @MahmoudAshraf97 already removed several of them, including transformers and pyannote (via in-progress PR-Not referencing here now). @MahmoudAshraf97 and myself also implemented versions without torch and it finally has the same dependencies as the original FW. The slowness can be easily addressable with cpu_threads setting back to 0 as the default.
So a set of follow-up PRs should stabilize the big PR that got merged.
Can we discuss the feasibility here?


Undo merge error in CT-DW

When merging on top of most recent CT-DW changes I accidentally left a copy of the old transform code in.

:shipit:

:shipit:


Decrypt copayer name in transaction proposal actions

Fixes https://github.com/bitpay/copay/issues/4147

ACK

Coverage increased (+0.003%) to 94.766% when pulling 5381c6b798be7db3847c165ab087597efe7255aa on isocolsky:fix/copayer-name-decrypt into 41cab48e253e420b65b2af054ceb5b0261097480 on bitpay:master.


Trippy BSOD on NetBSD when resizing window

Starting trippy (0.6.0-dev) and resizing the window will result in a BSOD with the error:
IO error: Interrupted system call (os error 4)

Also occurs with the existing 0.5.0 release and so not a new regression.  @0323pin do you recall if you ever saw this issue?

@fujiapple852 I don't because, I do not resize windows, I use leftwm (tiling window manager).
But, I can reproduce the error with 0.5.0 when I do a window resize.

Thank you @0323pin!  Given it isn't a regression bug I'll proceed with the 0.6.0 release and investigate this with a view to fixing in 0.7.0.

No worries, @fujiapple852
Weird that this happens, though.

@fujiapple852 Just so you know, I've updated the package   already but, didn't have the time to merge it. Most probably late this evening or, tomorrow early morning.

Added #552 to assist with diagnostic of this issue

Best guess is this relates to not handling EINT properly.
https://unix.stackexchange.com/questions/509375/what-is-interrupted-system-call

Sorry for the slow reply, been AFK for a few days.
I've asked internally, if we are missing something obvious here.

Thanks @0323pin, there is nothing needed right now, I've managed to get an AWS NetBSD instance working again and so I should be able to debug this now.

I'm unable to build the latest master (or even the previous 0.7.0) ...

If you want, I can do a test build on bare-metal x86_64.

@0323pin that would be useful, thanks.  I'm going to release 0.8.0 soon so it would be good to confirm everything still works before I do.
Apart from checking that it builds from master, I was also hoping to run against a branch with some new logging enabled to capture more details above the failure above.  Would you be able to do that if it's not too much trouble?
git checkout feat-error-context
cargo build
sudo target/debug/trip example.com -m silent -v --log-span-events full > trippy.log

When running, resize the window and it should fail with the Interrupted system call error, then send me the log.  Note that the above will generate a lot of output, so i'd only run it for a few seconds before resizing the window.

I was also hoping to run against a branch with some new logging enabled to capture more details above the failure above. Would you be able to do that if it's not too much trouble?

Yes, I can do this but, I've already built from the 5b5ca30033fee48c2389723a6641a14b21a8a1b2
~> trip -V
trip 0.8.0-dev
~> uname -v
NetBSD 10.99.4 (GENERIC) #0: Fri May 12 13:29:41 UTC 2023  mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC
~> pkgin list | grep rust
rust-1.69.0          Safe, concurrent, practical language

Resizing the window causes the expected failure. I'll try to find the time to build with the logging feature enabled later today. But, at least you know it builds and runs.

Running target/debug/trip example.com -m silent -v --log-span-events full > trippy.log doesn't display the TUI. Is this intentional?
If so, I've e-mailed you the log-file, hopefully it comes through 19 MB.

Thanks, I got the file.
From the trace it doesn't look like it crashed, so I guess it only crashes when you resize when the TUI is running and the backend tracing is running, which the current tracing code doesn't support.
To fix this I think I'll need a netBSD env I can use to debug this directly (also I tried a VM in virtualBox without much luck).  What would be a good forum to ask for help for this?
Anyway good news that the latest code that it builds ok, so I can proceed with the release.

@0323pin I was eventually able to get NetBSD running locally on macOS (intel Mac) using qemu.
I downloaded:
http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/202308261920Z/images/NetBSD-9.3_STABLE-amd64.iso
I created the VM with:
qemu-img create virtualmachine.img 10G

For the. initial install I ran:
qemu-system-x86_64 -boot d -cdrom ~/Downloads/NetBSD-9.3-amd64.iso -enable-kvm -m 3G -hda virtualmachine.img

...and followed the prompts (picked defaults for most things, enabled sshd and nntpd)
After installation, i'm running it with (i've tried a few variation on this to try and speed things up):
qemu-system-x86_64 -m 3G -M q35 -cpu host -smp 4 -hda virtualmachine.img -accel hvf

I then installed pkgin (that was a struggle!).  I don't know why but pkgin runs really slowly (multi-minute to search for or install a package).  I also had to change from cdn.netbsd.org to ftp.netbsd.org to get it to work at all.
I then installed trippy version 0.8.0:
pkgin install trippy

It runs, though i'm obviously missing some setup as it looks like the following:

I don't see any ICMP traffic being received, which I guess is some qemu config I need to tweak.
Because i'm working directly in the console I don't have any way to trigger the bug with a window "resize", I guess I need some kind of graphical environment?
I wasn't able to ssh into the vm from my Mac host, so i'm just working in the eqmu window that pops up.

Hi, great that you have managed to install it :)

I don't know why but pkg_add & pkgin run really slowly (multi-minute to search for or install a package).

I've never experienced this. Ok, it's not as fast as xbps but, it's not slower than apt. Location/mirror?

Because i'm working directly in the console I don't have any way to trigger the bug with a window "resize", I guess I need some kind of graphical environment?

There are two window managers (kind of anyway, twm and the default ctwm) in the base install, as well as Xorg and three shells.

@fujiapple852 On a second thought ...
If your intention is only to debug the window-resize issue on a disposable qemu-vm, which you do not intend to keep, NetBSD has everything you need on the base install.
Xorg is part of base and ctwm the default WM, so if you just run startx from the tty, you will be on a graphical env
A bare-bones one with a white xterm (create .Xresources, if you want to define other colors) but, nevertheless a graphic env 😄
Sorry, if I can't give you proper .xinitrc and .Xresources files but, I haven't used modified defaults in ages. These days, I'm using alacritty built from git-HEAD and not xterm (no need for Xresources) and elvish also built from git-HEAD as my default shell, configured to start a graphical env straight from loggin.
If you, by any chance, run into issues with .Xauthority (not able to start the X-server) make sure your /etc/hosts is properly configured. It should contain the proper machine name (the name you gave your host during install) and your DNS domain and it should look like this:
#	$NetBSD: hosts,v 1.9 2013/11/24 07:20:01 dholland Exp $
#
# Host name database.
#
# This file contains addresses and aliases for local hosts whose names
# need to be resolvable during system boot; typically this includes only
# the address and FQDN for this machine's hostname.
#
# By default this file is consulted before DNS, so adding additional
# material here that then becomes out of date can lead to confusion.
# See nsswitch.conf(5).
#
::1			mybox.my.domain mybox
<IP_ADDRESS>		mybox.my.domain mybox
#
# RFC 1918 specifies that these networks are "internal":
# <IP_ADDRESS>        -   <IP_ADDRESS>  (10/8 prefix)
# <IP_ADDRESS>      -   <IP_ADDRESS>  (172.16/12 prefix)
# <IP_ADDRESS>     -   <IP_ADDRESS> (192.168/16 prefix)

Note: I've posted this on a forum a longtime ago so, I've hidden the numbers, <IP_ADDRESS> is actually something else. Don't touch the default, just fix domain name and hostname.
Now, you should be able to resize your terminal and reproduce the issue.

Are you on Matrix?

@0323pin I am now!  @fujiapple852:matrix.org

If your intention is only to debug the window-resize issue on a disposable qemu-vm, which you do not intend to keep, NetBSD has everything you need on the base install.

Yeh, disposable is fine.  I'd like to be able to fire up trippy on netbsd run a basic test before each release like I used to do on a cloud env.

Xorg is part of base and ctwm the default WM, so if you just run startx from the tty, you will be on a graphical env

Wow, that just...worked :)
From the graphical env I was able to start trippy, resize the window and observe the crash.  Nice!

Yeh, disposable is fine. I'd like to be able to fire up trippy on netbsd run a basic test before each release like I used to do on a cloud env.

Is there an easy way to add this to the pre-release CI?

I also joined matrix @one.----:matrix.org

Yeh, disposable is fine. I'd like to be able to fire up trippy on netbsd run a basic test before each release like I used to do on a cloud env.

Is there an easy way to add this to the pre-release CI?

I know nothing about CIs but, there's now support for NetBSD in https://cirrus-ci.com/build/6221284932583424

@0323pin provisional fix available in https://github.com/fujiapple852/trippy/pull/670
It seems to fix it in my qemu-vm environment, would care to try it?
One caveat here is that I've had to temporarily downgrade clap as the latest version requires Rust 1.70 and the latest version available on netbsd 9.3 appears to be 1.69 (the latest rust available is 1.72).  Once netbsd bumps to 1.70 I can merge this fix, which is fine as I don't plan a trippy release for a while anyway.  If needed I could back port the fix to 0.8.x and release it, but I think that may be overkill.

I know nothing about CIs but, there's now support for NetBSD in https://cirrus-ci.com/build/6221284932583424

That's awesome!
Now I wonder if it allows raw sockets and ICMP (GH actions do not...)

Thanks! I'll take it for a spin after the weekend.
Sorry, family visit.
Did you see my comment on the Rust version in your branch commit?

@0323pin yes I did, that's fine.  No rush here, we've waited this long it can wait a few more weeks :)

@fujiapple852 It works 😄

Built with Rust-1.71.1, resize without crash.

Thanks!  The fix has been Merged and will go into the 0.9.0 release.


add / update reprs

add simple WXRotation repr
use WXRotation in LCS from_ constructors
add "nice" repr for LCS (orientation matrix) (remove unused coordinates)
add/inherit LCS notebook repr ?

closing for now to focus on #129


feat: Add Auto Focus Search Box option

Coverage remained the same at 41.648% when pulling db8417b9344b9024b58e1b677ba5cd744893df04 on search into e01087083bca3c8888041e6683caf675a9da121e on master.

Codecov Report

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

@@           Coverage Diff           @@
##           master     #188   +/-   ##
=======================================
  Coverage   48.08%   48.08%
=======================================
  Files          21       21
  Lines         287      287
  Branches       57       57
=======================================
  Hits          138      138
  Misses        112      112
  Partials       37       37

Continue to review full report at Codecov.

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


Change text input to date input

Simple, quick fix to make input field an html5 date input field. We should use a 508 compliant DateInput component, but this the html5 picker is better than just a plain text input for now.
Part of issue #101

Note that the internal format of the data will be yyyy-mm-dd (ISO8601) but the displayed format depends on the browser's locale. I'd hope/think that the user's format would be mm/dd/yyyy but it might be worthwhile verifying that. Also I'm not sure where (or if) we've standardized converting from strings to an internal format like moment, or perhaps we don't need to. Note that if we do use an internal format we want to use UTC (even if just for the date) because otherwise the date might not display correctly in all time zones. With all that said it seems like this is better than what we have.

The back-end view of this is a LocalDate, which is to say a date with neither time nor time zone. I would expect that to travel back and forth to the server as an ISO date, but that does not appear to be what's happening right now, so merging this without a further shim would probably break something.

The back-end view of this is a LocalDate ... I would expect that to travel back and forth to the server as an ISO date, but that does not appear to be what's happening right now

I hate dates so much. I've spent days trying to deal with this problem on multiple projects over the years. The most reliable thing I've found is to keep it in ISO8601 format measured from UTC as a string, which still gives correct comparisons.
A local date should be in the local time zone, but "local" isn't a very meaningful word in the cloud. Can we send you ISO dates as strings that you can ensure stay in UTC?

I mean, I'm not going to argue with you about how they should have named things in the java.time package—I just want to be clear that the date that you generate from the date picker is stored as a year-month-day tuple with neither time nor time zone.
Generated timestamps are stored as timestamps (though we could if desired convert them from UTC to a time zone specified in the graphql request), but those aren't what we're talking about here.

Yeah, from the graphql it looks like we are just sending dates as strings. If the string isn't in mm/dd/yyyy graphql says it saved but there's actually an internal server error reported from the backend, no doubt because it's parsing that format.
I believe the default format for Java's LocalDate is ISO8601 so parsing that would just require removing the custom parser/formatter there. At that point the frontend would need to ensure all dates are in that format and we'd need to coordinate with backend deploy. The PR here takes care of the locale formatting, so I think we'd be okay.

I can probably get the back end to play nicely with both formats on the receiving end--reliably emitting the right thing might be a little harder. At this point I think we have a bunch of problems like this, though--I'm a little worried about pulling on threads right this minute.