[question] Analyze paths in multigraph environment

Hi guys,
I'm working on use case that leverage the multigraph feature, I have some CSV files and after some ETL stuff with Spark and CAPS I obtain a graph for each file, which looks like this more or less:
file 1 - Graph 1:
(k__Bacteria)-[:INTERACTION]->(p__Proteobacteria)-[:INTERACTION]->(c__Alphaproteobacteria)-[:INTERACTION]->(o__Rhizobiales)-[:INTERACTION]->(f__Bradyrhizobiaceae)-[:INTERACTION]->(g__Bosea)-[:INTERACTION]->(s__Afipia_genosp_9)
(k__Bacteria)-[:INTERACTION]->(p__Firmicutes)-[:INTERACTION]->(c__Bacilli)-[:INTERACTION]->(o__Bacillales)-[:INTERACTION]->(f__Staphylococcaceae)-[:INTERACTION]->(g__Jeotgalicoccus)-[:INTERACTION]->(Unclassified)
(k__Bacteria)-[:INTERACTION]->(p__Actinobacteria)-[:INTERACTION]->(c__Actinobacteria)-[:INTERACTION]->(o__Actinomycetales)-[:INTERACTION]->(f__Microbacteriaceae)-[:INTERACTION]->(g__Agromyces)-[:INTERACTION]->(Unclassified)
(k__Bacteria)-[:INTERACTION]->(p__Proteobacteria)-[:INTERACTION]->(c__Gammaproteobacteria)-[:INTERACTION]->(o__Xanthomonadales)-[:INTERACTION]->(f__Xanthomonadaceae)-[:INTERACTION]->(g__Xylella)-[:INTERACTION]->(s__Xylella_fastidiosa)
(k__Bacteria)-[:INTERACTION]->(c__Actinobacteria)-[:INTERACTION]->(o__Actinomycetales)-[:INTERACTION]->(Unclassified)
Following an image that help to understand:

file 2 - Graph 2:
(k__Bacteria)-[:INTERACTION]->(p__Firmicutes)-[:INTERACTION]->(c__Bacilli)-[:INTERACTION]->(o__Bacillales)-[:INTERACTION]->(f__Listeriaceae)-[:INTERACTION]->(g__Listeria)-[:INTERACTION]->(s__Listeria_grayi)
(k__Bacteria)-[:INTERACTION]->(p__Proteobacteria)-[:INTERACTION]->(c__Alphaproteobacteria)-[:INTERACTION]->(o__Rhizobiales)-[:INTERACTION]->(f__Brucellaceae)-[:INTERACTION]->(g__Pseudochrobactrum)-[:INTERACTION]->(Unclassified)
(k__Bacteria)-[:INTERACTION]->(p__Planctomycetes)-[:INTERACTION]->(c__Kueneniae)-[:INTERACTION]->(o__Kueneniales)-[:INTERACTION]->(f__Scalinduaceae)-[:INTERACTION]->(g__Candidatus_Scalindua)-[:INTERACTION]->(Unclassified)
(k__Bacteria)-[:INTERACTION]->(p__Firmicutes)-[:INTERACTION]->(c__Bacilli)-[:INTERACTION]->(o__Bacillales)-[:INTERACTION]->(f__Staphylococcaceae)-[:INTERACTION]->(g__Jeotgalicoccus)-[:INTERACTION]->(Unclassified)
Following an image that help to understand:

Then Result Graph, in composed by the paths (compared by the node.name property) that occours in each graph, so in this (simple) case, the result graph is:
(k__Bacteria)-[:INTERACTION]->(p__Firmicutes)-[:INTERACTION]->(c__Bacilli)-[:INTERACTION]->(o__Bacillales)-[:INTERACTION]->(f__Staphylococcaceae)-[:INTERACTION]->(g__Jeotgalicoccus)-[:INTERACTION]->(Unclassified)
(k__Bacteria)-[:INTERACTION]->(c__Actinobacteria)-[:INTERACTION]->(o__Actinomycetales)-[:INTERACTION]->(Unclassified)
Which is essentially composed by the two "strings" highlighted in red and green in the images
Is there some query over CAPS that can compare the "strings"?
Thanks a lot!

Hi @conker84 and thanks for reaching out to us.
Unfortunately, CAPS does not yet support path patterns. We intend to add this, but it isn't planned in the short-term.
This query should work, but it will not be exactly the same:
session.cypher("""
    |FROM GRAPH barcode01
    |MATCH (s:Bacteria {isRoot: "true"})-[rs:INTERACTION*..7]->(t:Bacteria {isLeaf: "true"})
    |RETURN s, rs, t // will return start node, list of relationships, and end node
""".stripMargin).records

@Mats-SX thanks but I need the path because then I need to compare each node in the path, I need something like this:
session.cypher("""
    |FROM GRAPH barcode01
    |MATCH p = (s:Bacteria {isRoot: "true"})-[:INTERACTION*..7]->(t:Bacteria {isLeaf: "true"})
    |
    |FROM GRAPH barcode02
    |MATCH p1 = (s1:Bacteria {isRoot: "true"})-[r1:INTERACTION*..7]->(t2:Bacteria {isLeaf: "true"})
    |
    |WHERE nodes(p) = nodes(p1) // This is an oversimplification :), it's just to explain what I need
    |RETURN p
""".stripMargin).records.size

Do you think I could leverage some workaround?
Thanks
Andrea

@conker84 I understand. You want to find isomorphic subgraphs given input graphs and a pattern.
Given the equality model of Cypher, the query you posted wouldn't work anyway; nodes in different graphs are unequal by definition. The multiple graph extensions does define an equivalence concept that compares nodes on content (labels and properties) instead of identity, but unfortunately that is also unavailable in CAPS right now.
I'm not sure exactly how one could do this, but perhaps using chained OPTIONAL MATCH could be an option?
FROM GRAPH barcode01
MATCH (s:Bacteria {isRoot: "true"})-[r1:INTERACTION]->(b1:Bacteria)
OPTIONAL MATCH (b1)-[r2:INTERACTION]->(b2:Bacteria)
OPTIONAL MATCH (b2)-[r3:INTERACTION]->(b3:Bacteria)
OPTIONAL MATCH (b3)-[r4:INTERACTION]->(b4:Bacteria)
OPTIONAL MATCH (b4)-[r5:INTERACTION]->(b5:Bacteria)
OPTIONAL MATCH (b5)-[r6:INTERACTION]->(b6:Bacteria)
OPTIONAL MATCH (b6)-[r7:INTERACTION]->(t:Bacteria {isLeaf: "true"})
RETURN s, r1, b1, r2, b2, r3, b3, r4, b4, r5, b5, r6, b6, r7, t

That'll return the path you're looking for, but in a much less convenient form. It will also have null as value for nodes and relationships that extend beyond the maximum size of the path.

Hi, I made some progress here:
session.cypher("""
    |FROM GRAPH barcode01
    |MATCH (s01:Bacteria{isRoot: true})-[:INTERACTION*..7]->(i01:Bacteria)
    |
    |FROM GRAPH barcode02
    |MATCH (s02:Bacteria{isRoot: true})-[:INTERACTION*..7]->(i02:Bacteria)
    |
    |WITH s01.operational_taxonomic_unit as otu01, s01.name as root01, collect(i01.name) as names01,
    |s02.operational_taxonomic_unit as otu02, s02.name as root02, collect(i02.name) as names02
    |
    |WHERE root01 = root02
    |RETURN root01
""".stripMargin)

Now I want to add  this piece to the WHERE condition:
AND length(filter(x IN names01 WHERE x NOT IN names02)) = 0

But I get this exception:
org.opencypher.okapi.ir.impl.typer.exception.TypingException: Type inference errors: Don't know how to type FilterExpression(FilterScope(Variable(x),Some(In(Variable(x),Variable(names02)))),Variable(names01)) [line 11, column 34 (offset: 405)]

Nice workaround! I'm sorry to tell you that filter() has not been implemented. When we take this on, we will likely focus first on the little more modern list comprehensions, which would look like this:
AND length([x IN names01 WHERE NOT x IN names02]) = 0

In the mean time, perhaps you could do this in a post-filtering step on the resulting DataFrame?
val records = session.cypher("... RETURN root01, names01, names02").records

val df = records.Df

df.filter() // SQL expression, or Spark UDF

Hello @conker84
Are you still blocked by missing filter() here, or have you worked around this?

Hi @Mats-SX I'm ok with this


Compilation warning: LottieAnimationView.Loop is obsolete

Our project compiles to treat warnings as errors.
When compiling a project using a LottieAnimationView in a XAML view, the compiler shows the warning below:

This is reproducible using the sample project on this GitHub page by changing the project Debug settings to treat all warnings as errors.
The property in question is found in LottieAnimationView, line 800.
The documentation for this property refers to the RepeatCount property; would it be feasible to remove usages of the Loop property and replace them with RepeatCount?
Many thanks!

Is there a reason why you are building from source? If you use the NuGet package (https://www.nuget.org/packages/LottieUWP) and don't use any of the deprecated methods, you shouldn't get any warning, and therefore any errors.

We originally tried with the NuGet package, and that was where we first encountered this.
The XAML for our test is as follows, using an animation from the sample project copied into our assets:
               <lottieUwp:LottieAnimationView FileName="Assets/Lottie/the_final_frontier.json" />
We have no code-behind attached to this view for the LottieAnimationView; it is purely XAML.
Under these conditions, the warning is given at compile time.

I drilled down and this seems to be a problem with the generated code on XamlTypeInfo.g.cs. It is suppressing the warning only at Level0. For now, the only thing that can be done is either reducing the error level to 0, or manually suppressing 0612 for the project. I know it's not ideal... I will remove that property on a future version.

Ok, so I drilled with the responsible team for the XAML Markup Compiler and it seems that this bug only happens if the ObsoleteAttribute is used with the default message(i.e. [Obsolete], instead of [Obsolete("...")] ). I'm going to push this workaround for now, and they've already opened a bug internally to fix this for a future version of VS.

@azchohfi Excellent, thanks very much for the quick response and fix!
Is there a time frame in which this change would be pushed as an update to the NuGet package?


MAINT: optimize.root_scalar: raise when NaN is encountered

Reference issue
Closes gh-3089
Closes gh-8394
Closes gh-14414
What does this implement/fix?
The bracketing scalar root-finders can return incorrect results when the function returns NaN. Instead, raise an error.
Additional information
The linked issues only report problems when the function is NaN at one of the initial bracketing interval endpoints, so the approach of the first commit was to only check for NaNs at the bracketing interval endpoints. However, I imagine there could also be problems if the solver does not encounter a NaN at the initial endpoints but later. One option is to also check whether the final function value is NaN, but this is not guaranteed to catch problems, and it could allow the algorithm to proceed long after the first NaN is encountered. I ended up changing the approach to check for NaN on every function evaluation using a wrapper. The performance hit seems small. In main:
import numpy as np
from scipy import stats
rng = np.random.default_rng(1638083107694713882823079058616272161)
p = rng.random(1000)
mu = 1.5
x = stats.recipinvgauss.ppf(p, mu)  # uses `brentq`
# 1.01 s ± 8.14 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

with this PR:
1.03 s ± 3.27 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

This could probably be reduced by doing the NaN check in the compiled code itself as is discussed in https://github.com/scipy/scipy/issues/8394#issuecomment-364605533, but since gh-3089 was reported almost a decade ago, it seems there is some hesitation to modify all those compiled functions.

If this change was implemented in the root finder itself, it would work for the Python interface optimize.root_scalar
and for the Cython interface in cython_optimize.
Would be a lot more work though ..

It does work in root_scalar. Would cython_optimize users would want to burn clock cycles on such a check?
@dschmitz89 what would you suggest? Would you prefer to close this PR?

I have never used cython_optimize myself, so I cannot really speak for those folks.
But if I were a user wanting to switch from root_scalar to cython_optimize for speed, I would expect the exact same behaviour, also for these edge cases. Also updating this in the cython wrapper code sounds like bad practice but ..
Maybe there are some more opinions floating around here..

I am merging now, additional developments in compiled code can be done later if wanted, as it is, this is a clear improvement and there is nothing preventing from merging. Thanks again Matt.


Error: Cannot cast HTMLImageElement to WebGLImage in Debug mode

VSCode Version (Kode Studio): 16.11.1
OS Version: Windows 10 pro

Steps to Reproduce:

Code:

public function new() {
	Assets.loadEverything(loaded);
}

public function loaded() {
	_notLoaded = false;
	_ship = Assets.images.playerShip;
}

public function render(framebuffer: Framebuffer) {
	if(_notLoaded) return;
	var g =framebuffer.g2;
	g.begin();
	g.drawImage(_ship, 0, 0);
	g.end();
}

F5

Error:
Error: Cannot cast {
	g2canvas : null,
	myWidth : 99,
	myHeight : 75,
	format : RGBA32,
	renderTarget : false,
	image : [object HTMLImageElement],
	video : null
} to {
	__name__ : [kha,WebGLImage],
	init : <function>,
	upperPowerOfTwo : <function>,
	formatByteSize : <function>
}

It works on the html5 target, but not in the debug html5 target with electron.
How to fix that?
Where is the target of this? (Source code) to help you out? i don't find it in kha or KodeStudio.
Thanks for your answer.

You can set a breakpoint and step right into the source code. Do you use Kode Studio's integrated Kha? Can you provide a complete project so I can easier reproduce the issue?

Okay sorry i fix in my own code:
After some time (8h) i found the solution:
I created the Project before the window was avaible (before the callback: System.init(options, function () {).
I was wondering thats work on the html5 target but not in the debug mode of kode studio.
Now it works both.
Thank you for your help.
The Error message was a bit defficult to figure out what it means (where it comes from).


mariadb: updates

Description of changes
https://mariadb.com/kb/en/mariadb-10425-release-notes/
https://mariadb.com/kb/en/mariadb-10516-release-notes/
https://mariadb.com/kb/en/mariadb-1068-release-notes/
https://mariadb.com/kb/en/mariadb-1074-release-notes/
https://mariadb.com/kb/en/mariadb-1083-release-notes/
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
[ ] 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.

backport in #173982


We should have Maven format our code

Since 99% of problems from code reviews deal with formatting, and all IDE's have different formatters, we should make Maven do it for us, like so:
      <plugin>
        <groupId>com.coveo</groupId>
        <artifactId>fmt-maven-plugin</artifactId>
        <version>2.1.0</version>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
</plugin>

running mvn fm-maven-plugin:format will format the code. See https://github.com/coveo/fmt-maven-plugin for details. (Note only google formatter (https://google.github.io/styleguide/javaguide.html) is supported). Maven Checkstyle can also work, but would require contributors to set up their IDE's.

https://github.com/revelc/formatter-maven-plugin is another good option. This one can use any eclipse formatter.

@Christopher-Chianelli Can this issue be closed, now that #91 is merged?

@amisevsk thanks for reminding me. Closing.


🥳[Feature]Desktop Version?

Overview
Currently, Litewallet  is built for mobile but having a SPV Desktop version has been requested.
Why?
Is your request related to a problem? Or, do you have an idea to improve the app? Please describe.

The a desktop version would be quicker and less resource intensive than a full-chain option.
What?
Describe the solution you'd like

Describe alternatives you've considered

Additional context

Definition of Done

[ ] Action 1
[ ] Action 2
[ ] Action N

UI Changes

Before
After

I never requested this
Wayne B. Kimball
On Mon, May 22, 2023, 2:13 AM Kerry Washington @.***>
wrote:

Overview
Currently, Litewallet is built for mobile but having a SPV Desktop version
has been requested.
Why?
Is your request related to a problem? Or, do you have an idea to improve
the app? Please describe.
The a desktop version would be quicker and less resource intensive than a
full-chain option.
What?
Describe the solution you'd like
Describe alternatives you've considered
Additional context
Definition of Done

Action 1
Action 2
Action N

UI Changes
Before After
—
Reply to this email directly, view it on GitHub
https://github.com/litecoin-foundation/litewallet-android/issues/144,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6XTMTBK5Y34POHAFVYD2W3XHMN3DANCNFSM6AAAAAAYKCES7Y
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Will not do.


Draw fillRoundRect

how can I use fillRoundRect (x,x,x,x,x) (like in tft_espi,  in M5GFX ?
if I write, no error  on compile, but also no result in display drawing

Hello, @yo2ldk
Sorry for the late reply.
Please try the following code.
#include <M5GFX.h>

M5GFX gfx;

void setup() {
    gfx.begin();

    int x = 32;
    int y = 32;
    int w = 128;
    int h = 128;
    int r = 20;
    uint32_t color = 0xFFEE33;

    gfx.fillRoundRect(x, y, w, h, r, color);
}

void loop() {}


Fancy zones on all monitors - when dragging window to another monitor sometimes zone stays marked as active on previous

Steps to reproduce

turn off "show spaces around zones" on two monitors and have grids or other configuration on both
drag window from one monitor to another

Expected behavior

zone on new monitor is marked as active
all zones on previous are marked as inactive

Actual behavior

zone on new monitor is marked as active
zone on previous is marked as active

The fix is now available in 0.16 https://github.com/microsoft/PowerToys/releases


Add a tooltip to Color properties in the editor inspector

Inspired by https://github.com/godotengine/godot-proposals/issues/178.
This makes it possible to view a color's raw R/G/B/A values without clicking the ColorPickerButton. The main idea is to make it possible to discern values that are close to 1, but not equal to 1. This can be especially important with the alpha channel.
I'm looking for feedback on this, let me know if there's a better way to display this information (without using too much space).
Preview

Thanks!


Review CI Test Signal

Describe the bug
CI doesn't not receive the right signal whenever the test phase crashes and instead it is assuming "PASS" eventhough no tests have run. See CI Status here
Expected behavior
CI Test phase should only pass when all tests have passed.
Screenshots

Repository

designer

This issue has been resolved. @bertrandmc will post pull requrest


Add ISPN cluster config

I try to separate the replicated-cache from the exiting local caches since i ran into some weird thing when i did the integrate test for that. The thing is it tried to replicate other caches as well(not sure, but it reports the ClassNotFoundException as the class is in Indy local caches but never be used in AuditQuery side ).

Will fix the conflicting in pom.xml later.


Buy and test string which will be used to bind balloon

(need 50lb breaking strength).
(I purchased force gauge and found some strings for kites but not sure if they are okay yet)

I have 100lb and 80lb strings. Trying to figure out proper tests.

Can this issue be closed?


Language recognition enhancement

I saw few words like "camera", "television, "dumbell", "spider man guitar" etc. not getting recognised as english. Hence opening this as to check if it can be enhanced in future. I have more samples, if required will post them on-demand. Thanks for reading.

Hi Mohamed, thanks for reaching out to me. Statistical approaches to language detection are never 100% correct. So it's no surprise that you've found words that are incorrectly identified. Of course, I will try to improve the library in the future. I'm sure you have seen the currently open issues that I will work on. But I don't need any samples from you in order to improve the library. Thanks anyway.


Add: JKM Church TV [UK/CD]

Channel Name
JKM Church TV
Alternative Names (optional)
No response
Network (optional)
No response
Owners (optional)
No response
Country
UK
Subdivision (optional)
No response
City (optional)
No response
Broadcast Area
c/UK;c/CD
Languages
fra
Categories (optional)
religious
NSFW
FALSE
Launched (optional)
No response
Closed (optional)
No response
Replaced By (optional)
No response
Website (optional)
https://www.facebook.com/PasteurJoel190/
Logo
https://i.imgur.com/fRDD2PW.png
Notes
No response

No info on this channel since 2022. Is it still airing ?
That logo is not the correct one. This one is from an Indian Gospel TV : https://www.youtube.com/channel/UCLlbX2e5B18E4Zneux_bkeA

No info on this channel since 2022. Is it still airing ?
That logo is not the correct one. This one is from an Indian Gospel TV : https://www.youtube.com/channel/UCLlbX2e5B18E4Zneux_bkeA

http://<IP_ADDRESS>:8080/JKMchurch/index.m3u8


@sirutils/builder windows support ?


Does not suggest the property annotation.

Code:
<?php

/**
 * My demo code
 *
 * @package App\Models
 * @version Release: <May 28, 2018, 12:25 pm CST>
 *
 * @property boolean type
 * @property integer source_id
 * @property Answer|Question source
 */
class Demo extends Model
{

it does not suggest the property type, source_id and source.
and tried dollar mark prefix, also does not work.

That's why I use Intelephense:
https://github.com/bmewburn/vscode-intelephense

Duplicate of #145, this was moved to the php-language-server repository https://github.com/felixfbecker/php-language-server/issues/458


SB-1423: Authentication fails when concurrent requests to protected endpoints occur

Pull Request Description
This pull request closes #1519
Acceptance Test

[x] Building the code with mvn clean install -Dintegration.tests still works.
[x] Running mvn spring-boot:run in the strongbox-web-core still starts up the application correctly.
[x] Building the code and running the strongbox-distribution from a zip or tar.gz still works.
[x] The tests in the strongbox-web-integration-tests still run properly.

Questions

Does this pull request break backward compatibility?

[ ] Yes
[x] No

Does this require an update of the documentation?

[ ] Yes, please see strongbox/strongbox-docs#{PR_NUMBER}
[x] No

Does this pull request require other pull requests to be merged first?

[X] Yes, please see:
https://github.com/strongbox/strongbox-db/pull/17

Thanks, @sbespalov !


Enabling automatic syncing of webhook URLs

We'd like to build towards the ideal and most frictionless experience, to achieve that goal it would be nice to allow solidus to set webhook URLs via API.

Bolt team provided us an API to set the webhook. The following documentation can be opened with swagger
openapi: 3.0.1
info:
  title: Bolt Webhook Config API
  description: This is a set of APIs to configure your webhooks with Bolt.
  version: 1.0.0
servers:
- url: https://api.bolt.com/
- url: http://api.bolt.com/
tags:
- name: webhooks
  description: Everything about your webhooks with Bolt.
paths:
  /v1/webhooks:
    post:
      tags:
      - webhooks
      summary: Add a new Bolt Webhook.
      description: Create a new Webhook to receive notifications from Bolt about various
        events, such as transaction status.
      operationId: createWebhook
      requestBody:
        description: Webhook to be added to receive notifications.
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/EventGroupCreateWebhook'
              - $ref: '#/components/schemas/EventsArrayCreateWebhook'
        required: true
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
        400:
          description: BAD REQUEST. Request is malformed or invalid values are detected.
            division_id could be invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultApiResponse'
        403:
          description: FORBIDDEN. Not authorized to create a webhook for this entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultApiResponse'
      security:
      - api_key: []
      x-codegen-request-body-name: body
components:
  schemas:
    BaseCreateWebhook:
      required:
      - division_id
      - url
      type: object
      properties:
        division_id:
          type: string
          description: The unique public ID associated with the merchant's
            Bolt Account division.
          example: 4ab56ad7865ada4ad32
        url:
          type: string
          description: The full URL to receive webhook notifications.
          example: https://eva-nerv.shop.com/path/to/hook
    EventsArrayCreateWebhook:
      allOf:
      - $ref: '#/components/schemas/BaseCreateWebhook'
      - type: object
        properties:
          events:
            type: array
            description: 'Pick a list of notification events to subscribe to.'
            items:
              $ref: '#/components/schemas/Event'
    EventGroupCreateWebhook:
      allOf:
      - $ref: '#/components/schemas/BaseCreateWebhook'
      - type: object
      properties:
        event_group:
          type: string
          description: 'all: subscribe to all events and future new events.'
          enum:
          - all
    Event:
      type: string
      description: Events the webhook will notify the url about.
      enum:
      - payment
      - credit
      - capture
      - void
      - auth
      - pending
      - rejected_irreversible
      - rejected_reversible
      - no_op
      - failed_payment
      - newsletter_subscription
      - risk_insights
      - credit_card_deleted
    Webhook:
      required:
      - created_at
      - subscribe_to_all_events
      - events
      - url
      - webhook_id
      type: object
      properties:
        webhook_id:
          type: string
          description: A unique string webhook ID. This will be used for modify/delete
            operations as well.
          example: wh_za7VbYcSQU2zRgGQXQAm-g
    DefaultApiResponse:
      type: object
      properties:
        result:
          type: object
          properties:
            success:
              type: boolean
              example: false
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: integer
                format: int32
                example: 1006
              message:
                type: string
                example: detailed error message.
  securitySchemes:
    api_key:
      type: apiKey
      name: X-API-KEY
      in: header

At there moment there is no way to know if the webhook is already set or not.


Check URLs during website build

@lochhh has suggested a neat way of handling links in Sphinx.
Essentially, we can have one central place for all links in conf.py, meaning we only need to worry about updating URLs there.
This should reduce the probability of broken links.
I'm happy to implement this here after the above movement PR is merged.
As an additional check, we will implement the checking of URLs during docs build (Sphinx has a "linkcheck"  capability), but this will be implemented upstream, in the actions repository.

So we now just need to implement the link centralisation in conf.py.


Description of primitives without synchronization

Missing documentation for multiple data protection between coroutines.

I wanna read/write a struct which maybe large enough between multi coroutine. How can I guarantee the integrity of the struct? Is "channels operation" atomic operation?

Yes, it's atomic.


Reduce Prop Reliance

We should not be in the habit of relying on a lot of styling props for individual fields. This practice has gotten out of hand:
ContractEditor
  clauseProps = {
    BODY_FONT (string),
    CLAUSE_BACKGROUND (string),
    CLAUSE_BORDER (string),
    CLAUSE_ICONS (string),
    COMPUTED_COLOR (string),
    HEADER_FONT (string),
    VARIABLE_COLOR (string),
    CONDITIONAL_COLOR (string),
};
  editorProps = {
    BUTTON_BACKGROUND_INACTIVE (string),
    BUTTON_BACKGROUND_ACTIVE (string),
    BUTTON_SYMBOL_INACTIVE (string),
    BUTTON_SYMBOL_ACTIVE (string),
    DROPDOWN_COLOR (string),
    EDITOR_BORDER (string),
    EDITOR_BORDER_RADIUS (string),
    EDITOR_HEIGHT (string),
    EDITOR_MARGIN (string),
    EDITOR_SHADOW (string),
    EDITOR_WIDTH (string),
    TOOLBAR_BACKGROUND (string),
    TOOLTIP_BACKGROUND (string),
    TOOLTIP (string),
    TOOLBAR_SHADOW (string),
};

ErrorLogger
  errorsPropsObject = {
    ERRORS_HEADER_BACKGROUND (string),
    ERRORS_HEADER_BACKGROUND_HOVER (string),
    ERRORS_HEADER_EXPAND_ARROW (string),
    ERRORS_HEADER_BORDER_TOP (string),
    ERRORS_HEADER_SHADOW (string),
    ERRORS_DISPLAY_BACKGROUND (string),
    ERRORS_DISPLAY_SHADOW (string),
    ERRORS_DISPLAY_Z_INDEX (string),
    ERROR_BORDER_BOTTOM (string),
    ERROR_EXPAND_ARROW (string),
    ERROR_FILE (string),
    ERROR_FILE_HOVER (string),
    ERROR_TYPE (string),
    ERROR_FULL_MESSAGE (string),
    ERROR_SHORT_MESSAGE (string),
};

Navigation
  navigationProps = {
    NAVIGATE_SWITCH_TITLE_ACTIVE_COLOR (string),
    NAVIGATE_SWITCH_TITLE_INACTIVE_COLOR (string),
    NAVIGATE_SWITCH_TITLE_FONT_FAMILY (string),
    NAVIGATION_POSITION (string),
    NAVIGATION_TOP_VALUE (string),
    NAVIGATION_MAX_HEIGHT (string),
    NAVIGATION_WIDTH (string),
    NAVIGATION_BACKGROUND_COLOR (string),
    CONTRACT_NAVIGATION_HEADER_COLOR (string),
    CONTRACT_NAVIGATION_CLAUSE_COLOR (string),
    CONTRACT_NAVIGATION_CLAUSE_HEADER_COLOR (string),
    CLAUSE_NAVIGATION_TITLE_COLOR (string),
    CLAUSE_NAVIGATION_TITLE_HOVER_COLOR (string),
    CLAUSE_NAVIGATION_EXPANSION_ARROW_COLOR (string),
    CLAUSE_NAVIGATION_EXPANSION_ARROW_HOVER_COLOR (string),
    CLAUSE_NAVIGATION_FILE_DELETE_COLOR (string),
    CLAUSE_NAVIGATION_FILE_DELETE_HOVER_COLOR (string),
    CLAUSE_NAVIGATION_FILE_ADD_COLOR (string),
    CLAUSE_NAVIGATION_FILE_ADD_HOVER_COLOR (string),
};

TemplateLibrary
  libraryPropsObject = {
    ACTION_BUTTON (string),
    ACTION_BUTTON_BG (string),
    ACTION_BUTTON_BORDER (string),
    HEADER_TITLE (string),
    SEARCH_COLOR (string),
    TEMPLATE_BACKGROUND (string),
    TEMPLATE_DESCRIPTION (string),
    TEMPLATE_TITLE (string),
};

All of these should be removed and we should instead rely on a strong system of structured class names. This will allow users to handle what these props currently do via overriding the CSS.
Related Issue:

https://github.com/accordproject/markdown-editor/issues/255

I would like to work on this.
Kindly assign this to me

I think it makes the most sense for the person working on the related issue to do this as well, @98lenvi

Ok

I'll start with markdown edito r#255, If the approach looks good, then I'll apply the same here as well.

Can I work on this issue @irmerk

This issue may be affected by the migration to Slate v0.57, so I'd hold off right now.

@98lenvi @kanav-raina @shakti97:
#357 (and accordproject/markdown-editor#297) has been finished, so there is no longer a blocker on this issue. The migration may have solved this issue, so look into that first.

@irmerk, Sorry about not responding earlier. I'll check and report by observations here.

I believe the ContractEditor portion of this issue is finished.

We should also keep potential collisions in mind, maybe prepend className with 'ciceroUI' or something.


Change TuxSuite targets

This series updates the targets that we call for TuxSuite, which will save us a little bit of work (maybe more for modules). See the individual commits for each change to understand the rationale.

Thanks for the review!


Implement elliptic curve trait for P-256

Basically - we need to find a good library that implement P-256 elliptic curve and implement with it the trait:
pub trait ECScalar<SK> {
    fn new_random() -> Self;
    fn get_element(&self) -> SK;
    fn set_element(&mut self, element: SK);
    fn from(n: &BigInt) -> Self;
    fn to_big_int(&self) -> BigInt;
    fn q(&self) -> BigInt;
    fn add(&self, other: &SK) -> Self;
    fn mul(&self, other: &SK) -> Self;
    fn sub(&self, other: &SK) -> Self;
    fn invert(&self) -> Self;
}

pub trait ECPoint<PK, SK>
    where Self: Sized{
    fn generator() -> Self;
    fn get_element(&self) -> PK;
    fn x_coor(&self) -> BigInt;
    fn y_coor(&self) -> BigInt;
    fn bytes_compressed_to_big_int(&self) -> BigInt;
    fn from_bytes(bytes: &[u8]) ->  Result<Self, ErrorKey>;
    fn pk_to_key_slice(&self) -> Vec<u8>;
    fn scalar_mul(self, fe: &SK) -> Self;
    fn add_point(&self, other: &PK) -> Self;
    fn sub_point(&self, other: &PK) -> Self;
    fn from_coor(x: &BigInt, y: &BigInt) -> Self;
}

any updates?

Hi!
Not really (sadly):  do you want to recommend on s good library or help?

There are many c libraries but haven't found a good pure rust library for this curve.


tool/update_tool: new tool to explore db updates

Db updates are tricky to review. This tools brings some utility
functions to try to simplify the process. It gives you access to 3
commands: Ls, Diff and Report
List the changed DB entry and know if the manifest or the image info was
updated easily. The tool also ignores by default the volatiles UUID so
you are not polluted by that during the review process.
Diff the changed files, either all of them one after the other or a
specific set given by the user. It will open a difftool (vimdiff by
default) to diff either the manifest or the image-info (or both if they
both changed).
Report the change as an ascii table with color codes (by default) or as
a github TODO list to be integrated within the github PR.
report generation
Terminal report

Github report

Listing changed DB entries

Diff all or a list of files

May I ask you for a quick example of the output? That would be very valuable to everyone having a look at this PR. :)

May I ask you for a quick example of the output? That would be very valuable to everyone having a look at this PR. :)

Good idea! I'll record my screen using it with peek and include the gifs inside the PR description and in the README also :)

@ondrejbudai I'll take a look later this morning, thanks.


Question: Does Perfview have support for source files  included via EmbedAllSources

Hi,
I logged this here, which might be the wrong place., adding here as well.
In addition to source link support, does perfview support getting source code from a dll where the source code has been embedded in the dll via EmbedAllSources? If not what might it take to include such support? I would like to take a look at that, if it does not support it.
In addition can it also find embedded pdb's?

@Xhanti, I have not done any specific work to support this, so I doubt that it does work.  Embedded PDBs might work, but I would need to test that.  I don't know what would be required to support either of these - first step here is likely an investigation.

Thank you

There is tooling to support reading Source Link information from symbols:
NuGet: https://www.nuget.org/packages/Microsoft.SourceLink.Tools/
Source: https://github.com/dotnet/sourcelink/tree/main/src/SourceLink.Tools

@pharring thank you for the response. We are forced to rely on embedded sources since we use an on premise gitlab instance and source link does not work for us without a proxy in the middle see (https://github.com/dotnet/sourcelink/issues/135) so we loading sources does not work us at the moment. VS does this right, so I was hoping perfview had support for it


PhantomJSSetup shutdown hook fails when source dir does not exist

[WARNING] PhantomJSSetup was unable to clean up temporary directories under: [D:\babun\.babun\cygwin\tmp\java-phantomjs]. Caused by:
java.nio.file.NoSuchFileException: D:\babun\.babun\cygwin\tmp\java-phantomjs\source-c8ec28df-6b5e-403b-9244-b0cdad298dad
        at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
        at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
        at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
        at java.nio.file.Files.delete(Files.java:1126)
        at com.moodysalem.phantomjs.wrapper.PhantomJSSetup$1.run(PhantomJSSetup.java:202)

The shutdown hoop attempts to delete these dirs:
Files.delete(PhantomJSConstants.TEMP_SOURCE_DIR);
Files.delete(PhantomJSConstants.TEMP_SCRIPT_DIR);
Files.delete(PhantomJSConstants.TEMP_RENDER_DIR);

But I'm not using PhantomJS.render(), only PhantomJS.exec(), so the source and render dirs are never created in the first place. And because the deletion of the source dir fails, the scripts dir does not get cleaned up either.

Would accept a PR for this. Just a check if those exist before deleting.

Could you make a 3.1.3 release?

I’ll have to do it next week, hope it’s not high priority for you.

Is this issue fixed? I am facing the same problem....

Sorry, still haven’t pushed a release. How does the problem manifest?
Sent from my iPhone

On Aug 28, 2018, at 7:11 AM, Jiri Stary<EMAIL_ADDRESS>wrote:
Is this issue fixed? I am facing the same problem....
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

I run this stuff from appplication server and i see multiple shutdown messages when the servers stops and an error like this:
2018-08-29 10:50:17,503 INFO  [stdout] (Thread-145) Shutting down PhantomJS instance
2018-08-29 10:50:17,504 INFO  [stdout] (Thread-144) Shutting down PhantomJS instance
2018-08-29 10:50:17,504 INFO  [stdout] (Thread-149) Shutting down PhantomJS instance
2018-08-29 10:50:17,504 WARN  [com.moodysalem.phantomjs.wrapper.PhantomJSSetup] (PhantomJSSetupShutDownHook) PhantomJSSetup was unable to clean up temporary directories under: [C:\Users\jstary\AppData\Local\Temp\java-phantomjs]. Caused by: : java.nio.file.NoSuchFileException: C:\Users\jstary\AppData\Local\Temp\java-phantomjs\source-7485e9db-421f-4d7e-b5a2-35ff816ef5d7
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at com.moodysalem.phantomjs.wrapper.PhantomJSSetup$1.run(PhantomJSSetup.java:202)
2018-08-29 10:50:17,509 INFO  [stdout] (Thread-148) Shutting down PhantomJS instance
2018-08-29 10:50:17,509 INFO  [org.jboss.as.server] (Thread-2) WFLYSRV0220: Server shutdown has been requested via an OS signal
2018-08-29 10:50:17,511 INFO  [stdout] (Thread-142) Shutting down PhantomJS instance
2018-08-29 10:50:17,528 INFO  [com.gemalto.ics.rnd.pm.wildfly.cluster.HASchedulerSingletonService] (MSC service thread 1-2) This node [standalone-PM] should not provide singleton services anymore.
2018-08-29 10:50:17,533 INFO  [stdout] (Thread-150) Shutting down PhantomJS instance
2018-08-29 10:50:17,535 INFO  [stdout] (Thread-147) Shutting down PhantomJS instance
2018-08-29 10:50:17,537 INFO  [stdout] (Thread-146) Shutting down PhantomJS instance
After reading this error report i created a workaround - basically i create these folders by hand at server startup
            Path directory1 = Files.createDirectories(PhantomJSConstants.TEMP_SOURCE_DIR);
            Path directory2 = Files.createDirectories(PhantomJSConstants.TEMP_SCRIPT_DIR);
            Path directory3 = Files.createDirectories(PhantomJSConstants.TEMP_RENDER_DIR);

And then some cleanup logic at the end to get rid of these empty directories in \java-phantomjs
otherwise there will be a lot of empty directories in there - i just mark everything in these dirs as deleteonexit()

Oh and if i apply the workaround then there is only one message saying PhantomJS is shutting down

I release 3.1.3 which is supposed to fix this


docs: fix the type and docs of Operation.message field

Refs #588

All requested changes here have been processed.

Pinging here. Is there anything I can do to move this PR forward?

@char0n it renders strange

@derberg can you be more specific what's strange about it? This type signature reflects exactly what the field allows in AsyncAPI 2.2.o spec. I agree it looks complex, but that's what spec currently allows.
Here a comment from @fmvilas that confirms it: https://github.com/asyncapi/spec/issues/588#issuecomment-886812393

oh crap, you are right, immediately when I look at it, my brain tells me that formatting is broken, but you are rights, it is actually correct 😅
@fmvilas you requested changes so you need to approve to get it merged

/rtm


Detect if music is playing

Hi,
I was wondering if there was any chance for other scripts running on the pi to detect wether Music is beeing played or not. My goal is to run a command as soon as msic is beeing played and run another command as soon as I disconnect my spotify off the raspotify.

Add "--onevent /path/to/your/script" to librespot options
e.g.:
---------------8<----------------------
#! /bin/bash
logger $PLAYER_EVENT
logger $TRACK_ID
-------------->8----------------------------
$PLAYER_EVENT can be start|change|stop

Hi
First thanks for your job, this tool is nice.
Like @fankijo I was wondering if I can run a python script (to turn on my hifi system) as soon as I start playing music on my raspberry pi.
@olafWal seems to have an idea about it but I can't figure his answer out.
Any help is welcome. Thank you for that.

Hi @fankijo !
Did you manage to run a script when the music is played ?
Thanks


istio1.8.1 two envoyfilter configruation confilict with each other

(NOTE: This is used to report product bugs:
To report a security vulnerability, please visit https://istio.io/about/security-vulnerabilities
To ask questions about how to use Istio, please visit https://discuss.istio.io)
Bug description
istio 1.8.1
I have two envoyfilters affect on enovy.http_connection_manager, one is for HTTP_FILTER, the other is for NETWORK_FILTER, once I apply NETWORK_FILTER and HTTP_FILTER together, the HTTP_FILTER will be reset to default.
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[x ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
Expected behavior
Both HTTP_FILTER afftect delayed_close_timeout inside HttpConnectionManager  and  envoy.filters.http.local_ratelimit could take into effect.
Steps to reproduce the bug
[local-ratelimit-filter.yaml]
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: ratelimit-http-local
spec:
workloadSelector:
labels:
¦   io.kompose.service: backend-welink
configPatches:
- applyTo: HTTP_FILTER
¦ match:
¦   context: SIDECAR_INBOUND
¦   listener:
¦   ¦ name: virtualInbound
¦   ¦ filterChain:
¦   ¦   name: <IP_ADDRESS>_8123
¦   ¦   filter:
¦   ¦   ¦ name: envoy.http_connection_manager
¦   ¦   ¦ subFilter:
¦   ¦   ¦   ¦ name: "envoy.filters.http.router"
¦ patch:
¦   operation: INSERT_BEFORE
¦   value:
¦   ¦ name: envoy.filters.http.local_ratelimit
¦   ¦ typedConfig:
¦   ¦   "@type": "type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit"
¦   ¦   stat_prefix: http_local_rate_limit
[backend-filter.yaml]
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: backend-nodelay
spec:
workloadSelector:
¦ labels:
¦   ¦ io.kompose.service: backend
configPatches:
- applyTo: NETWORK_FILTER
¦ match:
¦   context: SIDECAR_INBOUND
¦   listener:
¦   ¦ name: virtualInbound
¦   ¦ filterChain:
¦   ¦   name: <IP_ADDRESS>_8123
¦   ¦   filter:
¦   ¦   ¦ name: envoy.http_connection_manager
¦ patch:
¦   operation: MERGE
¦   value:
¦   ¦ name: envoy.http_connection_manager
¦   ¦ typedConfig:
¦   ¦   "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
¦   ¦   delayed_close_timeout: "0"
Apply these two filters seperately, after applied local-ratelimit-filter.yaml, use istioctl pc listeners xxxx --port 15006 -o json, you will find the local_ratelimit shows inside <IP_ADDRESS>_8123 filter, then apply backend-filter.yaml, you will find delayed_close_timeout will be shown, but local_ratelimit configuration will disappeared.
Version (include the output of istioctl version --remote and kubectl version --short and helm version --short if you used Helm)
1.8.1
How was Istio installed?
Environment where the bug was observed (cloud vendor, OS, etc)
Additionally, please consider running istioctl bug-report and attach the generated cluster-state tarball to this issue.
Refer cluster state archive for more details.

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: ratelimit-http-local
spec:
  workloadSelector:
    labels:
        io.kompose.service: backend-welink
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          name: virtualInbound
          filterChain:
            name: <IP_ADDRESS>_8123
            filter:
              name: envoy.http_connection_manager
              subFilter:
                  name: "envoy.filters.http.router"
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.local_ratelimit
          typedConfig:
            "@type": "type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit"
            stat_prefix: http_local_rate_limit
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: backend-nodelay
spec:
  workloadSelector:
    labels:
      io.kompose.service: backend
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          name: virtualInbound
          filterChain:
            name: <IP_ADDRESS>_8123
            filter:
              name: envoy.http_connection_manager
      patch:
        operation: MERGE
        value:
          name: envoy.http_connection_manager
          typedConfig:
            "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
            delayed_close_timeout: "0"

same config, properly format for reproduction

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: ratelimit-http-local
spec:
  workloadSelector:
    labels:
        io.kompose.service: backend-welink
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          name: virtualInbound
          filterChain:
            name: <IP_ADDRESS>_8123
            filter:
              name: envoy.http_connection_manager
              subFilter:
                  name: "envoy.filters.http.router"
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.local_ratelimit
          typedConfig:
            "@type": "type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit"
            stat_prefix: http_local_rate_limit
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: backend-nodelay
spec:
  workloadSelector:
    labels:
      io.kompose.service: backend
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          name: virtualInbound
          filterChain:
            name: <IP_ADDRESS>_8123
            filter:
              name: envoy.http_connection_manager
      patch:
        operation: MERGE
        value:
          name: envoy.http_connection_manager
          typedConfig:
            "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
            delayed_close_timeout: "0"

same config, properly format for reproduction

replace envoy.http_connection_manager with envoy.filters.network.http_connection_manager and it will work. It should work as is ,but that is the workaround until we fix it

replace envoy.http_connection_manager with envoy.filters.network.http_connection_manager and it will work. It should work as is ,but that is the workaround until we fix it


Can DisplayLink connected monitors work?

Not really an issue. More of a question. Is there any hope for monitors connected via DisplayLink drivers to an M2 Air?
I have two external monitors and m1ddc works great from my work M1 Pro MBP (directly connected).
But on my private M2 Air sitting beside with DisplayLink and the two monitors connected via a Dell DS6000 hub then m1ddc does not seem to see any monitors at all. I assume it is the DisplayLink which seems to be a really weird beast?

I am afraid it won't work. DisplayLink might implement a custom API for DDC control but currently this feature is not available on the mac. DisplayLink screens are seen as virtual screens (like a Sidecar display or a BetterDisplay dummy display) in macOS.


Faster storage tests and benchmarks

The storage benchmarks and the test_ledger_validation test are currently very slow to execute due to the low deserialization speed of the 1k test blocks. This PR takes advantage of the Storage::import functionality paired with a storage dump at 1k blocks that allow the aforementioned tests and benchmarks to run much faster, making test_ledger_validation viable for running automatically, as opposed to being #[ignore]d (as is the case right now).

Rebased.

Rebased; also, for the reference, below is a comparison between the current setup time of the lookups benchmark and the improvement this PR provides:
before: 243.67s
after:  788.48ms

After some additional benchmarking, the extra commit https://github.com/AleoHQ/snarkOS/pull/1641/commits/5de93fcfe1d4d62d228e3a23e108573df761a27c was found to improve the performance of storage operations.


Upgrading gradle wrapper to 7.4.2

Added in guide on how to update gradle wrapper in the feature

@navikt/klage


[Feature] Toggable Hide "Runes" word on journal Headers

A way to toggle the word "Runes" on the header of the journal. There are quite a few mods that add to the header and end up cluttering it.

Added on the next version.

Much appreciated.


Add concrete usage examples to docs

Note: This is still heavily work-in-progress, not worth reviewing yet.
Each subcommand currently has a help and a documentation subcommand. This change adds concrete usage example to every subcommands documentation subcommand.

It might be useful to split the examples into a separate string so we are flexible with regards to rendering that stuff.

It might be useful to split the examples into a separate string so we are flexible with regards to rendering that stuff.

Note that this would have implications for our docs pipeline, too. Currently, the documentation is read from Markdown files in the docs/cli subdirectory. Expanding this can obviously be done, but we need to be aware that this would increase the amount of necessary work that goes into this.

Note that this would have implications for our docs pipeline, too. Currently, the documentation is read from Markdown files in the docs/cli subdirectory. Expanding this can obviously be done, but we need to be aware that this would increase the amount of necessary work that goes into this.

Yeah, I forgot about that. In that case let's not incur that overhead on ourselves until we have need for it. I also think that it might be more appropriate to keep the documentation in one .md file for each command and use suitable tools to work with them.

[ch14389]

As a general comment, the current documentation seems to rely quite heavily on the presence of a markdown post-processor. This can make the terminal output very cluttered, where the raw markdown is being printed.
I think the readability could be improved a lot for this use case by staying a bit closer to how e.g. manpage look like, while still having valid markdown. As a quick mock-up:

This doesn't need to be changed as part of this PR, but I think something good to keep in mind in the longer term.

@lava does the [x] style of link creation work with most Markdown processors? It's a different style of linking that seems more appropriate for plain ASCII, LaTeX, etc. I think the goal should be to create the right markup, so that we can embed it at http://docs.tenzir.com. If someone finds the markup too much in the way, it's easy to just pipe the output to mdv. I'd rather have GFM-style code highlighting than optimizing for readability of a subset of Markdown.

For the code snippets, if we indent with 4 spaces instead of using triple backticks we get no highlighting on the documentation page.
For the links we can do this:
Some [text with a link][some-slug].

[some-slug]: https://some.url

@mavam I'm not sure that piping to mdv enhances the output:

Is this a modified version of the docs or the one with footnote-style links? It looks like the latter, but my point was that regular links, as well as using triple-backticks for code, doesn't sacrifice readability when piping to mdv and friends.

@mavam This is the original version of the docs, i.e. the left-hand side in the first picture. The right-hand side version actually looks reasonably well when piped through mdv, although still worse than the raw text because the code block is lost as well.
Ironically, mdv seems to convert links to use out-of-line definitions by default, probably that's why it looked similar to the modified version to you. (i'm using the latest mdv installed via pip3 install mdv)

I know it's been almost half a year since we dropped this for other stuff, but it's finally ready for review.
Note that I've removed some of the options listing from the explore command, since that is mirrored in the helptext already.

When did you choose to document the respective short options? Sometimes you write "--node / -N" and sometimes you only use the long version.

I've moved to using long options everywhere.


docs: imports update

Refactored imports from langchain to langchain_community whenever it is applicable

cc @baskaryan do we not recommend using the flat namespace in langchain community for convenience? are we worried about parsing times?

@leo-gan let's double check with @baskaryan. My suspicion is that we were worried about the issue being with langchain since that's a main entry point and had import times of 1.5-2 seconds (which is too slow for serverless environments). It's much less of an issue these days since folks can easily optimize by using dedicated party integrations + core + langchain
The remaining change that we need to make is to make langchain stop depending on community

@eyurtsev I don't use the flattened namespace. Should it be a problem?
Most of the refactoring is moving dependencies from langchain to langchain_community. The latter dependencies are not flattened. I thought the flattened namespaces were a problem in the old langchain because of the large number of unrelated integrations under these flattened ns. Is that correct?

@eyurtsev

The remaining change that we need to make is to make langchain stop depending on community
I didn't find any dependency in the current langchain code base. Only references to the moved classes. Do you mean something else?

@eyurtsev I flattened the imports.
CC @baskaryan
TODO The current flattening method in memory/__init__.py is not ready yet!

[tool.poetry.dependencies]
python = ">=3.8.1,<4.0"
langchain-core = ">=0.1.29,<0.2"
langchain-text-splitters = ">=0.0.1,<0.1"
langchain-community = ">=0.0.25,<0.1"

poetry file still has langchain-community in it, so something likely requires it? (Maybe I'm wrong i haven't worked on the migration much)
If it's just the init files we could probably turn langchain-community into an optional dependency


docs: Updated backend docs

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
see 2 files with indirect coverage changes


Create and test Windows developer and user setups

Create and test setups on Windows 10 and write the documentation.

Accidentally re-opened. Should be closed already.


DDC async* bug - another flavor with more awaits

I'm hitting another variant of this bug:
https://github.com/dart-lang/sdk/issues/39994
It only reproduces for me on web / DDC.
Expected output (just running in dart on the console works correctly):
Hello, World 1!
Hello, World 2!
[hello, hello]

Output when running a flutter web debug app on chrome:
Hello, World 1!

Relevant code portion:
  Stream<String> testStream(String test) async* {
    yield test;
    try {
      await testFunction1();
      yield test;
    } catch (e) {
      print('Hello, World 1!');
      await testFunction2();
      print('Hello, World 2!');
      yield test;
    }
  }

  Future<String> testFunction1() async {
    throw Exception("test");
  }

  Future<String> testFunction2() async {
    return "foo";
  }

void main() async {
  var stream = testStream("hello");
  print(await stream.toList());
}

My version info:
> dart --version
Dart VM version: 2.9.0-14.1.beta (beta) (Tue Jun 9 10:52:57 2020 +0200) on "windows_x64"
> flutter --version
Flutter 1.19.0-4.3.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 8fe7655ed2 (3 weeks ago) • 2020-07-01 14:31:18 -0700
Engine • revision 9a28c3bcf4
Tools • Dart 2.9.0 (build 2.9.0-14.1.beta)

Tagging @vsmenon @Markzipan since they seemed involved in the related bug, in case they weren't aware of this one.  It's pretty frustrating to hit this and it makes debugging flutter web code a huge pain.

Thanks for finding this - checking this out now. Making the web's async semantics consistent is on our roadmap, so this is another data point to escalate its priority.

fyi - @sigmundch

any update on this?

Sorry about the delay, Max. These discrepancies with DDC's async generator are on our radar, but we've been prioritizing other items at the moment. I'll resume fiddling here soon.


patch: Fix endpoint /docs/service.swagger.json

Lines Of Code

Language
Files
Lines
Code
Comments
Blanks
Complexity
Bytes

Go
14 (+1)
949 (+10)
653 (+5)
104 (+3)
192 (+2)
93 (+2)
22.6K (+178B)

Unit Test Coverage
total:							(statements)			63.4%
changed lines: (statements) 0.0%, coverage is less than 90.0%, consider testing the changes more thoroughly
Coverage of changed lines

File
Function
Coverage

Total

0.0%

handler.go

0.0%

handler.go:37
NewRestAPIDocsHandlers
0.0%

testdata/static.go

no coverage

Coverage diff with base branch
No changes in coverage.

Go API Changes

# summary
Inferred base version: v0.4.2
Suggested version: v0.4.3


Latch Inference while synthesizing Spatz

Hi
I tried synthesizing Spatz using Synopsys DC, but it is inferring latches for automatic variables defined in conditional code, which is a coding style used in multiple modules.
Here is an example:
always_comb begin
  sig_o = '0;
  if (sig1_i) begin
    automatic logic pnt;
    pnt = sig2_i;
    sig_o = pnt + 1'b1;
  end
end

In this code, pnt is just a name, and we can just use sig_o = sig2_i + 1. This is similar to how a VHDL variable might be used for readability. But DC thinks it is a latch.
Is there some special settings in DC that are necessary for synthesizing Spatz without inferring latches?

Hi,
My best guess is that this snippet is intended for low-power optimization
compared to a flip-flop implementation. Therefore, if you cannot utilize it
effectively, consider replacing it with an implementation akin to that of a
flip-flop, for example:
always_ff @(posedge clk) begin
if (!rst_n) begin
sig_o <= '0;
end else if (sig1_i) begin
sig_o <= sig2_i + 1'b1;
end
end
You must ensure that this snippet provides the same functionality as your
intended design.
BR,
Gabriel Villanova NM
On Mon, 25 Mar 2024 at 13:40 Abdullah Allam @.***>
wrote:

Hi
I tried synthesizing Spatz using Synopsys DC, but it is inferring latches
for automatic variables defined in conditional code, which is a coding
style used in multiple modules.
Here is an example:
always_comb begin
sig_o = '0;
if (sig1_i) begin
automatic logic pnt;
pnt = sig2_i;
sig_o = pnt + 1'b1;
end
end
In this code, pnt is just a name, and we just do sig_o = sig2_i + 1.
This is similar to how a VHDL variable might be used for readability. But
DC thinks it is a latch.
Is there some special settings in DC that are necessary for synthesizing
Spatz without inferring latches?
—
Reply to this email directly, view it on GitHub
https://github.com/pulp-platform/spatz/issues/12, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHVQ4FOQRM2EWN4ZLXOYRTTY2BHOXAVCNFSM6AAAAABFHLGASOVHI2DSMVQWIX3LMV43ASLTON2WKOZSGIYDMMJZGI3TCMY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hello @Abdullah-Shaaban, can you please point us to the real occurrences in the codebase? I assume that the one you reported is just a toy example. And I confirm that the only latches intended in the vector architecture are in its VRF

Hi @mp-17 . Yes the example I provided was for illustration. Here is one part of the code from line 427 in spatz_vfu.sv
        if (vrf_rvalid_i[0] && vrf_rvalid_i[1]) begin
          automatic logic [idx_width(N_FU*ELENB)-1:0] pnt;

          reduction_operand_ready_d = 1'b1;
          reduction_pointer_d       = reduction_pointer_q + 1;
          reduction_state_d         = Reduction_Reduce;

          // Request next word
          pnt = reduction_pointer_d << int'(spatz_req.vtype.vsew);
          if (!(|pnt))
            word_issued = 1'b1;
        end

This if statement is inside an always_comb block. The variable pnt is declared and used only inside this condition.

I would say it is weird that pnt is synthesized as a latch, as its scope is limited to that block of code. Even if it's interpreted as a latch, its output should not propagate anywhere and I would expect the latch to be simplified away. Do you see the latch from the elaboration report? I will also check, and we can definitely change that code snippet

Referring to the example code, I suspect that DC interprets the code as similar to this:
logic pnt;

always_comb begin
  sig_o = '0;
  // missing default initialization of pnt
  if (sig1_i) begin
    pnt = sig2_i;
    sig_o = pnt + 1'b1;
  end
end

which in turn results in the creation of a latch for pnt. Clearly, this is a problem in the synthesis tool, but in general, it is also this coding style that gets exposed to such issues.
I usually suggest refraining from coding always_comb procedural blocks that are too bloated and complicated with many nested conditions.
It is almost invariably better (although less "software-like" and so somewhat less intuitive) to split them into multiple blocks that can be immediately "mapped" to MUXes and other logic.

@mp-17. The elaboration of spatz_vfu ends with the following warning:

Netlist for always_comb block contains a latch. (ELAB-974)
This refers to the block where pnt is used. Actually, two latches are inferred in this always block, one for each time pnt is coded with that style. Similarly, other automatic signals that are used in a similar way in the decoder, for example, are inferred as latches.
@FrancescoConti. I agree that pnt should not describe a latch given that its scope is limited to the if statement, but this is why I was asking about maybe a setting in DC that avoids this. It seems a general problem.

@Abdullah-Shaaban, we can modify those lines just to be on the safe side.
However, I checked with both Fusion and Spyglass and no latch is reported. Which version of DC are you using?
If you can provide a list of all the lines of code that generate a latch during elaboration with your DC, we can address all the problems at once.

Hi @mp-17
I have looked carefully into the Verilog netlist, and it seems that even the warning is still there, there are no latch cells instantiated (cells with LAT* in their name) for the particular parts of the code where the warning occurs. Therefore, I believe the warning is a false alarm.
It indeed seems just a tool problem (also depending on the settings). Verilator does have a similar issue with this coding style.
I guess the issue can be closed.


[ANTLR] Some nullable types are inheritable.

There are several places where typeNotVoidNotFunction makes it possible for nullable types to be extended/mixed-in/implemented or be part of a mixinApplication.
It looks like extending nullable types is not intended to be supported and is a compile-time error because the following does not compile:
//   A class can't extend a nullable type.
//                vvvvvvvvv
class Foo extends Function? {}

I think there is a simple adjustment that would allow the grammar to specify that some places don't expect nullable types by making them a syntax error i.e. by replacing the typeNotVoidNotFunction where nullable types are not expected with one that does not have trailing questionmarks.
I found the following places that look like they are not intended to expect nullable types:
https://github.com/dart-lang/sdk/blob/6c7f3ab27d68268dcbe34cbb805b324094fe508d/tools/spec_parser/Dart.g#L557-L559
https://github.com/dart-lang/sdk/blob/6c7f3ab27d68268dcbe34cbb805b324094fe508d/tools/spec_parser/Dart.g#L411-L415
and via typeNotVoidNotFunctionList
https://github.com/dart-lang/sdk/blob/6c7f3ab27d68268dcbe34cbb805b324094fe508d/tools/spec_parser/Dart.g#L398-L400
https://github.com/dart-lang/sdk/blob/6c7f3ab27d68268dcbe34cbb805b324094fe508d/tools/spec_parser/Dart.g#L394-L396
https://github.com/dart-lang/sdk/blob/6c7f3ab27d68268dcbe34cbb805b324094fe508d/tools/spec_parser/Dart.g#L389-L392
The LaTeX-based spec seems to mirror the behavior of the ANTLR-based spec (unless it specifies that this is not allowed in natural language). See: typeNotVoidNotFunction and e.g. superclass

There is already a compile-time error for this here. Note that the type T? may be specified explicitly, and it may also be defined via one or more type aliases:
class A {}
typedef MaybeA = A?;
class B extends MaybeA {} // Error.

Hence, we wouldn't be able to catch more than a subset of these situations if we were to express the constraint in the grammar, and then we would still have to have the compile-time error that we have today (that is, a compile-time error which is not a syntax error). So, in this case it isn't useful to change the grammar.

I agree with you. I think we just have different points of view (and I think both are valid) which are:

Do those places accept actual types or
Do those places accept constructs that refer to some declarations (that just so happen to look like types).

You seem to favor the first point of view, I'm suggesting that we should take the second point of view.

Another thing worth considering is that the exceptions for void and for function types

and for record types. Only type references and a function literal are left.
The function literal there is deprecated: deprecated_subtype_of_function and once 'Function's have been removed from being supported in those places, we will be able to simplify typeNotVoidNotFunction even further to e.g.:
typeReference : typeName typeArguments?

That's why I think the second point of view will make things slightly simpler here and should be preferred.
(Of course, implementations of the spec could choose to accept full types and not just typeReferences for e.g. error recovery purposes)

and there is no good reason for having those exceptions in the grammar, given that they must again be enforced using a non-syntax compile-time error as well.

With the proposed changes, the enforcement will need to happen on what typeReference refers to, and not the construct that does the actual referencing because it would no longer be a type that needs to be validated, but a reference. And guaranteed to be correct by the grammar (i.e. definitely no ?).

Closed via #51742


Adds HTMLCanvasElement as possible value for pointStyle option in the documentation

Fixes #9457

Maby instead of specifying the htmlcanvaselement it might be better to place a reference to all the kind attributes the drawImage method accepts since it also accepts videoElements and offscreenCanvasElements for example

@LeeLenaleee good point! But please forgive my poor knowledge of javascript.
In helper.canvas.js there is a check about the object type which is passed:
https://github.com/chartjs/Chart.js/blob/b32fb48574e52e31e7fc129d0ac7c25310323f95/src/helpers/helpers.canvas.js#L132-L142
and I think only HTMLCanvasElement and HTMLImageElement are allowed.
Am I wrong?

No seems like it's my bad, should have looked up code first, somehow I just thought it would get passed along and just accept anything the drawImage accepts


undefined reference to `backtrace' on Alpine Linux

Hi @chronoxor Thank you for providing us this library.
But unfortunately got issue when compiling under alpine (using Docker):
nginx:stable_alpine
https://hub.docker.com/layers/library/nginx/stable-alpine/images/sha256-5bc90c961f2ef45c7ed6057e5c55e09d5f6b700a9d2e7e824c5e3709f329a61d?context=explore
I have install libexecinfo-dev so it has execinfo.h
but:
in function CppCommon::StackTrace::StackTrace(int)': stack_trace.cpp:(.text+0x419): undefined reference to backtrace'

is there any solution for building under alpine ?
Thank You very much

It seems it is a known Alpine Linux issue - Backtrace not available within Alpine containers #1904. For this system StackTrace should be implemented using libunwind.
Due to lack of time not sure if this will be fixed soon, but properly implemented PR is welcome.


Rework ProtobufGeneratedMessageRegisterFeature

Rather than registering subclasses of various Protobuf message classes,
registering the nested classes within key Protobuf classes seems
sufficient.  Also, this can all happen once, before analyis, rather than
during analysis, which requires the cache.
Also, rework AkkaActorRegisterFeature to setup a
registerSubtypeReachabilityHandler in "beforeAnalysis", which also drops
the need for a cache.
Finally, drop a few more manual config points, which I was experimenting
with initialising on build (an abandoned approach) and seemingly turned
out not to be necessary anyways.
Fixes #295

@dwijnand Cool—how does this affect native-image memory usage and/or build time?

It's about the same.

Should also work with the graal upgrade on master. Native image integration test running in CircleCI is enabled on branches now, so that will test it too.

Green build in CircleCI: https://circleci.com/gh/cloudstateio/cloudstate/340


Feature request - Show Album Artists rather than Artists

Due to compilations or an album that have songs with multiple artists, I find that "Artists" isn't a particularly useful way of browsing a media collection. Instead, "Album Artists" (for me) provides the expected browsing experience.
Could there be an option in the client to toggle between the two?

Yeah, that's a good idea. I'll implement that


Implementing Striving for Simplicity: The All Convolutional Net in Tensorflow: results on the test set lower than expected

I posted this issue with my code on stackoverflow a while ago but it has not received any answer or comment.
The preprocessing I used is in the dataset class (that I adapted from the Deep MNIST for experts tutorial) and is exactly the same as in the neon/pylearn2 implementation: calculating the mean and Wzca matrix on training set and use it to whiten the data on the training and test set followed by a global contrast normalization step with Goodfellow scale factor of 55.
The only difference of my implementation according to me (I would like to be mistaken) with the paper is the use of tf.reduce_mean instead of tf.reduce_sum (which led me to exploding ReLU grad).
So I divide the weight decay by a factor batch_size to keep the change.
With this I got up to 85.something% on the test set instead of the 91% claimed by the authors.
Do you see something wrong immediately ? For instance I feel the weight decay part of the cross entropy is ugly but I could not find any better way of doing that. Do you have some ideas ?
If you think that this is not an appropriate place for my question tell me I will remove it but I do not know where to look.

This is a place to post bugs with the software and not problems with particular implementations.
You yourself stated that you did not follow the paper properly, why are you surprised at getting different results?
Also the weights may have been initialized poorly (or due to a bad training rate) leading to many dead neurons (ReLU's that will never respond with anything other than 0 to the entire training data manifold), no one here will spend time debugging your model for you. If you can't do it then the best course of action is to learn.

As the now-deleted-comment suggested, this type of detailed debugging is likely out of scope for GitHub -- you may get better help on StackOverflow or such.


Incompatible with react-svg-loader?

Hi!
First off, thanks for a great plugin!
When I added it to our React/TypeScript project I got errors on our imports of svg files. The error was this:
Module parse failed: C:\path\node_modules\react-svg-loader\lib\loader.js!C:\path\src\Icon\glyphs\ic_exit_to_app_24px.svg Unexpected token (4:11)
You may need an appropriate loader to handle this file type.

As you can see we're using react-svg-loader to turn a pure svg file into a React component. I read in some other issue here that all plugins/loaders aren't supported (which is reasonable). Is this why we're getting the error? Is there any other info I could provide that would be helpful?
If the issue here is that react-svg-loader is incompatible with hard-source-webpack-plugin then what makes it incompatible? Perhaps I could open a PR to react-svg-loader.

@andersekdahl I assume you are referring to issue #72. That issue is just listing all the webpack first-party plugins and loaders and making sure hard-source has tests for all of them. Many tests have yet to be written but doesn't explicitly mean that those plugins and loaders will not work. Most loaders should just work and many plugins as well.
In regards to react-svg-loader can you make a minimal repo on github that creates this error? That'd help me a lot in making a regression test and any needed fixes.
I took a look at the loader and nothing stands out to me as something that would fail with hard-source. So it'll be up to a failing minimal repo to figure it out.
By the way thank you for opening this issue.

This error is a little odd in regards to hard-source. Normally you wouldn't get that error from hard-source as it caches an already built module and doesn't pass it back through the same process. It shouldn't have the opportunity to create that error. I could totally be overlooking something as well. Hmm.

Having fixed #149, I think this relates to a similar issue. hard-source-webpack-plugin also caches how most modules and their loaders are resolved. The loaders list probably isn't being thaw'd correctly leaving webpack to build a module without the loader.


fix connection refused error check

Codecov Report

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

@@            Coverage Diff             @@
##           master      #80      +/-   ##
==========================================
+ Coverage   68.57%   69.01%   +0.43%
==========================================
  Files           7        7
  Lines        3415     3415
==========================================
+ Hits         2342     2357      +15
+ Misses        845      824      -21
- Partials      228      234       +6

Impacted Files
Coverage Δ

consul/client.go
71.96% <ø> (+7.57%)
:arrow_up:

consul/kv_consul.go
71.72% <0%> (-0.73%)
:arrow_down:

etcd/v3/kv_etcd.go
67.14% <0%> (-0.41%)
:arrow_down:

etcd/v2/kv_etcd.go
68.4% <0%> (+0.65%)
:arrow_up:

Continue to review full report at Codecov.

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


Calculus nodes

Description

[x] I've included a concise description of what each node does

Styleguide

[x] My node adheres to the styleguide for Flojoy nodes

Docs

[x] I've submitted a PR for a documentation page for the new node(s) that contains usage examples (see docs.flojoy.io)

hey @JeffDotPng I see you requested changes. Have those changes been addressed? Can we push this PR?


Add copy button to code display in blog posts

https://sdouglas.github.io/lr-notebook/projects/lr-notebook/2016-08-26/
https://stackoverflow.com/questions/41306797/html-how-to-add-line-numbers-to-a-source-code-block

can use highlightJS (hljs)

look at pre elements used in this page: https://clipboardjs.com/


[FEAT] tspcontrol: suspend input/output plugins

Is your feature request related to a problem?
That's part of the tsp command that I'm using:

tsp --bitrate <bitrate> -I null ... -P mpeinject --local-address ... -O srt <remote-address>:<port>

And the objective of this command is quite simple: I want to use TSDuck to encapsulate some RTP streams inside a TS that will be sended to a remote server using the SRT protocol.
However, I want to control this processing from an external orchestrator. As here the TS with the encapsulated data will work as a tunneller. Then I have defined these STATES for the TSP process:

RUNNING: When encapsulating the RTP streams inside the TS and sending it over the SRT connection.
ACTIVE: When the SRT is stablished (the output plugin is "on") but no packets are created (the input plugin is "off").
IDLE: When all plugins are "off", but the entire TSDuck chain is instantiated and the process is active and not running.

So, my idea is quite simple: when the orchestation starts the tsp process is launched and it pass to the IDLE state. Then at some point it receives a message to pass to ACTIVE, waiting for the point to start for streaming when receiving the RUNNING message. Futhermore, multiple status changes are possible between IDLE<-->ACTIVE<-->RUNNING until at some time the orchestrator will stop/kills the process.
Proposed solution:
Two issues limits this use of the tsp process with the tspcontrol tool:

The Input plugin can't be suspended. So I suggest to add the funcitonality to interrupt it and flush all packets until they arrive to the output (or optionally clear all packets). After that the entire processing chain pass to an idle o sleep mode, until the input plugin is restarted.
The Output plugin can only be "on" or "off", but not in "prepared" state. So I suggest to add a third state that indicates: "the plugin is ready, but not accepting/passing packets".

Alternatives:
The only alternative is to instantiate/kill the entire tsp process from the orchestrator. But this generates a huge overhead if you start/stop in small periods. So it's preferable a more fine-grained control.
Additional information:
I hope these enhancements can be implemented without huge changes in the architecture and/or the source code.

The Input plugin can't be suspended. So I suggest to add the funcitonality to interrupt it and flush all packets until they arrive to the output (or optionally clear all packets). After that the entire processing chain pass to an idle o sleep mode, until the input plugin is restarted.

In the current implementation, the input plugin cannot be suspended for a reason: there is no unique satisfactory definition of "suspending" the input plugin. Several alternatives were considered and none was without trouble:

Stop reading packets. Problem: connection-oriented plugins would block the source with potential cascading effects.
Continues reading packets but dropping them. Problem: CPU-bound input plugins (generators) or disk-bound plugins (files) would saturate the CPU and/or the disk.
Stop the input plugin and restart it later. Problem: off-line sources such as files would restart at the beginning with is not the definition of suspend / resume.

The actual issue is that the input plugin is the one which creates the tempo. Other plugins just see the passing packets and may ignore them without affecting the whole process.

The Output plugin can only be "on" or "off", but not in "prepared" state. So I suggest to add a third state that indicates: "the plugin is ready, but not accepting/passing packets".

When the output plugin is suspended, it is ready (started, opened or initialized whatever needs to be) but does not accept packets (they are dropped).

Hi @lelegard ,
Thank you for your response. I comment the two topics in reverse order:

The Output plugin can only be "on" or "off", but not in "prepared" state. So I suggest to add a third state that indicates: "the plugin is ready, but not accepting/passing packets".

When the output plugin is suspended, it is ready (started, opened or initialized whatever needs to be) but does not accept packets (they are dropped).

That's de current behaviour... all incoming packets to the output are dropped. However, what I need is the control over the "connected" and "disconnected" states of the output. In this case the SRT output. To understand what I request, please think on an hypotetical HTTP output plugin (non existent at time) to illustrate the use case. This output plugin can listen for incoming TCP connections, and when some client connects it acts as a simple HTTP server that to any request responds with an infinite data streaming with a MIME type video/MP2T. And the streaming data are the TS packets of the chain. And if more than one client connects, they receive a copy of the same packets. Until now you can see that this HTTP output plugin can be "listening" for incoming connections or not. The first is the "on" state and the second the "off" state, with independence of the running status of the chain. If you extrapolate this example to the SRT output plugin, what I want is to control the "connection status" of the SRT protocol. That's all.

In the current implementation, the input plugin cannot be suspended for a reason: there is no unique satisfactory definition of "suspending" the input plugin. Several alternatives were considered and none was without trouble:

Stop reading packets. Problem: connection-oriented plugins would block the source with potential cascading effects.
Continues reading packets but dropping them. Problem: CPU-bound input plugins (generators) or disk-bound plugins (files) would saturate the CPU and/or the disk.
Stop the input plugin and restart it later. Problem: off-line sources such as files would restart at the beginning with is not the definition of suspend / resume.

Before writing my request I feel that this will be not trivial to implement, because then you've already implemented it. Nevertheless, what I request is the thrid option. This solves my problem at all. If it generates some side-effects, then almost two options can be considered: 1) Document the limitations. For example, you can comment that with files inputs the file pointed is reseted to the begin when the input plugin is restarted. 2) The other option is target the edge cases with some logic. For example, with file inputs you can save the offset of the file, and when restarting the input plugin then reopen the file, set the reading buffer pointer, and if the file is not changed and the pointer is valid, then start reading from this point (and if not, then reset to the start of the file).
So please, consider to add this enhacement. Or almost comment here about the different options.
Thank you!

For the output plugin, what you explain is specific to the SRT plugin. It cannot be described in tsp packet management terms.
For the input plugin, I explained that 3 options were initially considered but then rejected because of their respective troubles. Your answer is I want option number 3 and please document the corresponding troubles as limitations.
In both cases, these are requests which may be legitimate in the context of your own project but which can hardly be understood as beneficial for the TSDuck project and its users in general.

Hi @lelegard ,

For the output plugin, what you explain is specific to the SRT plugin. It cannot be described in tsp packet management terms.

OK. I'll need to experiment more with this output then.

For the input plugin, I explained that 3 options were initially considered but then rejected because of their respective troubles. Your answer is I want option number 3 and please document the corresponding troubles as limitations.

Thank you. But it's quite difficult to see the reason to have rejected the option 3. I feel the side-effects are minimal... or not?

In both cases, these are requests which may be legitimate in the context of your own project but which can hardly be understood as beneficial for the TSDuck project and its users in general.

I agree that perhaps it's difficult to see my request in a different context that will be beneficial for other users. However, please note this:

The remote control, without the input plugin control is in fact doing the solution of the option 2 that you described. With the help of other plugins (filter) it's trivial to filter out all packets with remote control (you only need to put it after the input, and filter all pids, and disable it with the tspcontrol tool when you want to pass all traffic). So this option exists at time!

So what I ask is to add the functionality of "enable option 3" optionally. If the effort to do so is enormous, then I understand your position. But if not, please, then consider it.
In any case, thank you for this invaluable toolkit!


[1.20.1] Possible incompatibility with Vampirism

So... I booted up the game with this mod freshly installed and was greeted by this:

The hunter mob from Vampirism is spawning constantly, far beyond the game's spawn limits, causing some hefty lag!
EDIT: Just used InControl to kill them all, there were almost 4000 entities! They're spawning back really quickly.

Fixed in latest version of the mod, thank you!

um.... i have the latest version and the same is happening... HELP

Oh, I'm sorry it's fixed in 1.19.4 and 1.20 but not in 1.19.2.  They made some changes to registries in 1.19.3 that prevents backwards compatibility.   I'll leave the notification turned on for the next couple weeks in case I get some time but I'm not optimistic.  I had a strong health issue last week that's reduced my productivity.  I'm having to pick and choose now.  The new medicine wipes me out about 6 hours after I take it.

How was this resolved? I am encountering this issue, and I vaguely remember there being some combination of SBU and BiomeTweaker that solved it, but I don't recall anymore.

For those looking, set the hunters' spawn weight to 0. They will still spawn, but at a normal rate.

Thanks!   I was very sick from august to september.  hospitalized twice.  still not back to normal.   Thanks for posting the spawnweight tip!   yes, Vampirism is hard-coded to 0.  I changed the mod back then to where it would keep those lines.