Construct does not recursively construct BaseModel?

Checks

[x] I added a descriptive title to this issue
[x] I have searched (google, github) for similar issues and couldn't find anything
[x] I have read and followed the docs and still think this is a bug

Bug
I have built a "nested" Basemodel (e.g, the fields of a basemodel are basemodels themselves), where I have validation that warns in certain cases, and validation that sets some attributes on other cases. I would like to be able to pass this validated model to a very similar BaseModel, without warnings and setting occurring again.
I looked at BaseModel.construct, which is advertised as exactly what I want, but it looks like none of its fields are set to be baseclasses themselves. Is this intentional behaviour? This does not occur if I use BaseModel.parse_obj.
If this is intentional, is there any way I instantiate a nested model without validation?
To be extra clear with the example below: Given a dict data, I would like to create object a without validation occuring.
Output of python -c "import pydantic.utils; print(pydantic.utils.version_info())":
...             pydantic version: 1.8.2
            pydantic compiled: True
                 install path: /usr/local/lib/python3.6/site-packages/pydantic
               python version: 3.6.15 (default, Oct 12 2021, 03:54:14)  [GCC 8.3.0]
                     platform: Linux-5.4.120+-x86_64-with-debian-10.11
     optional deps. installed: ['dotenv', 'typing-extensions']

from pydantic import BaseModel

class Bar(BaseModel):
    y: int
    z: int

class Foo(BaseModel):
    x: Bar

data = {'x':{'y': 1, 'z': 2}}

a = Foo(**data)
print(isinstance(a, BaseModel)) # True
print(isinstance(a.x, BaseModel)) # True

b = Foo.construct(**data) #               <----- Difference is here!
print(isinstance(b, BaseModel)) # True
print(isinstance(b.x, BaseModel)) # False

a.x.y # Works
b.x.y # Error: 'dict' object has no attribute 'y'

I edited the post for clarify, I realised I written does when I meant does not.

You may read the document.
https://pydantic-docs.helpmanual.io/usage/models/

construct()
a class method for creating models without running validation; cf. Creating models without validation

construct method is not run the validation so that this behavior is correct, I think.

I'd argue that this is about type casting, not validation. Perhaps I can submit a PR to at least document that?

I'm not maintainer so maybe something wrong.
But I seem this section described your suggestion.
https://pydantic-docs.helpmanual.io/usage/validators/#field-checks

I already discovered that. Construct method do not recursively transform raw data to instances of nested classes inheriting BaseModel. Basically either you instantiate your object with parse_obj or the constructor and it must run validators or you consider that your input data is already valid AND parsed (i.e: it contains instances of your nested models if any)
By the way I would really like a « recursive » construct method as well

This is not a bug but intended behaviour, see duplicate here: https://github.com/samuelcolvin/pydantic/issues/1168
I agree that documentation of construct does not reflect its behaviour or use cases very well. And I also would like to see a « recursive » construct.

I'll make a note on our v2 documentation plan that we should document this better.
In general it's hard to draw a line on what should be done automatically or not in a construct function; we've chosen the approach that offers the best possible performance when you know you have attributes that are ready for use.
If you want an "intermediate" version that will construct field values without doing any validation besides packaging dicts into models, I would recommend implementing that as a method on a shared base class that calls things recursively.

In #6121 I have updated the docs for model_construct. Right now, the implementation is in python (as opposed to validation which is in rust). As a result, the performance gap between model_construct and model_validate/__init__ has been considerably reduced, and for simpler models __init__ may be even faster.
@samuelcolvin has mentioned potentially moving the model_construct logic to pydantic-core which should make it always-faster again (though likely by a significantly smaller margin than was the case in v1). If you want a way to recursively construct models from dicts, I would suggest opening a new issue as a feature request for this, as moving the logic to Rust is the perfect time to add support for this (and will likely make it possible to do this sort of thing without the significant performance overhead that would be present trying to do it in python).

@dmontagu on the other hand fixing this in Python now is close to trivial
@@ -472,10 +472,12 @@ class BaseModel(metaclass=_model_construction.ModelMetaclass):
         fields_values: dict[str, Any] = {}
         defaults: dict[str, Any] = {}  # keeping this separate from `fields_values` helps us compute `_fields_set`
         for name, field in cls.model_fields.items():
-            if field.alias and field.alias in values:
-                fields_values[name] = values.pop(field.alias)
-            elif name in values:
-                fields_values[name] = values.pop(name)
+            value_name = field.alias if field.alias else name
+            if value_name in values:
+                value = values.pop(value_name)
+                if field.annotation and issubclass(field.annotation, BaseModel):
+                    value = field.annotation.model_construct(**value)
+                fields_values[name] = value
             elif not field.is_required():
                 defaults[name] = field.get_default(call_default_factory=True)
         if _fields_set is None:

I guess, some edge cases could exist and they are always makes it harder 🤷🏻


linux-sgx and WASI support

Hey folks !
I'm playing around with the example for linux-sgx and it works flawlessly. After inspecting the imported functions of the wasm, I realized it was built by relying on libc-builtin provided by WAMR.
As I aim to use WASI in my project, I edited the CMakeLists.txt file and enabled the flag WAMR_BUILD_LIBC_WASI, in order to support imported WASI functions. Nevertheless, when I build the project using make, I receive various errors regarding unknown types and function related to threading. The full error output can be found in the attached file to this issue.
Do you have any idea why I get those errors ?
Thanks !
Cheers
compilation-errors.log

@ZenLulz The WASI support for SGX is a work in progress. Any progress will be updated here.

Hello @xwang98, thanks for your answer. I might be interested in contributing to enhance the support of WASI for SGX. Could you please give me more details about the work in progress (what is done, what needs to be done) ?
Many thanks !

@ZenLulz we are evaluating using Occlum or Graphene to support WASI on SGX:
https://github.com/occlum/occlum
https://github.com/oscarlab/graphene
A better way would be adding native SGX based on SGX SDK, but we don't bandwidth to work on shortly. We heard that pthread for SGX is already supported by SGX SDK 2.9. Some other posix APIs like open() still need ecall/ocall implementation.
It would be excellent for you contributing to SGX WASI support! Please kindly share any your thoughts or plans.

@ZenLulz
I want to use SGX in my own .wasm app. Do you know how to utilize linux-sgx into my app? I found there just is a simple demo. But no guide to run our own app in linux-sgx

Hello @xwang98 !
I'm currently evaluating and working on the integration of native SGX support based on SGX SDK. At the moment, separated created a similar structure of the existing libc-builtin called libc-wasi with stubs functions inside, expect some to provide basic output and time information for the running WASM within the enclaves. It works fine and I'm looking forward to provide a pull request once the code base will be stabilized. The architecture offered by WAMR is great and genuinely provide all the tools required to provide that native integration approach. This is why I have chosen it over reusing known tools such as graphene.
@leyao-daily: I suggest you start playing with the samples in the product-mini without and with SGX support and read the guidelines available in the docs/ folder. They are very helpful and provide all the information you need to get started.

@ZenLulz it is great! Could you share the link of your working repo if it is public? We have done some development on supporting WASI for SGX and should be able to release shortly. Let's see if we have any overlap here.

Hello @Kevin0626, unfortunately, the repo is not public yet. Do you have any ETA for releasing WASI support ?

What is the status of the WASI for SGX implementation?
Is there a PR coming or some code that i can take a look at?

@mdamgaard-biolib SGX WASI support has been enabled with patch #343 , after building, the iwasm binary generated under product-mini/platforms/linux-sgx/enclave-sample/ can run wasm wasi app. For more details, please ref to build and port WAMR vmcore for Linux SGX.


x1078—As TS (Katy), I want the release file columns renamed and rearranged to make transfer of information easier

New columns to add:

Fixative
Solution currently in (blank if none)
Embedding medium (medium)
Stain QC comment (linked to ancestral labware for some labware)
Number of Amplification cycles (visium QC - Amplification operation)

Change column names:

barcode = Released labware barcode
Address = Slot of labware
Sample position = Section position in slot
Tissue type = Tissue type code

Deleted column - Source barcode
Can we get the "Released from box location" column to reflect the slot number not the grid reference, e.g. 1, 2, 3, as indicated in Storelight
Order of file columns:
See spreadsheet

@KatyTudor Currently, the release file content is slightly different if the samples are cDNA: The source barcode and source address are given for the source of the cdna; and the Last section number column is not included. How do you want to handle these differences?

@khelwood oh ok, if the change mess up things for cDNA we can keep the source barcode and source address and I can include them on the visium release columns (I can update the form now)

@KatyTudor Thanks

@KatyTudor The spreadsheet seems to be missing the Xenium start timestamp column.


feat(swc-angular): ✨ upgrade @swc/core to 1.6.13

closes #557

@edbzn looks like that component testa broken somehow

Yeah there's false positive with visual testing, I'm on it.


⚡ : Drush update to 12, 13 or latest

Preliminary Checks

[X] I have checked 'open' AND 'closed' and this is not a duplicate.

Is your enhancement request related to a problem? Please describe.
Drupal 10 require 12 or latest version of drush in init.sh
Describe the solution you'd like
composer require --no-update drush/drush
Describe alternatives you've considered
none
Additional Context
No response

set to version Drush:12 as it is the recommended and supported based on https://www.drush.org/12.x/install/


add missing prefix separator for host tag entity id in readme.md

What does this PR do?

See title
Motivation

See title
Additional Notes

Possible Drawbacks / Trade-offs

None
Describe how to test/QA your changes

No need.

/merge


Small patch to enable maven compilation

When donwloading the example and trying to compile it, there is a maven exception.
Moreover documentation is missing where to edit the configuration to add password for database connection

Thanks a lot!


Register redis adapter into inventory.

This PR attempted to register redis quota adapter into adapter inventory, and I'm working on test thread safety now.  The steps for testing quota method:

change memQuota to redisQuota in globalconfig.yaml.
run mixs with config: ./mixs server
--globalConfigFile testdata/globalconfig.yml
--serviceConfigFile testdata/serviceconfig.yml  --logtostderr
run mixc: ./mixc quota --amount 10 --name RequestCount
@geeknoid Should the name for mixc be the same as listed in globalconfig quotas section? Is there anything I'm missing here?

This change is

Jenkins job mixer/presubmit passed

Jenkins job mixer/presubmit passed

Jenkins job mixer/presubmit passed

Jenkins job istio/mixer-pr-master passed

Jenkins job istio/mixer-pr-master passed

Jenkins job mixer/presubmit passed

Jenkins job istio/mixer-pr-master passed

Jenkins job mixer/presubmit passed

Jenkins job istio/mixer-pr-master passed

Jenkins job mixer/presubmit passed

Jenkins job mixer/e2e-smoketest passed


TypeScript syntax highlithing and twoslash autocompletion does not work in mdx files

Given the mdx vscode extension and the Twoslash VS code extension are both installed, these two files, and a docusaurus 2.0 setup with mdx:

repro.md
```ts twoslash
// ---cut---
const hi = "Hi" as const;
``` <!-- nested codeblock rendering issue workaround-->

repro.mdx
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

<Tabs>
<TabItem value="val" label="Label">

```ts twoslash
// ---cut---
const hi = "Hi" as const;
``` <!-- nested codeblock rendering issue workaround-->

</TabItem>
</Tabs>

I would expect the TypeScript code to be highlighted the same way in both files. Instead, I see this:

Can you also reproduce this behavior, or is it just something with my local setup? 😅 Would you expect the twoslahs plug to work for both MD and MDX files?

I've never worked with mdx, so I didn't add support - you're welcome to add support though!


Preferred Leader leads to node unavailability problem

The initial state of the broker group
n0 is master, preferredLeader
n1 and n2 is slave
The status after the re-election is as follows
n0 and n2 is slave
n1 is master
Problem Description
n0 node cannot synchronize data.

If the cluster restarts, the brokerId is always -1.

Problem Analysis
When the preferredLeader is triggered to re-initiate the election, if the ldeger entry index lags behind the leader node, the vote fails.
As the term increases by 1, the node is always larger than the other node's term and cannot be re-elected as a follower. Therefore, the preferredLeader will always be in the candidate state, resulting in the node being unavailable.
The log of the n0 node is as follows

The log of the n1 node is as follows

Optimization ideas
The first optimization scheme: When the leader receives the heartbeat response, if the response term is greater than the current term, it re-enters the Candidate to initiate the next round of voting.
Shortcomings: May trigger multiple re-elections.

@vongosling Can you help me review this revision?

Optimization ideas
The second optimization scheme:

Mark the unavailable state of the node in the voting phase.
When receiving the heartbeat of the leader node, if the node status is unavailable, try to recover.

@RongtongJin this change may not a good choice, can you help to review it. This problem will cause the unavailable of node of broker group.

I think ,if preferred leader is too much behind。Should be downgraded follower

I think ,if preferred leader is too much behind。Should be downgraded follower

After downgrading to follower, the voting term is still larger than other nodes. Therefore, the term will be rolled back first and then the node will be downgraded to follower.

@RongtongJin Please help to review it, and I am very much looking forward to other better optimization methods that may be communicated together.

Merged


Not synced to git repo when I use new Leetcode version

Describe the bug
I installed the LeetHub chrome extension to sync the resolved leetcode issue to the git repo. It was synced to git from an older version of leetcode. But after convert to new version,

my github repo was not in sync with the leetcode how to solve this problem

Ok, got it.
Thanks for your message


Possible major glitch on the forum page.

On this page: http://foundation.zurb.com/forum/posts/25392-get-space-between-block-grid-elements there is a block of text which is actually an image, but it looks like it gives out the private information of the user, but I'm not sure what it is. Someone needs to check it out quickly.

Thanks Amanda! We'll take a look and close this here!


Standardize Drupal GovCon References

I've noticed that we are using a variety of different ways of spelling/stating the conference name.
Places to fix:

[ ] Facebook name

I thought we were Drupal GovCon, but I'm seeing:
Drupal Gov Con
DrupalGovCon
... and misc other spellings.
The footer is using Drupal GovCon, which is my personal preference.
I'll scan all the online text and make the modifications, but for anyone adding content, please standardize on Drupal GovCon when spelling out the conference name.

I agree. I thought we decided on Drupal GovCon. I've noticed others use some of the various of the other spellings too. https://www.facebook.com/DrupalGovCon for example, although I'm not sure whether you can make your name have a space where displayed. Let's use this task to make a list of places we notice it wrong.

Pretty sure I got all of them.

I see some in the Gdocs scholarship form, which I'm converting into a webform on the website, so I'll fix those when I convert.


Fix Parquet with special characters in field names.

This uses Avro's name sanitization methods to ensure that field names are compatible with Parquet. The names stored in each file don't actually matter because Iceberg uses field IDs.

@rdsr, please have another look. I added tests to iceberg-data and ended up needing to fix a couple of things:

BuildAvroProjection couldn't project fields with special characters in the name because Avro would reject the projection schema. I added a couple calls to makeCompatibleName to fix this. It should be safe because special characters would cause failures in these cases before.
The generic DataReader created iceberg-data records with a schema converted from Avro. When using sanitized names, the records would not use the right field names for getField. The fix was to pass in the original Iceberg schema. To make this easy, I added a new visitor.

I think the second fix also addresses the case introduced by #207 when the Avro names don't match because the shouldn't be projected. Next, we should be able to fix Avro reads by using a similar pattern to iceberg-data, but one that produces Avro generics.

Thanks @rdblue . I'll have a look over the weekend

Merged. Thanks for reviewing, @Parth-Brahmbhatt and @rdsr!


Minor doc fixes

Add syntax highlighting tag to rust snippets and fix relative
markdown URL links.

Whoops, never mind. I see now that those things are there for documentation compilation. Closing.


feat: bump thead kernel to the latest version

failed to compile currently.

Could this build success? Or what will if not use modify kernel and only some extra config?

Could this build success?

No.

Or what will if not use modify kernel and only some extra config?

I haven't played with this board for a long time, you can try to update to the latest commit of revyos/th1520-linux-kernel, and to see if it works.
I know little on how to build a linux kernel,  if you run into issues that is related to the kernel itself, you may want to ask help from the upstream kernel's maintainer.


[Mobile] Tooltip border is out of the screen (the tootlip with chat information on model click in chat header)

Create a chat with some addons (need long addon name) or with system prompt (at least several rows)
On mobile open the chat and click on model icon in chat header
Check the tooltip -> right border is out of the screen -> bug also seems that horizontal scroll appears for the chat, but not for the tooltip (it can be reproduced on physical device)

Expected result: the whole tooltip (with left borders) should be on the screen

Not reproduced after re-design


How will data in WASM Filters work?

Title: How will data work in WASM Filters?
Description:
Is there any idea as to how WASM files will access dynamic data? Like if I build a filter which uses a special route table, or a list of IP addresses or users or something, what will be the best way to get that data into the filter? Obviously network requests are a no go, but will WASM have access to the file system? Or in those scenarios would whatever data the filter needs have to be compiled into the WASM distributable?

@gxb5443 - while not a full answer to your question, take a look at this section of the architecture doc in progress: https://docs.google.com/document/d/1YPbxuEIPwKsW4Ft73diHRBTUNbYIlrQHNnS9dXdn778/edit#heading=h.auav01sm13r2

@nilslice Hey thanks for the info. This seems like it's on the right track of what I'm looking for. Do you have any idea how long that dynamic data, e.g. the "shared queue" discussed in the log consolidator example of that doc would live? And is there any doc or even support for making such a singleton in envoy now?

Shared data lives indefinitely.  The Shared queue lives only as long as it takes to deliver the cross-thread message containing the data to the other VM.  You can make a singleton right now by adding a wasm service configuration to the bootstrap envoy configuration (see api/envoy/extensions/wasm/v3/wasm.proto in the envoy-wasm repo).


Develop

Types of Changes
For more information, see the CONTRIBUTING guide.
Prerequisites
Please make sure you can check the following boxes:

[x] I have read the CONTRIBUTING document
[x] My code follows the code style of this project
[x] All new and existing tests passed

Contribution Type
What types of changes does your code introduce? Put an x in all the boxes that apply:

[ ] Bug fix (non-breaking change which fixes an issue, please reference the issue id)
[x] New feature (non-breaking change which adds functionality, make sure to open an associated issue first)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] I have updated the documentation accordingly
[x] I have added tests to cover my changes

Description
PR to see if build validation works.
Remarks
If all goes well should publish the 0.1.2.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


chore(main): release core-js 1.5.17-experimental

:robot: I have created a release beep boop
1.5.17-experimental (2024-11-13)
🐛 Bug Fixes

update git action to use googleapis/release-please-action (9d9d9e5)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

<EMAIL_ADDRESS>:sunflower:


change Forc.toml to take an array of authors

Currently in the Forc.toml we only specify a single author as opposed to the Cargo.toml that allows for an array of authors.
This PR changes Forc.toml to take an array of authors so it's structured the same as Cargo.toml files.

Currently, CI is failing to build sway-lib-core as the manifest file is still only specifying a single author instead of an array. I've opened a PR up for that here
Once this PR lands I'll need to go through all of the repos to submit PR's for updating the Forc.toml files.

I've opened up a bunch of PR's below so that when this PR lands, the other repo's will be compatible with the change.
sway-lib-core = https://github.com/FuelLabs/sway-lib-core/pull/11
sway-lib-std = https://github.com/FuelLabs/sway-lib-std/pull/56
fuels-rs = https://github.com/FuelLabs/fuels-rs/pull/109
fuels-ts = https://github.com/FuelLabs/fuels-ts/pull/135
swayswap-demo = https://github.com/FuelLabs/swayswap-demo/pull/11

I think the std and core libs go first, then this, then cut a new release, then the downstream?

I think the std and core libs go first, then this, then cut a new release, then the downstream?

Yeah, that plan sounds good. I'll wait until this PR gets approval from @digorithm first before merging the approved PR's in sway-lib-core and sway-lib-std

Suggestion to make our life easier: instead introduce a new field authors and keep the current author field. Then we can cut a release and migrate things over slowly without breaking everything with a circular dependency.

Hi @adlerjohn I've made the author field take Option<String> and authors field take Option<Vec<String>> so we can slowly move away from using author without disrupting other projects. I've also added a deprecation notice on author.
I think this should be good to go now.


feat(RingTheory/Polynomial/HilbertPoly): Polynomial.hilbertPoly_linearMap

The main new declaration created in this pull request is Polynomial.hilbertPoly_linearMap, which is the F-linear map fun (p : F[X]) => Polynomial.hilbertPoly p d.

I have made alterations to some names. For any declaration whose name may cause ambiguity now or in the future, I have applied @YaelDillies's suggestion.


Steering-jerk reward function doesn't work for continuous control

The reason is that self.__steering_angle isn't updated in the continuous control_vehicle() function in vehicle.py, so it is always 0.

 Since I wasn't using that reward function in my personal project i didn't really notice that, thank you so much for noticing. And if you find any more mistakes please let me know, i'll patch it ASAP.


[sram_ctrl,sival] Describe sival-stage tests

This follows on from #19765, and only the last commit is unique to this PR. That has the following commit message:
This doesn't include SRAM_CTRL.REGWEN or SRAM_CTRL.INTEGRITY.

For the REGWEN side, this feature is provided by some templated code,
so I'm not really convinced that it's worth writing an explicit test
for.

For INTEGRITY, I don't think this feature is easily testable in
hardware without a dedicated lab. That will be covered by the
penetration testing phase, so I'm not sure that it makes sense to list
a sival test for it.

I think the "allow/disallow code execution from SRAM" feature is SRAM_CTRL.FETCH_ALLOW and it's already covered by chip_sw_sram_execution. Does that make sense?

Ah yes, you're completely right. It slipped my mind to check the existing tests too which will run in sival.


Nov 9 Release | Stage to main

Nov 9 Release | Stage to main
Test URLs:

Before: https://main--express--adobecom.hlx.page/express/?martech=off
After: https://stage--express--adobecom.hlx.page/express/?martech=off

Codecov Report

Merging #449 (04bdf9f) into main (de0b3f6) will increase coverage by 0.17%.
Report is 1 commits behind head on main.
The diff coverage is 90.16%.

@@            Coverage Diff             @@
##             main     #449      +/-   ##
==========================================
+ Coverage   29.85%   30.02%   +0.17%
==========================================
  Files         124      124
  Lines       23738    23740       +2
==========================================
+ Hits         7088     7129      +41
+ Misses      16650    16611      -39

Files
Coverage Δ

express/blocks/schemas/schemas.js
9.09% <ø> (+0.75%)
:arrow_up:

express/scripts/utils.js
32.95% <100.00%> (ø)

express/blocks/shared/carousel.js
69.39% <90.00%> (+0.25%)
:arrow_up:

... and 2 files with indirect coverage changes
:mega: Codecov offers a browser extension for seamless coverage viewing on GitHub. Try it in Chrome or Firefox today!


VRTK_HeadsetFade not unfading after a fade

NOTE: Any issue that does not follow the below template will be immediately closed and not re-opened until the template structure is adhered to.

Precheck

Do not use the issues tracker for help or support (try VRTK Slack channel, Stack Overflow, etc.)
For proposing a new feature, please check existing open and closed issues before creating a duplicate
For bugs, do a quick search and make sure the bug has not yet been reported
Finally, be excellent to each other, and party on dudes!

Environment

Source of VRTK (Github)
Version of VRTK (yesterday 21August2017 sometime...)
Version of Unity3D (5.6.2p4)
Hardware used (Vive)
SDK used (SteamVR)

Steps to reproduce
Open scene 37, which already has VRTK_HeadsetFade on the playarea.
Add code checking if the player falls off the floor, then fade to black, move player back to their starting position, then unfade. Here's one i prepared earlier:
http://bradensmith.com/vrar/code/CheckIfFalling.cs
I added this script to the floor gameobject
Expected behavior
When player steps off the edge of floor, they will fall. When they go past -100 in Y direction (default setting on script), screen should fade to black of 3 seconds, player will be moved, then should unfade over another 3 seconds.
Current behavior
Screen does fade to black, player is moved, screen is visible immediately. Moving the player via code seems to reset the fade automatically, meaning unfade has nothing to do?

The culprit for this may be the SteamVR_Fade script in the SteamVR plugin.
I'd recommend checking the code here: https://github.com/ValveSoftware/steamvr_unity_plugin/blob/master/Assets/SteamVR/Scripts/SteamVR_Fade.cs

I don't see how moving the player's position has anything to do with the problem. You can double check by not moving the player and see if you get the same unfade result.

correct, removing the player move line still results in screen becoming visible again once fade is done

I can't recreate this issue.
I've tried the following steps in Example scene 011

Open up the VRTK_HeadsetCollisionFade script and add this chunk of code:
void Update()
{
    if (Input.GetKeyUp(KeyCode.A))
    {
        headsetFade.Fade(Color.black, 3);
    }
}

Which will cause the headset to fade when you press the A key on the keyboard.
Then I added a listener to the Fade Complete in the OnEnable method:
headsetFade.HeadsetFadeComplete += HeadsetFade_HeadsetFadeComplete;
Then that method just does this:
private void HeadsetFade_HeadsetFadeComplete(object sender, HeadsetFadeEventArgs e)
{
    headsetFade.Unfade(3);
}

So when the headset fade is complete, it will then start fading back in.

Same problem here... I tried updating vrtk (using the latest files from github). But that didn't change anything. I guess relocating the camera-rig triggers something to undo the fade, but I can't find out what or where.


Fix zlib CVE-2023-45853

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[X] The toolchain has been rebuilt successfully (or no changes were made to it)
[X] The toolchain/worker package manifests are up-to-date
[X] Any updated packages successfully build (or no packages were changed)
[X] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[X] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[X] All package sources are available
[X] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[X] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[X] All source files have up-to-date hashes in the *.signatures.json files
[X] sudo make go-tidy-all and sudo make go-test-coverage pass
[X] Documentation has been updated to match any changes to the build system
[ ] Ready to merge

Summary

What does the PR accomplish, why was it needed?
Fix CVE-2023-45853
Change Log

Add patch to address CVE-2023-45853

Does this affect the toolchain?

NO
Associated issues

#xxxx

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-2023-45853

Test Methodology

Pipeline build id: https://dev.azure.com/mariner-org/mariner/_build/results?buildId=438765&view=results

LGTM. I think the test build failure is a known IMO

Thanks @mfrw , I created a new PR for this change against fasttrack/2.0 branch as CVE-2023-4813 is critical, and close this PR.

Linked to:

https://github.com/madler/zlib/issues/868
https://github.com/microsoft/CBL-Mariner/pull/6566


[WIP] Share Array#{push, unshift} specs for Array#{append, prepend}

It seems similar changes were done in #538 and #539.
Also Array#append/prepend seem to accept multiple arguments now so they are aliases now.

Oops... Sorry I've kept the memory but can't update in long days... 🙇 🙇
I'll follow them, thank you! 🙇

No worry :smiley:

Also Array#append/prepend seem to accept multiple arguments now so they are aliases now.

To clarify, #538 / #539 already take this in account.


chore: update ebix document writer to handle expected document type

Description
References

Codecov Report

Merging #517 (b6769ba) into main (21978a1) will decrease coverage by 7.53%.
Report is 197 commits behind head on main.
The diff coverage is 46.33%.

:exclamation: Current head b6769ba differs from pull request most recent head a36b44a. Consider uploading reports for the commit a36b44a to get more accurate results

@@            Coverage Diff             @@
##             main     #517      +/-   ##
==========================================
- Coverage   83.07%   75.55%   -7.53%
==========================================
  Files         456      388      -68
  Lines       10418     8814    -1604
==========================================
- Hits         8655     6659    -1996
- Misses       1438     1931     +493
+ Partials      325      224     -101

Files
Coverage Δ

...ivedMessages/ArchivedMessageGetDocumentListener.cs
0.00% <ø> (ø)

source/Api/Common/HttpHeadersExtensions.cs
0.00% <ø> (ø)

...iddleware/Authentication/ActorForAuthentication.cs
0.00% <ø> (ø)

...ntication/Bearer/BearerAuthenticationMiddleware.cs
0.00% <ø> (ø)

...MarketActors/MarketActorAuthenticatorMiddleware.cs
0.00% <ø> (ø)

...ation/Middleware/Correlation/CorrelationContext.cs
0.00% <ø> (-66.67%)
:arrow_down:

.../Middleware/Correlation/CorrelationIdMiddleware.cs
0.00% <ø> (ø)

...iguration/Middleware/Correlation/UserProperties.cs
0.00% <ø> (ø)

...figuration/Middleware/FunctionContextExtensions.cs
0.00% <ø> (ø)

...rce/Api/Configuration/ServiceBusMessageMetadata.cs
0.00% <ø> (ø)

... and 89 more

... and 375 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Request: Add topic_id as an optional parameter to telegram_config

What did you do?
Configured Alertmanager to use Telegram notifications, and set the chat_id to be a group.
What did you expect to see?
The ability to set a topic_id to target a particular topic.
What did you see instead? Under which circumstances?
Messages go to first topic, usually General.
Environment

System information:
Linux 6.1.0-17-amd64 x86_64

Alertmanager version:
alertmanager, version 0.26.0 (branch: HEAD, revision: d7b4f0c7322e7151d6e3b1e31cbc15361e295d8d)
build user:       root@df8d7debeef4
build date:       20230824-11:11:58
go version:       go1.20.7
platform:         linux/amd64
tags:             netgo

Prometheus version:
prometheus, version 2.49.1 (branch: HEAD, revision: 43e14844a33b65e2a396e3944272af8b3a494071)
build user:       root@6d5f4c649d25
build date:       20240115-16:58:43
go version:       go1.21.6
platform:         linux/amd64
tags:             netgo,builtinassets,stringlabels

Alertmanager configuration file:

global:
  resolve_timeout: 10m

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 30s
  repeat_interval: 5m
  receiver: 'id-telegram'

receivers:
- name: 'id-telegram'
  telegram_configs:
  - api_url: https://api.telegram.org
    bot_token: $BOT_TOKEN
    chat_id: $CHAT_ID
    send_resolved: true

Prometheus configuration file:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets: ['[host-ip]:[port}']

rule_files:
  - 'alert.yml'

scrape_configs:
  - [various-configurations]

Logs:
n/a

Notes:
My logging stack is working well, but I would very much like to be able to target a particular topic in Telgram.

Hello, I agree that alertmanager need this feature.

There is no topic_id in telegram api. We have to add reply_to_message_id in GET request. When we reply to message "The topic "sometopic" was created" we actually send message into this topic. I guess we should begin with:
	DisableNotifications bool   `yaml:"disable_notifications,omitempty" json:"disable_notifications,omitempty"`
	ParseMode            string `yaml:"parse_mode,omitempty" json:"parse_mode,omitempty"`
	ReplyToMessageID     int64  `yaml:"reply_to_message_id,omitempty" json:"reply_to_message_id,omitempty"`
}

https://github.com/efajunk/alertmanager/compare/main...efajunk-patch-1

Field is called message_thread_id
https://core.telegram.org/bots/api#sendmessage
Also, dup for #3332

Recommendation to implement message_thread_id and update <telegram_config> to include:
# ID of the message thread (topic) of the forum; for groups (optional)
[ message_thread_id [<int>](https://prometheus.io/docs/alerting/latest/configuration/#int) ]

There are two open PRs for this https://github.com/prometheus/alertmanager/pull/3560 and https://github.com/prometheus/alertmanager/pull/3638.

@grobinson-grafana We've had a few different PRs around this, and its very important to support this functionality. Right now we're in a world where everything is routed to the telegram equivalent of a #generat chat on Slack with no ability to change the routing.

I'm working with @th0th on #3638. Please follow that PR for updates.

Hi! 👋 #3638 has been merged! You can close the issue 🙂


Can't find results for CoreLib, Collections, LINQ, ...

Classes in some very important namespaces cannot be found when searching, even though the same searches definitely yielded results before (about two weeks ago).
In the System.Private.CoreLib namespace

Power (Math)
Secure String

In the System.Collections.Generic namespace

Linked List

In the System.Linq namespace

ElementAt
Max
OrderBy

Among others.

This has been fixed recently, can you check again please?

Yep, it's fixed! Thanks!


[UsePythonVersionV0] Migrated to Node10.

Task name: UsePythonVersionV0
Description: Migrated UsePythonVersionV0 to Node 10.
Documentation changes required: No
Added unit tests: No
Attached related issue: #360
Checklist:

[x] Task version was bumped - please check instruction how to do it
[x] Checked that applied changes work as expected

Merge at 182 sprint


What should be response from site if unknown alarm requested

Hello
With 3.1.5, we can request alarms using the request specialization of the alarm messages. How should the site respond if the alarm code id or the component Id is unknown to it?
This behavior is already defined for status messages that they respond with q = unknown or undefined. But how should the same behavior be for alarms?

@otterdahl

Hi,
You’re right. This behaviour is not clearly defined in the spec. Perhaps the alarm message could include a ”quality” field, just like status messages in future versions.
While using version 3.1.5 or 3.2, I think the site should reply with a NotAcknowledged message.

Thank you for the clarification


ODIM is returning data with Content-Type as text/xml for /redfish/v1/$metadata and information under the same.

The Content type should be set as application/xml or application/xml;charset=utf-8 MIME types

Content-type in the response for /redfish/v1/$metadata request is updated to application/xml; charset=utf-8.

Feature request and bugs are created and tracked from https://wiki.odim.io/. Hence closing this issue and https://jira.lfnetworking.org/browse/ODIM-29 is created to track the same.


Instant rendering despite lower interval

Hi
First off thank you very much for the great plugin and the very thorough implementation.
I'd like to use your plugin to show the countdown to a specific date in weeks and days only. Now because of the low level of detail I wanted to set a lower interval but it seems that the clock only get's rendered after the interval has expired a first time. Now I was hoping you could give me a hint as to how I can use your plugin with a lower interval while making sure the clock is rendered instantaneously.
Many kind thanks in advance for your help
Marco

Hello there, to be short the exact line you seek is this one:
https://github.com/hilios/jQuery.countdown/blob/master/src/countdown.js#L13
But the countdown is rendered right away when the script is started:
https://github.com/hilios/jQuery.countdown/blob/master/src/countdown.js#L150
Let me know if this work for you!


"Multiple page customizations have been specified for the same page"

1. Describe the bug
AL language does not allow m eto defined multiple page customizations for the same page
2. To Reproduce

Create pagecustomization1 for Customer Ledger entries page
Create pagecustommization2 for Customer Ledger entries page
Create new profile and assign both newly defined customizations to it

3. Expected behavior
As a deveoper I expect to create small/reusable page customizations objects that could be used with multiple profiles. For e.g. i have one custmoization which adds additional Views for Customer Ledger Entries page. I would like to use this customization with all my profiles. Then, I would define additional page customization objects, which defines column order, per each profile.
4. Actual behavior
System prevents me assigning multiple page customzations for a profile, if those target the same page.
5. Versions:

AL Language: v11.0.787898
Visual Studio Code: 1.7.8
Business Central:  22.0.55180.0

Sceenshots
Customization no1 - adding views

Customization no2 - changing column order

Assigning customizations to the profile

Error

This is currently by design unfortunately. Adding this to BCIdeas would be the best thing. It looks like the small (gut feeling, I could be way off) sort of improvement that we'll pick up from there.
https://aka.ms/BusinessCentralideas


CompareLog.DecodeCompareTextToCompareLog() broken in v8.1.0

Changes in CompareLog.DecodeCompareTextToCompareLog() broke IgnoreTheseErrors() support, the following test runs successfully in v8.0.4, but fails in v8.1.0.
[Fact]
public void DecodeCompareTextToCompareLog_ExtraIndexInDatabase_Test()
{
  var str = "EXTRA IN DATABASE: Index 'tenants', index constraint name. Found = ix_tenants_belongs_to_database_instance_id";
  var compareLog = CompareLog.DecodeCompareTextToCompareLog(str);
  compareLog.Type.ShouldEqual(CompareType.Index);
}

Hi @chrisbbe ,
I did change the code that allows to ignore "EXTRA IN DATABASE" errors, which might have changed the ignore error format. See issue #18 for why I was doing this.
I don't know the DecodeCompareTextToCompareLog(str) method, but I can say that my tests worked OK.

Try adding my test in CompareLogsTests.cs and run it.

Hi @chrisbbe,
I have just released version 8.2.0 which fixes the ignoring ExtraInDatabase errors. The old ignoring code was very complex and very hard to fix so I built a much better approach (see FindErrorsToIgnore).
I am closing the issue, but let me know if you still have problems.


users can't upload pictures

3 hubs stop upload pictures with not reason any ideas?
Thanks
2016-04-20 23:08:54:LOG_INFO:7466ea921ebf08502d31cae017a05207:attach.php:1419:find_folder_hash_by_attach_hash: attach_hash: 8be3cf69d6cedf4aa61d523020fcbf56bdd39357c633918ca1125e8fb99a109e
2016-04-20 23:08:54:LOG_INFO:7466ea921ebf08502d31cae017a05207:photos.php:147:photo_upload: photo_upload: unable to process image
2016-04-20 23:08:54:LOG_INFO:7466ea921ebf08502d31cae017a05207:zot.php:2940:build_sync_packet: build_sync_packet

I cannot reproduce the problem in either

Version 2016-04-21.1373H+540800d, Tag: 1.4.2
Version 2016-04-14.1366H+a29c037, Tag: 1.4

I can upload files in both Files and Photos apps.

Is only show Up with few USERS but that cost me one Admin left Hubzilla and reinstall other software. 29 users already gone :-1:
Anyway the problem is when you go to upload a picture in a post the picture go in a folder name actualmonth/year example 04-2016 or something like that .
Now if the user like to upload the picture look Hubzilla can't find that folder and abort upload . I try in photos Upload and the seam problem with certain users. I try in Upload Photos change the folder name for other folder and NOW YES that use can Upload Pictures in the NEW FOLDER but the problem continue in UPLOAD INSIDE POST.
Like I say is only in certain users have that problem and only few keys HUBS the problem is also in users have CLONES in other HUBS
I can think one is a problem relate to clones or some one got any new idea to hack webdav and delete folders

I can look is also affected my user but yes I can see UPLOAD THE PICTURES but not show the link in the post  2016-04 The POST keep in BLANK like nothing is UPLOAD

I just attempted a photo upload using the post editor "attach" button. The photo uploaded and was successfully displayed when I used the "preview post" feature.
Version 2016-04-21.1373H+540800d, Tag: 1.4.2

OK Now I got a SOLUTION but that NOT SOLVE WHY IS THIS ISSUE AND WHAT TO DO FOR NOT HAPPENS AGAIN. I am really upset with loss one HUB because people no trust the system. Possible can be good make a WIKI of ISSUES and how to SOLVE if any give me acces to the WIKI I will like to start posting issues and solutions
Solution Temporally because we not have idea why is this problem is:
1.- Go to the URL of the HUB/Cloud
2.- Delete The Folder of the actual month/year
3.- Go to Post and Upload a Picture now works
That solution make you will loss all the pictures of the actual Month

You still haven't mentioned the hub version. If this is a production hub where you want to minimize bugs, I recommend you keep it at a tagged release. Currently this is 1.4.
You probably know this already, but for the sake of other readers: Only experimental, development hubs should be running on the dev branch, and anything on master branch past a tagged release should be considered beta and not suited for production hubs.

2016-04-21.1373H - 1165

Possible will be good a option in ADMIN to deactivate webdav , clon or import profiles. I believe the admin need to have the freedom how to secure or deactivate services can compromise the HUB

Possible will be good a option in ADMIN to deactivate webdav , clon or import profiles. I believe the admin need to have the freedom how to secure or deactivate services can compromise the HUB

We're working on that. By "we" I mean I'm working on that, along with a thousand other things. You can always rename a module file to prevent that module from running. By version 2.0 I'm hoping to have a site features list to let you pick what features you want to enable on the hub.
What I've tried here is to go to Settings and change my default folder to one that doesn't exist, and then upload a photo into a post. That worked just fine for me. The new folder was created and the photo was uploaded into it. So we don't have the important information to re-create this bug.

anything on master branch past a tagged release should be considered beta and not suited for production hubs

I disagree with this. Anything past a tagged release includes bug fixes which have been specifically applied to master (but not including any dev code which is being developed and tested for the next release). The current master should now be the most stable and up-to-date code for production.

Then what is the point in tagging releases?

Then what is the point in tagging releases?

That is a complex issue which belongs in another topic.
Anyway for completeness I also uploaded a photo into a post into an existing folder. This also went without incident and the photo was uploaded as it should have been. I then tried again with a new folder that didn't exist and it also worked. So it appears the issue may be dependent on some configuration that is unique to the server/hub.
If one (e.g. a server administrator in this case) is able to re-create an issue reliably, one (e.g. a server administrator) should be able to debug it and find out why - and fix it and share the fix so that it doesn't occur in the future and the community benefits from the improvements. This is in fact the basis of open source software.

I not have idea why become that bug and I look all the logs when produce but the problem possible is long time ago before. About the releases  I upgrade the hub looking for a solution but upgrade release not make changes. And overwrite hubzilla with a new git pull also to make changes.
What users and hubs have the issue: Is only reproduce in certain users of a HUBS (ADMINS) in the rest of users work fine  for what I believe is not a miss configuration of the HUB. My idea is some one got a system to hack webdav and target the admins accounts and damage the folder links.

this is a huge problem for me, I can't upload any pics, hubzilla is up to date.  How can I fix it?

Do the photos get uploaded to your Files area? If not, check that the 'store' directory is writeable by the webserver. We have an addon called 'upload_limits' which you can install and if you visit /upload_limits on your site it will report if you are encountering configuration memory limits.
If the photos are uploaded to the file area but don't make it to the photo albums, it is likely a limit of the total memory available to PHP on the system.
Otherwise there aren't any current issues with photos that I'm aware of.

The problem in someone can be upload limit other issue can be round user permission
chown -R www-data:www-data /var/www/yourhubzilla
No work that?
Ok go to photos and delete the actual folder with the date that solve the problem for me
After go and make one post and upload a picture in the post that will recreate the folder and upload the picture

Woohoo, you both gave me great clues and now she works like magic!  I did
ps -ef | grep httpd | grep -v grep

Which showed me that apache is calling with daemon, not www-data as I assumed as well.  I changed ownership and now it works like a charm.  Hope this helps someone.  Amazing software guys, thanks!


New hex_decode and hex_encode command #165

Codecov Report

Merging #166 (079c34b) into master (88569da) will increase coverage by 0.25%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #166      +/-   ##
==========================================
+ Coverage   94.55%   94.81%   +0.25%
==========================================
  Files         421      421
  Lines       15275    15275
==========================================
+ Hits        14444    14483      +39
+ Misses        831      792      -39

Impacted Files
Coverage Δ

...t_sdk/src/sdk/std/env/set_current_directory/mod.rs
97.14% <0.00%> (+37.14%)
:arrow_up:

.../src/sdk/std/env/set_current_directory/mod_test.rs
100.00% <0.00%> (+89.65%)
:arrow_up:

Continue to review full report at Codecov.

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

This is super great.

can you add those to: https://github.com/sagiegurari/duckscript/blob/master/duckscript_sdk/src/sdk/std/math/mod.rs so they will be available?
can you also write tests in duckscript to test your new functions and put them in:
https://github.com/sagiegurari/duckscript/tree/master/test/std/math

Ok, I will modify it now

Should I add a format parameters for converting decimal to hexadecimal?

anything that you think is useful

I have  no good ideas for parameters 😢

not a must. can always add later if needed.

@umaYnit i would really love to push this one, when can you also add it to the mod.rs and write few duckscript tests?

Glad you like it. I did it in the second push. Is there Something else I need to do?

oops. missed it. will merge it soon. great work

merging it. thanks a lot @umaYnit
i'll be releasing it soon so you will have it available in cargo-make


Order of Template fields doesn't match display order

I just noticed that the order of the fields in Template doesn't match the order they are shown in:
Template:
  authors: ["John Smith<EMAIL_ADDRESS>and contributors"]
  dir: "~/.julia/dev"
  host: "github.com"
  julia: v"1.0.0"
  user: "johnsmith"
  plugins:
    ...

Where the user and plugins fields are swapped. I'm guessing that this is to show plugins at the end (given its non-constant length), but it tripped me up when I tried to use the constructor and assumed the order of display matched the arg order in the constructor.
Should the field order be updated to match the display order?

Thanks for the issue! I think the only constructor that's documented and considered public API is the all keywords constructor (where order doesn't matter) e.g.
tpl = Template(; user="halleysfifthinc", host="gitlab.com", juia=v"1.5")

or to construct a Template interactively with tpl = Template(interactive=true) (or a mix of these, e.g. tpl = Template(; interactive=true, user="halleysfifthinc")
I lean towards thinking that how things a Template is pretty-printed and it is constructed should be kept separate, so as to give us freedom about how to make Templates display nicely in the repl, without having the change the type itself. As you say, the plugins being displayed last makes everything a bit easier to see.
That said, in this case, to match the current printing it'd just be a matter of changing one line (and updating any internal code that uses the position-args constructor)
--- a/src/template.jl
+++ b/src/template.jl
@@ -74,8 +74,8 @@ struct Template
     dir::String
     host::String
     julia::VersionNumber
-    plugins::Vector{<:Plugin}
     user::String
+    plugins::Vector{<:Plugin}
 end

Still, i think we'd rather just keep recommending the keyword-only constructors.
Do you have a use-case for the non-keyword constructor (where order does matter)? Or how did you come across it?

That's fair. You are right that it would be a simple change, albeit a breaking one.
I stumbled on this after I created a Template and then needed to change the dir, but couldn't since Template is immutable. I ended up running Template(;dir="/new/dir", tpl.authors, tpl.host, tpl.julia, tpl.user, tpl.plugins). An easier solution to the problem I had would be to add a Template constructor that takes an existing template as a basis and uses any other specified keywords to override what is present in the given template. However, I don't know if my situation is common enough that such a constructor would be worth adding.


Discover PS5 device over the specified interface

Describe Your Problem:

Similar with Homebridge issue #1957, I have this setup with TWO network interface. eth0 for WAN, IP <IP_ADDRESS> and eth1 for LAN, IP <IP_ADDRESS>.
By default, Homebridge itself is working over the WAN interface which is usually NOT what we want so it provides a parameter mDNS (or the latest bind option) to speficy the interface that you want it to work on.
Unfortunately this plugin seems to have a similar issue that the discovery process (originally playactor browse) is working over the WAN interface and it does NOT work even I bind the Homebridge interface to the correct one (LAN in my case).
Plugin Config:
{
    "bridge": {
        "name": "Homebridge",
        "username": "xx:xx:xx:xxx:xx:xx",
        "port": xxxxx,
        "pin": "xxx-xx-xxx",
        "advertiser": "avahi",
        "bind": [
            "br-lan"
        ]
    },
    "platforms": [
        {
            "pollInterval": 5000,
            "platform": "playstation"
        }
    ]

I wonder if it's possible providing such an option like what Homebridge does

Very interesting issue, but as PlayActor doesn't provide anything like that I think you should file an issue to them first.


[Bug report] Access denied doesn't log me out

Access denied doesn't log me out.
It shows loading icon forever.

Noted


[Serialization] Stop serializing Substitution and SubstitutionList

Start storing SubstitutionMap instances within the SIL *apply instructions, (de-)serializing them via SubstitutionMap rather than lists Substitutions. With the last client of Substitution (de-)serialization gone, remove that code.
While here, fix two canonicalization problems with SubstitutionMap that resulted in source-compatibility suite regressions: rdar://problem/39949332.

@swift-ci please smoke test

@swift-ci please smoke test and merge

@swift-ci please smoke test and merge


Cisco Umbrella Admin Audit Logs

I would like to request that the Cisco Umbrella Connector also pull in the Admin Audit Logs (https://docs.umbrella.com/umbrella-user-guide/docs/log-format-and-versioning#audit)
The path according to the document is: auditlogs/--/----.csv.gz
We would like to have a consolidated place for all of our audit logs, including those from 3rd parties. It would also allow us to build centralized alerting policies in Sentinel and Log Analytics to trigger when certain events occur in that solution.

Thanks for flagging this, we will provide you an update on this.

We are reaching out to the concerned team for this enhancement, and we provide an update soon on it.

Hi @wtcdwclark, Sorry for delay in response, we will get back to you on 22 Sep 2023

Hi @wtcdwclark, we have informed the respective team about this request and we have created the backlog item, and we will work on it based on our priority. Right now, there is no ETA associated with it.
Please feel free to re open this issue in case you have further questions

@v-rbajaj Wondering if there's any update on it? Thank you.


Error of "memoryMB" reported when running pytorch experiment in kubeflow mode

Short summary about the issue/question:
The kubeflow version I use is 0.6. When the version number of pytorch-operator is specified as "v1beta1" or "v1alpha2" in the configuration file, the following errors are reported.
# NNI WebUI
Job management error: Cannot read property 'memoryMB' of undefined

# NNI log
[4/14/2020, 5:00:04 PM] ERROR [ 'TypeError: Cannot read property \'memoryMB\' of undefined\n    at KubeflowTrainingService.prepareKubeflowConfig (/soft/anaconda3/envs/automl/nni/training_service/kubernetes/kubeflow/kubeflowTrainingService.js:225:94)\n    at KubeflowTrainingService.submitTrialJob (/soft/anaconda3/envs/automl/nni/training_service/kubernetes/kubeflow/kubeflowTrainingService.js:73:46)\n    at process._tickCallback (internal/process/next_tick.js:68:7)' ]

However, when using the v1 version of pytorch-operator, the NNI experiment cannot start, as follows:
(automl) [root@jaserver2 mnist-pytorch]# nnictl create --config config_kubeflow.yml --port 46001
INFO: expand searchSpacePath: search_space.json to /home/.../trials/mnist-pytorch/search_space.json
INFO: expand codeDir: . to /home/.../trials/mnist-pytorch/.
INFO: Starting restful server...
INFO: Successfully started Restful server!
INFO: Setting kubeflow config...
ERROR: Failed! Error is: {"error":"Invalid pytorch-operator apiVersion v1"}

What is the required Kubeflow version if I run the PyTorch experiment in NNI Kubeflow mode? Thanks~
Brief what process you are following:
Above.

How to reproduce it:

nni Environment:

nni version: 1.3
nni mode(local|pai|remote): Kubeflow
OS: CentOS7.5
python version: 3.6.7
is conda or virtualenv used?: conda
is running in docker?: docker

need to update document(yes/no): yes
Anything else we need to know: yes

Hi @qtz93. According to Job management error: Cannot read property 'memoryMB' of undefined, did you set memoryMB in your config file?
NNI has support pytorch-v1-operator in v1.5, you could upgrade NNI to latest version and try using it.

@SparkSnail Yes, I set the value of memoryMB to 4096. Thank you for your advice, I'll try version 1.5.

@SparkSnail Hello, I modified the nni version in the container to 1.5, set the pytorch-operator version to v1 in the yml configuration file, and re-executed the pytorch experiment. The following error still occurred:
(automl) [root@jaserver2 mnist-pytorch]# nnictl create --config config_kubeflow.yml --port 46001
INFO: expand searchSpacePath: search_space.json to /home/.../trials/mnist-pytorch/search_space.json
INFO: expand codeDir: . to /home/.../trials/mnist-pytorch/.
INFO: Starting restful server...
INFO: Successfully started Restful server!
INFO: Setting kubeflow config...
ERROR: Failed! Error is: {"error":"Invalid pytorch-operator apiVersion v1"}

Do I need to install version 0.7 of Kubeflow to run the PyTorch experiment? The Kubeflow version I currently use is 0.6.

@qtz93, this error message {"error":"Invalid pytorch-operator apiVersion v1"} is thrown from NNI, did you upgrade your NNI version to v1.5 in local machine(the machine you run nnictl command)?

@SparkSnail, Well, I just updated nni from 1.3 to 1.5 on the local machine, and found the command "nnictl create --config ..." can be executed successfully, but the initial error appeared again on the NNI interface:
# NNI WebUI
Job management error: Cannot read property 'memoryMB' of undefined

The file config_kubeflow.yml looks like this:
authorName: default
experimentName: example_dist_pytorch
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#choice: local, remote, pai, kubeflow
trainingServicePlatform: kubeflow
searchSpacePath: search_space.json
#choice: true, false
useAnnotation: false
nniManagerIp: "172.16.xx.xx"
tuner:
  #choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner, GPTuner
  builtinTunerName: TPE
  classArgs:
    #choice: maximize, minimize
    optimize_mode: maximize
trial:
  codeDir: .
  worker:
    replicas: 1
    command: python3 mnist.py
    gpuNum: 0
    cpuNum: 1
    memoryMB: 4096
    image: 172.16.xxx.xxx:5000/qiutzh/miniconda_py36_nni_v15:cpu
kubeflowConfig:
  operator: pytorch-operator
  apiVersion: v1
  storage: nfs
  nfs:
    server: 172.16.xx.xx
    path: /opt/data2/nfs_nni_share

--__--. The error seems to have nothing to do with the version of nni? Why?

@SparkSnail, Well, I just updated nni from 1.3 to 1.5 on the local machine, and found the command "nnictl create --config ..." can be executed successfully, but the initial error appeared again on the NNI interface:
# NNI WebUI
Job management error: Cannot read property 'memoryMB' of undefined

The file config_kubeflow.yml looks like this:
authorName: default
experimentName: example_dist_pytorch
trialConcurrency: 3
maxExecDuration: 1h
maxTrialNum: 10
#choice: local, remote, pai, kubeflow
trainingServicePlatform: kubeflow
searchSpacePath: search_space.json
#choice: true, false
useAnnotation: false
nniManagerIp: "172.16.xx.xx"
tuner:
  #choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner, GPTuner
  builtinTunerName: TPE
  classArgs:
    #choice: maximize, minimize
    optimize_mode: maximize
trial:
  codeDir: .
  worker:
    replicas: 1
    command: python3 mnist.py
    gpuNum: 0
    cpuNum: 1
    memoryMB: 4096
    image: 172.16.xxx.xxx:5000/qiutzh/miniconda_py36_nni_v15:cpu
kubeflowConfig:
  operator: pytorch-operator
  apiVersion: v1
  storage: nfs
  nfs:
    server: 172.16.xx.xx
    path: /opt/data2/nfs_nni_share

I built a private warehouse, and running the TensorFlow example in Kubeflow mode based on the private warehouse is no problem.
--__--. The error seems to have nothing to do with the version of nni? Why?

Hi @qtz93, while tf-operator has two role: ps and worker, pytorch-operator also has two role: master and worker. In pytorch mode, the master is required field, and the worker is optional. I noticed that you only set worker in your config file, if your job is not distributed job, you can use master instead of worker. There is a example in NNI:
https://github.com/microsoft/nni/blob/master/examples/trials/mnist-distributed-pytorch/config_kubeflow.yml.
However, seems that NNI does not provide valid error message for users, your issue has given NNI a good feedback to improve.

@SparkSnail Um, thanks for reminding me, I tried the following:
First, I switched back to the 1.3 version of NNI and ran the mnist-distributed-pytorch example, and found that the v1beta1 and v1alpha2 versions of pytorch-operator had the following errors:
## NNI WebUI
# Job management error: 404 page not found

## NNI log
# [4/16/2020, 9:23:07 AM] INFO [ 'submitTrialJob: form: {"sequenceId":0,"hyperParameters":{"value":"{\\"parameter_id\\": 0, \\"parameter_source\\": \\"algorithm\\", \\"parameters\\": {\\"learning_rate\\": 0.0001, \\"momentum\\": 0.4}, \\"parameter_index\\": 0}","index":0}}' ]
# [4/16/2020, 9:23:07 AM] ERROR [ 'Error: 404 page not found\n\n    at _request (/soft/anaconda3/envs/automl/nni/node_modules/kubernetes-client/lib/backends/request.js:189:25)\n    at Request.request [as _callback] (/soft/anaconda3/envs/automl/nni/node_modules/kubernetes-client/lib/backends/request.js:148:14)\n    at Request.self.callback (/soft/anaconda3/envs/automl/nni/node_modules/request/request.js:185:22)\n    at Request.emit (events.js:182:13)\n    at Request.<anonymous> (/soft/anaconda3/envs/automl/nni/node_modules/request/request.js:1161:10)\n    at Request.emit (events.js:182:13)\n    at IncomingMessage.<anonymous> (/soft/anaconda3/envs/automl/nni/node_modules/request/request.js:1083:12)\n    at Object.onceWrapper (events.js:273:13)\n    at IncomingMessage.emit (events.js:187:15)\n    at endReadableNT (_stream_readable.js:1094:12)' ]

Then, I switched to the 1.5 version of NNI, and used the v1 version of pytorch-operator, and found that mnist-distributed-pytorch can be successfully started.
NNI logs are as follows:
[4/16/2020, 9:37:16 AM] INFO [ 'Datastore initialization done' ]
[4/16/2020, 9:37:16 AM] INFO [ 'RestServer start' ]
[4/16/2020, 9:37:16 AM] INFO [ 'Construct Kubeflow training service.' ]
[4/16/2020, 9:37:16 AM] INFO [ 'RestServer base port is 46001' ]
[4/16/2020, 9:37:16 AM] INFO [ 'Rest server listening on: http://<IP_ADDRESS>:46001' ]
[4/16/2020, 9:37:18 AM] INFO [ 'NNIManager setClusterMetadata, key: kubeflow_config, value: {"operator":"pytorch-operator","apiVersion":"v1","nfs":{"server":"172.16.xx.xx","path":"/opt/data2/nfs_nni_share"}}' ]
[4/16/2020, 9:37:18 AM] INFO [ 'NNIManager setClusterMetadata, key: nni_manager_ip, value: {"nniManagerIp":"172.16.xx.xx"}' ]
[4/16/2020, 9:37:18 AM] INFO [ 'NNIManager setClusterMetadata, key: trial_config, value: {"codeDir":"/home/.../trials/mnist-distributed-pytorch/.","master":{"replicas":1,"command":"python3 dist_mnist.py","gpuNum":0,"cpuNum":1,"memoryMB":2048,"image":"172.16.xxx.xxx:5000/qiutzh/miniconda_py36_nni_v15:cpu"},"worker":{"replicas":1,"command":"python3 dist_mnist.py","gpuNum":0,"cpuNum":1,"memoryMB":2048,"image":"172.16.xxx.xxx:5000/qiutzh/miniconda_py36_nni_v15:cpu"}}' ]
[4/16/2020, 9:37:18 AM] INFO [ 'Starting experiment: lUdxddQm' ]
[4/16/2020, 9:37:18 AM] INFO [ 'Change NNIManager status from: INITIALIZED to: RUNNING' ]
[4/16/2020, 9:37:18 AM] INFO [ 'Add event listeners' ]
[4/16/2020, 9:37:18 AM] INFO [ 'Run Kubeflow training service.' ]
[4/16/2020, 9:37:18 AM] INFO [ 'RestServer start' ]
[4/16/2020, 9:37:18 AM] INFO [ 'RestServer base port is 46002' ]
[4/16/2020, 9:37:18 AM] INFO [ 'Kubeflow Training service rest server listening on: http://<IP_ADDRESS>:46002' ]
[4/16/2020, 9:37:19 AM] INFO [ 'NNIManager received command from dispatcher: ID, ' ]
[4/16/2020, 9:37:19 AM] INFO [ 'NNIManager received command from dispatcher: TR, {"parameter_id": 0, "parameter_source": "algorithm", "parameters": {"learning_rate": 0.01, "momentum": 0.4}, "parameter_index": 0}' ]
[4/16/2020, 9:37:19 AM] INFO [ 'NNIManager received command from dispatcher: TR, {"parameter_id": 1, "parameter_source": "algorithm", "parameters": {"learning_rate": 0.001, "momentum": 0.6}, "parameter_index": 0}' ]
[4/16/2020, 9:37:19 AM] INFO [ 'NNIManager received command from dispatcher: TR, {"parameter_id": 2, "parameter_source": "algorithm", "parameters": {"learning_rate": 0.01, "momentum": 0.6}, "parameter_index": 0}' ]
[4/16/2020, 9:37:23 AM] INFO [ 'submitTrialJob: form: {"sequenceId":0,"hyperParameters":{"value":"{\\"parameter_id\\": 0, \\"parameter_source\\": \\"algorithm\\", \\"parameters\\": {\\"learning_rate\\": 0.01, \\"momentum\\": 0.4}, \\"parameter_index\\": 0}","index":0}}' ]
[4/16/2020, 9:37:23 AM] INFO [ 'submitTrialJob: form: {"sequenceId":1,"hyperParameters":{"value":"{\\"parameter_id\\": 1, \\"parameter_source\\": \\"algorithm\\", \\"parameters\\": {\\"learning_rate\\": 0.001, \\"momentum\\": 0.6}, \\"parameter_index\\": 0}","index":0}}' ]
[4/16/2020, 9:37:23 AM] INFO [ 'submitTrialJob: form: {"sequenceId":2,"hyperParameters":{"value":"{\\"parameter_id\\": 2, \\"parameter_source\\": \\"algorithm\\", \\"parameters\\": {\\"learning_rate\\": 0.01, \\"momentum\\": 0.6}, \\"parameter_index\\": 0}","index":0}}' ]
[4/16/2020, 9:38:30 AM] INFO [ 'POST: /version/lUdxddQm/vJB0k: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:30 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:30 AM] INFO [ 'POST: /stdout/lUdxddQm/vJB0k: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:30.301831] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:31 AM] INFO [ 'POST: /version/lUdxddQm/f4Yyp: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:31 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:31 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:31.144321] INFO Trial keeper spawns a subprocess (pid 22) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:32 AM] INFO [ 'POST: /version/lUdxddQm/GQX6c: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:32 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:32 AM] INFO [ 'POST: /version/lUdxddQm/vJB0k: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:32 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:32 AM] INFO [ 'POST: /stdout/lUdxddQm/GQX6c: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:32.208243] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:32 AM] INFO [ 'POST: /stdout/lUdxddQm/vJB0k: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:32.209398] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:33 AM] INFO [ 'POST: /version/lUdxddQm/GQX6c: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:33 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:33 AM] INFO [ 'POST: /version/lUdxddQm/f4Yyp: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:33 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 9:38:33 AM] INFO [ 'Trial job vJB0k status changed from WAITING to RUNNING' ]
[4/16/2020, 9:38:34 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:34.427031] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:34 AM] INFO [ 'POST: /stdout/lUdxddQm/GQX6c: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:34.427919] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 9:38:38 AM] INFO [ 'Trial job f4Yyp status changed from WAITING to RUNNING' ]
[4/16/2020, 9:38:38 AM] INFO [ 'Trial job GQX6c status changed from WAITING to RUNNING' ]
[4/16/2020, 9:38:40 AM] INFO [ 'POST: /stdout/lUdxddQm/vJB0k: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:40.340117] INFO subprocess terminated. Exit code is 1. Quit"\n}' ]
[4/16/2020, 9:38:40 AM] INFO [ 'POST: /stdout/lUdxddQm/vJB0k: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:40.348889] INFO NNI trial keeper exit with code 1"\n}' ]
[4/16/2020, 9:38:41 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:41.161167] INFO subprocess terminated. Exit code is 1. Quit"\n}' ]
[4/16/2020, 9:38:41 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 01:38:41.169290] INFO NNI trial keeper exit with code 1"\n}' ]
[4/16/2020, 9:38:41 AM] INFO [ 'POST: /version/lUdxddQm/vJB0k: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 9:38:41 AM] INFO [ 'Version check in trialKeeper success!' ]
...
[4/16/2020, 10:06:38 AM] INFO [ 'POST: /stdout/lUdxddQm/GQX6c: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:38.673059] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 10:06:41 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:41.631900] INFO subprocess terminated. Exit code is 1. Quit"\n}' ]
[4/16/2020, 10:06:41 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:41.639608] INFO NNI trial keeper exit with code 1"\n}' ]
[4/16/2020, 10:06:48 AM] INFO [ 'POST: /stdout/lUdxddQm/GQX6c: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:48.687266] INFO subprocess terminated. Exit code is 1. Quit"\n}' ]
[4/16/2020, 10:06:48 AM] INFO [ 'POST: /stdout/lUdxddQm/GQX6c: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:48.696129] INFO NNI trial keeper exit with code 1"\n}' ]
[4/16/2020, 10:06:57 AM] INFO [ 'POST: /version/lUdxddQm/f4Yyp: body:\n{\n    "tag": "VCSuccess"\n}' ]
[4/16/2020, 10:06:57 AM] INFO [ 'Version check in trialKeeper success!' ]
[4/16/2020, 10:06:57 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:06:57.620575] INFO Trial keeper spawns a subprocess (pid 23) to run command: [\'python3\', \'dist_mnist.py\']"\n}' ]
[4/16/2020, 10:07:07 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:07:07.635872] INFO subprocess terminated. Exit code is 1. Quit"\n}' ]
[4/16/2020, 10:07:07 AM] INFO [ 'POST: /stdout/lUdxddQm/f4Yyp: body:\n{\n    "tag": "trial_keeper",\n    "stdOutputType": "Stdout",\n    "msg": "[2020-04-16 02:07:07.645605] INFO NNI trial keeper exit with code 1"\n}' ]

The following errors have occurred in the master and worker in the NFS log:
# /root/nni/experiments/lUdxddQm/trials-nfs-tmp/nni/lUdxddQm/vJB0k/output/master_output/trialkeeper_stdout:
# /root/nni/experiments/lUdxddQm/trials-nfs-tmp/nni/lUdxddQm/vJB0k/output/worker_output/trialkeeper_stdout:
[2020-04-16 02:06:10.748683] INFO trial_keeper_version is 1.5
[2020-04-16 02:06:10.748783] INFO nni_manager_version is 1.5
[2020-04-16 02:06:10.748803] INFO Version match!
[2020-04-16 02:06:10.763942] INFO Trial keeper spawns a subprocess (pid 23) to run command: ['python3', 'dist_mnist.py']
Traceback (most recent call last):
  File "dist_mnist.py", line 32, in <module>
    from torchvision import datasets, transforms
  File "/opt/conda/lib/python3.6/site-packages/torchvision/__init__.py", line 1, in <module>
    from torchvision import models
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/__init__.py", line 12, in <module>
    from . import detection
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/detection/__init__.py", line 1, in <module>
    from .faster_rcnn import *
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/detection/faster_rcnn.py", line 13, in <module>
    from .rpn import AnchorGenerator, RPNHead, RegionProposalNetwork
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/detection/rpn.py", line 8, in <module>
    from . import _utils as det_utils
  File "/opt/conda/lib/python3.6/site-packages/torchvision/models/detection/_utils.py", line 74, in <module>
    @torch.jit.script
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/__init__.py", line 364, in script
    graph = _script_graph(fn, _frames_up=_frames_up + 1)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/__init__.py", line 359, in _script_graph
    ast = get_jit_ast(fn)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 132, in get_jit_ast
    return build_def(SourceRangeFactory(source), py_ast.body[0])
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 151, in build_def
    build_stmts(ctx, body))
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 123, in build_stmts
    stmts = [build_stmt(ctx, s) for s in stmts]
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 123, in <listcomp>
    stmts = [build_stmt(ctx, s) for s in stmts]
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 140, in __call__
    return method(ctx, node)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 205, in build_Assign
    rhs = build_expr(ctx, stmt.value)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 140, in __call__
    return method(ctx, node)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 314, in build_Call
    func = build_expr(ctx, expr.func)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 140, in __call__
    return method(ctx, node)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 300, in build_Attribute
    value = build_expr(ctx, expr.value)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 140, in __call__
    return method(ctx, node)
  File "/opt/conda/lib/python3.6/site-packages/torch/jit/frontend.py", line 422, in build_Subscript
    raise NotSupportedError(base.range(), "slicing multiple dimensions at the same time isn't supported yet")
torch.jit.frontend.NotSupportedError: slicing multiple dimensions at the same time isn't supported yet
        proposals (Tensor): boxes to be encoded
    """

    # perform some unpacking to make it JIT-fusion friendly
    wx = weights[0]
    wy = weights[1]
    ww = weights[2]
    wh = weights[3]

    proposals_x1 = proposals[:, 0].unsqueeze(1)
                   ~~~~~~~~~ <--- HERE
    proposals_y1 = proposals[:, 1].unsqueeze(1)
    proposals_x2 = proposals[:, 2].unsqueeze(1)
    proposals_y2 = proposals[:, 3].unsqueeze(1)

    reference_boxes_x1 = reference_boxes[:, 0].unsqueeze(1)
    reference_boxes_y1 = reference_boxes[:, 1].unsqueeze(1)
    reference_boxes_x2 = reference_boxes[:, 2].unsqueeze(1)
    reference_boxes_y2 = reference_boxes[:, 3].unsqueeze(1)

[2020-04-16 02:06:20.778804] INFO subprocess terminated. Exit code is 1. Quit
[2020-04-16 02:06:20.786729] INFO NNI trial keeper exit with code 1

There seems to be a problem with the pytorch version. At present, I am using the CPU version of PyTorch (0.4). Which version of PyTorch should I use? Very thanks~

@SparkSnail The problem may be that the versions of torchvision and torch are not compatible. I plan to try to reduce the torchvision version.

Hi @qtz93, I noticed that NNI's docker image use torch==1.2.0 and torchvision==0.5.0, you may try it.

@SparkSnail Thank you. I used version 0.2.0 of torchvision, and now the experiment is running normally. By the way, is the current v1 version of pytorch-operator only applicable to NNI1.5?

@qtz93 Yes, NNI versions before 1.5 does not support pytorch-operator v1, this feature is recently released in v1.5(latest version).

@qtz93 I’m closing this issue as it has no updates from customer for 3 months, please feel free to reopen if you are still seeing it an active issue.


Exception when extracting Twilight Menu

Error when extracting Nand dump with TwiLight Menu at the SD card directly using Python / Linux.
Extracting /shared1/TWLCFG0.dat to /media/duhow/DATOS/shared1/TWLCFG0.dat
Extracting /shared1/TWLCFG1.dat to /media/duhow/DATOS/shared1/TWLCFG1.dat
Extracting /shared2/launcher/wrap.bin to /media/duhow/DATOS/shared2/launcher/wrap.bin
Extracting /shared2/0000 to /media/duhow/DATOS/shared2/0000
Exception in thread Thread-12:
Traceback (most recent call last):
  File "/usr/lib/python3.7/distutils/file_util.py", line 41, in _copy_file_contents
    fdst = open(dst, 'wb')
OSError: [Errno 22] Invalid argument: '/media/duhow/DATOS/_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers\udca0bak.bmp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "HiyaCFW_Helper.py", line 733, in install_twilight
    copy_tree('_nds', path.join(self.sd_path, '_nds'))
  File "/usr/lib/python3.7/distutils/dir_util.py", line 172, in copy_tree
    verbose=verbose, dry_run=dry_run))
  File "/usr/lib/python3.7/distutils/dir_util.py", line 172, in copy_tree
    verbose=verbose, dry_run=dry_run))
  File "/usr/lib/python3.7/distutils/dir_util.py", line 172, in copy_tree
    verbose=verbose, dry_run=dry_run))
  [Previous line repeated 2 more times]
  File "/usr/lib/python3.7/distutils/dir_util.py", line 176, in copy_tree
    dry_run=dry_run)
  File "/usr/lib/python3.7/distutils/file_util.py", line 151, in copy_file
    _copy_file_contents(src, dst)
  File "/usr/lib/python3.7/distutils/file_util.py", line 44, in _copy_file_contents
    "could not create '%s': %s" % (dst, e.strerror))
distutils.errors.DistutilsFileError: could not create '/media/duhow/DATOS/_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers\udca0bak.bmp': Invalid argument

I guess i'm having the same issue
    dry_run=dry_run)
  File "/usr/lib/python3.7/distutils/file_util.py", line 151, in copy_file
    _copy_file_contents(src, dst)
  File "/usr/lib/python3.7/distutils/file_util.py", line 44, in _copy_file_contents
    "could not create '%s': %s" % (dst, e.strerror))
distutils.errors.DistutilsFileError: could not create '/media/kion/9016-4EF8/_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers\udca0bak.bmp': Invalid argument

Which Linux distro do you have?

I should have probably included that in the previous post. I'm running debian 10, with python 3 version 3.7.3. The GUI is able to run through most of the install. It looks like if you have the "Install Latest Twilight Menu++ on custom firmware" box checked, the install_twilight function gets executed, and something inside the copy_tree call has a bad path.
could not create '/media/kion/9016-4EF8/_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers**\u**dca0bak.bmp': Invalid argument

I have the same issue here, running Arch Linux. Looks like there's a weird unicode character in one of the .bmp files. Fixed it by adding the following line to the install_twilight function, right before the copy_tree commands:
        rename('_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers\udca0bak.bmp',                   '_nds/TWiLightMenu/akmenu/themes/Ds Menu/calendar/clock_numbers bak.bmp')

That change might break the acekard theme.

Same issue here... Ubuntu 18.04. Before I found this, I posted my troubles on GBATemp here - https://gbatemp.net/threads/release-multi-platform-gui-hiyacfw-helper.518306/page-7#post-8677634

Hi, any news on this? Does it actually break the acekard theme, as suggested?

The workaround didn't work for me, apparently there isn't a file with that name in the origin (weird!). I worked it around by removing the calendar directory altogether and copying it manually later.

Acekard theme seems to have been fixed for a while now, closing ticket


Update README URLs based on HTTP redirects

Created with https://github.com/dkhamsing/frankenstein
Main Corrected URLs

Was
Now

http://kandan.io/
http://getkandan.com/

https://github.com/ai/autoprefixer
https://github.com/postcss/autoprefixer

HTTPS Other Corrected URLs

Was
Now

http://travis-ci.org/twbs/bootstrap-sass
https://travis-ci.org/twbs/bootstrap-sass

http://github.com/twbs/bootstrap
https://github.com/twbs/bootstrap

http://img.shields.io/travis/twbs/bootstrap-sass.svg
https://img.shields.io/travis/twbs/bootstrap-sass.svg

http://railstutorial.org/
https://www.railstutorial.org/

Thanks

:smile:


Please update citc_oci.py to include Tokyo

Oracle-Linux-7.6-2019.02.20-0
ap-tokyo-1 = "ocid1.image.oc1.ap-tokyo-1.aaaaaaaairi7u3txkamxlw3kmw3dosbesrlm22vsh7yybhygzafd3awhlr5q"

Hi Taylor. Thanks for the update. We're having an internal meeting tomorrow to discuss release management etc so this will wait until after that but it will be committed in the next day or so.

Hi Taylor, do you have the OCID for the corresponding GPU image?

We now fetch the OCID of the image through the API so this is not longer an issue.


Avoid caching remote schedule data. Add only this element to develop.

Docs: https://developer.mozilla.org/en-US/docs/Web/API/Request/cache

Did you test this?
Once tested, we'll need to re-deploy the whole system to the development server, not just the one file.

Did you test this locally? Once tested, we'll need to re-deploy the whole system to the development server, not just the one file.

Applying the change locally resulted in no errors or issues that I could detect.


Bot is unable to recover from not being able to decrypt my messages from an unknown device

Also asked about this in the E2E internal room.
Describe the bug
In the #moderation:matrix.org room, my device wasn't being recognized by the @abuse:matrix.org bot.
Permalink to unrecognized messages: https://matrix.to/#/!NeoYFhhzYBFGYYuEau:matrix.org/$1611805804115039rpIyf:matrix.org?via=matrix.org&via=vector.modular.im&via=t2l.io
@turt2live was able to lend a lot of help to dig into the problem. "the bot is complaining about Unknown Inbound Session ID, implying your outbound session is broken". Possibly: "it kinda looks like your device might not know about the bot, not the other way around". His suspicion is that it is some desync problem possibly when the matrix.org server was having a performance issue and the bot never saw my device. My messages were viewable impersonating the bot.
Only after restarting the pantalaimon instance was the bot able to recognize and decrypt my messages.
Screenshots

What did I try?
Before the issue was fixed, I tried the following things which had no effect.

Using the /discardsession slash command
I also tried renaming my device to try to throw a device list into the server but that also didn't change anything.
Logging into another device and sending a message in the affected room

Logs
The relevant RageShake log issue is https://github.com/matrix-org/element-web-rageshakes/issues/4107
@turt2live was able to dig up some logs:
Jan 28 03:59:17 tenes docker-pantalaimon[26101]: [2021-01-28 03:59:17.286185] WARNING: nio.encryption: Received a undecryptable Megolm event from a unknown device: @madlittlemods:matrix.org IGJXDHAHTD
Jan 28 03:59:17 tenes docker-pantalaimon[26101]: [2021-01-28 03:59:17.286297] WARNING: nio.encryption: Error decrypting megolm event, no session found with session id Ii43WPqqVkCkJrvkdAzPHf6DULrGo3ijXR/6QniioUk for room !NeoYFhhzYBFGYYuEau:matrix.org

More logs that @benbz dug up:
From the logs, I can see my device (IGJXDHAHTD) being added but still fails to decrypt afterwards.
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.221378] WARNING: nio.encryption: Received a undecryptable Megolm event from a unknown device: @madlittlemods:matrix.org QWVGHOHYWJ
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.221597] WARNING: nio.encryption: Error decrypting megolm event, no session found with session id xw1GKnDi1ZHkBxU61C6Y7WBPjaGJDyc0H0XQqOROPuI for room !NeoYFhhzYBFGYYuEau:matrix.org
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.221760] INFO: pantalaimon: Unable to decrypt event from @madlittlemods:matrix.org via QWVGHOHYWJ.
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.221823] INFO: pantalaimon: Requesting room key for undecrypted event.
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.224899] INFO: pantalaimon: Trying to decrypt sync
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.225041] INFO: pantalaimon: Decrypting sync

Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.589224] WARNING: nio.encryption: Received a undecryptable Megolm event from a unknown device: @madlittlemods:matrix.org IGJXDHAHTD
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.589336] WARNING: nio.encryption: Error decrypting megolm event, no session found with session id 11qvnd2XR+N1yc7dmN0MVHtQtOmsn8tXbrR70jz3fVU for room !NeoYFhhzYBFGYYuEau:matrix.org
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.589405] WARNING: pantalaimon: Error decrypting megolm event, no session found with session id 11qvnd2XR+N1yc7dmN0MVHtQtOmsn8tXbrR70jz3fVU for room !NeoYFhhzYBFGYYuEau:matrix.org
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.589469] INFO: pantalaimon: Error decrypting sync, waiting for next pan sync
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.854686] DEBUG: nio.encryption: Saving account
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.923669] INFO: nio.encryption: Adding new device to the device store for user @madlittlemods:matrix.org with device id WUGSRRHAVC
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.931817] INFO: nio.encryption: Adding new device to the device store for user @madlittlemods:matrix.org with device id IGJXDHAHTD
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.939621] INFO: nio.encryption: Adding new device to the device store for user @madlittlemods:matrix.org with device id QWVGHOHYWJ
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.946028] INFO: nio.encryption: Marking device @madlittlemods:matrix.org of user IHCDZYTTAR as deleted
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.946251] INFO: nio.encryption: Marking device @madlittlemods:matrix.org of user VXDTPTRWNR as deleted
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.946370] INFO: nio.encryption: Marking device @madlittlemods:matrix.org of user VYQFYMIDAU as deleted
Jan 28 17:00:09 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:09.946518] INFO: nio.encryption: Marking device @madlittlemods:matrix.org of user PGLZWAERRT as deleted

Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.160736] WARNING: nio.encryption: Received a undecryptable Megolm event from a device with no Olm sessions: @madlittlemods:matrix.org IGJXDHAHTD
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.161107] WARNING: nio.encryption: Error decrypting megolm event, no session found with session id 11qvnd2XR+N1yc7dmN0MVHtQtOmsn8tXbrR70jz3fVU for room !NeoYFhhzYBFGYYuEau:matrix.org
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.161322] INFO: pantalaimon: Unable to decrypt event from @madlittlemods:matrix.org via IGJXDHAHTD.
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.161479] INFO: pantalaimon: Requesting room key for undecrypted event.
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.268018] DEBUG: nio.encryption: Trying to share key xw1GKnDi1ZHkBxU61C6Y7WBPjaGJDyc0H0XQqOROPuI with @abuse:matrix.org:BYJTXGGWIL
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.268373] WARNING: nio.encryption: Failed to re-share key xw1GKnDi1ZHkBxU61C6Y7WBPjaGJDyc0H0XQqOROPuI with @abuse:matrix.org: No session found
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.268544] DEBUG: nio.encryption: Trying to share key 2LVt+sjf/tEWUfN1QuMdP16KPbjf+pH7MEhL8AFvhPE with @abuse:matrix.org:BYJTXGGWIL
Jan 28 17:00:10 tenes docker-pantalaimon[26101]: [2021-01-28 17:00:10.268651] WARNING: nio.encryption: Failed to re-share key 2LVt+sjf/tEWUfN1QuMdP16KPbjf+pH7MEhL8AFvhPE with @abuse:matrix.org: No session found

And now the bot can decrypt me successfully after a restart of pantalaimon:
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.939523] DEBUG: nio.encryption: Decrypting event of type OlmEvent
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.939805] INFO: nio.encryption: Creating Inbound session for @madlittlemods:matrix.org
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.940633] INFO: nio.encryption: Created Inbound session for @madlittlemods:matrix.org
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.946094] DEBUG: nio.encryption: Saving account
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.951279] INFO: nio.encryption: Received Olm event of type: m.room_key from @madlittlemods:matrix.org 9jYg7pm9gDRxCdMJz+dWGQbFOLDk9bAnCzkt140Y+hQ
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.951662] INFO: nio.encryption: Received new group session key for room !NeoYFhhzYBFGYYuEau:matrix.org from @madlittlemods:matrix.org
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.951826] INFO: nio.encryption: Creating inbound group session for !NeoYFhhzYBFGYYuEau:matrix.org from 9jYg7pm9gDRxCdMJz+dWGQbFOLDk9bAnCzkt140Y+hQ
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.958581] DEBUG: nio.encryption: Decrypting event of type OlmEvent
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.958804] INFO: nio.encryption: Trying to decrypt olm message using existing session for @madlittlemods:matrix.org and sender_key 9jYg7pm9gDRxCdMJz+dWGQbFOLDk9bAnCzkt140Y+hQ
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.958940] ERROR: nio.encryption: Found matching session yet decryption failed for sender @madlittlemods:matrix.org and sender key 9jYg7pm9gDRxCdMJz+dWGQbFOLDk9bAnCzkt140Y+hQ
Jan 28 17:04:39 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:39.959152] WARNING: nio.encryption: Attempted to mark device IGJXDHAHTD of user @madlittlemods:matrix.org for Olm session unwedging, but a new session was created recently.
...
Jan 28 17:04:45 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:45.356773] DEBUG: pantalaimon: Decrypted event: @madlittlemods:matrix.org:  * Looks like it, those are the same to the ones Travis found yesterday
Jan 28 17:04:45 tenes docker-pantalaimon[26101]: [2021-01-28 17:04:45.356948] INFO: pantalaimon: Decrypted event from @madlittlemods:matrix.org in !NeoYFhhzYBFGYYuEau:matrix.org, event id: $1611853485162505Hzywt:matrix.org

To Reproduce
I don't have reproduction instructions and don't know why it started. The abuse bot just started marking my messages in that room.
Expected behavior
Ideally, pantalaimon should be able to recover on its own and request a new device list and be able to decrypt my messages.
Desktop (please complete the following information):

OS: macOS 11.1
Browser Chrome 88.0.4324.96
Client: https://develop.element.io/

@poljar mentioned that,

tracking down that specific issue might not be worth it, it seemed to be a combination of some stuck state on the pan side caused by some server weirdness. now that's not the reason why we wouldn't want to chase that down, the reason is that pan and the underlying lib pan uses is going to switch the crypto (and state handling) implementation to our rust-sdk relatively soon
-- Internal Matrix message

I was getting the same issue from time to time although /discardsession fixed it for me. Thanks!


As a user, I can track my job applications

[ ] As a user, I can find job applications whose details contain a specific keyword/phrase.
[ ] As a user, I can sort my job applications by their date in ascending/descending order.
[X] As a user, I can sort my job applications by other tags (such as quoted salary, job type), so that I can quickly see which jobs I may prefer. (removed)
[ ] As a user, I can see that my job applications which are stagnant for too long are highlighted.

Removed sorting by other tags as they will require more time to implement

Not done yet

Closed as it is too tedious to complete within 1.3


feat: liikunta theming part 1

Description

Front page search component transparent bg
Footer dark theme in sports
Footer categories removed in sports
Set all the theme color variables
Fixed hcrc variables and added additional to style article search and article page

NOT DONE:
Waiting of styles for the tag components for all 3 apps, as we now have to many style variations. Out of scope of this PR, separate PR is needed
Issues
Closes
DEV-XXX:
Related
Testing
Automated tests
Manual testing
Screenshots
Additional notes

Codecov Report

Merging #94 (5e45347) into main (4ec2e50) will increase coverage by 5.48%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main      #94      +/-   ##
==========================================
+ Coverage   62.21%   67.70%   +5.48%
==========================================
  Files         109      100       -9
  Lines        2668     2378     -290
  Branches      595      530      -65
==========================================
- Hits         1660     1610      -50
+ Misses        941      704     -237
+ Partials       67       64       -3

Impacted Files
Coverage Δ

...i/src/common-events/utils/headless-cms/service.tsx
0.00% <0.00%> (ø)

...i/src/common-events/utils/headless-cms/service.tsx

...inki/src/domain/event/eventCard/LargeEventCard.tsx

...-helsinki/src/domain/event/eventHero/EventHero.tsx

...-helsinki/src/domain/event/eventInfo/EventInfo.tsx

...i/src/domain/event/eventKeywords/EventKeywords.tsx

apps/sports-helsinki/src/domain/footer/Footer.tsx

...i/src/domain/search/eventSearch/AdvancedSearch.tsx

...search/landingPageSearch/LandingPageSearchForm.tsx

...inki/src/domain/search/venueSearch/VenueSearch.tsx

... and 200 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Events-Helsinki branch is deployed to platta: https://tapahtumat-94-liikunta-324-theme.dev.hel.ninja :rocket::rocket::rocket:

Hobbies-Helsinki branch is deployed to platta: https://harrastukset-94-liikunta-324-theme.dev.hel.ninja :rocket::rocket::rocket:

Sports-Helsinki branch is deployed to platta: https://liikunta-94-liikunta-324-theme.dev.hel.ninja :rocket::rocket::rocket:


add a link/url type.

I just looked in the documentation, link field is missing. Could you please share a code snippet to demonstrate options available.