Right click on shadow block should display full context menu from parent

Expected Behavior / Behavior from Scratch 2.0
If a shadow block is not in editing state, it should display the same context menu items as the main block (eg. duplicate, delete block, help, etc.). If a shadow block is in editing state, it still displays the same context menu with duplicate, delete, etc.
Actual Behavior
Right-clicking main block:
Works as expected

Right-clicking shadow block, whilst not in editing state:
Should display duplicate and delete options for the main block

Operating System and Browser
Windows 10, Chrome 56.0.2924.87 (64-bit)

I like having clipboard options in the context menu when editing an input, but they could be added to the scratch-blocks context menu instead of using a native one

Yes, I agree that functionality like copy and paste is useful

I don't think that this is a bug. The browser and OS determine how text input fields are rendered to a large extent. Having access to the context menu while editing text seems advantageous for a variety of reasons (copy/paste, accessibility, etc.).

Yes, but what about the first case where you right-clicked a shadow block whilst not editing it?
It doesn't feel right that the duplicate / delete options aren't shown

Ah. Now I understand what you mean. I'm going to edit your original description to clarify.

Ok, thanks

See parent_tooltip_when_inline extension in google/blockly: develop

I presume this was meant to be closed after the patch was merged


hide search operators behind autocompletion list

It's weird having search operators jump all over the place as the size of the suggestion list changes. Search operators are hidden behind autocompletion list in this PR.

@fgreg  I just modified one file named 'controller.js'. It is weird that 14 files are changed in the PR. Does that matter?

Codecov Report

Merging #197 into mudrod-117 will increase coverage by 0.05%.
The diff coverage is 33.33%.

@@               Coverage Diff               @@
##             mudrod-117    #197      +/-   ##
===============================================
+ Coverage          1.68%   1.73%   +0.05%
- Complexity           17      28      +11
===============================================
  Files                79      79
  Lines              5163    5001     -162
  Branches            688     635      -53
===============================================
  Hits                 87      87
+ Misses             5064    4902     -162
  Partials             12      12

@quintinali It depends on where you branched from. I can't tell from here but it looks like you branched from some point behind master and then merged master into your new branch. You could just branch from mudrod/mudrod-117 and then you'd see only the one file changed.
Isn't this what it was before you changed it? Now the behavior is back where the options disappear entirely once you start typing. So if you type a letter, then press backspace the options are gone.
The options shouldn't move or hide. Just stay where they are and the drop down goes 'over' them.

Could @gxtchen help solving this issue? I can't solve it since I am unfamiliar with AngularJS. Thanks.

@quintinali I'll take a stab at it in another PR.


Halt environment in db migration test to prevent auto cleanup

Description
The following jobs are failing because the test data got cleaned up automatically after 1 week:

https://jenkins.inmanta.com/job/core/job/inmanta-core/job/iso6/1070/testReport/junit/tests.db.migration_tests/test_v202402130_to_v202403120/test_drop_not_null_constraint/
https://jenkins.inmanta.com/job/core/job/inmanta-core-postgresql-versions/job/iso6/510/

This pr halts the environment to prevent auto deletion.
This will no longer be necessary when we stop running background tasks in db migration tests
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box
- [ ] Attached issue to pull request

[x] Changelog entry
- [ ] Type annotations are present
- [ ] Code is clear and sufficiently documented
- [ ] No (preventable) type errors (check using make mypy or make mypy-diff)
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
- [ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )
- [ ] If this PR fixes a race condition in the test suite, also push the fix to the relevant stable branche(s) (see test-fixes for more info)

Processing this pull request

Merged into branches iso6 in 0a1b08cbced8bacd3f6a7dc9f54db3b649028c91


optimize.minimize(method='L-BFGS-B') performs n+2 iterations for n<24, n+1 iterations for n=24, and n for n>= 25 with max_iter=n

L-BFGS-B does not perform the requested number of iterations for less than n<25 iterations.  It also calls the callback an incorrect (and different!) number of iterations.
A sample code,
from itertools import count
from scipy.optimize import minimize, rosen

c = count()
def callback(x):
    next(c)

n=25
res = minimize(rosen, (0,0,0), options={'disp': True, 'maxiter': n}, method='L-BFGS-B', callback=callback)
print(res)
print(c)

The behavior is incorrect for n<25, for example n=3 produces
    RUNNING THE L-BFGS-B CODE

               * * *

    Machine precision = 2.220D-16
     N =            3     M =           10
     This problem is unconstrained.

    At X0         0 variables are exactly at the bounds

    At iterate    0    f=  2.00000D+00    |proj g|=  2.00000D+00

    At iterate    1    f=  1.95917D+00    |proj g|=  2.14559D+00

    At iterate    2    f=  1.61222D+00    |proj g|=  4.47056D+00

    At iterate    3    f=  1.57410D+00    |proj g|=  6.85382D+00

    At iterate    4    f=  1.43040D+00    |proj g|=  6.93083D+00

    At iterate    5    f=  1.22860D+00    |proj g|=  1.52933D+01 <= 5 iters

               * * *

    Tit   = total number of iterations
    Tnf   = total number of function evaluations
    Tnint = total number of segments explored during Cauchy searches
    Skip  = number of BFGS updates skipped
    Nact  = number of active bounds at final generalized Cauchy point
    Projg = norm of the final projected gradient
    F     = final function value

               * * *

       N    Tit     Tnf  Tnint  Skip  Nact     Projg        F
        3      5     12      1     0     0   1.529D+01   1.229D+00
      F =   1.22859593979883                                     <= final F

    STOP: TOTAL NO. of ITERATIONS EXCEEDS LIMIT

     Cauchy                time 0.000E+00 seconds.
     Subspace minimization time 0.000E+00 seconds.
     Line search           time 0.000E+00 seconds.

     Total User time 0.000E+00 seconds.

          fun: 1.2285959397988266
     hess_inv: <3x3 LbfgsInvHessProduct with dtype=float64>
          jac: array([ 10.82081735, -15.2932714 ,   5.76619654])
      message: b'STOP: TOTAL NO. of ITERATIONS EXCEEDS LIMIT'
         nfev: 48
          nit: 4                                                 <= internal profiling only counts 4 iters
       status: 1
      success: False
            x: array([ 0.52583399,  0.22054671,  0.07747183])

    count(4)                                                     <= callback only called 4 times

Closing, a duplicate of #7854.


ViewPager not updating properly when changing items

Either the data is wrong or updates are not working but when reloading tabs in a view pager some become missing and errors are reported. Needs investigated.

This is working.


impl(GCS+gRPC): histogram buckets for gRPC metrics

The gRPC metrics include histograms, but the default buckets are not
very useful.
Part of the work for #13998

This change is

@frankyn can you take a look? You probably have the most context here.


feat: multiple btc recipients support

Description
Modified the interface to accept an array of recipient addresses and amounts in order to support multiple recipients. Updated BTCTransferOptions and BTCTransferPayload interfaces.
Link to relevant issues and documentation: #283
https://github.com/hirosystems/connect/issues/283#issuecomment-1397938096
Example:
Added ability to add multiple recipients when sending a BTC transfer request
const recipients = [
      {
        recipient: '2NAm1LPPHQQ8AaLhXSYWrpApoCKcyjNJsjf',
        amount: '20000'
      }
    ];
    await openBTCTransfer(
      {
        recipients: recipients,
        appDetails: {
          name: "My App",
          icon: window.location.origin + "/my-app-logo.svg",
        },
        onCancel: () => {
          alert("Cancelled");
        },
        onFinish: (data) => {
          alert(`Transaction ID: ${data.txId}`);
          alert(`Raw transaction: ${data.txRaw}`);
        },
      });

For details refer to issue #283
Type of Change

[x] New feature
[ ] Bug fix
[ ] API reference/documentation update
[ ] Other

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: janniks:x: abdulhaseeb4239You have signed the CLA already but the status is still pending? Let us recheck it.

Merging to the existing wip branch


Change the scale of Deceased chart to make it more usable

Describe the bug
A clear and concise description of what the bug is. If your issue is regarding an error in the data, it's best reported through this form.
To Reproduce
Steps to reproduce the behavior:

Go to 'https://www.covid19india.org/'
Click on '....'
Scroll down to 'Deceased chart'
The trends shows a straight line.

Expected behavior
Trend chart should show some visible trends.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Reduce the Y/vertical scale of deceased chart.

Use uniform toggle button to auto-scale y axis of deceased chart

Does it make sense to set the uniform bit set to 0 by default?
On Thu, Jun 4, 2020 at 10:03 PM Rahul Nayak<EMAIL_ADDRESS>wrote:

Use uniform toggle button to auto-scale y axis of deceased chart
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/covid19india/covid19india-react/issues/2054#issuecomment-638968336,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADCETYG4OHUU7LFNT4BNOFTRU7EGDANCNFSM4NSSZAKQ
.

Does it make sense to set the uniform bit set to 0 by default?
…
On Thu, Jun 4, 2020 at 10:03 PM Rahul Nayak @.***> wrote: Use uniform toggle button to auto-scale y axis of deceased chart — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#2054 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADCETYG4OHUU7LFNT4BNOFTRU7EGDANCNFSM4NSSZAKQ .

Actually the uniform bit is stored in local storage. So the browser remembers your preference.

Thank you.
On Thu, Jun 4, 2020 at 10:10 PM Rahul Nayak<EMAIL_ADDRESS>wrote:

Does it make sense to set the uniform bit set to 0 by default?
… <#m_7005214603474277309_>
On Thu, Jun 4, 2020 at 10:03 PM Rahul Nayak @.***> wrote: Use uniform
toggle button to auto-scale y axis of deceased chart — You are receiving
this because you authored the thread. Reply to this email directly, view it
on GitHub <#2054 (comment)
https://github.com/covid19india/covid19india-react/issues/2054#issuecomment-638968336>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADCETYG4OHUU7LFNT4BNOFTRU7EGDANCNFSM4NSSZAKQ
.
Actually the uniform bit is stored in local storage. So the browser
remembers your preference.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/covid19india/covid19india-react/issues/2054#issuecomment-638971970,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADCETYF2MYVCKJUPHJ4BZCLRU7E7TANCNFSM4NSSZAKQ
.


fix(JSON-LD): Adding JSON-LD using Schema.org

:tada: This PR is included in version 1.0.6 :tada:
Your semantic-release bot :package::rocket:


close listener of the socket isn't called when client close

Hi,
When the client closes the connection, the close listener of the socket isn't called. In the following example, the output is:

client.open()
mockServer.connection()

const { Server } = require("mock-socket");
const fakeURL = "ws://localhost:9090/jsonrpc";

const mockServer = new Server(fakeURL);
mockServer.on("connection", (socket) => {
    console.log("mockServer.connection()");

    socket.on("close", () => {
        console.log("socket.close()");
        mockServer.close();
    });
});

const client = new WebSocket(fakeURL);
client.addEventListener("open", () => {
    console.log("client.open()");
    client.close();
});

I have same issue.

Fixed in 9.1.4


Adding support for Python v3.11

This PR moves us to support Python 3.11, and drops support for Python 3.6.

I also increased the range of acceptable numpy/cython versions mazelib accepts.


Add *.md to selected file extensions to support rubocop-md checks

I find this rubocop extension very helpful: https://github.com/rubocop/rubocop-md, but it seems that it cannot be used together with rubocop-changed, because it only selects *.rb files from the diff.

Hello, Marcin!
Thank you! Let's add this.md too.

Sorry, somehow I was looking at the code of a different gem with almost identical name. This one works great!


Navigation improvements

If there is only one zone, don't show selector. If there are no groups, don't show selector, the same is for color and for spare disks.
If there are several zones, but the user doesn't have VMs in other zones, display zone as text, the same is for groups, colors.

And for spare disks too.

If there are several zones, but the user don't have VMs in other zones, display zone as text, the same is for groups, colors.

Same statements for accounts for domain admin.


feat(runqueue): add RunQueue iterator

Description
Add an iterator over the threads in RunQueue. The iterator can start from any thread and will then iterate over all succeeding threads in the same queue, and then all lower index queues one by one.
The motivation for this iterator is that then Iterator::filter + Iterator::next can be used to pick a thread from the runqueue that matches a certain condition.
In the multicore PR #397 that's needed so that we can get the next thread from the runqueue that has the correct core-affinity.
Issues/PRs references
Extracted from #397.
Open Questions
Is there any simpler way to implement this?

[x] I have followed the Coding Conventions.
[x] I have performed a self-review of my own code.
[x] I have made corresponding changes to the documentation.

Hax doesn't know the Iterator trait.
I briefly tried before to just implement a filter function instead of using Iterator::filter + ::next. But it performed slightly worse in the benchmarks than the Iterator, and imo using an Iterator for this is more Rust idiomatic .
Also, it would require a generic FnMut predicate function, and those aren't supported yet either.
cc @franziskuskiefer is it possible/ much effort to add support for one of the two (either the Iterator trait, or FnMut/ Fn generics) to hax?

please squash!


CgMethodConstructor refactoring

Description
Substitute this text with a concise description of the proposed change. Emphasize, why particular solution was chosen.
Fixes # (issue)
Type of Change
Please delete options that are not relevant.

Minor bug fix (non-breaking small changes)
Bug fix (non-breaking change which fixes an issue)
Refactoring (typos and non-functional changes)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)

How Has This Been Tested?
Automated Testing
Specify tests that help to verify the change automatically.
Example: org.utbot.examples.algorithms.BinarySearchTest
Manual Scenario
Please, provide several scenarios that you went through to verify that the change worked as expected.
Checklist (remove irrelevant options):
This is the author self-check list

[ ] The change followed the style guidelines of the UTBot project
[ ] Self-review of the code is passed
[ ] The change contains enough commentaries, particularly in hard-to-understand areas
[ ] New documentation is provided or existed one is altered
[ ] No new warnings
[ ] New tests have been added
[ ] All tests pass locally with my changes

Thanks for review! Fixed, changes from this PR will be cherry-picked in #665


Update port for azure-storage-common-cpp

Update port for azure-storage-common-cpp

This is waiting on https://github.com/microsoft/vcpkg/pull/15635
FYI @katmsft, @Jinming-Hu

This is waiting on https://github.com/microsoft/vcpkg/pull/15635
FYI @katmsft, @Jinming-Hu

We can close these stale PRs. They are superseded by https://github.com/microsoft/vcpkg/pull/16020
cc @antkmsft


Filtering objects associated with user's organization

Say I have an app called services that has a ServiceInstance object with a foreign-key relationship to an organization. Here is services/models.py:
from django.contrib.postgres.fields import JSONField
from django.db import models
from organizations.models import Organization as Account

class Service(models.Model):
    name = models.CharField(max_length=255, blank=True)
    description = models.TextField(blank=True)

class ServiceInstance(models.Model):
    service = models.ForeignKey(Service, related_name='instances')
    account = models.ForeignKey(Account, related_name='instances')

    settings = JSONField(
        help_text="Service settings and configuration data",
        blank=True,
        null=True,
        default=dict,
        )

I want to add a list view for service instances, and that view should only include instances that are associated with the logged-in user's current organization. Here is services/views.py:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic
from organizations.mixins import MembershipRequiredMixin

from .models import Service, ServiceInstance

class ServiceInstanceListView(LoginRequiredMixin, MembershipRequiredMixin, generic.ListView):
    model = ServiceInstance
    queryset = ServiceInstance.objects.filter(account=???)

I am still wrapping my mind around class-based views in general and using them with mixins in particular, so I can't quite figure out what I need to do in order to be able to filter the queryset to only include the objects associated with the current user's organization. Also, I am quite open to the possibility that I may be approaching this all wrong in the first place and am thus open to alternate ways of achieving the desired goal. 😄
Any suggestions? Some guidance would be much appreciated. Once I have more info about this, I'll most likely add some associated pointers to the documentation.

This is a good question about how Django class based views work.
The queryset class attribute you've defined here is a declarative definition and is necessarily consistent across requests. 😞
However you can either amend it or ignore it (and thus not bother adding it) by defining your own get_queryset method 😀
At its simplest:
class ServiceInstanceListView(LoginRequiredMixin, MembershipRequiredMixin, generic.ListView):
    model = ServiceInstance
    queryset = ServiceInstance.objects.all()  # or some other filtered queryset

    def get_queryset(self):
        return self.queryset.filter(account=self.organization)

Does that help?
FWIW the mixins are one area of the codebase that work but haven't gotten the updates I'd like them to yet (including documentation and extensibility).

It does help, thank you. When I tried that, I got a "No Organization matches the given query" response, which probably isn't surprising as I don't believe the OrganizationMixin is necessarily paying attention to the currently-logged-in user. Assuming for the moment (and for simplicity) that a user is only associated with a single organization, do you have any suggestions as to how I would modify this code to only show the objects associated with the currently-logged-in user's organization? Or am I missing something?
By the way, thank you so much for always responding so quickly and attentively, despite your many other obligations. As an open source maintainer myself, I know too well how challenging it can be to find time for it. Your guidance is truly and greatly appreciated!

Assuming for the moment (and for simplicity) that a user is only associated with a single organization, do you have any suggestions as to how I would modify this code to only show the objects associated with the currently-logged-in user's organization? Or am I missing something?

I'm sure there's a better way with Django's reverse relationships, but:
org = Organization.objects.filter(users=request.user).first()

By the way, thank you so much for always responding so quickly and attentively, despite your many other obligations.

 The detailed and clearly written issues/PRs make it easy for me.


Initialize the node-containerd-registry-mirrors flag

What this PR does / why we need it:
Initialize the node-containerd-registry-mirrors flag.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

None

/hold


Add Bartolome Estelrich to contributors list

Making my first commit on the Github community.

Hi  @BEstelrich, I'm quite elated about your pull request. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a pull request and learned that I merged it?
We’ve recently added social share  to our web app. Could you please go to https://roshanjossey.github.io/first-contributions/#social-share and share your first contribution to open source?
Also, check out projects with easy issues while you’re there.

Hi Roshan, thanks for creating those type of repositories that allow first time contributors begin our Open Source projects journey.


fix: /get to handle req query properly

Description
Fixed API route for /get request, which returns invalid nextPage as it's expected to return a number, whereas it returns a concatenated string due to the request query not being handled properly. As shown in the screenshot below.
Expected "nextPage": 13 instead got "nextPage": "121"

Fixes # (issue)
Made a fix to check if the value of the request param if it's a number, then handle the request properly, if not, it should pass a default value as passed in the fetchTerms function :
const fetchTerms = async (page = 1, limit = 10, terms) => {

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I ran the sort command to make sure all terms are sorted
[ ] I have made corresponding changes to the ReadMe
[x] My changes generate no new warnings
[x] Existing unit test passes locally with my changes

Description
Fixed API route for /get request, which returns invalid nextPage as it's expected to return a number, whereas it returns a concatenated string due to the request query not being handled properly. As shown in the screenshot below.
Expected "nextPage": 13 instead got "nextPage": "121"

Fixes # (issue) Made a fix to check if the value of the request param if it's a number, then handle the request properly, if not, it should pass a default value as passed in the fetchTerms function :
const fetchTerms = async (page = 1, limit = 10, terms) => {

Type of change
Please delete options that are not relevant.

[x]  Bug fix (non-breaking change which fixes an issue)
[ ]  New feature (non-breaking change which adds functionality)
[x]  Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x]  My code follows the style guidelines of this project
[x]  I have performed a self-review of my own code
[ ]  I ran the sort command to make sure all terms are sorted
[ ]  I have made corresponding changes to the ReadMe
[x]  My changes generate no new warnings
[x]  Existing unit test passes locally with my changes

Working on some fixes regards this. The next PR should handle that

Working on some fixes regards this, next PR should fix it

PR Updated to handle possible know errors too like negative value.


fix #9 defer Q() not printing output.

on defer "names" is empty so we range over "values".
https://github.com/y0ssar1an/q/pull/26

Thanks so much @SimonWaldherr! I'm really sorry about the rebase hassle 😬. Your change handles the defer problem much more gracefully. I think it will prevent a lot of confusion.
I'm going to make one more minor change to q this weekend and then I'll push out v1.0.6. Thanks, again!


Prepare for v0.9.0 release

Coverage remained the same at 100.0% when pulling 924beb5404e01a4741b7ee11228611cef3051c24 on release-v0.9.0 into 2f5b637b3569d265ee4313da4e4cf28b26077689 on master.


Enforce Right Hand Rule for linear rings in Polygons/MultiPolygons.

Tegola's geometry spec follows the RHR for these geometries.  Incoming data doesn't always follow it.  Add a failure or rewrite the geometry on import to make sure the geom.Geometry types created do follow the rule.
@gdey @ARolek

@JivanAmara forgot to bring this up but I believe the MakeValid processing ensures this. @gdey can you confirm? If so, then once that functionality has fully adopted the geom types this should be able to be called prior to calling json.Marshal()

Yes, the MakeValid ensures that things going through the make valid function will follow the right-hand rule.


Formalizing promotion to triagers/approvers/maintainers in repositories

We have some general guidelines on triagers, approvers, maintainers on the community repository but in practice they are not sufficiently specific. This is problematic both for SIGs (specially larger SIGs), since there is no explicit consensus mechanism for several maintainers to decide when to promote someone as well as for contributors that don't have clear expectations on how they can become a triager/approver/maintainer.
I would like us to provide general guidance about this, and possibly if there is consensus across the community to update the community repository to have a general rules about this. Some members of the Collector SIG, including myself, are interested in working on this for our SIG specifically, so we can start working with that.
Among the things that I think we should clarify are:

Who is a stakeholder in this decision (e.g. for triagers, do approvers or existing triagers participate in the decision)?
How is the process started?
How can we make it fair?
What level of support is needed among the stakeholders to promote someone?

Thank you for raising this issue, @mx-psi, it's a really important one.
Related to that, I created this maintainer onboarding form a while back (it never got merged), which tried to address some of that: https://github.com/open-telemetry/community/pull/1924
I would be curious how different SIGs are solving this today? Like when are you going to approach a contributor and ask them to become a triager, a triager an approver, etc? Or is it pure self-nomination?

Joining this one!

It'd be great to provide examples of some promotion processes and how they went (from the perspective of an existing contributor).


Publish Command List Confustion

I know this is kind of beginner question but which option should I select on this screen? I have read documentation but I am still not sure..

I went with option 2.
Thanks for such a great project.


ML support

Is your feature request related to a problem? Please describe.
some strategies seem to work well on certain stocks and certain setups, and less for others.
Describe the solution you'd like
extend market miner for off-market calculation of a NN that will predict the affinity of stock to a specific strategy
Describe alternatives you've considered
direct caluclatuon

step one: normalize strategy decisions on buy/sell by tracking profit (or loss) on the open positions.
how-to:

Add P&L DB table,
Add a consolidation task, running at the end of the trading day.

Release as 0.0.80

0.0.80 release!

step two: creating a loss-function for calculation epoch

step three: high-level (R)NN model description
to be released as 0.0.90

ML Design + LSTM notebook was released as part of 0.0.86 and is not available. The next steps will be published later.

ML Design + LSTM notebook was released as part of 0.0.86 and is not available. The next steps will be published later.

Evolve LSTM models to Attention models

Evolve LSTM models to Attention models

still WIP


I like your work

Hey there I couldn’t find a way to DM you but I was wondering if you’d be interested in making me a custom GUI using this framework? My discord is (r.exedma) if that doesn’t come up just send me yours. Thank you.

Nice. My Discord is godblasy if you want to message me.


How does this differ vs https://create.unity.com/ai-beta ?

This project is just a proof-of-concept for providing food for thought -- not a firm product.


Remove "None" default value on relationship select box

It is possible to remove the default value "None" on a select box when the relationship is required?
Could not find any documentation on this.

Thanks.

Please use the issue-template, and for questions it's more easy to use our Slack group.
Whether you get the None option or not is determined on the column in your database.
Is it nullable you wont get it, if its not nullable you have to select a value.

Hi! I've BelongsToMany relationship, and I want to remove "None" value. All columns in pivot table are not nullable, but I've "None" value first in dropdown. If I select None or nothing, I got a 500 error. So how to remove this value or add validation to relationship?
Thank you!

Please open your own issue. This one has been closed for months


filter for multi value field

What if i want to manage a tag cloud e.g.
metadataMa:
tags: one,tow,four
..and i want mathc the instance if any of the tags is "four"

List's aren't supported, only scalar values.

I know ..for example that eureka.instance.virtual-host-name does support a multi value list (separated by comma) to be able to define more than one alias for the instance
Can you give a hint how to solve (workaround) or implement such feature?
I want allow micorservices ro register at eureka and setting "list of capabilities" of a speicfic (device) type,  e.g.
"tags: one,tow,four" where "tags" would be an exmnaple type and  "one,tow,four" the capabilities values the service offers.
I have amicroservices for devices, where a mciroservice appllication name defines the category of service, e.g. "temppocessor" but the "device type's" the application supports will be filtered based on "device type" metadata map list. The Discovery Filter shall then do an filtered routing. I can't use just " the mirmsoservice names" e.g. like "temppocessor-rasberry", because if the same application support also "sparkfun, particle photon ..etc" the names is not useable and also does not support filtering out of the box

Well, in fact it should be easy, you can template the code based on MetadataAwarePredicate and simply flatMap the metadata map entry value by splitting it by coma, afterwards try to find the matching values.

I could try to open up some of the implementations, so that it would be more convenient to provide your own implementations.

Sounds great - i think that's a use case some other could also have ;)

Hey,
Please update to version 2.1 (should be available by the end of day in Maven central) and you can register your own bean of type MetadataAwareRule.
    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public DiscoveryEnabledRule metadataAwareRule() {
        return new MetadataAwareRule(new DiscoveryEnabledPredicate() { ... });
    }

Will the filter run before ribbon  does its filter for an instance out of possible instances for resilient/balancing?


[QUERY] Is there a way to access underlying TokenCache?

Library name and version
Azure.Identity 1.9.0
Query/Question
ClientSecretCredential internally creates MsalConfidentialClient which in turn creates and uses TokenCache.
Is there a way to access and manipulate cache entries, including persistent cache?
For example, I want to remove specific entries from cache completely. Any options?
The use-case is that my app may receive tokens which miss roles (no admin consent) and in that case I need to force refresh them. Apparently it's not possible to do so?
Environment
.NET

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Hi @Kadeluxe
Yes, you can participate in MSAL's cache callbacks by implementing UnsafeTokenCacheOptions and passing that instance to the TokenCachePersistenceOptions https://github.com/Azure/azure-sdk-for-net/blob/9610a44a0405b0fa7093fad9f09f8aa4577d2fa5/sdk/identity/Azure.Identity/src/Credentials/ClientSecretCredentialOptions.cs#L16.

/unresolve
Yes, I can provide callbacks using UnsafeTokenCacheOptions but these callbacks do not provide access to the token cache, apparently I can either receive serialized bytes or return serialized bytes using these callbacks?
I want to manipulate the cache entries because I don't want to cache some tokens, but I can't figure out how to actually get access to the underlying cache and methods of ITokenCacheAccessor interface.
Do I need to invent my own cache for that? This looks complicated, I would assume that cache should be exposed somewhere, at least to allow to invalidate arbitrary tokens.

/unresolve Yes, I can provide callbacks using UnsafeTokenCacheOptions but these callbacks do not provide access to the token cache, apparently I can either receive serialized bytes or return serialized bytes using these callbacks?

The bytes are the contents of the cache. If you wanted to manipulate the cache entries, you could de-serialize the bytes to json and serialize the json once you've made your changes.


fqdn: Fix GC for dead IPs on live names over limit

A user observed that Cilium's FQDN name cache can accumulate many IP
addresses over time for DNS names that have frequent IP recycling (such as
Amazon S3). In particular, the "--tofqdns-endpoint-max-ip-per-hostname"
maximum did not seem to apply to such names as long as there is an
active connection for one of the IPs associated with the name. This
could cause an increase in memory usage and identity allocations in the
cluster, which consumes policymap entries as well.
The problem was that the FQDN garbage collection routines would apply
the limits to active IPs for active names and clean up inactive IPs and
inactive names, but it would not apply to the inactive IPs that
correspond to names with other active IPs. These would hence slip
through the garbage collection selection and remain in the cache
indefinitely.
This patch fixes it by including the inactive IPs along with active IPs
in the list of live names to evaluate, which then ensures they are
considered for deletion if they exceed the max-ip-per-hostname limits.
Those limits are then enforced based on how recently the IPs have been
used, favouring IPs with more recently active connections over IPs that
have not been recently used by applications on the node.
Related: #13914
Related: #19452
Improve garbage collection for FQDNs particularly with high-churn IP names such as Amazon S3.

/test

Not sure what happened with test-runtime, maybe I triggered the build too soon. Will re-kick it.

/test-runtime

There is a bit of that yeah. There's not so many permutations though and it seemed like the rest was already covered. Particularly when it comes to enforcing the limit, it's more just about "alive" names and how the limits get enforced against those. Once we do the GC() call we just get back the lists of alive + dead names and clean up the dead ones, so I think at this point we probably have all the coverage we need for this? I'm open to looking into some other pattern if there's a particular test you have in mind.

CI Triage:

ConformanceAKS - Looks like a variation on #22435.
ConformanceGKE - Same test failure as https://github.com/cilium/cilium/issues/22529 , though the individual command that fails is not the same. Unfortunately the Hubble flow output is not availablee to confirm (https://github.com/cilium/cilium/issues/22539)
External workloads - Hit https://github.com/cilium/cilium/issues/22451.


Korean input is not working properly in ios.

If you write a newline and write Korean, it will go up.
help me please.

This issue is stale because it has been open for 60 days with no activity.

This issue was closed because it has been inactive for 7 days since being marked as stale.


location data

https://api-web.nhle.com/v1/location
This will return the country that the webserver thinks the user is in. When I go there from my web browser, it returns "US". If I use my VPS in the UK, then it returns "GB" for Great Britain.

thanks @nelgin, I had a suspicion it might be that.  I'll update the note for that entry


Support exclusions for imported BOM modules

When a BOM is imported, we create dependency constraint for each
dependency declared in a <dependencyManagement> section. These
entries may define a set of <exclusions> for the target module.
We were already parsing and caching these constraint exclusions,
but they were being ignored when building the graph, due to the
non-transitive nature of dependency constraints.
With this PR, we consider any exclude defined for a constraint as applying to the node of the target module, and not tied to the edge that brings in the constraint. This makes BOM import function in a more Maven-like way, since these exclusions will not be ignored when another dependency (with no define excludes) points at the same module.
At this stage, it is not possible to define excludes for a dependency defined in a build script, nor can they be persisted to a .module metadata file. For now, constraint exclusions are exlusive to BOM import.

This PR was failing on CI, presumably because another branch had used the same version number for module metadata cache. I bumped the version number and now it seems all good.


⚠ T:Riza Api has degraded performance

In afe60ab, T:Riza Api (https://infra.triza.dev/api) experienced degraded performance:

HTTP code: 200
Response time: 3554 ms

Resolved: T:Riza Api performance has improved in cd1a3e3.


fix(runtime-core): Fix cssVar cannot work in teleport

close: #7312
close: #7342

Could you maybe explain how your proposed solution compares to the existing PRs for those two issues?

#7341
#7344

discard use css attribute data-v-owner that  cancel updateCssVars limit browser environment only, so #7341 get fixed
modify updateCssVars make cssVar can work in multilevel nesting teleport
https://github.com/vuejs/core/blob/fe77e2bddaa5930ad37a43fe8e6254ddb0f9c2d7/packages/runtime-core/src/components/Teleport.ts#L401
modify setVarsOnVNode add handle for Teleport vnode and use MutationObserver to trigger that #7342 get fixed

@LinusBorg can you help me to review.

@tinyfind can you provide answers for skirtles questions please?

Could you maybe explain how your proposed solution compares to the existing PRs for those two issues?

fix(runtime-core): Fix cssvars reporting error when teleport is disabled #7341
fix(runtime): CSSVars can work with Teleport #7344


OnFirstMessageDeliveryFailed no longer performs address lookup after 21256

Problem
After https://github.com/project-chip/connectedhomeip/pull/21256 OnFirstMessageDeliveryFailed no longer performs address lookup on established sessions. This is because previously OperationalDeviceProxy would stick throughout the lifetime of the establish connection and it would receive the event and perform the address lookup. With OperationalSessionSetup now being ephemeral and only living for the lifetime of the session setup, it is no longer is around when OnFirstMessageDeliveryFailed event is dispatched.
Proposed Solution
Here are 3 potential solutions:

OnFirstMessageDeliveryFailed is removed from SessionDelegate. ReliableMessageMgr now notifies the SessionManager about first message delivery failure

Pros:

Should be one of the easier solutions to implement.

Cons:

(small) Arguably SessionManager should only manage active connection, having it perform an address lookup is somewhat outside the scope of it's role and is starting to creep
(small) The Address lookup code is still needed in OperationalSessionSetup so need to figure out a clean spot for this code to live in one spot functionally be used by both OperationalSessionSetup and SessionManager.

Create a completely new SessionDelegate derived object that will perform address lookup

Pros:

Likely the cleanest implementation

Cons:

Currently I personally don't see where this fits nicely
Likely will need to allocate this object for every established session, which might not be desirable.

Remove OnFirstMessageDeliveryFailed entirely. The spec only mentions that we should do this, so it is not a requirement.

For this solution:

Some argue that the chances address lookup will actually do anything that allows a session to recover is very low. Most DHCP renewals end up with the device getting the same address.

Against this Solution:

Some argue that established sessions are open on a magnitude of days, while the chance is low, this is a convenience feature that maybe help in some particular environments.

Solution 4 (which I still have not looked into so I don't have pros/cons) UpdateDevice could be made to do the lookup

Just to be clear, a spec SHOULD means "it's expected that any good implementation will do this; not doing it must be grounded in very good reasons".
So yes, it's technically spec-compliant to not do it, but not doing it is also second-guessing the intent of the spec and needs to be very firmly grounded.  I don't think we have such firm grounding here, and should be implementing this, esp. since it is working right now and we are breaking it.
In terms of where to do it...  We could add some way to run the OperationalSessionSetup state machine partway against an existing session, which is how this used to be done (as in, create a new OperationalSessionSetup with the existing session, then run it through only the first few states).  Or we could have a small class for just doing this; that does involve a separate pool and whatnot.....

My vote would be for 1. I think it has the least number of changes.

At this point I am just documenting things at they come. I haven't decided on which approach yet.
The issue with reusing OperationalSessionSetup seems to be that ReliableMessageMgr doesn't have access to CASESessionManager and doing so will create a circular build dependency. Arguably we could do a delegate or callback type thing. Based on how I am looking at it, that plumbing would take a little bit of effort.
Originally when I first wrote solution 1, I had the idea that the lookup would happen entirely within SessionManager, but the issue with that is we would only be able to do 1 look up at a time, which makes that a show stopper as I think a requirement would be that we could handle more than 1 parallel look up at a time.
Right now I am investigating if the ExchangeContext which already has it's own SessionHolderWithDelegate could handle the address look up itself. On the off chance someone else knows why that cannot happen feel free to chime in

The only things I can think of there are:

There might still be circular dep issues.
It would likely involve making ExchangeContext bigger, right?

There might still be circular dep issues.

I don't think there is (but I will double check)

It would likely involve making ExchangeContext bigger, right?

Yes, there might also be a couple other drawbacks listed below

After spending most of yesterday looking into the possible solutions here are the two that I think are the most feasible. I switched to letters as to not confuse them with the numbered solutions mentioned earlier in this issue.
Solution A:

OnFirstMessageDeliveryFailed is removed from SessionDelegate and becomes it's own delegate. For now lets call it MessageDelieveryFailedDelegate which will have just the one function that will need to be overridden OnFirstMessageDeliveryFailed.
CASESessionManager will implement MessageDelieveryFailedDelegate
During CASESessionManager::Init it will register it's ``MessageDelieveryFailedDelegate  with ReliableMessageMgr. We have access to ReliableMessageMgr, and from what I see, initialization of CASESessionManager happens after initialization of the things we need to get ReliableMessageMgr from already provided CASESessionManagerConfig argument.
Pros:

We are able to reuse most of OperationalSessionSetup to do the lookup for us.

Cons:

At this point we will not have the exact Session that requires a lookup. Arguably updating all active Sessions that match the ScopedNodeID should be updated anyways so this might actually be beneficial, but listed as a con right now since the behaviour is different than what we used to have.
Extra care will need to be taken in case we Allocate a OperationalSessionSetup specifically for the lookup in the corner case where, some other entity does FindOrEstablishSession during the lookup.

It's not that it cannot be done, just something to be aware of, and I think I have a solution for this already involving adding a state to the OperationalSessionSetup state machine (but there might be something else that comes to me as I work on it).

Solution B:

ExchangeContext which already has it's own SessionHolderWithDelegate and can just implement OnFirstMessageDeliveryFailed
Pros:

Overall logic should be more simple then Solution A since Solution A likely involves changing the OperationalSessionSetup state machine (IMO changes to state machine does make it harder for someone unfamiliar to the code to take a look at it for the first time to understand what is going on).

Cons:

It is possible there are multiple ExchangeContext that will hit OnFirstMessageDeliveryFailed for the same Session, creating multiple DNS lookups.

This can be mitigated against by also adding something to Session to identify if there is an existing lookup already happening.

ExchangeContext will need to add AddressResolve::NodeLookupHandle
The DNS lookup time to complete might be longer then the life of the ExchangeContext since that is controlled by the application.

I think it is likely apparent in my write-up I have biased towards Solution A, but wanted to post this in case anyone disagrees or has something that I overlooked. Both of these solutions allow for parallel lookup on different Sessions


GOPATH/bin directory is empty

What version of Go are you using (go version)?

$ go version
go version go1.14.3 windows/386

Does this issue reproduce with the latest release?
Always.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set GO111MODULE=
set GOARCH=386
set GOBIN=
set GOCACHE=C:\Users\tianyi\AppData\Local\go-build
set GOENV=C:\Users\tianyi\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOINSECURE=
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=D:\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\Go\pkg\tool\windows_386
set GCCGO=gccgo
set GO386=sse2
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m32 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\tianyi\AppData\Local\Temp\go-build574742406=/tmp/go-build -gno-record-gcc-switches

What did you do?
My GOPATH/bin directory is empty. For example, I install github.com/go-bindata/go-bindata it says I can run go-bindata.exe, the executable file is not exists。Other package has the same problem.
What did you expect to see?
GOPATH/bin should have go-bindata.exe and orther executable files.
My company computer has those files, but my home computer doesn't have.
What did you see instead?
I see nothing.

Please send the output of
go install github.com/go-bindata/go-bindata
go list -f {{.Target}} github.com/go-bindata/go-bindata

Thanks.

λ go install github.com/go-bindata/go-bindata
go: downloading github.com/go-bindata/go-bindata v3.1.2+incompatible

λ go list -f {{.Target}} github.com/go-bindata/go-bindata # shows nothing.

You need to install the main package (go install github.com/go-bindata/go-bindata/go-bindata).

It works!
I have to install with go get github.com/go-bindata/go-bindata/..., there are three . behind the command.
Thank you.


Migrate Link component to the next branch, i.e., Vue 3

This is needed for the help-link to the spelling variant input
Bug: T298146

No idea, but we might as well have a PR to update the dependencies on the next branch. But maybe after #594 is merged?

Hm, I didn’t merge #594 yet because of the Node 16 requirement :/


Fixed response code for mergeCertificate operation.

Fixes: #36260. Also added a test, as we were lacking one for this particular operation.
NOTE: While adding tests I noticed I had to modify some configuration using the maven-resources-plugin to have it properly load our test .der certificate.

/azp run java - keyvault - ci

API change check
API changes are not detected in this pull request.


How can I add my python plugin's symbolic icons to the hicolor dir and use them?

I am developing my budgie plugin based on your budgie python example.
Now It works with icons in it's own dir.
I don't know how to save and use symbolic icons.
I tried saving and using my icons to usr/share/icons/hicolor/symbolic/apps or usr/share/icons/ hicolor/scalable/actions manually but the plugin didn't recognise it.

Hi serdarsen, I can help you out, but currently redecorating the house :). Could you post this as a question on Ask Ubuntu? That way it would potentially serve a wider audience. I will then answer tomorrow or day after tomorrow if you ping me, and no one else posted a sufficient answer.

Ok @Jacob-Vlijm Good luck with :)
I posted it
https://askubuntu.com/questions/1030592/how-can-i-add-my-python-plugins-symbolic-icons-to-the-hicolor-dir-and-use-them

Hi, thank you so much Jacob Vlijm. I got it, applied, it works


[dep] Add python-sh.

Debian https://packages.debian.org/sid/python/python-sh
Fedora https://admin.fedoraproject.org/pkgdb/package/rpms/python-sh/
Gentoo https://packages.gentoo.org/packages/dev-python/sh
Ubuntu https://packages.ubuntu.com/search?keywords=python-sh

It's tricky to me that the apt pkg seems to have become available since Xenial and on Trusty it's only available via pip. Assuming it'll remain available onward, it there a way to describe the rule cleanly so that we won't have to populate for each distro?

REP111 has been updated to support os wildcards to cover this type of scenario. And O think it has been implemented (https://github.com/ros-infrastructure/rosdep/pull/573). So we could try using that here.

@mikaelarguedas @awesomebytes Thanks, updated.

thanks @130s for the update, looks like ci is failing due to trailing whitespaces and alphabetical order (the wildcard should be before any alphabetical character)

Wow, I couldn't tell from the error output. Thanks @mikaelarguedas, now CI passed.

:+1:

I couldn't tell from the error output.

At the end of the log you can see AssertionError: see folded block 'block2' for details
Then you can go up and click on the mentionned block and it prints:
Checking rosdep file: rosdep/python.yaml
checking for trailing spaces...
  ERR: trailing space line 3125
checking for incorrect indentation...
checking for non-bracket package lists...
checking for item order...
  ERR: list out of alphabetical order line 3130.  '*' should come before 'trusty'
building yaml dict...
there were errors, please correct the file

AssertionError: see folded block 'block2' for details

I see. I didn't know block2 here is the folded block in the CI output (but I can't think of a good way to improve this either).


Kernel 5.10.8 - Logs from upgrade

Kernel 5.10.6 working until upgrade to Kernel 5.10.8 (Ubuntu 20.10 Nvidia HDMI output + DisplayLink over USB 3.0)
systemctl status:
"displaylink-driver.service - DisplayLink Driver Service
Loaded: loaded (/lib/systemd/system/displaylink-driver.service; static)
Active: activating (auto-restart) (Result: exit-code) since Sun 2021-01-17 21:45:53 GMT; 4s ago
Process: 6555 ExecStartPre=/bin/sh -c modprobe evdi || (dkms install $(ls -t /usr/src | grep evdi | head -n1  | sed -e "s:-:/:") && modprobe evdi) (code=exited, status=10)"
Kernel upgrade logs and DisplayLink Error Logs attached below:
DLSupportTool_Output_2021-01-17T21:47:09.311048.zip
UKUU_5_10_8.log
_var_lib_dkms_evdi_1.9.0_build_make.log
_var_lib_dkms_nvidia_460.32.03_build_make.log

Not sure if helpful, but receiving a slightly varied after some minutes :
systemctl status displaylink-driver.service
displaylink-driver.service - DisplayLink Driver Service
Loaded: loaded (/lib/systemd/system/displaylink-driver.service; static)
Active: activating (start-pre) since Sun 2021-01-17 21:58:29 GMT; 22ms ago
Cntrl PID: 95281 (sh)
Tasks: 3 (limit: 8735)
Memory: 1.9M
CGroup: /system.slice/displaylink-driver.service
├─95281 /bin/sh -c modprobe evdi || (dkms install $(ls -t /usr/src>
├─95283 /bin/sh -c modprobe evdi || (dkms install $(ls -t /usr/src>
└─95289 /bin/bash /usr/sbin/dkms install evdi/1.9.0
Jan 17 21:58:29 Robstas-UX434IQ systemd[1]: Starting DisplayLink Driver Service>
Jan 17 21:58:29 Robstas-UX434IQ sh[95282]: modprobe: FATAL: Module evdi not fou>
Then:
sudo systemctl start displaylink-driver.service
Job for displaylink-driver.service failed because the control process exited with error code.
See "systemctl status displaylink-driver.service" and "journalctl -xe" for details.
As logs above, also not seeing any NVidia only AMD Renoir 7 4700U....
strangely also still:
"prime-select query
nvidia"
At current config below, will attempt and update/full-upgrade, and report back logs (prior logs show where this began).
Linux Robstas-UX434IQ 5.10.8-051008-generic #202101171440 SMP Sun Jan 17 15:04:02 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Not sure if helpful, but receiving a slightly varied after some minutes :
systemctl status displaylink-driver.service
displaylink-driver.service - DisplayLink Driver Service
Loaded: loaded (/lib/systemd/system/displaylink-driver.service; static)
Active: activating (start-pre) since Sun 2021-01-17 21:58:29 GMT; 22ms ago
Cntrl PID: 95281 (sh)
Tasks: 3 (limit: 8735)
Memory: 1.9M
CGroup: /system.slice/displaylink-driver.service
├─95281 /bin/sh -c modprobe evdi || (dkms install $(ls -t /usr/src>
├─95283 /bin/sh -c modprobe evdi || (dkms install $(ls -t /usr/src>
└─95289 /bin/bash /usr/sbin/dkms install evdi/1.9.0
Jan 17 21:58:29 Robstas-UX434IQ systemd[1]: Starting DisplayLink Driver Service>
Jan 17 21:58:29 Robstas-UX434IQ sh[95282]: modprobe: FATAL: Module evdi not fou>
Then:
sudo systemctl start displaylink-driver.service
Job for displaylink-driver.service failed because the control process exited with error code.
See "systemctl status displaylink-driver.service" and "journalctl -xe" for details.
As logs above, also not seeing any NVidia only AMD Renoir 7 4700U....
strangely also still:
"prime-select query
nvidia"
At current config below, will attempt and update/full-upgrade, and report back logs (prior logs show where this began).
Linux Robstas-UX434IQ 5.10.8-051008-generic #202101171440 SMP Sun Jan 17 15:04:02 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

@robotard It looks like you are trying to use a combination of the EVDI driver and Displaylink manager that does not work.
Please see the post for #245

@robotard It looks like you are trying to use a combination of the EVDI driver and Displaylink manager that does not work.
Please see the post for #245


[bug] Web3Modal + Wagmi : zkSync's EIP712 paymaster transactions are not supported on mobile

Link to minimal reproducible example
https://github.com/NilsDelage/tests-paymaster-w3m-wevm
Summary
Steps to reproduce:

launch app
connect on mobile (either via injected connexion or via wallet connect)
click "send Transaction", eip712 signing window appears in your wallet
sign, no transaction is sent
disconnect and reconnect with a browser wallet
click "send transaction", window appears
sign, transaction is broadcasted to zkSync

Additionally, different mobile wallets, throw different errors:

Zerion mobile: no error thrown, transaction is not sent.
TrustWallet mobile:

{context: 'client'}context: "client"[[Prototype]]: Object 'Missing or invalid. request() method: eth_sendRawTransaction'
page.tsx:77 error TransactionExecutionError: An unknown RPC error occurred.

Metamask mobile:

 '{"code":-32603,"message":"Internal JSON-RPC error.","data":{"code":-32600,"message":"Invalid request"}}'
 page.tsx:77 error TransactionExecutionError: User rejected the request.

We extend Wagmi's wallet client with Viem's eip712WalletActions to propose those sponsored transactions.
List of related npm package versions
"@web3modal/wagmi": "^4.0.13",
"viem": "^2.7.20",
"wagmi": "^2.5.7",
"@tanstack/react-query": "^5.25.0"

Hi, are you still experiencing this issue in the latest version of Wagmi and Web3Modal?

Hi, the metamask mobile version is now working when using the internal browser, but not working through wallet connect.
In fact, it seems that this is the issue, all connections using wallet-connect are not able to handle paymaster transactions.
You can test the example with several wallets at https://vercel.com/nils-projects-70c69f79/tests-paymaster-w3m-wevm

cc @Sam-Newman

Hi, the metamask mobile version is now also working when using wallet connect, but other mobile wallets which work with the integrated browser do not work when using Wallet Connect.
Thus, it seems possible to have wallets supporting eth_sendRawTransaction through Wallet Connect, but requires some work on the wallet's side.
It seems like it is not a problem from the library, I am closing this issue.


Notebook renderer: state persistence

Issue Type: Feature Request
When building a regular webview extenison or a custom editor, extension authors can follow the existing guidance https://code.visualstudio.com/api/extension-guides/webview#persistence for intermediate state persistence. Extensions will use the vscodeAPI to communicate with the extension and also get/set its intermediate state for recovery. The API is as below
const vscode = acquireVsCodeApi();

// Check if we have an old state to restore from
const previousState = vscode.getState();
...

setInterval(() => {
  vscode.setState({ count });
}, 100);

acquireVsCodeAPI can only be run once, which ensures that it's not being used unexpectedly. However in Notebook world, there are multiple layers who want to access this API

Our core logic. It uses this API to send out scroll and sizeChange events.
Renderers. We allow multiple renderers to be loaded in the same output webview.

To allow renderers to communite with its coresponding extension, we relaxed it a bit to allow acquireVSCodeAPI to be run multiple times. However it's a bad idea as renderers now don't know how to save/restore states correctly, as vscode.setState can be run by any code.
One solution is creating vscodeAPI object for every indidual player
const vscode = acquireVsCodeApi('_vscodeCore');
const ipyWidgets = acquireVsCodeApi('python.ipywidget');

vscode.getState();
...
ipyWidgets.getState();

acquireVsCodeApi with the same id can only be invoked once. This way each renderer can have its own communication channel with its extension and also its own state restoration.
Particularly for ipywidgets, it should always setState before it sends states to the kernel side and read state when it's being restored.
cc @kieferrm @mjbvz @connor4312
VS Code version: Code - Insiders 1.45.0-insider (44c5185373d5f209cd6c0b5d29a216fb801da34e, 2020-04-10T19:43:46.226Z)
OS version: Darwin x64 19.2.0

This works. In some cases I think consumers may prefer to acquire the API based on the URI if they are building them as self-contained 'apps'. For instance in the flame graph extension I would want to store the view position on a per-graph level and don't need a plugin-level state. This API would not prevent renderers from doing that.

@connor4312 makes sense, renderers can build an id from the cell uri. To archive that, the renderer needs to read the uri from the cell when it converts CellDisplayOutput to HTML fragment.
render(document: NotebookDocument, output: CellDisplayOutput, mimeType: string): string {
  const id = output.uri.toString();
  ...
}

@rebornix I believe your proposal to use acquireVsCodeApi(id: string) should work. I'd be even nicer if vscode could export a scoped version of acquireVsCodeApi to each cell automatically however I'm not sure that's compatible with how notebooks work
One other point about the api proposal: we may need a way to clean up the state of cells that no longer exist

I'd be even nicer if vscode could export a scoped version of acquireVsCodeApi to each cell automatically however I'm not sure that's compatible with how notebooks work

I'm not sure how this could be done safely (allowing for async calls) without something like Zone.js, which can be a difficult can of worms to deal with. I'll look into this some more when I do the work renderer iteration but I think string-scoped APIs are a good basis to work on.

Something that came up before is the idea that we should probably not call it acquireVsCodeApi in the context of notebook renderers, since they will also be usable in places like ADS. Also, using the same name as the webview API overloads the term in the event that we add any extra properties for renderers.
Thinking of states as scopes. I think the greatest scope that a renderer should be able to access is document -> renderer. Generally renderers will be independent and allowing renderers to share a global state will undoubtedly lead to problems if users install bad-behaving renderers.
As mentioned, in many cases the cells may be independent from each other, so having a way to get the per-cell state is good.
I don't think there's a reason to require these to be separate acquireVsCodeApi calls just for different states, since methods like (and currently only) postMessage is the same between all of them.

This leads me to an API something like this:

interface IState<T> {
  retrieve(): T | undefined;
  retrieve(defaultValue: T): T;
  store(state: T): Promise<void>; // or void? technically the postMessage to store is async
}

interface IRendererApi<CellState, NotebookState> {
  cellState: IState<CellState>; // per-cell
  notebookState: IState<NotebookState>; // per-renderer in the notebook
  postMessage(msg: unknown): void;
}

declare function acquireNotebookRendererApi<CellState = any, NotebookState = any>():
  IRendererApi<CellState, NotebookState>;

Q: is the cell state cleared when the user re-evaluates the cell? It could be useful if the user is, for example, zoomed in on a graph.
The caveat is that acquireNotebookRendererApi() alone won't work -- we need some way to identify the current cell when that's being called. That could be the document.currentScript, which would work if cells get evaluated like how I have them in the stater. But if, for example, a renderer renders output by attaching a MutationObserver and running code when a certain element is created, that won't work.

Followup from call: cell state is probably unnecessary given two things:

We can identify cell outputs. Currently I think the right way to do this in NotebookOutputRenderer.render is to use document.cells.find(cell => cell.outputs.includes(output))?.uri. Maybe this can be exposed more easily, @rebornix  for thoughts
We can know when cells get unrendered. I think the best way to do this is an event exposed on the API which is called immediately before the cell gets removed from the DOM.

That would make the API something like this:
interface IRendererApi<State> {
// mostly-existing on the webview api:
  setState(value: T): void;
  getState(): T | undefined;
  getState(defaultValue: T): T | undefined;
  postMessage(msg: unknown): void;

// new:
  readonly onCellWillUnmount: Event<string /* cell uri */>;
}

Q:

Should we also have React-like onCellDidMount: Event<string /* cell uri */, HTMLElement>? May be a convenient alternative to my onload hook
The EventEmitter/Event is in the vscode core. Can we easily bundle it for webviews? Or should we have a minimal copy of the implementation in the webview code?

This will require acquireNotebookRendererApi to be called synchronously in the preload script, I think, so we can associate it with a specific renderer.

I don't think that's required, we can wrap the renderer scripts in an IIFE that provides the right function under that name

Or should we have a minimal copy of the implementation in the webview code?

I think it's better to reimplement this stuff since otherwise you'll pull in all of vs/base/common

I don't think that's required, we can wrap the renderer scripts in an IIFE that provides the right function under that name

To do this we need to intercept the script. We might be able to do that for our own URIs but in development the files can load from http://localhost. It also would not make them available to anything outside the file, like hot-module-loaded code or code-split paths.

Initial implementation:

branch: https://github.com/microsoft/vscode/compare/connor4312/webview-state-api

I have a branch of the stater with .d.ts and some usage of the new APIs: https://github.com/microsoft/vscode-notebook-renderer-starter/compare/enhanced-api
In particular, I found onload in my script stopped working at some point (and the internet suggests this shouldn't have ever worked for a script without an src...) Earlier I had put in a workaround but the onDidMountCell API provides a graceful workaround for the issue.

We should make the cell URI more accessible to the renderer and/or output. Without that I can't currently do any cell-level APIs.
At the moment I just tack on state management to the base vscode API. As mentioned in standup, the presence of this state brings up the question around whether it's something that content providers would be interested in serializing in the notebook.

Other observations:

Debugging webview internal code is a pain
Not having types also makes writing this painful, maybe @eamodio's work with getting webpack bundles in our build process will help here? Ideally we could write the notebook API in a standalone TS file and then get it as a string in the editor code.
Not sure how to unit test this code. Maybe can be fixed with a bundling solution...

Should we also have React-like onCellDidMount: Event<string /* cell uri */, HTMLElement>? May be a convenient alternative to my onload hook

I like those ideas but I wouldn't use react lingo but something that's more familiar in pure html terms

First of all, good work and I like the shape of the API in overall.

One way might be to allow users to call acquireNotebookRendererApi synchronously or with their renderer ID.

Not a fan of using document.currentScript  as the namespace. Like you said above, it might not work if renderers use split bundles and it also makes it unclear what's the expected behavior when renderers generate inline scripts in outputs (as the namespace can change). acquireNotebookRendererApi(renderType) has no such problem if I understand correctly.

onDidMountCell

Currently we support rendering multiple outputs for a single cell (we might still have some layout issue with this) so we may need onDidMountCellOutput other than onDidMountCell. Also a cell can have multiple outputs rendered by different renderers.

onWillUnmount* / onDidUnmount*

Similarly, we need onWillUnmountOutput but the catch is we don't have identifiers for outputs, so we can't describe onDidUnmount* as the DOM element is then already removed from the DOM tree. Probably we can have a single event onBeforeUnmount*: Event<Uri, HTMLElement>

Not having types also makes writing this painful (currently all webview side code, including JS parts, is in an HTML template literal), maybe @eamodio's work with getting webpack bundles in our build process will help here?

The challenge is we need to inline the scripts in the HTML template as Webview iframes are hosted in another domain.

Ideally we could write the notebook API in a standalone TS file and then get it as a string in the editor code.

This can work and we did that for vs/loader.js https://github.com/microsoft/vscode/blob/master/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts#L190-L205 .

Thanks for the feedback! Updated my PR:

I moved the inline script into a separate file, which is TS, and I then stringify the function to inject it into the HTML. Not the prettiest, but adds no overhead and stringification behavior of functions in js is ratified in ECMA. As part of this I took the opportunity to type the messages messages passed back and forth better.
Made the rendererType required.
Also, the event is onDidCreateCell and onWillDestroyCell. At the time this is called the cell will be in the DOM. These points match React's lifecycle hooks which in my experience have been good opportunities. We could have a "will create" and "did destroy" as well but this might be too extraneous.
For multiple cell outputs: I think we will need a way to identify outputs. What's the best way to do this? I could do something like cellUri#outputIndex?

Closing with the merged PR. We can continue discussion and iteration in a clean issue for next month.


Create a doc to track the NVTabular Software Stack

Viswanathan Sankaranaryanan is working on a draft. The doc will look similar to what HugeCTR currently has in place.

HI Lamont, I have created a draft. Please review this with Ben, Julio, Alberto, Joey Wang and James Sohn
https://docs.google.com/spreadsheets/d/1JI7azHnmx92R0QOmRH8wqtxqBDwLwnLsdrRs8_I_YAc/edit?usp=sharing


queryKeyHashFn not working correctly?

Hey again :)
I believe queryClient.setQueryData doesnt use the queryKeyHashFn I supplied, and therefore the updater I'm passing receives undefined for the current cached value argument.
I recently added queryKeyHashFn, and now when using queryClient.setQueryData my updater always receives undefined.
Could you please take a look?
Thank you

Hello @omerman :)
Try with the latest beta version please<EMAIL_ADDRESS>Thank you

Works well! :)

@reactstack/svelte-query is no longer supported. Please use @sveltestack/svelte-query instead.

@reactstack/svelte-query is no longer supported. Please use @sveltestack/svelte-query instead.


Fix documentation for useing Persisted Queries with Relay

The Relay usage of Persisted Query is broken and the type used for params is misleading.
fixes #2756

I'm not even sure if we should check if the doc_id is a string ?


API Search not cleared after closing the popup.

Description:
Create multiple APIs a publish them.
Create a new application and navigate to its subscription listing page.
Click the "SUBSCRIBE APIS" button next to "Subscription Management" title.
Search for an API.
Without clearing the search close the window.
Now again open the window without refreshing the page.
The previous filtered APIs are displayed, but the search text is not visible in the text box.
After clicking the search button full API list can be viewed.

Expected behavior
When opening the popup for the second time, we need to show the text inside the search textbox.

The text clear button (X) button inside the search text box doesn't clear the text in the search text box.
search is cleared and Displaying all APIs helper text is displayed under the search text box.


Unsure of how to use flatten and unwind

So I am trying to use this NPM package and am unsure as to how to use (-F) flatten.
json2csv -i 3153_Avvo_sample.json -F -o test.csv
It appears to work on plain objects, however it does not appear to work on an Array of Objects.

Hi @Blubagoo ,
Can you provide a sample data input, the output that you are getting and the data that you'd like to get?

I'm also unsure how to use CLI to flatten and unwind an Array of Objects.
I've attached an Archive.zip with 2 files

input.json
output_desired.csv

Is there a way to ensure all arrays (including subarrays) are fully expanded automatically - without a user having to specify a list?
Archive.zip
Many thanks, Mark

Hi @markwynter ,
The is no way to automation unwind and flatten nested array. You have to do it manually. In your case, it would be something like: json2csv.parse(data, { unwind: ['data', 'data.followers'], flatten: true }); and you get something like:
"data.id","data.gid","data.created_at","data.followers.id","data.followers.gid","data.followers.resource_type","data.modified_at","data.name","data.notes","data.workspace.id","data.workspace.gid","data.workspace.resource_type","next_page"
1122447119237433,"1122447119237433","2019-05-09T17:02:23.718Z",1121767743328353,"1121767743328353","user","2019-05-09T17:02:35.864Z","Making feature image","",1121769302732055,"1121769302732055","workspace",

If you want to use _ instead of . as a separator for the header you can add the option: flattenSeparator: '_'.
If you want to change the order of the fields or the fields that are added, you can add the fields option.
If you are using the CLI, the same options apply. Just check the README.
Please let me know if this help.

@Blubagoo I assume that your problem is that you are missing the unwind option. But I can't tell for sure unless I get some sample data.

Thanks @juanjoDiaz  It works really well!
In terms of auto-unwinding, here's a jq snippet I found while searching. It produces a compact list of all keys - and the arrays to unwind are those ending in [] - which I've highlighted in bold.  Next step is to use grep and sed to auto-generate the unwind list.  What do you think?
jq '[path(..)|map(if type=="number" then "[]" else tostring end)|join(".")|split(".[]")|join("[]")]|unique|.[]' asana.json
""
"data"
"data[]"
"data[].created_at"
"data[].followers"
"data[].followers[]"
"data[].followers[].gid"
"data[].followers[].id"
"data[].followers[].resource_type"
"data[].gid"
"data[].id"
"data[].modified_at"
"data[].name"
"data[].notes"
"data[].workspace"
"data[].workspace.gid"
"data[].workspace.id"
"data[].workspace.resource_type"

Sounds good. It definitely covers your case.
In general, I like to control what's going on during the conversion and I always know the format of the data that I am converting, so I like to be explicit on the options. Of course, that's my personal preference. If you want a more general solution that covers all cases, your solution seems good to me.

Many thanks @juanjoDiaz - fabulous package!

Hi @juanjoDiaz ,
I am trying to use unwind and flatten options of json2csv, am able to use it successfully when i give 'fields' options, but I want to externalize the fields to a property json file.  I tried using 'fieldsConfig' : 'params.json' and 'config': 'params.json'.  Both these options do not work, I see default unwind with all the params that come in even though not added in the json file.
Can you please suggest an ideas.
`
const fields = '../../../../config/scanResultRequest.json';   //doesnt work
const fields2 = [   //works
'scanSnapshot.sessionId',
'scanSnapshot.sourceId',
'scanSnapshot.customer.customerId',
'scanSnapshot.customer.customerStatus',
'scanSnapshot.customer.customerDOPPreference',
'result.employeeId',
'result.time',
'result.providerDOP',
'result.locationId',
];
const jsonToCsv = new Parser({
config: '../../../../config/scanResultRequest.json',   //not working
// fieldsConfig: '../../../../config/scanResultRequest.json',  //not working
// fieldsConfig: fields,   //not working
//   field: fields,  //working
//   unwind: config.get('Config.Reports.flattenObjects'),
unwind: [
'scanSnapshot',
'scanSnapshot.customer',
'scanSnapshot.targetServices',
'scanSnapshot.priorSelectedServices',
'scanSnapshot.nonscanFilter',
'scanSnapshot.scanQuery',
'scanSnapshot.scanQuery.service',
'scanSnapshot.scanQuery.locations',
'result',
],
unwindBlank: true,
flatten: true,
});
try {
const csv = jsonToCsv.parse(scans);
response.attachment(config.get('Config.Reports.filename'));
response.status(200).send(csv);
} catch (error) {
console.log('error:', error.message);
response.status(500).send(error.message);
}
`

Please, read an follow the documentation @nushrivastava

I want to externalize the fields to a property json file. I tried using 'fieldsConfig' : 'params.json' and 'config': 'params.json'.

Neither of those options is documented nor supported.
json2csv takes a JSON object as config.
If you want to use a external file, you just need to load it and parse it.
In node:
const config = require('../../../../config/scanResultRequest.json');
const jsonToCsv = new Parser(config);

or in the browser use fetch.


Dictionary has random ordering

Hi,
I'm using a recent windows custom build.
I don't know if it is a bug or a missing feature, but parsing a Dictionnary returns keys in random order.
func _ready():

    var dico = {
        A = "1 - April",
        B = "2 - Banana",
        C = "3 - Cocoa",
        D = "4 - Drum",
        E = "5 - Elephant",
    }

    for k in dico :
        print(k," : ",dico[k])

returns keys in this order :
C : 3 - Cocoa
D : 4 - Drum
E : 5 - Elephant
A : 1 - April
B : 2 - Banana

I fail to see the coherence of this behavior.
It could be far more usefull if the ordering was the same the keys were entered into the dictionnary, or at least ordered alphabetically.

A dictionary doesn't have an order by definition IMHO.

Yeah that functionality can be seen in many different languages. You can
sort the dictionary yourself.
On Wed, Jan 28, 2015 at 4:31 PM, philiplb<EMAIL_ADDRESS>wrote:

A dictionary doesn't have an order by definition IMHO.
—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/1310#issuecomment-71920429.

@philiplb :
I've just reread the wiki doc to remember where i got the certainty i could expect this behavior from Godot's dictionaries.
It is not said explicitly, but the comment into the "GDScript/Language/For" section, lets think Godot's dictionary is expected to iterate keys in a specific order (alphabetically or in the entered order).
var dict = {"a":0, "b":1, "c":2}
for i in dict:
    print(dict[i])  # loop iterates the keys; with i being "a","b" and c" it prints 0, 1 and 2.

https://github.com/okamstudio/godot/wiki/gdscript#for
@randyyaj : thanks for this "alphabetical sorting" workaround. if you have a simple one for sorting them in the same order they were entered into the dictionary, you could save some lazy neurons of mines.

Yeah there is a way but it is not efficient at all.
Just store your keys into an array when you populate your dictionary.
var dict = {"a":0, "b":1, "c":2}
var dict_order = ["a","b","c"]
for i in dict_order:
    print(dict[i])  # loop iterates the keys; with i being "a","b" and c" it prints 0, 1 and 2.

@randyyaj : yep, that's what i've done. but since my dictionary contains a great number of keys, and that listing them manually into an extra array was error-prone, I simply created a dict_push_back() func that populated an extra key containing the list (that i inefficiently and lazily choose to stored as a comma separated string list).
func dico_push_back(dico, key, data):
	if dico.has("_key_order"):
		dico["_key_order"] += ","
	else:
		dico["_key_order"] = ""
	dico["_key_order"] += key

	dico[key] = data

ok, since random order is considered as an expected and globally accepted behavior for a dictionary, I'm closing this issue.

Probably fixed by 0a59c3c3a6a8c13a5c82d59d9587fca31f900604 though.


How to ban ip after a certain amout of tries ?

How to ban ip after a certain amout of tries ?
Thanks

Well, I think implementation of such systems depend on what you need/want. A first step would be to look into middlewares: https://fastapi.tiangolo.com/tutorial/middleware/


Exception in delivering result of invoking '_FilesCollectionWrite_assets': TypeError: Cannot read property 'link' of undefined

I'm trying to get a file from the collection and generate a download link for it, but I keep getting the error above. File uploaded successfully but can't retrieve it. Here is my code:
if (file) {
            var uploadInstance = Assets.insert({
                file: file,
                streams: 'dynamic',
                chunkSize: 'dynamic'
            }, false);

            uploadInstance.on('start', function() {
                template.currentUpload.set(this);
            });

            uploadInstance.on('end', function(err, fileObj) {
                if (err) {
                    FlashMessages.sendError(err.reason);
                } else {
                    FlashMessages.sendSuccess('File "' + fileObj.name + '" successfully uploaded');
                    console.log(fileObj._id); // returns an Id
                    var fileRef = Assets.findOne({_id: fileObj._id});
                    console.log(fileRef); // returns undefined
                    var link = fileRef.link();
                    console.log(link);
                }
                template.currentUpload.set(false);
            });

            uploadInstance.start();
        }

I don't know why it's returning undefined, but if I use Assets.find({_id: fileObj._id}) it returns a FilesCursor which I wasn't able to work with, throws an error that one must pass a plain object when I try to generate a link.

@tobitech ,

Before you can query FilesCollection you have to publish, and subscribe on its data. As with any other Meteor's collection. That's why you're getting undefined
Please read the docs before asking the question here, as it has the answer on your question. Taking a look on the .link() method you may find out what it will work in the next way:

            uploadInstance.on('end', function(err, fileObj) {
                if (err) {
                    FlashMessages.sendError(err.reason);
                } else {
                    FlashMessages.sendSuccess('File "' + fileObj.name + '" successfully uploaded');
                    console.log(fileObj._id); // returns an Id
                    var link = Assets.link(fileObj);
                    console.log(link);
                }
                template.currentUpload.set(false);
            });

I read the docs. And I already had Publications and Subscriptions setup for FilesCollection, .find() works but .findOne() didn't. I just didn't know why it was returning undefined. Anyway the .link() code you posted worked for me. Thank you.

Feel free to reopen it in case if the issue still persists on your end.
Please, support this project by:

Star on GitHub
Star on Atmosphere
Check other packages we have made


Fix casing of batch transcription options

Using the documented values for the PunctuationMode and ProfanityFilterMode batch-transcription options fails with HTTP 400:

Changing the casing to PascalCase fixes the bad requests.

@c-w : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Color Coordination for place values

Teachers indicated that having each place value be it's own color would be a good visual addition.

While this has been added for the numbers as the original divisor and dividend, I should add these as incremental steps


[Spine-TS] Multipage Texture Bug Fix/Support

@AleBles,
I don't know how this pull request thing works. Anyway, I'll put my code changes here. Like before, I applied this to the JS output. It's currently working well. Code isn't elegant so if you can integrate this into the main code base so it won't break anything, that'd be cool! I made it look for 20 pages and assigned filenames as key names since this is what the textureLoader is being fed from the atlas text file. Ex:
textureLoader(myanim.png);
textureLoader(myanim1.png);
textureLoader(myanim2.png);
...
Around Line 9217:
SpinePlugin.prototype.addSpineLoader = function () {
    Phaser.Loader.prototype.spine = function (key, url, scalingVariants) {
        var path = url.substr(0, url.lastIndexOf('.'));
        this.text(SpinePlugin.SPINE_NAMESPACE + key, path + '.atlas');
        this.json(SpinePlugin.SPINE_NAMESPACE + key, path + '.json');
        this.image(SpinePlugin.SPINE_NAMESPACE + key, path + '.png');

        //SHIBEKIN69 ADDITION: Load up spine parts. Use filenames as key names. Try to load up to 20 pages.
        this.image(key + '.png', path + '.png');
        try {
          for (var spicount = 2; spicount < 20; spicount++) {
            this.image(key + String(spicount) + '.png', path + String(spicount) + '.png');
          }
        } catch(e) {}
    };
};

Around Line 9300 - 9320:
    Spine.prototype.createSkeleton = function (key) {
        var _this = this;
        var atlas = new spine.TextureAtlas(this.game.cache.getText(PhaserSpine.SpinePlugin.SPINE_NAMESPACE + key), function (path) {
            if (_this.game.renderType === Phaser.CANVAS) {
                //return new PhaserSpine.Canvas.Texture(_this.game.cache.getImage(PhaserSpine.SpinePlugin.SPINE_NAMESPACE + key));
                //SHIBEKIN69 CHANGE: Use path instead.
                return new PhaserSpine.Canvas.Texture(_this.game.cache.getImage(path));
            }
            //return new PhaserSpine.WebGL.Texture(_this.game.renderer.gl, _this.game.cache.getImage(PhaserSpine.SpinePlugin.SPINE_NAMESPACE + key));
            //SHIBEKIN69 CHANGE: Use path instead.
            return new PhaserSpine.WebGL.Texture(_this.game.renderer.gl, _this.game.cache.getImage(path));
        });
        var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
        var skeletonJson = new spine.SkeletonJson(atlasLoader);
        var skeletonData = skeletonJson.readSkeletonData(this.game.cache.getJSON(PhaserSpine.SpinePlugin.SPINE_NAMESPACE + key));
        return new spine.Skeleton(skeletonData);
    };

Ok, this change worked for me:
In the function createCombinedSkin, around line 9400:
for (var key in skin.attachments) {
    var slotKeyPair = key.split(':');
    var slotIndex = parseInt(slotKeyPair[0]);
    //var attachmentName = slotKeyPair[1];
    //CHANGE
    var attachmentName = Object.keys(skin.attachments[key])[0];
    //var attachment = skin.attachments[key];
    //CHANGE
    var attachment = skin.attachments[key][attachmentName];
    console.log(key);
    console.log(attachment);
    if (undefined === slotIndex || undefined === attachmentName) {
        console.warn('something went wrong with reading the attachments index and/or name');
        return;
    }
    if (newSkin.getAttachment(slotIndex, attachmentName) !== undefined) {
        //CHANGE: IMPORTANT! COMMENT THESE OUT!
        //console.warn('Found double attachment for: ' + skinName + '. Skipping');
        //continue;
    }
    newSkin.addAttachment(slotIndex, attachmentName, attachment);
    console.log(newSkin);
}

@shibekin69 Could you add a simple multipage export  that I can add to examples?

@AleBles just the output with multiple pages right?

BTW: The rough fix that I had will produce a lot of console errors, since it tries to load atlas page images that may or may not be there for each spine load. So this'll definitely need a more elegant fix.
@Simple example of multipage output: The Spine project and output is inside this directory. It's a simple Spine animation consisting of 8 circles of different colors. I set the atlas page size to a max of 512px. Since each circle is 300px, the output will be forced to put each of the circles in separate pages.
multipage-test.zip

I have something that goes through the textureAtlas, but I couldn't complete this solution since I didn't know how to call the game object or pass the appropriate stuff to the textureLoader. Maybe you can make use of it. I commented out my code here:
		TextureAtlas.prototype.load = function (atlasText, textureLoader) {
			if (textureLoader == null)
				throw new Error("textureLoader cannot be null.");
			var reader = new TextureAtlasReader(atlasText);
			var tuple = new Array(4);
                        /*
			var page = null;
			var pagekey = null;
			var url = null;
			var path = null;
                        */
			while (true) {
				var line = reader.readLine();
				if (line == null)
					break;
				line = line.trim();
				if (line.length == 0)
					page = null;
				else if (!page) {
					page = new TextureAtlasPage();
					page.name = line;
					if (reader.readTuple(tuple) == 2) {
						page.width = parseInt(tuple[0]);
						page.height = parseInt(tuple[1]);
						reader.readTuple(tuple);
					}
					reader.readTuple(tuple);
					page.minFilter = spine.Texture.filterFromString(tuple[0]);
					page.magFilter = spine.Texture.filterFromString(tuple[1]);
					var direction = reader.readValue();
					page.uWrap = spine.TextureWrap.ClampToEdge;
					page.vWrap = spine.TextureWrap.ClampToEdge;
					if (direction == "x")
						page.uWrap = spine.TextureWrap.Repeat;
					else if (direction == "y")
						page.vWrap = spine.TextureWrap.Repeat;
					else if (direction == "xy")
						page.uWrap = page.vWrap = spine.TextureWrap.Repeat;
					page.texture = textureLoader(line);
					page.texture.setFilters(page.minFilter, page.magFilter);
					page.texture.setWraps(page.uWrap, page.vWrap);
					page.width = page.texture.getImage().width;
					page.height = page.texture.getImage().height;

					//texture._image.currentSrc points to the first texture file!
					/*
					console.log('SPINE PAGES: ');
					console.log(textureLoader);
					console.log(this.pages);
					if (vnManager.gamestate.game.cache.checkImageKey(PhaserSpine.SpinePlugin.SPINE_NAMESPACE + page.name.substr(0, page.name.lastIndexOf('.')) )) {
						pagekey = PhaserSpine.SpinePlugin.SPINE_NAMESPACE + page.name.substr(0, page.name.lastIndexOf('.'));
						console.log(vnManager.gamestate.game.cache._cache.image[pagekey]);
						url = vnManager.gamestate.game.cache._cache.image[pagekey].url;
						path = url.substr(0, url.lastIndexOf('/'));
					}
					console.log(page.name);
					console.log(path + '/' + page.name);
					vnManager.gamestate.game.load.image(page.name, path + '/' + page.name);
					vnManager.gamestate.game.load.start();

					page.texture._image.currentSrc = page.texture._image.baseURI + path + '/' + page.name + '?v=' + parseInt(Math.random() * 1000000);
					*/

					this.pages.push(page);
				}

I've just comitted a solution that doesn'y modify the original spine-ts code, you're welcome to try it out =)

@AleBles
I got feedback on this one. It seems to work in general, but I think it also tries to load up some similarly named images in the cache, which it isn't supposed to (I'm getting some Phaser.Loader errors). For example, if my spine output project is named:
xxxxxbase01.json
xxxxxbase01.png
xxxxxbase01.atlas
I see Phaser.Loader errors where it's trying to load other files that's kind of similar in terms of file name that's already in the cache. Files like:
xxxxxtunic.png
xxxxxdress.png
xxxxxarmor.png
xxxxxbikini.png
etc...
When it's supposed to load in only multipage files following the output format:
[filename][pagenumber].png
xxxxxbase012.png  <- Page 2
xxxxxbase013.png
xxxxxbase014.png
...
xxxxxbase019.png
xxxxxbase0110.png <- Page 10
xxxxxbase0123.png <- Page 23
Maybe you can just check the entire filename of the first file?

Ah hold on. Let me look into my stuff more. I think I know what's causing this.

I'll investigate this one further, but so far from the loader errors I've seen, when I load multiple spine projects into the game, it thinks all of them are in the same directory as the first one. So for example, if I organized my spine files like these:
CharA/charaspine.json
CharA/charaspine.atlas
CharA/charaspine.png
CharB/charbspine.json
CharB/charbspine.atlas
CharB/charbspine.png
CharB/charbspine2.png
CharC/charcspine.json
CharC/charcspine.atlas
CharC/charcspine.png
CharC/charcspine2.png
It tries to load charbspine and charcspine images using CharA's directory

O, I think I figured it out. Please see proposed fix below. Added stuff are below the //CHANGE comment lines. I fixed it up to use a corrected path variable. Then I made it check for just the filename against the current file that's just been loaded if they're from the same spine files, if so, attempt to load whatever filenames are in the atlas using the path.
SpinePlugin.prototype.addSpineLoader = function () {
    Phaser.Loader.prototype.spine = function (key, url, scalingVariants) {
        var _this = this;
        var path = url.substr(0, url.lastIndexOf('.'));
        //CHANGE Added pathonly and filenameonly. (use substring here, this works. substr doesn't want to stop at the last period.)
        var pathonly = url.substr(0, url.lastIndexOf('/'));
        var filenameonly = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));

        this.text('atlas_' + SpinePlugin.SPINE_NAMESPACE + '_' + key, path + '.atlas');
        this.json(SpinePlugin.SPINE_NAMESPACE + key, path + '.json');
        this.onFileComplete.add(function (progress, name) {
            if (name.indexOf('atlas_spine_') === 0) {
                var atlas = _this.game.cache.getText(name);
                var firstImageName = null;
                atlas.split(/\r\n|\r|\n/).forEach(function (line, idx) {
                    if (line.length === 0 || line.indexOf(':') !== -1) {
                        return;
                    }
                    if (firstImageName === null) {
                        firstImageName = line.substr(0, line.lastIndexOf('.'));
                    }
                    if (firstImageName !== null && line.indexOf(firstImageName) !== -1 && line.indexOf('.') !== -1) {
                        //this.image(line, url.substr(0, url.lastIndexOf('/') + 1) + line);
                        //CHANGE
                        if (filenameonly === name.replace('atlas_spine_', '')) {
                          this.image(line, pathonly + '/' + line);
                          console.log('SPINE PATH: ');
                          console.log(pathonly + '/' + line);
                        }
                    }
                }.bind(_this));
            }
        });
    };
};

@shibekin69 this fix doesn't work when you load up the spine with a different keyname than the filename (see the multipart-atlas example)

Ah Hmm..
I'm relying on comparing the filename against the generated atlas_spine_key text name assuming they're the same. Hm..
The URL contains the directory path to the json file..
key: alice
path: /image/spine/alice/alice.json
So we need to take note of the path and filename for comparison later when it looks for atlas_spine_keyname:
pathonly: /image/spine/alice/
filenameonly: alice
comparison: alice === (atlas_spine_)alice     <-- WILL WORK
So the problem is, the keyname can be different from the filename.
key: alicegiant
path: /image/spine/alice/alice.json
pathonly: /image/spine/alice/
filenameonly: alice
comparison: alice === (atlas_spine_)alicegiant     <-- WILL MISS THIS ONE.
What if we just do the comparison for both the filename and the keyname?
comparison: filenameonly === (atlas_spine_)keyname || keyname === (atlas_spine_)keyname

How about this? Proposed solution:
SpinePlugin.prototype.addSpineLoader = function () {
    Phaser.Loader.prototype.spine = function (key, url, scalingVariants) {
        var _this = this;
        var path = url.substr(0, url.lastIndexOf('.'));
        //CHANGE Added pathonly and filenameonly. (use substring here, this works. substr doesn't want to stop at the last period.)
        var pathonly = url.substr(0, url.lastIndexOf('/'));
        var filenameonly = url.substring(url.lastIndexOf('/') + 1, url.lastIndexOf('.'));

        this.text('atlas_' + SpinePlugin.SPINE_NAMESPACE + '_' + key, path + '.atlas');
        this.json(SpinePlugin.SPINE_NAMESPACE + key, path + '.json');
        this.onFileComplete.add(function (progress, name) {
            if (name.indexOf('atlas_spine_') === 0) {
                var atlas = _this.game.cache.getText(name);
                var firstImageName = null;
                atlas.split(/\r\n|\r|\n/).forEach(function (line, idx) {
                    if (line.length === 0 || line.indexOf(':') !== -1) {
                        return;
                    }
                    if (firstImageName === null) {
                        firstImageName = line.substr(0, line.lastIndexOf('.'));
                    }
                    if (firstImageName !== null && line.indexOf(firstImageName) !== -1 && line.indexOf('.') !== -1) {
                        //this.image(line, url.substr(0, url.lastIndexOf('/') + 1) + line);
                        //CHANGE Only load up atlas images if filename or keyname matches text atlas key [atlas_spine_keyname] are of the same spine project
                        //Assumes each spine project is in its own separate directory. Filename or keyname must match text atlas key!
                        if (filenameonly === name.replace('atlas_spine_', '') || key === name.replace('atlas_spine_', '')) {
                          this.image(line, pathonly + '/' + line);
                          //console.log('SPINE PATH: ');
                          //console.log(pathonly + '/' + line);
                        }
                    }
                }.bind(_this));
            }
        });
    };
};

Appears to work, thanks dude!


Tracking: Alpine 3.14 EOL scheduled for 1st May 2023

[ ] Open a PR and deprecate/EOL alpine 3.14
[x] Update https://github.com/devcontainers/images/issues/90
[ ] Update templates if necessary

Closing as completed.