[feature request] Fail Copy task if no files are matched

Required Information
Entering this information will route you directly to the right team and expedite traction.
Question, Bug, or Feature?
Type: Feature
Enter Task Name: CopyFiles
Environment

Server - Azure Pipelines or TFS on-premises? both

Agent - Hosted or Private: all

Issue Description
re-reporting here as requested: https://github.com/MicrosoftDocs/azure-devops-docs/issues/10678
The docs say this in the notes section: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/copy-files-v2?view=azure-pipelines&tabs=yaml&viewFallbackFrom=azure-devops

If no files are matched, the task will still report success.

I can't be the only person who would like the copy task to fail if no files are matched, so the docs having a suggestion on how to achieve this would benefit all of us.
Task logs
N/A
Troubleshooting
N/A
Error logs
I want an error, to inform me that I messed up the file glob, or that an earlier task that was supposed to create files did not, despite not causing the pipeline to fail earlier. But the current behaviour is that it does not fail, and the pipeline continues running, possibly ending up with a "successful" build that is missing artifacts and then breaks downstream processes.

I still think a task parameter to opt into "error when zero files copied" will help catch pipeline problems.

Apparently my opinion is unpopular.
I would have saved time in the past investigating pipeline issues if a copy that should always find files failed when it doesn't. The worst part is when the pipeline succeeds, and then something downstream fails, like a deployment. It can be non-trivial to figure out what went wrong, which would be much easier if the copy task could be configured to fail.


browser flow control no longer dictates execution order

prior to switching to protractor 2.0, we were able to inject methods that return promises into the execution chain using the browser's control flow
browser.controlFlow().execute(deferred_method);

After 2.0, however, this no longer works. I have attempted to address the controlFlow of protractor.WebDriver, among other things, but am simply having no luck. Is there no longer a way to pass a promise into the control flow to occur before testing begins? Am I going about it wrong? I found some information on the site regarding webdriver's promises, but nothing quite as convenient and straightforward as this.
Right now the answer seems to be that I would now have to make some other deferred method to trigger a protractor related event, and I'm really hoping that is not actually the answer.

I just left a comment on Issue 1991 (maybe related?) because I'm seeing a similar problem. Actions are not always happening in the correct order.
For example, I'm clicking buttons 1, 2, 3, 4 in that order. The order I'm seeing is 2, 1, 3, 4.
This test worked before upgrading to 2.0.

I am currently getting around my issue by executing the browser.controlFlow().execute(deferred_method); command inside of an assertion. Not the prettiest, but it works

@brocsk can you share the code you are using to get those results? It would be especially great if you could modify Protractor's example tests to show this issue.

@whtevn I'm not quite sure what you're trying to achieve. What do you mean by 'pass a promise into the control flow to occur before testing begins'. Could using beforeEach or an onPrepare function help?

This should all be fixed in the next version of the selenium-webdriver node module after https://github.com/SeleniumHQ/selenium/issues/444


Port forwarding failure on password authentication

Description
When attempting to make a request over a forwarded port through shellhub, I receive an error.
Example:

I have a machine, WEB, running on a remote network (<IP_ADDRESS>), hosting a webserver on port 8000.
I have a gateway server, GATEWAY, running the shellhub agent (<IP_ADDRESS>) on the same network
I want to forward traffic on my local port, 8055, to WEB:8000, so I can run make requests to WEB without opening a new session every time.
I am using password authentication for all ssh connections

SSH connection to GATEWAY succeeds
I can ssh into GATEWAY no problem, and once I'm ssh'd in, I can connect to WEB no problem.
ssh user<EMAIL_ADDRESS>curl <IP_ADDRESS>:8000/my-endpoint
# 200: Success

Same thing if I'm on VPN and SSH into GATEWAY directly
ssh<EMAIL_ADDRESS>curl <IP_ADDRESS>:8000/my-endpoint
# 200: Success

Port Forwarding Succeeds when open on VPN with IP address
If I connect via VPN and attempt to port forward through vanilla SSH, I can access WEB from my local machine.
ssh -L 8055:<IP_ADDRESS>:8000<EMAIL_ADDRESS>-v -v -v -N

Then in a separate terminal, I can run a successful http request on the locally bound port
curl <IP_ADDRESS>:8055/my-endpoint
# 200: Success

The log from my successful connection reads:
debug1: Connection to port 8055 forwarding to <IP_ADDRESS> port 8000 requested.
debug2: fd 6 setting TCP_NODELAY
debug2: fd 6 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
debug3: send packet: type 90
debug3: receive packet: type 91
debug2: channel 2: open confirm rwindow 2097152 rmax 32768
debug3: receive packet: type 96
debug2: channel 2: rcvd eof
debug2: channel 2: output open -> drain
debug2: channel 2: obuf empty
debug2: chan_shutdown_write: channel 2: (i0 o1 sock 6 wfd 6 efd -1 [closed])
debug2: channel 2: output drain -> closed
debug2: channel 2: read failed rfd 6 maxlen 32768: Broken pipe
debug2: channel 2: read failed
debug2: chan_shutdown_read: channel 2: (i0 o3 sock 6 wfd 6 efd -1 [closed])
debug2: channel 2: input open -> drain
debug2: channel 2: ibuf empty
debug2: channel 2: send eof
debug3: send packet: type 96
debug2: channel 2: input drain -> closed
debug2: channel 2: send close
debug3: send packet: type 97
debug3: channel 2: will not send data after close
debug3: receive packet: type 97
debug2: channel 2: rcvd close
debug3: channel 2: will not send data after close
debug2: channel 2: is dead
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 8055 for <IP_ADDRESS> port 8000, connect from <IP_ADDRESS> port 36794 to <IP_ADDRESS> port 8055, nchannels 3
debug3: channel 2: status: The following connections are open:
  #2 direct-tcpip: listening port 8055 for <IP_ADDRESS> port 8000, connect from <IP_ADDRESS> port 36794 to <IP_ADDRESS> port 8055 (t4 r0 i3/0 o3/0 e[closed]/0 fd 6/6/-1 sock 6 cc -1 io 0x00/0x00)

Port Forwarding Fails if port is forwarded through Shellhub
However, when I try to port forward through shellhub, the connection seems to succeed, but fails as soon as any traffic attempts to go over the connection.
ssh -L 8055:<IP_ADDRESS>:8000 user<EMAIL_ADDRESS>-v -v -v -N

Then in a separate terminal,
curl <IP_ADDRESS>:8055/my-endpoint

Curl gives me this error:
curl: (56) Recv failure: Connection reset by peer
Here's the log of what happens in the port-forward session:
debug1: Connection to port 8055 forwarding to <IP_ADDRESS> port 8000 requested.
debug2: fd 6 setting TCP_NODELAY
debug2: fd 6 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
debug3: send packet: type 90
debug3: receive packet: type 92
channel 2: open failed: connect failed: failed to create session
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 8055 for <IP_ADDRESS> port 8000, connect from <IP_ADDRESS> port 56466 to <IP_ADDRESS> port 8055, nchannels 3
debug3: channel 2: status: The following connections are open:

I am planning on deploying a network with a similar setup at a different location, where I will NOT have VPN access. I am hoping to have this resolved before then, as port-forwarding would make accessing similar WEB devices much simpler.
Any support would be greatly appreciated, thank you.
Edition
Cloud
Version
v0.14.0

Hi, @CloudCray. Thank you for the report.
We are verifying what is happening. As soon as we have feedback, you will be informed.

Hi, @CloudCray.
We have deployed this fix on the Cloud. Could you test it again?


Add release notes link to GitHub releases

Adds link to https://docs.microsoft.com/en-us/cli/azure/release-notes-azure-cli in GitHub release notes.
e.g. https://github.com/Azure/azure-cli/releases/tag/azure-cli-2.0.7

After merging, the change should be published to the GitHub Bot.

Codecov Report

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

@@           Coverage Diff           @@
##           master    #3561   +/-   ##
=======================================
  Coverage   71.45%   71.45%
=======================================
  Files         419      419
  Lines       26050    26050
  Branches     3944     3944
=======================================
  Hits        18614    18614
  Misses       6272     6272
  Partials     1164     1164

Continue to review full report at Codecov.

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


Convert to a Julia package

Should we convert this to a Julia package? It should be easy enough to download the logos in Julia directly. The post-processing code is all shaping up nicely in Julia anyways.

Good idea!


Dev

Add DummyMangler

Implemented in https://github.com/th2-net/th2-conn-dirty-tcp-core/commit/987d441a26e3565c204dd085e4ca7fe8b03513d5


add 3d contact - [closed]

In GitLab by @proyan on Jan 16, 2019, 17:40
Merges topic/refact -> topic/refact

In GitLab by @proyan on Jan 17, 2019, 11:06
added 1 commit
d5947c4c - [unittest][3d contact] add unittest for 3d contact
Compare with previous version

In GitLab by @proyan on Jan 17, 2019, 11:06
@nmansard This should be okay to merge now

In GitLab by @proyan on Jan 17, 2019, 11:11
added 1 commit
76962b4d - [unittest][3d contact] add unittest for 3d contact
Compare with previous version

In GitLab by @nmansard on Jan 17, 2019, 15:50
When you work in copy-past and increment: first commit the initial copy paste (without changes but the class name in that case) ; then commit your changes. That way, we can see only the changes with respect to the previous code.

In GitLab by @nmansard on Jan 17, 2019, 15:51
I believe forcesArr is here a 3D vector. How is it working?

In GitLab by @nmansard on Jan 17, 2019, 15:52
Don't call pinocchio twice for angular and linear. Call it once for the spatial, then alias the linear and angular part if you want.

In GitLab by @proyan on Jan 17, 2019, 15:53
You are seeing a previous commit. The latest PR is here:
https://gepgitlab.laas.fr/loco-3d/crocoddyl/merge_requests/41/diffs#9cfcb42c1765f5360b7cda5361be021fd0dc66aa_290_332

In GitLab by @nmansard on Jan 17, 2019, 15:53
I see no interest in keeping these vv, vw and Jw in the data. Just use them as local variables in the calc method, but don t save them as data fields.

In GitLab by @proyan on Jan 17, 2019, 15:55
You changed the function forces to setForces. I am setting the torque values as zero in the forceVec.

In GitLab by @nmansard on Jan 17, 2019, 15:57
That is bad! Don't PR a side commit like that. Never. If you want to change a name like you are doing, make a simple PR for it (and discuss it beforehand). But don't "pass" a change like this as marginal side effect of a larger PR.
I believe the right names are costposition and costplacement. But I guess you wanted something more related to contact3D and contact6d. I would rather propose to have contactpoint for contact3d ... and I have no idea for contact6d.
Well, never mind, let's not change it again. Just remember not to make a marginal side change in your PR.

In GitLab by @proyan on Jan 17, 2019, 15:59
added 1 commit
c7f242a9 - [contact3d] remove multiple calls to pinocchio framevelocity
Compare with previous version

In GitLab by @proyan on Jan 17, 2019, 16:01
You need these in the calcdiff.
New commit: I removed vv vw and use data.v to store the frame velocity.

In GitLab by @proyan on Jan 17, 2019, 16:03
Sorry about it. Will keep this in mind.

In GitLab by @nmansard on Jan 17, 2019, 16:06
Yes I did. Without discussing it. I am bad.
I don't like that name setForces, as it is both setting the forces and transforming them to a forceVec.

In GitLab by @proyan on Jan 17, 2019, 16:08
Note: There are still two calls to getFrameJacobian.

In GitLab by @proyan on Jan 17, 2019, 16:11
I don't think it would matter so much.
Setting the forces in python is just copying it.
But setting the forces in pinocchio is equivalent to transforming them to a forceVec.

In GitLab by @proyan on Jan 17, 2019, 16:11
Ok. Thanks for the tip.

In GitLab by @proyan on Jan 17, 2019, 16:17
changed this line in version 6 of the diff

In GitLab by @proyan on Jan 17, 2019, 16:17
added 1 commit
b633222c - [contact3d] remove multiple calls to getFrameJacobian
Compare with previous version

In GitLab by @proyan on Jan 19, 2019, 18:56
@nmansard If you think there are no more changes required, please merge this as well.

In GitLab by @nmansard on Jan 20, 2019, 10:52
closed

In GitLab by @proyan on Jan 20, 2019, 12:52
@nmansard
Could you please let me know why this was closed? Or was it a mistake?

In GitLab by @proyan on Jan 20, 2019, 12:52
reopened

In GitLab by @proyan on Jan 20, 2019, 14:02
changed this line in version 8 of the diff

In GitLab by @proyan on Jan 20, 2019, 14:02
added 19 commits
b633222c...9c6af286 - 12 commits from branch loco-3d:topic/refact6b788967 - rename 3d se3 task to CostModelPosition3Dac8a153a - [invdyn derivatives] unittests for 3d contact derivatives wrt vc312445a - [contact 3d] add 3d contactcf872751 - [unittest][3d contact] add unittest for 3d contact9f96a25c - [contact3d] remove multiple calls to pinocchio framevelocity741deb6f - [contact3d] remove multiple calls to getFrameJacobianb39e28a1 - [cost model 3d] remove change of costmodel name. to be done in a new PR
Compare with previous version

In GitLab by @proyan on Jan 20, 2019, 14:04
I've rebased the PR on top of the two previous PRs. I'll close this one and create a fresh new one based on these commits.

In GitLab by @proyan on Jan 20, 2019, 14:04
closed

In GitLab by @proyan on Jan 20, 2019, 14:06
mentioned in merge request !46


undefined is not an object evaluating _this._setComponentRef.bind

## Environment
 React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
      Memory: 752.25 MB / 8.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.6.0 - ~/.nvm/versions/node/v10.6.0/bin/node
      Yarn: 1.10.0 - ~/.yarn/bin/yarn
      npm: 6.1.0 - ~/.nvm/versions/node/v10.6.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
      Android SDK:
        Build Tools: 27.0.3, 28.0.1
        API Levels: 23, 25, 26, 27, 28
    IDEs:
      Android Studio: 3.1 AI-173.4819257
      Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
    npmPackages:
      @types/react: ^16.4.14 => 16.4.14
      @types/react-native: ^0.57.0 => 0.57.0
      react: 16.5.2 => 16.5.2
      react-native: 0.57.1 => 0.57.1
    npmGlobalPackages:
      create-react-native-app: 2.0.2
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7
      react-native: 0.57.1

Hi, I still getting an old issue about undefined is not an object evaluating _this._setComponentRef.bind
I tried adding  "@babel/plugin-transform-flow-strip-types": "^7.0.0" to package.json and set my babel.config.js to
module.exports = {
    'presets': [
        'module:metro-react-native-babel-preset',
        'module:react-native-dotenv',
    ],
    'sourceMaps': true,
    'plugins': [
        '@babel/transform-flow-strip-types',
        '@babel/proposal-class-properties',
        '@babel/proposal-object-rest-spread',
        '@babel/transform-runtime'
    ],
};

any other ideas? seems like this happing in TouchableOpacity onPress property...

I have the same issue on osX, nothing worked for me, tried the solutions from all the github issues  for hours....
This is a weird babel cache issue, I don't have the cache in /tmp/... .
The only thing that worked for me now was to restart the pc....

I have the same problem and I have resolved it rebooting my computer and adding this babel plugin: @babel/plugin-transform-flow-strip-types
But I am sure that is a cache issue, because since RN 57.4 sometimes my iOS simulator cannot update changes done to the source code like if the metro can't detect those changes....

Hello there 👋 this issue has been reported for an old version of React Native. Ideally we'd like everyone to be using 0.59 (see the awesome changes it brought) but we know updating can be a pain. We are going to close this issue because it's from a version before 0.57, which is really old.
But please, if it's actually still an issue with 0.59 please comment below and we can reopen it 😊

The problem is, if we want to use realm, we have to use 0.57 for some compatibility reason


Enhance @GeneratesSchema type discovery

...to make use of ClassGraph's allowModules method.
Reviewer checklist

[ ] Ensure relevant issues are linked (description should include text like "Fixes #")
[ ] Ensure any appropriate documentation has been added or amended

Coverage decreased (-0.03%) to 99.444% when pulling 49f5c0eef2d4e973179c561455283534c4855e61 on alllowed_modules into 7b70dba08e608c4aa61f3768ad6993bf91405145 on main.


How to show a different TiledImage in navigator?

Hi,
i wonder if it is possible to show a different TiledImage in the navigator than in the main viewer.
There was a similar issue already #903 saying that it is not possible as it is. I tried the hack provided in there, but the navigator window stays blank then. So, when I run
var originalImage = viewer.world.getItemAt(0);
var oldNavigatorImage = viewer.navigator.world.getItemAt(0);
viewer.navigator.world.removeItem(oldNavigatorImage);
viewer.navigator.world.removeItem(viewer.navigator.world.getItemAt(0));
viewer.navigator.addTiledImage({
    tileSource: NEWTILESOURCE.dzi,
    originalTiledImage: originalImage
});

the navigator turns blank and the console writes:
Tile 8/0_0 failed to load: /newtilesource/8/0_0.jpeg - error: Image load aborted.
I recognize that the .dzi is never parsed, too (my .dzi route is never visited on the server when I switch the dzi tilesource in the navigator). So, I think the navigator is just not updated 'properly'.
I wonder what I should try more to get this happen. Of course the navigator should be bound to the main image. I am asking since I try to build a plugin where we can switch the image in a side viewer and where the images are still synchronized to the main viewer for navigation. I try to use the navigator and magnifier plugin as a starting point, but they cannot change the image apparantly.

Well, it works in my fiddle.
https://jsfiddle.net/49uq1yqh/3/
So let me follow up why it doesnt work in my life version.

Cool... Let us know what you find!

It works also in my live demo now. The issue was that my tileserver returned null when the queried tile comes from a different image than the image in the current session. So, all on my side.

Cool; good to know.


Validate existing oauth signature

I have the requirement to validate an oauth signature, I've had a look through the module but couldn't see a way to do this.
I've identified a couple of changes that would support this feature but wanted to check if this was already possible.

if you want it for testing you can override some methods like what i did here
https://github.com/ddo/oauth-1.0a/blob/master/test/twitter_sample_data.js#L20-L28

No it's not for testing it for validating the signature on an incoming requests  so overriding the methods won't do it.
The use case is signing outgoing requests and then validating the signature of an incoming callback request with the same client and secret.


Report DRILLDOWN/FILTER in url

In embedded mode is it possible to report DRILLDOWN/FILTER values?

Also please add CONTROL/VARIABLES reporting in URL.

The idea is to have feedback from embedded widget to the parent application. One of the possibilities – change  src attribute to reflect the current widget state. It is possible by changing location.href of the widget app – it will be reflected in the src attribute of the .
Also, if there are any possibilities to communicate between the parent page and iframe'd widget – we can use them.

added in 3.1.24


migrate old plain json as database to sqlite

[ ] design database
[ ] implement it
[ ] write docs


Updated the branding and execution of Iris docs

This includes:

removing the "easy-to-use" statement in Iris' strapline. Let's let users be the judge of that.
improved the styling of the homepage, including re-instating the search bar. (I removed it, and consider it to be a mistake until we properly integrate it into the navigation panel)
Added a what's new for #3010.
Added a extlinks section for convenient linking to github issues with :issue:`number`  and :pr:`number` .

@bjlittle - FWY, this is the last PR for v2.1.0. #3038.

I've pushed a demo of the docs at https://rawgit.com/pelson/scitools.org.uk/iris_docs_dev_tweak/iris/docs/phil_dev/index.html. These will pretty much be what is pushed for the v2.1 release, so open to any/all corrections at this point. I strongly recommend this being done in the form of a PR against my PR, rather than me having to interpret exactly what is intended from review comments.
cc @dkillick

I've pushed a demo of the docs

Thanks @pelson!

@pelson the docs look a lot nicer now 😁


Oracle -> PanicException: Type LongRaw not implemented for oracle!

What language are you using?
Python
What version are you using?
connectorx-0.3.3-cp311-cp311-manylinux_2_28_x86_64.whl (60.5 MB)
What database are you using?
Oracle
What dataframe are you using?
polars
Can you describe your bug?
Panic exception when collecting an Oracle LONG RAW column datatype.
What are the steps to reproduce the behavior?
Table schema (data type LONG RAW)
CREATE TABLE SCHEM.TABL
(
  ID_FILE          NUMBER(15)   NOT NULL,
  FILE_CONTENT     LONG RAW
)

Example query / code
import polars as pl
sql_query = """
select file_content from schem.tabl
"""
df = pl.read_database_uri(sql_query, db_uri)

What is the error?
thread '<unnamed>' panicked at /__w/connector-x/connector-x/connectorx/src/sources/oracle/typesystem.rs:53:18:
not implemented: Type LongRaw not implemented for oracle!
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---------------------------------------------------------------------------
PanicException                            Traceback (most recent call last)
File /opt/conda/lib/python3.11/site-packages/polars/io/database/_utils.py:54, in _read_sql_connectorx(query, connection_uri, partition_on, partition_range, partition_num, protocol, schema_overrides)
     53 try:
---> 54     tbl = cx.read_sql(
     55         conn=connection_uri,
     56         query=query,
     57         return_type="arrow2",
     58         partition_on=partition_on,
     59         partition_range=partition_range,
     60         partition_num=partition_num,
     61         protocol=protocol,
     62     )
     63 except BaseException as err:
     64     # basic sanitisation of /user:pass/ credentials exposed in connectorx errs

File /opt/conda/lib/python3.11/site-packages/connectorx/__init__.py:386, in read_sql(conn, query, return_type, protocol, partition_on, partition_range, partition_num, index_col)
    384 try_import_module("pyarrow")
--> 386 result = _read_sql(
    387     conn,
    388     "arrow2" if return_type in {"arrow2", "polars", "polars2"} else "arrow",
    389     queries=queries,
    390     protocol=protocol,
    391     partition_query=partition_query,
    392 )
    393 df = reconstruct_arrow(result)

PanicException: not implemented: Type LongRaw not implemented for oracle!

The above exception was the direct cause of the following exception:

PanicException                            Traceback (most recent call last)
Cell In[59], line 14
---> 14 u = pl.read_database_uri(sql_query, db_uri)

File /opt/conda/lib/python3.11/site-packages/polars/io/database/functions.py:395, in read_database_uri(query, uri, partition_on, partition_range, partition_num, protocol, engine, schema_overrides, execute_options)
    393         msg = "the 'connectorx' engine does not support use of `execute_options`"
    394         raise ValueError(msg)
--> 395     return _read_sql_connectorx(
    396         query,
    397         connection_uri=uri,
    398         partition_on=partition_on,
    399         partition_range=partition_range,
    400         partition_num=partition_num,
    401         protocol=protocol,
    402         schema_overrides=schema_overrides,
    403     )
    404 elif engine == "adbc":
    405     if not isinstance(query, str):

File /opt/conda/lib/python3.11/site-packages/polars/io/database/_utils.py:66, in _read_sql_connectorx(query, connection_uri, partition_on, partition_range, partition_num, protocol, schema_overrides)
     63 except BaseException as err:
     64     # basic sanitisation of /user:pass/ credentials exposed in connectorx errs
     65     errmsg = re.sub("://[^:]+:[^:]+@", "://***:***@", str(err))
---> 66     raise type(err)(errmsg) from err
     68 return from_arrow(tbl, schema_overrides=schema_overrides)

PanicException: not implemented: Type LongRaw not implemented for oracle!

My data are private so I don't put it here.

(with pandas read_sql the same query works).


match prop never gets null while using <Route path="..." children={({ match }) => (...)}>

Version
v4.4.0-beta.4
Test Case
https://codesandbox.io/s/n01l37m5rp
Steps to reproduce
Try to click on nav links
Expected Behavior
Link to another page should be gray. Only link to current page should be blue.
I want to implement something like this from official documentation: https://reacttraining.com/react-router/web/api/Route/children-func
Actual Behavior
All links always blue. Looks like match prop never gets null value.

Nevermind. I just made a typo (to instead of path).


Remove references and functions related to_state_partition_u64 from wallaroo.py

With the advent of dynamic keys, the python API no longer supports ApplicationBuilder.to_state_partition_u64, but wallaroo.py still contains functions like this one that reference to_state_partition_u64. This issue is here to capture the chore of cleaning that up.

This was removed as part of other work.


feat: support firing of multiple rules

https://issues.redhat.com/browse/AAP-9755
https://issues.redhat.com/browse/AAP-13131
Drools has always supported firing of multiple rules when an event or a fact comes in. Durable rules only supported this behavior for facts but not for events. This PR adds a feature to a ruleset to indicate if it should match_multiple rules. The default is false

This PR doesn't require an upgrade of drools-jpy? I believe it depends of some PR to be merged in the drools-integration project.

@Alex-Izquierdo this was added in drools-jpy via https://issues.redhat.com/browse/AAP-13076, the current drools_jpy already has this change, we don't need a new drools-jpy

I really think it should have some e2e test as well, regardless of that LGTM

+1. It would be great if any new features for rulebook will have coverage added to the e2e tests.

@Alex-Izquierdo @ttuffin I have added the e2e tests

@mkanoor this exposes a bug in the Rule Audit view assumptions.   This page is rule-focused and requires hunting for the event that caused the rule to fire instead of being event centric and showing what rules and actions fired from that event.

We should hold off on merging this until we have a meeting to discuss the Rule Audit view.


fix(types): add new directive types to options in favour of deprecated

What kind of change does this PR introduce? (check at least one)

[x] Bugfix
[ ] Feature
[ ] Code style update
[x] Refactor
[ ] Build-related changes
[ ] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes
[x] No

Related https://github.com/vuejs/vue/pull/12792

Will Vue2 receive any other updates? 👀

Any progress ? encountered same problem in vue 2.7, and it causes entire component type checking to fail.

copilot:summary


fatal: not a git repository (or any of the parent directories): .git

show occasionally, needs checking

solved https://github.com/threebotserver/publishingtools/blob/0c49f36f467f0ecf93e4c92ee7108d3858545925/src/gittools/gitrepo.cr#L113


tests: added tests for staking

Resolves #487
@rndquu Added some more tests. Most are not quite easy to run locally, I wonder why?

Resolves #487
@rndquu Added some more tests. Most are not quite easy to run locally, I wonder why?

Tests inherited from LiveTestHelper are supposed to run on a forked chain like forge test --rpc-url https://cloudflare-eth.com
Could you:

fix the failing tests here https://github.com/ubiquity/ubiquity-dollar/actions/runs/3971518930/jobs/6808501691
provide the updated test coverage for Staking and StakingShares so that we could compare the difference

Prefix any tests that require external RPC with Remote,
but make sure to only prefix those which fail locally.
see: https://github.com/ubiquity/ubiquity-dollar/blob/cdb91f66e98c973d16acab396ffe875b4b4ddc63/packages/contracts/test/dollar/Staking.t.sol#L69

@rndquu Added more tests for staking and stakingShares. I am having issues with conventional commits though.

File.

Staking.sol

------------------

StakingShares.sol

@rndquu Added more tests for staking and stakingShares. I am having issues with conventional commits though.

File
%Lines
%Statements
%Branches
%Funcs

Staking.sol
88.33% (106/120)
89.33% (134/150)
60.71% (17/28)
87.50% (21/24)

StakingShares.sol
77.50% (31/40)
73.81% (31/42)
33.33% (2/6)
78.57% (11/14)

Rebase tests:... to test:...
to pass the CC.

@rndquu Added more tests for staking and stakingShares. I am having issues with conventional commits though.
File
%Lines
%Statements
%Branches
%Funcs
Staking.sol
88.33% (106/120)
89.33% (134/150)
60.71% (17/28)
87.50% (21/24)
StakingShares.sol
77.50% (31/40)
73.81% (31/42)
33.33% (2/6)
78.57% (11/14)

Rebase tests:... to test:... to pass the CC.

Done

I just asked GPT3 about fixing the verb in the commit message and it suggested:
git log --oneline | awk '{print $1}' | while read line; do
  if [[ $line != "fix:" && $line != "feat:" && $line != "chore:" && $line != "docs:" && $line != "style:" && $line != "refactor:" && $line != "test:" && $line != "build:" && $line != "ci:" ]]; then
    git commit --amend --no-edit --allow-empty
  fi
done

@rndquu Added more tests for staking and stakingShares. I am having issues with conventional commits though.
File
%Lines
%Statements
%Branches
%Funcs
Staking.sol
88.33% (106/120)
89.33% (134/150)
60.71% (17/28)
87.50% (21/24)
StakingShares.sol
77.50% (31/40)
73.81% (31/42)
33.33% (2/6)
78.57% (11/14)

Rebase tests:... to test:... to pass the CC.

Done

do it for all

@rndquu Added more tests for staking and stakingShares. I am having issues with conventional commits though.
File
%Lines
%Statements
%Branches
%Funcs
Staking.sol
88.33% (106/120)
89.33% (134/150)
60.71% (17/28)
87.50% (21/24)
StakingShares.sol
77.50% (31/40)
73.81% (31/42)
33.33% (2/6)
78.57% (11/14)

Rebase tests:... to test:... to pass the CC.

Done

do it for all

I fixed it now

Thanks @FibrinLab. Small request but can you bump up the coverage to 80% minimum? We defined 80% minimum test coverage on the other issue but it seems like we have forgotten to add it to this issue. I think it could be pretty quick since you're already at 77% for StakingShares.sol according to the table you included in your comment.

@rndquu @pavlovcik Please have a look at this. I added more functions for both the staking and stakingShares contracts. However, I noticed 2 functions (_burn and _burnBatch), both internal functions from the staking contracts. These 2 functions are not called or used by any other external functions in the stakingShares contract. Commenting them together with the updates I made gives this new coverage report. Please I need recommendations.

File
%Lines
%Statements
%Branches
%Funcs

Staking.sol
88.33% (106/120)
89.33% (134/150)
60.71% (17/28)
87.50% (21/24)

StakingShares.sol
96.88% (31/32)
96.88% (31/32)
100% (2/2)
91.67% (11/12)

I'm not the one to say with confidence but superficially the numbers you provided look good. @zgorizzo69 @0xcodercrane @rndquu any remarks?

@rndquu @pavlovcik Please have a look at this. I added more functions for both the staking and stakingShares contracts. However, I noticed 2 functions (_burn and _burnBatch), both internal functions from the staking contracts. These 2 functions are not called or used by any other external functions in the stakingShares contract. Commenting them together with the updates I made gives this new coverage report. Please I need recommendations.
File	%Lines	%Statements	%Branches	%Funcs
Staking.sol	88.33% (106/120)	89.33% (134/150)	60.71% (17/28)	87.50% (21/24)
StakingShares.sol	96.88% (31/32)	96.88% (31/32)	100% (2/2)	91.67% (11/12)

Yes, it seems that _burn and _burnBatch are not used anywhere so you can delete them
Overall the PR looks good in terms of minimal coverage
I guess in the next test iteration milestone (not current issue) we could add some intergration tests for staking and cover all edge cases for staking to make coverage 100%

@rndquu @pavlovcik Please have a look at this. I added more functions for both the staking and stakingShares contracts. However, I noticed 2 functions (_burn and _burnBatch), both internal functions from the staking contracts. These 2 functions are not called or used by any other external functions in the stakingShares contract. Commenting them together with the updates I made gives this new coverage report. Please I need recommendations.
File	%Lines	%Statements	%Branches	%Funcs
Staking.sol	88.33% (106/120)	89.33% (134/150)	60.71% (17/28)	87.50% (21/24)
StakingShares.sol	96.88% (31/32)	96.88% (31/32)	100% (2/2)	91.67% (11/12)

Yes, it seems that _burn and _burnBatch are not used anywhere so you can delete them
Overall the PR looks good in terms of minimal coverage
I guess in the next test iteration milestone (not current issue) we could add some intergration tests for staking and cover all edge cases for staking to make coverage 100%

Alright. I deleted it. Thanks for the review


Update basic-availability-groups-always-on-availability-groups.md

Following line is not needed, because SSMS is supported on v16.x  for create with basic DMV command.

'At this time, there is no UI support to create basic availability groups in SQL Server Management Studio.'

@kazuyuk : Thanks for your contribution! The author, @MashaMSFT, has been notified to review your proposed change.

Ooops, sorry, I think following message is better than trimed.
'There is UI support to create basic availability groups in newest SQL Server Management Studio.'

Hi @kazuyuk, thank you so much for your contribution! You're correct, this is a great addendum to highlight. Thanks again! #sign-off

@kazuyuk : Thanks for your contribution! The author, @MashaMSFT, has been notified to review your proposed change.


How to split symbol?

I have a symbol that is created by concat between data  and seg at dim=1
data with shape of 64x3x224x224
seg with shpe of 64x1x224x224

Hence, the symbol has size of 64x4x224x224. I want to split the symbol back to data and seg. How can I do it? This is what I did
data_seg  = mx.symbol.split(data=data_seg, axis=1, num_outputs=2)
data = data_seg [0]
seg =  data_seg [1]

However, the shape of data and seg result in 64x2x224x224 instead of 64x3x224x224 and 64x1x224x224, respectively.

you can use 'split_v2' function to solve this ! below is a ndarray version to your case.
symbolic operator should be the same
##########################
import mxnet.ndarray as nd
input=nd.random.uniform(shape=[64,4,224,224])
output=input.split_v2((3,4),1)
print(input.shape)
print('------')
print(output[0].shape)
print(output[1].shape)

Thanks. Please check it because it has some error

mxnet.base.MXNetError: [16:36:59] src/operator/tensor/./matrix_op-inl.h:2634: Check failed: start < end: start 4 is not less than end 4for subarray 2 Stack

@lilongyue it does not work for symbol.

I think mx.sym.slice is what you need.


Disable edit for 1 or all property

Hi,
How can i disable edit for 1 or all property?
The goal is to let user see the property but not edit it , like for property in readonly .
Thank you

     [Description("Readonly properties are rendered as readonly")]      public int DaysSinceStartOfYear { get { return DateTime.Today.DayOfYear; } }
or you can do it in the view:
@FF.PropertiesFor(someObject).Render(Html);
@{
var properties = FF.PropertiesFor(someObject);
properties.Single(p =>p.Name == "someProperty").ReadOnly = true;
@properties.Render();
}


Dropped "db_" prefix to many database-related methods and some more

added a fetch_all
removed the "db_" thingy from method names
removed some static variables
simplified the "query" code moving out common stuff between mysql and postgre
removed a begin/end transaction happening in query based on some kind of random guesses based on the assumption that if transaction is necessary it's up to the code writer to initiate and terminate it.

Be nice to get rid of all those db_ 👍

So, after all this crap, I have no idea why it doesn't work. :joy:
Apparently, for some inexplicable reason, the insert of the settings table during install for postrgesql doesn't insert anything. And from there everything else fails.
I have to dig more into it... :-\

And finally, after so many tries I even lost count, the tests are finally back working!!
:dancing_men: :dancing_women: :dancer: :dancing_women: :dancing_men:

I think i don't want to touch this any further... and I hope I didn't left around any debug code... :sob:

I'm going to merge it in so you avoid the temptation of adding to it !!! ... Really awesome work here 👍


core[patch]: docstrings output_parsers

Added missed docstrings. Formatted docstrings to the consistent form.

@eyurtsev Thanks!


[Strangeness] Module doesn't appear after installation

I install DFreds Convenient Effects (v3.0.1) through Foundry (V10) Add-on Modules
Only have libWrapper (v<IP_ADDRESS>) and socketlib (v1.0.11) as other modules.
Starts World with my custom System I have made. Only libWrapper and sockelib activated as modules in the world.
As I go to activate DFreds Convenient Effects it is not listed as an installed module only the other two are.
The extra buttons are not visible according to the manual so it is clearly not active.
So my question is - are there a requirment in a system in some way or is there another way I can search for what is wrong?
F12 doesn't state anything.

This is currently only supported for dnd5e. Hopefully not the case soon


Add --endpoint option to prisma init

When passing the --endpoint option to prisma init, the CLI should:

Create datamodel.graphql with the default User type:
type User {
  id: ID! @unique
  name: String!
}

Create prisma.yml with the endpoint specified as the value of the --endpoint option and datamodel pointing to datamodel.graphql

For example:
prisma init --endpoint http://localhost:4466/myservice/dev

Creates above specified datamodel.graphql and the following prisma.yml:
endpoint: http://localhost:4466/myservice/dev
datamodel: datamodel.graphql

@nikolasburk Will this still prompt for management secrets?

The current assumption is that --endpoint will be a separate code path that does not ask for other details and just writes the files.
@nikolasburk : Can you please clarify?

@divyenduz that's correct! There's no need for the interactive wizard because the ultimate goal of the wizard is to figure out the Prisma server to which the new service should be deployed. If the endpoint is passed to the command, the wizard is rendered obsolete.


Add try_exists function as wrapper over std::path::Path::try_exists

@notgull ping

We can replicate behavior of the MSRV-incompatible std::fs::exists manually, but this approach is a simpler one that just uses std::path::Path::try_exists instead. This is what Tokio's tokio::fs::try_exists does, so I'd say it'd be a reasonable expectation for async_fs to mirror that functionality.

Having try_* without the non-try_* variant sounds odd.
See the stabilization report of std::fs::exists in https://github.com/rust-lang/rust/issues/83186#issuecomment-2040794163.


Runtime startup checks needed

It would be very helpful if the runtime would dump more diagnostics on startup when parsing the toml file.
If any path is incorrect, it will often just exit (even with the -d) flag without logging why it is exiting.

Check the top-level error printing in the example main. Maybe debug printing the error instead of using Display helps here. This issues relates to #340 which should check exactly those errors.

Runtime checks configured directories with permissions etc. Everything else is a runtime error.


tpl: Return all errors from casting

Most non-boolean template functions should return errors.
Fixes #2354

Merged as 5498a1bd5616903fce3df687adf43d19e1c4e4c4


Added decoder InputOffset method

This new method gives the location in the input stream of the most recently read byte.
Signed-off-by: Miguel Ángel Ortuño<EMAIL_ADDRESS>

Thanks!


Confusion between wallet/account/address

This screen is a bit confusing imo:

address book: I can't see the list of my addresses. The tab only allows adding addresses, and redirects to transfer
on the right are my accounts, but adding them is done on the left, either with Wallet (= add with phrase) or Create Account (= add new one).

Some ideas:

Remove the term "Wallet". Do as polkadot/apps, use "Accounts" for my accounts, and "Addresses" for my saved addresses.
Maybe have 2 panes: one on the left to see/add/remove my accounts (i.e. the current "Saved Accounts" pane, + a button to add/remove accounts); and one similar one on the right for my saved addresses.

On further thought, I also don't think the Identity card dropdown is even necessary at all, considering the expanded view is meant for "more involved" tasks, but as it turns out all the functions required are create/edit/restore/forget/backup.


Add functions and update examples

Add functions for IborFuture and DeliverableSwapFuture.
Fix, test and update examples.

That's everything


Light cleanup of the kevent backend.

Some functionality requires particular preprocessor feature flags to be
set but errors are raised if they aren't, so the remedy is to put these
behind relevant feature flags.

dispatch_kevent_t has a qos field only when DISPATCH_USE_KEVENT_QOS
_dispatch_kq_unote_update requires DISPATCH_HAVE_DIRECT_KNOTES as it
is only called from functions behind this
_dispatch_workloop_actions and the associated enum are only used when
DISPATCH_USE_KEVENT_WORKLOOP.

Some unused variable void casts are removed (guard_ptr and pp), which do
not refer to variables -- these may be upstream merge artefacts.
A type cast is made to match types for _dispatch_bug_kevent_client. This
function is incorrectly placed behind HAVE_MACH in src/init.c, but to
keep the scope and impact of this commit narrow, we will defer that
change.
Since EVFILT_FS is not supported on all kevent implementations, put these
behind an #ifdef. EVFILT_USER also requires similar handling, but since
EVFILT_USER kevents are used intrinsically as part of the functionality,
these will be handled in a separate commit.

cc @ktopley-apple who may find some of this of interest.

ping.

ping.

ping.

ping.

Closing in favor of #559.


MInor bug fixed: Terms and condition page updated, not redirecting to home

Fixed the bug.
#397

this not good...double check once before raising PR

for minor bug ..lol

https://github.com/user-attachments/assets/ecd7493e-adee-4ef4-bf6d-f5b8773a6885

this not good...double check once before raising PR

Yeah actually i npm installed in the wrong frontend.. my bad hehe

should i reclone and redo it ?

https://www.linkedin.com/in/manikumarreddyu
connect me here i tell you the shortcut

https://www.linkedin.com/in/manikumarreddyu
connect me here i tell you the shortcut

but we are already connected on linkedin!!

Msg me once

Msg me once

yea bro done


Evaluate Profile-Guided Optimization (PGO) and LLVM BOLT

Hi!
There are a lot of examples of different software, where Profile-Guided Optimization (PGO) helps with performance - you can check it here. E.g. in this list there are a lot of databases like PostgreSQL and ClickHouse.
We need to test PGO on pgvector.rs, and if it improves performance - at least write a note in the README file about it.
There are several additional options. I'd appreciate it if you could provide an easy way to build pgvector.rs with PGO. And experienced users will be able to do it on their own for their own usage scenarios. Another option is to optimize the pgvector.rs build with a generic-enough profile. Providing PGO-optimized binaries could be a trickier task (since it requires preparing a good-enough profile) but as an option would be great to see too. Probably completing the https://github.com/tensorchord/pgvecto.rs/issues/21 task can help with it.
As an additional optimization way, I suggest taking a look at LLVM BOLT. But from my experience, it would be better to start with PGO and then try to use BOLT.
Treat this issue just like an idea for future improvements.
For the Rust projects, I recommend starting with cargo-pgo.

Thanks for the issue!
/cc @usamoi @VoVAllen

This person has made many comments to this effect, however, I recommend not combining PGO and BOLT. It has caused many upstream issues for rust-lang, and Rust gets away with it mostly by having a lot of active contributors, such that when there's an all-hands-on-deck moment due to miscompilation, someone shows up to resolve it fairly quickly. It basically needs continuous monitoring to make sure nothing has gone wrong, because for whatever reason, rustc seems to be very good at generating code that surprises LLVM's tooling.
One or the other, independently, is probably safe to use, however.

Since I agree with your comments about BOLT and PGO stability issues, I still think PGO and BOLT combination is still a good thing to consider for the projects. Yes, combining PGO and BOLT can cause the issue but the decision on the tradeoff between "PGO+BOLT miscompilation possibilities" vs "gains from BOLT with PGO" should be considered for each project individually based on the projects' merits ("performance for all money", "stability first") and available resources like active contributors (as you said above).
Regarding BOLT + PGO issues - do you have a list of them anywhere near you? I am very interested in the story behind them and definitely will add to my PGO repository as the warnings for anyone who will test PGO with BOLT.
Thanks in advance!

Absolutely, it could still be incredibly profitable for them if e.g. the team working on pgvecto.rs happened to have someone available to basically commit full time to making sure:

PGO works
BOLT works
they don't introduce any problems
maybe doing some other opportunistic performance opts
and keeping an eye on that for a while after as their setup evolves. how long? ...I dunno!

Anyways, BOLT-related miscompiles:

https://github.com/rust-lang/rust/issues/109067
https://github.com/rust-lang/rust/issues/108978

Generic BOLT issues:

https://github.com/rust-lang/rust/issues/105783
https://github.com/rust-lang/rust/issues/112286
https://github.com/rust-lang/rust/issues/115344 the author of this seems familiar :^)

Relevant perf tracking issues for rustc:

https://github.com/rust-lang/rust/issues/103595
https://github.com/rust-lang/rust/issues/79442

Rust partially mitigated this by extending testing to the optimized artifacts as well:

https://github.com/rust-lang/rust/issues/109535

Thanks a lot for the links!

It has caused many upstream issues for rust-lang

I'm not aware of any miscompilations caused by BOLT so far. We had miscompilations caused by LTO on Windows, but we don't use BOLT there.
Maybe you meant LTO + PGO? But that just sometimes fails to compile, I haven't seen any miscompilations related to that.


Edit PPP of Sam-limyr.

Changes:

Edited PPP introduction and contribution summary
Added links to code in contribution summary

Looks good!


cache life time

can you please add an expire life time for the caching object

I am done with my take on this issue and raised a pull request https://github.com/tumblr/TMCache/pull/77


Unlisted blog posts should not be display on the blog archive

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Prerequisites

[X] I'm using the latest version of Docusaurus.
[ ] I have tried the npm run clear or yarn clear command.
[ ] I have tried rm -rf node_modules yarn.lock package-lock.json and re-installing packages.
[ ] I have tried creating a repro with https://new.docusaurus.io.
[ ] I have read the console error message carefully (if applicable).

Description
Unlisted blog posts should not appear on the blog archive page, because it makes them discoverable!
Missing implementation from original feature https://github.com/facebook/docusaurus/pull/8004
Reproducible demo
No response
Steps to reproduce
Unlisted post in production: https://docusaurus.io/tests/blog/unlisted-post
Shouldn't be displayed on this page https://docusaurus.io/tests/blog/archive
Expected behavior
Shouldn't be displayed on this page https://docusaurus.io/tests/blog/archive

Actual behavior
It is displayed on https://docusaurus.io/tests/blog/archive (but shouldn't)
Your environment
No response
Self-service

[X] I'd be willing to fix this bug myself.

@slorber kindly assign me this task. Thanks

@slorber I can work on it

@Muhammad-Tayyab-Bhutto we don't assign issues. If you want to work on it, submit a draft PR in the next few days otherwise someone else will


Raster Example implementation

Hi every body
Does it possible to use mLSTM for time series of raster datasets?

Yes, it is possible to use mLSTM for time series of raster datasets. Below is an example code snippet demonstrating how to achieve this. The code can be modified according to your needs.
import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim

import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from xLSTM.mlstm import mLSTM
from xLSTM.utils import config, logging, utils

# Simulate raster data
def generate_synthetic_raster_data(num_timesteps, width, height):
    return np.random.rand(num_timesteps, width, height)

# Generate synthetic raster data
num_timesteps = 10
width = 5
height = 5
raster_data = generate_synthetic_raster_data(num_timesteps, width, height)

# Normalize the raster data
raster_data = raster_data / np.max(raster_data)

# Convert raster data to PyTorch tensor
raster_data = torch.Tensor(raster_data).unsqueeze(-1)  # Add channel dimension

# Define the mLSTM model
class RasterTimeSeriesModel(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, num_layers):
        super(RasterTimeSeriesModel, self).__init__()
        self.mlstm = mLSTM(input_dim, hidden_dim, num_layers)
        self.fc = nn.Linear(hidden_dim, output_dim)

    def forward(self, x):
        h, _ = self.mlstm(x)
        out = self.fc(h)
        return out

# Model parameters
input_dim = width * height  # Flattened raster data
hidden_dim = 128
output_dim = input_dim  # Output should match the flattened input size
num_layers = 2  # Number of layers in mLSTM

# Reshape raster data to (batch_size, sequence_length, input_dim)
raster_data = raster_data.view(num_timesteps, -1).unsqueeze(0)  # Add batch dimension

model = RasterTimeSeriesModel(input_dim, hidden_dim, output_dim, num_layers)

# Training parameters
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# Split data into train and test sets
train_data = raster_data[:, :8, :]  # Using first 8 timesteps for training
test_data = raster_data[:, 8:, :]  # Using the last 2 timesteps for testing

# Training loop
for epoch in range(100):  # Number of epochs
    model.train()
    optimizer.zero_grad()

    output = model(train_data)
    loss = criterion(output, train_data)
    loss.backward()
    optimizer.step()

    if epoch % 10 == 0:
        print(f'Epoch {epoch}, Loss: {loss.item()}')

# Step 4: Evaluate the model
model.eval()
with torch.no_grad():
    output = model(test_data)
    test_loss = criterion(output, test_data)
    print(f'Test Loss: {test_loss.item()}')

This example demonstrates how to use mLSTM for time series of raster datasets. The model is trained on synthetic raster data, and the training and evaluation process is shown. You can replace the synthetic data with your actual raster data.
Feel free to modify the code according to your needs.


[Bug] Primary Repo contributors getting pinged in Rebase PRs for Forks

As seen in this PR: https://github.com/https-github-com-JuriBurakov/appcenter-docs/pull/2#issuecomment-717014408
The contributors @-mentioned are maintainers of the root MicrosoftDocs repository, and not the owner of that particular fork. We shouldn't be automatically pinged based on the activity of forks for a add-on we haven't approved. Normally, I'd expect to only get pinged by add-ons we're using in the root repository, which we've specifically opted-in for.

Hi @King-of-Spades thanks for opening an issue. As you can see in the pull request you linked, commit-lint bot is the one pinging you guys, not pull.
The fork's owner setup commit-lint in a way that @ all the committers' GitHub handles. Then GitHub notifies everybody mentioned. Though I do understand pull created the PRs, it is not pull that is @ your handles, and this will happen with or without pull (author can make a PR manually and commit-lint will exhibit the same behavior).
I'm going to mark this issue as invalid as pull is not the one @ your handles and sending you notifications. However, I can provide the following suggestions:

Ask the fork owner to update commit-lint to NOT @ all the committers,
Ask commit-lint author to not @ all the committers,
Add commit-lint bot to your blocklist (unsure if this will work, just an idea)

Please feel free to reply if you have any additional comments or suggestions.

Thanks, I did see it was the other tool that triggered it, but based on context I thought your tool was automatically part of it or something like that. I think I saw it on one other PR (But I muted that one already so I can't find it again.)

Yep, the fork's author probably set up commit-lint across the board so it is likely acting on all PRs including the ones created by Pull.
To summarize, Pull is doing it's job correctly by creating rebase PRs, and commit-lint is doing its job correctly also by commenting on all PRs as set up by the fork owner.

@King-of-Spades if the fork owner would not take action, I can add him/her to pull's blocklist. Let me know. Thanks!

FYI, I have disabled pull on https-github-com-JuriBurakov,JuriBurakov,juriburakov-gmail-com,Juri-Burakov.

Thanks!


OpenGLRenderer is out of memory OR too many open files error

I am testing on a Samsung GT-S6012 "Duos" device running Android 4.04 API 15
GSM arena link http://www.gsmarena.com/samsung_galaxy_music_duos_s6012-5027.php
And I am getting this after the spinner runs for some time....
The application stops without an error dialog.. and the following is shown
in the log...
This log is of my app using the spinner, although I did another test running the demo for a while and gives me the same type of error. ( the spinners actually become graphically corrupt.. one a black square rotating and the other a red square rotating after some time has elapsed. 20 seconds or so)
some link on the internet suggest that there are too many Async tasks running,
could it be that there are too many Animations.. or perhaps a memory leak.
(Not a nice bug to have though)
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x505
E/OpenGLRenderer:   OpenGLRenderer is out of memory!
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x505
E/OpenGLRenderer:   OpenGLRenderer is out of memory!
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x505
E/OpenGLRenderer:   OpenGLRenderer is out of memory!
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
E/RHEA_BRALLOC: PMEM open failed with error Too many open files
E/RHEA_BRALLOC: MEM allocation failed with error Too many open files
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x505
E/OpenGLRenderer:   OpenGLRenderer is out of memory!
D/BRCM_EGL: eglMakeCurrent(NULL) Thread: 6509
D/BRCM_EGL: eglDestroySurface() surface: 0x38c8c8, android window 0x26c6a0, Thread: 6509
D/BRCM_EGL: eglCreateWindowSurface() surface: 0x38c8c8, VC surface: 18, Thread: 6509
D/BRCM_EGL: eglMakeCurrent(0x23baf8, 0x38c8c8, 0x38c8c8) Thread: 6509
E/BRCM_EGL: surface_dequeue_buffer surf:0x38c8c8 buffer=0x3e028c handle:0x0 tid=6509
E/BRCM_EGL: Cancelling buffers
E/BRCM_EGL: surface_dequeue_buffer surf:0x38c8c8 buffer=0x3e028c handle:0x0 tid=6509
E/rhea.gralloc: invalid gralloc handle (at 0x0)
A/libc: Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1)

It looks like a bug of ICS.
May be you can switch graphics acceleration off? If you have a try,please tell me.

@wayneforrest
https://groups.google.com/forum/#!topic/g_reader/1u50W__e67Y


[Azure Automation] Swagger json files for rest of 15 resources and and changes to account.json

@vivlingaiah,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Autofixing POs with duplicates doesn't preserve formatting

Using 1.8.11 (I have added msgctxt to my PO file to make it compliant), I have the advanced settings set to not wrap the long lines and have kept the "Preserve formatting..." option enabled.
When I open an existing PO files, it will wrap all my lines longer than 79 characters, regardless of the setting value.
I have also tried re-enabling the wrapping, but at a higher value (e.g. 150), but it will still wrap the lines at 79 characters.

I have also tried re-enabling the wrapping, but at a higher value (e.g. 150), but it will still wrap the lines at 79 characters.

Actually, the problem is only when there are some duplicate msgids detected at open.

In that case I'm inclined to say it doesn't matter. It's the GIGO principle at work again. If the input is a broken file, all you can reasonably expect is a clearly explained refusal to open the file; anything more is extra.
Yes, it should be fixed ideally, but literally everything else has higher priority. If you feel different, I'd gladly merge your PR, but there's so many things to do on Poedit that I am very unlikely to do anything about pretty-formatting recovered broken and non-standardly formatted files (because if you just used the de-facto GNU gettext formatting of POs, you'd never notice).
You can always use msgcat to reformat the autofixed file to your liking yourself.

Closing as WONTFIX (but would accept PR for it; I'm not opposed), because GIGO as explained above.


bun: 1.0.4 -> 1.0.6

Description of changes
Update bun using update script from 1.0.5 to 1.0.6
This includes the changes from https://github.com/NixOS/nixpkgs/pull/260651
Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 260679 run on aarch64-darwin 1

1 package built:

bun


Randomize seating without clicks

I think @Senryoku doesn't want to auto-shuffle seating, because it could be confusing/frustrating if you assign the seats and then they change, and I definitely think we need both an option for random seats and one for assigned seats. 80.9% of respondents in Survey #1 wanted some form of automatic shuffling, but it's possible the question wasn't phrased right. An idea for making progress on this: keep the shuffle button and the ability to assign seats, but have people "sit down" into random seats, so that you're always seeing the seating order that the draft would start with, but even if you don't take any special action you end up with a randomized draft order (versus one where joining time influenced the seating order).

Implemented the proposed solution here: 5a0908b48787553ffa91bd0c39ba4f98e726972f
Players are randomly inserted in the userOrder array instead of pushed at the end.

Nice, looks like it should work to me. I recall a number of tests that depended on the owner being in the first seat, and saw that you got one and I think I've fixed a handful others. I'll pull this and try to be sure that the change didn't add new test flakes, but I think the issue is solved!


Fund maker and open channel

This comes handy if LND doesn't work as expected.
You can then use curl -X POST http://localhost:18000/api/pay-invoice/putinvoicehere to pay any invoices and fund the app.

Might be nice to add another button on regtest builds. And maybe to fund the maker with just fund too.

This comes handy if LND doesn't work as expected.
You can then use curl -X POST http://localhost:18000/api/pay-invoice/putinvoicehere to pay any invoices and fund the app.

As far as I can tell the maker is funded, otherwise it couldn't open a channel to the coordinator.
I agree on the button although what do we keep lnd then around for? 🙈

I agree on the button although what do we keep lnd then around for? 🙈

I opted for keeping it around ;)


support OffsetArray for L0Smooth

We haven't make sure it passes the OffsetArray test in https://github.com/johnnychen94/ImageSmooth.jl/pull/1

closed by #7


Ubuntu 14 now on Extended Support

Was hoping to install REMnux on newer Ubuntu versions.

I'm still working on bringing REMnux to a later Ubuntu base.


ASYNC100 does not match upstream flake8-async

ASYNC100 (ruff, upstream) warns when a timeout context manager doesn't contain any checkpoints - and therefore can't be cancelled by the async framework.  However, if you're implementing a context manager, then it's entirely reasonable to wrap such a timeout around a yield, and we should treat that as a checkpoint - as in https://github.com/python-trio/flake8-async/pull/228
(if you wrap a timeout around the yield in a generator, see PEP-789 and the ASYNC9xx rules, with my condolences)
from contextlib import asynccontextmanager
import anyio

async def bad_code():
    with anyio.fail_after(10):
        do_something_slow()  # can't cancel non-async work!

@asynccontextmanager
async def good_code():
    with anyio.fail_after(10):
        # There's no await keyword here, but we presume that there
        # will be in the caller we yield to, so this is safe.
        yield

The current version of Ruff will warn on both fail_after() contexts, but only the former is problematic.
See also: https://github.com/astral-sh/ruff/issues/8451

Thanks!


Journalism: LevelCompleted feature

A per-level feature, with lvl as prefix.
Value is a bool, which is true if the level was completed, else false.
Only runs at session level.

a7144e8d7ef58f63bd95865b402a5c8f9a6ef7e5


Make default buffer size configurable

defaultBufferSize is hardcoded and at times 4Kb is too restrictive. Can we make it configurable?
https://github.com/containerd/cri/blob/68b61297b59e38c1088db10fbd19807a4ffbad87/pkg/server/io/logger.go#L41

If it is okay, I would like to work on this issue. cc @kzys

Sure. Assigned.
What would be a good way to pick the number? Is it trade-off between memory vs. performance?

Yes, with a bigger buffer we will need less number of IO sys calls( so can result in better CPU performance). But will be costly in terms of memory.
Looking into the bufio package, the default read buffer in the bufio package also uses 4Kb as the default size and sets a min limit of 16. I tested increasing the buf size to a much larger value (500MB) and it caused OOM, so that tells me that there isn't any specific upper limit.
For this particular scenario, I am not sure if there is a good way to pick a number. We can keep 4Kb as the default value and allow users to specify higher buf size if they need. I don't think there is any specific use-case for having a smaller buffer (memory overhead of having a 4KB buffer seems very low to me), so we can have 4KB as the min default.


Added a macro for cleaning up the global memstack

The MSCLEAN macro cleans up the global memstack in case MSCLEANUP is not defined, to avoid memory leaks.
It's effectively an easier way of avoiding leaks on non-gcc systems.
This macro currently looks ugly, and I am looking for suggestions on how to make it more C-esque.
My grammar just left the room too...

@Khhs167 You will need to resolve the merge conflicts in order to merge the pull request 👍🏼.


Update cats-effect, cats-effect-laws to 2.5.4

Updates

org.typelevel:cats-effect
org.typelevel:cats-effect-laws

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

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

labels: library-update, semver-patch

Codecov Report

Merging #378 (7014642) into master (a804ca9) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #378   +/-   ##
=======================================
  Coverage   91.12%   91.12%
=======================================
  Files          17       17
  Lines         293      293
  Branches        1        1
=======================================
  Hits          267      267
  Misses         26       26

Continue to review full report at Codecov.

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


BUG: About Link in Footer doesn't Scrolls Up on Click

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Clicking on the About link in the footer opens the About page, but the page doesn't scroll to the top. This results in the footer still being visible above the About page content.
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Can you attach an image as well...

Hello @hustlerZzZ.  Signing in the website is showing some error so I can't share the recording. But what I mean by raising the issue is that the about link in the footer is not functioning.
Expected: About link clicked should scroll up to the About section.


docs: Rafiki integration

Adds details about:

quotes/fees endpoint
webhook endpoint
Open payments auth server and Identity provider

It's really rough and I don't like the structure. Feedback is very much appreciated.
Changes proposed in this pull request

fixes #235

Context

Checklist

[x] Related issues linked using fixes #number
[ ] Tests added/updated
[x] Documentation added
[ ] Make sure that all checks pass

Would this replace https://github.com/interledger/rafiki/blob/main/docs/transaction-api.md

Sorry, missed that. I'll pick some nice sentences from there and then remove it. I tried ChatGPT on this doc, btw, but without luck. It only swapped out some words but no big improvement.


remove >>> from the rst docs.

Remove >>> from the sample code of the .rst docs

Coverage remained the same at 75.28% when pulling 48018e2048481db1487a349bf9844216714b7492 on update_doc into 86a60d6762bdaa19129d74b0c80f87b6df349862 on master.


Invalid Commands do not have updated usage message

for eg. Add Property

Resolved in https://github.com/AY2223S1-CS2103-W14-1/tp/pull/228


dts: bindings: pwm custom macro for STM32 vendor

Change the name of the custom macro defined for the stm32 devices to fit the VND_PWM_xxx model
This is STM32_PWM_COMPLEMENTARY
Signed-off-by: Francois Ramu<EMAIL_ADDRESS>

keeping old macro for compatibility

fixing compliance error

Changed with @doxygen tag
The PWM_STM32_COMPLEMENTARY_MASK does not need the old style as it is internal
Use the new macro  in the DTS  of the nucleo_l4r5zi board


Terragrunt often and randomly needs the .terragrunt-cache directory manually removed.

Our developers often receive the following output when attempting to run a terragrunt plan , terragrunt apply, or terragrunt init.

Error: Initialization required. Please see the error message above.

Error: Initialization required. Please see the error message above.

Error: Initialization required. Please see the error message above.

ERRO[0016] exit status 1

The only apparent solution is deleting all occurrences of .terragrunt-cache in the module structure. Ideally terragrunt would be able to detect that a .terragrunt-cache was in a bad state and be able to report more helpfully, or be able to avoid the initial situation from occurring.

Looks similar to https://github.com/gruntwork-io/terragrunt/issues/2512

@denis256 This issue is intended to encapsulate a specific a specific situation that produces the rather unhelpful error message above. https://github.com/gruntwork-io/terragrunt/issues/2512 is intended to encapsulate the the more abstract general case where terragrunt has a tendency of producing non-optimal error messages when a number of different errors occur (at least without passing additional arguments).


PSA: Here's how to get it working with Mistral

Update vllm dependency to latest version, and comment out max_num_batched_tokens in handler.

Thank you @Palmik


info type discussions for mem-based optimizations

https://github.com/SparseBLAS/spblas-reference/blob/093068008c1f3e031fb43133d1a66051aa04b80a/notes/spmv.hpp#L10-L24
I like this idea of having an info type that is directly associated with some matrix structure and which is filled with 0 or more inspection based optimizations (which means it houses "stateful + read-only" optimizations.  I wonder if it would be possible to have our multiply functions take in some hybrid matrix_obj object which consists of either a matrix_view or a matrix_view + an associated matrix_info_t type -- used in some way like the following snippet
csr_view<T,I,O> A(...);
matrix_info_t A_info(...);
multiply_inspect( matrix_obj{A, A_info}, descriptor, x, y, /*backend stuff*/ )
multiply_execute( matrix_obj{A, A_info}, descriptor, x,y, /*backend stuff */)

or we might also skip the inspection at the cost of less performance...
csr_view<T,I,O> A(...);
multiply_execute( matrix_obj{A}, descriptor, x,y, /*backend stuff */)

The benefit of this is that when we look at the sparse * sparse operation, we could have an A_info, B_info, that may contain good (read-only stateful) stuff that might be useful about A, B while creating C, and then there may be another multistage_info_t which is particular to the multi-stage operation (stateful + read/write data)
csr_view<T,I,O> A(...);
matrix_info_t A_info(...);

csr_view<T,I,O> B(...);
matrix_info_t B_info(...);

csr_view<T,I,O> C(...);

multiply_info_t  mult_info(); // C = A *B^T

multiply_inspect(matrix_obj{C}, matrix_obj{A, A_info}, transpose(matrix_obj{B,B_info}), desc, /*backend stuff*/ ); // fills A_info and or B_info
multiply_execute_stage1( matrix_obj{C}, matrix_obj{A, A_info}, transpose(matrix_obj{B,B_info}), mult_info, /*backend stuff*/ ); // fills mult_info and C
multiply_execute_stage2( matrix_obj{C}, matrix_obj{A, A_info}, transpose(matrix_obj{B,B_info}), mult_info, /*backend stuff*/ ); // fills mult_info and C
multiply_execute_stage3( matrix_obj{C}, matrix_obj{A, A_info}, transpose(matrix_obj{B,B_info}), mult_info, /*backend stuff*/ ); // fills mult_info and C

mult_info might house the stateful + read/write optimizations pertaining to the multiply multi-stage process ...   A_info and B_info might pertain stateful + read-only optimizations about A and or B ...
Does this idea make sense?  Does anyone see any use issues ? Is it too ugly ?   I worry that we will have too many overloads if we have A and possibly A_info etc separated as inputs ... And this allows us to distinguish between matrix inputs + info and operational info data ...

@BenBrock  is there a nice C++ way to define such a "matrix_obj" input that could pull together a view or a view + info or a matrix obj or other inputs that represents matrix data + optional data :)

Yes, I think we could do this and still have pretty nice-looking syntax.  I'm not sure of the top of my head what the best way to keep the complexity down is, but I'll think about it.
Just so I understand fully---the idea is to add a matrix-specific inspect in addition to the operation inspect?  (Presumably if you do matrix-specific inspections, you'd also want to pass those to the operation inspect as well?)
csr_matrix<float> a(/* pointers to data, matrix shape, etc. */);
auto a_info = inspect(x, /* user-provided hints */);

auto m_info = multiply_inspect(bind_info{a, a_info}, /* b, c, etc. */);
multiply_execute(m_info, bind_info{a, a_info}, /* b, c, etc. */);

The matrix + info object is basically a view that also stuffs in the matrix info object.  As long as we can take a view of the object (if it's not already a view), this should be relatively straightforward to implement.  I will try to implement a mock-up.

Yes, I think we could do this and still have pretty nice-looking syntax. I'm not sure of the top of my head what the best way to keep the complexity down is, but I'll think about it.
Just so I understand fully---the idea is to add a matrix-specific inspect in addition to the operation inspect? (Presumably if you do matrix-specific inspections, you'd also want to pass those to the operation inspect as well?)
csr_matrix<float> a(/* pointers to data, matrix shape, etc. */);
auto a_info = inspect(x, /* user-provided hints */);

auto m_info = multiply_inspect(bind_info{a, a_info}, /* b, c, etc. */);
multiply_execute(m_info, bind_info{a, a_info}, /* b, c, etc. */);

Yes exactly, with caveat that a_info (stateful + read-only optimizations based on A matrix) could still be filled from multiple calls to _inspect() ...
csr_matrix<float> a(/* pointers to data, matrix shape, etc. */);
matrix_info_t a_info(); // initialized
multiply_inspect(a_info, a, x, y, /* user-provided hints */); // multiply operation with A matrix hints are added to a_info here
multiply2_inspect(a_info, a, x, y, /* user-provided hints */); // multiply2 operation with A matrix hints are added to a_info here
//etc

for (/* one or more loops */) {
  multiply_execute(bind_info{a, a_info}, x, y, /* user-provided hints */);
  multiply2_execute(bind_info{a, a_info}, x, y, /* user-provided hints */);
  //etc
}

This might come in handy for the multi-stage apis which could have stateful+read-only data for one or more sparse matrices and which also have the stateful+read/write data to persist through the multiple stages...
csr_matrix<float> a(/* pointers to data, matrix shape, etc. */);
matrix_info_t a_info(); // initialized

csr_matrix<float> b(/* pointers to data, matrix shape, etc. */);
matrix_info_t b_info(); // initialized

csr_matrix<float> c(/* matrix shape, etc, but unfilled with data */);

spgemm_info_t m_info(); // constructor for C = op(A) * op(B) info handle

multiply_inspect(a_info, a, x, y, /* user-provided hints */); // multiply operation with A matrix hints are added to a_info here
multiply_inspect(m_info, bind_info{a, a_info}, bind_info{b,b_info}, c, /*user provided hints*/); // may add some things to a_info, b_info or m_info

// do spmv operation:  y=A*x
multiply_execute(bind_info{a, a_info}, x, y, /* user-provided hints */); // do A only operation

// do spgemm operation:  C = A * B
multiply_execute_stage1(m_info, bind_info{a, a_info}, bind_info{b, b_info}, c, /*user provided hints*/);
multiply_execute_stage2(m_info, bind_info{a, a_info}, bind_info{b, b_info}, c, /*user provided hints*/);
// extract sizes from m_info for c
// allocate c data arrays and fill into c csr_matrix<float>
multiply_execute_stage3(m_info, bind_info{a, a_info}, bind_info{b, b_info}, c, /*user provided hints*/);

Yes exactly, with caveat that a_info (stateful + read-only optimizations based on A matrix) could still be filled from multiple calls to _inspect() ...
csr_matrix a(/* pointers to data, matrix shape, etc. /);
matrix_info_t a_info(); // initialized
multiply_inspect(a_info, a, x, y, / user-provided hints /); // multiply operation with A matrix hints are added to a_info here
multiply2_inspect(a_info, a, x, y, / user-provided hints */); // multiply2 operation with A matrix hints are added to a_info here
//etc
for (/* one or more loops /) {
multiply_execute(bind_info{a, a_info}, x, y, / user-provided hints /);
multiply2_execute(bind_info{a, a_info}, x, y, / user-provided hints */);
//etc
}
This might come in handy for the multi-stage apis which could have stateful+read-only data for one or more sparse matrices and which also have the stateful+read/write data to persist through the multiple stages...

I'm a little confused by this code example.  Is a_info meant to hold general information about the operation, or information specifically about a?  In my mind, we could have two kinds of infos:

operation_info_t: this comes from multiply_inspect and holds generic information for the operation.  (This could contain supplemental data/copies of one or more matrices.)
matrix_info_t: this would be created in a separate operation, unless we bound it to a particular matrix and passed it into multiply_inspect.

I'm assuming we have the following API:
// You can provide a pre-existing operation_info_t, in which case the new info will be attached to it.
template <matrix A, vector B, vector C>
void multiply_inspect(operation_info_t& info, A&& a, B&& b, C&& c);

// Or you can just get a new info.
template <matrix A, vector B, vector C>
operation_info_t multiply_inspect(A&& a, B&& b, C&& c);

// And then you pass in the operation info when executing.
template <matrix A, vector B, vector C>
void multiply_execute(operation_info_t info, A&& a, B&& b, C&& c);

Are there things that are easy to do with matrix_info_t that are difficult to do with operation_info_t?  In theory you could store anything you want inside operation_info_t.

I guess I am thinking that there are things that pertain to a single matrix (possibly multiple optimizations for different operations, but that all pertain to a particular matrix) -- these are the things that the _inspect() api would fill.
There are other things which pertain to a particular operation which involves more than one matrix (think C = A * B spgemm),  we could either associate those things with the C (output) matrix or with the spgemm operation itself ...
I am ok with either actually, so maybe the way to merge these ideas is to have all matrices have an associated info type which contains things that might pertain to "creation of it" or "use of it" for subsequent operations ... Alternatively, we have the "matrix_info_t" be for "use of matrix" in subsequent operations and "multistage_operation_info_t", things which pertain to a multi-stage operation ...

I like this idea of separating out matrix information, matrix_info_t  which can potentially be reused in multiple different operations, from operation specific information, operation_info_t which is tied to a particular combination of say "multiply" matrix operands.

Are there things that are easy to do with matrix_info_t that are difficult to do with operation_info_t? In theory you could store anything you want inside operation_info_t.

The current approach in Arm PL is to hide everything behind one opaque matrix type, which is simple, but the problem with comes when trying to reuse the same matrix object in different contexts - some of the data structures/optimizations created for SpMM will be different to those for triangular solve, for example, hence the user would have to create two matrices, re-optimize, or live without optimizations and stick to a non-owning view.
We had discussed 3 different types of matrix object, which are nicely summarized in notes/matrices.hpp as 1) a "view", 2) an opaque object, and 3) a known-format. I'm wondering if these matrix_info_t and operation_info_t types would replace the opaque matrix type and be things that come out of the inspect/optimize call.
Also, I'm not sure I see the need for supporting known-format objects (e.g. a transparent CSR type). To simplify the interface, could we require users create a "view" of their own arrays, and then optionally create these associated opaque matrix_info_t and operation_info_t types? In my mind that simplifies the interface, and covers users who only want libraries to work with their own data (views only) and those who are happy for libraries to allocate (view + matrix_info_t and/or operation_info_t).

yeah I am starting to see the matrix_view + optional "opaque handle" matrix_info_t  as a nice path forward, -- one or more stateful optimizations which include memory/data structures pertaining to the matrix_view object for one or more subsequent operations could be stored in the "opaque handle" matrix_info_t object, in fact a user could have more than one of the matrix_info_t objects that match to a particular "matrix_view" data for certain operations that happen together, and the user has complete control over the lifetime of those "opaque handle" matrix_info_t objects.
Of course there are other types of stateful data that usually pertain to the multi-stage operations and which don't pertain to a particular matrix, but to a multi-phase operation (think spgemm or format conversions here), which might need their own "opaque handle" operation_info_t object to house such data through the multiple phases (and have possible reuse for subsequent calls to similar sparsity patterned operation, possibly with different data values ...)
This binding operation in the APIs that we were discussing at the beginning of this issue discussion above might be convenient to clearly tie such an "opaque handle" matrix_info_t to a matrix_view in that operation...

Also, I'm not sure I see the need for supporting known-format objects (e.g. a transparent CSR type). To simplify the interface, could we require users create a "view" of their own arrays, and then optionally create these associated opaque matrix_info_t and operation_info_t types? In my mind that simplifies the interface, and covers users who only want libraries to work with their own data (views only) and those who are happy for libraries to allocate (view + matrix_info_t and/or operation_info_t).

^^ @chrwarm  I am not sure I understand what you mean by "users creating their own views" ?  I was thinking the matrix_view was the raw data in some known format for which we have kernels implemented inside, but we also have opportunity to analyze such a matrix_view for a particular operation in one of the <operation>_inspect() apis and store away extra stuff which may lead to better kernel execution strategies or performance with other kernels implemented inside.  Is that similar to what you were thinking ?

perhaps matrix_info_t is not a good name -- maybe matrix_opts_t is better for what I am envisioning ?  and <operation>_handle_t for the multiphasic one ?
I reread your initial thoughts, @chrwarm, and I think I am starting to see what you are envisioning, let me see if I can restate it in my own words (and if I got it :) ) -- user has data in some format that is a matrix_view, they provide it to an <operation>_inspect() and some things extracted that are generally reusable for multiple operations pertaining to the matrix are stored into a matrix_info_t object, and the things that are particular to that specific operation (possibly from multiple matrices?) would be stored in an operation_info_t object ?  so at the end, a user might have
matrix_view + matrix_info_t + one ore more operation_info_t objects and for an operation, each matrix input might have matrix_view + matrix_info_t, and then there is an operation_info_t as well to be passed in ?
If this is what you meant, then I think we are actually pretty close to talking about the same things.  If not, then I may need some clarifications :)

@spencerpatty yes, what you describe in your last post is a good description.
I think the matrix_info_t and operation_into_t objects can be optional in the workflow - i.e . users could have only a matrix_view and then if they don't want any more memory to be allocated then they would just call the execute (e.g. multiply) function.
`
csr_view A(...);
csr_view B(...);
csr_view C(...); // for now assume we have some C to accumulate into
matrix_info_t c_info = multiply_inspect(C, B, A); // info captured about new sparsity structure of C - this info goes into c_info
// We could then offer 3 possibilities, probably giving increasing performance:
// 1: non-allocating multiplication using user's arrays via the views of A, B, C. User would have to export result from {C, c_info}
multiply(bind{C, c_info}, A, B); // "vanilla" CSR kernel here
// OR:
// 2: we have extra information/structures for the matrices, but not operation specific information
auto a_info = matrix_inspect(A, /* hints here */); // store operation-agnosic structures related to A into a_info
auto b_info = matrix_inspect(B, ...);
multiply(bind{C, c_info}, bind{A, a_info}, bind{B, b_info});
// OR:
// 3: full optimization: we have matrix and operation information to use
auto op_info = multiply_inspect(bind{C, c_info}, bind{A, a_info}, bind{B, b_info}); // optimization specific to these operands
multiply(op_info, bind{C, c_info}, bind{A, a_info}, bind{B, b_info});
`

I think the matrix_info_t and operation_into_t objects can be optional in the workflow - i.e . users could have only a matrix_view and then if they don't want any more memory to be allocated then they would just call the execute (e.g. multiply) function.

@chrwarm Generally I agree, but for the low level kernels, the operation_info_t (for multiphase apis) will likely still be necessary, in my opinion.
I wanted to circle back on matrix_info_t use,  I guess in your current implementation for ARM APIs, you only have a single operation's optimization active at a time, right?  whereas in Intel's Insepctor executor APIs, we may have multiple operation optimizations active at a time (based on the hints).
Coming from the possibly multiple operations having active optimizations perspective, I was thinking all of those operation's optimizations that are requested to be created for a given matrix could go together into the matrix_info_t object and are filled  in by each call <xyz>_inspect() when it is passed as an argument to it.   Note that there are the possible exception of optimizations that are for a multi-phase execution that involves more than one matrix (again thinking spgemm or conversions), which might be a small subset of the operations supported and which would have a particular <operation>_info_t object,  like spgemm_info_t or format_converter_info_t that is also part of the API calls...
In this case, the matrix_info_t is definitely optional for improved performance, whereas the others might not be...
With your ARM design, I guess I would still think of the matrix_info_t as housing any matrix specific optimizations and you can pass it in to each of the <xyz>_inspect() APIs similarly, but in your case, on doing so, you could remove one optimization and replace it with the other one similar to what I think you were describing as your current pattern?  Does that make sense ?

@spencerpatty  I think I understand what you're heading towards.
We do only keep one representation of the matrix based on the last-optimized operation at the moment in Arm PL. We could start to save the union of all structures created by different optimize/inspect calls, but I have a slight concern about keeping those up to date. E.g. if the user updates values in the original matrix what happens then - do we update all our data structures under the matrix_info_t object, or do we invalidate it? It could become messy. On the other hand, passing back those optimizations in the form of operation_info_t (as I suggested) only moves the burden of managing them on to the user.
On balance, I think I'm in favour of having a smaller interface and hiding as much as possible behind matrix_info_t except for the multi-stage stuff, as you suggest above. This fits well with what we have (not that that should be a big constraint!), and I guess the number of operations that will be active with a particular matrix will be small too, so maybe the burden of managing multiple optimizations will be small.
It would be good if you could draft up an example workflow of the interface in action for the different spgemm use-cases as you currently see it?

Yes, I think the burden of managing optimizations when values might be changed will likely always be somewhat shared by user (unless we put everything in the matrix_view itself, which we are trying to move away from), but I could envision an update_matrix_values() API which takes in a new array of values, a matrix_view and zero or more matrix_info_t objects associated with that matrix_view and makes the change in matrix_view and any passed-in matrix_info_t objects.  So the user has complete control over which if any of the matrix_info_t objects it wants to update to the new values ...
I want to point out that the whole goal of having the matrix_info_t separate from the matrix_view is to allow the user complete control over lifetime of optimizations, and with this model, the user could choose to put certain optimizations in one matrix_info_t and others in a separate one (for instance if an iterative solver is going to be using forward and backward triangular solve and SpMV, a common set for Conjugate Gradient algorithm, those could be put into one matrix_info_t, but in other places, an SpMM or SpTRSM operation are more commonly used together, those could be optimized for in a separate matrix_info_t object or objects).
I will definitely try to prototype the SpGEMM use case I am envisioning and share it here...

I discussed much of this with @BenBrock offline and I believe that we will have some version of the SpGEMM use case presented in our next meeting ...  if not, I am happy to provide it after that point

@BenBrock, @spencerpatty thanks for the slides yesterday, it's now really clear and I like this direction a lot, but it's worth exploring possible limitations as well I think...
We seem to be settling on views, which are nice, and I appreciate the benefits, but are there cases where they don't work well? I can think of 2 possible objections users might have.

Large matrices. I mentioned this yesterday. If there are use cases where an application is running close to the memory limits of a system, then users are likely going to want optimized operations on such large matrices by allowing the library to take a copy and optimize/change format, allowing users to free the original arrays. Using views without the inspect/optimize call would forgo library optimization; alternatively, making the inspect/optimize call would likely lead to running out of memory, because the user's original arrays cannot be freed before the view object is destroyed.

Might some users who want optimization find managing at least 2 data structures for a single matrix burdensome or confusing? Subjective, but it's a possibility, especially if someone just wants to do a single one-matrix operation (e.g. SpMV) with their matrix.

In both cases a possible solution is to allow users to control ownership of data via the constructor of the initial object with e.g. a bool.
spmatrix_t a1(row_ptr, col_indx, vals /*, false*/); // effectively, a view
spmatrix_t a2(row_ptr, col_indx, vals, true); // library to take ownership; user can free row_ptr etc.

If users create as a1, then they are effectively choosing a view and we're back in business.
If they create as a2, the library has control over memory and users could free their input arrays. This addresses objection 1 above.
Creation as a2 doesn't preclude having multiple matrix info objects that contain optimization data for different contexts. If users choose to create info objects, the library may then choose to treat a2 as a simple handle, freeing up most of the data copied/moved in on creation, if information held in it is made redundant by what is in the info objects.
If objection 2 is valid one, maybe we could overload inspect functions so that they can either return separate info objects as proposed, or embed/hide info objects inside a2, thereby simplifying what the user has to carry around.
// Create separate matrix infos
auto info = multiply_inspect(bind_info{a1, a1_info},
 bind_info{b, b_info}, c);

// Or just hide a2_info in a2 (throwing an error if a2 already has an info in it?)
auto info = multiply_inspect(a2,
 b, c);

Just some thoughts. After writing all this down, maybe overloading adds even more confusion!? And maybe those objections can be swept aside - it would be nice if they could be!

Hi Spencer,
There is a lot to think about, we may have to prioritise some of these issues and pick out use cases that will not be well supported initially...

Is there any reason we wouldn't want to have views and objects be supported in the final solution even if we start with views?
No, I think starting with views is a good approach actually.

In this case wouldn't we still want the inspect/execute paradigm? or would it be ok to have a single execute function which could do optimizations on the fly ?
Inspect/execute still makes sense with objects - that's what we have now, right?

Chris


Add read-only state (+ empty state/em dash) to combo box

Description
The read-only state needs to be aligned to the design language.
If the field is empty in a read-only state, it is displayed with an Em dash.
The Em dash is configurable/optional.
Tasks
### Checklist
- [ ] Density (HD, MD, LD, TD)
- [ ] Mode (Light, Dark)
- [ ] Fill (Primary, Secondary, Tertiary)
- [ ] State (Default, Hover, Selected/Active, Disabled, Read-only, Other)
- [ ] Controlled API
- [ ] UITK accessibility parity (screen reader + keyboard interactions)

### Deliverables
- [ ] Characteristics spec
- [ ] Interactions spec, where necessary
- [ ] In Code & Figma (Component + Guide)
- [ ] Supporting site documentation

Closed by #3131


Improve image rendering in ImageEditor for browsers that supports it

Ref https://github.com/concrete5/concrete5/issues/3591
We can use the imageSmoothingQuality to improve the quality of images resized via JavaScript (it works only for selected browsers).
Here's a test with Chrome using the original image attached here:
before

after

Please remark that atm even Chrome is sub-optimal: see https://bugs.chromium.org/p/chromium/issues/detail?id=618324&can=1&q=imageSmoothingQuality&sort=-modified&colspec=ID Pri M Stars ReleaseBlock Component Status Owner Summary OS Modified


TypeError: string indices must be integers

Error message:
  File "/usr/local/lib/python3.6/dist-packages/pylxd-2.2.7-py3.6.egg/pylxd/models/container.py", line 316, in stop
    wait=wait)
  File "/usr/local/lib/python3.6/dist-packages/pylxd-2.2.7-py3.6.egg/pylxd/models/container.py", line 291, in _set_state
    response.json()['operation'])
  File "/usr/local/lib/python3.6/dist-packages/pylxd-2.2.7-py3.6.egg/pylxd/models/operation.py", line 32, in wait_for_operation
    operation.wait()
  File "/usr/local/lib/python3.6/dist-packages/pylxd-2.2.7-py3.6.egg/pylxd/models/operation.py", line 62, in wait
    if response.json()['metadata']['status'] == 'Failure':
TypeError: string indices must be integers

To produce:
from pylxd import Client
client = Client()
c1 = client.containers.all()[0]
c1.stop(wait = True)

lxd --version:  3.9

Closing as it doesn't seem to be an issue or isn't repeatable.  Please re-open if it occurs again.  Thanks.

I manage to get this error again while running a VM cluster running ubuntu18 with lxc version 3.0.3. When the master is waiting for a container to be created in a cluster member it pops this error again. Modifying the response.json by eliminating the read into attribute ' medatata' as suggested  and as per the API for Operation fixed the issue for me