Fix: In ExecutionFromDevShm we should use os.Mkdir("/dev") instead if os.Mkdir("/dev/shm")

@FedeDP @leogr As os.Mkdir("/dev/shm") returns error as /dev not exists so instead we should use os.Mkdir("/dev") which just create /dev.
And  /dev/shm created in the next lines of code

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind documentation

/kind tests

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area commands

/area pkg

/area events

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: GLVSKiriti
Once this PR has been reviewed and has the lgtm label, please assign fededp for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: GLVSKiriti, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


How to enable GPU on KubeRay based local kind?

I want to test gpu support of kubeRay on my computer, but there is no doc about this.
It seems that kind not support GPU？should I use minikube instead?

The Kind community may be the best place to answer this question. When you have a Kubernetes cluster with GPU, you can follow the following documents to run Ray workload with GPUs on KubeRay:

https://docs.ray.io/en/latest/cluster/kubernetes/user-guides/gpu.html
https://docs.ray.io/en/latest/cluster/kubernetes/examples/gpu-training-example.html

Feel free to reopen this issue if you have questions about the Ray documents. (Note: updated documents will be out when Ray 2.4.0 is officially available.)


running bin/configure results in error: undefined method 'green'

rescueready@RescueReady rescue_ready % bin/configure
Bullet Train requires Ruby 3.1.2 and `ruby -v` returns ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21].
Bullet Train requires Node.js 18.3.0 and `node -v` returns 18.3.0.
Homebrew is installed.
PostgreSQL 13 is not installed via Homebrew. Try running `brew install postgresql@13`.
Try proceeding without PostgreSQL 13?
y
Redis is installed via Homebrew.
Yarn is installed.
Next, let's push your application to GitHub.
If you would like to use another service like Gitlab to manage your repository,
you can opt out of this step and set up the repository manually.
(If you're not sure, we suggest going with GitHub)
Continue setting up with GitHub? [y/n]
n
Running `bundle install`.

  Using rake 13.0.6
  [...using lots of other gems too...]
  Using webdrivers 5.0.0
  Using wine_bouncer 1.0.4 from https://github.com/bullet-train-co/wine_bouncer.git
  Bundle complete! 49 Gemfile dependencies, 223 gems now installed.
  Use `bundle info [gemname]` to see where a bundled gem is installed.

bin/configure:156:in `<main>': undefined method `green' for main:Object (NoMethodError)

puts green "Running `yarn install`."
     ^^^^^

Opened up /bin/configure and actually looked at line 156, and it read like this:
puts green "Running `yarn install`."

I removed "green" from the line and it worked fine from there.

I'm uncertain if green is supposed to be there or not.  Happy to submit a PR to remove it from the line is that's the desire outcome.


Are Polymorphic many2many relationships possible

Your Question
Is it possible to define models that have a polymorphic many2many relationship?  The simplest example would be the following:
type Label struct {
	LabeID             uint `gorm:"primarykey"`
        Name               string
}

type Fruit struct {
	gorm.Model
	Name   string
	Labels []*Label `gorm:"many2many:labels;polymorphic:Label"`
}

type Vegetable struct {
	gorm.Model
	Name   string
	Labels []*Label `gorm:"many2many:labels;polymorphic:Label"`
}

In this scenario, a single label (A) can belong to both a fruit and vegetable entry.  And both a fruit or vegetable can have many labels.

duplicated with https://github.com/go-gorm/gorm/issues/4004


Github release does not match play store

There is a more recent version in play store than on github (2.3.7)

Fixed, the github release is now published.


FPS issue

Hi,
Weights: yolov7.pt
Faiss gpu
input video resolution 1920 × 1080
gpu 2060 super
I am getting extremely slow fps. The actual inference step is very fast.
This line  online_targets = tracker.update(detections, im0) takes 1.2 seconds.
Is this expected?
My GPU utilization is about 25%
CPU utilization is also around 20%

I have the same issue.
https://github.com/NirAharon/BoT-SORT/issues/39
But way more extreme in my case.
BoTSORT is not something I would use for real-time applications.

Ah strange,  OC_SORT gets nearly 700 fps (no inference) on cpu and the implementation looks so similar.
I assume oc_sort doesn't compensate for camera motion? What's your findings for the most performant real time tracking algorithm @mikel-brostrom?

Both OCSORT and ByteTrack are absolutely the fastest, achieving around 800FPS on a mere Intel® Core™ i5-4210U CPU.
For best MOT metrics while real-time (20-30 FPS) it is still StrongSORT, at least based on my own MOT16 eval results:
Yolov5 StrongSORT
HOTA: StrongSORT                   HOTA      DetA      AssA      DetRe     DetPr     AssRe     AssPr     LocA      RHOTA     HOTA(0)   LocA(0)   HOTALocA(0)
COMBINED                           52.948    51.068    55.46     55.639    75.608    59.992    80.202    81.989    55.447    68.353    76.972    52.613

CLEAR: StrongSORT                  MOTA      MOTP      MODA      CLR_Re    CLR_Pr    MTR       PTR       MLR       sMOTA     CLR_TP    CLR_FN    CLR_FP    IDSW      MT        PT        ML        Frag
COMBINED                           60.265    79.402    60.705    67.147    91.246    31.915    47.776    20.309    46.434    74135     36272     7112      486       165       247       105       2164

Identity: StrongSORT               IDF1      IDR       IDP       IDTP      IDFN      IDFP
COMBINED                           66.889    58.056    78.893    64098     46309     17149

FPS: 20
Yolov5 BoTSORT (no camera motion compensation, the implemented ones: ecc and orb, are too expensive computationally for real-time applications)
Used parameters for BoTSORT can be found here:
HOTA: BoTSORT                      HOTA      DetA      AssA      DetRe     DetPr     AssRe     AssPr     LocA      RHOTA     HOTA(0)   LocA(0)   HOTALocA(0)
COMBINED                           52.943    51.653    54.766    56.387    75.51     60.55     76.832    82.008    55.485    68.441    77.037    52.725

CLEAR: BoTSORT                     MOTA      MOTP      MODA      CLR_Re    CLR_Pr    MTR       PTR       MLR       sMOTA     CLR_TP    CLR_FN    CLR_FP    IDSW      MT        PT        ML        Frag
COMBINED                           60.993    79.48     61.52     68.097    91.192    34.816    47.195    17.988    47.019    75184     35223     7262      582       180       244       93        2111

Identity: BoTSORT                  IDF1      IDR       IDP       IDTP      IDFN      IDFP
COMBINED                           66.54     58.114    77.823    64162     46245     18284

FPS: 3

Hi @C-monC  and @mikel-brostrom, sorry for the late response I wasn't available for the last month.

BoT-SORT can achieve real-time. I created a c++ real-life implementation that I, unfortunately, can't publish here.
The ORB and ECC method are indeed slower and thus I used the c++ OpenCV VideoStab GMC method, as you can see in the paper.
Currently, there is no python implementation for this module, this is why I write the GMC result to files and read it in runtime.  For demo arbitrary videos (not from the MOTChallenge) I enabled the ECC and the ORB option.

I just added another CMC method which is following the OpenCV GMC code and it is based on sparse Optical Flow.
This CMC method is running at ~16 mSec for a 1920x1080 frame on my computer.

As I mentioned in the paper, the CMC module should run in parallel to the detector, thus the extra 16 mSec could be reduced to nearly zero latency (because the detector usually takes most of the runtime).
Therefore, the overall runtime should be governed by the detector time (YOLOv5 in your case) and the ReID module if it is enabled.
I hope I will have time soon to create a multi-threaded implementation in python which run the detector and the CMC in parallel.

By the way, BoT-SORT (with correct CMC in parallel and without ReID) and ByteTrack should take the same runtime.
And also, BoT-SORT-ReID and StrongSORT should have the same runtime, especially because StrongSORT used ECC and ReID (if I remember correctly).

In any case, thank you for your interest in this work and I hope I was able to help you.

Hi @NirAharon.
Could you provide the real-time version of BoT-SORT?
Thank you!

The BoT-SORT indeed is real-time.
It is the CMC that takes up most of the computation time.
For reference, you can check this.
When CMC is disabled, BoT-SORT is able to achieve 60+ FPS on Jetson NX in a sequence having an average of 226 objects/image.

The BoT-SORT indeed is real-time.
It is the CMC that takes up most of the computation time. For reference, you can check this.
When CMC is disabled, BoT-SORT is able to achieve 60+ FPS on Jetson NX in a sequence having an average of 226 objects/image.

How to disable CMC?


spotifyd: new package at 0.2.24

Description of package
Spotifyd allows third party Spotify clients to be able to stream music without relying on the official client
Installed manifest of package
/var/db/kiss/installed/spotifyd/version
/var/db/kiss/installed/spotifyd/sources
/var/db/kiss/installed/spotifyd/manifest
/var/db/kiss/installed/spotifyd/depends
/var/db/kiss/installed/spotifyd/checksums
/var/db/kiss/installed/spotifyd/build
/var/db/kiss/installed/spotifyd/
/var/db/kiss/installed/
/var/db/kiss/
/var/db/
/var/
/usr/bin/spotifyd
/usr/bin/
/usr/

New package

[x] Latest upstream version.
[x] I agree to maintain this package.
[x] I agree to notify @dylanaraps if I can no longer maintain this package.

I have spotifyd working with the latest libressl. Here are the changed files:
https://gist.github.com/dylanaraps/128323214fe8c85fc8e8f978097f3b37
This works by vendoring the openssl-sys crate which then allows us to patch it to support newer libressl versions.


Uniqueness violation

I keep getting this error on step 7. Everything else works fine and I'm able to login but I can't get this step to work.

https://docs.microsoft.com/en-us/skypeforbusiness/deploy/integrate-with-exchange-server/oauth-with-online-and-on-premises#feedback
when doing step 7

which version of Active Directory do you have? if you've imported AzureAD 2.0 I would expect the commands to fail.  The procedure assumes AzureAD 1.0, https://docs.microsoft.com/en-us/powershell/module/?view=azureadps-1.0

which version of Active Directory do you have? if you've imported AzureAD 2.0 I would expect the commands to fail. The procedure assumes AzureAD 1.0, https://docs.microsoft.com/en-us/powershell/module/?view=azureadps-1.0

I'm using 1.0, I already noticed that you must be using 1.0 for this.

You may need to file a support ticket then, sorry.

@wakeyyc  - thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:  https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.

@officedocsbot close


Robot Status error; No transform from [front_right_wheel_link] to [map]

OS: (e.g. Ubuntu 18.04)
ROS Distro: (e.g. Melodic)

Expected behaviour
Hello,
I am working on a project using the Husky model, and I am encountering some issues. Initially, I executed the bring-up launch file that enables laser odometry. Then, I loaded the Husky model mounted with a Realsense D435 and a Velodyne VLP16 into Gazebo with my customized world. In RViz, I attempted to display my customized map (the map version of my world) along with the Scout model instead of the Husky model and proceed with move_base navigation. However, I encounter an error when I follow these steps sequentially.
Robot Status error;
front_left_wheel_link
No transform from [front_left_wheel_link] to [map]
front_right_wheel_link
No transform from [front_right_wheel_link] to [map]
inertial_link
No transform from [inertial_link] to [map]
rear_left_wheel_link
No transform from [rear_left_wheel_link] to [map]
rear_right_wheel_link
No transform from [rear_right_wheel_link] to [map]
Q1. Could someone guide me on how to resolve this issue? I have also attached screenshots of my screen, rqt_tree, and rqt_graph for further reference.

Closing due to inactivity.  Please feel free to re-open if issue persists.


Neobundle force feature is not working after recent update

Minimum vimrc to repro
set nocompatible                                                                " Must be first line
set encoding=utf-8                                                              " Set text encoding default to utf-8
scriptencoding utf-8                                                            " Character encoding used in this script
filetype off
let s:bundle_base_path = expand('~/.vim/bundle/')
execute 'set runtimepath+=' . s:bundle_base_path . 'neobundle.vim/'
call neobundle#begin(s:bundle_base_path)
NeoBundleFetch 'Shougo/neobundle.vim'                                           " Plugin manager
NeoBundle 'Shougo/neobundle-vim-recipes', { 'force' : 1 }                       " Recipes for plugins that can be installed and configured with NeoBundleRecipe
NeoBundle 'Rykka/os.vim', { 'force' : 1 }                                       " Provides consistency across OSes
let g:OS = os#init()
call neobundle#end()
filetype plugin indent on                                                       " Automatically detect file types.
NeoBundleCheck
NeoBundleList shows os.vim and neobundle-vim-recipes as disabled.

It seems we should set bundle.sourced to 1 for force sourced bundle
diff --git a/autoload/neobundle/config.vim b/autoload/neobundle/config.vim
index a6bedc7..e752228 100644
--- a/autoload/neobundle/config.vim
+++ b/autoload/neobundle/config.vim
@@ -486,6 +486,7 @@ function! neobundle#config#add(bundle) "{{{
   if bundle.force
     runtime! plugin/**/*.vim

   let bundle.sourced = 1
 endif

endif
elseif bundle.lazy

Fixed.


Test with large Smoldyn trajectory

Use Case
As a developer evaluating the current autoconversion lambda, I want to know how it performs with large data.
Acceptance Criteria
Test conversion with the Smoldyn min1 and spine examples and note performance, especially how long conversion takes.
Details
Smoldyn input file links:

Min1 should look like this
Spine should look like this

Conversion parameters used in the posted examples are here.

There are strict limitations to how much data can be transmitted via the API, and how long a single Lambda function can run when triggered

Lambda REST API payload size limit: 10 MB
Lambda response payload size limit: 6 MB
Lambda function time limit: 15 minutes

Because of the payload limits, the only way to process >10MB files is to upload the trajectory data to we want to convert to a S3 bucket, add a S3 trigger to the lambda to process the content in S3, and then write to the S3 bucket on completion

Unfortunately, even when maxing out the processing power for the lambda, this doesn't meet performance needs

Spine.txt (smoldyn)-> spine.simularium conversion
45 MB .txt file -> 100 MB .simularium file
Took 20 seconds locally, 33 seconds in lambda
Min1.txt (smoldyn) -> min1.simularium conversion
1.1 GB .txt file -> 1.8 GB .simularium file
Took 6:45 locally, timed out after 15:00 in lambda

I expect that we'll need to be able to convert files that are over 1 GB in size, so this test indicates that lambda won't be sufficient for our use case. I'd recommend exploring AWS EC2+ECS or AWS Fargate+ECS as potential options for autoconversion


Weave DNS to manage DNS within RancherOS?

Does weave work within RancherOS? or does Rancher OS has its own DNS setup to allow inter-container n/w setup?

Weave should work fine.  RancherOS purposely doesn't have a cross networking solution.  It is designed to just be the Docker daemon really.  Once Docker has full cross host networking then RancherOS will support that too.  You might look at our other (completely separate) product Rancher (http://github.com/rancher/rancher).  That product provides cross host networking, service management, DNS, load balancing, service discovery, and more.

I'm late to the party but FYI Weave is perfectly happy on ROS, I've been running it with no issues for weeks.

@colebrumley Mind sharing how you got weave to launch on start-up? /opt/rancher/bin/start.sh executes before docker, so a "weave launch" doesn't work from there. I couldn't find any docu on what runs after docker starts or if there is infact such a thing.

@voobscout Sure, I just made a system service with an -io.rancher.os.after: docker label so that it'd wait to start until after user-docker is up.  The container is nothing special, it's just running the Weave script from their releases page.
Here's the service file I dug up from my lib folder. I'm pretty sure this was the working version ;)
weave:
  image: your-weave-container
  container_name: weave
  privileged: true
  labels:
    io.rancher.os.scope: system
    io.rancher.os.after: docker,console
  volumes_from:
    - all-volumes
  net: host

@colebrumley many thanks!

@colebrumley Good sir, could you please explain how to run weave inside a container? I've been bashing my head for a couple of days already, still can't figure it out... a Dockerfile would be awesome!
Thank you so much in advance!

@miztiik Since a system-service exists, we won't be adding it directly into RancherOS.


[WIP] *: Add blackbox probing for execution and duration of queries

This change adds the up tool as a long running process running
continuously executing a set of defined queries monitoring their
ability to execute as well as their duration.
This marked as WIP as I want to get https://github.com/observatorium/up/pull/13 merged first.
@bwplotka @metalmatze @kakkoyun @squat @krasi-georgiev

Is this really a feature we want to have in upstream Observatorium? I seems to be pretty custom for our use case?
The blocking PR is merged so in general, we can move forward with this.

Is this really a feature we want to have in upstream Observatorium? I seems to be pretty custom for our use case?

I don't feel too strongly about it, I'm happy to remove it from the base for now, I felt it might be useful for other setups, but maybe you're right and we can keep it to just the prod env for now.


Catalog: Deletions

Implement deletions of entities when they disappear from the source location yaml etc.
TBD

@benjdlambert In our team in Expedia, we have multiple catalogs and came across this use case of entity deletion in multiple places.  I'm interested in taking up this work, if its not already started.
My high level idea about this is in the DatabaseEntitiesCatalog class, use a global dictionary like DS (TBD) to store names of old entities.
In analyzeBatch() method, when we loop through new entities from input here to create three groups(toAdd, toUpdate, toIgnore), delete those entities which fall under these three categories from the above mentioned dictionary.
So, at the end of execution of analyzeBatch() method for all the batches, we will have the dictionary left with elements from to be deleted. We can proceed from here to do delete DB operation.

Sounds good @benjdlambert.
Do you know of a timeline in plan when this feature or Catalog out of Alpha milestone will be finished. Internally, as we bring in more users to backstage we have this significant use case for entities deletion and, we are thinking about building a custom workflow until the OS workflow is ready. So, your answer would be super helpful to decide on whether to wait for this work to be done or start building the custom workflow for deletion internally for now. Thanks in advance!

@Sugan-Joe it'll be in the order of weeks at least. We're taking a step back and redesigning how the processing loop works, and will likely tackle deletions as a part of that or just after.
We're also looking at deletions in a slightly different way, where we may not want to delete entities straight away when they were missed in a refresh, as that could be the result of an intermittent failure.

@benjdlambert could you link to the PR which resolved this please?

@WillSewell The processing engine of the catalog has changed significantly over the last couple of months. It's hard to point to any one PR, because of this large rewrite that also changed database structure and some semantics across the board. We just recently merged the PR that switches out the old engine for the new one. Documentation on how it works is coming soon.
One large change is that the entities are internally regarded as a graph, where pieces of the graph are automatically marked as orphaned if there's nothing keeping them "active". For example, if you remove one of three entity definitions in a single YAML file, then all three will remain in the database but the third one will be clearly marked as orphaned so that you can delete it when you want.
Another large change is that we have separated out the concept of "sources" of entities into the system, and entities that are generated as a side effect of those sources. So again, if you register a location, or have a location in your config, that points to a YAML file, then that URL by extension becomes an automatically generated Location entity in the database. Then as that location is processed and the actual YAML source data is read, those resulting entities from that file are also inserted into the database.
The key insight for the last point, is that when "sources" do deletions - such as if you unregister a location - then their subtrees also get deleted eagerly automatically. UNLESS something else is also keeping parts of that subtree alive by extension :) For example if you register a glob pattern that matches ten actual YAML files, and then register one of them too by hand, then both of those are keeping that one location un-orphaned individually.
I hope that helped. It was written kinda hastily in passing. The docs will explain the concepts better.

Another even cooler thing - you can make sources of your own. This will be very useful for those that want to mirror data from an external system, because the corresponding entity deletions will happen automatically which they didn't before.
I just realized last night that we may have forgotten to add that ability to the catalog builder class, so we'll have to fix that, but yeah :)

@freben I'm most likely missing something, but I don't see this working. Using the example from https://github.com/backstage/backstage/tree/master/packages/catalog-model/examples, I removed both references to the petstore:

https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all-components.yaml#L9
https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/all-apis.yaml#L9

Despite this, entries in refresh_state and final_entities tables remain, and these entities are still available in the catalog. How do I determine that these are orphaned and have them be deleted? There doesn't appear to be any documentation on this besides your comment above.

So I did actually find the backstage.io/orphan annotation set correctly on these resources, and then found EntityOrphanWarning in the catalog plugin which is used in EntityPage but not in the version included in the app generator. For this to be more obvious out of the box, should it not be included there?

Hi team, I'm fairly new to backstage but it seems this issue has been resolved. I'm wondering how do I upgrade my backstage instance to a newer version that has this fix? Thanks!

So I did actually find the backstage.io/orphan annotation set correctly on these resources, and then found EntityOrphanWarning in the catalog plugin which is used in EntityPage but not in the version included in the app generator. For this to be more obvious out of the box, should it not be included there?

Just responding for future reference, that it is now indeed in the new app template since some time back.

Hi team, I'm fairly new to backstage but it seems this issue has been resolved. I'm wondering how do I upgrade my backstage instance to a newer version that has this fix? Thanks!

You use yarn backstage-cli versions:bump for that.

Thanks @freben . To close the loop, it was https://github.com/backstage/backstage/pull/6586 which resolved that.

Thanks for the great work! I have updated my backstage instance and my resource is marked as orphaned correctly. I understand we could just simply delete the orphaned entity, but can I make it automatic? In other words is there a setting that would automatically delete the orphaned entities for me?
Asking because I would expect having hundreds/thousands of entities for my company and we certainly would like to avoid deleting the orphaned ones manually. Thanks!

You can actually build that on the APIs as a sort of "janitor", even from the outside using the REST API. We haven't made such a function yet though. If you choose to build it, it might even be a useful contribution to the main repo for others!

I currently have a plugin which scrapes some resources using a third-party API and what I'd like to have is right something like the janitor inside the plugin itself. However I could not find any reference in the docs about how plugins can perform “housekeeping” operations.

We'll be looking into making these things better surfaced though. It might for example be useful to have a table on the Backstage landing page that lists all orphaned entities that you own, if any. It could allow multiselect and batch delete, and of course facilitates the discovery of the situation happening in the first place.

This would be great too.

I think what you will actually want, may be an EntityProvider instead of a CatalogProcessor. https://backstage.io/docs/features/software-catalog/life-of-an-entity#ingestion
This interface is still pretty young though. But I think it does exactly what you want - it lets you mirror an external system perfectly, with eager cleanup of things that no longer exist remotely

@LegendSebastianoL, it won't. If you try to go to the Entity in backstage, you should see an error message that the file cannot be found now, but the entity will still be cached at it's most recent successful ingestion.
You can remove the file by hitting the context menu in the top right and choosing unregister entity. That will allow you to remove the location from being tracked, and should remove the Entity.
If you're using an Entity Provider, I believe that that should automatically remove the entity on the next run. Are you seeing some different behaviour?

I posted in Discord as well, Manually removing this entity returned a 500 error in the FE which we had to remove via a DB search and deletion of such entry.
We have an entity provider for users but not for software, we ingest them manually.

if you are interested this is my packages/backend/src/plugins/catalog.ts
import { CatalogBuilder } from '@backstage/plugin-catalog-backend';
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-catalog-backend-module-scaffolder-entity-model';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
import { AwsS3EntityProvider } from '@backstage/plugin-catalog-backend-module-aws';
import { GithubLocationAnalyzer } from '@backstage/plugin-catalog-backend-module-github';
import { jsonSchemaRefPlaceholderResolver } from '@backstage/plugin-catalog-backend-module-openapi';
import { OktaUserProvider } from '../calalogue';
import { BitbucketCloudEntityProvider } from '@backstage/plugin-catalog-backend-module-bitbucket-cloud';

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const builder = await CatalogBuilder.create(env);

  const userProvider = new OktaUserProvider(env.logger, env.config);
  builder.addEntityProvider(userProvider);

  builder.addLocationAnalyzers(
    new GithubLocationAnalyzer({
      discovery: env.discovery,
      config: env.config,
      tokenManager: env.tokenManager,
    }),
  );

  await env.scheduler.scheduleTask({
    id: 'refresh_users',
    fn: async () => {
      await userProvider.run();
    },
    frequency: { cron: '0 0 * * *' },
    timeout: { minutes: 2 },
    initialDelay: { seconds: 3 },
  });

  builder.addEntityProvider(
    AwsS3EntityProvider.fromConfig(env.config, {
      logger: env.logger,
      schedule: env.scheduler.createScheduledTaskRunner({
        frequency: { minutes: 30 },
        timeout: { minutes: 3 },
      }),
    }),
  );

  builder.addEntityProvider(
    BitbucketCloudEntityProvider.fromConfig(env.config, {
      logger: env.logger,
      schedule: env.scheduler.createScheduledTaskRunner({
        frequency: { minutes: 30 },
        timeout: { minutes: 3 },
      }),
    }),
  );

  builder.addProcessor(new ScaffolderEntitiesProcessor());
  builder.setPlaceholderResolver('openapi', jsonSchemaRefPlaceholderResolver);
  const { processingEngine, router } = await builder.build();
  await processingEngine.start();

  await env.scheduler.triggerTask('refresh_users');

  return router;
}

@LegendSebastianoL it would be good to understand what that 500 error was - You should be able to unregister entities that no longer exist for sure, thinking that there's got to be an issue there.
Did you happen to see any logs? Is there any way you can reproduce this again so we can dig into why you get a 500 error?

luckily I still get that entry in dev, this is the error log I get in the popup
{
  "error": {
    "name": "error",
    "message": "select * from \"locations\" where \"id\" = $1 - invalid input syntax for type uuid: \"url:https://github.com/XXXX/catalog-info.yaml\"",
    "length": 190,
    "severity": "ERROR",
    "code": "22P02",
    "file": "uuid.c",
    "line": "137",
    "routine": "string_to_uuid"
  },
  "request": {
    "method": "GET",
    "url": "/locations/url%XXXXX%2Fcatalog-info.yaml"
  },
  "response": {
    "statusCode": 500
  }
}

@LegendSebastianoL that's great information.
@freben what the hell is going on here? 😅  ping also for @backstage/catalog-maintainers.
Think that this could warrant a separate issue ticket as it's not really related to this one.

@LegendSebastianoL @benjdlambert That sounds a lot like this old fixed error in the catalog client.

AFAIK we are using the default catalog page with no customization, this is what I see in my App.tsx
import {
  CatalogEntityPage,
  CatalogIndexPage,
  catalogPlugin,
} from '@backstage/plugin-catalog';

...

    <Route path="/catalog" element={<CatalogIndexPage />} />
    <Route
      path="/catalog/:namespace/:kind/:name"
      element={<CatalogEntityPage />}
    >
      {entityPage}
    </Route>

    <Route
      path="/catalog-import"
      element={
        <RequirePermission permission={catalogEntityCreatePermission}>
          <CatalogImportPage />
        </RequirePermission>
      }
    />

We are at version 1.21.0

@LegendSebastianoL I think that it's 100% that issue that @freben linked - I remember it now!
Just looking at some of the responses on the issue, it's likely that you have duplicate versions of the catalog-client package, and the one that it the older with the bug that is still present is being used :(
Can you try the following: https://github.com/backstage/backstage/issues/21962#issuecomment-1866674173

I got this
➜  app git:(dev) yarn dedupe @backstage/catalog-client
yarn dedupe v1.22.19
error The dedupe command isn't necessary. `yarn install` will already dedupe.
info Visit https://yarnpkg.com/en/docs/cli/dedupe for documentation about this command.
➜  app git:(dev) yarn install
yarn install v1.22.19
[1/5] 🔍  Validating package.json...
[2/5] 🔍  Resolving packages...
success Already up-to-date.
✨  Done in 0.51s.
➜  app git:(dev)

in my yarn lock I have
"<EMAIL_ADDRESS>  version "1.5.0"
  resolved<EMAIL_ADDRESS>  integrity sha512-hocxKg7nK8EGUeec+VbM/BglCAj8PDTAhfu/zcIyEatiCsAng1yF6qCo9p/jhoxN8slngM9oLnWRjCHfvXOV+w==
  dependencies:
    "@backstage/catalog-model" "^1.4.3"
    "@backstage/errors" "^1.2.3"
    cross-fetch "^4.0.0"
    uri-template "^2.0.0"

"<EMAIL_ADDRESS>  version "1.5.1"
  resolved<EMAIL_ADDRESS>  integrity sha512-GWTwRaJd1i9f5OHSkt4yf3jxohJv5xvqZei1anFxjZvXfxFTa0zG6kWW43qomRiaKsbegohnM7HWVOOgpJ6Azw==
  dependencies:
    "@backstage/catalog-model" "^1.4.3"
    "@backstage/errors" "^1.2.3"
    cross-fetch "^4.0.0"
    uri-template "^2.0.0"

"<EMAIL_ADDRESS>  version "1.5.2"
  resolved<EMAIL_ADDRESS>  integrity sha512-hWP1Zb2KZ7owSvHdOhP+VB8eSOYbnsXz+l2OdTgMhKQS8ulGZXUW1SzA+N9PZupnQLYmZP2+2DXTpKhSEzQnnQ==
  dependencies:
    "@backstage/catalog-model" "^1.4.3"
    "@backstage/errors" "^1.2.3"
    cross-fetch "^4.0.0"
    uri-template "^2.0.0"

and the packages/backend/package.json contains "@backstage/catalog-client": "^1.5.1",

and the packages/backend/package.json contains "@backstage/catalog-client": "^1.5.1",

Unfortunately, this stuff is done in the frontend so version isn't going to matter.
I would remove the entries for "<EMAIL_ADDRESS>and "<EMAIL_ADDRESS>in the yarn.lock manually and run yarn install again and it should collapse them into one reference instead of duplicates.

I was trying to change the lock file directly, I ran the yarn upgrade command but I had a lot of styling issues so I reverted and changed the lock directly.
I've built staging now, where that entity is because in my local I don't have it, and I can't register it perfectly :) TY for your help

@LegendSebastianoL no probs! :tada: glad it all worked out!


fix(router): replace gatherNagigationPredicates with gatherNavigationPredicates

This PR fixes a typo in the gatherNagigationPredicates function name.

I checked the Travis CI build errors but I don't think they are related to the changes in this PR.

This method has since been refactored out, but thank you for sending this. Sorry for not getting to it earlier!


Bookmarks not updating

Firefox 65.0
My bookmark feeds are not updating.  I tried to force an update by changing the refresh interval from 5 minutes to 1 minute.  Six hours later there have been no new feeds.  Is there some other method to force a refresh?

@treba123 Hi, can you please perform the following troubleshooting steps ?

Open the webconsole (F12) on the Livemarks preference/options page
Enter await browser.storage.sync.get()
Open the browser console (Menu > Web Developer > Browser Console)
Share the output of the browser console.

Thanks!

@nt1m: the browser console showed a lot of

Error(s) encountered during statement execution: database disk image is malformed

So I reset my browser profile, reinstalled all addons and voilà, things work again. So most probably a firefox issue. @JJDLA , @Summerwood294 , @webstoney , can you confirm this?
Sorry for not thinking about that earlier. Will dig through some firefox issues and see if there's a open bug. If I there's one, I'll post it here so other affected people can find it.

@treba123 Thanks! Yes, it seems like a known issue from the Firefox side: https://bugzilla.mozilla.org/show_bug.cgi?id=1298758

Maybe https://bugzilla.mozilla.org/show_bug.cgi?id=1220723 is the better place to look for updates

@nt1m jep, thats better. Will send it to you (and trust you and google to not share/use that information....:))

So I reset my browser profile, reinstalled all addons and voilà, things work again. So most probably a firefox issue. @JJDLA , @Summerwood294 , @webstoney , can you confirm this?

I'm not sure about the others, but in my case it's definitely another problem. As i wrote, when refreshing a feed the browser-cache is not bypassed, so although there is a new feed-version the old one is reported by the cache (a forced reload ore cache-clear fixes this). ight have to do something with the feed origin but that doesn't help much.
Is it possible to force loading from the server? Would be easiest I think.

I reset my firefox profile and I'm still having the same issue, bookmarks won't reload and I can't add anymore bookmarks


Update 'graph teams add' to include specifying a template

Following on from https://github.com/pnp/office365-cli/issues/867:

command: graph teams add --templateFile <templateFilePath>
templateFilePath - Path of the json file describing the teams custom template
Graph API Endpoint (beta) - https://docs.microsoft.com/en-us/graph/api/team-post?view=graph-rest-beta

We will have to consider some validations for this one:

If --templateFile is specified, name and description should come from the template file itself. Not as options to the command.
We would also have to consider the behaviour if the team needs to be added to an existing group. Simplest option would be to only allow creating new teams with the --templateFilePath option.

Thanks @vman. I think there is a usage for both creating using teams using a template as well as just specifying a name and description. Let's extend the existing command with support for templates and keep the existing functionality intact.

Yup we would not change any existing functionality. It's just that we would need to set some validations as the template allows specifying a name and description in it as well:

So if a command is specified something like this:
graph teams add --name "my team" --description "my awesome team" --templateFilePath C:\teamsTemplate.json
And the template contains values for name and description as well, we would need to clearly specify which values will take precedence.
So was suggesting that if the --templateFilePath option was specified, then --name and --description should not be allowed and instead should come from the template itself.

This makes perfect sense @vman 👍

@vman and @waldekmastykarz : My suggestion would be that we should give precedence to --name and --description if provided along with --templateFilePath. Based on my recent encounters, normally we use a template to provision multiple teams, and it would be really useful if we can just provide name and description and use the template. Obviously, we will not be creating a template for each team.

Makes sense @rjesh-git

We should also provide a --wait command for when provisioning a team with a template as the response from the initial request returns a url for the async operation in the Location header.
This can be used to poll and give feedback to the console on progress, success and failure of the request.

Hey @garrytrinder, are you working on this?

I am, just got the --wait option to implement, will look to get that in over the weekend 👍🏻

@garrytrinder  - Had a quick play and loving this. This is going to condense my massive script that goes through collating 3 lots of tab creation, joining them together and sending as a batch call to the graph into one line and just some effort on a reusable template.
Absolutely loving the wait feature too as that is massive for these types of operations, where a script can carry on before the previous operation has fully completed.
Thanks

Appreciate your kind words! 😊

Thank you @harp365 😊
Great to hear that this simplifies your workflow 🚀💪🏻


Request : Terraform Provider

First, thank your for your solution, you respond to a concrete need in Azure Landing zone projects. In fact, the only missing piece in your solution is a Terraform Provider.
Having a Terraform Provider would help to integrate your solution into complex Landing zones deployments.
At minimum, the Terraform provider should offer :

Reservation of an IP Range
Lease reservation of an IP Range

Good morning @benoitsautierecellenza, I agree with you that this is indeed a good idea. It may or may not come to fruition because the end goal of this project is that I'm working with the Azure Networking product group to actually get the IPAM feature built into the platform, and at that time we already have a Terraform provider that should be sufficient.
For now, if you look in the "examples" folder of the repo, I do have a Terraform example of what you described using some scripting. Have you taken a look at that yet?
https://github.com/Azure/ipam/tree/main/examples/ipam-terraform

Thank you @benoitsautierecellenza! May I mark this as completed for now, or would you like me to leave it open?

Yes I close.


Issue #577: add info about the location of the command line tools help section in the web console

Resolves #577
@rdruss WDYT?

Not my call to make, but there's quite some duplication, maybe make it a shared topic? :-)

Thanks. I agree, making it a shared topic is definitely a good idea:)

@rhoads-zach I put the procedure of obtaining the command with the token and logging in  with oc into a separate topic. WDYT?

LGTM, merging.


AWS provider

xref: https://dcosjira.atlassian.net/browse/VAGRANT-17

This isn't going to happen. The current strategy for dcos-vagrant is to only support local deployment. Remote deployment will need to be another provisioning product, like terraform and/or ansible.


Remove blur effect of BottomBarTabs for older Android versions

The current version looks like this

I can take care of this. What do we want it to look like? Any particular preference for a color in the scheme? @nobonobopurin

I opted for the scrim color defined in the theme (it's pure black, same as the current hardcoded value), but remove the alpha on devices without blur support. PR incoming

@mannodermaus  Thank you for your comment. Please use the same color as the background color of the bottom navigation. (pure black)


Add cbuild.sh, a configurable Community Build wrapper for dbuild

tested against https://github.com/typelevel/catalysts-docker/tree/master/artifactory-oss by running:
./cbuild.sh -v 2.12 -r resolvers/resolvers-catalysts-docker.conf

Note that the original structure (with the three config files in the root directory) can be maintained by simply running:
./cbuild.sh -c .

hey, sorry I haven't had time to try this quite yet, but I expect to get to it soon. don't worry about the merge conflict, I can sort out that later.

@SethTisue np, and thanks for update :smile:
btw, I know the PR as -is is somewhat intrusive, I had some thoughts at some stage to make it less so, but then it was less clear as to the final goal -  tldr, happy to discuss on gitter/here first.

still planning to returning this before too much longer :-\

I merged this with origin/2.12.x and pushed the result to https://github.com/SethTisue/community-builds/tree/BennyHill-fix/474
it seems to be working for me locally. if it works on Jenkins, I'm inclined to just merge it and try it for a while.
I've queued up a Jenkins run here: https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-community-build/1335/consoleFull but it's 404 til the queue clears, probably tomorrow.

sigh, Jenkins ran out of disk. I've queued up a new run here: https://scala-ci.typesafe.com/job/scala-2.12.x-integrate-community-build/1339/consoleFull but it's 404 til the queue clears

the one failure in the test run is unrelated, so I'm going to go ahead and merge this. thank you Alistair — for the nice PR, and for all your patience.

I know the PR as -is is somewhat intrusive, I had some thoughts at some stage to make it less so, but then it was less clear as to the final goal - tldr, happy to discuss on gitter/here first

I backed out a couple aspects of the naming and structure that I found a bit "intrusive" — see f073143fe4794534310d1a60c228ce22a1943951 and d50b71b92ccd556b7a39eb7d9e6c7dadc7f64fa3. but this is provisional and open to further discussion and further changes


chore(resources): update link Strategic Plan

:tada: This PR is included in version 1.32.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


README.md link to roadmap-2022.md and update roadmap

G'day
Love this product.  Please update the main README.md  to link direct to the new roadmap-2022.md  and also update the roadmap.
Also: Q: When will Terminal be bundled into Windows by default?
Thanks!

Meh, sure, we should probably update the roadmap. Thanks for the reminder!

When will Terminal be bundled into Windows by default?

It already is in Windows 11 😉

It already is in Windows 11 😉
But that is NOT production ready (it's the modern Vista/Win 8).  Win 10 is where the action is


Python class (Interface) is generated out of order

Describe the bug
I have a CDK construct library which has been working fine. But suddenly, I think possibly with the addition of named exports, I'm getting an error when attempting to import a construct when it attempts to reference one of the interfaces in a Python CDK app. Looking at the generated Python code, I noticed that the reference occurs before the class is defined.
Here's an example of how the interfaces are defined. Note: These are not really empty.
import { StackProps } from "aws-cdk-lib";

export interface BaseProps {}

export interface SomeAdditionalProps extends SomeProps {} //This may not be relevant

export interface AllTheProps extends StackProps, BaseProps {}

And here's the generated code:
@jsii.data_type(
<EMAIL_ADDRESS>    jsii_struct_bases=[BaseProps],
    name_mapping={}
)

class SomeAdditionalProps(BaseProps):
    def __init__()....

## A couple hundred lines later
class BaseProps:

Stack trace:
line 133, in <module>
    jsii_struct_bases=[BaseProps],
                       ^^^^^^^^^^^^^^^
NameError: name 'BaseProps' is not defined. Did you mean: ....

Expected Behavior
CDK Synth correctly
Current Behavior
Synth error (See above)
Reproduction Steps
See above code
Possible Solution
No response
Additional Information/Context
No response
SDK version used
5.3.12
Environment details (OS name and version, etc.)
Mac OS Sonoma

So based on my testing, what seems to be happening is JSII is generating classes in alphabetical order (is that correct?). But if Class A depends on Class B, then Class B is not yet defined and it throws an error. So I was able to work around this problem by renaming Class B to something like Class AppB so it went before the original Class A.
Does this seem like expected behavior? If so, I would expect that some dependency resolution is needed.

Hi, @automartin5000. I can't reproduce the bug based on the information you provided. Is there a complete example you can share?

JSII is generating classes in alphabetical order

jsii generates classes in topological order, where class A is a predecessor of class B if A depends on B in some way (being a subclass is one example). This is done precisely to avoid this issue. The root cause must be something else.

Thanks for the response @otaviomacedo. I'll try to recreate it this week or next

Sorry for the delay, here's a clean example:
constructs.ts
import { Construct } from "constructs";
import { AProps } from "./interfaces";

export class TestConstruct extends Construct {
  constructor(scope: Construct, id: string, props: AProps) {
    console.log(`Initialized prop: ${props.testProp}`);
    super(scope, id);
  }
}

interfaces.ts
export interface AProps extends BProps {}

export interface BProps {
  readonly testProp: string;
}

Python app code:
from <construct_library>.test_construct import AProps
from aws_cdk import App

class TestConstruct:
    def __init__(self, scope, id, props: AProps):
        super().__init__(scope, id, props)

test = TestConstruct(App(), 'TestConstruct', AProps(test_prop='test'))

Error:
_init__.py", line 20, in <module>
    jsii_struct_bases=[BProps],
                       ^^^^^^
NameError: name 'BProps' is not defined

Full JSII generated code (anonymized):
import abc
import builtins
import datetime
import enum
import typing

import jsii
import publication
import typing_extensions

from typeguard import check_type

from .._jsii import *

import constructs as _constructs_77d1e7e8

@jsii.data_type(
    jsii_type="<construct_library>.testConstruct.AProps",
    jsii_struct_bases=[BProps],
    name_mapping={"test_prop": "testProp"},
)
class AProps(BProps):
    def __init__(self, *, test_prop: builtins.str) -> None:
        '''
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6c50750a3eed61a5e3bf6110860acdf626b4cbe1cbe7b2cee25f235971070407)
            check_type(argname="argument test_prop", value=test_prop, expected_type=type_hints["test_prop"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "test_prop": test_prop,
        }

    @builtins.property
    def test_prop(self) -> builtins.str:
        result = self._values.get("test_prop")
        assert result is not None, "Required property 'test_prop' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AProps(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )

@jsii.data_type(
    jsii_type="<construct_library>.testConstruct.BProps",
    jsii_struct_bases=[],
    name_mapping={"test_prop": "testProp"},
)
class BProps:
    def __init__(self, *, test_prop: builtins.str) -> None:
        '''
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a410f745cf17b952ca7c740989abf5daa91608073357db663df598089ac271c0)
            check_type(argname="argument test_prop", value=test_prop, expected_type=type_hints["test_prop"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "test_prop": test_prop,
        }

    @builtins.property
    def test_prop(self) -> builtins.str:
        result = self._values.get("test_prop")
        assert result is not None, "Required property 'test_prop' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "BProps(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )

class TestConstruct(
    _constructs_77d1e7e8.Construct,
    metaclass=jsii.JSIIMeta,
    jsii_type="<construct_library>.testConstruct.TestConstruct",
):
    def __init__(
        self,
        scope: _constructs_77d1e7e8.Construct,
        id: builtins.str,
        *,
        test_prop: builtins.str,
    ) -> None:
        '''
        :param scope: -
        :param id: -
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6b4fdcd0c8c3aad835d0884ffd49ae763492010eba1e1acc2290e07ff8485088)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument id", value=id, expected_type=type_hints["id"])
        props = AProps(test_prop=test_prop)

        jsii.create(self.__class__, self, [scope, id, props])

__all__ = [
    "AProps",
    "BProps",
    "TestConstruct",
]

publication.publish()

def _typecheckingstub__6c50750a3eed61a5e3bf6110860acdf626b4cbe1cbe7b2cee25f235971070407(
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a410f745cf17b952ca7c740989abf5daa91608073357db663df598089ac271c0(
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6b4fdcd0c8c3aad835d0884ffd49ae763492010eba1e1acc2290e07ff8485088(
    scope: _constructs_77d1e7e8.Construct,
    id: builtins.str,
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

@automartin5000 I think something might be wrong with your Python app code here - why are you defining the TestConstruct class in the Python class, when you already declared the class in constructs.ts above? I'm trying to reproduce this error once again

@automartin5000 I think something might be wrong with your Python app code here - why are you defining the TestConstruct class in the Python class, when you already declared the class in constructs.ts above? I'm trying to reproduce this error once again

I'm not defining it in the Python code. The Python code is the generated code from JSII

Python app code:
from <construct_library>.test_construct import AProps
from aws_cdk import App

class TestConstruct:
    def __init__(self, scope, id, props: AProps):
        super().__init__(scope, id, props)

test = TestConstruct(App(), 'TestConstruct', AProps(test_prop='test'))

Error:
_init__.py", line 20, in <module>
    jsii_struct_bases=[BProps],
                       ^^^^^^
NameError: name 'BProps' is not defined

@automartin5000 this is the code I was referring to. Can you show me the CDK app code you are writing? Also, when/where are you seeing this error?

Python app code:
from <construct_library>.test_construct import AProps
from aws_cdk import App

class TestConstruct:
    def __init__(self, scope, id, props: AProps):
        super().__init__(scope, id, props)

test = TestConstruct(App(), 'TestConstruct', AProps(test_prop='test'))

Error:
_init__.py", line 20, in <module>
    jsii_struct_bases=[BProps],
                       ^^^^^^
NameError: name 'BProps' is not defined

@automartin5000 this is the code I was referring to. Can you show me the CDK app code you are writing? Also, when/where are you seeing this error?

That is the Python code being generated by JSII. If you continue to scroll above that, you'll see the code that I wrote. The error is happening at synth.

Full JSII generated code (anonymized):
import abc
import builtins
import datetime
import enum
import typing

import jsii
import publication
import typing_extensions

from typeguard import check_type

from .._jsii import *

import constructs as _constructs_77d1e7e8

@jsii.data_type(
    jsii_type="<construct_library>.testConstruct.AProps",
    jsii_struct_bases=[BProps],
    name_mapping={"test_prop": "testProp"},
)
class AProps(BProps):
    def __init__(self, *, test_prop: builtins.str) -> None:
        '''
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6c50750a3eed61a5e3bf6110860acdf626b4cbe1cbe7b2cee25f235971070407)
            check_type(argname="argument test_prop", value=test_prop, expected_type=type_hints["test_prop"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "test_prop": test_prop,
        }

    @builtins.property
    def test_prop(self) -> builtins.str:
        result = self._values.get("test_prop")
        assert result is not None, "Required property 'test_prop' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AProps(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )

@jsii.data_type(
    jsii_type="<construct_library>.testConstruct.BProps",
    jsii_struct_bases=[],
    name_mapping={"test_prop": "testProp"},
)
class BProps:
    def __init__(self, *, test_prop: builtins.str) -> None:
        '''
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a410f745cf17b952ca7c740989abf5daa91608073357db663df598089ac271c0)
            check_type(argname="argument test_prop", value=test_prop, expected_type=type_hints["test_prop"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "test_prop": test_prop,
        }

    @builtins.property
    def test_prop(self) -> builtins.str:
        result = self._values.get("test_prop")
        assert result is not None, "Required property 'test_prop' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "BProps(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )

class TestConstruct(
    _constructs_77d1e7e8.Construct,
    metaclass=jsii.JSIIMeta,
    jsii_type="<construct_library>.testConstruct.TestConstruct",
):
    def __init__(
        self,
        scope: _constructs_77d1e7e8.Construct,
        id: builtins.str,
        *,
        test_prop: builtins.str,
    ) -> None:
        '''
        :param scope: -
        :param id: -
        :param test_prop:
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6b4fdcd0c8c3aad835d0884ffd49ae763492010eba1e1acc2290e07ff8485088)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument id", value=id, expected_type=type_hints["id"])
        props = AProps(test_prop=test_prop)

        jsii.create(self.__class__, self, [scope, id, props])

__all__ = [
    "AProps",
    "BProps",
    "TestConstruct",
]

publication.publish()

def _typecheckingstub__6c50750a3eed61a5e3bf6110860acdf626b4cbe1cbe7b2cee25f235971070407(
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a410f745cf17b952ca7c740989abf5daa91608073357db663df598089ac271c0(
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6b4fdcd0c8c3aad835d0884ffd49ae763492010eba1e1acc2290e07ff8485088(
    scope: _constructs_77d1e7e8.Construct,
    id: builtins.str,
    *,
    test_prop: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

@automartin5000 isn't this the Python code generated by JSII^^? I think your Python app code might be incorrect

I think your Python app code might be incorrect

What's incorrect about it? I'm importing a class generated by JSII created out of the first two Typescript files

@sumupitchayan Just following up to see if you still were unclear on how to replicate?


docs(FAQ): frequently asked questions

Description
Frequently asked questions for easier navigation and commonly repeated questions from the community
notes:

Headings are being used on questions for better anchoring, being easy to copy and paste
Numbers on questions/answers are being used for easier location

Fixes # (issue)
Next steps

[x] Initial structure
[ ] Add more Q/A
[ ] Improve FAQ sections with better descriptions

Type of Change

[x] Documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[x] I stared at the code and made sure it made sense

I think that's good to merge since we have more people wanting to start contributing as well @nerdai @Disiok

I think that's good to merge since we have more people wanting to start contributing as well @nerdai @Disiok

Thanks @EmanuelCampos !!! Taking a look a now.

@nerdai awesome feedbacks, updated :)

@nerdai done, thanks for the review

Thanks @EmanuelCampos! This looks great and is a nice addition to our docs! Much appreciated. 🦙
Merging now.


while adding cutom wake word .ppn in android sdk giving null pointer exception

Make sure you have read the documentation, and have put forth a reasonable effort to find an existing answer.
Expected behaviour
Actual behaviour
Steps to reproduce the behaviour
(Include enough details so that the issue can be reproduced independently.)

Please be careful not to file duplicate issues, it's a waste of time


Add own head tags

Hi all,
I want to put some fontawesome in the head tags... But where is the document to really add it. I think this is not a troubleshoot but more a support thing.
Btw, I am using the UIKit theme 💯
Can someone help me?
Greets,
Martijn!

Hi Martijn,
If you use a Uikit Theme, then it depends whether it is based on Uikit 3 or Uikit 2. Uikit 2 already includes icons from font awesome, so there might be no need to include font awesome a second time: https://getuikit.com/v2/docs/icon.html
If you develop your own theme, then you need to change the file which is defining your header. Usually template.php.
There is also the option to provide header data at Site -> Settings -> Code.
Best regards,
Tobbe
P.S.: Support questions might be better placed in the unofficial forum: https://pagekit-forum.org/forum/ or the discord chat: https://discord.gg/e7Kw47E


[WIP] Moved gl_device out

Closes #80
The biggest problem is security. Once device_gl is in a separate crate, it can no longer construct Handle and *Mapping types, since they have private fields. Making the fields public could be a temporary solution but I wish we had something more secure to offer.

Maybe they could be unsafe getters/setters?

I will think on this.

@bjz I think I know a good solution:

Add a DeviceInternal trait, implement create_handle and create_mapping_* in it (default implementation that doesn't need to be overwritten)
Auto-implement it for everything that implements Device
Don't re-export it in gfx root, but it's still accessible via gfx::device::DeviceInternal

It's unlikely that anyone will try to reach for it, but even one does - one probably knows what one is doing. There is gonna be near zero chance of "accidental" creation of invalid handles and such.

Note to self: cleanup instancing parameters in the renderer.

Ok, the last problem now is with macros. Having a code like this doesn't really compile:
impl<R: gfx::Resources> gfx::VertexFormat for Foo {
   type Resources = R;
   ...
}

Because Rust doesn't know how to constrain R:

the type parameter R is not constrained by the impl trait, self type, or predicates [E0207]

Any ideas?

Here is a standalone snippet exposing the problem:
trait Foo {}
trait Bar {
    type F: Foo;
    fn fun(&self, Self::F);
}
impl<F: Foo> Bar for () {
    type F = F;
    fn fun(&self, _:F) {}
}

One straightforward solution would be to provide an exact Resources type to the macros: #[shader_param(gfx_device_gl::Resources)]
However, I don't like where this is going. Not only it is already verbose, even if you do a typedef, it would be the hell in a complex application with many vertex/shader formats and multiple supported backends. Too much noise, especially since it's not obvious why the original one shouldn't work.

@Kimundi provided a good explanation on why this is not sound:

I don't think this can be made to work, since you'd have many possible associated items for the same type ()

The solution, as it seems, could be to remove the associated type from VertexFormat, making R a generic parameter.

@bjz @csherratt - this is ready
I fought with ShaderParam a lot, ending up just with a parameter as proposed earlier. It's gonna take us a while to reach the limitations of this model.

Also, deferred example doesn't work for me. When rendering to Gbuffer, we get an exception saying the target frame doesn't have depth (mask = 64). I tried logging it up in the example code, and the mask seems to be 71, so something happens inside the submission. I blame that Rust bug.

LGTM. I'd like @bjz to look over it too.

@csherratt sure thing. Thanks!


State of switches should automatically reflect state of the underlying input's "checked" property

At present modification of the .checked property of the underlying input of switches (and perhaps other similar components, e.g. radio and checkboxes, I haven't checked, pun intended) doesn't automatically result in an update to the presentation layer - instead a manual call to  .MaterialCheckbox.check() or .MaterialCheckbox.uncheck() is needed.
I propose that this shouldn't be the case, MDL should progressively enhance the underlying input by listening for changes to the value of .checked and automatically fire the appropriate function to update the visual state, which would allow existing code / code from other libraries to be used without modification and would avoid confusing new users of MDL.

I agree that deviating from the “Standard API” – if you will – is rather suboptimal. That’s one of the lessons we learned so far. We could try to incorporate that without it being a BC by keeping the old API but adjusting the styles, but I suspect it’s not as easy as it sounds so we might have to push this back to v2. We’ll investigate that further.

This isn't feasible without observers. If a developer changes the checked property using JS, no event is fired. It needs to be manually ran by developers to have any event handlers fire off. This is why we have the internal API for handling these things and updating the presentation.

@Garbee I was wondering if we can implement this using CSS only (i.e. using the  [checked] selector), but I guess that would require a BC.

Yes, BC break there for sure. But, we also have to think about error handling, which still requires JS to function with the way we need to do markup structure. So, that complicates things further if you check something and the UX updates, but it goes into an invalid state and you don't call our checkValidity method to handle updating the UX for that.
We need to write up an example component and see how things interact here.

Garbee  at least sample like i just try here would very help full.
http://codepen.io/anon/pen/QjwKQR.
I not much knew javascript oop   but when i open phpstorm and  see green color unlock then i know what to test like  checkDisabled, checkToggleState,disable,enable ,on,off.
** sorry if i got wrong idea of the topic..

Yea, I know the code to make it function now. I meant we would need to mockup an example of the modified methodology proposed and play around with that to see how it functions.

Are we still looking at this? As far as I can tell, this is not doable cleanly without observers (and we should avoid pulling observer polyfills into MDL).
Doing this with CSS only would significantly constrain our DOM structure for switches, as we'd need to build rules in the form .mdl-switch__input[enabled] <something>. Because of this, <something> would have to be either a child (we don't want to do that, sticking custom stuff inside native elements) or a successor. The latter would mean something like:
<input class="mdl-switch__input" id="switch1"></input>
<label class="mdl-switch" for="switch1">[...]</label>

which is not exactly ideal, since we have the top level element of the switch as a sibling to one of its parts.
IMO, we should stick to having an API in v2, but just make it more similar to the native platform, e.g.:
foo.MaterialSwitch.checked = true;

Constraining markup heavily is certainly not a good idea. People will try to pull things out and it will not work right then complaining comes in the other way.
+1 to just verifying the JS API is available and well documented (as we are already planning.)

this work for me
$('#label').addClass('is-checked');
or
$('#label').removeClass('is-checked');

It took me about 2 hours of googling to figure out how to check the state of a switch. The JS documentation is absolutely atrocious, and essentially nonexistent. There is ZERO MENTION of how to actually use these switches, except for the HTML itself. I seriously regret ever trying to use this framework. You should be ashamed, Google.
For anyone looking for the answer to what seems like such an obvious use-case, the following worked for me, and will return a true or false value:
YourSwitch.parentElement.MaterialSwitch.inputElement_.checked


CashAddr

Hello, are you going to add support for CashAddr addresses ?

Thank you for your suggestion @Zeykit!


[Suggestion] - Shorten the date/time format for 'last tick'

I think it's the length of the Last BGS Tick value that causes the EDMC window to get so wide.  I currently have 07:01:03 UTC Monday 08 August.
I'd at least change this to use the short forms of "Day of week" and "Month name", i.e. 07:01:03 UTC Mon 08 Aug.
But ideally I'd love an option to just use ISO8601 format, i.e. 2022-08-08 07:01:03Z, or just drop the timezone information entirely, given it should be obvious that in-game/UTC is being quoted.
So, with the current develop branch at b4194ae, line 1059 becomes:
return datetime_object.strftime("%H:%M:%S UTC %a %d %b")
or:
return datetime_object.strftime("%Y-%m-%d %H:%M:%S")
And now I look a bit closer, another way to save some width would be splitting the BGS Tally (modified by Aussi) v1.9.0 string into the two columns the plugin uses otherwise.  I think just putting the version string over in the second column would likely be enough, as BGS Tally Plugin Status is almost as long as BGS Tally (modified by Aussi), although you could also change the latter to BGS Tally (Aussi).

You've managed to lose these changes when merging https://github.com/aussig/BGS-Tally/commit/cdb98b86d4d2eea0600f2f7b9f1439900aec7617 - in part due to that merge changing a lot of how things work.

New PR in #49  - simply re-adjust the UI display time format.

New PR in #49  - simply re-adjust the UI display time format.

Apols, your change conflicted with a date format change I had done, and I didn't incorporate both changes.


How do you style notifications in the stack?

I see some code in the NotifcationStack component, but when I try to provide a style key to my messages, it doesn't seem to be recognized.
errors.push({
      message: 'FOOBAR',
      key: 1,
      style: {background: 'red'},
    })
return <NotificationStack notifications={errors} onDismiss={() => {}} />

I think there are some overarching issues with styles in general for the NotifcationStack—see issue #47. I am not available presently, but when I have some time this week I'm going to review the code and make sure this issue is resolved. :smile:

This should be fixed in<EMAIL_ADDRESS>Keep in mind the breaking changes, which are documented in the release as well as the README.


fix: Move RecApp marker further inside the expression

This didn't work before
def f (n : Nat) : Nat :=
  match n with
  | 0 => 0
  | n + 1 => (f) n

because the RecApp metadata marker gets in the way. More practical,
such code seems to be produced when using rw or simp in recursive
theorems.
We can fix the issue by storing the .mdata not around the full
application expression, but rather around the inner .const. This way,
Expr.withApp and similar traversals work without without issue.
While I’m at it: So far only WellFounded was actually making use of
this. Now (unlike before)
def f (n : Nat) : Nat :=
  match n with
  | 0 => 0
  | n + 1 => f (n + 1)

will show the error with squiggly lines under f (n + 1).
Test case is included. Fixes #2810.

Ok, finally there, it seems.
This approach (keeping .mdata around the .const) has its downsides as well; there are quite a few places where the .const is replaced with an expression, and thus we have to move the .mdata along. But probably still better than #2813.
In a few places I wrote code does what it should, but in a non-pretty way that needs cleanup. Hence leaving this as WIP for now.
The test output changes arebecause of improved error locations in structural recursion, and in one case a better termination check error message.

Learned a lot while doing this, in particular, that there is a much more elegant approach: #2818.


feat: admin resource products tests

Objective:
Implement tests for admin resource products.

@algoflows is this still work in progress or ready to merge?


Update to Blazor 3.0.0-preview4

This PR updates to the first official Blazor preview release 3.0.0-preview4 and also includes commits from prior PR #24 by @kswoll

Awesome! Reviewing/merging soon! 😄

@galvesribeiro This one is ready for review.  Thanks again!

Huge thanks @DanielCarmingham!
Will release all packages later today.
Thanks!


[Question] Is the index field in the Archetype struct redundant?

Hi, I'm very new to the ECS pattern, and I was reading the library's code to see how a simple ECS is efficiently implemented. I feel like I somewhat understand archetypes and how they work, but when I took a closer look at the Archetype struct, I felt like it was inefficient. Here is the struct:
pub struct Archetype {
    types: Vec<TypeInfo>,
    type_ids: Box<[TypeId]>,
    index: OrderedTypeIdMap<usize>,
    len: u32,
    entities: Box<[u32]>,
    /// One allocation per type, in the same order as `types`
    data: Box<[Data]>,
}

The OrderedTypeIdMap<T> type uses binary search under the hood as I understand it. Since the type_ids field is also sorted, wouldn't it be possible to replicate the behavior of the index? We would just need to keep track of the index during the binary search if we needed.
What am I missing?

type_ids is ordered in the same way as types, i.e. using impl Ord for TypeInfo which compares alignment, whereas index is ordered by TypeId to perform look-ups by TypeId.
IIRC, the type_ids field itself is only necessary to enable passing &[TypeId] (in contrast to &[TypeInfo]) in component order (meaning as stored in the archetype, meaning as sorted by TypeInfo).

(Also note that generally the cost of creating an Archetype should not be too critical as well, since if you have a workload that continuously creates new archetypes, an archetype-based ECS like hecs is probably not a good fit in the first place.)

Okay thank you very much!
If I may follow with an additional question: I have not looked at the code in depth, but it is not obvious to me why the data field stores every Data struct with an alignment of max_align (meaning the biggest alignment of all of the components present in the archetype). I probably do not understand correctly the Data struct, but it seems to me like since every component is stored in a separate array, then we could reduce space usage by using the alignment of every respective component.

It doesn't. All component arrays are densely packed.

Thank you for your time!


build(2.2.0-rc3): merge release into main

Description
Merge the latest changes to the main branch
Why
To have the latest changes available in the main branch
Issue
https://github.com/eclipse-tractusx/portal/issues/423

Hi @oyo let's discuss the following build error in tomorrows daily:

Updated the PR resolving the conflict as it was most likely intended. Nevertheless we should discuss if that assumption is true or not.

Hi @oyo let's discuss the following build error in tomorrows daily:

Updated the PR resolving the conflict as it was most likely intended. Nevertheless we should discuss if that assumption is true or not.

Hi @oyo I clarified with @lavanya-bmw as well, the issue is now solved in the same manner as you proposed here, it's just part of the merge commit now. Could you please review?


Fixing issue causing CosmosException with StatusCode==0 to be thrown on connectivity issues for Gateway

Problem description
When testing a retry policy in the Cosmos Spark connector I realized that the Java SDK sometimes throws CosmosExceptions with StatusCode==0 for ReadTimeoutExceptions against the Gateway. Obviously a StatusCode==0 would miss some retry policies that customers/applications would build based on CosmosException.
The ClientRetryPolicy is not impacted - because it scans the "causes" of the exception instead of relying on the StatusCode of the CosmosException
NOTE: Technically this is a breaking change - before we would have thrown a CosmosException with StatusCode==0 now we would use 408o or 503. IMO making this change is still the right choice because it cannot be expected for customers to add special retry policies on StatusCode==0
Testing Guidelines

[X] Pull request includes test coverage for the included changes.

Fixes #21176

/azp run java - cosmos - tests


Exception while running chatbot 'Pizza_form'

Rasa version: 0.14.5
Python version: 3.6.4
Operating system (windows, osx, ...): Linux Ubuntu 18.04
Issue: I am running my chatbot in cmd I get the following:

Content of actions file (actions.py):
# -*- coding: utf-8 -*-
from typing import Dict, Text, Any, List, Union

from rasa_core_sdk import ActionExecutionRejection
from rasa_core_sdk import Tracker
from rasa_core_sdk.events import SlotSet
from rasa_core_sdk.executor import CollectingDispatcher
from rasa_core_sdk.forms import FormAction, REQUESTED_SLOT

class PizzaForm(FormAction):
    #Example of a custom form action

    def name(self):
        # type: () -> Text
        #Unique identifier of the form

        return "pizza_form"

    @staticmethod
    def required_slots(tracker: Tracker) -> List[Text]:
        #A list of required slots that the form has to fill

        return ["size", "pizzatype", "ask_toppings", "toppings","num_pizza"]

    def slot_mappings(self):
        # type: () -> Dict[Text: Union[Dict, List[Dict]]]
       # A dictionary to map required slots to
        #    - an extracted entity
        #    - intent: value pairs
          #  - a whole message
         #   or a list of them, where a first match will be picked

        return {"size": self.from_entity(entity="size",
                                          not_intent="chitchat"),
                "pizzatype": self.from_entity(entity="pizzatype",
                                               not_intent="chitchat"),
                "ask_toppings": [self.from_entity(entity="toppings"),
                                    self.from_intent(intent='affirm',
                                                     value=True),
                                    self.from_intent(intent='deny',
                                                     value=False)],
                "toppings": self.from_intent(entity="toppings",
                                              not_intent="chitchat"),
                "num_pizza": [self.from_entity(entity="num_pizza",
                                               intent=["inform",
                                                        "order_pizza"]),
                              self.from_entity(entity="number")],
                "feedback": [self.from_entity(entity="feedback"),
                             self.from_text()]}

    @staticmethod
    def size_db():
        # type: () -> List[Text]
        #Database of supported sizes
        return ["large",
                "extra large",
                "medium",
                "small"]

    def toppings_db():
        # type: () -> List[Text]
        #Database of supported toppings
        return ["onions",
                "mushrooms",
                "extra cheese",
                "sausage",
                "green peppers"]

    def pizzatype_db():
        # type: () -> List[Text]
        # Database of supported pizzatypes
        return ["BBQ",
                "Buffalo chicken",
                "Hawaiian",
                "cheese"]

    @staticmethod
    def is_int(string: Text) -> bool:
        # Check if a string is an integer
        try:
            int(string)
            return True
        except ValueError:
            return False

    def validate(self,
                 dispatcher: CollectingDispatcher,
                 tracker: Tracker,
                 domain: Dict[Text, Any]) -> List[Dict]:
        # Validate extracted requested slot
         #   else reject the execution of the form action

        # extract other slots that were not requested
        # but set by corresponding entity
        slot_values = self.extract_other_slots(dispatcher, tracker, domain)

        # extract requested slot
        slot_to_fill = tracker.get_slot(REQUESTED_SLOT)
        if slot_to_fill:
            slot_values.update(self.extract_requested_slot(dispatcher,
                                                           tracker, domain))
            if not slot_values:
                # reject form action execution
                # if some slot was requested but nothing was extracted
                # it will allow other policies to predict another action
                raise ActionExecutionRejection(self.name(),
                                               "Failed to validate slot {0} "
                                               "with action {1}"
                                               "".format(slot_to_fill,
                                                         self.name()))

        # we'll check when validation failed in order
        # to add appropriate utterances
        for slot, value in slot_values.items():
            if slot == 'size':
                if value.lower() not in self.size_db():
                    dispatcher.utter_template('utter_wrong_size', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'pizzatype':
                if value.lower() not in self.pizzatype_db():
                    dispatcher.utter_template('utter_wrong_pizzatype', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'ask_toppings':
                if isinstance(value, str):
                    if 'yes' in value:
                        # convert "out..." to True
                        slot_values[slot] = True
                    elif 'no' in value:
                        # convert "in..." to False
                        slot_values[slot] = False
                    else:
                        dispatcher.utter_template('utter_wrong_toppings1',
                                                  tracker)
                        # validation failed, set slot to None
                        slot_values[slot] = None

            elif slot == 'toppings':
                if value.lower() not in self.toppings_db():
                    dispatcher.utter_template('utter_wrong_toppings2', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'num_pizza':
                if not self.is_int(value) or int(value) <= 0:
                    dispatcher.utter_template('utter_wrong_num_pizza',
                                              tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

        # validation succeed, set the slots values to the extracted values
        return [SlotSet(slot, value) for slot, value in slot_values.items()]

    def submit(self,
               dispatcher: CollectingDispatcher,
               tracker: Tracker,
               domain: Dict[Text, Any]) -> List[Dict]:
        # Define what the form has to do
           # after all required slots are filled

        # utter submit template
        dispatcher.utter_template('utter_affirm', tracker)
        return []

Content of domain file (domain.yml) (if used & relevant):

       intents:
       # add your intents
       - greet
       - thanks
       - toppings_deny
       - stop
       - toppings_affirm
       - inform
       - what_is_pizza_cost
       - order_pizza
       - chitchat:
          use_entities: false

       entities:
       - size
       - pizzatype
       - toppings
       - num_pizza
       - number
       - feedback

       slots:
        size:
         type: text
        pizzatype:
         type: text
        ask_toppings:
         type: text
        toppings:
         type: text
        num_pizza:
         type: text
        feedback:
         type: text
        requested_slot:
         type: unfeaturized

       templates:
        utter_greet:
        - "Hey there, welcome to Tatenda's pizzabot, how can I help you"
        utter_thank:
        - "You're welcome!"
        utter_ask_size:
        - "We have small, medium, large and extra large pizzas. Which one do you want?"
        utter_ask_pizzatype:
        - "We have BBQ, Hawaiian, Bacon Cheeseburger, and Buffalo chicken pizzas, which one do you want"
        utter_ask_toppings:
        - "Do you want any toppings?"
        utter_ask_num_pizza:
        - "How many pizzas do you want"
        utter_toppings:
        - "We have mushrooms, onions, bacon, green peppers and sausage toppings, which would you like?"
        utter_fallback:
        - "sorry, I did not get you"
        utter_affirm:
        - "thanks for the details.your order is being processed"
        utter_default:
        - "sorry, i couldnt understand you.please retry"
        utter_ask_feedback:
        - text: "please give your feedback on your experience so far"
        utter_slots_values:
        - text: "You have ordered the following pizza:

             - size: {size}

             - pizzatype: {pizzatype}

             - num_pizza: {num_pizza}

             - toppings: {toppings}

             - feedback: {feedback}"
       utter_submit:
       - text: "submit"
       utter_chitchat:
       - text: "chitchat"
       utter_ask_continue:
       - text: "do you want to continue?"
       utter_wrong_size:
       - text: "We do not have that size, please try again"
       utter_wrong_pizzatype:
       - text: "We do not have that type of pizza, please choose from Hawaiian, buffalo chicken, Magherita and BBQ"
       utter_wrong_num_pizza:
       - text: "number of people should be a positive integer e.g 3, 4, please try again"
       utter_wrong_toppings1:
       - text: "Please answer with yes/no"
       utter_wrong_toppings2:
       - text: "Those toppings are currently unavailable, please choose from  mushrooms, onions, bacon, green peppers and sausage toppings "

       actions:
       # all the utter actions from the templates, plus any custom actions
       - utter_slots_values
       - utter_ask_continue
       - utter_chitchat
       - utter_greet
       - utter_thank

       forms:
       - pizza_form

could you post the actual error it's throwing?

it just displays "ERROR:rasa_core.processor:Encountered an exception while running action 'pizza_form'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.", even when i run the bot using python  nothing more.
print("Your bot is ready to talk! Type your messages here or send 'stop'")
while True:
a = input()
if a == 'stop':
break
responses = agent.handle_message(a)
for response in responses:
print(response["text"])
My custom action code(for FormAction) does not show any errors, when i greet the bot, it responds properly, but when i enter other intents that's when it posts the error. I got the code from your FormAction examples code on github.
WARNING:rasa_core.agent:Passing a text to agent.handle_message(...) is deprecated. Rather use agent.handle_text(...).
ERROR:rasa_core.processor:Encountered an exception while running action 'pizza_form'. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
You have ordered the following pizza:

size: None
pizzatype: None
num_pizza: None
toppings: None
feedback: None

can you post the error from the action server? because this is just the error from rasa_core, which doesn't tell us much apart from the fact that the action execution failed

i only see that when i run python -m rasa_core_sdk.endpoint --actions actions, no errors

that looks like it's not actually being executed then, what's the contents of your endpoints yaml?

action_endpoint:
url: http://localhost:5055/webhook

it's properly indented though in my yaml file

I have now  included --endpoints endpoints.ym while running the model, like this, python -m rasa_core.run  -d models/dialogue -u models/nlu/default/current --endpoints endpoints.yml, and it shows displays the error below, i think that's where the problem is

@akelad the action server is now showing errors, apparently the error is in my actions.py slot mappings
                                          not_intent="chitchat"),
                "pizzatype": self.from_entity(entity="pizzatype",
                                               not_intent="chitchat"),
                "ask_toppings": [self.from_entity(entity="toppings"),
                                    self.from_intent(intent='affirm',
                                                     value=True),
                                    self.from_intent(intent='deny',
                                                     value=False)],
                "toppings": self.from_intent(entity="toppings",
                                              not_intent="chitchat"),
                "num_pizza": [self.from_entity(entity="num_pizza",
                                               intent=["inform",
                                                        "order_pizza"]),
                              self.from_entity(entity="number")],
                "feedback": [self.from_entity(entity="feedback"),
                             self.from_text()]} ```
![Screenshot from 2019-03-30 14-21-58](https://user-images.githubusercontent.com/46517278/55276064-6bc54180-52f7-11e9-855f-ab9f465aada0.png)

@akelad the action server is showing that the error is in actions.py slot mappings

and this is the code
        # type: () -> Dict[Text: Union[Dict, List[Dict]]]
       # A dictionary to map required slots to
        #    - an extracted entity
        #    - intent: value pairs
          #  - a whole message
         #   or a list of them, where a first match will be picked

        return {"size": self.from_entity(entity="size",
                                          not_intent="chitchat"),
                "pizzatype": self.from_entity(entity="pizzatype",
                                               not_intent="chitchat"),
                "ask_toppings": [self.from_entity(entity="toppings"),
                                    self.from_intent(intent='affirm',
                                                     value=True),
                                    self.from_intent(intent='deny',
                                                     value=False)],
                "toppings": self.from_intent(entity="toppings",
                                              not_intent="chitchat"),
                "num_pizza": [self.from_entity(entity="num_pizza",
                                               intent=["inform",
                                                        "order_pizza"]),
                              self.from_entity(entity="number")],
                "feedback": [self.from_entity(entity="feedback"),
                             self.from_text()]}

and i would like to know if this is even the right way to implement actions.py

# -*- coding: utf-8 -*-
from typing import Dict, Text, Any, List, Union

from rasa_core_sdk import ActionExecutionRejection
from rasa_core_sdk import Tracker
from rasa_core_sdk.events import SlotSet
from rasa_core_sdk.executor import CollectingDispatcher
from rasa_core_sdk.forms import FormAction, REQUESTED_SLOT

class PizzaForm(FormAction):
    #Example of a custom form action

    def name(self):
        # type: () -> Text
        #Unique identifier of the form

        return "pizza_form"

    @staticmethod
    def required_slots(tracker: Tracker) -> List[Text]:
        #A list of required slots that the form has to fill

        return ["size", "pizzatype", "ask_toppings", "toppings","num_pizza"]

    def slot_mappings(self):
        # type: () -> Dict[Text: Union[Dict, List[Dict]]]
       # A dictionary to map required slots to
        #    - an extracted entity
        #    - intent: value pairs
          #  - a whole message
         #   or a list of them, where a first match will be picked

        return {"size": self.from_entity(entity="size",
                                          not_intent="chitchat"),
                "pizzatype": self.from_entity(entity="pizzatype",
                                               not_intent="chitchat"),
                "ask_toppings": [self.from_entity(entity="toppings"),
                                    self.from_intent(intent='affirm',
                                                     value=True),
                                    self.from_intent(intent='deny',
                                                     value=False)],
                "toppings": self.from_intent(entity="toppings",
                                              not_intent="chitchat"),
                "num_pizza": [self.from_entity(entity="num_pizza",
                                               intent=["inform",
                                                        "order_pizza"]),
                              self.from_entity(entity="number")],
                "feedback": [self.from_entity(entity="feedback"),
                             self.from_text()]}

    @staticmethod
    def size_db():
        # type: () -> List[Text]
        #Database of supported sizes
        return ["large",
                "extra large",
                "medium",
                "small"]

    def toppings_db():
        # type: () -> List[Text]
        #Database of supported toppings
        return ["onions",
                "mushrooms",
                "extra cheese",
                "sausage",
                "green peppers"]

    def pizzatype_db():
        # type: () -> List[Text]
        # Database of supported pizzatypes
        return ["BBQ",
                "Buffalo chicken",
                "Hawaiian",
                "cheese"]

    @staticmethod
    def is_int(string: Text) -> bool:
        # Check if a string is an integer
        try:
            int(string)
            return True
        except ValueError:
            return False

    def validate(self,
                 dispatcher: CollectingDispatcher,
                 tracker: Tracker,
                 domain: Dict[Text, Any]) -> List[Dict]:
        # Validate extracted requested slot
         #   else reject the execution of the form action

        # extract other slots that were not requested
        # but set by corresponding entity
        slot_values = self.extract_other_slots(dispatcher, tracker, domain)

        # extract requested slot
        slot_to_fill = tracker.get_slot(REQUESTED_SLOT)
        if slot_to_fill:
            slot_values.update(self.extract_requested_slot(dispatcher,
                                                           tracker, domain))
            if not slot_values:
                # reject form action execution
                # if some slot was requested but nothing was extracted
                # it will allow other policies to predict another action
                raise ActionExecutionRejection(self.name(),
                                               "Failed to validate slot {0} "
                                               "with action {1}"
                                               "".format(slot_to_fill,
                                                         self.name()))

        # we'll check when validation failed in order
        # to add appropriate utterances
        for slot, value in slot_values.items():
            if slot == 'size':
                if value.lower() not in self.size_db():
                    dispatcher.utter_template('utter_wrong_size', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'pizzatype':
                if value.lower() not in self.pizzatype_db():
                    dispatcher.utter_template('utter_wrong_pizzatype', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'ask_toppings':
                if isinstance(value, str):
                    if 'yes' in value:
                        # convert "out..." to True
                        slot_values[slot] = True
                    elif 'no' in value:
                        # convert "in..." to False
                        slot_values[slot] = False
                    else:
                        dispatcher.utter_template('utter_wrong_toppings1',
                                                  tracker)
                        # validation failed, set slot to None
                        slot_values[slot] = None

            elif slot == 'toppings':
                if value.lower() not in self.toppings_db():
                    dispatcher.utter_template('utter_wrong_toppings2', tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

            elif slot == 'num_pizza':
                if not self.is_int(value) or int(value) <= 0:
                    dispatcher.utter_template('utter_wrong_num_pizza',
                                              tracker)
                    # validation failed, set slot to None
                    slot_values[slot] = None

        # validation succeed, set the slots values to the extracted values
        return [SlotSet(slot, value) for slot, value in slot_values.items()]

    def submit(self,
               dispatcher: CollectingDispatcher,
               tracker: Tracker,
               domain: Dict[Text, Any]) -> List[Dict]:
        # Define what the form has to do
           # after all required slots are filled

        # utter submit template
        dispatcher.utter_template('utter_affirm', tracker)
        return []

@tchax3742 you already asked this question on a different issue so i'm going to close this. Please avoid creating duplicate issues in future