remove dist folder and use github releases and tagging instead

With git it's easy to get back to reproducible source trees using tags and GitHub provides Releases with the ability to add binaries. Adding releases to the source tree is unnecessary and it makes repositories larger and longer to clone (currently 13 out of 16MB are used for binaries)

Done. Had to force push the changes to remove dist from previous commits as well. I suppose anyone who has forked/clone must work on a fresh copy?
PS: I won't be active in this month because of my finals.


Accessibility - 2.1.1 Keyboard

When viewing the website in mobile mode, mobile navigation toggle is not accessible by keyboard and user is not able to access the navigation links. Recommend implement keyboard access method (either by using button/anchor element or javascripts)

Resolved with #1380


Grasping doesn't occurs while robot takes detail.

Hi, Jennifer!
I've got problem with grasping an object, since I think grasp-fix plugin was installed incorrectly. I already tried to reinstall it a few times' but robot still doesn't grasp an object. Can you please take a look?
I don't get any messages about grasping fix and when robot takes the cube, there is not INFO message about grasping also.

Hi,
sorry you're having trouble with this. It doesn't seem to load the plugin. You should at least see the message "Loading grasp-fix plugin". I take it you re-compiled your catkin workspace a few times? Are you loading the devel/setup.bash either manually or from your .bashrc? All you other programs in your catkin workspace can be run, e.g. by rosrun or roslauch?

Yes, I'm loading setup.bash, so If in terminal I enter roslaunch and press TAB, terminal gives me an opportunity to choose gazebo_grasp_plugin, but I can not run it with roslaunch or with rosrun:

Maybe I should add a plugin using gazebo_world_plugin_loader?

Hi,
the gazebo_grasp_plugin is a Gazebo model plugin, so you cannot start it. And because it is a model plugin, it should automatically be loaded when you load your robot URDF, you cannot use it in the gazebo_world_plugin_loader.
This should be done automatically, but maybe you need to add the library to the GAZEBO_PLUGIN_PATH explicitly.
Run this in your terminal where you start up the gazebo node:
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:`locate libgazebo_grasp_fix.so`
Does it work with that?
If this still doesn't work, another quick way to check if the problem is the library not being found:
introduce a typo into your URDF file (e.g. "libgazebo_NO_grasp_fix.so"), and see if any error is printed. You can also introduce other stupid errors into the URDF/XACRO file and see if the errors are printed as expected. If obious errors are not printed, then for some reason it is not loading  your URDF with the grasp fix.

Hi,
if I run this command:
export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH: 'locate libgazebo_grasp_fix.so'
terminal tells me something like this:

Also changing of URDF or XACRO files doesn't give effect. I think it's because I connect to robot files that are in the cloud of the laboratory and I can't change them, since I'm not the administrator of the lab.
But I solved my problem of cube dropping, by changing way of robot work, so now robot's arm doesn't shake and hence detail is firmly fixed in the gripper.
So thank you for your help!

Ok, glad you resolved the problem in other ways.
That it references the library file in some "trash" folder seems a bit suspicious, maybe it's got to do with that. But in any case, now that you've solved it it doesn't matter any more ;)
Cheers!


SIYI message self._seq variable does not reset to 0.

SIYI message self._seq variable starts at 0 and increments everytime a request function is used in the SDK. When it hits 65536 it gives this warning:
[SIYISDK::incrementSEQ] :   Sequence value is greater than 65535. Resetting to zero
But the variable does not reset to 0 and this warning keeps showing and the request does not complete.
I propose to add this line after line 147 in siyi-message.py: self._seq = 0

Done. Thanks @SmolBoi96


Add ManualSpeedTestITCase For Assessing State Performance

This should be used to test whether there are any obvious performance
regressions between releases. Somewhat similar to the other manual tests
that have @Ignore set these have to be run manually. (for now)
R: @rmetzger for review

@rmetzger I changed to FsStateBackend. What do you think now?

Merge it :)


Support templating in environment variables

Support environment variable expansion using templates /cc @vpillac
Few problems:

Environment variables are used for parameter substitution, but if they themselves have parameters, then 2-pass/n-pass
Ordering of the passes, with/without nested references
Potential recursion

Another example I wanted to do, and I can't at the moment:
env:
  GIT_COMMIT: "$(git rev-parse --abbrev-ref HEAD)"


No support for SEGGER RTT STDIO

It would be nice to be able to use SEGGER RTT as an STDIO driver in the the pico-sdk.
The main advantages of RTT over semihosting are the speed of data transfer and not halting execution.
RTT is widely used and even has support in OpenOCD.

Closing this as it's been done. Add the following to your cmake file...
pico_enable_stdio_rtt(hello_serial 1)

Or change the default.
cmake .. -DPICO_STDIO_RTT=1 -DPICO_STDIO_UART=0


Web socket closed - [1006 - ].

What issue do you have? Please be as thorough and explicit as possible.
message in the log of, Web socket closed - [1006 - ].
Details of your setup.
Do you use Homebridge or HOOBS?

homebridge v1.1.6
homebridge-ewelink 2.25.1

Which version of Homebridge/HOOBS do you have?
1.1.6
Which version of this plugin (homebridge-ewelink) do you have?
2.25.1
Please paste any relevant logs below. It helps if you can turn debug and debugReqRes in the package settings for more thorough logging.

If you are posting an error then it is helpful for me to also see the previous few lines as this can show the cause of the error.

[9/9/2020, 6:10:58 PM] [eWeLink] 🟢  eWeLink setup complete. If you're enjoying this package please consider a ⭐  on GitHub!
[9/9/2020, 6:11:00 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:00 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:06 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:11:11 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:11 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:16 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:11:21 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:21 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:26 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:11:32 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:32 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:37 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:11:42 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:42 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:48 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:11:53 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:11:53 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:11:58 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:12:03 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:12:03 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:12:08 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:12:14 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:12:14 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:12:19 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:12:24 PM] [eWeLink] Web socket closed - [1006 - ].
[9/9/2020, 6:12:24 PM] [eWeLink] Web socket will try to reconnect in five seconds.
[9/9/2020, 6:12:30 PM] [eWeLink] Sending WS login request.
[9/9/2020, 6:12:35 PM] [eWeLink] Web socket closed - [1006 - ].
...

does this happen even after restarting homebridge?

is this still an issue?

I'm having the same problem here...

hi @sprega
There are a number of reasons why this can occur.

drops in internet connection
using a separate ewelink account for homebridge
or indeed an issue with the plugin i have overlooked.

If you indeed continue to get these messages then can i get you to create a new issue using the template?
Thanks

Hi @bwp91
1- "drops in internet connection": connection quality is really good
2- "using a separate ewelink account for homebridge": I have just one account
3- "or indeed an issue with the plugin i have overlooked": well... it's possible. Anyone else reported the same issue?
Thanks for your help!


Go to Definition is showing metadata instead actual F# code in a C# project that has a reference to a F# project.

I have a C# and a Project Reference to an F# class library in @VisualStudio; On the C# code when I select a F# Type and press F12 it goes to the metadata view C# version of the F# Type instead of going to the Definition in the .fs file. When debugging, It goes to the .fs file correctly.

Visual Studio 2017 Version 15.8.0 Preview 1.1

Closing as duplicate of #3497


[1.11] Bump dcos-net

High-level description
Bump dcos-net
Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS_OSS-3602 L4LB unstable when something is deployed in the cluster

Related tickets (optional)
Other tickets related to this change:
Checklist for all PRs

[x] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change:
[x] Included a test which will fail if code is reverted but test is not. If there is no test please explain here: none
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[x] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[x] Test Results: [link to CI job test results for component]
[x] Code Coverage (if available): [link to code coverage report]
https://github.com/dcos/dcos-net/compare/2dcd3bf655fc6d382d16a418ec82699b5bae8446...0f269553af3e7a45b03503e186c84f22ef31ef4e
https://circleci.com/gh/dcos/dcos-net/525
https://codecov.io/gh/dcos/dcos-net/commit/0f269553af3e7a45b03503e186c84f22ef31ef4e

PLEASE FILL IN THE TEMPLATE ABOVE / DO NOT REMOVE ANY SECTIONS ABOVE THIS LINE
Instructions and review process
What is the review process and when will my changes land?
All PRs require 2 approvals using GitHub's pull request reviews.
Reviewers should be:

Developers who understand the code being modified.
Developers responsible for code that interacts with or depends on the code being modified.

It is best to proactively ask for 2 reviews by @mentioning the candidate reviewers in the PR comments area. The responsibility is on the developer submitting the PR to follow-up with reviewers and make sure a PR is reviewed in a timely manner. Once a PR has 2 ship-it's, no red reviews, and all tests are green it will be included in the next train.

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label [Ready For Review]


Multiple terminal management

This is blocked on https://github.com/Microsoft/vscode/issues/8038

Decision on UX https://github.com/Microsoft/vscode/issues/7732


Rebind Memory Idiomatically

While working on String stuff, I came across many lines that could be replaced by a single, more modern utterance.
(no related issue)

@swift-ci please test

Apologies for the review request spam; I'm not sure why this happened.

@swift-ci please benchmark Apple silicon

Performance (arm64): -O

Improvement
OLD
NEW
DELTA
RATIO

NaiveRRC.append.largeContiguous
0.082
0.0
-98.8%
83.00x (?)

Set.subtracting.Empty.Box
13.413
12.163
-9.3%
1.10x (?)

ReversedBidirectional
4775.0
4338.0
-9.2%
1.10x (?)

DataSetCountMedium
202.667
184.857
-8.8%
1.10x (?)

Code size: -O
Performance (arm64): -Osize

Regression
OLD
NEW
DELTA
RATIO

ObserverForwarderStruct
192.727
218.125
+13.2%
0.88x (?)

Improvement
OLD
NEW
DELTA
RATIO

DataSetCountMedium
205.814
185.0
-10.1%
1.11x (?)

StringHasSuffixAscii
1403.846
1279.333
-8.9%
1.10x

ReversedBidirectional
5431.0
4994.0
-8.0%
1.09x (?)

Code size: -Osize
Performance (arm64): -Onone

Regression
OLD
NEW
DELTA
RATIO

SubstringRemoveFirst1
0.077
0.125
+61.5%
0.62x (?)

ArrayAppendGenericStructs
649.412
860.0
+32.4%
0.76x (?)

ArrayAppendToGeneric
327.797
366.571
+11.8%
0.89x (?)

StringHasPrefixAscii
1435.294
1560.0
+8.7%
0.92x

BufferFillFromSlice
11.533
12.5
+8.4%
0.92x (?)

StringHasSuffixAscii
1497.857
1622.667
+8.3%
0.92x (?)

Improvement
OLD
NEW
DELTA
RATIO

ArrayOfGenericPOD2
1176.5
855.0
-27.3%
1.38x (?)

RawBuffer.copyContents
13.607
11.382
-16.4%
1.20x (?)

IterateData
1558.0
1364.0
-12.5%
1.14x (?)

DataSetCountMedium
230.851
209.744
-9.1%
1.10x

ObjectiveCBridgeStubDateAccess
3342.0
3098.0
-7.3%
1.08x (?)

ObjectiveCBridgeStubNSDateRefAccess
4227.0
3948.0
-6.6%
1.07x (?)

Code size: -swiftlibs

How to read the data
The tables contain differences in performance which are larger than 8% and
differences in code size which are larger than 1%.
If you see any unexpected regressions, you should consider fixing the
regressions before you merge the PR.
Noise: Sometimes the performance results (not code size!) contain false
alarms. Unexpected regressions which are marked with '(?)' are probably noise.
If you see regressions which you cannot explain you can try to run the
benchmarks again. If regressions still show up, please consult with the
performance team (@eeckstein).

Hardware Overview
  Model Name: Mac mini
  Model Identifier: Macmini9,1
  Total Number of Cores: 8 (4 performance and 4 efficiency)
  Memory: 16 GB

After inspecting the prefix and suffix benchmarks, I don't believe these are real regressions, or related to this.


Not working with multiple NgModules

When I try to use the directive in several application modules does not work, throw this error

Type MaterializeDirective is part of the declarations of 2 modules

Thank you

What Angular 2 version are you using ?

2.0.0-rc.5

Any update ? D:

@juanpmarin-infocorp are you able to confirm if this works now with the latest version of angular2-materialize? Thanks.

It works :D

I upgrade to v6.3.0 and angular 2.3.0 but still give me a error
Error: Type MaterializeDirective is part of the declarations of 2 modules: MaterializeModule and AppModule! Please consider moving MaterializeDirective to a higher module that imports MaterializeModule and AppModule. You can also create a new NgModule that exports and includes MaterializeDirective then import that NgModule in MaterializeModule and AppModule.

@bigggge
https://github.com/InfomediaLtd/angular2-materialize/issues/98#issuecomment-245442536
https://angular.io/docs/ts/latest/guide/ngmodule.html#!#shared-module


I want use it in my new project , but I have two problem about config it...

dear roughike:
I found your BottomBar on github ,it's beautiful ,I love it ,
so I want to use it in my new application project this week .
but I there are two problem when I test it ,
I can not slove myself:
1---I mapColorForTab() for everyTab, it's ok , but I want the title show always, so I use setMaxFixedTabs() / useFixedMode() , then the bottomBar lost color ....
2---setActiveTabColor() will not work when I use it with mapColorForTab()
the effect I want is as blow:
1---show title always
2---have backgroudcolor
3---the drawable has color when it's selected
looking forward for you reply , thanks...
best regards...

You can have all those with the newest version of this library.


Added support for CandidateSelection mapping table - map between Candidate and Contest Office,

updated BatchRow handling for Contest Office with candidate selection data

👍


Updated note on First Contact safety tip

Let's stick to MarkDown!
Even when the impersonation protection, or impersonation safety tips are turned off, it is recommended you use a mail flow rule (also known as a transport rule) to add a message header named X-MS-Exchange-EnableFirstContactSafetyTip with value Enable to the messages. Specific safety tips will be displayed notifying recipients that they often don't get email from the sender or in cases when the recipient gets an email for the first time from the sender.

Pushed a new commit with the updated text and it's still important to show this as Note so that this gets highlighted on the page as opposed to showing as plain text!


Mic recording feature 🎤

To whom ever it concerns,
Dear developer, as you can see now
The current xhunter version right now
Want an update, I hope you can give us
One new update soon, and we would gladly
Feel appreciated if you could bring in the live mic recording feature in the new update as well, that would honestly worth
The patience while waiting for the new release to come, until then, we'll patiently wait to see the new updates and new features coming up.
Respect 🧡

<EMAIL_ADDRESS>

https://www.whatsapp.com/legal/cookies

<IP_ADDRESS> (222377004)

https://www.whatsapp.com/legal/cookies

007833832632

README. md

هديل


Citus

Every single issue should have the following

[x] Precise steps on how to add the extension to the Dockerfile
[x] How to enable the extension
[x] Actual smoke tests described in English
[x] CI Updated with smoke tests
[ ] Build pipeline updates needed

Hi @ChakshuGautam , I would like to take this one up, can you assign me to this

Thanks @ChakshuGautam ,
I have raised a PR #11

Hey @jayanth-kumar-morem currently Citus and Timescale are not compatible - "Another time-partitioning extension for PostgreSQL is TimescaleDB. Unfortunately, Citus and TimescaleDB are currently not compatible." from this article. Can you also add a feature to disable TimescaleDB by default so the user has a choice to add it when needed?
Also added a checklist for this ticket. Please update the smoke tests for this addition. Thanks :)

Hi @ChakshuGautam ,
Could you share more details on the last point in the checklist, Build pipeline updates needed .
To provide users with the option to enable or disable TimescaleDB by default, we can make use of an environment variable to control the extension creation during the PostgreSQL initialization process. We can edit the entrypoint script for the Docker image that checks the environment variable and enables TimescaleDB accordingly. Can you confirm whether we are on the same plate on implementing this, so that I can go ahead with the coding part :)

Hey, @jayanth-kumar-morem the PR looks good. I have removed the Build pipeline updates needed from the checklist. I will add it as a separate ticket.

Okay @ChakshuGautam , is there anything else we need to work on this issue before merging the code. ?


tflite

Hi Have you tried to convert the model file to tflite?  I'm tried this but failed.

There are a lot of custom layers, so I guess it will need some special treatment. However, it's not in our plan now.

i also encountered this issue, at least,  hope to have a tensorflow or pytorch version code, thanks

Hello everyone. Has anyone converted model to tflite? @TemiLee @HansonSun


WIP: New Docs Landing Page and ToC Organization.

This is a Work-In-Progress change to the main documentation landing page (kubernetes.io/docs) experience. I'm experimenting with the ToC both above and to the left of the pages. Please do not merge; this change will need a detailed review with project stakeholders.

This change is

Review status: 0 of 10 files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.

docs/index.md, line 8 at r1 (raw file):

---

Kubernetes is an open source, production-ready cluster management and container orchestration system. With Kubernetes on your cluster, you can ensure that your containerized applications and other cloud-based workloads run where you want them, when you want them, and with the resources that they need.

I'd start out with a super simple explanation of the problem kubernetes solves:  Kubernetes runs and manages containers running in a cluster.
Then list out some of the aspect buzzwords that we might think are important:

Open-source
Production ready
Simple cluster setup with kubeadm
Baremetal or VMs

Consider also including some of the core functionality highlights beyond running containers:

Service discovery and load balancing
Configuration management
Cluster federation

docs/index.md, line 93 at r1 (raw file):

Installing Kubernetes on Linux with kubeadm

We should probably first direct users to installing k8s for local development using minikube before introducing this.  Make it clear that one is for development and the other for running real workloads

docs/index.md, line 94 at r1 (raw file):

Installing Kubernetes on Linux with kubeadm

This quickstart helps you install a secure Kubernetes cluster using the built-in kubeadm tool. You can use kubeadm to install Kubernetes on any computers running Linux&emdash;it works with local VMs, physical servers, or cloud servers. You can use kubeadm manually or as part of your own automation. kubeadm is currently an alpha feature, but we invite you to try it out and give us feedback!

Doesn't display properly

docs/index.md, line 94 at r1 (raw file):

Installing Kubernetes on Linux with kubeadm

This quickstart helps you install a secure Kubernetes cluster using the built-in kubeadm tool. You can use kubeadm to install Kubernetes on any computers running Linux&emdash;it works with local VMs, physical servers, or cloud servers. You can use kubeadm manually or as part of your own automation. kubeadm is currently an alpha feature, but we invite you to try it out and give us feedback!

Does this mean it installs the whole cluster including spinning up vms, or it installs kubernetes onto an existing set of running machines?

Comments from Reviewable

Review status: 0 of 10 files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.

docs/index.md, line 8 at r1 (raw file):
Previously, pwittrock (Phillip Wittrock) wrote…
> I'd start out with a super simple explanation of the problem kubernetes solves:  `Kubernetes runs and manages containers running in a cluster.`
> Then list out some of the aspect buzzwords that we might think are important:
>
> - Open-source
> - Production ready
> - Simple cluster setup with kubeadm
> - Baremetal or VMs
>
> Consider also including some of the core functionality highlights beyond running containers:
>
> - Service discovery and load balancing
> - Configuration management
> - Cluster federation
>

I've pared it down significantly and made it simpler. PTAL.

docs/index.md, line 93 at r1 (raw file):
Previously, pwittrock (Phillip Wittrock) wrote…
> We should probably first direct users to installing k8s for local development using minikube before introducing this.  Make it clear that one is for development and the other for running real workloads

We should add an additional quickstart for local development with Minikube.

docs/index.md, line 94 at r1 (raw file):
Previously, pwittrock (Phillip Wittrock) wrote…
> Does this mean it installs the whole cluster including spinning up vms, or it installs kubernetes onto an existing set of running machines?

From reading the kubeadm docs, you need to have existing machines running Ubuntu or CentOS, so it does not appear to spin up VMs for you.

docs/index.md, line 94 at r1 (raw file):
Previously, pwittrock (Phillip Wittrock) wrote…
> Doesn't display properly

Fixed. I also pared down some of the extraneous explanation.

Comments from Reviewable

So the basic things I want to accomplish with a review:

Do we want all this information on the landing page?
Do we want a separate sub-landing page for Quickstarts? That's more scalable than packing them all onto the front page.
Should we add top-level site nav for "Quickstarts"? It's awfully crowded up there.
We need to mark or otherwise notify folks that "Guides" are deprecated and the content is migrating to new sections (Tutorials, Tasks, Concepts).

Further questions:

Do we want a simpler landing page with just direct links to the major sections and very brief explanations? Or do we want to be slightly more verbose? The current proposal is "slightly more verbose", because I find the site navigation confusing with the major headers in the top nav bar and sub-TOCs to the left.
Do we want to keep the samples and contributor evangelism?

My $0.02

Yes to simple landing page with direct links routing users based on their intended goals and background
I would get rid of samples and contributor evangelism from the landing page.
Guides is still where most of the content exists.  We shouldn't deprecate it until Tutorials + Tasks + Concepts is at least comparable in terms of content
Quickstarts for top-level: probably not if the landing page is simple enough that it is highly discoverable

Reviewed 9 of 10 files at r1, 1 of 1 files at r2.
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

docs/index.md, line 93 at r1 (raw file):
Previously, devin-donnelly wrote…
> We should add an additional quickstart for local development with Minikube.

Can we just link to minikube for now?

Comments from Reviewable

From collected feedback from @pwittrock and @bgrant0607 , I've made a few changes:

Removed overview text; I'll move it to the main page.
Removed Samples and Contribution Evangelism

Still to-do:

I could use some CSS/layout help in getting things rendering like "tiles" if we want to do it that way.

@bryk We could use some layout help with kubernetes.io. Do you think someone in the UI SIG could help with that?

@bryk We could use some layout help with kubernetes.io. Do you think someone in the UI SIG could help with that?

Yep, definitely. Can you describe what is needed to be done? We haven't been following this topic so far.
cc @romlein @rf232

@bgrant0607 I have limited availability pre-KubeCon, but I would definitely like to help out with layout. What's the best way for me to come up to speed on what's been done so far and what the specific needs are?

@romlein
This is the new docs landing page. Our original idea for the layout was a card-based approach. Mock:
https://docs.google.com/presentation/d/14mJwJGlwBJHIpMRGR-nYMSyyNk-kRpabyz74-YYXeTo/edit#slide=id.g12dfc4542a_17_14
The current layout in this PR can be seen here:
https://deploy-preview-1468--kubernetes-io-vnext-staging.netlify.com/docs/
It's a mix of multi-column and single-column.

@devin-donnelly
Things I think are important to fix:

Kubernetes in the heading is misspelled
Quickstarts take up so much space that the rest of the content is pushed off the first screen -- could we just link to the bootcamp, remove the other 2 "quickstarts", and convert it to the same wide format as the rest of the page?
I think this may steer users in the wrong direction with respect to figuring out how to create a Kubernetes cluster

K8s on AWS is the first option I see
kubeadm is under it, and is only alpha
The Tutorials description makes me think it will explain how to set up clusters, but doesn't currently
The Guides description makes me think it won't cover cluster creation, but that's in fact where all the relevant content is
There's no link to docs/getting-started-guides/, which contains the guide that is intended to help users to choose a solution, including GKE
That guide doesn't mention kops nor kubeadm

@bgrant0607 , PTAL.
I think this addresses more or less all of your feedback. However, some things to note:

Tutorials eventually WILL explain how to set up clusters
Guides will eventually be deprecated
Getting Started Guides is fine for now, but we should probably revisit Picking the Right Solution in the near future and look at how we provide an "on-ramp" for various ways to install and set up the system

@devin-donnelly LGTM, thanks. Please squash, remove WIP from the title, and feel free to merge when you're ready.

Sorry, I lost track of this with KubeCon. Is there still anything that would benefit from having a designer check it out @bgrant0607?

@danielromlein Thanks for checking in. I believe we're looking into getting help from the original vendor that produced the kubernetes.io home page.

Sounds good @bgrant0607! Keep me posted 👍


Error: "can't evaluate field RegularPages"

I get these errors when trying to build using hugo 0.62.0:
Building sites â€¦ ERROR 2019/12/30 20:18:53 render of "taxonomyTerm" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState
ERROR 2019/12/30 20:18:53 render of "section" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState
Total in 797 ms
Error: Error building site: failed to render pages: render of "section" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState
WARN 2019/12/30 20:18:57 Module "pure" is not compatible with this Hugo version; run "hugo mod graph" for more information.
Building sites â€¦ ERROR 2019/12/30 20:18:57 render of "section" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState
ERROR 2019/12/30 20:18:57 render of "taxonomyTerm" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState
Total in 629 ms
Error: Error building site: failed to render pages: render of "section" failed: "C:\Users\tyler\Documents\tylerburleigh.github.io_source\themes\pure\layouts\_default\list.html:6:61": execute of template failed: template: _default\list.html:6:61: executing "content" at <.RegularPages>: can't evaluate field RegularPages in type *hugolib.pageState

In my local dev can not reproduce it,but it should be .Site.RegularPages.


Keep around a deprecated SparseDataset class for this release cycle

Removal of the SparseDataset class from anndata._core.sparse_dataset.SparseDataset has caused issues for some downstream packages including scvi-tools.
We should probably at least give a deprecation for this, since it sees some use: https://github.com/search?q=from+anndata._core.sparse_dataset+import+SparseDataset&type=code
To do this we should export a SparseDataset class from anndata._core.sparse_dataset that:

Acts equivalently on a type level. E.g. ininstance(x, SparseDataset) should be equivalent to isinstance(x, (CSCDataset, CSRDataset))
Throws a FutureWarning on instance checks that tells people to replace it's usage with sparse_dataset(x) or isinstance(x, (CSCDataset, CSRDataset))
Should act equivalently on instantiation: SparseDataset(x) should be equivalent to sparse_dataset(x)

I think the above should be enough.
I think this would look like:
from abc import ABC
import warnings

from anndata.experimental import CSRDataset, CSCDataset, sparse_dataset

_sparsedataset_depr_msg = """\
SparseDataset is deprecated and will be removed in the future. It has been replaced by the public classes CSRDataset and CSCDataset.

For instance checks, use `isinstance(X, (anndata.experimental.CSRDataset, anndata.experimental.CSCDataset))` instead.

For creation, use `anndata.experimental.sparse_dataset(X)` instead.
"""

class SparseDataset(ABC):
    def __new__(cls, group):
        warnings.warn(FutureWarning(_sparsedataset_depr_msg), stacklevel=2)
        return sparse_dataset(group)

    @classmethod
    def __subclasshook__(cls, C):
        warnings.warn(FutureWarning(_sparsedataset_depr_msg), stacklevel=3)
        return issubclass(C, (CSRDataset, CSCDataset))

cc: @ilan-gold @martinkim0 @flying-sheep

This would be great! I've patched this in https://github.com/scverse/scvi-tools/pull/2271

This would be great! I've patched this in scverse/scvi-tools#2271

I'm seeing issues attempting to importing scvi-tools and anndata together. Running the "import scvi" command in Jupyter Notebook leads to an import error: ImportError: cannot import name 'SparseDataset' from 'anndata._core.sparse_dataset'

Hi @bykovam, the patch has not been released yet so the import will still be broken with the newest version of scvi-tools (1.0.3). I believe that AnnData 0.10.2 fixes this though.

I'll install the latest version and see if it helps


Error setting up integration (2024.1.0)

Hi,
Thanks for this integration, updated to HA 2024.1.0 however the integration now fails to setup:
Logger: homeassistant.loader
Source: loader.py:842
First occurred: 00:28:25 (4 occurrences)
Last logged: 00:28:25

Unexpected exception importing platform custom_components.linksys_velop.binary_sensor
Unexpected exception importing platform custom_components.linksys_velop.select
Unexpected exception importing platform custom_components.linksys_velop.sensor
Unexpected exception importing platform custom_components.linksys_velop.switch
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/loader.py", line 842, in get_platform
    cache[full_name] = self._import_platform(platform_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 859, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_components/linksys_velop/binary_sensor.py", line 67, in <module>
    @dataclasses.dataclass
     ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "/usr/local/lib/python3.11/dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dataclasses.py", line 1027, in _process_class
    _init_fn(all_init_fields,
  File "/usr/local/lib/python3.11/dataclasses.py", line 545, in _init_fn
    raise TypeError(f'non-default argument {f.name!r} '
TypeError: non-default argument 'key' follows default argument

Logger: homeassistant.setup
Source: setup.py:403
First occurred: 00:28:25 (4 occurrences)
Last logged: 00:28:25

Unable to prepare setup for platform 'linksys_velop.binary_sensor': Platform not found (Exception importing custom_components.linksys_velop.binary_sensor).
Unable to prepare setup for platform 'linksys_velop.select': Platform not found (Exception importing custom_components.linksys_velop.select).
Unable to prepare setup for platform 'linksys_velop.sensor': Platform not found (Exception importing custom_components.linksys_velop.sensor).
Unable to prepare setup for platform 'linksys_velop.switch': Platform not found (Exception importing custom_components.linksys_velop.switch).

No other errors in the logs apart from the above ones

Please ensure that you are using at least version 2024.1.1 of this integration. This was seized and released earlier this week.

Yep, that'll do it.
I had to manually redownload it in hacs as the update wasn't actually showing.


Test

Start tests for Python. assertTrue to start.
Client applications manage character encoding models, remote file requests, file storage and so forth, so check things.

wow @kdurril thank you! Will test this out, and commit!

I'll review the tests from your book too: https://github.com/apache/tika/tree/trunk/tika-example. I didn't look for them until after I created this. I haven't done much test writing, so be honest with feedback.
I've made a port to Python3 but realize I should write tests for the current version before submitting pull requests for it.

tests pass. Great work.


[Ruby 2.7] Specs for #ruby2_keywords

Added specs for new methods introduced in Ruby 2.7

Proc#ruby2_keywords
Module#ruby2_keywords

Related issue - https://github.com/ruby/spec/issues/745

Thanks a lot for these, I'll review soon.

Thanks a lot for these, I'll review soon.


Improve error message when template is rendered without request context

Django provides the ability to render templates outside the request context even if the django.template.context_processors.request middleware is activated (see Template.render or render_to_string).
So it took me a bit to figure out the cause of the following error happened after updating from 1.3.0 to 1.4.0 (see https://github.com/Integreat/integreat-cms/pull/956):

Traceback
Traceback (most recent call last):
  File "/home/circleci/project/src/cms/tests/views/view_test_utils.py", line 25, in test_function
    response = self.client.get(url)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/client.py", line 742, in get
    response = super().get(path, data=data, secure=secure, **extra)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/client.py", line 398, in get
    **extra,
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/client.py", line 473, in generic
    return self.request(**r)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/client.py", line 714, in request
    response = self.handler(environ)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/client.py", line 145, in __call__
    response = self.get_response(request)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 130, in get_response
    response = self._middleware_chain(request)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "/home/circleci/project/src/cms/views/error_handler/error_handler.py", line 112, in handler500
    return HttpResponseServerError(render_error_template(context))
  File "/home/circleci/project/src/cms/views/error_handler/error_handler.py", line 25, in render_error_template
    return render_to_string("error_handler/http_error.html", context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/utils.py", line 100, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/utils.py", line 100, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/test/utils.py", line 100, in instrumented_test_render
    return self.nodelist.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "/home/circleci/project/.venv/lib/python3.7/site-packages/django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'

Source: https://app.circleci.com/pipelines/github/Integreat/integreat-cms/2610/workflows/c4feb10f-3d0d-48b8-b094-681db5a6d8d0/jobs/19913

I would suggest to throw a more helpful error in this case, stating that it's not possible to use Template.render without passing the current request to the template context. (Or, if somehow possible, allow the rendering without the request object...)
Thanks!

Thanks, we imagined there could be some unexpected edge case related to this.
Just to confirm, you're using Template.render with a template that calls django-webpack-loader, right?

FYI @karolyi

Thanks, we imagined there could be some unexpected edge case related to this. Just to confirm, you're using Template.render with a template that calls django-webpack-loader, right?

Yes, we use the tag render_bundle in that template which gets rendered here.

I built in a preliminary check for the middleware in the code, but it didn't seem to be enough.
I can come up with some mods for this.

So, originally I knew this change would be a can of worms that we just opened: in order for the deduplication code to know which chunks have been rendered, you need some kind of a variable that is local throughout the generation of the template(s). There are a couple issues with this:

Modifying the contents of context is highly discouraged, in Jinja it's outright disallowed (you can't modify the context, only it's parent, but that is not there for that either.
Django's synchronous execution model (with using WSGI) uses one thread to execute a request. The request is basically stored as a thread local, there is even code for getting the request from there.
Still, as visible in this issue, template renderings can be used without a request variable, and as an edge case, one request-response cycle can be responsible for rendering dozens of templates (like here for example, rendering static pages). Even if you manage to get the original request variable, there will be missing script tags in the second template and on, since we don't reset the set of rendered tags at each render.
As an even bigger can of worms, asynchronous mode (with using ASGI) doesn't even have a request variable, much less makes it sense to use any thread locals since it's not guaranteed that the code will run in the same thread. (Other than than using thread_sensitive=False in sync_to_async(), that is the default in newer djangos but still I wouldn't rely on that.)

All I took care with my using of the request variable is to cover the most usecases for when django is used; rendering one template at each request-response cycle.
To be constructive, I'd suggest the following:

We can still go ahead and use the context variable, but it's a HUGE risk, and I still don't know the repercussions of it. Jinja for example starts with the assumption that the context is not modified while rendering templates, and thus I have no idea what breakages it will induce if we rewrite the code to do that. Not to mention that by the logic of this issue, one could use NO CONTEXT for rendering templates at all.
We can check and use a thread local variable that is somehow identified with the currently running request/context, and use only the request/context that belongs to our template rendering iteration. Garbage collection and not found context/request is not a small issue here.

The most easy way is to just force the usage of the request variable (even if it's a fake generated django.http.HttpRequest). That way users that use these edge cases can have a more fine-grained control over their deduplications in their generated templates.
I can add this to the documentation and point to it from the error that is generated when it's not found.
Suggestions?

Thanks for the inputs and suggestions @karolyi. My suggestions:

I think this skip_common_chunks functionality is already an edge case: one should try to have a single entrypoint per template anyway. Therefore, I'm more concerned about making the render_bundle work when there is no request in context. We should launch as soon as possible a patch fix that simply ignores this new functionality when there's no request in context. LMK if you can/want to work on that, if not I'll work on a fix.
As for thread safety issues vs. using request, it seems Django templates allow altering the context.render_context variable between template node calls, please check the cycle example in docs and "Setting a variable in the context". If Django templates support that, but Jinja doesn't, I think it's fair to disable the skip_common_chunks in Jinja (it's better to do that to help support no-request rendering).

Please LMK your thoughts.

I am specifically that edge case: my templates stopped functioning with Jinja because of the multiple chunk inclusion, so I vote against removing it from Jinja. The forcing of one-entry-point-per-template is very unwarranted in my opinion, YMMV of course.
I can support the ignoring of skip_common_chunks with a runtime warning, when no request object is available. Still, additional documentation on it is necessary for the developers working with it.
I can make the changes for that, if necessary.

Alright, coming up hopefully within a couple days.

Hello, the last version (1.4.0) raise KeyError when trying to render error pages (500 / 403).
KeyError: 'detalle'
  File "asgiref/sync.py", line 482, in thread_handler
    raise exc_info[1]
  File "django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "django/core/handlers/base.py", line 233, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File "asgiref/sync.py", line 444, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 455, in wait_for
    return await fut
  File "asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "asgiref/sync.py", line 486, in thread_handler
    return func(*args, **kwargs)
  File "django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "django/contrib/auth/mixins.py", line 71, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "django/views/generic/base.py", line 159, in get
    context = self.get_context_data(**kwargs)
  File "user/views.py", line 206, in get_context_data
    context['payment_list'] = get_payment_list(
  File "user/cache.py", line 20, in get_payment_list
    for movement in item['detalle']:
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "axes/middleware.py", line 36, in __call__
    response = self.get_response(request)
  File "asgiref/sync.py", line 223, in __call__
    return call_result.result()
  File "concurrent/futures/_base.py", line 437, in result
    return self.__get_result()
  File "concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "asgiref/sync.py", line 292, in main_wrap
    result = await self.awaitable(*args, **kwargs)
  File "django/core/handlers/exception.py", line 40, in inner
    response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
  File "asgiref/sync.py", line 444, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 455, in wait_for
    return await fut
  File "concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "asgiref/sync.py", line 484, in thread_handler
    return func(*args, **kwargs)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "app/middleware.py", line 38, in __call__
    return self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "app/middleware.py", line 15, in __call__
    response = self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'request'
  File "django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "django/utils/deprecation.py", line 117, in __call__
    response = response or self.get_response(request)
  File "django/core/handlers/exception.py", line 49, in inner
    response = response_for_exception(request, exc)
  File "django/core/handlers/exception.py", line 114, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "django/core/handlers/exception.py", line 153, in handle_uncaught_exception
    return callback(request)
  File "django/utils/decorators.py", line 130, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "django/views/defaults.py", line 97, in server_error
    return HttpResponseServerError(template.render())
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/library.py", line 192, in render
    output = self.func(*resolved_args, **resolved_kwargs)
  File "webpack_loader/templatetags/webpack_loader.py", line 39, in render_bundle
    if not hasattr(context['request'], '_webpack_loader_used_tags'):
  File "django/template/context.py", line 83, in __getitem__
    raise KeyError(key)

you can roll back to the latest version or wait until I make the necessary changes.

So, a pull request is made now, merge, bump version and release and you're good to go.

1.4.1 released with those changes: https://github.com/django-webpack/django-webpack-loader/releases/tag/1.4.1


Run CodeFormatter

This keeps everything nice and tidy. For anybody unfamiliar, this is the output of running dotnet's codeformatter on MIEngine.

@gregg-miskelly @caslan @jacdavis @wesrupert

LGTM


Add com.snowplowanalytics.sauna.responders/SendgridConfig/avro/1-0-1

Add a second option to enable the RT command.

This is an additive change on an existing released schema - should be a 1-0-1, not a patch...

@chuwy: does avro4s support multiple schema versions? Adding a 1-0-1.avsc schema to sauna/src/main/avro/com.snowplowanalytics.sauna.responders/SendgridConfig/avro/ results in this:
org.apache.avro.SchemaParseException: Can't redefine: com.snowplowanalytics.sauna.responders.SendgridConfig
        at org.apache.avro.Schema$Names.put(Schema.java:1060)
        at org.apache.avro.Schema$Names.add(Schema.java:1055)
        at org.apache.avro.Schema.parse(Schema.java:1187)
        ...

I don't thinks so. And that is the problem!
@alexanderdean what options do we have?

Add special syntax to denote SchemaVer in classes AmazonDynamodbConfig$1$0$1 (really ugly)
Remove 1-0-0.avsc file from work tree and replace by 1-0-1.avsc
Anything else?

@rzats could you please check if it possible to parse configuration of version 1-0-0 by sauna-0.2.0-SNAPSHOT with 1-0-1.avsc (hope this sentence makes sense).
Adding some thoughts here: https://github.com/snowplow/iglu/issues/181

Technically, according to SchemaVer, for addition you always have a function 1-0-1 -> 1-0-0, for addition it's partial function 1-1-0 -> Option[1-0-0] and there's no meaningful 2-0-0 -> 1-0-0. From this perspective you need to have both 1-0-0 and 1-0-1.

From this perspective you need to have both 1-0-0 and 1-0-1 avro schemas.

Are you sure about this? A 1-0-1 reader can always consume a 1-0-0, so why would you need to have both schemas available?

Add special syntax to denote SchemaVer in classes AmazonDynamodbConfig$1$0$1 (really ugly)

Actually I quite like this! It's a very unopinionated representation of SchemaVer at the class level.

@chuwy: just tested this and no, when a 1-0-1 reader consumes a 1-0-0 configuration this case check isn't passed, I guess because params no longer matches SendgridConfigParameters.
I agree with Alex in that the class naming solution looks good (though a more readable separator would be nice - is $ standard for this sort of thing?)

emailsEnabled is not nullable field. I don't think it matches addition anymore. Parser seeks for emailsEnabled, which is not present in 1-0-0 configs. Therefore params no longer matches SendgridConfigParameters.
If this is revision (or model) we really need both schemas, because we parse them separately, but for addition Alex is right, we can always have latest.
$ is valid symbol for Scala (and I think for JVM) whereas to use hyphens we'll need to add backticks which probably unrepresentable in Avro and Java. But we can try.

Let's make emailsEnabled nullable then, then we have an addition and we only need to load the 1-0-1?

So default fields are supported by Avro and properly converted to case classes, e.g.
"name": "SendgridConfigParameters",
"type": "record",
"fields": [
  {
    "name": "recipientsEnabled",
    "type": "boolean"
  },
  {
    "name": "emailsEnabled",
    "type": "boolean",
    "default": false
  },
  {
    "name": "apiKeyId",
    "type": "string"
  }
]

becomes
case class SendgridConfigParameters(recipientsEnabled: Boolean, emailsEnabled: Boolean = false, apiKeyId: String)
but the problem is a config with a missing emailsEnabled field is still not recognised as a valid SendgridConfig. This might be a Play JSON-specific issue - I'll be looking into it some more.

The issue is caused by avro4s, which does not support optional field deserialization (even though it supports the reverse - i.e. default values in case classes are converted to defaults in the Avro schema). I'll create an issue in avro4s, but for now should I go for the class naming solution?

Yep - class naming solution sounds best for now


test: fix recent AMI test for EKS 1.30

Fixes #N/A
Description
Updates the "old ami image" used in the "should use the most recent AMI" test to a release with a 1.30 version. This test will need to be updated each time a new EKS version is released.
How was this change tested?
make e2etests
Does this change impact docs?

[ ] Yes, PR includes docs updates
[ ] Yes, issue opened: #
[x] No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 82.52%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
5547

Relevant Lines:
6722

💛  - Coveralls


Added implimentation for TSK_FS_META and tsk_fs_file_read

Added the following :

tsk_fs_meta.rs: A wrapper for TSK_FS_META.
read file functions (read_exact,read_iter and read_to).
TskFsFileIterator struct. An iterator over TskFsFile content bytes.

Change TskFsFileHandler to TskFsFileHandle.
Change TskFsFileHandle::new() to accept TskfsAttr and read flag.
Fix a bug on ``TskFsFileHandle Read` trait where it will not detect end of data properly.
Added id function on TskFsAttr which return the attribute id.
Added a new test case to copy a file.

Change TskFsFileHandler to TskFsFileHandle.
Change TskFsFileHandle::new() to accept TskfsAttr and read flag.
Fix a bug on ``TskFsFileHandle Read` trait where it will not detect end of data properly.
Added id function on TskFsAttr which return the attribute id.
Added a new test case to copy a file.

@AbdulRhmanAlfaifi this is great! Thank you for your contribution. I will still make a couple tweaks (like renaming tsk_fs_file_handler.rs to tsk_fs_file_handle.rs, and TskFsFile::get_file_handler to TskFsFile::get_file_handle) but you did some solid work! This lib is still very alpha, so just keep in mind some things might change.

@AbdulRhmanAlfaifi this is great! Thank you for your contribution. I will still make a couple tweaks (like renaming tsk_fs_file_handler.rs to tsk_fs_file_handle.rs, and TskFsFile::get_file_handler to TskFsFile::get_file_handle) but you did some solid work! This lib is still very alpha, so just keep in mind some things might change.


merge from template-coveralls

.github/pr_labeler.yml

chore: (systemd)

.github/workflows/pr_labeler.yml

chore: (systemd)

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

npm package (@latest dist-tag)
GitHub release
v5.0.79

Your semantic-release bot :package::rocket:


Should render route component at current position when path matches

This will allow using Router inside templates in a more intuitive way.

:+1:


Change Namespace to FFaker

Thanks!!!! :D :D
First, Thanks for the awesome refactored gem, I use it in all my projects! This IMO is something we don't tell gem maintainers/creators enough, so thanks! :)
Now to my Issue
I understand the most likely reason for using the same module namespace as the Faker gem, Faker::, is that it simplifies the transition to ffaker. But it should be a different module namespace IMO, as using the same namespace opens the door for namespace collisions.
Pleading my case...
Modern IDEs allow you to re-factor code fairly easily... i.e. change Faker:: to FFaker:: should be a fairly simple Find and Replace (case sensitive) search for  Faker::)
Example of namespace collision, the migrant gem requires the Faker gem... this creates namespace collisions with FFaker. For me it was in the Address module.
I would argue that the better approach is to not be a swap in replacement for Faker and instead be a true fork with different module namespace, FFaker as this will avoid namespace collisions like the one I was dealing with in the migrant gem. While it is possible to change this down as a bug, its really the desired behavior.
Alternative approach (but a lot more work)
Make ffaker an extension of the faker gem and "monkey patch" faker's modules. This is IMO less desirable as its a lot more developer work / reorganization of directories etc.

@EmmanuelOga I submitted a PR for this. seemed easy/tedious and I was bored ( #170  )

I released version 2.0.0 which solves the namespace issue. :clap:


Should isinstance(newint(...), int) return True for Python 2 when value is inside int bounds?

Consider the following on PyPy (which uses a pure python version of datetime:
Python 2.7.10 (f3ad1e1e1d6215e20d34bb65ab85ff9188c9f559, Sep 04 2015, 05:13:03)
[PyPy 2.6.1 with GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>> import datetime
>>>> datetime.__file__
'/.../lib/pypy/lib_pypy/datetime.pyc'
>>>> from builtins import int as _int
>>>> i = int(1431216000)
>>>> j = long(i)
>>>> k = _int(i)
>>>> isinstance(i, int)
True
>>>> isinstance(i, long)
False
>>>> isinstance(j, int)
False
>>>> isinstance(j, long)
True
>>>> isinstance(k, int)
False
>>>> isinstance(k, long)
True
>>>> datetime.timedelta(seconds=i)
datetime.timedelta(16565)
>>>> datetime.timedelta(seconds=j)
datetime.timedelta(16565)
>>>> datetime.timedelta(seconds=k)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/.../lib/pypy/lib_pypy/datetime.py", line 491, in __new__
    assert isinstance(s, int)
AssertionError

This, of course, can be worked around using:
>>>> from future.utils import native
>>>> datetime.timedelta(seconds=native(k))
datetime.timedelta(16565)

This does not happen on cPython, which uses a C implementation of datetime:
Python 2.7.10 (default, Sep 24 2015, 10:13:45)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.__file__
'/.../lib/python2.7/lib-dynload/datetime.so'
>>> from builtins import int as _int
>>> i = int(1431216000)
>>> j = long(i)
>>> k = _int(i)
>>> isinstance(i, int)
True
>>> isinstance(i, long)
False
>>> isinstance(j, int)
False
>>> isinstance(j, long)
True
>>> isinstance(k, int)
False
>>> isinstance(k, long)
True
>>> datetime.timedelta(seconds=i)
datetime.timedelta(16565)
>>> datetime.timedelta(seconds=j)
datetime.timedelta(16565)
>>> datetime.timedelta(seconds=k)
datetime.timedelta(16565)

I'm not sure whether this is a problem with PyPy, or future or something else, but it got me to thinking. What if isinstance(newint(x), int) evaluated to True iff x <= sys.maxint and x >= (-sys.maxint - 1)? Would that be absurd or break things? It is, after all, called int, but behaves exclusively like a long with respect to the above context in Python 2.

See also https://bitbucket.org/pypy/pypy/issues/2193/datetimetimedelta-chokes-on-seconds.


Add USER-AGENT header in Github tarball retrieving

Resolve this. https://github.com/kubeflow/kubeflow/issues/5245
Seems some corp network has restrictions on the requests. Setting dedicate user-agent solve the problem.
It would be better to include kfctl version here. However, version is in cmd package and if we import it, we will see error like beflow. We can leave it to kfctl at this moment since no server side application need that information
../../pkg/kfconfig/types.go:10:2: import "github.com/kubeflow/kfctl/v3/cmd/kfctl" is a program, not an importable package
import cycle not allowed
package main
    imports github.com/kubeflow/kfctl/v3/cmd/kfctl/cmd
    imports github.com/kubeflow/kfctl/v3/pkg/kfapp/coordinator
    imports github.com/kubeflow/kfctl/v3/pkg/kfapp/aws
    imports github.com/kubeflow/kfctl/v3/pkg/kfconfig
    imports github.com/kubeflow/kfctl/v3/cmd/kfctl
    imports github.com/kubeflow/kfctl/v3/cmd/kfctl/cmd

/lgtm

/approve

http://testing-argo.kubeflow.org/workflows/kubeflow-test-infra/kubeflow-kfctl-presubmit-unittests-401-abc9dfb-7600-9acb?tab=workflow&nodeId=kubeflow-kfctl-presubmit-unittests-401-abc9dfb-7600-9acb-851443497
Looks like test is still ongoing, guess it's temp error.
/test kubeflow-kfctl-presubmit

/test kubeflow-kfctl-presubmit


Do not use escaped template part of Query

While using a custom http charger, I found that when doing templating on a url query it would be escaped and wouldn't work.
Example of what was the result:
http://localhost:8080/api/1/vehicles/VIN/command/%7B%7Bif.enable%7D%7Dcharge_start%7B%7Belse%7D%7Dcharge_stop%7B%7Bend%7D%7D
What should be:
http://localhost:8080/api/1/vehicles/VIN/command/charge_start
This solution overcomes the problems of https://github.com/evcc-io/evcc/pull/14146. And it resolves https://github.com/evcc-io/evcc/issues/14384.

Das ist vmtl. eher brittle.

Na wenn das so ist.


dts: psoc6: Use compatible IRQ prio levels for both cores

The psoc6 SoC has 2 cores, each with different allowed priority ranges:
M0: 0-3 (2 bits of NVIC prio, no prio reserved by the kernel)
M4: 0-6 (3 bits of NVIC prio, one level reserved by the kernel)
In order to be able to use the same .dtsi for both cores, align the IRQ
priorities to a level that works with both (7 -> 3). Not sure how this
ever worked with prio 7, since that is not allowed even on the M4.
Signed-off-by: Carles Cufi<EMAIL_ADDRESS>

Hi @carlescufi ,
M0+ core uses intmux and get those values from here psoc6_m0. What you are changing is direct connected on M4 core.
I remember that a high value at priority was suggested under review to allow user increase priority at board level. So, if it is necessary reserve value 7 for kernel, you can change it to 6 without any implications to M0+ core.

Hi @carlescufi ,
M0+ core uses intmux and get those values from here psoc6_m0. What you are changing is direct connected on M4 core.
I remember that a high value at priority was suggested under review to allow user increase priority at board level. So, if it is necessary reserve value 7 for kernel, you can change it to 6 without any implications to M0+ core.

Thanks for the input. Building for cy8ckit_062_ble_m0 currently triggers a new build-time assert because it uses 7, so I am not sure that what you say is correct?

Hi @carlescufi ,
M0+ core uses intmux and get those values from here psoc6_m0. What you are changing is direct connected on M4 core.
I remember that a high value at priority was suggested under review to allow user increase priority at board level. So, if it is necessary reserve value 7 for kernel, you can change it to 6 without any implications to M0+ core.

Thanks for the input. Building for cy8ckit_062_ble_m0 currently triggers a new build-time assert because it uses 7, so I am not sure that what you say is correct?

But maybe here it is missing a macro to select between M4 and intmux:
https://github.com/zephyrproject-rtos/zephyr/blob/6bf35fa7491f3240e7097dc735392cb12df4bf7c/soc/arm/cypress/common/cypress_psoc6_dt.h#L92-L99

But maybe here it is missing a macro to select between M4 and intmux:

If that is the case, maybe you can send a patch? I don't know that code at all.
A couple more observations:

psoc_cm0.dtsi includes the common one: https://github.com/zephyrproject-rtos/zephyr/blob/main/dts/arm/cypress/psoc6_cm0.dtsi#L8
7 is invalid for the M4 too, because it has 3 prio bits (0-7) but on M4 the kernel reserves a priority for itself, which means that the allowed range is 0-6

But maybe here it is missing a macro to select between M4 and intmux:

If that is the case, maybe you can send a patch? I don't know that code at all.

I can send a patch.

A couple more observations:

psoc_cm0.dtsi includes the common one: https://github.com/zephyrproject-rtos/zephyr/blob/main/dts/arm/cypress/psoc6_cm0.dtsi#L8

Not sure if this is a problem because M0+ need know shared peripherals.

7 is invalid for the M4 too, because it has 3 prio bits (0-7) but on M4 the kernel reserves a priority for itself, which means that the allowed range is 0-6

Understood.

I can send a patch.

Please. You can test it like this on the current tree:
west build -b cy8ckit_062_ble_m0 tests/drivers/uart/uart_basic_api/

@nandojve I can keep this patch and change the 7s to 6s, because they are still wrong after all.

@nandojve I can keep this patch and change the 7s to 6s, because they are still wrong after all.

Sure, please do it!

Hi @carlescufi ,
Please, update PR with value 6.

@nandojve done.


$Call/typeof causes inference in wrong direction since Flow 0.66.0

I do the following with jss to allow an object literal to be the source of truth for valid keys, instead of having to write separate type definitions:
// @flow

const styles = (theme: any) => ({
  root: {
    backgroundColor: theme.palette.primary.light,
  },
})

export type Classes<Styles> = $Call<
  <T>((any) => T) => { [$Keys<T>]: string },
  Styles
>

const classes: Classes<typeof styles> = {root: 'cls01'}
// the following should error:
classes.foo

Expected behavior
With Flow 0.65.0, I would get the correct error message:
16: classes.foo
    ^ property `foo`. Property not found in
10:   <T>((any) => T) => { [$Keys<T>]: string },
                            ^ object literal

Actual behavior
Flow >=0.66.0 wrongfully infers a different type for styles. Try Flow link
3: const styles = (theme: any) => ({
                                   ^ Cannot return object literal because property `foo` is missing in object literal [1].
References:
3: const styles = (theme: any) => ({

styles is just a function returning an object literal, so typeof styles should not be affected by any external information. typeof styles can only be () => {root: {backgroundColor: any}}.
Compare with a simpler case:
const styles2 = {
  root: {
    backgroundColor: 'blue',
  },
}

const classes2: { [$Keys<typeof styles2>]: string } = {root: 'cls02'}
classes2.foo

In this case Flow 0.65.0 and Flow >=0.66.0 produce the correct error message:
25: classes2.foo
    ^ property `foo` is missing in `typeof styles2` [1].
References:
24: const classes2: { [$Keys<typeof styles2>]: string } = {root: 'cls02'}
                             ^ [1]

There are three workarounds:

Change the direction back via $Subtype:
export type Classes<Styles> = $Call<
  <T>((any) => $Subtype<T>) => { [$Keys<T>]: string },
  Styles
>

try flow

$Subtype is deprecated though.

Use Object.freeze (the most adequate solution, I think):
const styles = (theme: any) => Object.freeze({
  root: {
    backgroundColor: theme.palette.primary.light,
  },
})

try flow

I'm not sure why it works, but you can use T | T instead of T:
export type Classes<Styles> = $Call<
  <T>((any) => T | T) => { [$Keys<T>]: string },
  Styles
>

try flow

Also note that specifically $Call or typeof aren't related here, you can achieve this behaviour by using plain function calls:
const styles = (theme: any) => ({ // error
  root: {
    backgroundColor: theme.palette.primary.light,
  },
})

declare function f<T>(any => T): { [$Keys<T>]: string }

const r = f(styles)
// the following should error:
r.foo

try flow
If you call the function with the styles return value instead, it will error in a slightly different position:

The same error position with the explicit annotation:
declare function styles(theme: any): {|root: {|backgroundColor: any|}|}
declare function f<T>(any => T): { [$Keys<T>]: string }
const r = f(styles) // error
r.foo

try flow
Overall looks more like a bug in indexers/$Keys.

Any hunch if the different behavior when using Object.freeze is intentional?

This is now erroring in the expected location with inference_mode=lti on.


Correction for raw affiliation ITAP, Univ. Montpellier, INRAE, L'Institut Agro, Montpellier, France

Correction needed for raw affiliation ITAP, Univ. Montpellier, INRAE, L'Institut Agro, Montpellier, France
raw_affiliation_name: ITAP, Univ. Montpellier, INRAE, L'Institut Agro, Montpellier, France
new_rors: 03rnk6m14;003vg9w96;051escj72;00ftatp57
previous_rors: 03rnk6m14;003vg9w96;051escj72
works_examples: W4393803902;W3215373548;W4393644226
contact: 6bbc87242198c4789f9fa5838fd54350:df050706e02d070b5362c795bede073b5a91 @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.