Add copy() to message decoders

Flyweights are mutable by nature. However, sometimes it is quite handy to make them 'frozen' or immutable.
For this reason, we could be adding a method like copy() like below to the SBE (JAVA) generator template and to agrona's MessageDecoderFlyweight interface:
public <T extends MessageDecoderFlyweight> T copy() {
    int version = this.sbeSchemaVersion();
    int blockLength = this.sbeBlockLength();
    sbeSkip();
    final int length = this.encodedLength();
    sbeRewind();
    final var dst = new ExpandableArrayBuffer(length);
    dst.putBytes(0, this.buffer(), this.offset(), length);
    return new (class).wrap(dst, 0, blockLength, version);
  }

Volunteering for a PR, if this gets accepted.

This is a copy of the decoder and the underlying buffer.  To be more in keeping with the SBE design it would makes sense to provide a decoder and buffer as a destination.
We have an upcoming feature to have DTOs created from codecs that may be more appropriate.

To be more in keeping with the SBE design it would makes sense to provide a decoder and buffer as a destination.

.. or have both options available. Assuming such a copy(...)  method would be exposed by the MessageDecoderFlyweight interface, it would make creating copies on interface level a tad difficult - it would mean new instances would need to be created through reflection, cough, cough.
ad DTO: sounds interesting. Is there an issue for this?

This will also be done for Java. https://github.com/real-logic/simple-binary-encoding/pull/957


Skill and Score

Template request
Describe the template you need
Additional information
Optional: Add screenshots, or Figma/Sketch files


Fix issue with computing differences on transaction dispatch

This PR introduces the following fixes and improvements:

Text insertion is now again completely handled by the virtual dom instead of the browser. This solves https://binnenland.atlassian.net/jira/software/c/projects/GN/boards/4?modal=detail&selectedIssue=GN-3729. It does unfortunately reduce typing performance.
The moveCursor input handler now uses state only dispatch to prevent an extra write and difference calculation
When a transaction is created, rdfInvalid and marksInvalid are initialized to false to prevent unnecessary mark and datastore calculations.
Internally, the datastructure which keeps track of transaction listeners has been changed from a list to a set.
The toolbar now uses a TransactionDispatchListener in order to update the status of its buttons.
Transaction listeners have been mostly converted to arrow function in order to be able to omit the use of this binding.

Note that changing to a Set is only OK because js Sets are ordered sets as defined in the spec, cause the ordering of listeners is important


Refactor Storage with templates

Try to refactor Storage with templates to reduce duplicated code and prevent low-level memory management.

Make sure you staging the progress into multiple PRs instead of making a big one for all modification.

@IvanaGyro  Let me know if you hit a point where the refactor is ready. I want to start moving Storage + Tensor into another repo
cytnx-core

I suggest deciding whether to move Storage and Tensor after the refactoring process. Currently, only three files (excluding CUDA kernels) remain for Storage. Furthermore, we can combine Tensor with Tensor_Impl and merge Storage with Storage_base, provided we maintain the current API and ensure high memory efficiency. If we also consider replacing Storage with trust::vector, there will only be two classes beneath Tensor. If there are only a few files below the Tensor level, keeping those files in the same repository could simplify maintenance.

I want to keep the wrapper class (Tensor and Storage) from their impl. We
will need to separate the package for a few strategy reasons.
On Sat, Sep 14, 2024, 13:31 Ivana @.***> wrote:

I suggest deciding whether to move Storage and Tensor after the
refactoring process. Currently, only three files (excluding CUDA kernels)
remain for Storage. Furthermore, we can combine Tensor with Tensor_Impl and
merge Storage with Storage_base, provided we maintain the current API and
ensure high memory efficiency. If we also consider replacing Storage with
trust::vector, there will only be two classes beneath Tensor. If there are
only a few files below the Tensor level, keeping those files in the same
repository could simplify maintenance.
—
Reply to this email directly, view it on GitHub
https://github.com/Cytnx-dev/Cytnx/pull/469#issuecomment-2351071650, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AFCX3SLJQ3B3Q4T6B4CB6ATZWRXFNAVCNFSM6AAAAABOGBNGMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJRGA3TCNRVGA
.
You are receiving this because you commented.Message ID:
@.***>

It's fine to leave Tensor and Storage as abstract classes apart from their implementation.
I wonder, what are the reasons for splitting the repo? What are the plans for maintaining the dependencies in the linear algebra components, CUDA kernel, and the other high-level components?

It's fine to leave Tensor and Storage as abstract classes apart from their implementation.
I wonder what are the reasons for splitting the repo? What are the plans for maintaining the dependencies in the linear algebra components, CUDA kernel, and the other high-level components?

The plan is to separate UniTensor from the underlying Tensor, so other ppl can use Tensor and also bridge torch.Tensor, xtensor, jax and numpy directly.

All GPU, CUDA kernels for Tensor (and below) should go to cytnx-core

It's fine to leave Tensor and Storage as abstract classes apart from their implementation.
I wonder what are the reasons for splitting the repo? What are the plans for maintaining the dependencies in the linear algebra components, CUDA kernel, and the other high-level components?

Its more like a wrapper than the abstract class. Storage_base/ Tensor_impl was supposed to be the abstract class, and Tensor/Storage is the wrapper for C++ API

It's fine to leave Tensor and Storage as abstract classes apart from their implementation.
I wonder what are the reasons for splitting the repo? What are the plans for maintaining the dependencies in the linear algebra components, CUDA kernel, and the other high-level components?

Its more like a wrapper than the abstract class. Storage_base/ Tensor_impl was supposed to be the abstract class, and Tensor/Storage is the wrapper for C++ API

In light of this, I wonder if there is a class diagram explaining all these somewhere? It should be included in the developer's manual

I would love to chat with @IvanaGyro and ppl who are involved on this. I feel like it would be nice to have a conversation on why it was design in that way, what was the concern, and maybe there are better way to fulfill them.
A few convo among the issues makes me think we are not on the same page, and I think it is also hard for @IvanaGyro to work on stuffs when lacking informations

Still it would be nice to have some documentation. At some point I understood the design but I don't recall all the details.

I suggest we have a meeting and maybe someone can take a note?

dtype and device would be better implemented using std::variant.  That way, the enumeration of all of the possible types and devices only needs to happen once.  That would turn a lot of runtime errors (such as missing some function for a specific dtype or device) into compile time errors, and much easier to maintain.  Single or multiple dispatch is really easy with std::variant and visitors.  With the current design, adding a new dtype would be a major hassle, and no way to check that all of the required functions are supplied without runtime testing.
Also, for the C++ code, is there a reason for restricting the types of a Tensor to a specific set?  For Python it is obviously required that it is a bounded set, but C++ code could be able to construct a Tensor on any type.  Eg, if I wanted to experiment with some Tensor, or Tensor?

This PR has diverged from the dev branch and the proposal for refactoring, so this PR will never be merged.


Billable->Subscription relationship is inconsistent

Billable->subscriptions() guesses the foreign key based on the Stripe model, but Subscription->user() always assumes the local key is 'user_id', regardless of the Stripe model. Seems like both sides of the relationship should be consistent. I submitted a PR, but it was closed.

Possible fixes: 1) Update Billable->subscriptions() to specify the foreign key as 'user_id' (per the PR); 2) Update Subscription->user() to allow the framework to guess the local key name instead of always assuming 'user_id' (would require a note on the subscriptions table schema that user_id may need to change to something else); 3) Include a note in the documentation to override subscriptions() on your Stripe model if necessary. #1 seems the most correct, since the local key name is already being forced in Subscription->user().

I have encountered exactly the same problem as you, however, I thought the best way to fix it would be option 2, and submitted a PR to guess the relation from the model which is passed through, with a manual override if needed. #265 - this was my PR but Taylor closed it, presumably because he thought this was a rare problem. I agree that the most common use case will use the User model, but it can't hurt to have it so that other models can be passed through too (especially since Cashier already asks for it!). I know it will make the naming convention slightly inaccurate but this could be changed at the next major release.
Can we have a rethink on this? @taylorotwell

In my case, the Billable entity is an Organization with multiple Users.When I tested this, the only thing required to implement option 2) above was to remove the explicit reference to "user_id" in the Subscription->user() relationship; that's enough to allow the framework to guess the appropriate foreign key name. (The documentation would also need to be updated, to reflect that the "subscriptions" table schema may have to be adjusted if your Stripe model is something other than "User".)

Maybe references to "user" should be changed to the more generic "billable"-- rename the relationship to Subscription->billable(), force the foreign key to be named subscription.billable_id, etc.

What is everyone else doing in this case? Easy hack to fix for now, but feels dangerous.

I simply abandoned migrating my projects from 4.2 to 5.2.

@Ralla I'm in the middle of a 4.2 -> 5.2 migration as well at the moment. I'm going to put that on hold now until there's a solution to this.

@dsshafer - This sounds like the best option.

This has been fixed in #337 thanks to @Repox


Add Fb::Page#posts

Fetch all the posts of a page (not just the first 25 or 100)
Closes #2

Coverage remained the same at 100.0% when pulling 1750e8eef1d93b3fb90f2c0e5c1edff8cf22f333 on page-posts into f24a5507b95739cc574a6f257246586afa5b369c on master.

Coverage remained the same at 100.0% when pulling b034cd6afd8eb2a49db5f3d027c15dde2c29cc63 on page-posts into f24a5507b95739cc574a6f257246586afa5b369c on master.


Change Forecast initial estimate to be dashed line and updated to be solid

Currently the lines in the "forecast" page of analysis dashboard look like this:

It would make sense to make them consistent with the UI, where they are dashed for initial estimate.
We could swap the lines in the quartz UI, but the dashed line is harder to read the details of the line with the pieces missing in the dashes, so I'd propose to change to match quartz UI.

This is fixed in the latest version, just need to deploy it. version - 939b030


PoI selection menu

Sometimes, the map is displaying too much PoIs at the same time. In those cases, when clicking in a pixel in which several PoIs are placed, one alternative is to display a popup menu allowing to select from the available PoIs. This PR adds support for this to the widget. Future PR can make this configurable or add other alternative methods like clustering and so on.

Coverage increased (+0.03%) to 99.205% when pulling 01b022f594ca2e04510149e935f065e02d5eac97 on aarranz:feature/select-menu into f8d8a462bb9552e90e3a6018f88e7657e1940ab3 on Wirecloud:develop.


module does not show up if connection is not made

Cannot pre-program with module unless connection has been made to Event Master

That is correct, the presets are loaded from the system, so with no system, no presets. You could fire up the simulator and pre-program if needed.


⚠ Fortnite has degraded performance

In bf573b6, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1647 ms

Resolved: Fortnite performance has improved in ccb729a.


Add support for multi-signature transactions

This has been requested so far by the CityCoins team in particular in support of governmental users who will likely need this in the medium-term post-launch of the app in early August 2021 for sweeping funds and changing wallet addresses via contract executions involving 2 of 3 parties.
Ledger support is a preliminary requirement for their needs since all relevant users will expect to authenticate with Ledger per https://github.com/blockstack/stacks-wallet-web/issues/951
cc @whoabuddy @pstan26

This was requested today by the Eggschain team as well.


Added a couple more samples to flagstat

I found 'em on Stack Overflow, I've no idea what they actually relate to, but I get the impression they represent crappy samples. Hence the names.

I don't think that it's particularly crappy data? See http://www.htslib.org/doc/samtools.html

Provides counts for each of 13 categories based primarily on bit flags in the FLAG field. Each category in the output is broken down into QC pass and QC fail, which is presented as "#PASS + #FAIL" followed by a description of the category.
The first row of output gives the total number of reads that are QC pass and fail (according to flag bit 0x200). For example:
122 + 28 in total (QC-passed reads + QC-failed reads)
Which would indicate that there are a total of 150 reads in the input file, 122 of which are marked as QC pass and 28 of which are marked as "not passing quality controls"

These files have 0 as the second number in every category, which means that nothing was failed..
I just found the page where you found these and it looks like the step prior to this (the alignment) was super crappy. Hence the low number of reads. But I'm not sure you can tell that from these files alone..?
Anyway, this is academic. It's good to have more test files, thanks! 😀


Support for ~ in paths

It would be useful if database = ~/foo.kdbx worked in config.toml, rather than having to hard code the location of the home directory.

I'm thinking this and #10 could be solved by supporting shellexpand.


Add FOSSID as a remote scanner

This PR adds a FossId scanner to ORT.
The FossId server configuration is passed through ort.conf :
options {
       FossId {
             serverUrl="https://xxx"
             apiKey="xxx"
             user="xxx"
       }
}

Tests are coming in a later commit.

Superseded by https://github.com/oss-review-toolkit/ort/pull/3546.


Cannot disable sortByDate and recover the original "Add Section" shortcut

Hi there,
Thanks for the awesome extension!
I’m having one small issue: I miss the "Add Section" shortcut which is implemented by Todoist itself through the s key binding. I’ve tried commenting out the line which reads ['s', sortByDate], but I still can’t recover the old shortcut from Todoist. Is there any way to do it?
Thanks!

Unfortunately I haven't yet figured out how to reliably trigger Todoist's builtin keyboard shortcuts and the current approach completely replaces the handling of the keyboard


Add missed fields to MultisearchBody: ext, rescore and to SearchRequest: ext

Description
Add missed fields to MultisearchBody: ext, rescore and to SearchRequest: ext
Issues Resolved
Came up while implementing https://github.com/opensearch-project/spring-data-opensearch/issues/19
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@reta This might have to be backported manually :|


Android export not finding apksigner

Godot version:
3.3 (custom built for the rpi4)
OS/device:
raspberry pi os on a raspberry pi 4
Issue description:
Im trying to export an android apk, but for some reason godot 3.3 will not find the apksigner, all the settings are the same in godot 3.2.3 and it works fine there, here are a few pitures to show how i have things set up.
This is the error in the export window:

This is the android export editro setting and the files manager showing the files and paths that they point to(note the apksigner.jar file that godot will for some reason not find):

The Adb and Jarsigner settings are not used anymore, only the Android Sdk Path setting is.

The Adb and Jarsigner settings are not used anymore, only the Android Sdk Path setting is. If you upgraded from 3.2.3, the old settings will still be listed because of #22099.

okay, but if i remove those paths it still cannot find the jarsigner for some reason

How did you install the Android SDK?
Distro provided Android SDKs are outdated and not supported, as documented here: https://docs.godotengine.org/en/stable/getting_started/workflow/export/exporting_for_android.html

How did you install the Android SDK?
Distro provided Android SDKs are outdated and not supported, as documented here: https://docs.godotengine.org/en/stable/getting_started/workflow/export/exporting_for_android.html

You should have Android build-tools 30.0.1, but you have 27.0.1 (that's from 2017).

Do you know how i can get the newer version on my rpi?

I'm not sure that's possible easily as the upstream Android SDK is only distributed for x86_64 Linux.
You could try to add Debian Sid repos to your Raspberry Pi OS though to get build-tools 29.0.3, that might be recent enough: https://packages.debian.org/sid/android-sdk-build-tools


libsolid-rs/auth: properly derive a WebID URI from the ID token

This requires adding a webid claim to the response type, as we're currently using a type which covers only the basic OIDC claims.
Derivation is described here: https://github.com/solid/webid-oidc-spec#deriving-webid-uri-from-id-token.

#11 adds a derivation from the subject, which is only considered a fallback method in the spec linked above.


Separate publish

Current issue
Currently, we can't update the publishing procedure on stabilization branches because it's too difficult to completely update c2cciutils.
Proposed solution
Create an external project, c2cpublish that only contains the publishing part.
Changes from current implementation

No automatic detection of packages that should be published.
Add support for publishing npm packages.
Remove the non-working Google calendar.
Create a new configuration file names .github/publish.yaml

What didn't change:

Publishing from the same branch schema
Publishing of Docker images, Python packages, HELM chart with the same features.

@danduk82 Do you agree with that?


feat(*): add toolbar button for images - I182

Signed-off-by: Shrey Sachdeva<EMAIL_ADDRESS>Issue #182
Added toolbar button for attaching images
Changes

New toolbar button for adding images

Added icon for the same

Flags

NA

Please review @irmerk @Michael-Grover @DianaLease.
I have placed the icon in between the link and undo button, please let me know if that needs to be changed or the image icon svg needs to be something else.
Also, I have used the rendering method of MarkButton for now, this should call for another PR making this button functional.

This looks great, what are the next steps to making this button functional? @irmerk @DianaLease @shrey-sachdeva2000

This looks great, what are the next steps to making this button functional? @irmerk @DianaLease @shrey-sachdeva2000

I believe it would be best to have both the functionalities Slate provides i.e., a popup to enter the URL when the user clicks on the image button (similar to what we have for links) and to handle and convert URL pasted in the markdown to images. Should I go ahead and create another issue for it?

sure thanks

Actually based on this week I think we should hold off @shrey-sachdeva2000, @dselman is currently migrating markdown-editor to Slate v0.5x, which will be quite different than the version we're on. So I think it'll be helpful to put this on the back burner for a few days.

Actually based on this week I think we should hold off @shrey-sachdeva2000, @dselman is currently migrating markdown-editor to Slate v0.5x, which will be quite different than the version we're on. So I think it'll be helpful to put this on the back burner for a few days.

Sure! @irmerk

Hi @irmerk! Based on the migration to Slate v0.5x, I think we can close this issue now.


Add svcat touch command

It would be great if svcat could bump spec.updateRequests to trigger another retry. Otherwise on a retry back-off, you can end up waiting a very long time for a request to be retried.
$ svcat touch --help
Trigger an "update" (TODO What's the right term here?) of a resource

Usage:
  svcat touch [command]

Available Commands:
  binding     Trigger an update of a specific binding
  instance    Trigger an update a specific instance

Example:
$ kubectl describe serviceinstance thing-i-just-deleted
...
spec:
  updateRequests: 0
$ svcat touch instance thing-i-just-deleted
$ kubectl describe serviceinstance thing-i-just-deleted
...
spec:
  updateRequests: 1

#dibs

I am gonna implement svcat touch {instance, binding} for now. If we decide on a different CLI syntax, it should be fairly easy to change in the PR


Does this package support encrypted assertions?

I'm trying to test encrypted assertions with onelogin and it seems that this package can't handle it properly. Or i'm doing it wrongly. I'm getting such exception:
  File "/local/lib/python2.7/site-packages/saml2/response.py", line 1095, in session_info
    authn_statement = self.assertion.authn_statement[0]
AttributeError: 'NoneType' object has no attribute 'authn_statement'

A bit of digging shows that no keys passed in djangosaml2/views.py assertion_consumer_service
    response = client.parse_authn_request_response(xmlstr, BINDING_HTTP_POST,
                                                   outstanding_queries)

As i understand it can't decrypt anything without a key and throw exception above.
If i hardcode key manually in the AuthnResponse.parse_assertion method all process goes fine

It does support encrypted assertions, just don't forget to set the encryption_keypairs pysaml2 config option, such as:
'encryption_keypairs': [{
    'key_file': '/path/to/private-key.pem',
    'cert_file': '/path/to/public-key.pem'
}]

Thanks, it works now. I just couldn't find any mentions about "encryption_keypairs" config param in djangosaml2 and pysaml2 docs so i miss it in my config.

Yeah, pysaml2 does not really have a complete docs. I also only found it in the code.

Could you maybe make a note about that option in djangosaml2 docs (config example?). Might save lot of time for others :)

Done.

Hello @knaperek. I'm facing this problem currently but I have the encryption_keypairs on my pysaml2 configuration. Any tip?


Add EBS volumes for testing

All testing is currently performed against file vdevs since block storage wasn't easily available prior to migrating to EC2.  However, the EC2 latent build slaves support adding volumes to instances.  The master.cfg should be updated to attach at least one volume and the test scripts updated to use it.  This will allow us to test the vdev_disk.c implementation.

While this might be nice it's no longer critical.  Instance storage is now being used for this purpose instead of EBS volumes.


Validating password by taking input from user.

Script Title - Validating Password
Validation Rules :
At least 1 letter between [a-z] and 1 letter between [A-Z].
At least 1 number between [0-9].
At least 1 character from [$#@].
Minimum length 6 characters.
Maximum length 16 characters.
Input :
A3r@180a
Output :
Valid password
what will change -
Instructions

Create a new folder for your script and file/folder name should be appropriate.
Create a README.md in your folder for program Instructions
add requirements.txt if needed

Please add/delete options that are not relevant.

[✓] Adding New Code
[✓] Improving Documentation

Programming Language

[✓] Python

:star2: Star it :fork_and_knife:Fork it :handshake: Contribute to it!
Discord server  - https://discord.gg/FXyh2S3
Happy Coding,

I would like to work on this issue.

I would love to work on this can you assign it to me?

I would love to work on this can you assign it to me?

Can you assign it to me?I would like to work on it.

Can I work on this issue?


featuire request - filter messages

I was going through the change-log looking for it, but didn't read anywhere that filtering messages was available. That would be the main reason for us to switch out what we are currently using. This one we have is supposed to, but is failing.
We have zones and sleep mods shouting into our discord where we don't want to see them, so if you could add a configurable filter to apply before messages are sent, that would be awesome!
If this is already a current feature, please let us know =]

Can you give me some more information? Like what mods they are, and the messages they are generating? I assume you are using the valheim-discord-notifier mod to send messages currently.

Can you give me some more information? Like what mods they are, and the messages they are generating? I assume you are using the valheim-discord-notifier mod to send messages currently.

Correct, though we went ahead and made the switch now. The two mods (currently) sending messages to chat are
World of Valheim - SSC - V0.7.2-892-0-7-2-1632506303
R1NS3-SkipSleep-1.0.5
They send shouts to the server with a prefix or predictable format, that if given the opportunity to filter out entire messages based on defined string or regex, then it be able to block any plugin that uses predictable prefixes/strings (WoV or SkipSleep)

just another observation, there seems to be less logged by BepInEx than valheim-discord-notifier. It's kind of nice to be able to look back at our archived logs when needed. Could look to see when messages are being sent or muted etc... We like logs lol. Maybe an option in the config as I realize not everyone enjoys extra bits in the logs?


[bug] Using appWindow.setSize right after appWindow.setResizable doesn't resize window in Ubuntu 22.04.1 LTS

Describe the bug
In my tauri.conf.json, I've set my window's resizable value to false because I did not want users to be able to resize the window using their cursor. I did, however, want to support users resizing the window to specific resolutions (e.g. 1440x900) via a dropdown. So when the user triggers a resize, I run the following code:
await appWindow.setResizable(true);
await appWindow.setSize(new LogicalSize(1440, 900));
await appWindow.setResizable(false); // prevent user from resizing window using cursor

On Ubuntu 22.04 LTS with no graphical tweaks, the window does not resize after running this code, however. Even when I run the same logic in rust using tauri:window, I still run into the same issue.
Interestingly, if I remove the last line (setResizable(false)), resizing works only if the logical size is greater than or equal to the height and width specified in my tauri.conf.json. Please scroll down this issue post to see my full tauri.conf.json.
If I set my tauri.conf.json to specify "resizable": true and remove the setResizable lines in my code, resizing works as expected.
Reproduction
See description
Expected behavior
See description
Platform and versions
Environment
  › OS: Ubuntu 22.04 X64
  › Node.js: 16.14.0
  › npm: 8.3.1
  › pnpm: 6.11.0
  › yarn: 1.22.17
  › rustup: 1.24.3
  › rustc: 1.60.0
  › cargo: 1.60.0
  › Rust toolchain: stable-x86_64-unknown-linux-gnu

Packages
  › @tauri-apps/cli [NPM]: 1.0.5
  › @tauri-apps/api [NPM]: 1.0.2
  › tauri [RUST]: 1.0.5,
  › tauri-build [RUST]: 1.0.4,
  › tao [RUST]: 0.12.2,
  › wry [RUST]: 0.19.0,

App
  › build-type: bundle
  › CSP: unset
  › distDir: ../dist
  › devPath: http://localhost:3000/
  › framework: Svelte

App directory structure
  ├─ .routify
  ├─ src
  ├─ node_modules
  ├─ public
  ├─ src-tauri
  ├─ python
  ├─ .git
  ├─ dist
  └─ .vscode

Stack trace
N/A (none produced)
Additional context
Here is my tauri.conf.json:
{
	"$schema"<EMAIL_ADDRESS>	"build": {
		"beforeBuildCommand": "yarn build",
		"beforeDevCommand": "yarn dev",
		"devPath": "http://localhost:3000",
		"distDir": "../dist"
	},
	"package": {
		"productName": "X",
		"version": "0.1.0"
	},
	"tauri": {
		"allowlist": {
			"all": true
		},
		"bundle": {
			"active": true,
			"category": "DeveloperTool",
			"copyright": "",
			"deb": {
				"depends": []
			},
			"externalBin": [],
			"icon": [
				"icons/32x32.png",
				"icons/128x128.png",
<EMAIL_ADDRESS>				"icons/icon.icns",
				"icons/icon.ico"
			],
			"identifier": "com.tauri.dev",
			"longDescription": "",
			"macOS": {
				"entitlements": null,
				"exceptionDomain": "",
				"frameworks": [],
				"providerShortName": null,
				"signingIdentity": null
			},
			"resources": [],
			"shortDescription": "",
			"targets": "all",
			"windows": {
				"certificateThumbprint": null,
				"digestAlgorithm": "sha256",
				"timestampUrl": ""
			}
		},
		"security": {
			"csp": null
		},
		"updater": {
			"active": false
		},
		"windows": [
			{
				"fullscreen": false,
				"resizable": false,
				"title": "X",
				"height": 1080,
				"width": 1920
			}
		]
	}
}

unfortunately not. I tried so many different combinations and got nothing. It seems like if GtkWindow::resize happens asynchronously and GtkWindow::set_resizable is immediate so it will lock the size before resize can do its thing (this is just my observations).

I found GtkWindow::set_size_request will ignore resizable property. But calling set_resizable after it will still overwrite the call somehow.
How do other platforms behave? Can they still resize by calling method when resizable is false?

The problem with GtkWindow::set_size_request is that if you call it to set the width to 200 for example, users can't resize the window afterwards using the mouse to a value that is less than 200


Add ingress-per-leader

Enhancement Proposal
Ingress v1, which in reality was ingress-per-leader, was deprecated in #200. We should add that functionality back under a new interface and expose it again.

there is a branch with started work at https://github.com/canonical/traefik-k8s-operator/tree/create-ingress-per-leader

See also:

#180
#191

@PietroPasotti can/should we close this issue?

We need this for subdomain routing.

@sed-i Why do we need this?
Is is enough of an edge case that we can just use traefik-route?

We should do it as a part of the ingress library (aka ingress-per-app) and expose it as a constructor argument for the routing mode (where we would select to leader or something), and use it in Grafana.


Only first line of a multi-line table cell gets exported

Describe the bug
Using the standard tiptap table extension, if a table cell has multiple lines in it, only the first line gets exported by the extension
To Reproduce

Create a table using tiptap table extension
Add some rows and columns
Insert some text with "new line" enter keys on multiple lines
Export to markdown using this extension
Exported markdown file only contains the first line

Expected behavior
All the lines in the table should be in the markdown export
Screenshots

Released in v0.8.3

If multiple <p> are inserted, this will fallback to plain HTML table.


404, then cannot redeclare wp_crop_image

Hi, having a strange issue with 404 not found when clicking Let's go.
I’ve cloned and installed into root/wp-faker, and it shows intro page just fine at /wp-faker.
Yet on click on Let's go it adds another wp-faker to url and gives 404: /wp-faker/wp-faker?proceed=1
After changing url in index.php it says cannot redeclare wp_crop_image. After commenting out that includes image.php from wp-admin seems to generate content. Not sure about images though yet.

Certain plugins seem to cause the 'cannot redeclare wp_crop_image' problem. For example, I am using the Media Cloud plugin. Deactivating it removes the error.


More powerful API Configuration

Addresses the feature request: https://github.com/ruby-grape/grape/issues/1883
Notes, because I did not want to introduce a name conflict in the user scope (i.e. someone else is very likely using the name configuration as a helper), I renamed the param to api_configuration, I'm open to a better naming if possible.
To read the PR and understand the changes: There's a certain complexity on distinguishing between the command running at pre-setup time (i.e when it's being parsed and stored on the main API for re-playing on mount time) and mount time. As such, I've introduced the LazyValue objects which remember how they were accessed, and know that they are lazy, therefore I can distinguish evaluated params from params that should only be evaluated at Mount-Time.
Because I was adding features to the configuration, I've decided to add 2 additional ones that seemed used, conditionally executing code based on a configuration (unfortunately a simple if block won't do on the main namespace as I cannot record the unevaluated value. i.e. I only know the response of the if statement, but I can never see that there was an if statement )
And arbitrary code on mount (that admitdly would take care of the conditional issue assuming you were happy to moving the code to that block).
Each part of this PR is open for discussion

This looks solid. Haven't done a thorough CR yet, but wanted to discuss naming, first.
If I am not mistaken we liberally confuse "api" and "endpoint", that is we mount endpoints but they are derived from Grape::API. I think we want to distinguish full APIs with endpoints, so should api_configuration be endpoint_configuration? But then Grape also has config. I wonder if we're better off standardizing on config for all configurations? I wouldn't worry about user conflict, I've seen a lot of APIs and I've never seen config or configuration in user scope. Another possibility would be just options, because we mount with: options and this seems like a good catch all. Thoughts?
I think on_mounted should be mounted, which is similar to included in Ruby.
Is there scope to mounted? Should it be receiving options such as the parent that is mounting the endpoint?
I think we could simplify conditional on: options[:enabled] as given options[:enabled], which would be similar to params which is more consistent. If we want to introduce more complex conditionals (don't see why rn) in the future we can always make given a wrapper of conditional on: .... WDYT?

HI @dblock , updated with the new names. I agree mostly.
The only change to your suggestions is that I've kept configuration rather than options, problem with options is that it was conflicting with local parameters named options in too many places, making the change harder to implement in a sanely way

I'm merging this. 👏


Fixes resource leak when reading pinpoint hbase schema definition file

related to #5925

Codecov Report

Merging #5948 into master will decrease coverage by <.01%.
The diff coverage is 40%.

@@            Coverage Diff             @@
##           master    #5948      +/-   ##
==========================================
- Coverage   40.99%   40.98%   -0.01%
==========================================
  Files        3005     3005
  Lines       90459    90461       +2
  Branches    11854    11854
==========================================
- Hits        37082    37076       -6
- Misses      50142    50150       +8
  Partials     3235     3235

Impacted Files
Coverage Δ

.../hbase/schema/reader/xml/XmlHbaseSchemaParser.java
53.84% <40%> (-4.49%)
:arrow_down:

...collector/receiver/grpc/ShutdownEventListener.java
0% <0%> (-50%)
:arrow_down:

...p/pinpoint/rpc/client/WriteFailFutureListener.java
56.25% <0%> (-18.75%)
:arrow_down:

...vercorp/pinpoint/rpc/packet/ClientClosePacket.java
55.55% <0%> (-11.12%)
:arrow_down:

...pinpoint/collector/receiver/grpc/GrpcReceiver.java
57.14% <0%> (-7.94%)
:arrow_down:

...t/collector/cluster/flink/FlinkClusterService.java
11.11% <0%> (-4.17%)
:arrow_down:

...tor/metric/datasource/DefaultDataSourceMetric.java
75% <0%> (-3.13%)
:arrow_down:

...ofiler/sender/StandbySpanStreamDataSendWorker.java
80.59% <0%> (-2.99%)
:arrow_down:

...orp/pinpoint/rpc/server/DefaultPinpointServer.java
79.22% <0%> (-1.77%)
:arrow_down:

.../pinpoint/rpc/client/PinpointClientHandshaker.java
66.42% <0%> (+6.42%)
:arrow_up:

... and 2 more

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 bdc214f...cb4c1c7. Read the comment docs.


:value binding on  doesn't reflect changes

Vue.js version
2.1.4
Reproduction Link
https://jsfiddle.net/aleksey_beskosty/zz5svy6q/
Steps to reproduce
Select element is declared as:
<select :value="val">...</select>
What is Expected?
When val is changed, select element updates its value and shows it.
What is actually happening?
val is changed but select doesn't update value property.

duplicate of #4369 (fixed in 1cf377f)

I'm still having this problem on first load.  I basically made a wrapper component for a select that uses :value and @input instead of v-model.  On first load of the wrapper component, it's random chance as to whether the correct value will be displayed in the select, or whether it is empty.  I know the value is there because it displays when I put {{value}} in the same wrapper component right next to the .  Also, if I change :value to v-model it works every time. So there must still be some sort of race condition going on. I'm using Vue 2.5.13


Noobaa ingests Warp data at incorrect size

Environment info

NooBaa Version:
INFO[0000] CLI version: 5.5.0-nsfs
INFO[0000] noobaa-image: noobaa/noobaa-core:5.5.0-nsfs
INFO[0000] operator-image: noobaa/noobaa-operator:5.5.0-nsfs
Platform: Kubernetes 1.20.4

Actual behavior

Warp is a publicly available tool in which to run to s3 protocol.  In this test, I have a single bucket called nsfs and Warp is running IO to it.  Trying to transfer all 1M files, but when they get ingested, they are at size: 1001525, as shown below.  You can also see the errors Warp throws when it tries to GET the objects that it previously PUT.  The GETs expected 1M objects, but saw larger objects.  Also, the Warp job that I ran below did not have multipart enabled.  I get the same errors whether or not multipart is enabled.

More data:  When we run this exact same job on minio, no errors occur and the objects all show up as 1M.
Here I am trying to run all 1M files.  They transfer to Noobaa nsfs bucket as 1001525:
(Fri Feb 26 07:19:35) stevefeb22-x-app1:~  ./warp mixed --access-key=fxzjlNA4ukK6r9o515ux --secret-key=wRtSyCMwXs6sucLEW6rdzRfRvL9UtO1b3N2r0eQD --obj.size=1M --host=stevefeb22-x-master.fyre.ibm.com:31168 --duration=60s --disable-multipart --objects=50 --bucket=nsfs --insecure
warp:  We encountered an internal error. Please try again.
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
warp:  unexpected stat size. want:1000000, got:1001525
Inside of the bucket, we can see that the files got ingested at incorrect sizes:
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20 '11.jAM9(NyhwNj(c4Fm.rnd'
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  16.DbcqY06ofEyT064V.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  29.lVl4UZFuBtOGh41p.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  36.WSntmmYxYTsUrgA5.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  46.TYEJKGGCVOHF9QY9.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20 '52.HikhV5Ci4C(hP6JA.rnd'
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  57.lHJMri5ijC669qBP.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  59.GTyv96pNhxDMhIeE.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  62.68IEubzctC3xMFzc.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20  64.JjG3gJwtzz8NRfTA.rnd
-rw-r--r-- 1 noob root 1001525 Feb 26 15:20 '67.jFlHtJSDO9OlW)NM.rnd'
Expected behavior

We expect the files to show up as the correct size. Warp should be able to run for 60 seconds with no errors.

Steps to reproduce

Rerun the Warp job shown above.

Hi @delillol Thanks for the info!
Can you please get one of the PUT object logs from the noobaa-endpoint pod?
It would help to understand what were the request headers and these will be shown in the log.
Thanks

@guymguym : Hello.  Just reran a few objects today to get the logs.   I can clearly see that this warp client uses STREAMING-AWS4-HMAC-SHA256-PAYLOAD which means that the content is chunked encoded.
We support this mode of course, but previously this was not handled correctly for namespace buckets (see issue #6122) and then resolved in #6206 which was not included in version 5.5.
So I would be happy to know if this reproduces on new master builds - which I do not expect.
Closing this issue for now so that I won't forget, but please let us know if this is indeed working or reopen if the issue is reproduced.
Thanks!


split out protobuf related import code into a separate module

Id like to implement a kafka-importer for zeeqs
I have already implemented support in kafka-exporter to use protobuf (not published yet)
The idea here is to split out the code that maps protocol buffer records to entities so that a kafka-importer can be implemented

Sure, I will look to implement a kafka-importer and provide a PR with everything
I'm not a kotlin programmer so it will be a learning experience :)

FYI I have done the kafka+protobuf integration into https://github.com/zeebe-io/zeebe-simple-monitor/pull/183
The zeeqs kafka-importer will be very similar :)

I think it may even be worthwhile to extract io.zeebe.monitor.zeebe.protobuf into zeebe-exporter-protobuf
And io.zeebe.monitor.zeebe.kafka into a new module zeebe-exporter-protobuf-kafka
Then zeeqs and zeebe-simple-monitor can include zeebe-exporter-protobuf-kafka and not have to re-implement it.

I implemented a new project that has support for hazelcast (protobuf) and kafka (protobuf or json)
https://github.com/cameronbraid/zeebe-exporter-source

Awesome :rocket:
Currently, I'm busy but I'll have a look at soon as possible :)

Closing this PR in favor of #66
Related to https://github.com/zeebe-io/zeebe-simple-monitor/pull/184

Closing this PR in favor of #66
Related to https://github.com/zeebe-io/zeebe-simple-monitor/pull/184


fix: envFiles

envFiles is using h5 instead of h4 so it's not showing in the right hand side menu

Thanks @ifbyol for making me realise this, the prev versions are incorrect too, so I would like to update them all. Do you see any downside?

No, I don't see any downsides


urdf: fix small inertia issues on left arm

This issue was due to a leftover of old link name of the forearm
It fixes #60

Merged without review for not blocking @Xenvre


Errors Editing Quests using /jobs editquests

*Detailed description of the issue:
When I try to make any changes with /jobs quests, I get an internal error. This will happen when I do /jobs editquests and try to edit the default quests or attempt to create a new one. I also get no option to edit the Kill or Custom Kill on the /jobs, as well.
https://pastebin.com/enH3KZ2f
Jobs version: <IP_ADDRESS>
Server Type (Spigot/Paper/etc): Spigot
Server Version (using /ver): 3232-Spigot-3c1fc60-cbd747a (MC: 1.17.1) (Implementing API version 1.17.1-R0.1-SNAPSHOT)

b9733e801d0b9ab5105af3348da20f2b70cc68ce


How to extract features of an action after transformer encoder in pyramid architecture?

Hi! Thanks for your great work.
I have a question about how to extract features of an action after transformer encoder in pyramid architecture.
For example, for a video with features extracted using I3D with a shape of [2048, 2301], an action has frames starting from 300:500. So, the features of that action using I3D would be [2048, 300:500].
In the pyramid architecture with 6 layers, the feature of the action at layer 1 will be [dim, 300:500]. As layer 2 halves the size, the feature will be [dim, 150:250], is that correct?
Thank you.

For your question, one action will probably only lies in a certain layer of the pyramid rather than multiple layers with the current regression range limitation plus center sampling.

Thank you for getting back to me.
I understand that the model architecture in your Table D states that the input for Layer 2 is the previous layer (Layer 1).

For your question, one action will probably only lies in a certain layer of the pyramid rather than multiple layers with the current regression range limitation plus center sampling.

Sorry for my misunderstanding, this suggests that there may be actions that are only directed to Layer 2 and not to Layer 1?
Also, could you please explain how you calculate the regression range for each action in your code?
Thank you.

#84 has a example to explain the regression range and assignment of action distribution, you can refer to #84 for more details.

Thank you for your help.


fix: add emptycard for loading and signing

:tada: This PR is included in version 1.3.1 :tada:
The release is available on:

1.3.1
GitHub release
1.3.1

Your semantic-release bot :package::rocket:


smoove: command not found

Hi,
My svcaller run on one WGS sample was stopped with the same error as in the log below. In the process of debugging, I decided to run the Structural variant calling – whole genome NA12878 (50x) example pipeline provided on the bcbio website and got the error below. Is anyone familiar with this issue?
Issue_Log.txt

Hi @ikeadeshina,
Sorry for the problem, and thanks for opening up the issue and including the log file, that was very helpful!
The problem is this: when we call out to command line tools, we try to find the bcbio-installed tools by checking in locations where bcbio installs the tools and if we can't find the tool in those places, we default to just assuming the tool is on the user's path. But we added this behavior later on in bcbio's development, so we have missed some spots. It looks like you ran into one with smoove and we are just assuming it is on your PATH.  I think if you add /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin to your PATH it should pick up smoove and continue. I'll also push a fix for this issue so we find the smoove executable properly.

Hi @roryk,
Thank you for your prompt response. I tried adding to my PATH as recommended but ran into the same error again. Please see the attached log.
Looking at the /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin directory, smoove is not there. There's smoother but no smoove. Could this be the source of the error?
Issue_Log_2.txt

Thanks, I see-- smoove is supposed to be linked there, but the link might not have worked for some reason. There is also a /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/anaconda/envs/python2/bin directory-- is smoove there? If so, if you add that to your PATH it will work.
We had a bunch of problems with the installation last month due to some stuff shifting in conda, so you might be running into an issue with that.

Thank you. That seems to have been the solution.
Unfortunately, the run was stopped again by a similar issue. Please see the attached log, which is a result of using a similar tactic as before...I added /mnt/data/jeremy/programs/bcbio_v2/tools/bin to my PATH. This is where I found run_metasv.py. I couldn't find it in /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/, which is likely the reason for the error. Given that adding the correct location to my PATH did not work, what would you recommend?

Hi @ikeadeshina,
Sorry I think the log didn't get attached. Could you attach the log? Thank you!

Sorry about that. Please now see attached.
Issue_Log_4.txt

Hi @ikeadeshina,
Thanks! This is another program that is in the python2 environment and looks like it is not getting linked, but I'm confused because it does find it, since it is looking in the full path for it.
Does run_metasv.py appear here?
/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/anaconda/envs/python2/bin
It looks like it is looking for it here, which should be a link to the python2 environment. Is it?
/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py

Hi @roryk ,
Yes, run_metasv.py appears in this directory: /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin. And of course, this has python2.
And to answer your second question, it looks like there's no python2 environment in /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/ which is where the program is looking for run_metasv.py (See screenshot below).

Thanks, sorry I meant there should be a link from:
/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py
to
/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py
I'm guessing this problem should also be solvable by adding /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin to your path. If you did this already, I bet the link from /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py to /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py exists, but is broken.

Yes I added /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin before realizing I've previously done so. I didn't work anyway and came up with the same error.
I couldn't find the link from /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py to /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py
How do you recommend I move forward?

Thanks-- I think something is messed up with your install where a bunch of these tools are not being linked to the anaconda/bin/run_metasv.py directory, but should be. If you set up your path like this:
export PATH=/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/:/mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/:${PATH} it should look in the python2 directory first, then the normal bin directory and then on your regular PATH.
Alternatively, you might want to try re-installing bcbio to get these to be linked properly. We had some install issues last month that broke a lot of installations and yours might have been one of them. Sorry for all the problems.

Hi @roryk ,
I did as suggested and re-installed but the problem persists. Is it possible to change the command generating the error from /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py to mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py?

Hi @ikeadeshina,
Sorry, these links should be appearing, and I'm not sure why they are. You can fix it by adding the link in manually: can you link /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py  to /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py like this:
ln -s /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/envs/python2/bin/run_metasv.py /mnt/data/jeremy/programs/bcbio_v2/genomes/anaconda/bin/run_metasv.py

that should get it pointing to the right place.

Hi @roryk ,
It appears that it worked to the program moved past that error and into another. Please see the attached log.
Thank you
Issue_Log_7.txt

Sorry about all these issues and thanks for the patience debugging. The latest development has a fix for the problem you're encountering, which is due to not using the python from the isolated python2 environment when running it. If you update with bcbio_nextgen.py upgrade -u development and re-run, it should hopefully work correctly for you.
Practically, some of these issues are due to metasv not getting a lot of use and attention in bcbio recently. It can be useful, but can run slowly on some samples so didn't end up getting a lot of use in production because of these runtimes. For summarizing across multiple callers, we have been using svprioritize (https://bcbio-nextgen.readthedocs.io/en/latest/contents/configuration.html#structural-variant-calling) with files of regions to prioritize and summarize across. This might be a better direction to explore for your analyses.
Hope this all helps and gets your samples finished.

Thanks everyone, I think this is probably solved-- please re-open if this didn't solve your problem!


Feature request: Share/save/export/drag-drop image

This app works great, and as soon as I saw it generate an image, I wanted to share it. It's pretty easy to hook up SwiftUI share sheets by using ShareLink:
https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-users-share-content-using-the-system-share-sheet

Good idea! I added tap-to-share on iOS using ShareLink like you suggested. I couldn't find an easy way to add image export on macOS (ShareLink seemingly isn't supported in Monterey?) so I've ifdef'd it as iOS-only for now. If you know of a good way to share CGimages on macOS without introducing a bunch of extra code, lmk :)

Thanks!! On macOS maybe saving to the clipboard would be the easiest way to support exporting. I haven't tried it, but this thread seems promising: https://developer.apple.com/forums/thread/115198


bug(Edit): Inline Code Edit transforms code into special character symbol.

Version
Latest Pre-Release commit 2747e455813f11f466b7054cd517115390fa99d6
Describe the bug
VS Code 1.96 insiders
Cody 1.49.x Pre-Release
Ubuntu 24.04 on WSL Windows 11 24h2 Host
When editing Rust code with the ALT+K inline edit feature the word 'curren', like in 'current' transforms into '¤' symbol.
Expected behavior
It should preserve the word 'current' after the edit was accepted.
Additional context
https://github.com/user-attachments/assets/cd7c3726-c172-426b-b677-291c4ac71237

@dominiccooney
I wildly guess that this is a really rare edge case and not a very high priority.
If you don't mind, I will close this issue.


Feature request: Decouple geometry.dart from the rest of dart:ui?

My team is working on a command-line Dart tool that we would like to use the geometry.dart classes Size, Rect and Offset for. Would it be possible down the line to decouple geometry.dart from the rest of dart:ui so that it could be used in a headless context? We are also using other Flutter libraries elsewhere in the project (not in the command-line tool), so writing our own versions of these classes or copying the geometry.dart file into our codebase would mean extra code to convert our local versions to those used by the Flutter libraries.
@mishadynin
@krisgiesing

You should feel free to reuse the code, but we can't really decouple it (short of putting it in dart:core itself) because dart:ui can't depend on any packages, it's part of the VM itself.

Hm, that's a bit of a shame. Is there a good trick for automating the conversion of the local classes to the equivalent dart:ui classes, or do we just fall back on field-by-field copies?

No good trick. I would probably make your copies have "toFoo" style methods that do the right thing, but even that is problematic because obviously your version can't import dart:ui...
Maybe we should move these to dart:core?

Yeah, for dependency reasons I think we'd need a 3rd class to do the conversion, one which knows about both sides.
Putting these in dart:core would be nice for us but I'd feel a little guilty being the sole client for something core to the language.

I seem to recall it might be possible to provide additional dart: to the dart command line executable which possibly could work for your case.  I'd reach out to @a-siva or someone who knows the VM well to ask.

What about dart:math?

Oh, dart:math does look promising - it already has a Rectangle class.

Sounds like there is no change planned?
Is this issue still relevant?

Closing since this no longer seems relevant. Feel free to reopen if this isn't the case.


Incorrect python path used on case-sensitive MacOS systems

I originally raised this as an issue against the homebrew ninja formula:
https://github.com/Homebrew/homebrew-core/issues/60265
They think it's a problem with ninja, and have asked me to raise an issue here.
What happened
I tried to use the ninja -t browse tool on a MacOS machine with a case-sensitive file system.
Repro steps:
touch CMakeLists.txt
cmake -GNinja .

ninja -t browse

The ninja -t browse command failed with an execvp error:
$ ninja -t browse
ninja: execvp: Not a directory

Why it happened
Running ninja -t browse requires ninja to invoke python. The path to the python executable is baked-in to ninja at compile-time via a compile definition called NINJA_PYTHON:
https://github.com/ninja-build/ninja/blob/a63fb13322aac3ca56e008757eb0514d96549ab5/src/browse.cc#L50
NINJA_PYTHON is configured as part of the ninja bootstrap script:
https://github.com/ninja-build/ninja/blob/a63fb13322aac3ca56e008757eb0514d96549ab5/configure.py#L323
It comes from the --with-python option to configure.py, which has its default set here:
https://github.com/ninja-build/ninja/blob/a63fb13322aac3ca56e008757eb0514d96549ab5/configure.py#L217
So if you don't override the default, then NINJA_PYTHON gets set to the result of the expression:
os.path.basename(sys.executable))

On my system, sys.executable evaluates to:
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

Once you pass it through os.path.basename you're left with just 'Python'.
On a case-insensitive MacOS system, trying to invoke a binary called Python results in /usr/bin/python being used (which is a sym-link to the system python command above).
On a case-sensitive MacOS system, no command called Python can be found in the path. That's the reason for the execvp failure.
Suggested fix
If the python path is going to be baked in to the executable then perhaps it should just default to python, all in lower-case. Users with more complicated situations can use the --with-python configure option.
Alternatively perhaps some way to alter to path at run-time would be useful. Either an environment variable or a ninja config file. Though I understand that ninja doesn't currently use those approaches for anything else (except NINJA_STATUS).

Maybe this can be fixed by CMake or rather let's use the simple python approach when compiling Ninja with CMake. See #1822

OK, I've taken a look and I think I'm happy to attempt this. Can you just say a little more about what you mean by the 'simple python approach'?
I think you're suggesting that the CMake script needs to support the inlining of browse.py, and that NINJA_PYTHON should simply be set to python, rather than trying to do any system introspection? Presumably it would be worth providing a CMake cache variable to support setting NINJA_PYTHON to something else.

I think you're suggesting that the CMake script needs to support the inlining of browse.py, and that NINJA_PYTHON should simply be set to "python", rather than trying to do any system introspection?

Yes.

Presumably it would be worth providing a CMake cache variable to support setting NINJA_PYTHON to something else.

IMHO that's not worth it. If someone really wants to do that (Do packagers need this?) he can modify the CMakeLists.txt. Or symlink python. KISS ;)

I've opened https://github.com/ninja-build/ninja/pull/1836
For some reason GitHub wouldn't let me link multiple issues from the PR, so it's not been referenced automatically here.

I think you need to remove "ninja-build/ninja" from the second issue reference.

Ah, I see. I got the digits in the issue number transposed! Will close this now that #1836 is merged.


when creating an app or device through console, the ID field is not automatically selected

I just clicked "new", I expect that if I type something, it will go into that field. But no, i need to click on the field first.

See https://github.com/patternfly/patternfly-react/issues/6676

https://github.com/ctron/patternfly-yew/blob/3df5b8f09ecacb5f4d0a92f4a62afb582c1d3e9d/src/form.rs#L253-L257


Looking for Collaborators

I have not been doing as much Swift and feel like I am neglecting this library. If you are interested in becoming a contributor please comment on this issue. Thanks!

Hey @jpotts18 . I would definitely like to be a contributor.

Hi, I would love to be a collaborator for this project.


Asynchronous updates inside a component reset an input's value.

Vue.js version
2.0.2
Reproduction Link

https://jsfiddle.net/r8ohn7z3/
Steps to reproduce

Choose a basic color from the dropdown
Start typing a different color into the textbox
When the time changes if you are still typing it will reset it to the previous color

What is Expected?
The input's value is left the way it is when the time update happens.
What is actually happening?
The value of input is being reset and so the user's input is being removed
Background
I previously submitted this bug in which I may not have clearly stated that this is inside a component. But because this is a component, your advice about using v-model is not even possible. The idea is for user's convenience having multiple ways for a user to input a value.

Hi, thanks for filling this issue.
It seems that the problem here is the change event from <input> isn't fired until <input> loses focus, and this is a browser behavior which we can't really help with.
The workaround is simple: explicitly bind the input listener to <input>, which is immediately fired whenever the user types:
https://jsfiddle.net/rx6jeznj/

@fnlctrl thanks for the help this will definitely let me work around this, but there is something I don't understand. Why is this even necessary? The time value is the only thing that is being updated why does it trigger an update of all the values in the component? In other words it seems to me that because the setInterval function is only affecting one variable why should I have to worry about it updating value? I thought the reactivity was only supposed to efficiently update variables that had changed--in this case time.

Simply put: before change event is fired, the <input> has its own temporary state that is different from the app's, and will be overridden by the app state when the render function is called, which is triggered by the update of time. The render function is called whenever anything reactive is changed.

Notice that you are allowing the user to create a DOM state (by typing into the input with only a one-way bound value) that is disconnected from the underlying application state. Whenever the component updates, the application state will force the DOM state in sync and throw away the temporary input state.
To precisely control what you want, you need to represent this temporary state in your application state by creating a separate local property (which you can then use v-model on): https://jsfiddle.net/r8ohn7z3/1/

I think we may need to follow React's take on this by warning such usage and freezing the input altogether.

@yyx990803 thank you for your response. I spent several hours trying to figure out what was happening, and perhaps it was just me, but I think because frameworks tend to naturally be a black box combined with my misconception about the render function I was at a loss on what to do. In retrospect it makes much more sense what was happening and how to work around it. When running into these edge cases it would be nice if some type of error or warning were thrown to alert the developer to what is happening. But,I know that that isn't an easy solution since edge cases by definition are not something you run into all the time.

@qw3n yeah, we will most likely add a warning for one-way value bind in the future.


Insert the path into the session when creating it

It follows the same logic as setting the cookies: it is added to
the object right after it has been constructed and makes sense
only in the scope of web applications.

Please tell me if you prefer my to submit a patch that preserve trailing whitespaces. I configured my text editor to automatically remove trailing whitespaces and though it would not hurt.

Can you provide a use-case / small code sample how you'd use this feature?

Please tell me if you prefer my to submit a patch that preserve trailing whitespaces

That's ok, thanks to ?w=1

I created a file explorer with flexx and I wanted to encode into the url
the path to open.
http://...../FileExplorer/some/path/to/my/files
Till now, I just asked the javascript part to provide the python part with
the path.
#!/usr/bin/env python3
# -*- coding:utf-8 -*-

from flexx import app, ui, event

class FileExplorer(ui.Widget):
    def init(self):
        self.path_widget = ui.Label()
        self.emit("init_js", {})

    @event.connect("thepath")
    def on_thepath(self, *evs):
        self.path_widget.text = "The path is {}".format(evs[-1]["value"])

    class JS:
        @event.connect("init_js")
        def on_init_js(self, v):
            self.emit(
                "thepath", {
                    "value": window.location.pathname[len(flexx.app_name) + 2:]
                }
            )

if __name__ == "__main__":
    app.serve(FileExplorer)
    app.start()

I wish to reduce this to simply
#!/usr/bin/env python3
# -*- coding:utf-8 -*-

from flexx import app, ui, event

class FileExplorer(ui.Widget):
    def init(self):
        self.path_widget = ui.Label(text="The path is {}".format(self.session.path))
        self.emit("init_js", {})

if __name__ == "__main__":
    app.serve(FileExplorer)
    app.start()

By the way. I am not sure how to do the first example using event.prop instead of sending events...

Well, only the browser knows that path, so if you want Python to know about, it you'll have to communicate it :)
Your JS init code can be in the function called init() and be called automatically at startup. You can make a synced property to easily communicate the value:
...
class FileExplorer(ui.Widget):
    ...
    class Both:
        @event.prop
        def the_url(self, v):
            return str(v)

    class JS:
        ...
```

This is not true. But maybe I was not clear.
When the browser performs the HTTP GET request (/FileExplorer/some/path), the
web server (tornado) analyses this path to decide to which handler it should
provide the request. In our case, the request is handled by AppHandler.
AppHandler, in get and then in _get_app, performs some analyses and
transformation of the full_path. One of those is to extract the so called path
(some/path), by removing the application name (FileExplore) from the beginning
of the full_path.
This is were the path is lost: A session is created, the page is returned to
the browser and the rest of the communication takes place in the websocket.
Therefore, it is not true that only the browser knows the path. Tornado and the
AppHandler know it at some point. They just don't communicate it to the python
Model. I though that the session was the good place to give such information.
Thank you for the information about the init method in the JS class and for the
suggestion to use a synced property in Both. For some reason, I thought I could
do that by writing a property in the python part and set it in the JS part.

For some reason, I thought I could
do that by writing a property in the python part and set it in the JS part.

That could be a very interesting way to make that explicit though. @almarklein self.py.url = window.location.pathname[len(flexx.app_name) + 2:]

Ah, I see what you mean now. I guess this is more or less what is proposed in #189.

@almarklein I think that #189 is way more ambitious than my proposal.
While I suggest to provide the path to the application and let it do whatever it
wants with it by parsing it, #189 proposes to already pre process the path in a
routing mechanism so that the application can get arguments ready to be
consumed.
I think that if #189 was available, I would not need to get the path, and that
would be awesome. Nonetheless, it is very likely that such a feature will be
part of flexx before long. Therefore, I consider providing the path as-is to the
application a small win now waiting for a big win in the future :-).

That's fair enough, and I imagine that it won't get in the way of #189, since it'll be ok to have a path as well as parsed options. So what's still needed to make this work?

AFAICU, this is sufficient to fit my needs. But, now that I am thinking and comparing what other framework do, I think that it might be better to store the whole request in the session instead of the path.
Indeed, IIRC, in all the web frameworks I tried so far, the handler had access to the pre computer path like suggested in #189 as well as the bare request.
Also, I'd like to get access to the path today, but I may want to get the arguments in the future, or the sent cookies/headers. Like in the case of letting the path through, I think that it does not hurt to provide the whole request and it will most likely suit a handful of needs. Actually, when I tried to find out how to access the path, one of my first attempts was to check whether I could do self.session.request.path :-).
If you don't mind, I will change the pull request to provide the request instead of the path into the session.

Also, since the request contains the cookies, I can make create_session take request as parameter instead of cookies.

I changed the commit to provide the request instead of the path. Was do you think about this?

With the request, you can also call the application with
/FileExplorer/?path=/some/path

And get the path in the model with self.session.request.arguments["path"]

This looks nice; sending along the request seems like it might be useful indeed.

session.request = request

Could you add a @property for request so its documented? Maybe do session = Session(name, request=request) so that the session can set the request (and cookies) itself.

Done :-)

I fixed the style error in session.
I am not sure the Sphinx error is related to my changes. Can you tell me what is going on with Sphinx ?

Nevermind. No sphinx error today :-)

Oups.... It should be better that way :-)

Looking good. That one CI runner is a glitch. Trying to do something about it in another PR. Thanks!


Add action to update the inventory model

~User Story: As a configurator, I would like to modify the state of an inventory when a player clicks on an item to be able to build dynamic inventories.~
~Feature~
~This feature will be implemented as an item action with the following configuration:~
# Update the inventory state by changing the value of a property.
update-state:
  type: "UPDATE_STATE"
  # The name in uppercase of the property to update.
  # You can set anything you want, even a property that is not provided by the code.
  property-name: "<name>"
  # The value of the property. By default, it will override the current value by the one below.
  # Only the following types are supported: string, int, double, boolean.
  # For numbers such as int and double, you can prefix the value by the symbols '+' and '-' to
  # make an addition / subtraction instead of replacing the current value by the new one.
  property-value: <value>

~Placeholders~
~All the properties should be available as placeholders by default without needing to declare and registering a new placeholder manually for each of them in the inventory provider.~

Actually, when registering a placeholder, its name is fixed and used for text parsing. However, the feature described in this issue needs a placeholder with a dynamic name to be able to display all the data stored in the inventory model. Fixing that would mean reworking the whole placeholder system, which is not wanted and planned for now.
Thus, the utility of this feature is questionnable. Indeed, its goal was to let configurators add custom data in the inventory model and then to enable them to display these data. However, because of the placeholder problem describes above, the display of data is not possible in this case. Therefore, configurators would only be able to customize the inventory data model without being able to see the result.
The item action system that already exists is finally a good alternative to this feature. Each time a developer wants to let configurators customize the inventory data model, it will create a new item action that the configurators will be able to apply on the inventory items they want. This action can also be parameterized for more customization.
Thus, the final choice for this issue is to only implement the inventory model system, and to not implement the new item action to make possible to update this model.


Madison International School Campus Country Merida

Madison International School Campus Country Merida https://merida.mis.edu.mx/

@wwwmamf The first verification stage is complete: the official domain for  Madison International School Campus Country Merida is en-merida.mis.edu.mx, to the best of my knowledge. This is just an informational note. The pull request is still under review. The review may take some more time. I greatly appreciate your patience. Here is the proof of domain ownership: https://en-merida.mis.edu.mx/apps/pages/index.jsp?uREC_ID=1614811&type=d

@wwwmamf Thank you for your patience while waiting for a review and processing your request. Pull request merged.


🚀 Feature: File Download Progress callback

🔖 Feature description
When we download a file we don't get a progress of how much file is downloaded.
🎤 Pitch
Features uses examples:
We can use this feature so file sharing kind of apps or some chat app that has a image upload or download feature.
👀 Have you spent some time to check if this issue has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Hey @sampatsharma143 this sounds like a good idea to me, I will bring it up with the team and update you on any progress 🙏

Thanks for responding

Closing as a duplicate of https://github.com/appwrite/sdk-generator/issues/820


[Feature request]: Allow unordered response json fragments

Consider a response where a certain json fragment is always at certain level of the tree, but can change order ie
{
   data: {
      fields: [{ id: 'foo'}, { id: 'bar'}]
   }
}

and
{
   data: {
      fields: [{id: 'bar'}, { id: 'foo'}]
   }
}

For such responses one cannot easily write assertions, as:
$response->assertJson(function (AssertableJson $json) {
   $json->has('data.fields', function (AssertableJson $json) {
      $json->where('id', 'foo');
   }
}

will check for existence of data.fields.id
and
$response->assertJson(function (AssertableJson $json) {
   $json->has('data.fields.0', function (AssertableJson $json) {
      $json->where('id', 'foo');
   }
}

will fail when the fragments change order.
One could write such test as:
$response->assertJson(function (AssertableJson $json) {
   $json->where('data.fields', function($field) {
      return $field->pluck('id')->contains('foo');
   }
}

I think it's an ugly workaround, and I'd personally prefer to use AssertableJson so that I can filter the children further (ie. I want test to pass if a field exists where id is foo and it has options where one of options is bar)
I don't know if currently such functionality exists, but would appreciate either support of Laravel * notation, ie:
$response->assertJson(function (AssertableJson $json) {
   $json->has('data.fields.*', function (AssertableJson $json) {
      $json->where('id', 'foo');
   }
}

or introduce a hasAny method that will explicitly iterate through array type fragment and match any element that fulfils the assertion ie:
$response->assertJson(function (AssertableJson $json) {
   $json->hasAny('data.fields', function (AssertableJson $json) {
      $json->where('id', 'foo');
   }
}

Hey @eithed,
Due to the nature of test output being predictable by design, situations in which a 'random order' is caused on purpose (e.g. a raffle) should in general be very limited, and while the callback-based assertions aren't "great", you can still create your own alias method as the Assertions are Macroable.
In either case, we're deprecating the Assertions in favor of Laravel's AssertableJson, so we won't be implementing this.
In either case, thank you for your feature request and interest in Inertia! :)


Can't get weather and day/night mode working in latest version

Hi thank you for this great app!
Since the changes in the latest version I am not able to get the app to show weather or change day/night mode.
I've set up rules following your examples and have tried manually sending MQTT messages in developer tools. The app seems to be working fine in all other respects, but I can not get these features to work. It's as if the messages are never received by the tablet.
I found the log book, and it shows other messages. I have no problem with 'speak':'hello'. But weather and sun - nothing.
Here are my actions:
automation publish_sun_status:
  - alias: MQTT Sun
    trigger:
      platform: time_pattern
      minutes: '/15'
    action:
      service: mqtt.publish
      data:
        payload_template: '{''sun'':''''}'
        retain: true
        topic: alarmpanel/command
  - alias: MQTT Weather
    trigger:
      platform: time_pattern
      minutes: '/30'
    action:
      service: mqtt.publish
      data:
        payload_template: '{''weather'':}'
        retain: true
        topic: alarmpanel/command

help?

These are from my automation files, I used the automation creation tool to make them
- id: '1538595661244'
  alias: MQTT Weather
  trigger:
  - minutes: /30
    platform: time_pattern
  condition: []
  action:
  - data:
      payload_template: '{''weather'':{{states.weather.dark_sky.attributes}}}'
      retain: true
      topic: alarmpanel/command
    service: mqtt.publish
- id: '1539017708085'
  alias: MQTT Sun
  trigger:
  - minutes: /30
    platform: time_pattern
  condition: []
  action:
  - data:
      payload_template: '{''sun'':''{{states(''sun.sun'')}}''}'
      retain: true
      topic: alarmpanel/command
    service: mqtt.publish```

Make sure these are set in your configuration.yaml file:
# Track the sun
sun:

# Weather with darksky
weather:
  - platform: darksky
    api_key: [redacted]

Thank you so much for the quick and detailed reply. I guess I misunderstood the directions on your website, where the example given is:
{
  "payload_template": "{'weather':}",
  "retain": true,
  "topic": "alarmpanel/command"
}

The payload with empty value was retained and being ignored by the tablet. Once I deleted the retained version and then published a message with the version you provided here, everything is back to working as it should.
I suggest updating the readme and https://thanksmister.com/android-mqtt-alarm-panel/ so that other simpletons will not make the same mistake.
Thanks again.

Oh - one other correction for the readme and website. In the example for day/night mode you have:
  trigger:
  - minutes: '/5'
    platform: time

this won't work, it needs to be platform: time_pattern

I will update the documentation, thanks!

It looks like the website is not rendering the Github page correctly and omitting the information.  If you look at the project page itself in Github https://github.com/thanksmister/android-mqtt-alarm-panel, its rendered correctly.  I will play with it until the website renders properly.

Every time I try to turn on the weather toggle in Alarm Control Panel, when I go back to the settings page, and go back to the toggle, it is turned off.  I have tried this on 2 different devices.

@mjsambol thanks for reporting the issue, there will be a fix in the next release.


Fix instructions to change min-height

If you set min-height to value less than default 300px, you'll need to set it on .CodeMirror-scroll also for it to work.

Thanks!


Buttons Not Showing

[ ] What you've tried (include code snippets, or whole files as necessary):
I made a new application in Android Studio. Nothing fancy, just the basic MainActivity.
I then included the AppIntro library as per the instructions and made an IntroActivity.
I loaded it up and while it seems to work flawlessly, there are no SKIP or > buttons at the bottom?
I tried to use the AppIntro2 but still no bottom buttons.
Just a little info about my setup:
Using AppIntro 4.0.0
Developing in Android Studio
Tested on both a Android 7 and Android 5.1 phone (same result).
I feel like I'm missing something simple. Any advice?
Thanks ahead of time! And thank you all for this library!!!

I think I figured it out, I just needed to set
setProgressButtonEnabled(true);
Haven't been able to find that in the documentation/through GitHub's repo search.

When you created your intro activity, what part of the instructions in the README did you follow?

I followed the instructions exactly.

I copied over the text into build.gradle
I created a new activity using Android studio (which adds the proper manifest entry) and pasted into it the example activity in the README.

Then I loaded the app up to see that everything works except for the buttons at the bottom.
What does the setProgressButtonEnabled(true); function do? When I changed it from false to true it began working fully.

There are instructions for AppIntro and AppIntro2 -- as well as being able to create your own Fragment to pass to .addSlide().
Can you paste your code for your intro here and any other files that were created manually (no need for manifest or build.gradle).

Avluis, I'm aware that there are instructions, and I followed them exactly.
My issue is not with Fragments or slides, only that the bottom buttons do not show on a clean install unless setProgressButtonEnabled(true); is enabled.
I can paste my code, but it is literally the exact same as the code in the README. No changes.
All I want to know is what the setProgressButtonEnabled(true); function does.

If you want to know what that method does, read the source code.
If you don't want to share your code, or simply answer the question, then I cannot help you.

@avluis
I already did, and there was no explanation in the code comments (link), or in the README. See for yourself.
At this point, my code is irrelevant. I was only suggesting that this function should be mentioned in the documentation if it is needed for the library to work properly. I'd be glad to add the commentary myself but I can't find what it does.

So if I understand you correctly - you implemented everything that is in the sample fragment, including the following:
        // OPTIONAL METHODS
        // Override bar/separator color.
        setBarColor(Color.parseColor("#3F51B5"));
        setSeparatorColor(Color.parseColor("#2196F3"));

        // Hide Skip/Done button.
        showSkipButton(false);
        setProgressButtonEnabled(false);

        // Turn vibration on and set intensity.
        // NOTE: you will probably need to ask VIBRATE permission in Manifest.
        setVibrate(true);
        setVibrateIntensity(30);


{ad} HTML tags are rendering as empty parameter values in reference docs

Describe the bug
Problem to solve:
HTML tags in source code are causing build warnings in MicrosoftDocs/azure-docs-cli. More importantly, customer-facing reference docs are not instantiating properly -- parameter values formatted with `<>` are missing. Here's an example:

Requested solution:
These values should be escaped with a backtick. Here's an example from az webpubsub.

Related GitHub issues:
This is the same issue as these GitHub issues.
List of HTML tag instances that need update:

File name
Build error

latest/docs-ref-autogen/ad/app.yml
HTML tag 'application-client-id' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

latest/docs-ref-autogen/ad/app.yml
HTML tag 'application-client-id' isn't allowed.  Replace it with approved Markdown or escape the brackets if the content is a placeholder.

Related command
az ad
Errors
n/a
Issue script & Debug output
n/a
Expected behavior
n/a
Environment Summary
Azure CLI 2.62.
Additional context
No response

Thank you for opening this issue, we will look into it.


Y24-406 - create SMRT Link 13.1 sample sheets

I haven't run this locally but hopefully the sample sheets are working correctly?
Once we deploy to UAT we can upload it to the test SMRT Link Instance.

Yes, I ran a few tests. The CSV version column is at the beginning of the file, with a value of 1 that only gets populated for the first row. This is also confirmed by the unit tests.


Add lv_obj_set_drag_dir and lv_obj_get_drag_dir

This also incorporates #1002 since it was needed for testing.
This pull request introduces the ability to constrain object drag along a specific axis. This is useful for pages that should only scroll in one direction.

It's a very reasonable update! I had some remarks, see them above.

I've fixed everything except your comment about lv_obj_set_pos; see my comment above.

Working well!
Thank you very much!


[FEATURE-REQUEST] Switch to Pytorch 2.0, and use compiled models.

Pytorch 2.0 has been released, and promises backwards compatibility, and many performance enhancements.
As an example of the performance enhancements, an option to compile models is now available, resulting in a ~50% speed-up on huggingface models on an A100, and slightly less on non-server-class GPUs, with minimal code. The speed-ups are even large for AMP precision compared to float32.
Seems like simply doing:
compiled_model = torch.compile(model)

will lead to this speed-up.

This would constitute a major release, and is seen as nice to have.


oh-my-posh: 9.3.0 -> 9.3.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/jandedobbeleer/oh-my-posh/releases.
meta.description for oh-my-posh is: "A prompt theme engine for any shell"
meta.homepage for oh-my-posh is: "https://ohmyposh.dev"
meta.changelog for oh-my-posh is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 9.3.1 with grep in /nix/store/ia8v0h4s1ld61lbdvwdwsh9wvwrf0y84-oh-my-posh-9.3.1
found 9.3.1 in filename of file in /nix/store/ia8v0h4s1ld61lbdvwdwsh9wvwrf0y84-oh-my-posh-9.3.1

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

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
oh-my-posh

Instructions to test this update (click to expand)

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

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

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ia8v0h4s1ld61lbdvwdwsh9wvwrf0y84-oh-my-posh-9.3.1
ls -la /nix/store/ia8v0h4s1ld61lbdvwdwsh9wvwrf0y84-oh-my-posh-9.3.1/bin

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

1 package built:

oh-my-posh

Maintainer pings
cc @lucperkins for testing.

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

1 package built:

oh-my-posh


getAccountById error

Hello,
if I use the following code (with that id, mine or others taken from 'owner id' values):
...$account = Instagram::getAccountById(193886659);
echo $account->username;
...
I get the following error:
Fatal error: Uncaught exception 'InstagramScraper\Exception\InstagramNotFoundException' with message 'User with this id not found' in C:\Users\Administrator\vendor\raiym\instagram-php-scraper\src\InstagramScraper\Instagram.php on line 46
Thanks a lot, very interesting project!
P;)

Thank you.
FYI it has been fixed.

it is still returning the same error after logging in on the latest version

It raises an exception, but not the same one as when the issue was created:
Fatal error: Uncaught InstagramScraper\Exception\InstagramNotFoundException: User exists but library could not pull information about user in /Users/elliott/me/projects/instagram-php-scraper/src/InstagramScraper/Instagram.php:330
Stack trace:
#0 /Users/elliott/me/projects/instagram-php-scraper/index.php(14): InstagramScraper\Instagram->getAccountById(193886659)
#1 {main}
  thrown in /Users/elliott/me/projects/instagram-php-scraper/src/InstagramScraper/Instagram.php on line 330

This is caused by
$userArray['data']['user']['edge_owner_to_timeline_media']['edges']

being empty, so the problem is the data we are trying to scrape just isn't there.
Unless we come up with a different way of scraping the data, it looks impossible to resolve.


RFC0028 - introduce: states

Request clarifications around the states for the introduce protocol:
Introducer

There is no transition to the delivering state. I assume the text if wait_count = 0, transition to "done" else to "arranging" should instead read if wait_count = 0, transition to "delivering" else to "arranging"
Is "send confirm" the action sending an ack to an introducee to let them know that their invitation was forwarded?
Should we also allow for the introducer to receive confirmation that the introduction was arranged successfully (ie. the two introducees have completed did-exchange)?

Introducee

transition to "invited" should instead read transition to "deciding"

@dhh1128 ^

@llorllale I'm just noting that I've seen this ticket. Looks like most of your suggestions should be accepted without a lot of debate. I will work on updating the RFC as soon as I get some free cycles. If you are blocked by me, let me know.

I believe this is fixed now, in PR #229 . @llorllale , please confirm.

@dhh1128 thanks!


Proposal to send messages via Canvas Conversations (Canvas inbox)

This is a sketch of a solution to send messages using the Canvas Conversations API.

We should use OAuth2 to authenticate users between OnTask and Canvas.

We should have a "Canvas Message" button beside "Email" under "Operations" on the Actions page.

There should be a "Schedule a Canvas message" under the "More" button on the Actions page.

To limit UI complexity growth, the proposed "Canvas Message" button and "Schedule a Canvas message" drop-down should be enabled/disabled via configuration during the OnTask deployment. The same option could be added to the current "email" button. Likewise for other future messaging platform integrations.

OAuth2 details:

We should store the user's Canvas API access_token and refresh_token within OnTask, both of which will be obtained via OAuth2. This will allow the user to authenticate with Canvas once, and for OnTask to avoid re-prompting the user for Canvas authentication details in the future.
The OnTask user profile page should indicate if a Canvas API token is associated with the user, and include an option to delete the Canvas API tokens associated with the user.

When the user clicks the "Canvas Message" button:

If OnTask doesn't have a Canvas token for this OnTask user:

initiate the OAuth2 process
(the user will be prompted by Canvas to allow OnTask to access their Canvas account)
OnTask should store the token and refresh token for later use.

Display a page similar to the "Send Emails for action" page

This page should prompt the user to enter a subject for the message, and choose a column from the data table that corresponds to the recipients Canvas IDs.
(I've heard that the allowable content types of Canvas messages is fairly constrained, so perhaps this page should also include a warning or suggestion to revise the message, if it currently contains unsupported content).
Clicking "send" should:

Attempt to send the messages via the Canvas API:

If the messages fail to send due to the access_token expiring:

Use the refresh token to acquire a new access_token and re-try sending.

Thoughts?

Some initial steps to execute a new action type that sends a JSON object to a given URL with a given Token. This will be included in the next release, and some of the functionality can be used to tackle this one. We are getting closer..l.

Good initial sketch. I'm about to push out the initial functionality to have JSON actions. The functionality you are describing would be a refinement for this one but specifically to talk to Canvas. The exchange of credentials and obtaining the token is the delicate part. I think I have enough to sketch the first skeleton...

Our work to date on this issue is here: https://github.com/ubc/ontask_b/tree/canvas-api-conversations
We've used https://github.com/Harvard-University-iCommons/django-canvas-oauth to handle authentication and tokens.

Thanks Craig. I'll get back to you for integration. I think this is a very neat feature...

After some further conversations, a greatly simplified approach entails:

User gets the token from Canvas from "Account" -> Settings -> Approved Integrations -> New access token
OnTask offers site configuration with a list of Canvas API entrypoints
User write personalized canvas email text (interface similar to the existing one for personalized text)
User selects (if applicable) the API entry point
User introduces the token (obtained in step 1). OnTask DOES NOT record that token
Emails get sent to Canvas API properly encoded as JSON payload

Pros: Does not require OAuth2, simplifies the steps in OnTask
Cons: Assumes that user has access to Canvas Token, requires user to store and paste that token repeteadly.

Unfortunately, Instructure states in the API documentation here that

asking any other user to manually generate a token and enter it into your application is a violation of Canvas' terms of service

and

Applications in use by multiple users MUST use OAuth to obtain tokens

So, I think a Canvas integration should use OAuth2, rather than manually generated tokens. I appreciate that this does add some complexity to OnTask.

Thanks for the link to the documentation. Very timely. I didn't know that Canvas was offering that functionality only for testing purposes. The functionality to send the message using the token will still be valid, but we'll have to take a look to how to go through the OAuth2 loop. We have done a bit of that exploration in the past and showed that it would be better to migrate to Djang 2 to use the right Oauth2 libraries. I'll keep the ticket open and report progress further down the line.

One more question. Any ideas how to test the Oauth2 flow with Canvas? Any chance you would be willing to test it? As far as I can tell, you need to register the external application with Canvas in order to use it. This may be a bottleneck. Any ideas?

Hi Abelardo and Craig. I am Anthony from U of Adelaide and we are also interested in this feature. We have a rough implementation in an old version of ontask_b which we have been testing (with tokens) and we are looking only to deliver messages via canvas and do not want to provide users with the option to send emails directly (maybe this could be a feature toggle)?. We would be willing to help test and we possibly could cut some code but we are not a python team. It would be great to have the functionality in mainstream.

@abelardopardo you may be able to test against a canvas VM https://bitnami.com/stack/canvaslms/virtual-machine

Good pointer. I've gone down this path before with another appliance from bitnami to test edX. Should work.

@abelardopardo Yes, I/we (UBC) are able to help with testing.
As a reminder, we also have a working implementation of the Canvas/OnTask Oauth2 workflow (repo linked above). It's not PR-ready, but feel free to take from our work, if it's useful.

Yes, I'll try to put all these pieces together. Thanks!

Just a heads up. This functionality will be part of a next major release in which the platform is migrating to Python 3 and Django 2. It may not be a trivial migration as there are quite a few changes in the underlying libraries.

Hello @craigdsthompson @anthonysymons
I just pushed a commit with label "Version_4_Beta_Canvas_Email" with the initial version of the functionality to send personalized emails through Canvas. Before deploying this version of the platform you have to take into account that we have migrated to Django 2 and Pythong 3. The new deployment may be a bit challenging to achieve, but I think it is  worth the effort.
The new Canvas email functionality requires first some configuration in the local.env file (parameters that are specific to each instance). See the documentation for more details. Once enabled, the platform will offer a new type of action (Personalized Canvas Email). The messages are sent asynchronously through the queueing system. The logs created throughout this step are written to the file celery.log and also as part of the logs in OnTask itself.
The authentication is done through OAuth2 and requires Canvas to create a token and provide the client ID and client secret so that they are part of the OnTask configuration. As it stands, OnTask is capable of handling more than one Canvas instance.
The credentials are attached to the user and can be deleted through the user profile page.
I have done some preliminary testing using the bitnami virtual machine with the community version installed. The OAuth2 cycle was properly executed and the emails appeared in the canvas email accounts of the students. Having said this, we know need you to run further tests and make sure it is tightly integreated with a corporate instance.

New Beta version. The tag "Version_4_Beta_Canvas_Email" has been moved now to include PR #110, #111 and #113.

Hi, we are planning to install and test V4, in the first weeks of 2019. Sorry I cant have an update sooner, but we'll pull the latest then, test and report back. Thanks!

Issue fixed in release 4.0

update: Three classes have successfully sent messages through Canvas using V4 at UBC.
Things seem to be working well! No major issues.

Fantastic news! Thanks for the update. I'll be reaching out to you to write up a "success story" with OnTask