Support for thumbnail scrubbing in 1.3.0 ?

Hi
Release note for 1.3.0-beta01 suggests that there are support for DASH thumbnails.
Image:
Add support for DASH thumbnails. Grid images are cropped and individual thumbnails are provided to ImageOutput close to their presentation times.

Have I understood it correctly that you set an ImageOutput using exoplayer.setImageOutput(ImageOutput imageOutput) and that I would get callbacks to onImageAvailable(long presentationTimeUs, Bitmap bitmap) during playback?
I tried this but I do not get any callbacks and from what I could tell the ImageRenderer is not enabled.  I probably have done something wrong in my setup. Do I need to do some track selection in our application to enable it? Do you have any sample code on how to do this?

@sobbe81
Thank you for posting your question! Yes, 1.3.0 provided support for DASH thumbnails. If you provide an ImageOutput class then you should get callbacks to onImageAvailable during playback.
It would help if you provided the example content you are trying to play. However, if I am to guess, perhaps the media content you are trying to play has a video track as well? ExoPlayer currently will not select both a video and image track at the same time. If you want the player to select and play the image track over the video track, then you need to use the isPrioritizeImageOverVideoEnabled set through TrackSelectionParameters(https://github.com/androidx/media/blob/1.3.0-beta01/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java).

Hi,
Yes, you are correct. The content has both a video and an image track. The use case we are trying to solve is to support is to show a thumbnail in our custom player ui when scrubbing.
Sounds like a lot of underlying support is already implemented to support DASH thumbnails. How difficult would it be to expose an api that returns an image / url for a given time similar to Shaka player's getThumbnails(trackId, time)?

@sobbe81
Great! Then the TrackSelectionParameters#isPrioritizeImageOverVideoEnabled API should work for you.
Would you be able to elaborate on the expected callbacks or functionality you are expecting? I'm not sure how that is different to setting a thumbnail content url on the player and then seeking to the time that you want?

Hi,
If I set TrackSelectionParameters#isPrioritizeImageOverVideoEnabled I do get a callback to onImageAvailable(). However, as I think you pointed out earlier you will not get any video rendered instead.
What I'm looking for is a way to do this

So, I would like to be able to play the video and when the user moves the scrub head I would also like present a thumbnail image that corresponds to the position of the scrub head.
Basically, I would like to ask Exoplayer for an image (or potentially a url to an image) for a given time and then display that in my Player UI.
Even if onImageAvailable() would provide callbacks with the video playing it would not really help me since I would get callbacks for the playback position and not for the position of the scrub head.

Due to DRM/Encryption the screenshot displays a black image. In reality, the actual video is playing.

Potentially as a test, it's feels like a hack rather than a stable and maintainable solution.
Say that we would go with a specific player for the images. As I understand it, it's design to use to render an image that corresponds to the playback position. In my case, I would like to get an image for any given position. How would that player know for which timestamp  to emit a callback for?

Actually I would say it would be the preferred solution. If you had a single player playing both the video, audio for the main streaming and also the scrubbing thumbnails then how would you receive thumbnails from a timestamp different to the current playback position?
If you want to get an image for a given position then for the thumbnail image player you just seek to the position you want(ex: the timestamp the user is scrubbing over) and you'll get a callback for the position and image that you want.
If you are trying to play both the thumbnail player and playback player in sync, then just set the thumbnail player's clock to the playback player's and they should play in sync. There are a number of Github threads about multi-player syncing as well.

Ok, we'll give it a try.

Great! Hope that works for you. I'm going to close this issue. Please reopen or file a new post if you have any additional problems or questions.

@microkatz We are facing the same issue even in the non DRM videos. Only the Image Track is playing and Video Track is not visible. Would it be possible if there could be some more documentation or ideally a basic example in Kotlin for us to understand how to get this working ?

@microkatz We have tested creating two separate players now, one solely for handling the image track and one for video. It works to the extent that we can display thumbnails for the current position, but as soon as you scrub a bit faster it becomes inefficient and the images do not load in time. It feels like some sort of image prefetching would be nice here - but I can't think of a good way to do it with this setup. Do you have any thoughts on how to make image loading more efficient and smooth?

@hammar83 Is it possible to share the code ?

@prashantchothani This is basically what we have done now during testing, we created another ExoPlayer instance with setPrioritizeImageOverVideoEnabled set to true, something like this:
val thumbPlayer = ExoPlayer.Builder(context)             .setTrackSelector(                 DefaultTrackSelector(context).apply {                     setParameters(                         buildUponParameters()                             .setPrioritizeImageOverVideoEnabled(true)                             .build()                     )                 }             )             ...
And on the original player we have a scrub listener that, onScrub, make the thumbPlayer seek to a new position:
    override fun scrubTo(position: Long) {         thumbPlayer.seekTo(position)     }
And finally we set the image output listener to receive the loaded bitmap and display it on screen:
thumbPlayer.setImageOutput(imageOutput)

@hammar83 Is there no other way than creating another ExoPlayer instance ?

@prashantchothani It's according to @microkatz recommendation/suggestion above.

@hammar83 I think @microkatz is suggesting that if 2 player solution would work. But I guess this is not the right approach. Before media3 version 1.3 support for thumbnails, we were using as mentioned in this example : https://github.com/kaltura/kaltura-player-android-samples/tree/master/AdvancedSamples/MediaPreviewSample
Using 2 players is an overkill and not advised in my view. @microkatz can you please help with an example with a single exoplayer ?

But I guess this is not the right approach

I'm curious why you think it's not the right approach. Could you let us know what your main worry is?
Our motivation to recommend a second player is that showing thumbnails coming from a DASH manifest requires a lot of the same code paths as normal playback (media loading, manifest parsing, image extraction etc). Usually, you also want to enable the user to scrub independently of your main playback, so it's not easy to use the same player either because you'd have to present two tracks at two different positions. So our conclusion was that using a second player that only plays the thumbnail images and be controlled independently is the right approach.

@tonihei handling both player instances with their events, mounting and disposing off, memory allocations, etc. would be a pain. Syncing both the players is also another problem. It would be better to have the scrubbing load the image track above the video track just like we can see in Youtube or any other player. I have shared an example of the Kaltura player in the above link. On scrubbing the video track is paused and Image track moves forward and on rlease, the player starts from there.
Ideally the media3 UI controller should have this feature available out of the box, hopefully in coming versions where it can have 3 ways to handle this: None (no image track), Single IView (this will display a single image over the seekbar of that location), Track View (this will show the the multiple images). This can be used on the TV to move forward and backward, and the focus can be on the centre image. In mobile as well it will look like Youtube Player where the images are shown below the track bar. It can also have a property of placement : above or below the seekbar

Thanks for sharing your thoughts! This is useful for us to understand how we can integrate better support in the future and which areas need better documentation.

Ideally the media3 UI controller should have this feature available out of the box

We definitely want to get there, we just need more infrastructure on the player side to make it more easily configurable.

handling both player instances with their events, mounting and disposing off, memory allocations, etc. would be a pain.

The memory allocation would be the same overall since you need to load both video and thumbnails in any case. The only thing that may be loaded twice is the DASH manifest, and that could be avoided by using a CacheDataSource if needed.
Creating and releasing a player can presumably happen in the same places where you create and release your main player?
Event handling is interesting. I assume if you are not interested in events, you could just not add a listener. But it's more likely you actually want a separate listener so you can react to specific changes in the thumbnail track without affecting your main playback? Acknowledged that this may cause more overhead in your app.

On scrubbing the video track is paused and Image track moves forward and on release, the player starts from there.

If you never want to enable scrubbing while the main playback is ongoing, there is an alternative usage model with a single player only:

Once scrubbing starts, pause the main player, remove the main surface from the player, change track selection to prefer image tracks and show the thumbnail output. Any future seek output will appear in the thumbnail view only.
Once you are done scrubbing, hide the thumbnail view, change track selection to prefer video again and re-add the main surface to the player. Then continue playback.

One downside of this model is that you can't easily independently preload the thumbnail track into memory. (You could download the track in advance though).

Hi @tonihei, thanks for explaining so much in detail. Instead of having to use another player instance, can we instead build a custom PlayerView and pass the Image Output to it ? This would help us to customize the way we want and be more efficient ? Possible to try this ?

@tonihei Do you have an example of how preloading the thumbnail track could easily be done?

can we instead build a custom PlayerView and pass the Image Output to it

We are intending to provide support for image output in PlayerView out of the box, so there won't be a need to customize this.

Do you have an example of how preloading the thumbnail track could easily be done?

When you set up a separate player, you can configure it to have a large forward and back buffer in DefaultLoadControl to keep all the thumbnails in memory. As soon as you prepare the player, it will preload the data, which can be done at any point before playback if needed. Alternatively, you can also look into caching and downloading functionality to preload the thumbnails to disk.

We are intending to provide support for image output in PlayerView out of the box, so there won't be a need to customize this.

Could you please estimage as when do you think this would be available @tonihei ?


Unable to register for UWP Store push notifications anymore

Describe the bug
Currently, it seems it is no longer possible to get the old UWP Store push notifications working. The original flow as far as I remember was:

Register app in the Store, note the SID
Register the app in Live Services and get the secret
Execute the registration flow, then use the SID and secret to send the push notification from the backend (or Notification Hub)

Currently, it is no longer possible to retrieve the "secret" from Live SDK because it has been deprecated in favor of Azure App Registration. Azure Push Notification hub is unusable for Windows platform as it requires SID and the secret as well. Azure App Registration does not seem to be available for UWP Store apps yet as all I have found was a Push Notification Preview for Windows App SDK.
What is the recommended way to get push notifications working for new UWP Store apps these days?
Steps to reproduce the bug

This seems to be deprecated: https://docs.microsoft.com/en-us/previous-versions/windows/apps/hh913756(v=win.10)?redirectedfrom=MSDN (last update in 2015).

This https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-windows-store-dotnet-get-started-wns-push-notification refers to the "Live Services Site" in step 3, but that is no longer available.

Live SDK registration page shows the following message:
"Live SDK applications
Starting February 2021, you can no longer create new Live SDK applications here. The Azure portal now supports applications for personal Microsoft accounts. We recommend registering new applications there. Go to the Azure portal"

Azure App Registration does not seem to fully replace SID/secret and new Push Notifications for Windows App SDK seem to be still in Preview. There is no mention about UWP in the preview site either.

Expected behavior
I'd expect there should be some way to make UWP Store push notifications working at this moment without having to sign up for unfinished preview features.
Screenshots
No response
NuGet package version
No response
Packaging type
Packaged (MSIX)
Windows version
May 2021 Update (19043)
IDE
Visual Studio 2019
Additional context
No response

Hi @jimm98y.
Sorry to redirect you, but this is not the right place for UWP discussions.
Here's some alternate resources:

Microsoft Q&A windows-uwp tag: Has a dedicated support staff that helps answer questions there.
Stackoverflow
UWP Community Discord Very tight nit and supportive community.

Thanks @riverar those are great suggestions!


Execute never returns

// Execute starts the virtual machines main instruction processing loop.
// This function may return at any point and is guaranteed to return
// at least once every 10000 instructions. Caller is responsible for
// detecting VM status in a loop.

As far as I can tell, this is just not true.  It only returns on exit/error or gas limit exceeded.  And a trivial infinite loop (jmp over and over) never triggers the gas limit check.  This means there is no way to prevent a VM from being tied up forever by an infinite loop.

Should be fixed in a35232cc.

Testing latest master from here does not resolve the issue for me.  For now I am using this: https://github.com/singpolyma-shopify/life/commit/fbda4000ae9d2e31666cfd1363ee6898105b17f2

The VM no longer returns every 10000 instructions, but only when gas limit exceeded or an import is called. The commit a35232cc should have fixed the gas limit check issue.
It's suggested that you use gas limit for limiting execution cycles.
Let me know whether the gas limit check in latest master works for you.

I tried master and set GasLimit to 1 and a trivial infinite loop still ran forever.

I tried with the following code:
(module
    (func $app_main (export "app_main") (result i32)
        (loop
            br 0
        )
        (unreachable)
    )
)

with GasLimit set to 1 and gas policy compiler.SimpleGasPolicy{GasPerInstruction:1}. It terminates correctly. Could you post your code here?

I forgot to set gas policy on this time trying.  My bad, working now.  Thanks!


Phala Registry Parsing Failed

Step to reproduce:
on https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fphala.api.onfinality.io%2Fpublic-ws#/js
Code:
let res = await api.query.assetsRegistry.registryInfoByIds.entries()
console.log(res)

Errors:
Error: Unable to decode storage assetsRegistry.registryInfoByIds: entry 1:: createType(AssetsRegistryAssetRegistryInfo):: decodeU8aStruct: failed at 0x43410c010080ca396124000000000000… on reserveLocation (index 2/5): Option<XcmV3MultiLocation>:: decodeU8aStruct: failed at 0x0c010080ca3961240000000000000000… on interior (index 2/2): {"_enum":{"Here":"Null","X1":"XcmV3Junction","X2":"(XcmV3Junction,XcmV3Junction)","X3":"(XcmV3Junction,XcmV3Junction,XcmV3Junction)","X4":"(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)","X5":"(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)","X6":"(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)","X7":"(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)","X8":"(XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction,XcmV3Junction)"}}:: Unable to create Enum via index 12, in Here, X1, X2, X3, X4, X5, X6, X7, X8
    at T._newType (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:6842)
    at T._formatStorageSetEntry (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:6328)
    at https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:6069
    at r.reduce (<anonymous>)
    at T._formatStorageSet (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:6039)
    at https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:5754
    at Array.map (<anonymous>)
    at T._formatOutput (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:5697)
    at T._formatResult (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:3438)
    at h (https://polkadot.js.org/apps/modu.35d7b28670a9806f.js:50:3929)

solved and re-enabled: https://github.com/colorfulnotion/xcm-global-registry/pull/36


Improve Satellite Lesson

[ ] Make a simpler RGB example that is false color or something that doesn't require the interpolation
[ ] Maybe use mesoscale sectors so that things load faster and we don't kill the server

Currently it looks like the satellite notebook is timing out our Mac builds on Travis. Can you try moving to the mesoscale sector and see if that makes things any better?


First time use error...

Installed drivesync on osx, after installing Ruby 2.6.x using homebrew. I understand that I need to create the config.yml file by running drivesync.rb, but when I do, I get the following. Any possible guidance? Thanks!
ruby drivesync.rb
Traceback (most recent call last):
	4: from drivesync.rb:1:in `<main>'
	3: from drivesync.rb:1:in `require_relative'
	2: from /Users/sstromer/Applications/GitHub/drivesync/src/synchronizer.rb:1:in `<top (required)>'
	1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- google/apis/drive_v3 (LoadError)

Still hoping I can get some pro guidance on this. Did I install the bundle to the wrong location? Thanks for any assist.

Are you getting the same problem when you just run bundle install without any arguments?


Buttons at the top of the main view display d,g,e,f,b instead of symbols

Buttons at the top of the main view display d,g,e,f,b instead of symbols.
Looks like there are built in symbols that will work from the atom styleguide.  (Inside an atom workspase press ctrl + shift + g on windows or search for 'styleguide')

They are working for me, though the margins are not correct.

Because I like the Chrome debugger I had taken the debugger-symbols (PNGs I believe, and packaged them up as a Webfont in https://github.com/johanlunds/atom-ruby-debugger/tree/master/resources
I generated the webfont using http://fontastic.me/ using the resources here: https://github.com/johanlunds/atom-ruby-debugger/tree/master/docs/icons

Are you using Windows? I am using Mac.

I am using windows, and I can see an error when it tries to load in the fonts.  I'll dive in a little further and test on my mac later.

I see this on my mac as well.  It may be since I just checked the repo out into my .atom/packages folder...

Try this; this is what I did:
cd ~/Code # or wherever
git clone git@github.com:johanlunds/atom-ruby-debugger.git
cd atom-ruby-debugger
apm link --dev # exclude --dev if you want it to load in normal mode
npm install # might not be needed
apm install
atom --dev . # start atom. once again, optionally skip --dev

Thanks for the help!  apm link --dev Worked like a charm.  Cautionary tail for anyone else who tries the same thing, don't clone the repo right into the ~/.atom/packages directory and simply run npm install.  Although I feel silly now, I think these steps are a good candidate for the README under a development section of some sort.

Absolutely! It can be put under a header "Development Setup" or something like it.


adds anonymous user support

I really needed this feature in my project, so I've added ability to support anonymous users.

I will merge into the main branch first, but some optimizations are needed.


ion-list items fuzzy when scroll - browser - chrome

Greetings, @danicomas!
We are now requiring all issues to be submitted through our custom issue form so that we have all of the information necessary to fix them as quickly as possible.
Your progress on this issue has been saved at the following url:
link to Ionic issue form
This issue will be closed if not resubmitted through the form. Please fill out the rest of the form so that we may assist you.
Thank you for allowing me to assist you.

Greetings @danicomas!
I've closed this issue because my sensors indicated it was old and inactive, and may have already been fixed in recent versions of Ionic. However, if you are still experiencing this issue, please feel free to reopen this issue by creating a new one, and include any examples and other necessary information, so that we can look into it further.
Thank you for allowing me to assist you.


Documentation request

Hi, I am the author of "Enhanced Controller for Onkyo and Pioneer" (https://github.com/mkulesh/onpc) and I am looking for the latest ISCP documentation. The most actual release of the "Integra Serial Communication Protocol" that I have is version 1.40 (https://github.com/mkulesh/onpc/blob/master/doc/ISCP_AVR_140.xlsx). Do you have more actual release of this document? Thank you.

I haven't seen anything. I believe I went looking at one point but didn't find much recent. I might have even found your repo, as it looks familiar. But I'm not the one who originally wrote the functionality for this plugin. The one who did has long abandoned their project; this is a fork of a fork or something. I don't currently know where to find updated documentation.

Thank you for response. One month ago I found the version 146. If you need it, please look here:
https://github.com/mkulesh/onpc/blob/master/doc/ISCP_AVR_146.xlsx


[Bash] Fix line numbers in lint script

Problem
Currently the line numbers displayed by the grep -n ... command are off by 1 since the first line is ignored.
https://github.com/DenverCoder1/LaTeX-Gboard-Dictionary/blob/c16c27b82d0d367fb3f9dfe1184ad170ae5feeeb/.github/lint#L18
Example

What should happen
The line numbers should be identical to the line numbers in the file

Fixed by #57


[FLINK-31239][hive] Fix native sum function can't get the corrected value when the argument type is string

What is the purpose of the change
Currently, for the following case:
tableEnv.executeSql("create table test_sum_dec(a int, x string, z decimal(10, 5))");
tableEnv.executeSql(
                "insert into test_sum_dec values (1, 'b', null), "
                        + "(1, 'b', 1.2), "
                        + "(2, 'b', null), "
                        + "(2, 'b', null),"
                        + "(4, '1', null),"
                        + "(4, 'b', null)")
        .await();

List<Row> result =
        CollectionUtil.iteratorToList(
                tableEnv.executeSql("select a, sum(x) from test_sum_dec group by a")
                        .collect());
assertThat(result.toString()).isEqualTo("[+I[1,null], +I[2, null], +I[4, 1.0]]");

The native sum function return [+I[1,null], +I[2, null], +I[4, 1.0]], but hive sum function return [+I[1,0.0], +I[2,0.0], +I[4, 1.0]]. The native function return result is not consistent with hive, this is a bug, so we should fix it.
Brief change log

Fix native sum function can't get the corrected value when the argument type is string
Add some notes in document about table.exec.hive.native-agg-function.enabled option can't turned on per job when using it via SqlClient

Verifying this change
This change added tests and can be verified as follows:

Added integration tests in HiveDialectAggITCase

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (yes)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: ( no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicabled)

@godfreyhe Thanks for your reviewing, I've addressed your comments. Could you help retain two commits when you merge?


Add interfaces for the Feed and the Client

Hi,
I think it should be a great idea to implements interfaces in this project.
We are using the SDK in Symfony, and we are trying to cover our code with some behat tests.
By implementing some interfaces, I could be able to create Dummies of the Feed and the Client objects in my tests.
I Can do a PR for that, do you have any good practice for that? Naming conventions, specific namespace?
I'm also wondering why all the methods are public? Some of them seem to be internal and should be protected/private, no?

@olix21 I like your idea of adding interfaces to make testing easier, PRs for that are very welcome :)
We don't have a formal definition for naming conventions but the package is pretty consistent (and small) so that should be fairly easy.


Versioning field in the context part is confusing, maybe rename to specversion

The version field https://github.com/cdevents/spec/blob/main/spec.md#version specifies that it defines the version of the specification. Also the https://github.com/cdevents/spec/blob/main/spec.md#type-context specifies that is should contain the version of the  event. When looking at a event this is super confusing.
Proposal is to rename the version filed to something more descriptive that describes that it specifies the specification version. Maybe rename it to spec_version.

We are missing the version part in some of our event examples. For example https://github.com/cdevents/spec/blob/main/spec.md#type-context and https://github.com/cdevents/spec/blob/main/spec.md#context-example
We could rename the top version with "specversion", but we might need to do it by deprecating the old parameter for some time first.

@xibz proposed to make some user study to see how people perceive version fields in CDEvents and what impact this change would have - we should change it only if it actually solves the issue.

@e-backmark-ericsson  to check through Slack on how people understand the term 'version' in these cases.

My vote is change version to specversion


Idva5- 856 key values 15 char

Short description outlining key changes/additions
JIRA Ticket Number
Type of change

[ ] Bug fix
[ ] New feature
[ ] Breaking change
[ ] Infrastructure change

Pull request checklist

[ ] I have added unit tests for new code that I have added
[ ] I have added/updated functional tests where appropriate
[ ] The code follows our coding standards

An exhaustive list of peer review checks can be read here

CI: No security warnings found


Issue 156

@BasThomas please review so we can merge this in master :)

Awesome issue, thank you so much @fassko 🥰

great work @fassko ! 🎉


SfB Server 2019 Server requirements link incorrect

Server requirements for Skype for Business Server link incorrectly points to 2015 requrements instead of 2019 requirements:
At: Install prerequisites for Skype for Business Server
https://docs.microsoft.com/en-us/skypeforbusiness/deploy/install/install-prerequisites
Incorrect: Server requirements for Skype for Business Server
https://docs.microsoft.com/en-us/skypeforbusiness/plan-your-deployment/requirements-for-your-environment/server-requirements
Correct: System requirements for Skype for Business Server
https://docs.microsoft.com/en-us/skypeforbusiness/plan/system-requirements
This incorrect link is at 3 places on this site.

@Markusott7 Thank you for this feedback
I will get this information about the wrong links to the Skype for Business team for investigation.
The team will get this prioritized into a sprint plan. Thank you for reporting and making the docs better. Much appreciated.
I made a note to request the team to update this when the work is complete.


Start of the necessary pieces to get #1418 and #1419 implemented

This is the start of the necessary pieces to get #1418 and #1419 implemented
ClusterImagePolicy reconciler will now create a configmap (no secret support yet)
and update it on changes (not on deletions yet). Also put up most necessary
testing pieces so that we can start unit testing the reconciler and make sure
it updates the resulting configmap.
There's also a ConfigStore that we can then inject into the admission webhook
that I have wired in there (nop for now, but demonstrating how it could work).
Idea being that you could then for a given image ask for all the authorities that
need to be validated. You can see what that config looks like in the
/pkg/apis/config/testdata/image-policies.yaml and the accompanying tests
in /pkg/apis/config/image_policies_test
I made sure that it works with both yaml/json.
While playing with this there's some questions that came to mind, so I'll take
those to the document.
Hope is that we get enough pieces in place so that we can agree on the major
moving pieces and how they fit together and enough testing in place that
we can start sharding up the work more efficiently and in more focused areas.
Signed-off-by: Ville Aikas<EMAIL_ADDRESS>
Summary

Ticket Link

Fixes
Release Note

Codecov Report

Merging #1562 (831b721) into main (4b2c3c0) will increase coverage by 0.91%.
The diff coverage is 66.25%.

@@            Coverage Diff             @@
##             main    #1562      +/-   ##
==========================================
+ Coverage   26.49%   27.40%   +0.91%
==========================================
  Files         126      130       +4
  Lines        7214     7383     +169
==========================================
+ Hits         1911     2023     +112
- Misses       5093     5137      +44
- Partials      210      223      +13

Impacted Files
Coverage Δ

cmd/cosign/webhook/main.go
0.00% <0.00%> (ø)

pkg/cosign/kubernetes/webhook/validation.go
74.02% <27.27%> (-7.80%)
:arrow_down:

...econciler/clusterimagepolicy/clusterimagepolicy.go
46.15% <44.73%> (ø)

pkg/apis/config/image_policies.go
72.09% <72.09%> (ø)

pkg/reconciler/clusterimagepolicy/controller.go
87.50% <83.33%> (ø)

pkg/apis/config/store.go
100.00% <100.00%> (ø)

pkg/cosign/tuf/client.go
62.34% <0.00%> (-0.95%)
:arrow_down:

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 4b2c3c0...831b721. Read the comment docs.

I don't understand why codegen is failing, I rebased to head, ran update-codegen and it shows no changes.

I'm so very baffled as to what's going on with hack/update-codegen. Here's what I did (again) and it's still complaining.
vaikas@villes-mbp cosign % git status
On branch cip-reconciler
nothing to commit, working tree clean
vaikas@villes-mbp cosign % git fetch upstream main
From github.com:sigstore/cosign
 * branch            main       -> FETCH_HEAD
vaikas@villes-mbp cosign % git rebase -ff upstream/main
Current branch cip-reconciler is up to date, rebase forced.
Successfully rebased and updated refs/heads/cip-reconciler.
vaikas@villes-mbp cosign % git status
On branch cip-reconciler
nothing to commit, working tree clean
vaikas@villes-mbp cosign % ./hack/update-codegen.sh
~/projects/go/src/github.com/sigstore/cosign ~/projects/go/src/github.com/sigstore/cosign
=== Vendoring scripts
=== Update Codegen for github.com/sigstore/cosign
--- Kubernetes Codegen
Generating deepcopy funcs
Generating clientset for cosigned:v1alpha1 at github.com/sigstore/cosign/pkg/client/clientset
Generating listers for cosigned:v1alpha1 at github.com/sigstore/cosign/pkg/client/listers
Generating informers for cosigned:v1alpha1 at github.com/sigstore/cosign/pkg/client/informers
--- Knative Codegen
Generating injection for cosigned:v1alpha1 at github.com/sigstore/cosign/pkg/client/injection
--- Update CRD Schema
--- Update deps post-codegen
~/projects/go/src/github.com/sigstore/cosign ~/projects/go/src/github.com/sigstore/cosign
=== Vendoring scripts
=== Update Deps for Golang
--- Go mod tidy and vendor
--- Removing unwanted vendor files
--- Updating licenses
--- Removing broken symlinks
=== Removing vendor/
vaikas@villes-mbp cosign % git status
On branch cip-reconciler
nothing to commit, working tree clean
vaikas@villes-mbp cosign % git push origin cip-reconciler --force
Enumerating objects: 121, done.
Counting objects: 100% (121/121), done.
Delta compression using up to 8 threads
Compressing objects: 100% (89/89), done.
Writing objects: 100% (100/100), 25.97 KiB | 3.71 MiB/s, done.
Total 100 (delta 53), reused 1 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (53/53), completed with 14 local objects.
To github.com:vaikas/cosign.git
 + 8df8368...d7c5e58 cip-reconciler -> cip-reconciler (forced update)


Build failure

Hi,
I was just trying to npm install and start and this error occurred:
Failed to compile.

Error in ./src/Controls/index.js
Module not found: 'classnames' in /Users/username/projects/rubix/src/Controls

 @ ./src/Controls/index.js 12:18-39

Cheers!

duplicate https://github.com/Zacqary/rubix/pull/1.


Support existing document store and index creation behind toggle

This PR adds support to reuse an existing document store from service proivder (we configure it globally and share it with other services too) instead of creating a new document store.
Also adding a toggle whether indexes should be deployed automatically - we have custom migrations (RavenMigrations) and the process also includes refreshing the indexes. We don't want indexes to refresh outside of deployment process.

@lahma Thank you for drawing out attention to the IDocumentStore issue.  Generally speaking, I belive you're right and we should add support for reusing an existing document store. Please read my comment and let's find an optimal solution.


Return request headers when env body is set

I honestly don't know if this change breaks some depending service-tests.
We did so many iterations on http-echo-servers that I lost track of the topic but my gut feeling says there are some services relying on the (header-less) response being EQUAL to the ENV-injected value. Blindly adding request-headers would break that. Can you please check the services that use this mock so that we don't break their tests?

Checked repositories:

router
ssl-terminator
monolith-cache-proxy
monolith-output-filter

All working fine with this changes.


feat: automagic version & publish when go-ipfs released

The motivation here is to remove any friction around testing out new and upcoming go-ipfs releases against our js based apps, to catch an compatibility issues as soon as possible. The other side of this effort is #34 which will let projects manually override the go-ipfs version to use. If we automated the publishing of this module so that all releases and release-candidates of go-ipfs have an equivalent version of go-ipfs-dep on npm, the we could drop the manual override feature, and just tell folks us the dependancy version number.
This is a proof of concept to show that we can automate the process of keeping this module up to date with go-ipfs.

It pulls the lates go-ipfs release version from https://dist.ipfs.io/go-ipfs/versions and compares it to the local package.version every hour (configurable)
when dist.ipfs.io updates with a new release it installs the deps, runs the tests, as a sanity check
It'll then run npm version $LATEST using the new release number from go-ipfs to keep them in sync, and then npm publish.
It needs a github token (provided by the action) to commit the version incrment in package.json back to the repo
needs an npm token to publish with, and the account that it comes from can have 2fa enabled but not only on login, not on publish.

of note, in it's current form this will publish whatever version go-ipfs publish, including release candidates. I'm all in favour or publishing release candidates here though.
also of note, it could be collapsed into a single github action, but it's kinda nice to see green checks in  the github UI for each step:

check for new version
build
test
version & publish

fixes #32

Sensible next steps

create an npm deploy account with acess to just this project, and create an auth token
test that the version we find from dist is valid semver, bail if not

Oooh the robot just did it's first release!
https://www.npmjs.com/package/@olizilla/go-ipfs-dep
I am so proud 🤖✨

@olizilla awesome work! 👏🏽👏🏽👏🏽

Agreed! and DONE!
It'll publish pre-releases (any semver string with a - in) under go-ipfs-dep@next while stable releases are published under go-ipfs-dep@latest, so running npm install go-ipfs-dep will always get you a stable release.

Ok this now has

strict semver checking - to ensure that the value we scrape from dist.ipfs.io is a real semver string
Set the npm dist tag to next where the new semver string contains a - and denotes a pre-release.

Only thing we need now is to

[ ] create an npm deploy account,
[ ] add that user to the list of users who can publish to this module
[ ] create an npm auth token and add it to the publish action in the workflow that this PR adds.

@daviddias do we have an npm release bot already? or should I create one?

@daviddias do we have an npm release bot already? or should I create one?

AFAIK, we never had one nor there was ever work towards it, so please be my guest :) Thank you!


Remove unsafe variable warning

Rebased from #17 I took a shot at getting rid of that unsafe variable warning from Elixir 1.3.
warning: the variable "req" is unsafe as it has been set inside a case/cond/receive/if/&&/||. Please explicitly return the variable value instead. For example:

    case int do
      1 -> atom = :one
      2 -> atom = :two
    end

should be written as

    atom =
      case int do
        1 -> :one
        2 -> :two
      end

Unsafe variable found at:
  lib/httparrot.ex:66

Whoops, that already in there 😅😂

Oh yeah, sorry.. I decided to submit them as separate PRs to be on the safe side. Thanks :)


Minting Dapp

I keep on getting that error what should i do?
$ encore dev-server
Running webpack-dev-server ...
/Users/jonathanseverin/Downloads/nft-erc721-collection-2.3.0/minting-dapp/node_modules/webpack-dev-server/lib/Server.js:2432
throw error;
^
Error: listen EADDRINUSE: address already in use <IP_ADDRESS>:8080
at Server.setupListenHandle [as _listen2] (node:net:1330:16)
at listenInCluster (node:net:1378:12)
at GetAddrInfoReqWrap.doListen [as callback] (node:net:1516:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:73:8) {
code: 'EADDRINUSE',
errno: -48,
syscall: 'listen',
address: '<IP_ADDRESS>',
port: 8080
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
jonathanseverin@iMac minting-dapp %

Hi @Catzskull,
Issues are for bug reports only and you should include all the requested information. If you are looking for support please use the Discussions Section in order to get support from other community members.
In this case, the error already tells you what the problem is: EADDRINUSE: address already in use <IP_ADDRESS>:8080 so you already have a process running on port 8080 on your machine. You should close the other process or pick another port with the --port 8081 when running the dev server. This error could also be found by searching old issues, so please use the search tool before opening new reports.
Thank you for your understanding.


the sides of the modal are not clickable

Hello everyone, recently using the library I realized that it is not possible to close the modal window by clicking on the sides, I did a pr to solve this, I hope it can be considered, thanks

PR: https://github.com/pheralb/superkey/pull/13

🎉 Fixed in v0.2.1.
Thanks for the report 🚀


Flask Ask doesn't parse time stamp from Alexa properly...

Traceback (most recent call last):
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1997, in call
return self.wsgi_app(environ, start_response)
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/opt/HomeApp/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/opt/HomeApp/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/opt/HomeApp/lib/python3.4/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functionsrule.endpoint
File "/opt/HomeApp/lib/python3.4/site-packages/flask_ask/core.py", line 571, in _flask_view_func
ask_payload = self._alexa_request(verify=self.ask_verify_requests)
File "/opt/HomeApp/lib/python3.4/site-packages/flask_ask/core.py", line 533, in _alexa_request
timestamp = aniso8601.parse_datetime(alexa_request_payload['request']['timestamp'])
File "/opt/HomeApp/lib/python3.4/site-packages/aniso8601/time.py", line 120, in parse_datetime
isodatestr, isotimestr = isodatetimestr.split(delimiter)
AttributeError: 'int' object has no attribute 'split'

Here is a raw example of the request from Alexa...
{
"session": {
"sessionId": "SessionId.",
"application": {
"applicationId": "amzn1.ask.skill."
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account."
},
"new": true
},
"request": {
"type": "LaunchRequest",
"requestId": "EdwRequestId.ff5385a8-ad2b-435e-a2e7-807aa422875d",
"locale": "en-GB",
"timestamp": "2017-07-08T07:38:00Z"
},
"version": "1.0"
}

After adding some debug logs to the application I found alexa_request_payload['request']['timestamp'] is indeed an integer...
1499500133708

ok, I monkey patched this with a try except, basically if the conversion fails and the thing is already an integer it assumes its already a timestamp, not sure if this is the right way of dealing with this case but it appears to work for now.

Possible related issue?

Yep looks like the same symptoms to me... reluctant to raise a PR simply because it should probably be fixed upstream by Amazon.

@robputt796 do you see this behavior when deploying the app and using an Alexa enabled device? Or are you only using Amazon's testing interface on their skill config page?
Amazon's testing interface is beyond horrible and routinely doesn't follow their own specifications. (See all the issues we've had regarding it not providing a Context in the request...which is required per Amazon's API documentation.)

I've been testing against echosim.io. The skill is not published, its a private skill which I use for my custom home automation system, so it basically runs in test mode all the time. I probably need to put those print lines back in there and see if it receives an integer with echosim or if it gets a proper ISO formatted datetime.

Definitely turn up debugging if you can and see if you can capture the JSON request coming into the skill. My guess is the request is actually invalid. (I'm starting to think it might make sense to add some spec definition to check against and raise errors if the request appears invalid.)
For reference, per Amazon:

The timestamp is provided as an ISO 8601 formatted string (for example, 2015-05-13T12:34:56Z). Your code needs to parse the string into a date object, then verify that it is within the tolerance your web service allows (no more than 150 seconds)

A tool like Echosim or even Amazon's own tools might not actually conform to Amazon's specs and most people won't notice since Amazon forces responsibility on the app developer to validate a lot of the pieces. We could turn a blind eye to some of these bad inputs, but from my experience with Amazon, if they trip your app during testing during a skill submission then your skill will get rejected.
This has happened before with Context elements being left out of requests. Amazon doesn't even generate them with their testing tool, either! Yet, per their own docs, it should be part of every request. It's almost like they want this to be difficult.

Looks like a case of Amazon's testing tools using a different timestamp format than what the device sends.
Testing using their developer.amazon.com:
_ = alexa_request_payload['request']['timestamp']
print(_)
1499561132768
type(_)
<class 'int'>

Testing using a real Echo Dot:
_ = alexa_request_payload['request']['timestamp']
print(_)
'2017-07-09T00:45:19Z'
type(_)
<class 'str'>

Does anyone have a fix for this?  I don't have a device.

@LiteWait Under the text tab, run your text test which will fail. Then copy the Service Request JSON object. Switch to the JSON tab and paste into the JSON Request field. That is working for me.

Thanks.
My workaround was to patch core.py:
try:
timestamp =
aniso8601.parse_datetime(alexa_request_payload['request']['timestamp'])
except AttributeError:
import datetime
timestamp = datetime.datetime.now()  # slam in a timestamp!
On Sun, Jul 9, 2017 at 5:22 PM, m19brandon<EMAIL_ADDRESS>wrote:

@LiteWait https://github.com/litewait Under the text tab, run your text
test which will fail. Then copy the Service Request JSON object. Switch to
the JSON tab and paste into the JSON Request field. That is working for me.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/johnwheeler/flask-ask/issues/152#issuecomment-313960904,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA207V9RBTUGPwKhe_1cz8uL7_j5A-Cvks5sMUSOgaJpZM4ORqlV
.

Maybe a better fix is:
try:
timestamp = aniso8601.parse_datetime(alexa_request_payload['request']['timestamp'])
except AttributeError:
import datetime
timestamp = datetime.datetime.fromtimestamp(alexa_request_payload['request']['timestamp']/1000)

I tried that work around and it solved my other issues. But I still cannot seem to pass any sort of date to alexa correctly using the AMAZON.DATE slot type.

Since this seems to impact a lot of folks, I'll work on fixing the logic to support the proper ISO8601 date string and an integer value representing an epoch timestamp. I want to preserve the timestamp validation capability in the process.

I also opened a ticket with Amazon to look into fixing the Text testing tool in the skill admin site at developer.amazon.com.

Temporary fix , add this -
app.config['ASK_VERIFY_REQUESTS'] = False
Just to get the skill working. As long as you don't need this.
Worked for me!

I've added a change in a branch that looks to sanely handle these two types of timestamps. It raises some different questions about the logic for getting things like timestamp and app id if verification is disabled, but for now let's see if this resolves your issues.
I added some test cases to try to simulate the problem, but need your help testing it.
Can someone experiencing the issue try installing the version from the branch? I don't have time the next couple days to try a live Alexa test.
To install the branch using pip, from your virtual environment or wherever you've been using Flask-Ask:
pip install -U git+https://github.com/johnwheeler/flask-ask@issue-152

If you're doing anything from source, just clone the branch issue-152.

I've confirmed that by upgrading to the issue-152 branch, I can now get a successful response using the text and JSON request testing in the Alexa dev dashboard.

I've cut a new release containing the timestamp changes: v0.9.5
Github auto-closed this issue because I said the magic words "fix #152" in my commit message, so please re-open if there are issues after upgrading.

I'm getting "ValueError: year is out of range" now with v0.9.5, using the Text tool in developer.amazon.com. It's working fine with the JSON tool.
Traceback (most recent call last):
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1997, in call
return self.wsgi_app(environ, start_response)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functionsrule.endpoint
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask_ask/core.py", line 591, in _flask_view_func
ask_payload = self._alexa_request(verify=self.ask_verify_requests)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask_ask/core.py", line 536, in _alexa_request
timestamp = self._parse_timestamp(raw_timestamp)
File "/Users/p/projects/alexa/uac-2017-alexa-engage/venv/lib/python2.7/site-packages/flask_ask/core.py", line 562, in _parse_timestamp
return datetime.utcfromtimestamp(timestamp)
ValueError: year is out of range

I think the fix to that is:
return datetime.utcfromtimestamp(timestamp/1000)

@pzzd can you provide any more details such as the timestamp value you're sending in the request? That error is very strange as the datetime.utcfromtimestamp() method is able to handle the max integer value and even handle negative inputs.
Which OS and Python version are you using? Some of the time handling in Python is system dependent.

I used the Text tool from Alexa skills admin page at developer.amazon.com. That tool produced this request:
{   "session": {     "sessionId": "SessionId.8474c070-b12c-46b5-be46-241d1aa51dfa",     "application": {       "applicationId": "amzn1.ask.skill.23926711-b8dd-47ad-a95d-ef1d693d19eb"     },     "attributes": {},     "user": {       "userId": "amzn1.ask.account.AH5QJGCCGTLR6JOF2SFBR6PAPCPWJL52UPSDTS4L7I3WI3537DLJPBBUYSHJCCPGY5YJARNEZZ7CDY4DTK234LMMO5L5KTE3DPPGSLSJS5DYNVDYMAUM3SYZGCK5IGOJSWRILK4T2DTU7PMTPETYTMFKWMOBG22LPVNZA2CYXU5WVQ3KVUQZ2C6NCD3XDJFVBBGMQBD7Z2NXSKI"     },     "new": true   },   "request": {     "type": "LaunchRequest",     "requestId": "EdwRequestId.45ff9fa9-d4cd-45d8-9d28-81ae39cbee9a",     "locale": "en-US",     "timestamp": "2017-07-11T14:21:47Z"   },   "version": "1.0" }
However, this request works from the JSON tool.

Maybe you can try the following and verify it works on your system? You'll need to clone the master branch and then pip install Flask-Ask. The following works locally on my macOS 10.12.5 system:
Confirming version:
$ python -V && which python
Python 2.7.10
/Users/dave/.virtualenvs/flask-py2-10/bin/python

Running helloworld sample:
$ ASK_VERIFY_REQUESTS=false python samples/helloworld/helloworld.py
 * Running on http://<IP_ADDRESS>:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 189-811-296

Create a file called json containing your sample (this step is just showing my copy):
$ cat json
{ "session": { "sessionId": "SessionId.8474c070-b12c-46b5-be46-241d1aa51dfa", "application": { "applicationId": "amzn1.ask.skill.23926711-b8dd-47ad-a95d-ef1d693d19eb" }, "attributes": {}, "user": { "userId": "amzn1.ask.account.AH5QJGCCGTLR6JOF2SFBR6PAPCPWJL52UPSDTS4L7I3WI3537DLJPBBUYSHJCCPGY5YJARNEZZ7CDY4DTK234LMMO5L5KTE3DPPGSLSJS5DYNVDYMAUM3SYZGCK5IGOJSWRILK4T2DTU7PMTPETYTMFKWMOBG22LPVNZA2CYXU5WVQ3KVUQZ2C6NCD3XDJFVBBGMQBD7Z2NXSKI" }, "new": true }, "request": { "type": "LaunchRequest", "requestId": "EdwRequestId.45ff9fa9-d4cd-45d8-9d28-81ae39cbee9a", "locale": "en-US", "timestamp": "2017-07-11T14:21:47Z" }, "version": "1.0" }

From another terminal, POST'ing your sample JSON:
$ curl -v -H "Content-Type: application/json" --no-keepalive --data @json http://<IP_ADDRESS>:5000/
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 5000 (#0)
> POST / HTTP/1.1
> Host: <IP_ADDRESS>:5000
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 634
>
* upload completely sent off: 634 out of 634 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 416
< Server: Werkzeug/0.12.2 Python/2.7.10
< Date: Tue, 11 Jul 2017 15:08:08 GMT
<
* Curl_http_done: called premature == 0
* Closing connection 0
{"response": {"card": {"content": "Welcome to the Alexa Skills Kit, you can say hello", "title": "HelloWorld", "type": "Simple"}, "outputSpeech": {"text": "Welcome to the Alexa Skills Kit, you can say hello", "type": "PlainText"}, "reprompt": {"outputSpeech": {"text": "Welcome to the Alexa Skills Kit, you can say hello", "type": "PlainText"}}, "shouldEndSession": false}, "sessionAttributes": {}, "version": "1.0"}%

Confirming output in the terminal running HelloWorld.py:
$ ASK_VERIFY_REQUESTS=false python samples/helloworld/helloworld.py
 * Running on http://<IP_ADDRESS>:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 189-811-296
{
  "request": {
    "locale": "en-US",
    "requestId": "EdwRequestId.45ff9fa9-d4cd-45d8-9d28-81ae39cbee9a",
    "timestamp": "2017-07-11T14:21:47Z",
    "type": "LaunchRequest"
  },
  "session": {
    "application": {
      "applicationId": "amzn1.ask.skill.23926711-b8dd-47ad-a95d-ef1d693d19eb"
    },
    "attributes": {},
    "new": true,
    "sessionId": "SessionId.8474c070-b12c-46b5-be46-241d1aa51dfa",
    "user": {
      "userId": "amzn1.ask.account.AH5QJGCCGTLR6JOF2SFBR6PAPCPWJL52UPSDTS4L7I3WI3537DLJPBBUYSHJCCPGY5YJARNEZZ7CDY4DTK234LMMO5L5KTE3DPPGSLSJS5DYNVDYMAUM3SYZGCK5IGOJSWRILK4T2DTU7PMTPETYTMFKWMOBG22LPVNZA2CYXU5WVQ3KVUQZ2C6NCD3XDJFVBBGMQBD7Z2NXSKI"
    }
  },
  "version": "1.0"
}
{}
{
  "response": {
    "card": {
      "content": "Welcome to the Alexa Skills Kit, you can say hello",
      "title": "HelloWorld",
      "type": "Simple"
    },
    "outputSpeech": {
      "text": "Welcome to the Alexa Skills Kit, you can say hello",
      "type": "PlainText"
    },
    "reprompt": {
      "outputSpeech": {
        "text": "Welcome to the Alexa Skills Kit, you can say hello",
        "type": "PlainText"
      }
    },
    "shouldEndSession": false
  },
  "sessionAttributes": {},
  "version": "1.0"
}

@pzzd it seems something might be mangling the requests for some reason. In your skill, try configuring it for debug mode and turn off verification similar to in the HelloWorld example.
Try setting app.config['ASK_VERIFY_REQUESTS'] = False as well as starting the app with the debug flag like in app.run(debug=True). This should result in turning off the validation and resolving your HTTP_SIGNATURECERTCHAINURL KeyError as well as logging all incoming requests to the console so you can see what is being sent.
Also, for those curious, I dug into the CPython source and CPython defines a min year of 1 and max year of 9999 for those interested.
I did some experimenting and found that the max timestamp value is<PHONE_NUMBER>00:
>>> datetime.utcfromtimestamp(253402300799)
datetime.datetime(9999, 12, 31, 23, 59, 59)
>>> datetime.utcfromtimestamp(253402300800)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: year is out of range

And the min value is -62135596800:
>>> datetime.utcfromtimestamp(-62135596800)
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.utcfromtimestamp(-62135596801)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: year is out of range

I was having the same problem as @pzzd.
Using  app.config['ASK_VERIFY_REQUESTS'] = False as suggested by @voutilad made the error ValueError: year is out of range go away. Thanks.
I'm using Python 3.5.1

I put app.config['ASK_VERIFY_REQUESTS'] = False in my skill script and tested the same scenarios as above. This worked out well.

curl a json file: KeyError: successful response
Text tool in developer.amazon.com: successful response
echosim.io: 'try again', no request sent to my laptop

But we don't want to keep app.config['ASK_VERIFY_REQUESTS'] = False in our skills scripts to get around the ValueError: year is out of range error, correct? What's the next step, @voutilad?

Like I said I am pretty sure the timestamp Amazon gives you contains milliseconds, you must divide the 1000 or you will get the: ValueError: year is out of range

@LiteWait I do believe you're correct about the scale of the numbers, but was hoping to get a sample request before making a change so we could be sure since this format isn't the one documented by Amazon.
I'll implement a relaxed approach if the ValueError occurs the first time. This should resolve the issue.
(Also, looking at this logic again it definitely is a candidate for some refactoring since the verification flags seem a bit redundant.)

Apologies for the cycles here.
@pzzd I just pushed a change to the master branch, but haven't made a new release. This uses @LiteWait's logic for scaling the second from milliseconds to seconds since it seems Python uses seconds represented in floating point under the covers.
Please give that a shot. A pip install -U git+https://github.com/johnwheeler/flask-ask should grab the master branch.

@voutilad Just gave it a shot, as you said, and it solves the problem for me.

Hmm, I still seem to be having the same problem. I copied over the new files and updated deployment via zappa. still getting errors.

I installed from the master branch and with the text test interface I still get OverflowError: timestamp out of range for platform time_t, but the JSON interface works fine.

small snippet of the dev tail, I'm still new to this, so posting this in case I missed something easy..
[1499854764319] File "/var/task/flask_ask/core.py", line 591, in _flask_view_func [1499854764319] ask_payload = self._alexa_request(verify=self.ask_verify_requests) [1499854764319] File "/var/task/flask_ask/core.py", line 536, in _alexa_request [1499854764319] timestamp = self._parse_timestamp(raw_timestamp) [1499854764319] File "/var/task/flask_ask/core.py", line 562, in _parse_timestamp [1499854764319] return datetime.utcfromtimestamp(timestamp) [1499854764319] ValueError: year is out of range [1499854764320] [INFO] 2017-07-12T10:19:24.320Z 93c7778e-66eb-11e7-a993-4b6fef05e99b <IP_ADDRESS> - - [12/Jul/2017:10:19:24 +0000] "POST / HTTP/1.1" 500 291 "" "Apache-HttpClient/UNAVAILABLE (Java/1.8.0_112)" 0/206.736 [1499857364569] Playing audio playlist [1499857364570] [2017-07-12 11:02:44,569] ERROR in c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app: Exception on / [POST] [1499857364570] Traceback (most recent call last): [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app.py", line 1982, in wsgi_app [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app.py", line 1614, in full_dispatch_request [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app.py", line 1517, in handle_user_exception [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app.py", line 1612, in full_dispatch_request [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\Flask\flask\app.py", line 1598, in dispatch_request [1499857364570] File "/var/task/flask_ask/core.py", line 624, in _flask_view_func [1499857364570] result = self._map_intent_to_view_func(self.request.intent)() [1499857364570] File "/var/task/alexa.py", line 859, in alexa_listen_audio_playlist [1499857364570] playlist = kodi.FindAudioPlaylist(AudioPlaylist) [1499857364570] File "c:\users\mtwel\appdata\local\temp\pip-build-f1grdt\kodi-voice\kodi_voice\kodi.py", line 422, in FindAudioPlaylist [1499857364570] AttributeError: 'NoneType' object has no attribute 'encode' [1499857364570] [INFO] 2017-07-12T11:02:44.570Z a1ab29e6-66f1-11e7-9407-3fd4f113db52 <IP_ADDRESS> - - [12/Jul/2017:11:02:44 +0000] "POST / HTTP/1.1" 500 291 "" "Apache-HttpClient/4.5.x (Java/1.8.0_131)" 0/158.692 [1499857364865] [INFO] 2017-07-12T11:02:44.865Z a1eacab6-66f1-11e7-bafb-3b0e315fa13d <IP_ADDRESS> - - [12/Jul/2017:11:02:44 +0000] "POST / HTTP/1.1" 200 2 "" "Apache-HttpClient/4.5.x (Java/1.8.0_131)" 0/61.774

@mtweldon Do you have that wrapped in the triple backtick, or just a single backtick? It's much more readable when using ```

Sorry about that, updated

@ThaWeatherman thanks for reporting the OverflowError. It seems we're bumping into the system dependent nature of time handling. I'll try spinning up a Windows system with Py27 and also relaxing the try/except block and see if I can get this working cross platform.
My initial testing on Win10 with Python 3.6.1 as I write this, I get some very strange errors I'd not expect:
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> datetime.utcfromtimestamp(253402300799)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument

I'd say at the least Python should raise the same error across platforms. I may raise this issue with the CPython team.

@voutilad I guess I should point out that I'm using Python 3.6.1 on Ubuntu 12.04.

@voutilad Here's what happened for me. I tested against my laptop using ngrok, and I didn't set app.config['ASK_VERIFY_REQUESTS'] to false (so it's true by default, I'm assuming).

curl a json file: KeyError: 'HTTP_SIGNATURECERTCHAINURL'. That probably makes sense because of the old session in my json file?
Text tool in developer.amazon.com: successful response
JSON tool in developer.amazon.com: successful response
echosim.io: 'try again', no request sent to my laptop

So that seems to have fixed it for me. I'm happy to keep testing if you need to make more code updates.

I downgraded to 08.8.. I think? But still getting errors after I used zappa update.
'''
[1499894377312] [DEBUG] 2017-07-12T21:19:37.312Z cf052856-6747-11e7-9eee-01bf05e90b32 Zappa Event: {}
[1499894509135] /var/task/fuzzywuzzy/fuzz.py:35: UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning
[1499894509152] init() got an unexpected keyword argument 'path': TypeError
Traceback (most recent call last):
File "/var/task/handler.py", line 490, in lambda_handler
return LambdaHandler.lambda_handler(event, context)
File "/var/task/handler.py", line 240, in lambda_handler
handler = cls()
File "/var/task/handler.py", line 129, in init
self.app_module = importlib.import_module(self.settings.APP_MODULE)
File "/usr/lib64/python2.7/importlib/init.py", line 37, in import_module
import(name)
File "/var/task/alexa.py", line 39, in
ask = Ask(app, "/", None, path=TEMPLATE_FILE)
TypeError: init() got an unexpected keyword argument 'path'
[1499894543611] [DEBUG] 2017-07-12T21:22:23.599Z 3233a0cd-6748-11e7-8fa9-9902efa96cc1 Zappa Event: {u'body': u'IHsic2Vzc2lvbiI6IAp7InNlc3Npb25JZCI6IlNlc3Npb25JZC5kZTBmNTM5ZS03ZWJjLTRmM2QtOTVhNS0wODg2NWI4MDI3OTIiLCJhcHBsaWNhdGlvbiI6eyJhcHBsaWNhdGlvbklkIjoiYW16bjEuYXNrLnNraWxsLjEwNTRjYWVkLWUyZjgtNDE4Yy04ODUxLTY4ZjM1MWFlYzhhNCJ9LCJhdHRyaWJ1dGVzIjp7fSwidXNlciI6eyJ1c2VySWQiOiJhbXpuMS5hc2suYWNjb3VudC5BSDIzUTJTTUlCRDI1VDVYRFdFSktLNFhJRk1GTVhUWE00V0I1TkJaRFhIRURUUkEzTk1RSU1CUTc2UkJLTjNEMzVFMlA3S1BUNjdaU0g2SFZLRlJQWk41VlFMVVc2SEVRVEpENEFVWEw3VDdLNzdLNU5YUVhTRUFSRkVIUkJLWTdGUEs1N0Y1RFFNNDVHQ1BPQlI1WVdRQUZLNVBPUjY3WkdQWEZGMkZMRU5NNlpHMlNFUURORTVPWlZNNFREVUhSRkRUTFhNQ0hPREVBWUkiLCJhY2Nlc3NUb2tlbiI6bnVsbH0sIm5ldyI6dHJ1ZX0sCiJyZXF1ZXN0IjoKeyJyZXF1ZXN0SWQiOiJFZHdSZXF1ZXN0SWQuZmVmNDMyMjMtZjVlMy00NjA3LTg0YTYtNGZmOWNjOTRmYmNlIiwibG9jYWxlIjoiZW4tVVMiLCJ0eXBlIjoiSW50ZW50UmVxdWVzdCIsInRpbWVzdGFtcCI6MTQ5OTg5NDU0MzQxOCwiaW50ZW50Ijp7Im5hbWUiOiJMaXN0ZW5Ub0F1ZGlvUGxheWxpc3QiLCJzbG90cyI6eyJBdWRpb1BsYXlsaXN0Ijp7Im5hbWUiOiJBdWRpb1BsYXlsaXN0IiwidmFsdWUiOm51bGx9fX19LCJjb250ZXh0Ijp7IlN5c3RlbSI6IHsiYXBwbGljYXRpb24iOiB7ImFwcGxpY2F0aW9uSWQiOiAiYXBwbGljYXRpb25JZCJ9LCAidXNlciI6eyJ1c2VySWQiOiAidXNlcklkIiwicGVybWlzc2lvbnMiOiB7ImNvbnNlbnRUb2tlbiI6ICJjb25zZW50VG9rZW4ifSwiYWNjZXNzVG9rZW4iOiAiYWNjZXNzVG9rZW4ifSwiZGV2aWNlIjogeyAiZGV2aWNlSWQiOiAiZGV2aWNlSWQiLCJzdXBwb3J0ZWRJbnRlcmZhY2VzIjp7fSB9LCJhcGlFbmRwb2ludCI6ICJhcGlFbmRwb2ludCJ9fX0=', u'resource': u'/', u'requestContext': {u'resourceId': u'y5wn1tw6uf', u'apiId': u'2cxyf5qls2', u'resourcePath': u'/', u'httpMethod': u'POST', u'requestId': u'322bffd3-6748-11e7-8c33-ab7848e3a681', u'path': u'/dev', u'accountId': u'058100245157', u'identity': {u'apiKey': u'', u'userArn': None, u'cognitoAuthenticationType': None, u'accessKey': None, u'caller': None, u'userAgent': u'Apache-HttpClient/UNAVAILABLE (Java/1.8.0_112)', u'user': None, u'cognitoIdentityPoolId': None, u'cognitoIdentityId': None, u'cognitoAuthenticationProvider': None, u'sourceIp': u'<IP_ADDRESS>', u'accountId': None}, u'stage': u'dev'}, u'queryStringParameters': None, u'httpMethod': u'POST', u'pathParameters': None, u'headers': {u'Content-Type': u'application/json; charset=utf-8', u'Via': u'1.1 247c69d4e44cd66e062b6be2ae5d0b22.cloudfront.net (CloudFront)', u'CloudFront-Is-Desktop-Viewer': u'true', u'CloudFront-Is-SmartTV-Viewer': u'false', u'SignatureCertChainUrl': u'https://s3.amazonaws.com/echo.api/echo-api-cert-4.pem', u'CloudFront-Is-Mobile-Viewer': u'false', u'X-Forwarded-For': u'<IP_ADDRESS>, <IP_ADDRESS>', u'CloudFront-Viewer-Country': u'US', u'X-Forwarded-Port': u'443', u'Accept': u'application/json', u'User-Agent': u'Apache-HttpClient/UNAVAILABLE (Java/1.8.0_112)', u'X-Amzn-Trace-Id': u'Root=1-5966930f-3c9a218b20397906048d8168', u'Accept-Charset': u'utf-8', u'Host': u'2cxyf5qls2.execute-api.us-east-1.amazonaws.com', u'X-Forwarded-Proto': u'https', u'X-Amz-Cf-Id': u'krY-rIixj1q3T767dN6GEPd58nlK_cmZF9_Yv9NtN0EDcwP3Eu81_Q==', u'CloudFront-Is-Tablet-Viewer': u'false', u'Signature': u'Gzc5DXQ2U/Nf+bEZUwXp1OT8SL5sfnDF7QvwjYLJsSho0Z3r+QAgVU4LBHWyRMyFU0e7IuBMP2gxEVqDI8FW/ZiycWXVQor0zWiP3YxHCe9aTTiN6J2MhOrihKtSsj0d0l74yHxIN0nrtRUcYzjFxF9/FUOtSx1MjvS7yRieP8errBsU+0WkZ5acJftHRny4lvRiQEY6B3iB7a45IYBrp9UfPEfoajHaAiXqoA2hfNMsuy1HfHPOGzuIdp85PVcFl3/BYT3qP5WxVbEeo3iuBsqpRDmsFa5RtPmGm5NwNrbX74r9qKjIgzV6Bra9MzVXYMRCgVGOSB6DgXJZF3ctkw==', u'CloudFront-Forwarded-Proto': u'https'}, u'stageVariables': None, u'path': u'/', u'isBase64Encoded': True}
[1499894543611] 'NoneType' object is not callable
[1499894611311] [DEBUG] 2017-07-12T21:23:31.292Z 5a85e522-6748-11e7-8d77-7fc608a0f244 Zappa Event: {u'body': u'IHsic2Vzc2lvbiI6IAp7InNlc3Npb25JZCI6IlNlc3Npb25JZC5jMDhkYmI5Yi03MGIzLTRjODQtYWE0Ny1iMjRhYjZjNWUxMzUiLCJhcHBsaWNhdGlvbiI6eyJhcHBsaWNhdGlvbklkIjoiYW16bjEuYXNrLnNraWxsLjEwNTRjYWVkLWUyZjgtNDE4Yy04ODUxLTY4ZjM1MWFlYzhhNCJ9LCJhdHRyaWJ1dGVzIjp7fSwidXNlciI6eyJ1c2VySWQiOiJhbXpuMS5hc2suYWNjb3VudC5BSDIzUTJTTUlCRDI1VDVYRFdFSktLNFhJRk1GTVhUWE00V0I1TkJaRFhIRURUUkEzTk1RSU1CUTc2UkJLTjNEMzVFMlA3S1BUNjdaU0g2SFZLRlJQWk41VlFMVVc2SEVRVEpENEFVWEw3VDdLNzdLNU5YUVhTRUFSRkVIUkJLWTdGUEs1N0Y1RFFNNDVHQ1BPQlI1WVdRQUZLNVBPUjY3WkdQWEZGMkZMRU5NNlpHMlNFUURORTVPWlZNNFREVUhSRkRUTFhNQ0hPREVBWUkiLCJhY2Nlc3NUb2tlbiI6bnVsbH0sIm5ldyI6dHJ1ZX0sCiJyZXF1ZXN0IjoKeyJyZXF1ZXN0SWQiOiJFZHdSZXF1ZXN0SWQuY2Q3NjRmYWItMWViOC00NjllLWEwNWMtZTMxN2Y0YjZjODc2IiwibG9jYWxlIjoiZW4tVVMiLCJ0eXBlIjoiSW50ZW50UmVxdWVzdCIsInRpbWVzdGFtcCI6MTQ5OTg5NDYxMTEwNSwiaW50ZW50Ijp7Im5hbWUiOiJMaXN0ZW5Ub0F1ZGlvUGxheWxpc3RSZWNlbnQiLCJzbG90cyI6e319fSwiY29udGV4dCI6eyJTeXN0ZW0iOiB7ImFwcGxpY2F0aW9uIjogeyJhcHBsaWNhdGlvbklkIjogImFwcGxpY2F0aW9uSWQifSwgInVzZXIiOnsidXNlcklkIjogInVzZXJJZCIsInBlcm1pc3Npb25zIjogeyJjb25zZW50VG9rZW4iOiAiY29uc2VudFRva2VuIn0sImFjY2Vzc1Rva2VuIjogImFjY2Vzc1Rva2VuIn0sImRldmljZSI6IHsgImRldmljZUlkIjogImRldmljZUlkIiwic3VwcG9ydGVkSW50ZXJmYWNlcyI6e30gfSwiYXBpRW5kcG9pbnQiOiAiYXBpRW5kcG9pbnQifX19', u'resource': u'/', u'requestContext': {u'resourceId': u'y5wn1tw6uf', u'apiId': u'2cxyf5qls2', u'resourcePath': u'/', u'httpMethod': u'POST', u'requestId': u'5a7df5a6-6748-11e7-a2ae-07e3fb59690c', u'path': u'/dev', u'accountId': u'058100245157', u'identity': {u'apiKey': u'', u'userArn': None, u'cognitoAuthenticationType': None, u'accessKey': None, u'caller': None, u'userAgent': u'Apache-HttpClient/UNAVAILABLE (Java/1.8.0_112)', u'user': None, u'cognitoIdentityPoolId': None, u'cognitoIdentityId': None, u'cognitoAuthenticationProvider': None, u'sourceIp': u'<IP_ADDRESS>', u'accountId': None}, u'stage': u'dev'}, u'queryStringParameters': None, u'httpMethod': u'POST', u'pathParameters': None, u'headers': {u'Content-Type': u'application/json; charset=utf-8', u'Via': u'1.1 6419ba8f3bd94b651d416054d9416f1e.cloudfront.net (CloudFront)', u'CloudFront-Is-Desktop-Viewer': u'true', u'CloudFront-Is-SmartTV-Viewer': u'false', u'SignatureCertChainUrl': u'https://s3.amazonaws.com/echo.api/echo-api-cert-4.pem', u'CloudFront-Is-Mobile-Viewer': u'false', u'X-Forwarded-For': u'<IP_ADDRESS>, <IP_ADDRESS>', u'CloudFront-Viewer-Country': u'US', u'X-Forwarded-Port': u'443', u'Accept': u'application/json', u'User-Agent': u'Apache-HttpClient/UNAVAILABLE (Java/1.8.0_112)', u'X-Amzn-Trace-Id': u'Root=1-59669353-4f912056004fc50a262a4104', u'Accept-Charset': u'utf-8', u'Host': u'2cxyf5qls2.execute-api.us-east-1.amazonaws.com', u'X-Forwarded-Proto': u'https', u'X-Amz-Cf-Id': u'hsX3ECJh8-eEBsBLl_XraylFFXKJrbjYydi3783Fe8WhAYDYa5YdTw==', u'CloudFront-Is-Tablet-Viewer': u'false', u'Signature': u'atQ7z+5o3xdewqaz35RfuoKJQ8pbpdkA/rMztLXe4yAskfsIdDonAMeoOfghvrFsa9TL+P8wAbwpaUm1sdRoBKy5dE2deTLssRQWMHRuZ9EcjifAkW8LRVyI9q6w3hiNDIcYq0nOsvicAa5w6qnBsLnzVokHtMgNyocsNo9Q0aYVvRvby624gjYUUfNcgO150+h3mGgCTgE8UdCy1qeFmzGeyQTEtHKWxGfd65UOxSHmttDoPLmHBfk/A6enypB9U9eCtgVm+5J5y2lJnNyPG4qSK6UCiIvO5h/5Kdf8TGmXq3OCwmqrIpRZ4DoD9OxDxjRTkgleCz7kt4QjVAfhCw==', u'CloudFront-Forwarded-Proto': u'https'}, u'stageVariables': None, u'path': u'/', u'isBase64Encoded': True}
[1499894611311] 'NoneType' object is not callable
[1499894616640] [DEBUG] 2017-07-12T21:23:36.640Z 5db4b6b0-6748-11e7-80bc-19e1a25419b5 Zappa Event: {u'account': u'058100245157', u'region': u'us-east-1', u'detail': {}, u'detail-type': u'Scheduled Event', u'source': u'aws.events', u'version': u'0', u'time': u'2017-07-12T21:23:15Z', u'id': u'32a1354f-dbab-491f-87fe-2ca41abb6710', u'resources': [u'arn:aws:events:us-east-1:058100245157:rule/kodi-alexa-mast-dev-zappa-keep-warm-handler.keep_warm_callback']}
[1499894616641] [DEBUG] 2017-07-12T21:23:36.640Z 5db4b6b0-6748-11e7-80bc-19e1a25419b5 Zappa Event: {}
'''

@pzzd That KeyError is to be expected if testing locally and not disabling verification. It's nothing to do with the session and it's because the request you're making with CURL isn't authenticating itself using Amazon's certificate (which makes sense since you're not Amazon).
I'll make a new release after I can run some more tests across platforms just to be safe.

@voutilad I'm still seeing errors on my end. I have tried version 0.9.5 and also pip install -U git+https://github.com/johnwheeler/flask-ask.
In my .py file I have app.config['ASK_VERIFY_REQUESTS'] = False and app.run(debug=True) set.
My problem occurs when using ngrok and testing with the Amazon text tool. Amazon returns "The remote endpoint could not be called, or the response it returned was invalid." and nothing gets logged by Flask-Ask.

@tguidon if nothing is logged by Flask-Ask chances are it's an issue with your ngrok setup. Can you try testing locally with curl or a similar tool per my steps in one of the previous comments?

@voutilad yep you can ignore all that 🙃. I had the wrong SSL settings in the Amazon developer panel.
Using 0.9.5 and setting app.config['ASK_VERIFY_REQUESTS'] = False allows me to test with the Amazon Text simulator.
Thanks!

v0.9.6 contains the latest changes in master for better handling of timestamps.


Disable the mention of bot

just a question
is it somehow possible to remove the need for @botname and change it to a prefix like !leaderboard ?
my users to like to write so much each time
and yes I know its lazy

should make it an option within the config.
"Mention_bot = True or False // True = @botName !leaderboard, False = !leaderboard"
Something like that <3

What do you think about having it as a slash command in discord? Something like:
/leaderboard [serverName]
Where the serverName is also optional, depending on if multiple servers are setup or not.
??? :)

Would be awesome it you could implement it like that

should be like /leaderboard [servername]
bc of multi servers.

should be like /leaderboard [servername] bc of multi servers.

Yes, this will, however, only be the case if a command is enabled at multiple servers. I'll push a rewritten version of the bot that will exclusively use slash commands. Stay tuned :)

Will test it right away

See https://github.com/FlorianSW/cftools-discord/releases/tag/v2.0.0-alpha1 as an alpha version of the bot using slash commands. I would really appreciate feedback 🙏

I'll help test it as well.

hey bud
if I run the bot with
`npm start

<EMAIL_ADDRESS>prestart
npm run build

Error: EACCES: permission denied, mkdir '/root/.nvm/versions/node/v16.6.2'

<EMAIL_ADDRESS>start
node .

internal/modules/cjs/loader.js:638 throw err; ^
Error: Cannot find module 'node:events' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object. (/home/docker/skvadcf/cftools-discord/node_modules/discord.js/src/client/BaseClient.js:3:22) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3)`
but if I run it just with node . it will start and I don't know why?
any ideas ?

What version of node do you use? I might have written the wrong requirement into the release notes. You need at least 17.6 now, thanks to what nodejs version Discordjs requires 🤷

updated to 17.6 now its running
quick question for what is the file commands/leaderboard.cfg

quick question for what is the file commands/leaderboard.cfg

Oops, that is a leftover from first iterations  🙈
I'll clean this up ☺

I did not hear any bad feedback so far, on the other hand I got some feedback mentioning that it works like expected :) I'm closing this issue therefore. Feel free to open a new issue when there are issues :)


The result of fiery static

If I want to get the result of Fiery Static of Setting2 in Table I of your paper, should I use the config in "configs/single_timeframe.yml"? When I train the network using this config file from scratch, the IOU is 39.2 when I use the "evaluate.py". However, in the paper, the result is 35.8. Is there another parameter needed to be modified, when I want the network to be one frame as input and the segmentation result of the present frame as output?

Hi,
If you want to reproduce the results of FIERY Static in the lift-splat-shoot evaluation setting, you should train the config https://github.com/wayveai/fiery/blob/master/fiery/configs/literature/static_lss_setting.yml
The configs/single_timeframe.yml config additionally masks vehicle labels that are not visible from the camera, which is why the IoU is larger. This masking was not present in the original lift-splat-shoot evaluation, so for a fairer comparison it was removed.

OK, thanks!


javascript errors from rails javascript_include_tag 'application' swallowed by ember

Hello, I'm not sure this is the right way to do it, but to smooth the transition from the asset pipeline to ember-cli I am right now juxtaposing my old js files from rails, with the ones of ember-cli (in a separate root folder frontend/).
So in my rails layout application.html.haml I have something like:
    - if use_ember?
      = javascript_include_tag "ember-init/assets"
      = include_ember_script_tags :frontend
    - else
      = javascript_include_tag "notember/notember"
    = javascript_include_tag "application"

My problem is: normal javascript errors in app/assets/javascript/application.js are not logged to the console anymore. Would you see of any possible trick to make them reappear? Right now I'm already using the following lines to log my Ember errors (desactivating those lines doesn't help to show js errors of the asset pipeline).
//in app.js
Ember.RSVP.on('error', function(error) {
  log(error,"red");
  Ember.Logger.assert(false, error);
});

Ember.onerror = function(error) {
  error_handling(error.message,"","",error.stack);
  return true;
};

window.onerror = function (msg, url, line,col,error) {//https://bugsnag.com/blog/js-stacktraces/
  var stack=(typeof error==="undefined" ? "" : error.stack);
  error_handling(msg,url,line,stack);
  if(!Ember.isNone(console)) {console.trace();}
  return true;
};

function error_handling(msg,url,line,stack) {...}

When I say 'errors swallowed', I mean not logged in the console. Maybe I could see them by opting in for 'debug all errors', but unfortunately I have to leave the "script" tab disabled in Firebug or my app gets regularly crashed.
Many thanks

We're sorry that this issue has sat for so long.
The project is now maintained by thoughtbot, and we're declaring an issue bankruptcy of sorts.
We're closing this issue. If what you've described is still a problem, please comment on this issue and we'll reopen.
Thanks for your patience.


Add limits calculator

Is your feature request related to a problem? Please describe.
Add the limits calculator to calculus section.

Assign this to me ! Will do that

@SabariGanesh-K any update?


Update type annotation for create_model function

Update type annotation for create_model function
Updated create_model return type annotation to return type which inherits from __base__ argument.
For instance, before this PR mypy will fail on the code below:
from pydantic import BaseModel, create_model

class Point(BaseModel):
    x: int
    y: int

NewPoint = create_model('NewPoint', __base__=Point)

point = NewPoint.parse_obj(...)
point.x = 10  # mypy will fail here

Checklist

[x] Unit tests for the changes exist
[x] Tests pass on CI and coverage remains at 100%
[x] Documentation reflects the changes where applicable
[x] changes/<pull request or issue id>-<github username>.md file added describing change
(see changes/README.md for details)

this looks good. As far as I'm aware it shouldn't be included in v1.7.2 so I won't merge it yet.
let me know if I'm missing something.

thanks a lot.


pkg/script: change Docker config to use overlay2

overlay is the old/deprecated overlayfs driver and does not work out
on top of btrfs, leading kube-spawn to fail out of the box when it
initialises a cluster on top of a btrfs filesystem.

bump? hopefully this is fairly uncontroversial..


[Bug]: Query for CL pools Superfluid equivalent staked returns null

What happened?
On the endpoint for SFS by Validator denom:
https://lcd.osmosis.zone/osmosis/superfluid/v1beta1/superfluid_delegations_by_validator_denom?validator_address=osmovaloper1qx6kgrla69wmz90tn379p4kaux5prdkucgvfuf&denom=cl/pool/1135
the equivalent staked amount of OSMO returns null.
This should show the equivalent amount of staked OSMO that the liquidity value represents.
Requested in order to display the current proportion of Staked OSMO that is SFS staked on dashboards.
Osmosis Version
N/A
How to reproduce?
No response

Thanks! Lets figure out getting equivalent staked amount fixed. Cc @mattverse @AlpinYukseloglu


502 error when behind corporate proxy

Summary
When trying to use Chat with Dev Assistant I am getting 502 error. We have proxy in our company. I have set it properly in vs code, salesforce cli settings (was not working without it) and in my environment variables.
Steps To Reproduce:

Open Dev Assistant Chat
Type anything and hit Enter

Actual result
502 error
Additional information
Debug log for Agentforce for Developers:
10:47:03.818 sfApiClient.getSfApiUrl
10:47:03.818 DefaultOrg ~ Using cached JWT.
10:47:03.818 sfApiClient.getSfApiRegion
10:47:03.818 Tracing header sfapi /embeddings
10:47:03.971 In AxiosClient, axiosClient.handleError AxiosError: Request failed with status code 502
10:47:03.972 Error creating embeddings
10:47:03.973 Error: Error encountered requesting chat stream:
11:03:13.675 ActiveTextEditor.changeHandler
11:07:12.979 ActiveTextEditor.changeHandler

Salesforce Extension Version in VS Code: v62.2.0
Salesforce Einstein For Developers Version in VS Code: v1.2.0
OS and version: Windows_NT x64 10.0.19045
VS Code version: 1.93.1

Hi @lechum2
Looks like call to verify the prompt is failing.  Are the other features functional?
Are you able to see inline autocompletions in an Apex or LWC file?
If you right click a method in an Apex class can you generate a test? (Agentforce: generate a test)
Trying to narrow down if this is specific to just requests made from the dev assistant.

Hi @gbockus-sf
No, the inline completions and test generation is not working either. Here are some more debug logs:
09:38:53.425 'Congratulations, your extension salesforce.salesforcedx-einstein-gpt is now active!'
09:38:53.426 PromptHistoryViewProvider.constructor
09:38:53.437 START: OramaEmbeddingDatabaseSupplier.startup()
09:38:53.510 END: OramaEmbeddingDatabaseSupplier.startup()
09:38:53.512 ChatFeature.registerProvider for webview
09:38:53.512 ChatFeature.registerCommands
09:38:53.512 Feature: Chat enabled
09:38:53.514 DefaultOrg ~ Initialized with Org ID: *** and Username: ***
09:38:53.514 Getting a JWT from the DefaultOrg. Tracing header for jwt request:
09:38:53.925 DefaultOrg ~ JWT successfully retrieved.
09:38:53.925 InlineCompletionsFeature.disable
09:38:53.926 TestGenerationFeature.disable
09:38:53.928 Feature: Inline Completions enabled
09:38:53.928 TestGenerationFeature.registerCommands
09:38:53.929 TestGenerationFeature.registerCommands: Test generation enabled
09:38:53.930 salesforce.salesforcedx-einstein-gpt status: Ready
09:38:53.930 salesforce.salesforcedx-einstein-gpt enabled! (default org has permission)
09:38:54.40 WorkspaceStatisticService: Sobject context size: 19
10:11:51.605 inline provider triggered
10:11:51.605 settingsDelay:
10:11:51.605 delayTime:
10:11:51.856 JWT is expired.
10:11:51.856 Getting a JWT from the DefaultOrg. Tracing header for jwt request:
10:11:52.234 DefaultOrg ~ JWT successfully retrieved.
10:11:52.235 InlineCompletionService triggerPredictor.shouldTriggerSuggestions complete
10:11:52.294 contextBuilderDuration took 57.0216 ms
10:11:52.294 InlineContextBuilder.getContext complete
10:11:52.295 sfApiClient.inlineQuery inputs:
10:11:52.295 sfApiClient.getSfApiUrl
10:11:52.295 DefaultOrg ~ Using cached JWT.
10:11:52.295 sfApiClient.getSfApiRegion
10:11:52.295 Tracing header sfapi /generations
10:11:52.465 In AxiosClient, axiosClient.handleError AxiosError: Request failed with status code 502
10:11:52.467 Failed to retrieve inline completions from SfAPI
10:11:52.467 InlineCompletionService.getInlineCompletions: Error requesting inline completion

10:13:14.692 Starting Agentforce: Generate a Test
10:13:14.692 Enter generateApexTest
10:13:14.692 set promptId
10:13:14.693 Retrieving symbols
10:13:14.715 Symbols retrieved
10:13:14.715 Extracting method to text
10:13:14.716 Retrieving method ranges
10:13:14.716 Retrieving symbols
10:13:14.716 Symbols retrieved
10:13:14.716 Method ranges retrieved
10:13:14.716 TestCaseService.captureSelectedApexTestPath
10:13:16.807 Retrieving method ranges
10:13:16.807 Retrieving symbols
10:13:16.896 Symbols retrieved
10:13:16.897 Method ranges retrieved
10:13:21.713 Generating completion...
10:13:21.713 ApiClient Setting value: Salesforce API
10:13:21.714 Context builder is enabled
10:13:21.714 ContextBuilder.getContext
10:13:21.714 Executing gatherer ApexMethodGatherer
10:13:21.714 Extracting method text
10:13:21.714 Method text extracted
10:13:21.714 Retrieving symbols
10:13:21.729 Symbols retrieved
10:13:21.733 ApexMethodGatherer took 19.4532 ms
10:13:21.734 Time spent running gatherer
10:13:21.734 Executing gatherer ApexSymbolGatherer
10:13:21.734 ApexSymbolGatherer: No apex files found in prompt
10:13:21.734 ApexSymbolGatherer called with context
10:13:21.735 ApexSymbolGatherer took 1.3532 ms
10:13:21.735 Time spent running gatherer
10:13:21.735 Executing gatherer SchemaGatherer
10:13:21.735 No SObject found in prompt
10:13:21.736 SchemaGatherer took 0.4219 ms
10:13:21.736 Time spent running gatherer
10:13:21.736 Gatherer returned empty context
10:13:21.736 contextBuilderDuration took 21.8806 ms
10:13:21.736 ContextBuilder.getContext complete
10:13:21.736 TCG Prompt builder is enabled
10:13:21.736 TestCaseGenPromptBuilder.build
10:13:21.736 TestCaseGenPromptBuilder.build characters available for context:
10:13:21.736 TestCaseGenPromptBuilder: No test methods provided
10:13:21.736 TestCaseGenPromptBuilder: No schema provided
10:13:21.737 promptBuilderDuration took 0.4082 ms
10:13:21.737 TestCaseGenPromptBuilder.build complete
10:13:21.737 Generating completion...
10:13:21.737 sfApiClient.naturalLanguageQuery
10:13:21.737 Here is some Apex code.

***Apex Code Context***

Now please write a single unit test method for the `anyFromSetIsPartOfValue` method.
10:13:21.737 sfApiClient.getSfApiUrl
10:13:21.737 DefaultOrg ~ Using cached JWT.
10:13:21.738 sfApiClient.getSfApiRegion
10:13:21.738 Tracing header sfapi /generations
10:13:21.922 In AxiosClient, axiosClient.handleError AxiosError: Request failed with status code 502
10:13:21.923 Error encountered attempting to call API endpoint
10:13:21.924 Exit generateApexTest
10:13:21.924 Agentforce: Generate a Test completed.
10:14:21.90 ActiveTextEditor.changeHandler

Same issue


Remove the tooltip if Title is empty

Hi,
   I have series of div tags where only few div tag contains Title, Rest will be having Empty.

  In such case, am getting the tooltip as blank . Can this be removable, so that if title is empty, we shouldn't get the tooltip.

Thanks
Pradeesh

I fixed it, Thanks.

How to fix this issue?


To-do 20161208-20161213

[ ] Go through Marcel's final comments
[ ] Update surfdrive files
[ ] Update qualtrics download files (same files as above)

Reply here if I forgot something.

I updated all things in the qualtrics and github (added to pull request). Please take a look in qualtrics but I think the solution is quite nice.
The only thing is that we may want to add a third time window per day?


how to put visibleif condition based on the selection done on a type matrix

Are you requesting a feature, reporting a bug or ask a question?
Question
What is the current behavior?
how to put visibleif condition based on the selection done on a type matrix
What is the expected behavior?
How would you reproduce the current behavior (if this is a bug)?
Provide the test code and the tested page URL (if applicable)
Tested page URL:
Test code
your_code_here

Specify your

browser:
browser version:
surveyjs platform (angular or react or jquery or knockout or vue):
surveyjs version:

@syash2015 Here is the example: https://plnkr.co/edit/oOhqGi?p=preview
Thank you,
Andrew

@andrewtelnov its done. thanks alot sir.


Update of quick guide to latest execute API

Codecov Report

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

@@            Coverage Diff            @@
##             master     #881   +/-   ##
=========================================
  Coverage     92.83%   92.83%
  Complexity      388      388
=========================================
  Files             2        2
  Lines          5810     5810
  Branches       1512     1512
=========================================
  Hits           5394     5394
  Misses          205      205
  Partials        211      211

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 853f2c7...ab338be. Read the comment docs.

Merged into master!
Thank you again! I will update the release notes when I have a chance.


Allow Variants on any Action

We allow the variant syntax on package actions to handle the name, or provider, changing across different operating systems.
The same could be used for files and commands, where config locations or even commands differ.

Closed by #122


About the warp direction

Hello @haofeixu . Thank you for the paper and the code.
In your code https://github.com/haofeixu/aanet/blob/master/nets/warp.py  line 55
offset = torch.cat((-disp, torch.zeros_like(disp)), dim=1)  # [B, 2, H, W]
Here you warp the right img to match the left, so the right one should do right shift operation. So I think here should be disp, not -disp.  Is it right?

The disparity map is relative to the left image (i.e., left x coordinate - right x coordinate = disp (positive)), so to find the correponding pixel on the right image, we should do x - disp.

The disparity map is relative to the left image (i.e., left x coordinate - right x coordinate = disp (positive)), so to find the correponding pixel on the right image, we should do x - disp.

Yes, you are right.  I have found my mistake. Thank you very much.


Rudoi/honor machinedeployments in machine phase

What this PR does / why we need it:
The apply-machines phase will now detect and apply MachineDeployments as nodes, and therefore, so will clusterctl create cluster.
Release note:

Support MachineDeployments as part of the apply-machines phase

@h0tbird I created a new function specific to MachineDeployments as to not break that function.


example for #3542

[X] Do only one thing
[X] Non breaking API changes
[X] Tested

What did this pull request do?

Solve the problem I raised in #3542
User Case Description

after fix we can open db like this:
db, err = gorm.OpenD(sqlite.Open(filepath.Join(os.TempDir(), "gorm.db")))

doesn't sound an issue to me, usually user only need to initialize the gorm.DB once and I would like user clearly knows he can use the gorm.Config to make some changes.

thank you for your PR anyway.


Arabic translation of MongoDB Waypoint

[ ] Store Data in MongoDB

خزّن المعلومات في  MongoDB

Closed in favor of https://github.com/FreeCodeCamp/TranslationExpansion/issues/34
Please continue discussion there.


feature: NativeAvatarGroup needs to be created.

issue is related to issue number wrappid/core#61

A already issue in created in core related to this.

no work done from my side on this issue


Trouble getting this to work at all (React)

I recently found this extension and am super excited about it, but cannot seem to get it to work. I have installed the extension without modifying any settings and I do not see any inline parameter hints at all. I'm working on a React project. Is there something I'm missing? Thanks in advance!

Same, i've just installed this extension without any additional config setup / changes, and restarted VS Code too, to no avail.
I am also working on a React project.

We don't need this extension anymore, vscode has own support to inlay hints
"editor.inlayHints.enabled": "on",
"typescript.inlayHints.parameterNames.enabled": "all",
"typescript.inlayHints.functionLikeReturnTypes.enabled": true,
"typescript.inlayHints.variableTypes.enabled": true,
"typescript.inlayHints.propertyDeclarationTypes.enabled": true,
"typescript.inlayHints.enumMemberValues.enabled": true,


Include pacstall-programs in Repology

Is your feature request related to a problem? Please describe.
Repology is a database service which tracks and compares packages in a plethora of repositories, from Linux distros to specialized repos like Chocolatey and crates.io.
Describe the solution you'd like
Prepare pacstall-programs in order to be suitable for inclusion in repology database.
Describe alternatives you've considered
No alternatives were considered. Repology is a de facto standard solution on its niche.
Additional context

Repology Documentation: http://repology.org/docs
Guidelines for inclusion: https://repology.org/addrepo

Yeah, so how exactly would we do this currently?

I would suggest something like a batch script that walks through the repository, extracts the relevant information and generates a JSON listing from that extracted info. It would be something like the packagelist on steroids!

we created a prototype python script for this in our discord. It's not done yet though.

Amdmi3 said any HTTP link can be used.
On the other hand, he suggested not to use the master branch on github, because it would pollute the commit logs.
In this scenario, I suggest to upload this JSON file on some dedicated page on https://pacstall.dev/ ; something like https://pacstall.dev/packagelist.json.
(As a side project, it would be cool to add a fancy search engine...)

https://repology.org/repository/pacstall
🎉


WIP: cfg flag to skip bytecode verif

Motivation
Note: I'm open to a better way to achieve this. This was just the easiest way I found.
Need to bypass verifier in some instances for instruction calibration.
Currently hand-writing bytecode to allow for calibrating VM costs, however verifier is preventing certain states.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Checking that verifier does not cause restrictions

Can you share the non-verifying code that you are trying to run, and perhaps we can suggest alternative ways of writing the same code that will verify? The VM assumes the bytecode verifier has run, so the meaning (either in terms of results or execution time) of running non-verifiable code is not defined. I would not want to conclude anything about performance by running such code.


vencord: 1.7.4 -> 1.7.8

Description of changes
Closes https://github.com/NixOS/nixpkgs/issues/305030
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

could someone please merge this?

should this be backported?

I don't see a reason for not backporting. It's parent Discord is almost always backported to latest stable release.
However this particular PR can't be automatically backported by the bot. One needs to manually cherry pick all the previous commits, including the file rename commit. Feel free to pick the job.

See https://github.com/NixOS/nixpkgs/pull/305542


MRG: Fix re-raising of errors

FYI when using this pattern:
try:
    ...
except Exception as exp:
    ...
    raise exp

it gives a better traceback just to do at the end:
    raise

because then the proper/full traceback is given, instead of a traceback pointing only to the raise exp line (i.e., better than what we see in https://github.com/mne-tools/mne-python/issues/3945).
I already pushed https://github.com/mne-tools/mne-python/commit/f1fb89636a7086f2ecbe32e5da58b509cc770605 directly to master without realizing there were other occurrences in our code.

Good to know, thanks! PR looks good to me.

@christianbrodbeck FYI we usually set title to MRG+N when giving approval nowadays. I'll do it for you here :)

Thanks :)

LGTM
merge when travis is happy

I killed Travis -- all builds passed except OSX that hadn't started yet after hours of waiting.