Migrate GitHub.Network API spec to public repo.

ARM (Control Plane) API Specification Update Pull Request

[!TIP]
Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!

[ ] New resource provider.
[ ] New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been created in adherence to OpenAPI specs PR creation guidance).
[ ] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix OpenAPI spec quality issues in S360.
[ ] Convert existing OpenAPI spec to TypeSpec spec (do not combine this with implementing changes for a new API version).
[x] Other, please clarify:

Making GitHub.Network RP API spec public so customers can build SDK-like libraries. The RP was released to GA back in April 2024.

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[x] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[x] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.

Additional information

 Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.

Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.

Getting help

First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
If you don't have permissions to remove or add labels to the PR, request write access per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories
To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
For help with ARM review (PR workflow diagram Step 2), see https://aka.ms/azsdk/pr-arm-review.
If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

TypeSpec validation is failing with the following error in a TypeSpec library, can someone help? thanks

TypeSpec validation is failing with the following error in a TypeSpec library, can someone help? thanks

pl post the question in the TypeSpec teams channel or attend the TypeSpec office hours

Pl fix these errors or add a suppression indicating why these wont be fixed..
https://github.com/Azure/azure-rest-api-specs/pull/30837/checks?check_run_id=30996145039
https://github.com/Azure/autorest/blob/main/docs/generate/suppress-warnings.md

@mlacouture - Since your APIs are GA and you aren't creating a new API version, I presume your private specs were already reviewed by ARM. Can you provide a link to the PR that was reviewed and signed off by ARM?

@mlacouture - Since your APIs are GA and you aren't creating a new API version, I presume your private specs were already reviewed by ARM. Can you provide a link to the PR that was reviewed and signed off by ARM?

@mentat9 this is the PR for the GA specs:

https://github.com/Azure/azure-rest-api-specs-pr/pull/17246

@mentat9 do you mind approving again? had to rebase the branch - thank you!

Removed ARMSignedOff label as this requires re-approval after rebasing the branch and no response from approver.

This PR still needs to be reviewer-approved (not just ArmSignedOff), can someone please approve it? thank you!
cc: @mentat9 @rkmanda @msyyc @qiaozha


Beginners Question: is grav an SSG?

Hi
I am new to grav, found the link to grav on https://staticsitegenerators.net/
But is it an SSG in the sense that it can CREATE static sites?
Means, can it stage an entire site to a target directory that can run without php?
If so, how? Or, with which additions?
Or is the "static" element in grav just referring to it basing on flat files?
Thanks a lot for clearing that up!
Urs

Hi, no Grav is not a static site generator, it requires PHP to run. Not sure how it ended up in that list, we mention "static" nowhere on our site.
Grav is a Flat-File CMS, which has great advantages over static site generators, but of course everyone has different needs and each tool has its place.

Correct Grav is not an Static Site Generator, although this list does also list Flat File CMSes.
Grav is 100% file based, but not static.  You do need PHP to run it. But you get the benefits of a dynamic CMS with near static performance, syncing, security, etc.
https://github.com/bevry/staticsitegenerators-list

Requirements for additions
There are generally three types of Content Management Systems:
Dynamic Servers (e.g. WordPress, Ghost, DocPad, Harp) — these allow you to have re-render on every request abilities
Flat File CMS (e.g. Yellow, Techy) — these allow you to write your content as files
Static Site Generators (e.g. Jekyll, DocPad) — these generate a static website from your input that you can deploy anywhere
Currently, this listing is only for projects that are either a Flat File CMS and/or Static Site Generator, but not for projects which are only Dynamic Servers (such as WordPress and Ghost).

Thanks for clearing that up!

Thoughts on adding some sort of build step for static generation?

We have no plans for static generation, because you really lose the power that Grav provides.
That said, you can grab a static copy of the site with a simple wget run on your site, and publish it where you want.

I think that's a common argument: "if we provide an option for X then it doesn't promote all the magical power/conventions we worked hard on/think are right!"
I feel ya, but if it's as easy as providing a CLI flag to generate a static site... why not give people that kind of power and let them decide when they need all of Grav's sugar, and when they just want to use it for templating or something simple?
This comment thread https://www.smashingmagazine.com/2015/11/modern-static-website-generators-next-big-thing/#comment-1284851 would lead me towards something like Statamatic since it gives me the freedom to use whatever approach seems most appropriate at the time.
Grav looks cool/powerful/well thought out. I'd like to use it for a plethora of things, but I'd like to dip my toes in via SSG.

I thinks the point flavio is making is that SSG is outside the scope of Grav, that said this is still very much possible with Grav's API. Would actually make for a great plugin if anyone is interested.

As mentioned, you could do a CURL scrape of your Grav site and host that wherever. That would be static. This doesn't really work with the current plugin structure because the CLI can't access/scan the site (see Issue #1074). It would have to be triggered by a page view, which seems wrong :smile:

A plugin can also just contain CLI command.
This plugin CLI would just do its curl and scrape the site to generate it statically.
The beauty of this would be that you don't have to leave the Grav environment and you could just run it (even via cronjob) through grav/plugin yourplugin static

I will make one if no one beats me to it :)

Go for it 😄

This is conceptually very similar in the way I built the getgrav.org repository by the way.
We have a CLI in a custom private plugin that runs an external class to gather informations and put together all the plugins and themes that are then available to you through GPM. The CLI command is then crontabbed to run periodically and always serve fresh data.
It's probably a bit more complex than what a static site generator would be but the principle is the same, we use the GitHub APIs to collect and make all the data available through the site for consumption.
Thanks to the fact that this runs as a Grav Plugin we then have all the details we need to populate the downloads page, all for free.

@corysimmons well nothing prevents you to use Grav to make a static site. I'm super happy if anyone starts a plugin to use it like that, I too have some sites that are just static and could benefit from such approach 😃 . We just never considered this to be included in the core. What you lose really is just the ability to use forms or the login system or any other plugin that relies on php-based interactivity, which not all sites need.

What you lose really is just the ability to use forms or the login system or any other plugin that relies on php-based interactivity, which not all sites need.

Right, I feel ya. I'd like to use Grav for templating and stuff for static sites (gh-pages, Netlify, etc.), then if I need forms and such, I can easily convert it to a nice lightweight PHP site.
https://github.com/getgrav/grav/issues/516#issuecomment-251557814 Sweeet. Ping me when a repo is ready if you don't mind. I might be able to prettify it with colors or something silly (if you're interested in that kinda thing).
https://github.com/getgrav/grav/issues/516#issuecomment-251559675
Is the CLI on Github or completely private for some reason? I'd be interested in just seeing all the stuff it does. /shrug =)

The CLI is built in Grav, see
https://learn.getgrav.org/cli-console/grav-cli-plugin
(https://github.com/getgrav/grav/blob/develop/bin/plugin)
and some example usage in
https://github.com/getgrav/grav-plugin-login/tree/develop/cli

Is the CLI on Github or completely private for some reason? I'd be interested in just seeing all the stuff it does. /shrug =)

The CLI for plugins is part of the Grav's API and available to the developer as flavio pointed out above.
The repository generator plugin we created is private and we cannot share that for security reasons but I'm more than happy to guide you and help if you have any questions.

@w00fz No thnx. I just get curious about all the things. 🐱

In working on this plugin, I'm learning to use the API for the first time to call all pages. For starters, I've tried a dozen different things and thought if I asked for help, I might get some clarity. Here's a snippet of my serve function. I've loaded Page/Pages at the top so I think I'm doing it right.
    protected function serve()
    {
        $this->output->writeln(Pages::all());
    }
}

This outputs
Fatal error: Call to undefined method Grav\Plugin\Console\BuildCommand::root() in /grav/system/src/Grav/Common/Page/Pages.php on line 433

I figured it may be because I have to put something inside of all() but everything I've tried to pass errors.

See PR #1074. It's not possible. I can initialize the URL as described in that PR, but I haven't had time to figure out how to initialize the rest of the Grav object.

Oh cool, well I'll find another way then.

https://github.com/barryanders/grav-plugin-blackhole
Here's a plugin that does exactly what you all were talking about.
bin/plugin blackhole generate BUILD_DIR so you can run Grav wherever you want and build wherever you want and Crontab that sucker so you don't ever have to manually build again.
Feel free to check it out, make changes or whatever. I don't expect that it's optimized, nor would I call it extremely secure, but I can say that it works efficiently at least in my test cases and I'm happy with the result in a short amount of time.
Hope you enjoy! I'll let it sit for a few days and if I don't hear anything crazy off with it, then I'll submit it to be added to Grav's official GPM.

But routes() doesn't include the taxonomy links like tag:Linux or category:blog. A proper web scrape needs to scan for all clickable links. Ideally we'd get the CLI module to a place where it can actually generate pages, at which point you could get the rendered HTML and process that.
All that said, there's really no need for a plugin to do a web scrape. You can use command-line tools, like wget:
$ wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains my.website.com \
     --no-parent \
         my.website.com

Even then, you'd still need to do some rewriting to make sure all the relative and absolute links work. Grav already has excellent caching. You're not going to save much by "static-ifying" a Grav site. If you really need a proper static site, then I would find a tool specifically designed for that.

Without knowing grav well, I'm quite positive that the list of URLs to be
scraped shouldn't depend on scanning the actual pages, but come from the
CMS. So the CMS should be able to "know" which static pages it will produce
in order to be a real SSG. Or isn't that necessary?
Am Freitag, 7. Oktober 2016 schrieb Aaron Dalton :

But routes() doesn't include the taxonomy links like tag:Linux or
category:blog. A proper web scrape needs to scan for all clickable links.
Ideally we'd get the CLI module to a place where it can actually generate
pages, at which point you could get the rendered HTML and process that.
All that said, there's really no need for a plugin to do a web scrape. You
can use command-line tools, like wget:
$ wget
--recursive
--no-clobber
--page-requisites
--html-extension
--convert-links
--restrict-file-names=windows
--domains my.website.com
--no-parent
my.website.com
Even then, you'd still need to do some rewriting to make sure all the
relative and absolute links work. Grav already has excellent caching.
You're not going to save much by "static-ifying" a Grav site. If you really
need a proper static site, then I would find a tool specifically designed
for that.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/getgrav/grav/issues/516#issuecomment-252214589, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABYSK3fX04mEuSmeFQWK7fBK2Rybo8CLks5qxiQGgaJpZM4GzIMW
.

--
von unterwegs gesendet

That's my point. Grav is not an SSG. It does not purport to be. I was just commenting on the plugin @barryanders submitted. If you want an true SSG, I suggest finding a tool that actually purports to do that.

@Perlkonig yes – I was referring to the plugin

Ah yes, I hadn't checked whether or not routes covers every last thing, so thanks for that. It's true that you could just use wget, for sure. I mostly made this because of the interest in it above in this thread. I thought it might be fun to tinker around with it. StaticGen definitely already has a good list of things designed specifically for SSG. Anyway, I'll look into getting the other page possibilities some time. Thanks for the feedback.

FWIW, wget is extremely finicky and almost never generates an exact mirror of a site. I'm still interested in this functionality.
$event_horizon

After looking into the API a little more, I'm not sure how I would collect links to each taxonomy right off the bind. Perhaps some sort of findTaxonomy('poop') nonsense. Routes is sufficient for pages at least. If that's all you're using it for, then this plugin does the job, I'd say. I'll continue to rewrite it a bit to improve the quality. @corysimmons lol, I know that was pretty dorky of me to throw that in there, but I'm glad someone appreciated it. I suppose the advantage of wget is if taken the time, Grav could be used to spit out the exact layout of the site. Now where this gets into trouble is if someone is defining regex links. Then it's just a big mess. That's where I'll let someone else add the functionality if they need it :P

I think I'm going to go ahead and make a portfolio site with Grav. Once I'm more familiar with the entire thing I'll take a swing at it as well. 👍


[Feature]: Support for MERGE syntax

What happened?
We are evaluating Babelfish for a long time now but are facing some basic problems due to the missing syntax "MERGE", it is heavily usesd by some CDC tools like DEBEZIUM. We also plan to use it with web development, where libraries like EF Core also rely on this syntax.
Is there any plan to support in the near future?
Version
BABEL_4_X_DEV (Default)
Extension
None
Which flavor of Linux are you using when you see the bug?
Ubuntu (Default)
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct.

we do not use any of these statements you mentioned
for now we are considering pointing the CDC tool directly to the underlying babelfish postgres. we have tested the basics and it seems to have had no problems. is there any documentation or guide that explains the risks of doing this?


Data Pulled but Field Not Seen

Version of the custom_component
pre-v6.0.1
Configuration
- resource: https://www.mudomaha.com/node/239
  scan_interval: 14400
  sensor:
    - unique_id: mud_gas_service_charge
      name: Utility - MUD - Gas Service Charge
      icon: mdi:currency-usd
      select: ".field-node--body > div:nth-child(1) > div:nth-child(1) > table:nth-child(13) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2)"
      value_template: "{{ value.replace('$', '') }}"
    - unique_id: mud_gas_infrastructure_charge
      name: Utility - MUD - Gas Infrastructure Charge
      icon: mdi:currency-usd
      select: ".field-node--body > div:nth-child(1) > div:nth-child(1) > table:nth-child(13) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2)"
      value_template: "{{ value.replace('$', '') }}"
    - unique_id: mud_gas_base_unit_charge
      name: Utility - MUD - Gas Base Unit Charge
      icon: mdi:currency-usd
      select: ".field-node--body > div:nth-child(1) > div:nth-child(1) > table:nth-child(13) > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(2)"
      value_template: "{{ value.replace('$', '0') }}"
    - unique_id: mud_gas_monthly_unit_charge
      name: Utility - MUD - Gas Monthly Unit Charge
      icon: mdi:currency-usd
      select: ".field-node--body > div:nth-child(1) > div:nth-child(1) > table:nth-child(30) > tbody:nth-child(3) > tr:nth-child(4) > td:nth-child(6)"
      value_template: "{{ value.replace('$', '') }}"
  log_response: true
  #parser: html.parser
  headers:
    User-Agent: Mozilla/5.0

Describe the bug
Not sure if this is a bug or maybe something weird with the webpage, but the data is showing up in the body response file that gets pulled by the plugin but for some reason, Multiscrape is not "finding" it even though it finds others on the same page just a few lines up. I have tried everything I found Googling around. Is there a limit to how many items it can pull or how far down the page it looks?

Debug log

2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.entity] Scraper_noname_1 # Utility - MUD - Gas Infrastructure Charge # Updated sensor and attributes, now adding to HA
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Start scraping to update sensor
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.scraper] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Select selected tag: $.1283
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.scraper] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Selector result: $.1283
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.scraper] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Applying value_template on selector result
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.scraper] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Final selector value: 0.1283
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Selected: 0.1283
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.entity] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Icon template rendered and set to: mdi:currency-usd
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.entity] Scraper_noname_1 # Utility - MUD - Gas Base Unit Charge # Updated sensor and attributes, now adding to HA
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # Start scraping to update sensor
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.scraper] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # Select selected tag: None
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # Exception selecting sensor data: 'NoneType' object has no attribute 'name'
HINT: Use debug logging and log_response for further investigation!
2022-04-11 11:20:12 ERROR (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # Unable to extract data
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # On-error, set value to None
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.entity] Scraper_noname_1 # Utility - MUD - Gas Monthly Unit Charge # Updated sensor and attributes, now adding to HA
2022-04-11 11:20:12 DEBUG (MainThread) [custom_components.multiscrape.sensor] Scraper_noname_2 # Price - Yardmatery - Stress Fert # Start scraping to update sensor

EDIT: to include a success in the log for another sensor on the same page

Turns out not a bug; just not a consistent selector on the site: https://community.home-assistant.io/t/multiscrape-missing-field/410343/7


How to have multiple str in body with an example for each of these str (while typing those value as string)

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
from fastapi import FastAPI, Body
from pydantic import BaseModel

app = FastAPI()

@app.post("/one_body")
def one_body(
    sentence_1: str = Body(
        default=None,
        example="This should works fine",
    ),
):
    return "'I'm one_body"

@app.post("/only_body")
def only_body(
    sentence_1: str = Body(
        default=None,
        example="some example value (1)",
    ),
    sentence_2: str = Body(
        default=None,
        example="some example value (2)",
    ),
):
    return "'I'm only_body"

class Sentence1(BaseModel):
    sentence_2: str

    class Config:
        schema_extra = {
            "example": "This is the first sentence that I have hard-coded",
        }

class Sentence2(BaseModel):
    sentence_2: str

    class Config:
        schema_extra = {
            "example": "This is the second sentence that I have hard-coded",
        }

@app.post("/with_base_model")
def with_base_model(
    sentence_1: Sentence1 = Body(
        default=None,
        example=Sentence1.Config.schema_extra["example"],
    ),
    sentence_2: Sentence2 = Body(
        default=None,
        # example=Sentence2.Config.schema_extra["example"], # NOTE: volontarely comment this line to show that it changes nothing
    ),
):
    return "'I'm only_body"

Description
I'm trying to find a way to :

create a route with two str params required in the body
those params being typed as str
providing an example value for those two str

But seems that if we provide two value in the body we must use BaseModel (cf) to describe it example value, however if we do that the param will no longer be typed as an str but as an object.
How can I create a route requiring two str in the body while providing an example for those two str and still have those values typed as str?
In the example code I create three routes :

/one_body to show that we can provide an example when there is only one value in the body
/only_body to show that when provide two values in the body we can no longer provide an example
/with_base_model to show that when use BaseModel to provide an example, the value is no longer typed as an str

/openapi.json
{
  "openapi": "3.0.2",
  "info": {
    "title": "FastAPI",
    "version": "0.1.0"
  },
  "paths": {
    "/one_body": {
      "post": {
        "summary": "One Body",
        "operationId": "one_body_one_body_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "title": "Sentence 1",
                "type": "string"
              },
              "example": "This should works fine"
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {

                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/only_body": {
      "post": {
        "summary": "Only Body",
        "operationId": "only_body_only_body_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_only_body_only_body_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {

                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/with_base_model": {
      "post": {
        "summary": "With Base Model",
        "operationId": "with_base_model_with_base_model_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Body_with_base_model_with_base_model_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {

                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Body_only_body_only_body_post": {
        "title": "Body_only_body_only_body_post",
        "type": "object",
        "properties": {
          "sentence_1": {
            "title": "Sentence 1",
            "type": "string"
          },
          "sentence_2": {
            "title": "Sentence 2",
            "type": "string"
          }
        }
      },
      "Body_with_base_model_with_base_model_post": {
        "title": "Body_with_base_model_with_base_model_post",
        "type": "object",
        "properties": {
          "sentence_1": {
            "$ref": "#/components/schemas/Sentence1"
          },
          "sentence_2": {
            "$ref": "#/components/schemas/Sentence2"
          }
        }
      },
      "HTTPValidationError": {
        "title": "HTTPValidationError",
        "type": "object",
        "properties": {
          "detail": {
            "title": "Detail",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            }
          }
        }
      },
      "Sentence1": {
        "title": "Sentence1",
        "required": [
          "sentence_2"
        ],
        "type": "object",
        "properties": {
          "sentence_2": {
            "title": "Sentence 2",
            "type": "string"
          }
        },
        "example": "This is the first sentence that I have hard-coded"
      },
      "Sentence2": {
        "title": "Sentence2",
        "required": [
          "sentence_2"
        ],
        "type": "object",
        "properties": {
          "sentence_2": {
            "title": "Sentence 2",
            "type": "string"
          }
        },
        "example": "This is the second sentence that I have hard-coded"
      },
      "ValidationError": {
        "title": "ValidationError",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "type": "object",
        "properties": {
          "loc": {
            "title": "Location",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            }
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        }
      }
    }
  }
}

Operating System
Linux
Operating System Details
No response
FastAPI Version
0.79.0
Python Version
Python 3.8.10
Additional Context
No response

I thought this was a straight up answer but I ran into several weird behaviours when trying to come up with examples. I need a little more time to really dive into this, because it is not at all consistent. For starters, try replacing your Sentence1 class with this:
class Sentence1(BaseModel):
    sentence_1: str
    foo: str

    class Config:
        schema_extra = {
            "examples": [
                {
                    "sentence_1": "This is the first sentence that I have hard-coded",
                    "foo": "bar",
                }
            ]
        }

This is not picked up at all, while using just 'example' is picked up. That is even the case when you have multiple properties (sentence_1 and foo in this case). Weird and unexpected.

This is not picked up at all, while using just 'example' is picked up. That is even the case when you have multiple properties (sentence_1 and foo in this case). Weird and unexpected.

Yea I encountered this behaviour (in part leading me to split the params into multiple schemas)
Thanks for your time, curious to know where the final point of that will be

Alright so this is partly a SwaggerUI problem I think, and partly a FastAPI problem. Let's talk about the SwaggerUI problems first. The example that I gave above runs properly in /redoc but will fail in SwaggerUI.
Code:
class Sentence3(BaseModel):
    sentence_1: str
    sentence_2: str

    class Config:
        schema_extra = {
            "examples": [
                {
                    "sentence_1": "Hello sentence 1 from model3",
                    "sentence_2": "Hello sentence 2 from model3",
                },
            ]
        }

@app.post("/with_model_3")
def with_model_3(sentences: Sentence3):
    return "hello there"

This will render in SwaggerUI:

but will render properly in Redoc:

I came on to this because I couldn't find anything wrong with the generated openapi.json (although example will be deprecated in 3.1.x, but FastAPI is using 3.0.2). When I checked /redoc I was relieved that I was not going crazy completely ;)
So at least, you don't have to separate the two sentences in two BaseModel subclasses, you can put it in one class (like I did above).
Now, the weird stuff is still that when you put two Body() parameters of type str, FastAPI does bundle those into one object (with two strings) but forgoes the example that you gave with it. I found that this is caused by get_body_field() in dependencies/utils.py. When a route is created (e.g. with @app.post()), the body field is generated. In this case, it is based on two separate string. APIRoute init calls get_body_field(), which in turn calls create_response_field(). However, in get_body_field(), it seems that it drops any additional information on the fields (not just example, like everything that the Body() parameter has on it. See code from this line onwards. I would say this is a bug.

Thanks for you answer @JarroVGIT.
It seems that Form neither produce an example value in the /openapi.json. I guess it's related, isn't it?
Example code
from fastapi import Body, FastAPI, Form

app = FastAPI()

@app.post("/body/empty")
async def body_empty(importance: int = Body()):
    return ""

# Does provide an example value
@app.post("/body/example")
async def body_example(importance: int = Body(example=2)):
    return ""

@app.post("/form/empty")
async def form_empty(importance: int = Form()):
    return ""

# Does NOT provide an example value
@app.post("/form/example")
async def form_example(importance: int = Form(example=2)):
    return ""

Body() is a special function that returns an instance of class Body, the same goes for Form() (which returns an instance of Form). The class Form is a subclass of Body, so I would expect the same behaviour indeed.

@JarroVGIT I will take a look at starting from today.
Keeping you up to date during this week.

@JarroVGIT This is my current stat of understanding regarding the code base :

get_param_field is called by get_dependant (for each signature_params) which call create_response_field.

create_response_field returns field that contains the example value (field.field_info.example) for the parameter.

create_response_field is also called to create the route schema in get_body_field returning final_field.

final_field does not seems to contain any informations relating to the body parameters, and so to the example values.
(Does I miss-understand this part? If so, where does the information concerning the body parameters are provided and stored within final_field?)

If final_field does indeed not contains any informations relating to the body parameters I need to search wether this bug is due to :
A. The ApiRoute not providing those informations when creating the openapi.json
B. The ApiRoute does provide those informations when creating the openapi.json but there are not used.
On the contrary, if final_field contains the informations relating to the body parameters (and thus the example values) I need to verify that those values are keep in final_field.
I have also few questions for you:

Where does the openapi.json is create ?
Is final_field used to create the schema for each param in the openapi.json or is only used to create the path schema and self.dependencies is used to create those schema?

I hope my explanations and understanding are not too messy.
Thanks for your feedbacks.

Update :
As you do:
for f in flat_dependant.body_params:
        BodyModel.__fields__[f.name] = f

followed by
final_field = create_response_field(
    name="body",
    type_=BodyModel, # used here
    required=required,
    alias="body",
    field_info=BodyFieldInfo(**BodyFieldInfo_kwargs),
)

It seems that you do provides to final_field the informations about the parameters and their example values.
The question now is, do you rely on final_field to create the schema for each parameter (thus the issue comes from pydantic and not FastAPI as ModelField comes from pydantic) or do you rely on self.dependencies.


Docs are not being deployed

Hi! I am unsure about how to solve this problem, so I am opening an issue in case someone has a better idea of how to fix it.
I noticed the last release didn't produce any changes in the documentation (https://juliaml.github.io/OpenAI.jl/dev/) when it should have (there were two changes, made in #38 and #39). Looking at the GitHub actions log, it seems like it was some error related to the repository URL:

I was thinking that maybe setting repo to something like "github.com/JuliaML/OpenAI.jl.git" here https://github.com/JuliaML/OpenAI.jl/blob/2cfe791e0e4e21fd4ed9089d2a5e19ad359cf73a/docs/make.jl#L6 might solve the issue, but I am not very experienced with Documenter.jl and I don't really know how I could test if this solution would work.

Hmm, thanks for bringing this up. We transferred the repo recently from my personal to the JuliaML org and looks like that broke the docs build. I'll fix it this weekend


Error message.

 node bot.js
Ready to level up!
There was an error! Did you update the config.json file? If you did, let me know what the error message says in an issue on the repo on GitHub.
Error: Incorrect login details were provided.
at WebSocketConnection. (/home/runner/spambot/node_modules/discord.js/src/client/ClientManager.js:48:41)
at Object.onceWrapper (events.js:421:26)
at WebSocketConnection.emit (events.js:314:20)
at WebSocketConnection.onClose (/home/runner/spambot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:393:10)
at WebSocket.onClose (/home/runner/spambot/node_modules/ws/lib/event-target.js:124:16)
at WebSocket.emit (events.js:314:20)
at WebSocket.emitClose (/home/runner/spambot/node_modules/ws/lib/websocket.js:191:10)
at TLSSocket.socketOnClose (/home/runner/spambot/node_modules/ws/lib/websocket.js:850:15)
at TLSSocket.emit (events.js:326:22)
at net.js:675:12
here is my code in config.js
{
"botToken": [ "wngiher9ughEAHudhsiufhds.YJC6Mw.5SYHv348OOvOPiTqvOzh9z2JAtg", "if you want multiple accounts, put any other tokens here" ],
"prefix": "/"
}

You need to delete the string that says "if you want multiple accounts, put any other tokens here" and the comma after the first string. That is not a valid token and is why the program is crashing.


Store more data from session in Chado

Store the triage status of the publication in Chado so that the information can get through to Ensembl.  This will allow us to put a note on a gene page that says which reviews the gene was mentioned in.
Original comment by: kimrutherford

https://github.com/pombase/website/issues/27

Did this actually get done? I don't see any follow-up comment from Kim, tho it is ancient ...

possibly not

is this covered by
https://github.com/pombase/pombase-chado/issues/67?

If Kim has any current reason to do this part:

Store the triage status of the publication in Chado

fine and dandy, but if not, we can close this ticket.
I think this part

so that the information can get through to Ensembl

is superseded by the lovely, delightful fact that we no longer have to get any literature curation data through to Ensembl.
If I understand correctly, we could get genes onto publication pages (which already exist) for reviews by creating a Canto session for each one, adding the gene list, and putting the session through. Or we may want Kim to help with some more automated route, but that would be a whole different ticket.

Let's close. If/when we need to do this as part of publication page info it will soon become apparent...


⚠ Bofrost.nl has degraded performance

In e68d4fe, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1410 ms

Resolved: Bofrost.nl performance has improved in 98a3d17 after 13 minutes.


Common Area Phone document is outdated

[The article about CAP is quite poor as it doesn't explain most of the things you need to setup to control the device, like the IP Phone Policy, there are some external articles that explain everything quite well, like this one from Jeff Schertz or this one from Jeff Brown.
If you want to use Direct Routing with the CAP, you need to assign a telephone number to the CAP user as described on the section Enable Users of the Configure Direct Routing article, with the exception of the Voicemail as CAP don't use Voicemail (do not include "-HostedVoiceMail $true"). Also you need to assign a Voice Routing Policy to the user as described on the Configure voice routing section of the previous article. In this external article you can also see an example.
I think we should create an Insight requesting a detailed article about how to set up CAP devices and the configuration to use them with Direct Routing]

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

ID: b4ab5215-f24f-75cf-bb92-16ac0ff5e5ca
Version Independent ID: 701cc58f-d2ea-cbb6-f5fc-47b9fbfb1119
Content: Set up the Common Area Phone license - Microsoft Teams
Content Source: Teams/set-up-common-area-phones.md
Service: msteams
GitHub Login: @SerdarSoysal
Microsoft Alias: serdars

Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@lmon1103 thank you for pointing this out. I found a document relating to this. Please let me know if it helps at all and I can have a link added to this article to help other users - https://docs.microsoft.com/microsoftteams/direct-routing-plan#supported-end-points

Thank you for submitting feedback. We understand that this issue has been resolved.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.


Clic right in the "Members" tab => WoT & WoT search !?

It misses the possibility in the "members tab" with right clic on a member a menu to go directly to the WoT tab where the member clicked is in the center.
Int he WoT tab the search of a member should be done after clicking a button, right now we need to push "enter" to dot it.

Done in f7bb5b0b532052196c990288f6dded5dc323475c


Action is not added to subgoal until end

Actions are not added to the subgoal's list of actions until they are complete. This can pose a problem for when a user saves and exits without fully completing an action.
The action should be saved to the subgoal in parts so that a user can save and exit and retain the information they have for the action regardless of if it's complete.


Add density unit

Add density unit

Neat.
I think you need to implement the base test class. It's not compiling.

I will correct the tests and create a new pull-request.


which package su  suits it

which package su  suits it https://imgur.com/a/rotLF

POLACZKU WIKI.VG

Jam Perfekt Englisz

@m3ku still need help?


Overswipe "delete" button does not accept color property

In the latest version of F7Vue, the overswipe button does not accept any color property, when property delete is true.

Delete button is always red and its background controlled by --f7-swipeout-delete-button-bg-color CSS prop, you can change this prop to any color you need

Thank you for the response @nolimits4web - I thought deleting the entry after swipeout must not be allways means to delete the entry ... for example overswipe to move to another list ... but ok, is a workaround :-)


suggestion: multiple hubs per connection

Critical feature if you dive your app and dont want everything (every method) in one hub.
There is greater flexibility needed and anyone can put  authorize attributes on methods or hubs that need to be authenticated, using one connection which can call any hub in endpoint.
If you need to be more strict you typically make another endpoint where the authentication differs.
Using alpha .net core version 1.0.0-alpha1

Critical feature if you dive your app and dont want everything (every method) in one hub.

Can you explain what this means?
There are currently not plans to support multiple hubs per connection.

sure, you can have an hub with a chat, but you can have a hub with methods getting some reports data and typically -, those two things dont belong together in code. So you create two separate hubs, and you want to access them with one authentication and one connection.

Why can't you put the same authentication on both hubs?

I can put same authorize attribute over them, but why do I need initiate two different connections on client connecting to same endpoint?

Because thats the new model. Let me flip the question, why do you have many hubs?

Thanks for the feedback! No promises but it would be interesting to see how many hubs you have (it is 10? 5? 2?), see what they look like (in terms of number of methods and behavior) to help us understand the scenario better.
Also, it would be interesting to see what the client looks like. I'd like to see how different parts of the application wires up to the various hubs.
If indeed you need to use multiple hubs, instead of multiple hub proxies, you now have multiple connections, it's not as trivial but I'm not yet convinced it's a deal breaker.

Imagine big data (terabytes), big app scenario..
You can create something similar like webservice oriented scenario, where each hub is responsible for something. like typical scenario in my case I can Imagine 5-6 hubs, each responsible for another part of the system. Why would you ever combine classes and methods in one hub?
Why coudnt you have one connection and access them all?
I give you right oway two clients one is web browser another one is desktop app, it could be one and the same application written in react, vue.. and packed for different scenarios.
Depending on permissions in that app for particular user, you use different hubs in backend.
And yes if user has right for different modules in this app it ll use different hubs simultaneously...
I can give you ton of examples that I see in everyday scenarios in field. just ask.

I can give you ton of examples that I see in everyday scenarios in field. just ask.

I'd like to see the typical code in these scenarios, preferably if we have existing signalr apps today that do this exact pattern it would be great to look at.

I cannot pass to you bigger apps from private companies. But you can have anlook at my simple example on github. or i can describe to you real world scenarios and why is good to have one connection with multiple hubs.
What suprises me that thinking one connection and one hub will be always enough. no it wont you either want somethung flexible enough ot you go with other libraries like socket.io and so on.. and this now also possible to integrate and call from .net. be smart be flexible and create something that can do more than the others..

no it wont you either want somethung flexible enough ot you go with other libraries like socket.io and so on

Funny thing is socket.io isn't much different here, all you have are events so I'm not sure what you mean.
Thanks, I'll leave this bug open and let others chime in with their experiences.

Sorry, original Signalr 2 has this feature, even the one on .net 4.6, if I m not wrong its one big feature less!
Same opinions here: https://stackoverflow.com/questions/19825901/how-to-have-multiple-signalr-hub-on-one-page here.. https://stackoverflow.com/questions/40277903/when-to-use-multiple-hubs-in-signalr  , here.. https://stackoverflow.com/questions/19825901/how-to-have-multiple-signalr-hub-on-one-page
here
https://forums.asp.net/t/2005679.aspx?Multiple+instances+of+hub+does+it+make+sense+
Only argument I can think of why not to separate hubs is mobile battery consumption.
Socket was just an example, there are more of them.

@Jack85 I think the more important reason why there is one connection per hub is to keep things simple.
Sharing a connection across multiple hubs requires an internal routing solution as well as a much larger API surface (so that you can open the connection, and then pass it for each hub), and all that must be replicated in Javascript as well...
So, if it is an uncommon scenario, it makes sense to prioritize releasing a v1 of the current architecture.
And maybe in the next version, this feature would be considered.

Regarding the separation of concerns where you want hubs that handle very different services, a workaround can be to have one SignalR hub as the entry point where each method is a single line calling a separated class for that service.

Yes, but imagine those 1000 methods there, forced to do multiple inheritance, might be only elegant solution.
I dont think it has to be complicated somehow authorize connection first and share this authentication with every hub call.

I did exactly as KPixel has pointed out. Separate your logic into multiple service layers as you would an MVC app. The separation of the business logic and database logic is achieved by injecting multiple service layers into the hub. From there the fact that you have a single hub means nothing. Since all its doing is taking the call and passing it straight down to the service layer.

I can see a hub per domain running on one connection. For example, I have a Projects app. The project has some domains like "issues" and "benefits". This app is small and the domains aren't heavyweight enough to dedicate a whole sub-system. They're like micro-domains (I call them Scopes). They service different audiences - everyone gets issues pushed, and stakeholders get benefits pushed. Each Scope has a Front Controller to manage processes and full pages. There is a related Hub for each Scope to handle the chatty stuff in the pages.
Most of the time, these are accessed from the Project scope. A user is working on a project and needs to add an issue. It works either way, but it just feels better to have one connection talking to Project scope, and hitting the other hubs through that same connection.

Let me flip the question, why do you have many hubs?

I'll give our scenario. We have four independent software teams working on one module-based product, each team is responsible for their own modules. It sounds like it should be microservice'y, but we went monolith first. Coming from the old/current SignalR, we evolved to a state where each module had it's own hub, so teams could remain as independent as possible.
I don't particularly like where we've ended up. We've got eleven hubs so far with zero methods on them. We are just using them as a filter on the front end, so each module can just subscribe/process their own messages. I don't like that we have a connection per hub.
Judging from #1430 this is discouraged for new SignalR (we've just switched over to alpha2). The partial class suggestion is probably enough to maintain team independence for us.

A solution given here is by creating services. This would mean I would need to pass the HubCallerContext to every method when needed, right?

We are just using them as a filter on the front end, so each module can just subscribe/process their own messages.

In that case, why not use a single Hub and add the clients to Groups as needed?

This would mean I would need to pass the HubCallerContext to every method when needed, right?

If you wanted to be able to call back to the client in one of your services, then yes. You could always build a base hub that sets up a wrapper to do this for you though.

In that case, why not use a single Hub and add the clients to Groups as needed?

I haven't investigated Groups in new SignalR yet, but my understanding of old SignalR they didn't seem to be a good fit for our use. With our Angular SPA and navigating between module "pages", we always want all SignalR messages to go down to all clients. There could be many Angular components on a "page" from different modules, so each component needs a way to filter out messages for its own module.

so each component needs a way to filter out messages for its own module

Yeah, this could be achieved with groups, but you'd need a separate connection for each module anyway, so it doesn't solve that problem. Is there a reason you can't do this filtering by using attributes in the messages themselves? Both Groups and Hubs have non-trivial server-side state requirements (memory is required to store state, both on the server and backplane, cpu is required to filter messages to the right connections). Tagging the messages on the server and having the client do the filtering/dispatching would move this logic from the server (where thousands of message streams have to be filtered and processed) to the client (where one message stream has to be filtered and processed). If all clients are receiving all messages, you don't really need the server to filter.

Is there a reason you can't do this filtering by using attributes in the messages themselves?

Nope! In fact this is something we will be moving towards soon, especially considering:

Both Groups and Hubs have non-trivial server-side state requirements...

TYVM for the extended explanation, I appreciate it. It definitely adds to the impetus for us.

We periodically close 'discussion' issues that have not been updated in a long period of time.
We apologize if this causes any inconvenience. We ask that if you are still encountering an issue, please log a new issue with updated information and we will investigate.


Error in code

I am trying to train the network and I am getting the following errors
Traceback (most recent call last):
  File "./main8Xmulti.py", line 22, in <module>
    from models.StereoNet8Xmulti import StereoNet
ModuleNotFoundError: No module named 'models.StereoNet8Xmulti'

Changing from models.StereoNet8Xmulti import StereoNet to from models.StereoNet_single import StereoNet fixes that error, but then I get this error
Traceback (most recent call last):
  File "./main8Xmulti.py", line 365, in <module>
    main()
  File "./main8Xmulti.py", line 170, in main
    train(TrainImgLoader, model, optimizer, log, epoch)
  File "./main8Xmulti.py", line 223, in train
    losses[idx].update(loss[idx].item() / args.loss_weights[idx])
IndexError: list index out of range

loss only has 2 elements in the list, but losses has 4. How can I fix this?

Hello, is the final output of this network a list? What do the two tensors in the list represent?

Hello, I got the same error as you.Have you solved that?

I got the same error too, and after I changed  "from models.StereoNet8Xmulti import StereoNet " to "from models.StereoNet_single import StereoNet", the error became "exit 2", Have you solved that?


Error: Unexpected token on Toast static propTypes

Getting error on Toast static propTypes
`
/node_modules/galio-framework/src/Toast.js 11:19
Module parse failed: Unexpected token (11:19)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|
| class Toast extends Component {

static propTypes = {
|     children: PropTypes.node.isRequired,
|     isShow: PropTypes.bool.isRequired,
`

Same Problem here. Can anyone help?

Kindly provide a reproducible example so I could look into it...

The Error occurs when I try to run the app in any way via expo start after npm install galio-framework. It happens with a new, clean app and with my app already in development

I don't think this is an issue with Galio, it because of your babel loader config and/or webpack if you are using it. Try clearing your bundler cache and make sure your babel.config.js or web pack.config.js if any is using the appropriate config rules.

I am facing the same issue when trying to build for web using expo

Same, fixed this by updating app.json and including the following in the expo section.
    "web": {       "build": {         "babel": {           "include": ["galio-framework"]         }       }     }

@RichardTheHouse Thanks, I figured that out, unfortunately I am getting error with almost all of my dependencies...

same problem after installing galio-framework on existing app

Any Updates on this issue?


Make friendly to set -u

I like to have set -u turned on in my shell. These changes fix the problems I ran into with oh-my-zsh.
Environment variables (that may not be set) are accessed via ${FOO:-} instead of just ${FOO}.

This seems like an awful hassle, is it really necessary?
Can you not simply set -u after sourcing OMZ?

I like scripts to be set -u safe.

No need to worry, as you can see with prepending "x" to the string we are safe vis-à-vis empty variables.
I advise you trust OMZ to deal with unset variables, and then set -u after sourcing OMZ, so you are safe with any other scripts you may run.

Prepending "x" to the string is an old Borne Shell trick that is not
required when you use the modern [[ ]]. I had thought about changing that
too while I was in there but wanted to keep the change as small as possible.
I noticed that only in a few places the older [ ] style test is used. These
could all be replaced with [[ ]] and then any double quoting and "x"
prepending tricks removed.
See https://gist.github.com/steshaw/16218d663f39cc6e64d3 for an example.
I can understand you wanting to reject my patch for the set -u safety. It
does help prevent errors (with misspelled variable names) but doesn't seem
to be a very popular technique amongst shell programmers. I don't
understand why though. I like it :).
On 12 May 2015 at 22:49, Nicolas Canceill<EMAIL_ADDRESS>wrote:

No need to worry, as you can see with prepending "x" to the string we are
safe vis-à-vis empty variables.
I advise you trust OMZ to deal with unset variables, and then set -u
after sourcing OMZ, so you are safe with any other scripts you may run.
—
Reply to this email directly or view it on GitHub
https://github.com/robbyrussell/oh-my-zsh/pull/3879#issuecomment-101264781
.

@robbyrussell @mcornella @apjanke what do you think?

:+1:

Hmm. Nothing personal, but this extra defensive/hygienic stuff using fine-grained syntax (as opposed to higher-level design) kind of makes my eyes ache, and is one of the reasons I switched to zsh from bash. I would be bummed to see it showing up much. But it's not my framework.
There's a lot of different shell options in zsh that can change its behavior, and if we try to defend against many of them on a line-by-line basis like this, OMZ is going to end up looking like a Perl script. That's a bummer, because one of the nice things about OMZ is that it provides an easy on-ramp for users who are new to Zsh and shell in general.
If you want to code defensively against set -u and the like, instead of making pervasive syntax changes against particular errors, how about using emulate -L zsh inside functions to locally restore all options to a state that's known to work with the syntax of the code you're writing? That would be both more robust and IMHO easier on the eyes. Simply adding anonymous function wrappers using () { ... } to the library files would give you a context for emulate -L to work in.

I agree with the general feeling here that this type of defensive programming looks and feels wrong. That undefined variables are treated as empty is not a bad thing, and I don't think we'll merge this one.
If you want to have it enabled in your shell, you can set it after oh-my-zsh has been sourced so you don't get warnings for the oh-my-zsh codebase.

No worries, I think I'm eventually giving up on shell scripting anyhow :)

@steshaw hey can you close this PR?


Enable IRQ_STEER on i.MX8MP

Enable the IRQ_STEER interrupt controller on i.MX8MP.

@LaurentiuM1234 I will reopen this.  Tested with iMX8MP and SDMA changes and it works fine.

Changes since previous version:

rebased on top of main
tested with SOF and openamp on i.MX8MP.


Engage Weekly - May 9th, 2022

This is a weekly public meeting to discuss the engagement across different areas of the Postman API Network, coordinating and planning around the advocacy, education, and community building work occurring within Postman Open Technologies.
Agenda:

Administrative - Taking care of administrative aspects of running this meeting.

Intake

Github
Slack - #api-network-partnerships and #api-network-wins
Airtable -- Just for master index.

Public - This meeting will be open to the network, partners, and general public.

Trending - What teams, APIs, and collections are trending lately on the network.

Power BI (Workspace) - Spruce up the workspace.

Partnerships - Intake from partner program.

dbtLabs (API) - Need someone to jump on call with them.
DrugBank (Workspace

Priorities - What priorities requests have come in from internal and external stakeholders.
Campaigns - What are the areas we are focusing on with campaigns and components.

Producer API Lifecycle
Consumer API Lifecycle

Opportunities - Identifying where the opportunities are for focusing our attention.

Web3 - Anything in this area would be cool.
Google Maps
International

Blueprints - Formalizing the guidance we provide as part of these meetings.

https://github.com/postman-open-technologies/engage/issues/22 - The numbers that matter to partners.
Workspace Linter - Baseline for all workspaces.

Please add any agenda items you’d like to discuss below, and we will meet weekly, and push forward projects, productions, stories, collections, and tools to support our work.

Doordash - Handing off from API Network. Co-marketing efforts.

Akamai. Linode. API Evangelist. OpenAPI workflows. Cloudflare.

How do we create a trailer for how people use the API network. Top brands. Top use cases.

3D Printing APIs - Fleet of 3D Printing APIs. Models. OctoPrint. Not widely used.


Pass multiple values for the same template parameter

Hello, thank you for your good job!
I have following need today. I have a REST service with this search available:
{
  "_links" : {
    "findByStatusIn" : {
      "href" : "http://localhost:8080/myapp/rest/myresources/search/findByStatusIn{?status}",
      "templated" : true
    }
  }
}

status is a parameter that can be passed with multiple values, for instance:
http://localhost:8080/myapp/rest/myresources/search/findByStatusIn?status=A&status=B&status=C

How can I pass multiple values for the same parameter using withTemplateParameters?
I tried this:
.withTemplateParameters({
	status : ['A', 'B', 'C']
})

but obtained
http://localhost:8080/myapp/rest/myresources/search/findByStatusIn?status=A,B,C

Looking through Traverson code, expand function in UrlTemplate.prototype.parse seems not to support this.

I'm not sure what to do here. I think the specific URI template fragment in your example ({?status}) does not allow for multiple values according to the RFC6570, does it?
If I read the RFC correctly, you would need the explode modifier *, combined with an expression type that expands named parameters (;, ?, or &). See end of section 3.2.1. "Variable Expansion". For instance, something like {&status*} could do the trick.
Traverson uses url-template (because the small file size makes it attractive when Traverson is used in the browser). The library claims "The implementation supports all levels defined in the specification and is extensively tested." Thus, I would expect that this works when the actual URI template is corrected on the server side. If not, I would suggest opening an issue at url-template.
Closing for now. Feel free to re-open, if you still think this is an issue with Traverson.re-open.

Great note @basti1302!
I'll point it out to Spring Data REST.


Package webpack assets for CLI consumption

For the CLI to be able to generate a complete metadoc site it needs to be able to extract the webpack assets from somwhere. Options are:

package (and publish) webpack assets in a separate org.scalameta:metadoc-js:version:assets jar (note the classifier)
ship assets in the main metadoc-js jar for example inside a META-INF/metadoc-assets folder

Packaging can be achieved using sbt's Defaults.packageTaskSettings however version 0.8.0 of scalajs-bundler no longer support custom output paths so we need to find another long term way to resolve all assets generated by webpack.

Fixed in #67


Adding the changes made according to the new naming scheme.

Closing this PR due to invalid modifications. The files are indicated as added but should have been indicated as moved instead.


Buggy behaviour when commenting and uncommenting via Toggle Line Comment vscode shortcut in Django HTML.

Sometimes when I comment html code and try uncommenting it djlint fails to uncomment it and adds more comment tags.
Example:
<svg xmlns="http://www.w3.org/2000/svg"
     width="16"
     height="16"
     fill="currentColor"
     class="bi bi-file-earmark-text"
     viewBox="0 0 16 16">

If i select the 7th line a press shift and up until I'm at the 1st line, and then use the Toggle Line Comment shortcut (in my case ctrl + /) it comments the code correctly, but if I press the keybind again, it proceeds to add more tags.

This also happens if add another line at the top and select from the 1st line and the 8th line:

If I select the code action "comment selection" it also gets buggy.

When I try using the shortcut it adds a new comment tag and removes it if the shortcut is pressed again.

This also happens if I select from the end of the tag instead of from line 7.

Hi. djLint has nothing to do with this. It is handled by another extension.


Index 2 out of bounds for length 2

I have vulnerable jar in path "C:\Program Files\FlexNet Operations\release\flexnet.ear\flexnet.war\WEB-INF\lib", but scanner returns
error: Index 2 out of bounds for length 2
Scanned 1 directories and 160 files
Found 0 vulnerable files
Completed in 0.03 seconds
OS is windows server 2012 R2, if that helps

@urshmug Would you test new 1.2.0 release?

I saw a similar issue, when I upgraded to 1.2 I stopped seeing this issue.

Tested 1.2.2 and it finds vulnerable files, thank you.


[stable/airflow] Airflow scheduler does not start with -p parameter

Is this a request for help?:
YES
Is this a BUG REPORT or FEATURE REQUEST? (choose one):
BUG REPORT

Version of Helm and Kubernetes:
Helm v2.12.1
Kube v1.12
Which chart:
stable/airflow
What happened:
Even when setting
schedulerDoPickle: true in values.yaml, turns out the airflow scheduler does not start with the -p (DoPickle) parameter.
https://github.com/helm/charts/blob/eee84d29fdea80cd859d76210bd8262ad484ebd3/stable/airflow/values.yaml#L62
What you expected to happen:
I suppose appending the -p parameter to the command if .Values.airflow.schedulerDoPickle evaluates true.
https://github.com/helm/charts/blob/eee84d29fdea80cd859d76210bd8262ad484ebd3/stable/airflow/templates/deployments-scheduler.yaml#L121
How to reproduce it (as minimally and precisely as possible):
The issue is apparent in the code.
Anything else we need to know:
Let me know if it was in deliberation the parameters were omitted.
Nope! Much obliged  for your efforts in maintaining this chart! @gsemet

@gsemet Let me know if it would be better for me to write up a PR for this! =]

Indeed this is a lost feature in the transition to kube/charts, sorry!
I do not use pickling, was unstable when I tested it. But either we remove this option or you can add it to the command line parameter.
There are 2 ongoing PR today. 0.16.0 is about to be merged, another PR will be opened soon (0.16.1) and you if you want to wait a little to submit 0.16.2, but you can test the stability of the pickling.

@gsemet Nice! I will wait to submit to 0.16.2 =]. I'll try and test the stability of the pickling option on my side and update this thread with results!

Hi. Have you had time to work on it? 0.17.0 is merged :)


feat(SPV-953): Change login page layout

Pull Request Checklist

[ ] 📖 I created my PR using provided  : CODE_STANDARDS
[ ] 📖 I have read the short Code of Conduct: CODE_OF_CONDUCT
[ ] 🏠 I tested my changes locally.
[ ] ✅ I have provided tests for my changes.
[ ] 📝 I have used conventional commits.
[ ] 📗 I have updated any related documentation.
[ ] 💾 PR was issued based on the Github or Jira issue.

Tested


Did suneditior can generate markdown or only html ?

Hi, i would like to know if suneditor can generate markdown or it's only support generated html ? There is no documentations about it.

@LucaHermann
Currently, markdown mode is not supported. :(
Even if it support, it will take a long time work.


Create command to display story based on git branch

I tend to name my branches something like feature-<story_id>-<some_story_title>. It would be nice to have a command that would pluck the story id from the current git branch and then feed that into club story.
Possible usage:
$ git branch
* feature-133-this-my-feature
  master
$ club branch
# runs $(git branch), plucks story ID (if present)
# runs `club story 133`

This actually works:
$ club story $(git branch | awk '{print $2}' | awk '$1>3' | awk '{gsub("[^0-9]", "")} 1')

It would also be nice to create a branch dynamically based on the story type, ID, and title...


update metastore template variable names

required for corresponding pull request https://github.com/ExpediaInc/apiary-metastore-docker/pull/40

For templates, it just updates corresponding name references in template json, terraform uses rendered output to configure  task definition in AWS.


[DON'T MERGE] Pre-release

Pre for a pre release. Will publish once approved. Modified the makefile to include the tag

Published the pre release version


No longer working on latest steamos stable release

Hi,
Mangopeel is no longer working and throws an error on the latest steamos stable.
Best regards,
Manuel

I just tested it on my SteamDeck and everything is working fine. However, I found a problem earlier where launching the big screen mode on the desktop may cause the plugin to crash because it cannot find the configuration file for MangoApp. In this case, opening the plugin in game mode will result in an error, but restarting the system can solve the issue. I have fixed this problem and it will be included in the next version update.
Have you ever launched the big screen mode on the desktop and caused the plugin to throw an error?


pcli q dex simulate reports unclaimed arbs

Describe the bug
Running pcli q dex simulate gave the following output:
~ $ pcli q dex simulate 1000gm --into gn
Scanning blocks from last sync height 86484 to latest height 86484
[0s] ██████████████████████████████████████████████████       0/0       0/s ETA: 0s
507.771569gm => 506.96109gn via:
    Trace                                                                    Subprice
    183.161906gm =>                                            183.070325gn  1.000501gm/1gn
    200.100051gm =>                                            200gn         1.000501gm/1gn
    2.019324gm =>    6.441643penumbra =>                       2.013013gn    1.003136gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    551.244mgm =>    548.487mgn =>        1.755158penumbra =>  548.486mgn    1.005029gm/1gn
    551.244mgm =>    548.487mgn =>        1.755158penumbra =>  548.486mgn    1.005029gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
    2.02313gm =>     2.013014gn =>        6.441643penumbra =>  2.013013gn    1.005026gm/1gn
~ $

There is one thing wrong here and one thing that's suspicious.

This is reproducible (at least at the moment), implying that an arb involving the penumbra token persists across block boundaries, which shouldn't happen.
The exact same values appear over and over again, so either there are many of the exact same position (unlikely) or something is wrong with the execution (could this be #4283 @erwanor ?)

Can we check the log entries for this block height to see if the arb is erroring out and cancelling @conorsch ?

It seems kind of odd to ever perform this routing, since you lose gn in the process:
2.013014gn =>        6.441643penumbra =>  2.013013gn

It seems like this could have been caused by #4283 ?


Add minimal docs

We should have something on the website. People are searching for this in "Search" bar without result atm.

@MoOx Are PRs welcome on this or there is already some work-in-progress? If not, what about writing one using docusaurus on a separate repo maybe?

I guess the right thing to do would be to add docs in https://github.com/rescript-react-native/rescript-react-native.github.io

I didn't do anything yet & rescript-react-native itself is poorly document, when it is...


⚠ AGEG website (prod) has degraded performance

In 6c97be9, AGEG website (prod) (https://www.ageg.ca/) experienced degraded performance:

HTTP code: 200
Response time: 1716 ms

Resolved: AGEG website (prod) performance has improved in bd1f321.


Need better clearer image filter quality controls

(turning the discussion from https://github.com/flutter/engine/pull/24582 into a feature request)
Our image filter quality controls could be clearer and give developers better control.
Background
Currently the only way to specify image filter quality is by passing a FilterQuality enum value to Paint, ImageFilter.matrix, or TextureLayer (docs). The enum provides 4 values: none, low, medium, high. These options do not always behave in accordance with their names. For example, high is often worse than medium when images are scaled down.

Mipmapping is only used for medium with undocumented sampling algorithm. There's no way to choose the scale sampling separately from mipmap sampling.
Proposals
Simplify FilterQuality
Picking an enum value is quite simple. If the semantics of each value could be simplified the FilterQuality could serve as a simple way to choose quality for simple use-cases. Currently this enum isn't as simple as it could be due to the aforementioned "high" vs "medium" inconsistency. We can provide more clarity with fewer options while covering most use-cases.
The values with useful semantics are:

none - provides no quality enhancement, fast, useful for cases when the image is already pixel-perfect.
low - provides some quality enhancement cheaply.
medium - provides good quality.

The algorithm behind high is confusing as it's good when scaling up, but worse than medium when scaling down. We won't lose much if we removed this algorithm entirely.
What's left is to remap the enum value to the algorithms:

low - provides no quality enhancement, fast, useful for cases when the image is already pixel-perfect.
medium - provides some quality enhancement cheaply. This is the new default in the framework.
high - provides good quality.

none is deprecated and maps to low.
Add explicit sampling and mipmapping
For advanced use-cases we expose SkSamplingOptions, which can express more advanced situations.
From @flar

If I'd get rid of any of the names I'd probably get rid of "none" as it is just such a bad name. It implies that nothing will happen if taken out of context and it falls out of the spectrum of "low/med/hi". I might have named it "fastest" or "lowest" originally, ignoring whether 3 or 4 constants are useful for Flutter apps.

It would be helpful to include some down-scaling results for >0.5 When you go much below 0.5 then only mipmapping will help, but bicubic may show some reasonable results at less dramatic down-scales.

If we add the Sampling options then we could/should probably just leave FilterQuality alone and document that it is equivalent to Sampling(..., ...) and explain the conditions in which it is better or worse than the other choices.
If we're not going to expose Sampling, then it might make sense to simplify FilterQuality, but I'm not sure it is all that useful if we just document it better. Would you basically map the values to?

low - nearest neighbor
medium - bilinear
high - mipmap

If so, then that is a bit disruptive (everything just moves up a notch in the list) and would break all programs that specified a value manually.


Milestone 1 — Account Login & View Collections

Milestone Delivery Checklist

[x] The milestone-delivery-template.md has been copied and updated.
[x] The invoice form has been filled out for this milestone.
[x] This pull request is being made by the same account as the accepted application.
[x] In case of acceptance, the payment will be transferred to the EOS account name provided in the application.
[x] The delivery is according to the Guidelines for Milestone Deliverables.

Link to the application pull request: https://github.com/eosnetworkfoundation/grant-framework/pull/36 < please fill this in with the PR number of your application.
Note: A pull request has been submitted to update the project location to https://github.com/FACINGS/collection-manager

@larryk85, thank you for the feedback. We've fixed the docker command and added a bit of context and additional dev notes in the guide. The repo has been updated, and here is the specific commit: https://github.com/FACINGS/collection-manager/commit/3ded61a51597508a17fe523202c60497ebb0d388

@larryk85, thank you for the feedback. We've fixed the docker command and added a bit of context and additional dev notes in the guide. The repo has been updated, and here is the specific commit: FACINGS/collection-manager@3ded61a

Great, I can now get the docker based server up and running but it has a runtime error "ReferenceError: regeneratorRuntime is not defined", not sure why though as it appears that it is properly referenced in the yarn.lock as a dependency.

@larryk85 I'm having trouble reproducing the bug, are you able to provide any additional information, like a screenshot or a trace perhaps?

Still unable to reproduce; we've tried the following OS/browser combinations using Docker method without issue:
Windows 11 - Chrome, Edge, Firefox, Brave
OSX - Safari, Chrome, Firefox
Debian - Firefox, Safari

Still unable to reproduce; we've tried the following OS/browser combinations using Docker method without issue:
Windows 11 - Chrome, Edge, Firefox, Brave OSX - Safari, Chrome, Firefox Debian - Firefox, Safari

If you've ran it on all of those, then I'm going suspect issues on my aide

@larryk85 it looks like you aren't the only one seeing it. ) I set up my dev environment today on macOS and reproduced.
@ponglio is working on a fix for this now.

@larryk85 it looks like you aren't the only one seeing it. ) I set up my dev environment today on macOS and reproduced.
@ponglio is working on a fix for this now.

Ah fantastic, at least I'm not crazy.  Thanks for continuing to try it out.

Docker works fine here, as does regular
Milestone deliverables look good 👍

Some minor comments when exploring the UI

Anchor app ID only accepts EOSIO name type

Templates could have img blank, currently when undefined, throws an error:

Test with: http://localhost:3001/collections/pomelo

upstream image response failed for https://ipfs.ledgerwise.io/ipfs/undefined 400

It would be highly recommended to make this library using Typescript instead of vanilla Javascript, at the moment the complexity is relatively low. Still, as more features are added, the code base will be unmanageable without a type-enforced language like Typescript.

Overall this current milestone looks to be completed 👍


Postbuild script in package.json does not work

Subj.
Thanks for TSTL!
Anyway, I've added "prebuild" and "postbuild" scripts (with simple "echo stuff") to package.json. When npm run build is called, prebuild is triggered just fine (prints into console). However, postbuild script doesn't trigger automatically unless explicitly called via npm run postscript by the user.
Am I doing something wrong?
Update: Postbuild seems to not work if emit throws any errors (even if these errors do not prevent emit in any way). Is this the correct behavior?
(I generally get errors due to "undefined globals" because I have no typescript definition files for my Lua environment, these do not influence post-emit files in any way for obvious reasons)

Update: Postbuild seems to not work if emit throws any errors (even if these errors do not prevent emit in any way). Is this the correct behavior?
(I generally get errors due to "undefined globals" because I have no typescript definition files for my Lua environment, these do not influence post-emit files in any way for obvious reasons)

Errors (not warnings) will return a failure exit code, so that if you run tstl as CLI script, your operation fails when there are errors in the compilation. This is the same as basically every CLI tool (pretty sure tsc will behave exactly the same here).
So yeah, you'll have to fix your errors by adding declaration files for your lua environment.


ValueError in the tutorial on Colab environment

Hello
The ValueError error Insufficient elements in branch_graphs[0].outputs. is found in both Neural Graph Learning tutorials (sentiment and document classification).
Both happen during the training of graph_reg_model.fit() process.
The error messages are shown below, I think it is due to the same issue.

Graph regularization for document classification using natural graphs

Epoch 1/100
      1/Unknown - 0s 303ms/step

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-20-0c7d19de6181> in <module>()
     10     loss='sparse_categorical_crossentropy',
     11     metrics=['accuracy'])
---> 12 graph_reg_model.fit(train_dataset, epochs=HPARAMS.train_epochs, verbose=1)

25 frames

/tensorflow-2.1.0/python3.6/tensorflow_core/python/ops/cond_v2.py in _make_indexed_slices_indices_types_match(op_type, branch_graphs)
    650                      "Expected: %i\n"
    651                      "Actual: %i" %
--> 652                      (current_index, len(branch_graphs[0].outputs)))
    653
    654   # Cast indices with mismatching types to int64.

ValueError: Insufficient elements in branch_graphs[0].outputs.
Expected: 11
Actual: 10

Graph regularization for sentiment classification using synthesized graphs

Epoch 1/10
      1/Unknown - 2s 2s/step

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-30-e49eed0ffe51> in <module>()
      3     validation_data=validation_dataset,
      4     epochs=HPARAMS.train_epochs,
----> 5     verbose=1)

25 frames

/tensorflow-2.1.0/python3.6/tensorflow_core/python/ops/cond_v2.py in _make_indexed_slices_indices_types_match(op_type, branch_graphs)
    650                      "Expected: %i\n"
    651                      "Actual: %i" %
--> 652                      (current_index, len(branch_graphs[0].outputs)))
    653
    654   # Cast indices with mismatching types to int64.

ValueError: Insufficient elements in branch_graphs[0].outputs.
Expected: 18
Actual: 17

Thanks

Thanks for raising the issue! This is caused by an underlying bug in TensorFlow, the fix for which is on master but not in TensorFlow 2.1.0-rc1/2.1.0-rc2. Since the NSL tutorials currently seem to be using 2.1.0-rc1, they are impacted by this bug.
We have reached out to the TensorFlow team on how to work around this and will get back to you once we hear from them.

Hi, I'm having the same problem in Colab, and I can't install the 2.2.x version. Do you know how can I do it in colab? the latest version available with pip is 2.1...

Hi @basque21, both the NSL graph tutorials should be working and use a nightly build of TF 2.2.x. In particular, they use the following command:
pip install --quiet tf-nightly==2.2.0.dev20200119
Hope this helps.

@arjung
Can you please reconfirm the version # ?
ERROR: No matching distribution found for tf-nightly==2.2.0.dev20200119

@vinayprabhu , thanks for your comment. Unfortunately that version no longer exists on PyPi. Our tutorials for graph regularization are currently using the following nightly build version: 2.2.0.dev20200218.
This version will be subject to change until the underlying TensorFlow bug is fixed in TF 2.2.0.

I upgraded to 2.2.0rc1 and i get this error when the fit of the base model is called:
/python3.7/site-packages/tensorflow/python/keras/engine/input_spec.py:216 assert_input_compatibility
' but received input with shape ' + str(shape))
ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape to have value 1433 but received input with shape [None, 1]

Which nightly version is currently being used for your tutorials for graph regularization?
ERROR: No matching distribution found for tf-nightly==2.2.0.dev20200218

Thanks @basirshariat and @aczw900! We realized that the nightly pinned versions are on PyPi only for 1 month. So, we updated our graph regularization tutorials in https://github.com/tensorflow/neural-structured-learning/commit/f4b302c0e00c9f90ee93393b5c7bfbb715bc929d to use TF 2.0.1, which is a stable version.
We are actively looking into getting this addressed soon for TF 2.2, which is still undergoing development.

This should no longer be an issue since TF 2.2.0 has been released. Sorry about the version complications, things will be much simpler now.
https://github.com/tensorflow/neural-structured-learning/commit/edead04aa3be59f07baea52fc2cf22c320cdaff5 updates the neural graph learning tutorials to use the default TF version in colab.


Model/Controller Override

Is there a way for generating models, controllers as base classes and provide the related inherited classes?
I explain my doubt:

I generate the full scaffold
I change some stuff, like required fields or something else in the generated classes
I make a small change in the db (for example I add a new column in a table)
I regenerate the scaffold
I lost the previous changes I applied to the generated files

So maybe a way of mantaining changes upon generations should be provided.

@sbolognini No. currently there is no way to do this. How generator work is, it gets templates and fields OR if you are generating from the table, then it detects new fields added in the table and generates CRUD for that again.
But it can not detect your manual changes in your existing files. I can keep it in the future roadmap.


concurrency: improve logging when waiting on threads

use thread name instead of thread-ident
fix lookup of frame when waiting on Futures
find a useful frame, non-threading-related when reporting hanging Futures

I'd still like to have the thread's name, to be able to search for it teka threads...


Web UI doesn't reuse inflight template requests

STR:

Go to a user's page
Open the devtools Network pane
Scroll all the way to the bottom
Note how there's a ton of requests for activity-client.jade.js

This is incredibly inefficient. We need to detect that these requests are already in-flight and reuse the existing request.

I thinks is related with this: pump.js#L497 and view.js#L225, because when the user scroll down fire, scroll more and fire again, and if the request is slow the user will be scroll up and down again, makes the request again.
I think exist better option than setInterval for that, but also should be detect if exist similar request for template

The commit 92e9f05 will fix this issue.
But the infinite scroll has other impact in performance with current behavior (better with $(window).on('scroll'..)), but is other issue


How about all lowercase installation directories?

On Unix, it is quite common to keep directory names all lowercase. Header files of modules are, however, installed in directories irtk/Common et al., i.e., mixing lowercase with CamelCase. It should be either IRTK/Common or irtk/common. For Unix, I prefer the latter. On Windows, I would actually choose the first. Given that NTFS is not case sensitive (at least not normally...), this wouldn't make a difference. But if a common case should be chosen for all platforms, I vote for all lowercase. Not saying that I am not open to use uppercase instead. But if we do use upper case letters, then let's use IRTK instead in directory names as well as library names (i.e., libIRTKCommon.so).

I don't have a strong stance on one proposal or the other, since appropriate usage of CMake targets will render this cosmetic issue transparent to the user. A few things I'd like to point out:

The header files should not be installed blindly under /usr/include considering the large volume of them. Hence the need for a subdirectory.
Choice of whether the format should be lowercase or camelcase does not matter much in our case. It would matter if we were using namespaced includes, for instance #include <irtk/$MODULE/$HEADER>
The install path and naming of the CMake package files will matter, depending on whether we want the API to be find_package(IRTK COMPONENTS Common) or find_package(irtk COMPONENTS common).

Choice of whether the format should be lowercase or camelcase does not matter much in our case. It would matter if we were using namespaced includes, for instance #include <irtk/$MODULE/$HEADER>

That's my point. If headers are installed in a subdirectory, they should be included using such "namespaced" includes.

The install path and naming of the CMake package files will matter, depending on whether we want the API to be find_package(IRTK COMPONENTS Common) or find_package(irtk COMPONENTS common).

The capitalisation of the module name does in fact not matter to CMake. This you have to handle in your package file yourself. It's easy to just convert all module names to lowercase then so a user can capitalise it as they wish. Only the package name (and directory containing the package configuration file) matters to some degree.
I vote for find_package(IRTK) because it's an acronym and referred to it as "IRTK" in texts. Even in this case you can have a irtk-config.cmake file, but I would indeed choose IRTKConfig.cmake given the CamelCase we use for source files (incl. CMakeLists).

Also, it would be common practice to call all variables set by a package configuration file as _VARIABLE, where the capitalisation of  should be identical to the find_package() call. This was not so in early CMake days, but for "modern" CMake.

After having had a look at many of the refactored CMake 3 Find modules, it seems CMake developers now (i.e., since version 3) made the choice to always capitalise the package name in the variable name prefix no matter how the Find module is called. So I guess that's what "modern" CMake prefers.


Improve isolation of users editing data in the application

For edit flows, the VOD Subtitle Application is a single user.
Right now, intermediate edits for subtitles are stored in the MIE data plane as operator results (via the front end calling MIE storage APIs).  MIE doesn't provide any locking mechanism outside of workflow executions (i.e. only one workflow can execute on the same asset at a given time).  Since edits occur outside a workflow, the application is implementing a crude locking mechanism by blocking edits while a workflow is running on an asset.
Other possible solutions:

pessimistic locking on workflows (either by starting a workflow for editing or implementing a separate locking system).  Pessimistic locks would need to timeout eventually to handle abandonment from web app users.  We have the wait part of this available by using the Wait operator.  But, we would need to be able to implement a reasonable timeout mechanism.  Or, just create an entirely separate lock service for MIE objects.
optimistic locking on edits - versioning is checked on save of edits and fail if a new version was added.  This could be implemented by storing intermediate edits in a separate back-end table with a version attribute and update constraint.
merge edits - show edits from multiple users working on a document at the same time. Not sure how to implement this.

Step functions offers another possible solution for locking assets:
https://aws.amazon.com/blogs/compute/controlling-concurrency-in-distributed-systems-using-aws-step-functions/