[SP-6660] - Backport of PDI-20058 - Variable value getting substitution during PDI restart. (10.2 Suite)

original PR: https://github.com/pentaho/pentaho-kettle/pull/9483
@pentaho/tatooine_dev

📦 Vulnerable Dependencies
✍ Summary

SEVERITY
DIRECT DEPENDENCIES
IMPACTED DEPENDENCY
FIXED VERSIONS
CVES

    High
org.jdom:jdom:1.1.3
org.jdom:jdom 1.1.3
-
CVE-2021-33813

🔬 Research Details
Description:
An XXE issue in SAXBuilder in JDOM through 2.0.6 allows attackers to cause a denial of service via a crafted HTTP request.

 Note:

Frogbot also supports Contextual Analysis, Secret Detection, IaC and SAST Vulnerabilities Scanning. This features are included as part of the JFrog Advanced Security package, which isn't enabled on your system.

🐸 JFrog Frogbot

📦 Vulnerable Dependencies
✍ Summary

SEVERITY
DIRECT DEPENDENCIES
IMPACTED DEPENDENCY
FIXED VERSIONS
CVES

    High
org.jdom:jdom:1.1.3
org.jdom:jdom 1.1.3
-
CVE-2021-33813

🔬 Research Details
Description:
An XXE issue in SAXBuilder in JDOM through 2.0.6 allows attackers to cause a denial of service via a crafted HTTP request.

 Note:

Frogbot also supports Contextual Analysis, Secret Detection, IaC and SAST Vulnerabilities Scanning. This features are included as part of the JFrog Advanced Security package, which isn't enabled on your system.

🐸 JFrog Frogbot

:x: Build failed in 22m 53s
Build command:
mvn clean verify -B -e -Daudit -Djs.no.sandbox -pl core

:ok_hand: All tests passed!
Tests run: 1404, Failures: 0, Skipped: 1    Test Results

:information_source:  This is an automatic message


feat/storybook-addon-mdx-embed

add storybook-addon-mdx-embed

Codecov Report

Merging #139 into main will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #139   +/-   ##
=======================================
  Coverage   58.76%   58.76%
=======================================
  Files          76       76
  Lines         599      599
  Branches      105      109    +4
=======================================
  Hits          352      352
+ Misses        221      218    -3
- Partials       26       29    +3

Impacted Files
Coverage Δ

src/components/lbry/lbry.tsx
50.00% <0.00%> (ø)

src/components/pinterest/pin.tsx
60.00% <0.00%> (ø)

src/components/wikipedia/wikipedia.tsx
14.28% <0.00%> (ø)

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 6679975...b533516. Read the comment docs.


feat: support multiple id field names in require-id-when-available rule

fix https://github.com/dotansimha/graphql-eslint/issues/382

Thanks @B2o5T ! Feel free to merge once we get a feedback about this change :)


wix installer is also signed

What kind of change does this PR introduce?
Signing a binary that goes into wix is great, but end user will still experience a malware warning unless the wix installer itself is also signed.

[ ] Bugfix
[x] Feature
[ ] Docs
[ ] New Binding issue #___
[ ] Code style update
[ ] Refactor
[x] Build-related changes
[ ] Other, please describe:

Does this PR introduce a breaking change?

[ ] Yes, and the changes were approved in issue #___
[x] No

Checklist

[x] When resolving issues, they are referenced in the PR's title (e.g fix #___, #___)
[x] A change file is added if any packages will require a version bump due to this PR per the instructions in the readme.
[x] I have added a convincing reason for adding this feature, if necessary

Other information

Can you add a .md file on the .changes folder describing this change, so it can be added to the changelog? Like this:
.changes/wix-signing.md
---
"tauri-bundler": patch
---

Sign WiX installer in addition to the executable file.

I was trying to fix this, glad you beat me to the punch!
Thanks a bunch!


Onboard wind hazard event data

Open-ended issue to look at sources for wind data suitable for residential real estate.
e.g.
https://climate.copernicus.eu/vortex

The CGFI team (see also https://www.cgfi.ac.uk/global-resilience-index-initiative/try-grii-now/) pointed us to this set by Bloemendaal et al (2020): STORM tropical cyclone wind speed return periods.
https://data.4tu.nl/articles/dataset/STORM_climate_change_tropical_cyclone_wind_speed_return_periods/14510817/3
and then
https://figshare.com/s/397aff8631a7da2843fc
This indeed looks very useful and I suggest we prioritize.
From a very quick look, we probably want to take data and convert to a single global zarr file with WGS 84 CRS.

Hi @mvarfima,
Is this one you (or colleague) might like to take on? Bit of work there (probably in hazard repo) to do the necessary conversion to OS-C zarr format. I have found it works well to convert first to xarray; easy to save to our zarr format from there.

Hi @joemoorhouse.
I was inspecting both data sources and I think I need some guidance.

For the STORM climate change tropical cyclone wind speed return periods datasets I think we are interested in the "STORM_FIXED_RETURN_PERIODS_CMCC" folders for every .nc file inside (which cover different regions). I can converts from (0, 360)º to (-180, 180) using ecmwf conversor and create transfrom for declarated 10km resolution.
For the STORM Climate Change synthetic tropical cyclone tracks we have reanalysis data for 4 different models. That data is used to produce future climate conditions with storm(see paper and scenario data)

So, the datasets from point 2 are used to obtein RCP8.5 future data, point 1.
If you find it apropiate I can create a notebook to upload reanalysis data (4 models) + scenario data using declared coordnate system and resolution, and onboard it to s3 in zarr type as I did with JRC. We could comment the results in the next OS-C Wednesay session.

Hi @mvarfima,
For 1, in the hazard repo we are tending to onboard both .nc and .tif straight into xarrays and then perform any necessary projections from there.
See for an example of a re-projection
https://github.com/os-climate/hazard/blob/main/src/hazard/utilities/map_utilities.py
transform_epsg4326_to_epsg3857
I think fine to put something as a notebook to start with to get it working. Then we would probably turn it into a separate class similar to things like:
https://github.com/os-climate/hazard/blob/main/src/hazard/models/work_loss.py
with a new 'source'
If you stick with xarrays that will take writing the classes easy later. e.g. we have
https://github.com/os-climate/hazard/blob/main/src/hazard/sources/osc_zarr.py
Which can write xarrays to zarr in the correct conventions.
So actually, the work is really to get the data into a single xarray with the correct CRS (probably WGS 84) and bounds.
2 sounds interesting, but perhaps we split into two issues: this one for the hazard map and another for the events?

Hi @joemoorhouse.
Sorry for the late response and thank you for the links, it's good to have a reference.

Okey, I didn't see the tif files till now. So, do you have any code related to the onborading of this data in the repo? I was thinking that i can create the code to unzip every folder and onboard every .nc and .tif file. The destination folder can have the same names and structures as the source one. I would say that this task can be done straigtforward if the resolution and affine transformation of the maps are the same. If not, we can recover the CRS and use pyproj library.

So then we can treat this events datasource in a different thread and keep this one for maps. I suggest following the same methodology that in 1. to onboard this data.

So, my code structure proposal covers:

Unzipping.
Finding every .nc and .tif file.

For every hazard map:
4. Creating destination path in s3 (recovered from source folder and file names. Use s3fs and/or boto3 when needed.
5. Recover affine transformation and shape. Fix resolution to 10km. Transfrom to Lat-Lot using pyproj or osc utilities if exist.
6. Create zarr array with given shape and transform. Use oscZarr() method.
7. Populate zarr array. Use oscZarr() method.
Let me know what you think and if there is any other osc utility tht I should be aware of. I can deliver a solution if you lke the idea.

This may be helpful: "OGC Testbed 17: COG/Zarr Evaluation Engineering Report" https://docs.ogc.org/per/21-032.html

Hi @mvarfima,
Holidays got in the way, but I tried out a few ways to combine multiple small arrays into one large chunked array. I have an approach I am pretty happy with, but still in a branch for now as not quite complete.
https://github.com/joemoorhouse/hazard/tree/inventory-test
I added a test that is more like a script to download and run the conversion routine: test_wind_onboarding.
The main code is here:
https://github.com/joemoorhouse/hazard/blob/inventory-test/src/hazard/onboard/storm_wind.py
The logic to combine arrays is in the method add_children_to_parent
https://github.com/joemoorhouse/hazard/blob/inventory-test/src/hazard/utilities/xarray_utilities.py
You'll see that I load the 'children' to be combined as xarrays (DataArrays in fact); it is a useful intermediate storage. We can use the xarray coordinates or Affine transforms to work out the parent's indices that correspond to the child. I show both ways. I keep the target as a zarr array as I find it easier to deal with that directly.
Thanks
Joe

Hi @obsidjan, @mvarfima, @floriangallo
As an update on wind hazard models, the remaining work in this issue is to complete the on-boarding into OS-C of the STORM tropical cyclone hazard maps:
https://data.4tu.nl/articles/dataset/STORM_climate_change_tropical_cyclone_wind_speed_return_periods/14510817/3
https://figshare.com/s/397aff8631a7da2843fc
This on-boarding is implementing in the hazard.
Separately we are discussing on-boarding of IRIS both as hazard map and (synthetic) event set; I will create a separate issue for that (most likely in hazard directly).


Fixes coffee

Fixes design guideline violations of coffee

Nice, I think this icon looks even better now. The old one looked a bit chonky.


Get-AudioDevice -List  error when no enabled mic or playback device.

I'm seeing behavior where Get-AudioDevice -List works iff there is at least one playback device AND one recording device enabled. I didn't have a mic enabled and it took some work to figure out that that was causing the error. Error below:
PS C:\WINDOWS\system32> Get-AudioDevice -List
Get-AudioDevice : Element not found. (Exception from HRESULT: 0x80070490)
At line:1 char:1

Get-AudioDevice -List

  + CategoryInfo          : NotSpecified: (:) [Get-AudioDevice], COMException
  + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,AudioDeviceCmdlets.GetAudioDevice

Get-AudioDevice -List works iff there is at least one playback device AND one recording device enabled. I didn't have a mic enabled and it took some work to figure out that that was causing the error.

Thank you for that information. Indeed I remember in my testing I always happened to have at least one of each.

I think the issue must be on line 167 when calling the List parameter, with the possibility to also happen on line 193 and line 220 when calling the ID and Index parameter respectively.
The way it is currently done in these lines is calling the CoreAudioApi function GetDefaultAudioEndpoint() to get a value to compare directly instead of elsewhere and possibly in a TryCatch.

Will follow up this bug in issue #35


feat(entrypoint) allow users to configure uid/gid of kong user

If KONG_UID or KONG_GID environment variable is set, change the uid
and gid of the kong user (and group if it exists).
On alpine, kong group doesn't exist, so that is not allowed.
This change makes Kong compatible with Istio.
From https://istio.io/docs/setup/kubernetes/additional-setup/requirements/:

Application UIDs: Ensure your pods do not run applications as a user
with the user ID (UID) value of 1337.

can't this already be accomplished by passing --user when running the Kong container? ie https://github.com/Kong/docker-kong/blob/master/tests.sh#L76-L85

@hutchic Indeed. 🤦♂


New version: Intel.WiFiDrivers version 23.20.0

Pull request has been created with komac v2.0.3 :rocket:

Resolve: #138253

Microsoft Reviewers: Open in CodeFlow

For moderators
This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping Exorcism0666.

[!warning]
With the new version of Komac, numerous Pull Requests may contain bugs or unwanted elements. If such issues arise, please tag russellbanks so that these bugs can be addressed in future updates.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！


Vietnamese Language

Hey @danielsaidi,
How can I set vietnamese language in KeyboardKit or another custom keyboard. I try to set "vi" in primaryLanguage but it doesn't work. Can you help me, pls.
Thanks

Hi @TaezIT
KeyboardKit doesn’t yet support Vietnamese but it may be added in the future.
You can still build a Vietnamese keyboard with the SDK though.
which Vietnamese keyboard variant would you like to have in the library?

I tried to customize a keyboard with Vietnamese by set "vi" in primaryLanguage but it doesn't work.
Anyway, can you teach me how I can use Vietnamese language in KeyboardKit normal, not pro version

The primary language only sets the native keyboard language, which is shown in the keyboard switcher. It doesn’t affect KeyboardKit.
in KeyboardKit, you have to create a Vietnamese keyboard layout and pass that into the system keyboard, or use the base components to build your own custom keyboard view.

I know that but when I create a new keyboard extension and set "vi" for primaryLanguage in Info.splist. Then, my keyboard show with Vietnamese like this but I still can not use Vietnamese.

In Vietnamese, after I double click to "a", it change to "â". But it doesn't work. Do you know reason ?

when you click on button, just insert character to textDocumentProxy, not handle to change previous character. It you want use Vietnamese, you need write algorithm to handle and change character before insert to textDocumentProxy.

KeyboardKit currently has no support for Vietnamese. You currently have to implement it yourself.
Which Vietnamese keyboard variant would you like to use?

I want it to be like your keyboard
My difficulty is that in the Vietnamese language, when I press the two letters "a" will, my character will turn into "â". Do I have to handle this myself or when I set Primary Language to "vi" will Apple help me do it ?

In KeyboardKit, when press on button, just insert character to textDocumentProxy, not handle to change current word. So, if you want to press double a, character will return "â", you need write func to handle it before insert to textDocumentProxy. I am trying to write it.


[Documentation] Could a FAQ be added?

Hey folks,
I just semi-accidentally discovered webamp, when I was looking for a java clone
of the old winamp, actually.
The current README shows how to embed it, which is fine. But, after that step,
I'd have a few questions. For instance, how to easily add a bunch of songs?
Like .add_songs() or something. I am sure this is easy to find out, but could
you guys perhaps consider adding a FAQ, where such easy questions are
quickly answered? I could then go through that FAQ and collect useful
information into it.
So as one entry I would like to suggest:
"How to add one or more songs to the webamp interface?"
And of course to extend this. The FAQ could be maintained in the
wiki of github here, and/or in a separate .md file or something such
as FAQ.md. It may probably be too long to add to the main README
directly, but when it is added perhaps the main README can add
a link to it.

Did you manage to find
https://github.com/captbaritone/webamp/blob/master/packages/webamp/docs/usage.md
?
If not, does that answer your questions?
On Tue, Oct 31, 2023 at 4:53 AM rubyFeedback @.***>
wrote:

Hey folks,
I just semi-accidentally discover webamp, when I was looking for a java
clone
of the old winamp, actually.
The current README shows how to embed it, which is fine. But, after that
step,
I'd have a few questions. For instance, how to easily add a bunch of songs?
Like .add_songs() or something. I am sure this is easy to find out, but
could
you guys perhaps consider adding a FAQ, where such easy questions are
quickly answered? I could then go through that FAQ and collect useful
information into it.
So as one entry I would like to suggest:
"How to add one or more songs to the webamp interface?"
And of course to extend this. The FAQ could be maintained in the
wiki of github here, and/or in a separate .md file or something such
as FAQ.md. It may probably be too long to add to the main README
directly, but when it is added perhaps the main README can add
a link to it.
—
Reply to this email directly, view it on GitHub
https://github.com/captbaritone/webamp/issues/1240, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABHXLYRW7GY5UHHNSX24TDYCDRCFAVCNFSM6AAAAAA6XRZCJSVHI2DSMVQWIX3LMV43ASLTON2WKOZRHE3TAMRZGM4DKNQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Updated composer.json and dependencies

Based on PR #74 to test with PHP 7.2 and avoid conflicts on merge.

allow PHPUnit 7
test with zend-eventmanager 2.6 as it is suggested dependency
alphabetical order of dependencies
updated branch aliases to format 1.2.x-dev
updated keywords and description
added support links

Thanks, @webimpress.


Visual Glitch on tabs using obsidian 1.8.0

Bug Report Checklist

[X] I have searched existing issues and this is not a duplicate
[X] I have updated to the latest version of the plugin
[X] I have disabled all other plugins and themes to ensure the issue is with Vertical Tabs
[X] I have restarted Obsidian after disabling other plugins and themes, and the issue persists

Environment

[X] Windows
[ ] macOS
[ ] Linux
[ ] Android
[ ] iOS
[ ] iPadOS

Bug Description
The problem is related to standard tabs: when zen mode is active, the only tab showed in the tab bar is not displayed properly.
See screenshot below as an example.
I tried disabling/enabling vertical tabs and the glitch appears only when VT is active. Probably it has been triggered by my update to latest catalyst Obsidian 1.8.0; indeed reinstalling previous 1.7.7 resolves the issue.
Steps to Reproduce
To reproduce it.

Enable Vertical Tabs
Enable Zen Mode

Other Consideration:

Disabling "Show Active Tabs only" restores the right view (with Zen mode disabled)
With Background mode enabled right aspect is restored.

Debug Information
SYSTEM INFO:
Obsidian version: v1.8.0
Installer version: v1.7.6
Operating system: Windows 11 Pro 10.0.26100
Login status: logged in
Language: it
Catalyst license: insider
Insider build toggle: on
Live preview: on
Base theme: adapt to system
Community theme: none
Snippets enabled: 1
Restricted mode: off
Plugins installed: 25
Plugins enabled: 15
1: Extract url content v0.12.1
2: Local Backup v0.1.8
3: Surfing v0.9.14
4: Wikipedia Search v2.6.0
5: Differential ZIP Backup v0.0.11
6: File Color v1.1.0
7: Tasks v7.14.0
8: Highlightr v1.2.2
9: Fast Text Color v1.1.2
10: Style Settings v1.0.9
11: Minimal Theme Settings v8.1.1
12: Remember cursor position v1.0.9
13: Typewriter Mode v1.0.0
14: PDF++ v0.40.14
15: Vertical Tabs v0.12.3
Can you reproduce the bug in the "Sandbox vault"? Please skip this for mobile platforms by selecting "Not applicable".
Yes
Screenshots

Additional Information
No response

Thank you for reporting this bug. I have fixed it in v0.12.4

Thank you for reporting this bug. I have fixed it in v0.12.4

Thanks a lot for the quick release!

I'm sorry but, probably, I identified a remaining issue about this topic: in order to reproduce it, with obsidian 1.8 and latest Vertical Tabs, try the following the following steps:

Disable Zen Mode
In Vertical Tabs settings enable "Show Active Tabs only".

You should see one tab for each pane, with the above mentioned visual issue. Instead, if zen mode is active, enabling/disabling "Show Active Tabs only" doesn't make any difference.
Just to be honest, It is not a configuration that I actively use; indeed I found it by mistake.


RFC: Bootstrap RFC process

Rendered
This is largely inspired by Rust's RFC process.
This also establishes early that all RFCs submitted to this repo will be licensed under Apache 2.

For posterity: this was mostly reviewed in person and I haven't heard any objections. We can always amend this with later RFCs. 🙂


Exemplar storage added. Configuration moved from docker-compose to lo…

Few changes:

Exemplar storage added.
Configuration moved from docker-compose to local-tempo.yaml configuration file.
Service graphs added to Prometheus.
Added traces to metrics for Tempo.
Added logs integration between Loki and Tempo.

Visualization:

 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.


Remove Generated from ... comment

Follow-up #7
It's overwritten to the local path of the contributer's one,
e.g. // Generated from C:\Users\XXX\Documents\GitHub\css\scripts\initial.js

As explained in #7, these files are currently versioned for my personal convenience. I want users/contributors to find the script that generated them with the path on their system, not mine. =)

I understand that this is for your convenience.
On the other hand, simply running a test rewrites a single line in the file, which the contributor must revert every time they submit a pull request or adding commits.
That should be a hassle for them, and what's worse is that their local paths are unintentionally exposed.
I would appreciate it if you could consider it.


docs: fix filter docs to replace exact.

Summary
The equal and exact types were merged in https://github.com/algorand/indexer/pull/1468 but the documentation was not properly updated. This PR updates the documentation to replace exact with equal.

Looks good thanks! Should expression-type be wrapped in quotes? I only see it being defined like this in conduit/plugins/processors/filterprocessor/README.md (which is a markdown file).

added quotes.


wishlist: explore snap socket activation support

I've been reading through https://forum.snapcraft.io/t/socket-activation-support/2050 + https://bugs.launchpad.net/snapd/+bug/1612440, and I'm thinking we should probably consider doing something there to match how Docker is deployed via APT.
My initial concern is making sure that our service is still "enabled" so that containers with a restart policy can start properly when the system reboots without the user needing to invoke some Docker command first. :smile:
(I'm also not sure how/if this would interact with https://github.com/snapcore/core20/issues/72 :sweat_smile:)

From my research so far, I don't think we'll be able to set the docker group on the socket if we switch to activation, so IMO it's not worth risking.

Yes, initially socket activation would mean that you would not be able to set the docker group on the socket since you would need systemd directives to allow setting what group the socket file should be owned by, which is dependent on sorting out the extrausers stuff for the docker snap on classic which is a bit difficult to sort out. If/when we get there I will update this bug with the plan and how docker could use that.


Support for controlling browser refresh behavior on iOS

PR #414 that originates from issue #339 improves support for login from native iOS apps that are using an embedded web view like ASWebAuthenticationSession.  However, when the user returns from the BankID app, the default implementation in BankIdLauncher will refresh the browser on iOS which does not work for this scenario.
I would like to override the refresh behavior so that I do not have to implement IBankIdLauncher (basically as stated in https://github.com/ActiveLogin/ActiveLogin.Authentication/issues/339#issuecomment-1707151117)

Thanks! Very god you brought this up :)
I like your PR, but would like to see it implemented slightly different.
Instead of having a new interface for this, I would like it to be another method on the existing interface (IBankIdLauncherCustomAppCallback.cs). That would mean a breaking change, but if we use the "new" feature of default interface methods  we could fallback to the default behavior.
I would suggest a method called (something like) DeviceWillReloadPageOnReturnFromBankIdAp that could return an enum with values like Default, False, True. By default it will use the default implementation based on the detected device.
As these things usually are coupled, I think this is the bestr method. Do you agree?

Of course.  I have updated the PR with a new commit that implements your suggested design.
I felt that keeping the default implementation of GetDeviceWillReloadPageOnReturnFromBankIdApp in the BankIdLauncher class was more clear, compared to moving the code to a default implementation in the interface.
Please note that the new enumeration contains documentation about the default behaviour.  You might not want that, but I felt it was a reasonable piece of information to expose to the developer when intellisensing the value.
What do you think?  This is pretty untested, just to get your feedback.


Align GEDI_L4B to VEDA notebook guidelines

EPIC
#240
Description
The Visualizing GEDI L4B Data notebook should be reviewed using the this guidance and includes the following components:

Style
Rendering Information
Notebook Sections

Acceptance Criteria (Tasks):

[x] Style should be consistent with guidance provided
[x] Rendering information should be complete and accurate. If there is no author/date information available, consult MAAP leads @wildintellect @abarciauskas-bgse for guidance
[x] Ensure notebooks include the recommended standard sections

Extra Task:

[x] this tutorial should be updated to use L4B granules directly from Earth Data Cloud, it should not "download"

Link to PR: https://github.com/MAAP-Project/maap-documentation/pull/262

Ready for re-review

Approved and merged


WebsiteDeployHelper - Runtime Python3.6

Describe the bug
WebsiteDeployHelper is failing to create. Embedded stack arn:aws:cloudformation:us-east-1:xxxxxxxx:stack/ContAnalyz-WebStack-NAV0C7BT3YE7/8ea78950-18f2-11ed-a065-0e987b47ea9f was not successfully created: The following resource(s) failed to create: [WebsiteDeployHelper].
Resource handler returned message: "The runtime parameter of python3.6 is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (python3.9) while creating or updating functions. (Service: Lambda, Status Code: 400, Request ID: 9c7293a7-99d7-4e54-992c-0a00d3fc612b)" (RequestToken: 88e80d66-96e9-b03f-ce72-c97a67334ed9, HandlerErrorCode: InvalidRequest)
To Reproduce
Create stack with aws-content-analysis template.
Expected behavior
Creation of WebStack resource.
Please complete the following information about the solution:

[v2.0.0] Version: [e.g. v1.0.0]
[us-east-1] Region: [e.g. us-east-1]
[No] Was the solution modified from the version published on this repository?
[ ] If the answer to the previous question was yes, are the changes available on GitHub?
[Yes] Have you checked your service quotas for the sevices this solution uses?
[See bug description] Were there any errors in the CloudWatch Logs?

Hey @WulfenSan ,
My team was trying to implement the content analysis and we ran into the same issue as you, not sure if you ever figured this out on your own but I'll leave the solution here for you and anyone else that may come across this thread.
So stack creation follows the template of aws-content-analysis.yaml. Everything works fine until the WebStack, and if you look at aws-content-analysis-web.yaml here you see where we get the runtime error.
Some of the source code is provided in this repo but if you look through the templates you'll see that everything is actually getting built by pulling from an S3 bucket called rodeolabz. We need to fix some of theses file so we'll be creating our own versions.
So steps to fix this are as follows:

Create your own S3 bucket & directory for templates (I called mine "my-templates/aws-content-analysis")
Go to this link to download the rodeolabz websitehelper.zip
Go to this link for the web template and open it.
Change line 291 to Runtime: python3.9,  change the WebsiteDeployHelper Properties to reference your new websitehelper.zip like so

Properties:
      Code:
        S3Bucket:  "my-templates"
        S3Key:
          !Join [
              "/",
            [
              "aws-content-analysis",
              "websitehelper.zip",
            ],
          ]

Upload both files to your S3 bucket/directory
Copy aws-content-analysis.yaml somewhere and save it as a .template
Go to AWS CloudFormation>Designer. Open aws-content-analysis.template. Add some mappings that will point to your personal template bucket. My mappings look like this

   SourceCode:
      GlobalS3Bucket: "rodeolabz-us-east-1"
      TemplateKeyPrefix: "aws-content-analysis/v2.0.0"
      RegionalS3Bucket: "rodeolabz-us-east-1"
      CodeKeyPrefix: "aws-content-analysis/v2.0.0"
      Version: v2.0.0
      PersonalS3Bucket: "my-templates"
      WebStackPrefix: "aws-content-analysis"

Still in the editor, where you build your WebStack url point to your new template bucket instead of rodeolabz (only for WebStack). Like this

      TemplateURL: !Join
        - ""
        - - "https://"
          - !FindInMap
            - Application
            - SourceCode
            - PersonalS3Bucket
          - ".s3.amazonaws.com/"
          - !FindInMap
            - Application
            - SourceCode
            - WebStackPrefix
          - "aws-content-analysis-web.template"

And that's it! Now you bypass the python runtime error and you can continue through the README to finish setting up the content analysis website. If I missed anything let me know, it might be from website_helper.py in the zip file.

Thanks for that, @kyyyyylehead! I was going through those steps, and after some additional work noticed that the base template had a new version. Ran it just to confirm, and it looks like it's now been fixed. But I definitely appreciate the thorough workaround effort!


MacOS: Failed to extract binary. Trying to re-download again

Two users reported the same issue on MacOs after running localnet start the first time.
The Github actions for MacOS failed because of the same issue Failed to extract binary. Trying to re-download again

Summary
Mysten Labs did not include many pre-compiled binaries in the latest 1.25 MacOS assets.
Workaround
Users can force Suibase to download/install a specific version with a change to suibase.yaml. Example to force localnet to stay on the last known version working:
force_tag: "devnet-v1.24.0"
Details
Comparison of 1.24 vs 1.25 released assets.

Suibase detects that binaries some required binaries are missing and fails.
I will contact Mysten Labs. This might be a temporary glitch.

For a list of tags that can be specified in suibase.yaml:
https://github.com/MystenLabs/sui/releases

Issue now open with Mysten Labs:
https://github.com/MystenLabs/sui/issues/17770
===
For better user experience in the future, I am considering to implement the following logic:
When the download of the latest succeed but the required binaries are not present, then Suibase will fallback to the previous version (unless being forced in suibase.yaml)

Thank you @mario4tier!

Suibase will now always ignore macos arm64 v1.25 release and download previous version instead:

A new function "is_assets_valid" in __globals.sh can be used to hard code more exclusion in the future.
===
If somehow you must use v1.25 on your setup, then specify "precompiled_bin: false" in suibase.yaml to force a cargo build.

@mario4tier Thank you for the work but it's a little bit disappointing. Will we exclude more releases in the future? What did Sui guys answered? I can try to reach them out as well if necessary

Mysten has re-release v1.25 with a fix ( https://github.com/MystenLabs/sui/issues/17770 )
I did revert the workaround in Suibase, so everyone should now be able to update to 1.25
@kkomelin Thanks for reporting this.

Great @mario4tier. Thank you.
That's good news because separate conditions for every buggy version of a dependency could lead the code to a mess.


add permissions for MAAP and PODAAC buckets

I got the following error trying to deploy this:
Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the last "terraform apply" which may have affected this plan:

  # aws_iam_access_key.continuous_deployer has been deleted
  - resource "aws_iam_access_key" "continuous_deployer" {
      - id                   = "AKIAWOY6ET4OXVGERYVK" -> null
      - secret               = (sensitive value) -> null
        # (4 unchanged attributes hidden)
    }

And similarly, running deployer deploy nasa-veda staging fails:
An error occurred (UnrecognizedClientException) when calling the DescribeCluster operation: The security token included in the request is invalid.

I'll regenerate the continuous deployer and hopefully that will resolve this.

As you can see, the plan from this apply will create the deployer credentials again and update the policies in place
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # aws_iam_access_key.continuous_deployer will be created
  + resource "aws_iam_access_key" "continuous_deployer" {
      + create_date                    = (known after apply)
      + encrypted_secret               = (known after apply)
      + encrypted_ses_smtp_password_v4 = (known after apply)
      + id                             = (known after apply)
      + key_fingerprint                = (known after apply)
      + secret                         = (sensitive value)
      + ses_smtp_password_v4           = (sensitive value)
      + status                         = "Active"
      + user                           = "hub-continuous-deployer"
    }

  # aws_iam_policy.extra_user_policy["prod"] will be updated in-place
  ~ resource "aws_iam_policy" "extra_user_policy" {
        id          = "arn:aws:iam::444055461661:policy/nasa-veda-prod-extra-user-policy"
        name        = "nasa-veda-prod-extra-user-policy"
      ~ policy      = jsonencode(
          ~ {
              ~ Statement = [
                  ~ {
                      ~ Resource = [
                            # (13 unchanged elements hidden)
                            "arn:aws:s3:::ornl-cumulus-prod-protected/*",
                          + "arn:aws:s3:::podaac-ops-cumulus-public",
                          + "arn:aws:s3:::podaac-ops-cumulus-public/*",
                          + "arn:aws:s3:::podaac-ops-cumulus-protected",
                          + "arn:aws:s3:::podaac-ops-cumulus-protected/*",
                          + "arn:aws:s3:::maap-ops-workspace",
                          + "arn:aws:s3:::nasa-maap-data-store",
                        ]
                        # (2 unchanged attributes hidden)
                    },
                    {
                        Action   = "s3:ListAllMyBuckets"
                        Effect   = "Allow"
                        Resource = "*"
                    },
                ]
                # (1 unchanged attribute hidden)
            }
        )
        tags        = {}
        # (5 unchanged attributes hidden)
    }

  # aws_iam_policy.extra_user_policy["staging"] will be updated in-place
  ~ resource "aws_iam_policy" "extra_user_policy" {
        id          = "arn:aws:iam::444055461661:policy/nasa-veda-staging-extra-user-policy"
        name        = "nasa-veda-staging-extra-user-policy"
      ~ policy      = jsonencode(
          ~ {
              ~ Statement = [
                  ~ {
                      ~ Resource = [
                            # (17 unchanged elements hidden)
                            "arn:aws:s3:::podaac-ops-cumulus-protected/*",
                          + "arn:aws:s3:::maap-ops-workspace",
                          + "arn:aws:s3:::nasa-maap-data-store",
                        ]
                        # (2 unchanged attributes hidden)
                    },
                    {
                        Action   = "s3:ListAllMyBuckets"
                        Effect   = "Allow"
                        Resource = "*"
                    },
                ]
                # (1 unchanged attribute hidden)
            }
        )
        tags        = {}
        # (5 unchanged attributes hidden)
    }

Plan: 1 to add, 2 to change, 0 to destroy.

Applied successfully! I'll open another PR to sort out the deployer creds


Extract execute as one property from bob files

Fix for bob files only. Opi files have hook attribute for executing first action in list on mouse click and hook_all for executing all on mouse click. Not going to handle that now.

Note that this change doesn't really have a material effect on the demo as we are using a rectangle which doesn't respond to mouse clicks anyway.


Lisette's first post for turtle hack.

This is an admirable last minute effort, but I'd have liked to see what you could have done on the full assignment.  As is, you did a good job reflecting and describing the small change you made to the program you found.


[V7 Breaking] Fix/1252

Motivation and Resolution
Proposed solution for the Contract class method options
Chainable withOptions()
Fix #1252
RPC version (if applicable)
Usage related changes
Old
const status = await cairo1Contract.get_bet(1, {
          formatResponse: { name: 'string', description: 'string' },
        });

NEW
const status = await cairo1Contract
        .withOptions({
          formatResponse: { name: 'string', description: 'string' },
        })
        .get_bet(1);

Checklist:

[ ] Performed a self-review of the code
[ ] Rebased to the last commit of the target branch (or merged it into my branch)
[ ] Linked the issues which this PR resolves
[ ] Documented the changes in code (API docs will be generated automatically)
[ ] Updated the tests
[ ] All tests are passing

Copying what I wrote for PR#1253 about using spread Calldata as the argument so we can keep it in mind for this PR:

I believe the spread Calldata branch can also be removed ([...Calldata] | [...Calldata, ContractOptions] from the reworked ArgsOrCalldataWithOptions type). It is supported by splitArgsAndOptions itself, however, splitArgsAndOptions is in all its usages followed by the getCalldata() utility that filters the argument based on the __compiled__ marker which isn't propagated if the Calldata is spread. This means that the only spread input that should be able to work is method(...Calldata, { parseRequest: false }).
I don't see any utility in restoring the full support, so refactoring the code to exclude the supported scenario seems preferable, it should also simplify detecting whether a ContractOptions object is used.

The point made about the spread being filtered out later in the code execution still applies so the only supported scenario, updated for the changes from this PR, is the following:
  contract
    .withOptions({ parseRequest: false })
    .method(...Calldata)

An option is to keep it as is, but in that case we should probably clarify the behaviour in the documentation.


NormalMapEffect and PBREffect updated with instancing support

NormalMapEffect, PBREffect updated to support instancing using a XMFLOAT3X4 transform in the vertex data.

Test updates in this commit


Toast doesn't disappears sometimes even if persist is set to false

🐛 Bug Report
Toast doesn't disappears sometimes even if persist is set to false
🤔 Expected Behavior
The toast should disappear automatically if the persist is set to false.
😯 Current Behavior
When i click on the start/stop button under CC then two toasts pop up on the screen. If i wait them to disappear and then click again on start/stop button then it works fine but if i continuously click on start/stop button without waiting for earlier toasts to disappear then some of them remains on the screen i.e. doesn't disappears.
💁 Possible Solution
🔦 Context
An end user can click on start/stop button multiple times so the toasts should disappear automatically otherwise it will stack up on the screen disturbing the UI.
💻 Code Sample

🌍 Your Environment

Software
Version(s)

react-spectrum

Browser
Chrome

Operating System
MacOS

🧢 Your Company/Team
Adobe/Connect
🕷 Tracking Issue (optional)

This appears to be for React Spectrum v2. This repo is v3, please refer internally for information on v2. Toast v3 docs can be found here: https://react-spectrum.adobe.com/react-spectrum/Toast.html


Mixins crash in Forge version 1.18.2

Minecraft: 1.18.2
Forge: 40.2.10
Mod Version: feytweaks-1.18.2-1.2.6
crash-2023-09-08_23.23.30-client.txt
Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Variable modifier method getOutlineRenderJ(I)I in feytweaks.mixins.json:TextRendererMixin failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap feytweaks.refmap.json
at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:468) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1362) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1051) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:400) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:325) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:383) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:365) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}
... 29 more

Mixins crash = mod incompatibility.  Therefore, you should check which mod from your mod list somehow changes text rendering, turn it off and try to start the game.  If in this case the game starts normally, there are no crashes, then it is incompatible with this mod and you should write its name in the issue.

The mod is Modern UI in the latest version. Thanks

The mod you specified rewrites/changes the rendering of text on signs, so it cannot be compatible with FeyTweaks.
The only thing I can recommend to you is Immediately Fast (https://modrinth.com/mod/immediatelyfast). Not sure if it will be compatible with Modern UI, but you should try it.


Galley ignores logging arguments from the command line

Describe the bug
The Galley service doesn't properly handle logging options that are passed to it on the command line. If the deployment is modified to include --log_output_level=default:debug the option is not applied to the Server and Validation go routines when Galley starts. Instead these go routines are always passed the DefaultArgs struct.
galley/cmd/galley/cmd/root.go: 49-50 is where the default arguments are retrieved
galley/cmd/galley/cmd/root.go: 91,94 is where they are passed to the go routines without applying the command line arguments
Expected behavior
The process should propagate the logging options to the go routines server.RunServer and validation.RunValidation
Steps to reproduce the bug

Deploy Istio with Galley
Edit the deployment to include --log_output_level=default:debug command line argument
Look at the logs from the Galley pod and see that the logging options being used are still the default values

Version
I am testing this on 1.1.0-snapshot.1
Installation

git checkout 1.1.0-snapshot.1
run install/updateVersion.sh
kubectl apply -f install/kubernetes/istio-auth.yaml

I tested and it works for me.

Interesting.. can you post the commands section of your deployment yaml and the log output showing the settings being used? You tested it on the 1.1.0 snapshot?
Begs the question of whether I am misinterpreting the code, which I thought showed why it was not being applied.

      containers:
      - command:
        - /usr/local/bin/galley
        - --caCertFile=/etc/istio/certs/root-cert.pem
        - --tlsCertFile=/etc/istio/certs/cert-chain.pem
        - --tlsKeyFile=/etc/istio/certs/key.pem
        - --livenessProbeInterval=1s
        - --livenessProbePath=/healthliveness
        - --readinessProbePath=/healthready
        - --readinessProbeInterval=1s
        - --insecure=false
        - --validation-webhook-config-file
        - /etc/istio/config/validatingwebhookconfiguration.yaml

Galley started with
KubeConfig:
ResyncPeriod: 0s
APIAddress: tcp://<IP_ADDRESS>:9901
EnableGrpcTracing: tcp://<IP_ADDRESS>:9901
MaxReceivedMessageSize: 1048576
MaxConcurrentStreams: 1024
LoggingOptions: log.Options{OutputPaths:[]string{"stdout"}, ErrorOutputPaths:[]string{"stderr"}, RotateOutputPath:"", RotationMaxSize:104857600, RotationMaxAge:30, RotationMaxBackups:1000, JSONEncoding:false, LogGrpc:true, outputLevels:"default:info", logCallers:"", stackTraceLevels:"default:none"}

  containers:
  - command:
    - /usr/local/bin/galley
    - --caCertFile=/etc/istio/certs/root-cert.pem
    - --tlsCertFile=/etc/istio/certs/cert-chain.pem
    - --tlsKeyFile=/etc/istio/certs/key.pem
    - --livenessProbeInterval=1s
    - --livenessProbePath=/healthliveness
    - --readinessProbePath=/healthready
    - --readinessProbeInterval=1s
    - --insecure=true
    - --log_output_level=default:debug
    - --validation-webhook-config-file
    - /etc/istio/config/validatingwebhookconfiguration.yaml
    image: gcr.io/istio-release/galley:1.1.0.snapshot.1

logs:
root@szvp000201060:/mnt/go/src/istio.io/istio# kubectl logs istio-galley-78b4fb7867-mk22n  -n istio-system
Galley started with
KubeConfig:
ResyncPeriod: 0s
APIAddress: tcp://<IP_ADDRESS>:9901
EnableGrpcTracing: tcp://<IP_ADDRESS>:9901
MaxReceivedMessageSize: 1048576
MaxConcurrentStreams: 1024
LoggingOptions: log.Options{OutputPaths:[]string{"stdout"}, ErrorOutputPaths:[]string{"stderr"}, RotateOutputPath:"", RotationMaxSize:104857600, RotationMaxAge:30, RotationMaxBackups:1000, JSONEncoding:false, LogGrpc:true, outputLevels:"default:info", logCallers:"", stackTraceLevels:"default:none"}
IntrospectionOptions: ctrlz.Options{Port:0x2694, Address:"<IP_ADDRESS>"}
Insecure: true
AccessListFile: /etc/istio/config/accesslist.yaml
EnableServer: true
KeyFile: /etc/istio/certs/key.pem
CertificateFile: /etc/istio/certs/cert-chain.pem
CACertificateFile: /etc/istio/certs/root-cert.pem
ConfigFilePath:

2018-10-11T01:55:42.966967Z	warn	Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2018-10-11T01:55:42.966852Z	debug	registering [0] (adapter.InfoFn)(0xfa33e0)

Oh, I know what you mean now. The LoggingOptions does not match the input flags.

Yep yep. Adding:
serverArgs.LoggingOptions = loggingOptions
after galley/cmd/galley/cmd/root.go:74 propagates the settings to the server go routine.
Galley started with
KubeConfig:
ResyncPeriod: 0s
APIAddress: tcp://<IP_ADDRESS>:9901
EnableGrpcTracing: tcp://<IP_ADDRESS>:9901
MaxReceivedMessageSize: 1048576
MaxConcurrentStreams: 1024
LoggingOptions: log.Options{OutputPaths:[]string{"stdout"}, ErrorOutputPaths:[]string{"stderr"}, R
otateOutputPath:"", RotationMaxSize:104857600, RotationMaxAge:30, RotationMaxBackups:1000, JSONEnc
oding:false, LogGrpc:true, outputLevels:"default:debug", logCallers:"", stackTraceLevels:"default:
none"}

But another concern  we should only call  log.Configure once

// Configure initializes Istio's logging subsystem.
//
// You typically call this once at process startup.
// Once this call returns, the logging system is ready to accept data.

So @hatmatter Can you remove the LoggingOptions from server.Args?

Or we can remove the first call in PersistentPreRunE

It looks like removing the call in PersistentPreRunE will make it consistent with how the other apps are written.

sgtm

#9298

fixed by https://github.com/istio/istio/pull/9298


anchor with new edtr.io plugin jumps a little bit too far

example: Serlo Profile
(anchor is set before the headings)
(@Knorrke said it's only a serlo issue, was fixed with CSS in old editor)

Duplicate of #389


Update package.json node engines to latest LTS version (node 18)

Tools that autodetect node versions (like nixpacks on @flightcontrolhq) use the package.json field to choose which node version to use. Node 14 is very old and npm install fails with it.
This updates engines field to use v18 which is the current node LTS version.

now that's service :) Thank you - we're doing a hosting roundup and I thought I'd take a lookski

@wesbos sweet! Fyi, we're currently working on all new branding, marketing site & dashboard UI/UX. Right now it's rough on the design front, but within a month or so it'll be one of the best dashboards in the industry :)


Theme compatibility

Hi, I'm using this plugin on a site which uses the MDL theme. I've created some partials to adapt those of RainLab.User but it looks like events aren't handled anymore.
Here's an example with the custom signin.htm:
<form data-request="onSignin">

        <input class="mdl-textfield__input" type="text" id="signin-login" required>
        Pseudo...

        <input class="mdl-textfield__input" type="password" id="signin-password" required>
        Mot de passe...

    <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" type="submit">Connexion</button>
</form>

And here's where it is used:
{% if not user %}

Se connecter

    {% partial "mdl/user-signin" %}

Tu veux t'inscrire ?

    {% partial "mdl/user-register" %}
{% else %}
    {% partial "mdl/user-activation_check" %}
    {% partial "mdl/user-update" %}
    {% partial account ~ '::deactivate_link' %}
{% endif %}

How can I get events back ? Or is there any other way to make it compatible ?

Solved! There were two reasons why it didn't work:

The layout wasn't using the AJAX Framework.
Partials didn't use any name attribute.


Update Commander

commander is outdated, and it is core of functionality, so we need to update it
https://github.com/tj/commander.js/blob/master/CHANGELOG.md#migration-tips

Decided to use oclif framework, so Commander will not be needed anymore.


Allow to use a custom key to split items

Codecov Report

Merging #1 into master will increase coverage by 2.19%.

@@            Coverage Diff             @@
##           master       #1      +/-   ##
==========================================
+ Coverage   89.47%   91.66%   +2.19%
==========================================
  Files           2        2
  Lines          19       24       +5
  Branches        4        5       +1
==========================================
+ Hits           17       22       +5
  Misses          1        1
  Partials        1        1

Impacted Files
Coverage Δ

scrapy_splitvariants/middleware.py
90.9% <100%> (+2.67%)
:white_check_mark:

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 267463f...0da5a90. Read the comment docs.


Howto? / Feature Request  searchMusicLibrary for specific album

Description
I'm trying to create an RFID tag based system for playing my ripped CD's via my SONOS system.
So what I am trying to do is query the Music Library so that based on ArtistName, AlbumName and number of tracks I can then replace the queue with the album's tracks and start it playing.
I can't get my head around how to do this with the new nodes ( or the old nodes, but I'm sticking with just the non depreciated ones).   Is this possible?
What node/command (topic)/state (payload)?
node: My Sonos
command: ???
state: ????
In case of a bug: Are you able to reproduce the error?
Not a bug
Versions and Infrastructure
what system: Raspberry Pi
node-red-contrib-sonos-plus version: 4.1.4 - new nodes only :-)
Node-RED version:  1.1.3
NodeJS version:  v10.21.0
Many thanks!
ukmoose

Hi. Right now you are able to query all playlists (node mysonos, library.query.playlist).
You can play any song with node Universal, group.play.uri and topic - example: x-file-cifs://nas2019/Multimedia/Music/MyMusic/Rihanna/Diamonds/Rihanna%20-%20Diamonds.mp3
Does that help - or do you need a library.query.album or library.queue.album?

I don't appear to have (node mysonos, library.query.playlist).
If I send a mysonos node  library.query.playlist I see the following error:
"library.query.playlist: command is invalid >>library.query.playlist :: Details: none"
The library options I can see in mysonos are:
'library.export.playlist': libraryExportPlaylist,
'library.get.playlists': libraryGetPlaylists,
'library.queue.playlist': libraryQueuePlaylist,
But I'm guessing that would be quite messy, as library.get.playlists appears to only return the playlist list not the full music library as an option.
The workflow I was imagining was to use the metadata encoded on the RFID tag to form the query for:
library.query.album to query the albums in the Music Library followed by  library.queue.album to queue the specific album.
Or to use  library.query.album to write the album UID to the RFID tag and then  on reading the tag use library.queue.album  to queue.
Thanks for your support and knowledge.

Hi. Do I understand it right?
a) get information about an album from the RFID tag:
b) browse your music library and "select" that album
c) insert into your and play all titels.
What info do you get in a)?
In my Music library there is a Beatle album named "1967 - 1970 (Blue Alb)" and that is stored in directory
\\nas2019\MultiMedia\Music\MyMusic\Beatles\1967-1970 (Blue Alb) (Rm)
When using the SONOS app I am able to

select that Album with Browse / Album / and then selecting that.
add that album to My Sonos with the hamburger menu at the top right of the screen
It then shows up at the SONOS app in My Sonos under Album.

I can then use the following flow to play the album (i guess the same way as you would like to do):
[{"id":"abc6b0e0.81358","type":"inject","z":"55805384.a4695c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1967","payloadType":"str","x":130,"y":504,"wires":[["8ec4029b.5ccec"]]},{"id":"8ec4029b.5ccec","type":"sonos-manage-mysonos","z":"55805384.a4695c","confignode":"88e9fa70.4a53e8","compatibilityMode":false,"command":"mysonos.export.item","name":"","x":340,"y":504,"wires":[["31d2512a.16a7de","1328ec43.44a934"]]},{"id":"31d2512a.16a7de","type":"sonos-universal","z":"55805384.a4695c","confignode":"88e9fa70.4a53e8","compatibilityMode":false,"command":"group.play.export","state":"","stateType":"str","name":"","x":570,"y":504,"wires":[[]]},{"id":"1328ec43.44a934","type":"debug","z":"55805384.a4695c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":530,"y":460,"wires":[]},{"id":"88e9fa70.4a53e8","type":"sonos-config","z":"","name":"coordinator","serialnum":"5C-AA-FD-00-22-36:1","ipaddress":"<IP_ADDRESS>"}]
The debug node shows you an example of the input required for group.play.export
You can also do it direct without the metadata.
[{"id":"db68e1fc.f9196","type":"sonos-universal","z":"55805384.a4695c","confignode":"88e9fa70.4a53e8","compatibilityMode":false,"command":"group.play.export","state":"","stateType":"str","name":"","x":330,"y":600,"wires":[[]]},{"id":"3470c96b.94f0b6","type":"inject","z":"55805384.a4695c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"uri\":\"x-rincon-playlist:RINCON_949F3EC13B9901400#A:ALBUM/1967-1970%20(Blue%20Alb)%20(Rm)\",\"queue\":true}","payloadType":"json","x":130,"y":600,"wires":[["db68e1fc.f9196"]]},{"id":"88e9fa70.4a53e8","type":"sonos-config","z":"","name":"coordinator","serialnum":"5C-AA-FD-00-22-36:1","ipaddress":"<IP_ADDRESS>"}]

So what is my message:
Are you able to transform your "meta data from the RFID tag" to my uri-data for the input of the group.play.export?

There is a way to search for Album in the Sonos api - even for tracks and composer. Maybe thats what you need. I can make that available in the next release.
So you can have special characters (/%&#@") in your album title?

To answer your question from 5 days ago (life got in the way this week!), I am programming the RFID's, so what information the RFID tag contains is up to me.
My current thoughts are artist/album name (inc spaces) and potentially RINCON id.
But the trouble is I have 700 CD's (already all ripped and added to iTunes and then the Music Library) so I don't really want to have to add each of them to "My Sonos" tab and without doing that your suggested flow doesn't find the album.
So yes please, a way of searching for the album name in the Music Library would allow me to create a flow that I can use to recreate the  x-rincon-playlist uri to play the CD in question.
(I already have some RFID cards that I can use to group/ungroup SONOS speakers and to play our favourite Radio stations)
And yes unfortunately some of the CD album names do contain special characters ;-(

... should be available Thursday, Friday - will let you know when published.

Hi. 4.3.0 is now available.
In My Sonos, library.export.album with a searchstring in payload shoud find an album in your library. The first match is returned.
Special characters such as  -, . / & () should work.
Does it work for you?

Thanks I had time to test it today.   It works, however, as the Album name is not unique (eg I have 2 albums with the name "Help").  You can't get the details of the second album with the same name.
Any chance of returning all hits as an array of objects?
Then by passing the artist name in the incoming message I can filter the output  using JSONata in a change node after the node.

Hi. I prefer to keep the "single output" for export, as that is usually the input for the play command. As alternative you can use get.albums and specify a search string. Does it workf for your?
All documentation is now Wiki

Many Thanks!   Using msg.searchTitle with library.export.albums allows me to find the information I need.


Support for MATLAB geometries?

Description
I hadn't considered this before but will the shape formats that RAVEN needs to support include geometry files encoded in the .mat format? I'm not at all familiar with MATLAB data files and I can't seem to find any documented support for handling .mat inputs. Is this a requisite feature?

No.


Add A cli version

You did an amazing job.
But most people wants a cli version to quickly get started and play around.
Here it is.
Cheers.

I will say, I would rather keep the implementations cleaner for learning purposes. This is one of the easiest to grasp and understand repo on how to fine tune a project, and is a great learning example.
If anything, it should be split into 3 files. tuner.py which has the functions and extras that are the core. web.py which has the webserver code and calls tuner.py functions. and cli.py for handling cli args, and calls tuner.py.
Obviously as the author you can choose what you want, but for those coming to your repo as one of the few easy examples of fine tuning, it might be better to keep things cleanly laid out instead of lumped into 1 file.

If it's possible to add a separate file that can be invoked to do CLI training, i would love that.  I am currently attempting to run training via CLI; I will have a look at this branch.


Fix update-checkout --dump-hashes and add update-checkout --dump-hashes-config

Minor fix to stop erroneous exit from ./utils/update-checkout --dump-hashes.
Also adds update-checkout --dump-hashes-config. Which outputs JSON config, that can later be used with update-checkout  --config

@gmilos Just an FYI, we want to eventually drop the branch argument. The bots have just not been updated.

Actually, I am going to just fix that now.

#6793

I committed the change, so feel free to continue!

@gottesmm, your PR isn't conflicting with my in any way AFAICS. Appreciate the heads up though.

@gottesmm Any chance you could kick off the tests as well? I don't have the rights to do it. Thanks.

@swift-ci Please smoke test and merge

I'll do one better and get it to merge ; )

@gottesmm much appreciated!


Step 1: Enable password hash synchronization

Hello,
About this step "Step 1: Enable password hash synchronization",
In the updated AD Connect version, the screen is different and more questions and warning are shown, please update the document, step, and warning explanation asap.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 57bc474a-a353-984d-3440-144c3444b100
Version Independent ID: 20ec9d72-24f7-ec32-4c68-f36a5d7968ab
Content: Azure AD Connect: Migrate from federation to PHS for Azure AD
Content Source: articles/active-directory/hybrid/plan-migrate-adfs-password-hash-sync.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

sorry, wrong page :)

@lightupdifire Glad to know that you have self resolved and hence closed the issue. Thanks for the update.


[Phase 2 - Tools] dart2js support for Static Extension Methods

If the feature is handled by the front end, there may be no dart2js work. Otherwise, dart2js may need to handle any Kernel changes or otherwise add support for this.

There is almost no dart2js work, except for massaging the names before emitting source-maps so that stack traces are nicer to read. This is desirable, but not a launch blocker.

names in stack traces are now fixed - we believe there is no other action item in dart2js for this feature beyond testing that the CFE lowering is working properly.

Anything left here for D26?

Don't think so. The only thing is to have validation that there are no dart2js specific test failures. We are not aware of any at this time, but it would be good to validating.
Rather than duplicating this work across teams (since very often failures are common due to CFE or test issues), can we coordinate how we triage the remaining failures?


map_blocks can't detect block_id keyword in func(*args, block_id=None)

Test:
import dask.array as da

def f0(xs, ys, block_id=None):
    print(block_id)
    return xs

def f1(*xs, block_id=None):  # <-- can't do this in python 2.
    print(block_id)
    return xs[0]

a = da.ones((2, 2), chunks=1)
b = 1
r0 = da.map_blocks(f0, a, b, dtype=a.dtype, chunks=a.chunks)
r1 = da.map_blocks(f1, a, b, dtype=a.dtype, chunks=a.chunks)
print("--- result 0 ---")
r0.compute()
print("--- result 1 ---")
r1.compute()

Result:
--- result 0 ---
(0, 0)
(1, 0)
(1, 1)
(0, 1)
--- result 1 ---
None
None
None
None

Software Versions:
Python 3.6.3
Dask 0.16.1

This PR might be of help.
https://github.com/dask/dask/pull/3966


need to press on pencil after adding empty CollisonPolygon2D node

Operating system or device - Godot version:
Window 7, v2.1.3.stable.official
Issue description:
usability improvement

I expect when adding a empty CollisonPolygon2D node the pencil should be automatically selected.

This was actually done in fbda0cc45c2f50b9b30175c4f2398b8a73d7bf4a. I think it can be closed.


Expose uicollectionview

Allows access to the collectionView, so that you may call -reloadData if necessary.

+1

+1 Why do you need the collection view just out of curiosity.


Console: command line switches for direct execution

From @jeenbroekstra on August 8, 2018 17:2
For example to verify a file directly from the command line.
Alternatively we could keep the console itself focused on being an interactive CLI, and add some additional tools to the bin dir that are specifically for executing directly from the command line / in scripts.
Follow up of eclipse/rdf4j#1066
Copied from original issue: eclipse/rdf4j-tools#70

Very interested in this. My use case : execute in a single command a SPARQL query against an RDF file or set of RDF files without the need to load them in a repo, and output the result in another CSV/RDF file (something close to https://jena.apache.org/documentation/tools/index.html)

In Unix-like environments you can create a "script" by  creating a text file that contains the sequence of commands you would normally give to do this (including all interactive prompts on things like repo creation).
For example, this sequence of commands creates a non-persistent in-memory store, loads a file, does a query and spits the result out to csv, then drops the temp store and quits:
create memory.
temp-repo
temporary store for quick execution of query

false

open temp-repo.
load /path/to/my/file.ttl.
sparql OUTFILE="/path/to/my/result.csv" select * where { ?s ?p ?o } .
close.
drop temp-repo.
yes.
quit.

(notice the empty lines, those are important: they are acceptance of default values for certain config params)
To execute this script, you can do this:
$ cat command-sequence.txt | ./console.sh

Command line switches for this kind of thing would be more convenient, but it's a decent workaround I think.

It's a workaround, yes, but I can't train people to do that for a
"do-sparql-without-a-triplestore-on-windows" scenario, for which a lower
entry barrier is required.
Le ven. 22 mars 2019 à 23:57, Jeen Broekstra<EMAIL_ADDRESS>a
écrit :

In Unix-like environments you can create a "script" by creating a text
file that contains the sequence of commands you would normally give to do
this (including all interactive prompts on things like repo creation).
For example, this sequence of commands creates a non-persistent in-memory
store, loads a file, does a query and spits the result out to csv, then
drops the temp store and quits:
create memory.
temp-repo
temporary store for quick execution of query
false
open temp-repo.
load /path/to/my/file.ttl.
sparql OUTFILE="/path/to/my/result.csv" select * where { ?s ?p ?o } .
close.
drop temp-repo.
yes.
quit.
(notice the empty lines, those are important: they are acceptance of
default values for certain config params)
To execute this script, you can do this:
$ cat command-sequence.txt | ./console.sh
Command line switches for this kind of thing would be more convenient, but
it's a decent workaround I think.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/eclipse/rdf4j/issues/1104#issuecomment-475808996, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACmj8QvCsxc0vMnK3z1w5qpPIJRVhc7pks5vZV_mgaJpZM4XSbjx
.

--
Thomas Francart -* SPARNA*
Web de données | Architecture de l'information | Accès aux
connaissances
blog : blog.sparna.fr, site : sparna.fr, linkedin :
fr.linkedin.com/in/thomasfrancart
tel :  +33 (0)<IP_ADDRESS>.97, skype : francartthomas

It is a useful feature.
Another possibility (less powerful but perhaps easier to implement) would be to extend the sparql command in the console
sparql RDF=data.ttl
where data.ttl would be loaded into memory and removed after the result is written


Do not allow use of deprecated Conditions with custom tasks

Changes
Fixes #3592
During discussion of #3463 it was agreed to not support Conditions with custom tasks since they are deprecated.  This adds code to enforce that decision.
/kind feature
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[x] Includes tests (if functionality changed/added)
[x] Includes docs (if user facing)
[x] Commit messages follow commit message best practices
[x] Release notes block has been filled in or deleted (only if no user facing changes)

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.
Release Notes
Disallow use of Conditions in pipeline tasks that reference custom tasks

/lgtm
/meow


Homebrew!

(proposal)

I agree!  Give more stars and forks, and it'll happen!
(they require 20 of each, I believe, as a minimum notability bar before accepting a formula)

actual requirements:
❯ brew audit --new-formula gifcap
gifcap:
  * GitHub repository not notable enough (<20 forks, <20 watchers and <50 stars)
  * GitHub repository too new (<30 days old)
Error: 2 problems in 1 formula

Maybe go for a tap? https://github.com/Homebrew/brew/blob/master/docs/How-to-Create-and-Maintain-a-Tap.md

We just hit 50 stars, and now brew audit's only complaint is that this repo is too new, which will of course resolve itself in time.  I think we're good for getting into Homebrew proper, but maybe I'll see about a tap if there's time over the holidays.

\o/

The waiting period is over - PR for homebrew-core is open:
https://github.com/Homebrew/homebrew-core/pull/9133

Hooray!  We're in Homebrew, as of 21:30ish today.


#5562: add staticContent task

actually those commits are for #5662

It is a bad way to work with gradle. You have to use dependsOn instead of doLast wherever it is possible. Or else you will have problems with cleaning and possibly much longer build times.

thx for pointing that out: https://github.com/twosigma/beakerx/issues/5670


Teleport Requests

This should allow teleport requests from one agent to another to go through as defined in https://jira.secondlife.com/browse/STORM-1838 and supported by most viewers.
Fulfills http://bugs.inworldz.com/mantis/view.php?id=3282

This is safe, and I've tested it.  This change allows "Request Teleport" IM requests from viewer sessions to reach other viewer users.


KeyError while sorting duplicate imports

On this file:
from a import x
from b import y
from b import y
from c import x

usort fails with
Traceback (most recent call last):
  File "usort/cli.py", line 80, in list_imports
    blocks = sorter.sortable_blocks(mod.body)
  File "usort/sorting.py", line 192, in sortable_blocks
    current = self.split_inplace(current, overlap)
  File "usort/sorting.py", line 169, in split_inplace
    new.imported_names[key] = block.imported_names.pop(key)
KeyError: 'y'

The problem is that this code assumes that the newly split block doesn't have shadowing. This assumption isn't satisified by the logic here.
We either need to fix name_overlap() to provide this assumption or split_inplace() to not need it.


Add Logpush Jobs methods, it solves #274

Description
Thanks to that changes, client will be able to manage Logpush Jobs for zone.
This is my first contribution to this repository, this changes were done similar to the Page Rules client
Has your change been tested?
Yes, I've wrote unit tests
Types of changes
What sort of change does your code introduce/modify?

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

Checklist:

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

I'm not sure how to satisfy I have updated the documentation accordingly.  check, any hints?

@jacobbednarz thanks for review, changes applied

@jacobbednarz I've added other endpoints into client, can you review it please?

@garrettgalow Would you be able to have someone internally review and merge in place of Patryk?

Looks awesome, thank you for your first contribution, @SebastianCzoch!


Does gherkin-testcafe support the world concept that comes as standard from cucumberjs?

Hi there,
I checked out the sample project and did one or two tests. I noticed the following

I tried to implement my own world constructor (looks like it doesn't get called)

const {setWorldConstructor} = require('cucumber');

class World {

    constructor() {
        console.log("World constructor called!!!");
    }

    testFunction() {
        console.log("calling this testFunction");
    }

}

setWorldConstructor(World);

Also step definitions don't appear to run within the world context...(step definitions been before hook, steps and after hook implementations)...which is typically how a cucumber type framework works.

Is their intention to support the world object (as this is a class used to store a-lot of utility stuff throughout the runtime of a test scenario). Thoughts?

Hey @bhreinb,
we do not plan to support the cucumber style world concept. With this package, we just glued the cucumber methods to the Testcafé test executor. All concepts like the world class use the Testcafé style. They use something they call context.
I hope, that this is sufficient for your use case since it would be very hard to emulate with this package and is therefore not planned to be implemented.


Docs for all packages are 404ing

https://pub.dartlang.org/documentation/test_descriptor/1.0.3/
https://pub.dartlang.org/documentation/test_descriptor/1.0.3/index.html
https://pub.dartlang.org/documentation/test_descriptor/1.0.3
https://pub.dartlang.org/documentation/test_descriptor/latest redirects to https://pub.dartlang.org/documentation/test_descriptor/1.0.3/

https://pub.dartlang.org/documentation/path/1.5.1/ too.
I swear I've seen this before, and then seems to resolve itself.  Do we have monitoring set up to detect when this happens?

...we should!
On Mon, Apr 9, 2018 at 10:13 AM Todd Volkert<EMAIL_ADDRESS>wrote:

https://pub.dartlang.org/documentation/path/1.5.1/ too.
I swear I've seen this before, and then seems to resolve itself. Do we
have monitoring set up to detect when this happens?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dart-lang/pub-dartlang-dart/issues/1181#issuecomment-379826044,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABCioLfNqiy193pqi6iK230NSjDGaBeks5tm5a-gaJpZM4TM1a0
.

I believe I know why this is happening: we have an ongoing deploy, which started to re-generate dartdocs for packages, and when one is ready, it cleans up the older versions from the storage bucket. The old dartdoc service is still active, and it is configured to not serve versions that are newer (for the reason to have a controlled upgrade).
@kevmoo @jakobr-google: for a quick fix, we shall migrate traffic to the new dartdoc service version right away, and I'll patch the old-version-cleanup logic for the next release.

Fixed w/ latest deployment...


How to emit type annotation

If I have a typescript file like this:
import {Http} from 'http/http';
import {Component} from 'angular2/angular2';

export class Test {
    constructor(http:Http) {
        console.log(http);
    }
}

and I compile it like this tsc -m commonjs -t es5 --emitDecoratorMetadata --experimentalDecorators test.ts
I would expect it to output the type annotation for the Http parameter. Angular2 would then be able to use that information to figure out how to inject http. However tsc is just outputting this
var Test = (function () {
    function Test(http) {
        console.log(http);
    }
    return Test;
})();
exports.Test = Test;

I noticied that If I add an annotation (decorator?) to my class then I get the type annotations in the output. e.g. if I compile this:
import {Http} from 'http/http';
import {Component} from 'angular2/angular2';

@Component({})
export class Test {
    constructor(http:Http) {
        console.log(http);
    }
}

I get
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
    switch (arguments.length) {
        case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
        case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);
        case 4: return decorators.reduceRight(function(o, d) { return (d && d(target, key, o)) || o; }, desc);
    }
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var http_1 = require('http/http');
var angular2_1 = require('angular2/angular2');
var Test = (function () {
    function Test(http) {
        console.log(http);
    }
    Test = __decorate([
        angular2_1.Component({}),
        __metadata('design:paramtypes', [(typeof (_a = typeof http_1.Http !== 'undefined' && http_1.Http) === 'function' && _a) || Object])
    ], Test);
    return Test;
    var _a;
})();
exports.Test = Test;

and I'm guessing this line adds the type annotation at runtime
 __metadata('design:paramtypes', [(typeof (_a = typeof http_1.Http !== 'undefined' && http_1.Http) === 'function' && _a) || Object])

Am I doing something wrong? How do I get type annotations at runtime without adding a class annotation?

as the flag name suggests emitDecoratorMetadata the metadata is only emitted for "decorated" entities (classes, methods, properties and parameters).
The rational is emitting all metadata for all types in your program will generate a huge amount of unused type information, where as for decorated declarations, we know we have an audience there (decorator function) that would consume the emitted type information.

oh ok thanks for the info. Not sure what the best practices are for injecting a service into another service in Angular2 using type annotations but I'll ask over there

Reopening this as a feature request. It would be great if there was a way to opt into always emitting type annotation metadata. e.g. @robwormald suggested adding a --alwaysEmitDecoratorMetadata option here https://github.com/angular/angular/issues/4120
This is causing a great deal of confusion amongst angular2 users (https://github.com/angular/angular/issues/2788) and adding a random decorator to every class is not a very elegant solution.
This wouldn't just be useful for angular2 users. e.g. if you wanted to include something like Assert.js to get runtime type assertions it would be really useful to have TypeScript output the required metadata everywhere.
I'm currently doing this in all of my classes but this is obviously not a great solution.
var OutputTypes = () => () => {};

@OutputTypes()
export class MyClass {
    constructor(private http:Http) {

    }
}

types are available for classes, methods, properties and parameters. if we emit these for all declarations in your code, this will generate a huge amount of calls to __metadata and that will have a noticeable impact on your application runtime.
for runtime type assertion purposes, this looks like a unittest scenario, and that seems reasonable to mark them with some decorators to declare the need for meta data.

Y'know, we say it has runtime impact... And it does... But closurescript retains runtime type information, and it enables some interesting patterns. We have the capability to emit the information if consumers desire it, and @robianmcd is right, putting a noop decorator on everything to coax runtime type emit is cumbersome. Unlike closurescript, TS isn't packaged with a stdlib that uses runtime polymorphism, so we dont inherrently feel compelled to emit the information by default, but the capability to do so is there... Maybe we aught to make it more frictionless to do so?

@robian's use case (like mine) is dependency injection in Angular2, rather than test time assertions. Potentially TS could leverage the Reflect API for this sort of thing, which might save a bit of cruft.

On Sep 13, 2015, at 11:34 PM, Wesley Wigham<EMAIL_ADDRESS>wrote:
Y'know, we say it has runtime impact... And it does... But closurescript retains runtime type information, and it enables some interesting patterns. We have the capability to emit the information if consumers desire it, and @robianmcd is right, putting a noop decorator on everything to coax runtime type emit is cumbersome. Unlike closurescript, TS isn't packaged with a stdlib that uses runtime polymorphism, so we dont inherrently feel compelled to emit the information by default, but the capability to do so is there... Maybe we aught to make it more frictionless to do so?
—
Reply to this email directly or view it on GitHub.

The decorator emit does use the reflect API.  __metadata desuagars to a call to Reflect.metadata if present.

Welllll then ignore my silly previous comment and simply accept my agreement with your last!

On Sep 13, 2015, at 11:48 PM, Wesley Wigham<EMAIL_ADDRESS>wrote:
The decorator emit does use the reflect API. __metadata desuagars to a call to Reflect.metadata if present.
—
Reply to this email directly or view it on GitHub.

How big of a performance impact would this have? Any Angular 2 app using Types for DI will need to output the types on every class so the way I see it, either the performance impact will be too big and the idea of using types for DI should be abandoned or there should be an easy way to get runtime types on all classes.

I just thought of something I might have misunderstood. When you add a class decorator will TypeScript output type information for all the types in the class or only the types on the parameters of the constructor function? I've been assuming it would output types for all the types in the class but if it is only for the constructor function then I get how this will cut down on unnecessary metatdata.

the compiler only emits types for decorated entities.
if you decorate a class, the class constructor parameter types are emitted.
if you decorate a method, its parameter types and return type will be emitted.
if you decorate a property, its type will be emitted.
if you decorate a parameter of a method/constructor its type will be emitted.

ok thanks for clearing that up. I understand the reasoning behind this now. It would still be nice if there was an easier way fulfill the DI use case. e.g. something like a --emitClassMetadata or --emitConstructorMetadata flag. Maybe that would be too specific to the Angular 2 DI use case though...

OTOH, you also don't want to have metadata generated for every class in your code, even in Angular 2 apps. Sometimes you just do class Car { } and new Car(), bypassing A2 DI.
This again gives me the feeling that an explicit decorator (that unfortunately doesn't du anything) is currently the best way to deal with that. People just have to understand why it is.

@PascalPrecht I doubt that more than 20% of the classes in an angular 2 project wouldn't need DI. I can't imagine emitting metadata about their constructor parameters could cause a performance bottle neck. So I don't really see the value in having the ability to specify which classes emit metadata about their constructors. Seems like it just adds extra work for the user without any benefit. Either I'm going to be working on a project that doesn't make any use of the metadata or I'll be working on a project where I want it to be output and it might as well be for all classes. And to clarify I'm just talking about the metadata for constructor parameters.

I'm hesitant to bring this up all over again, but I need to share an idea.
We've seen some really cool new features of the TypeScript type system, like the never type, the this type, index types with the keyof keyword etc.
All of these are necessary to describe the dynamic nature of JavaScript in all its flawed glory. This whole discussion is because we need to generate a lot of code if we don't have a proof that the type emissions will be interesting (i.e. @decorators).
It seems to me that there has to be a way to solve this by extending the type system even more:
class A {}
class B {}

function x(target: reflective typeof A): void { // Okay, A is reflective
    const dependencies = Reflect.getMetadata('design:paramtypes', target);
    console.log(dependencies);
}

var A = (function () {
    function A() {
    }
    A = __decorate([
        __metadata('design:paramtypes', [])
    ], A);
    return A;
})();
var B = (function () {
    function B() {
    }
    return B;
})();

function x(target) {
    const dependencies = Reflect.getMetadata('design:paramtypes', target);
    console.log(dependencies);
}

class A {}
class B {}

function x<T>(target: reflective T): void { ... } // Okay, T is reflective

x(new B()); // Okay, B is T, which is reflective --> B is reflective

var A = (function () {
    function A() {
    }
    return A;
})();
var B = (function () {
    function B() {
    }
    B = __decorate([
        __metadata('design:paramtypes', [])
    ], B);
    return B;
})();

function x(target) { ... }

interface I {}
class A {
  constructor(i: I) {}
}

function x<T>(target: reflective typeof T): void { ... } // Okay, T is reflective

class B {} // implements I <-- opitional with structural subtyping

x<I>(B); // Okay, I is T, which is reflective. I is reflective. B is I, which is reflective. B is reflective.

const I = Symbol('I'); // Maybe even go so far as to generate JS for reflective types
var A = (function () {
    function A() {
    }
    return A;
})();

function x(target) { ... }

var B = (function () {
    function B() {
    }
    B = __decorate([
        __metadata('design:paramtypes', []),
        __metadata('design:implements', [I]) // We know B is used structurally as I. We may also choose to only emit metadata for nominal subtypes
    ], B);
    return B;
})();

x(B);

There are probably a lot of hidden issues here that need to be resolved. One might be that the JS may already be generated, and being typed with some .d.ts. In that we would have to make the decorations after the fact, perhaps closer to the call site where a type is actually being used reflectively. This may be really uncomfortable and hard, but it might work.
As long as the type system keeps track of what types are ever used in a reflective context, I believe this is possible. Maybe the compiler can complain if a reflective T is passed an any.
The best part is—consumers won't even have to use or even understand the reflective keyword.
I don't know. I realize this is really stretching the limits of what TS should be doing, but it's worth discussing I think.


Only install typing dependency on Python<3.5

Installing typing on recent Python versions leads to the error described in python/typing#573 (running tests with tox yields AttributeError: type object 'Callable' has no attribute '_abc_registry').
The typing readme suggests to install the package only for Python versions <3.5, which this commit does.

Thanks @AdrianoKF !
I can't remember I witnessed any issue with typing in python >= 3.6 ...
Is this a bug in a specific typing version ?
(Not objecting to the PR, just trying to better understand the root cause)

Thanks for your quick response, @bmartinn!
Unfortunately, I don't know the exact root cause - and afaict none was given from the upstream issue python/typing#573. It seems that the Python-bundled version of typing (available since Python 3.6) seems to clash with the pip-installed version in some edge cases, leading to the AttributeError I mentioned. I was trying to reproduce the issue with a colleague, who didn't see it on his machine, but I was consistently unable to run tox in our project which includes trains on a CI build on the Docker python:3.8-buster base image, which is about as vanilla as it gets :)
If you'd like, we can try and reduce our issue down to a minimal reproducible example, but given that the typing library itself explicitly mentions that installing the on Python > 3.5 has no effect (or even a detrimental one, as evidenced by the issue), the change is probable a sensible one.

Hi @AdrianoKF,
From what I can see this is indeed the best practice, and shouldn't change the current behavior from Trains' point of view :slightly_smiling_face:
Thanks for this contribution :+1:


Icons pack breaks the app

After the latest update(<IP_ADDRESS>), when i start the app, it freezes and crash.
After clearing the data of the app, it started just fine, and before setting up a location i changed the icon pack and it solved the problem
The broken icon pack:⬇

@t0xicP0w3r really sorry about that. Will try to fix right away!
thanks for reporting

@t0xicP0w3r i tried to reproduce the issue:
when i open the app i see a black page with no data. If i pull to refresh the weather did update and the app was working correctly. So i need a bit more details if possible:

what provider were you using?
if possible what location?

@t0xicP0w3r yes you record your screen using apps on fdroid like https://f-droid.org/packages/com.orpheusdroid.screenrecorder/

@t0xicP0w3r awesome i just managed to reproduce it! on it!
Thanks for the great report

@t0xicP0w3r the new release is up which should fix this.


Contribution Blog Post

Here's the blog post for my contribution!

Looks good! Were you planning to include some images in your post? While doing so would lose you 1 of 2  on-time points for not having this PR merged by the due date, you could get up to 2 additional points on the "appropriate use of screenshots" section of the rubric (linked in the syllabus as "blog directions" in case that helps make it easier to search for).

added a few images to it to show some of what I did plus what the end product looks like.

there's that


Validation: Corrected invalid author, alt-text, and code-block-indent

Corrected invalid author, alt-text, and code-block-indent

@Rick-Anderson
The Content & Learning team is fixing build validation errors on docs.microsoft.com for the rest of H2. This will eliminate potential accessibility, security, and usability issues. This PR includes only build validation fixes and does not change other content. Please review within five business days and merge or comment in the PR with any changes you’d like to see. Thank you!