Safe I/O 2 - Electric Boogaloo!

Must be merged with

https://github.com/R2Northstar/NorthstarMods/pull/595

Safe I/O
This PR allows Squirrel isolated access to a limited set of files, by having file names defined in the mod.json file.
It also adds many safety precautions to prevent malicious use, even if a malicious actor gains complete access to the Squirrel VM, to minimize damage (e.g. a 50,000 character limit per file, a forced JSON file extension, and disallowing access to files not defined in the mod.json file.)

The character limit and forced JSON file extension have been removed.

"like you could fill an HDD with files but likeehhit seems like a niche issue that you'd likenotice" -BobTheBob
(In addition, you'd immediately know which mod is problematic, since the saveData is separated into the mod folders)
Also, since the data is no longer necessarily in JSON (and strings cannot contain null characters anyways, so it's not like you can write e.g. an executable), the JSON extension is no longer enforced.
Documentation
Squirrel Functions:
void function NSSaveFile( string file, string data ) // writes the table as JSON to the specified file. File has to be defined in the mod.json of your mod for this to work.
string function NSLoadFile( string file ) // reads the specified JSON file and returns it as a table. File has to be defined in the mod.json of your mod for this to work.

To allow the squirrel VM to access a file, in the mod.json, add an array named "SaveFiles" and add to there all of the names of the files you wish to access. You cannot use folders or non-ASCII characters.
Example:
{
    // mod.json stuff...
    "SaveFiles": [
        "saveFile1.txt", // valid
        "saveFile1.json", // also valid
        "saves/saveFile2", // invalid
        "..\\..\\eladNLG\\muteMod\\saveFile3", // also invalid
    ]
}

Then, use NSSaveFile and NSLoadFile to save and load text files. The data persists between restarts, so this can be useful for saving stuff you want the client/server to save locally, like how many kills the player has gained over time.
Example:
global function Mod_Init
global function MutePlayer

table mutedPlayersData

void function Mod_Init()
{
    mutedPlayersData = DecodeJSON( NSLoadFile( "EladNLG.MuteMod", "eladNLG_muteMod_mutedPlayers" ) )
    AddClientCommandCallback( "mute", MutePlayer )
}

void function MutePlayer( entity player, array<string> args )
{
    if (!PlayerAllowedToMute(player))
        return false;
    if (args.len() < 1)
        return true;
    entity playerToMute = GetPlayerByName(args[0])

    // mute the player
    if (!("playerList" in mutedPlayersData))
        mutedPlayersData.playerList <- {}

    mutedPlayersData.playerList[playerToMute.GetUID()] <- true

    // save the file
    NSSaveFile( "muted_players", EncodeJSON( mutedPlayersData ) )
}

Use cases

Making a client-side stats mod that saves it's data locally, with stuff like match history.
TF/Roguelike, namely saving armor instances, achievements, etc.

It's basically better as a "medium-size database(?)" Stuff which doesn't fit in a ConVar, but doesn't warrant a full database.
Reasons
Using ConVars for saving stuff, especially settings, just doesn't work.
It resets each time you boot up vanilla, the length of the ConVar contents is very limited, and it does not scale well AT ALL if you want to save data on multiple players (for example, a mod that mutes players. After muting about ~40 players, the ConVar will not save all of the muted players, and some will be discarded - and though the same problem would exist with this - this would only happen after ~100,000 players, which is way more than you'd practically need. AND if we wish, we can raise the limit even higher.)
TODO

Re-add JSON saving as separate functions (Namely NSSaveJSONFile & NSLoadJSONFile)
Code cleanup, may be messy I think

Diffs seem kinda fucked? like the project filters are weird and stuff. Is this branch based off of another branch?

Diffs seem kinda fucked? like the project filters are weird and stuff. Is this branch based off of another branch?

no. visual studio sucks. working on fixing this rn.

I don't think I'm fully up-to-date, did Emma's thing about detecting which mod a Squirrel script is from get merged yet? ^^
Cause last time we had the discussion about safe I/O I remember it boiling down to that safe I/O should be a key-value store where each NS mod can only access their own store.

Oh yeah, turns out it was merged #366

I don't think I'm fully up-to-date, did Emma's thing about detecting which mod a Squirrel script is from get merged yet? ^^
Cause last time we had the discussion about safe I/O I remember it boiling down to that safe I/O should be a key-value store where each NS mod can only access their own store.

Yeah.
It already auto-detects the current mod and stores accordingly (the mod param is gone).

It already auto-detects the current mod and stores accordingly (the mod param is gone).

Awesome :D
Is there a reason we still allow for the mod naming the store file? At least the way I see it is that if we limit it to a single file, we could get rid of all the logic around ensuring correct file path and specifying allowed files mod.json. ^^

It already auto-detects the current mod and stores accordingly (the mod param is gone).

Awesome :D
Is there a reason we still allow for the mod naming the store file? At least the way I see it is that if we limit it to a single file, we could get rid of all the logic around ensuring correct file path and specifying allowed files mod.json. ^^

Shit to use. Imagine having to parse a giant file, it would be a nightmare to program. Additionally, if a mod saves a lot of data, each time it would load/save that data would hitch the game for a long while (since the ENTIRE FILE has to be rewritten, and doing that in a separate thread is something beyond my skill level, not to mention it would, in my opinion, over-complicate the process of using Safe I/O). Allowing mods to separate files means that they can spread these load times over a longer period, since instead of having 1 50MB file, you can load 10 5MB files separately, as needed

do you happen to have a simple mod that could be used to test this?

There was a discussion on Discord about this PR the other day but given that it was in #general it's kinda difficult to find it. To recap, my stance on safe I/O is that it should just be a simple key value store API, where modders can call like persistent_write(key, value) and persistent_read(key) or something along the lines.
The key-value store would be isolated per mod so that mod authors won't have to deal with accidentally using same key as another mod.
Key value store in turn would be able to hold various data types including tables which would allow for nesting datastructures.
The main argument that was made for allowing mod author to specify destination file was that it would be difficult to parse a single large file, however (at least to me) it seems like it shouldn't really make a difference whether you use
void function NSSaveFile( string file, string data )
string function NSLoadFile( string file )

with
achievements.json
{
  "achievement1": true,
  "achievement2": false
}

armor.json
[
  {
    "chestplate": {
      "durability": 5,
      "title": "your mom"
    },
  },
  {
    "boots": {
      "durability": 3,
      "extras": [
        "triple jump",
        "idk"
      ]
    }
  }
]

or e.g.
void function NSSaveKey( string key, string data )
string function NSLoadKey( string key )

with
Author_Mod.json
{
  "achievements": {
    "achievement1": true,
    "achievement2": false
  },
  "armor": [
    {
      "chestplate": {
        "durability": 5,
        "title": "your mom"
      }
    },
    {
      "boots": {
        "durability": 3,
        "extras": [
          "triple jump",
          "idk"
        ]
      }
    }
  ]
}

shouldn't matter to the code at least...

There was a discussion on Discord about this PR the other day but given that it was in #general it's kinda difficult to find it. To recap, my stance on safe I/O is that it should just be a simple key value store API, where modders can call like persistent_write(key, value) and persistent_read(key) or something along the lines.
The key-value store would be isolated per mod so that mod authors won't have to deal with accidentally using same key as another mod.
Key value store in turn would be able to hold various data types including tables which would allow for nesting datastructures.
The main argument that was made for allowing mod author to specify destination file was that it would be difficult to parse a single large file, however (at least to me) it seems like it shouldn't really make a difference whether you use
void function NSSaveFile( string file, string data )
string function NSLoadFile( string file )

with
achievements.json
{
  "achievement1": true,
  "achievement2": false
}

armor.json
[
  {
    "chestplate": {
      "durability": 5,
      "title": "your mom"
    },
  },
  {
    "boots": {
      "durability": 3,
      "extras": [
        "triple jump",
        "idk"
      ]
    }
  }
]

or e.g.
void function NSSaveKey( string key, string data )
string function NSLoadKey( string key )

with
Author_Mod.json
{
  "achievements": {
    "achievement1": true,
    "achievement2": false
  },
  "armor": [
    {
      "chestplate": {
        "durability": 5,
        "title": "your mom"
      }
    },
    {
      "boots": {
        "durability": 3,
        "extras": [
          "triple jump",
          "idk"
        ]
      }
    }
  ]
}

shouldn't matter to the code at least...

definitely disagree imo, this kills any potential for modders to output to preexisting file formats (non-json), directory structures, importing files from other things etc, and would be a pain for things like per-player information stores for instance, where having to save and load everything into one file would be terrible for performance, readability etc

if modders want to store everything in one json file they can choose to do that, that doesn't mean restricting them to json only or single file only or whatever, limiting things like that just seems like a bad idea overall when one of the core purposes of this project is to make the game super moddable, imo

definitely disagree imo, this kills any potential for modders to output to preexisting file formats (non-json), directory structures, importing files from other things etc,

I haven't seen a use-case for non-JSON yet. Writing a custom parser in Squirrel seems like effort to me ngl. And like most people will use Squirrel Tables <-> JSON, so a lot of mods will just have the same duplicated code of
load string from file
convert to Squirrel table
use table
...
use table
convert to JSON
save string to file

so might as well combine loading and (de)serializing to Squirrel object into a single step :P
Importing files from other mods is probably the biggest argument against single per mod key value store, though the way I see it is that in terms of backwards compatibility on API change, it's always easier to ease restrictions than it is to tighten them.
So should we find that restrictions are to tight, we can always reduce them later.

[...] and would be a pain for things like per-player information stores for instance, where having to save and load everything into one file would be terrible for performance, readability etc

This is also a good point and something I discussed on Discord but forgot to mention here. Basically my train of thought was to have single simple API for modders. How stuff is actually persisted is up to NortharLauncher to decide (this also helps with "upgrading mods" from within Northstar should our API change, e.g. we change location where we store files).
So in terms of performance, it would then be up to Northstar to support efficient implementations by e.g. sharding the JSON over multiple files etc. In that regard we are probably limited by whatever RapidJSON provides. As for readability, in general persistent store of a mod shouldn't really be accessed by a human user anyway...

But again, that's just my take ^^

so might as well combine loading and (de)serializing to Squirrel object into a single step :P
we can have a helper/wrapper function for this but like, loading and deserializing is still a one liner, it's not like we're taking off much boilerplate by making everything json

So in terms of performance, it would then be up to Northstar to support efficient implementations by e.g. sharding the JSON over multiple files etc. In that regard we are probably limited by whatever RapidJSON provides. As for readability, in general persistent store of a mod shouldn't really be accessed by a human user anyway...

at this point you're making your internal implementation overcomplex, modders are programmers, they can handle writing to different files i'm sure and in most cases performance i'm sure won't be a concern for modders since they won't be saving much in files anyway, but in the cases where modders are saving alot of data, it's much easier for us to take a hands off approach and let them deal with it, and they'll probably be able to get better performance than a one-size-fits all solution anyway

tbh i'd be in favour of removing the restriction of having mods have to define all their files explicitly and just giving them a directory they can create whatever files they want in, would cover the most usecases (especially in the case of playerdata, which i imagine this will definitely be used for and should be a usecase we try to design around)

I'm just gonna post my general opinion on forced JSON:
The problem with forced JSON is that

the code for converting to a string from a table is a confusing mess that cannot be easily understood without explicit explanation, at least in my opinion
it forces people into a certain format (e.g. by forcing JSON, we would be unable to import Icepick gauntlets easily, since they use a custom parser and format)
the same problem happens with forcing mods to use a single file - people would have to manually make a valid JSON with all of their gauntlets.

Even worse, let's say we make a Forge-style editor - where save sharing is fundamental - that just became a whole lot harder.
Also, let's say someone's save got corrupted - it'll be much harder for a modder to look through and find the issue when there's one single file - since it's harder to read one large file than multiple smaller ones.
As of right now (I forgot to update the doumentation), there are 2 versions of each function:
NSSaveFile / NSLoadFile (takes string for data)
&
NSSaveJSONFile / NSLoadJSONFile (takes a table for data, auto-converts to/from JSON)
These should cover all possible use cases.
I think that the JSON versions could be converted into squirrel helper functions if the code is too confusing - though string memory could be a problem then maybe - so I'd rather to keep the JSON version in C++.

I think what we are seeing here is two different usecases that would best be covered by two different implementations.
I.e. basic persistent store using keyvalues. This is your stuff like, saving list of admin UIDs in FSU or your custom HUD from HUD revamp (maybe even editable via modsettings? :eyes:)
and then there's your stuff like you mentioned with Forge-clone and gauntlet speedrun stuff which certainly needs individual file read/write.

I think what we are seeing here is two different usecases that would best be covered by two different implementations.
I.e. basic persistent store using keyvalues. This is your stuff like, saving list of admin UIDs in FSU or your custom HUD from HUD revamp (maybe even editable via modsettings? 👀)
and then there's your stuff like you mentioned with Forge-clone and gauntlet speedrun stuff which certainly needs individual file read/write.

which is why we can (and tbh, should, @GeckoEidechse ) make both functions available. Everyone has their own use case - we should be able to support it.

Updated Documentation:
void function NSSaveFile( string file, string data )

Saves a file. file must be a valid file name, and not access any directories.
Overwrites if the file exists already - otherwise creates it.
Throws an error if:

The file could not be created/written to.
The file name is invalid.
The function was called not from a file belonging to a mod.
The file contents contained non-ASCII characters.

string function NSLoadFile( string file )

Loads a file and returns it's contents. file must be a valid file name, and not access any directories.
Throws an error if:

The file could not be read from.
The file name is invalid.
The function was called not from a file belonging to a mod.

void function NSSaveJSONFile( string file, table data )

Converts a table into JSON and then saves it. file must be a valid file name, and not access any directories.
Overwrites if the file exists already - otherwise creates it.
table function NSLoadJSONFile( string file )

Loads a JSON file, and converts it into a table. file must be a valid file name, and not access any directories.
Throws an error if:

The file could not be read from.
The file name is invalid.
The file could not be converted into a table (The contents are not valid JSON).
The function was called not from a file belonging to a mod.

bool function NSDeleteFile( string file )

Deletes a file. file must be a valid file name, and not access any directories.
Returns true if the file was deleted successfully, false otherwise.
Throws an error if:

The file name is invalid.

bool function NSDoesFileExist( string file )

Loads a file.
Returns true if the file loaded successfully, false otherwise.
Throws an error if:

The file name is invalid.

Idk how large to make the size cap
(Note: size cap is not hard, we really don't mind if mods go like a few MB over, they'll just not be able to write anything until they go back below the cap.

I think that we need to decide on a size limit for mods, now that that's implemented
I'm thinking somewhere between the 10MB to 250MB range.
any ideas?

I think that we need to decide on a size limit for mods, now that that's implemented

Size limit on the entire mod or just safe i/o ?
Asking because adding a size limit on the entire mod will heavily limit map mods with custom textures and models.

I think that we need to decide on a size limit for mods, now that that's implemented

Size limit on the entire mod or just safe i/o ?
Asking because adding a size limit on the entire mod will heavily limit map mods with custom textures and models.

Just safe i/o data.

(Man I need to get better at wording shit)

any ideas?

I'd say somewhere around 10MB. If you ever go above that with a json file you're probably rockstar and should seek help.

After internal discussion:
A folder limit of 50MB was decided.
This limit is per mod, not per file.
Though might be unnecessary (said by BobTheBob), I think it wouldn't hurt (and he doesn't mind).
The PR, is now, functionality-wise - done.
Unless there's some big refactor, there shouldn't be a need for changes.

Must be merged with NorthstarMods #595.
File saving is now asynchronous.
No more game hitching :D

Testing!
For your convenience - a mod to test Safe I/O quickly and easily.
Do note, for squirrel-really-sucks reasons, that the game will hitch for a while during testing.
This should only take ~15s tho.
how 🤔

compile the PR
Paste EladNLG.SafeIOTest.zip into your mods folder
Boot up the game, and run: script_ui thread TestSafeIO()

Sorry for the technical difficulties, I am bad at git.
Thank god this is getting squashed anyways,

Testing!
(update)
For your convenience - a mod to test Safe I/O quickly and easily.
Do note, for squirrel-really-sucks reasons, that the game will hitch for a while during testing.
This should only take ~15s tho.
how 🤔

Compile the PR or download build from CI
Paste EladNLG.SafeIOTest.zip into your mods folder
Boot up the game, and run: script_ui thread TestSafeIO()

-		g_pSquirrel<context>->pushinteger(
-			sqvm,
-			(int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist
+		g_pSquirrel<context>->pushinteger(sqvm,
+										  (int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist

I'm not doing this @GeckoEidechse

-		g_pSquirrel<context>->pushinteger(
-			sqvm,
-			(int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist
+		g_pSquirrel<context>->pushinteger(sqvm,
+										  (int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist

I'm not doing this @GeckoEidechse

no way ...

-		g_pSquirrel<context>->pushinteger(
-			sqvm,
-			(int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist
+		g_pSquirrel<context>->pushinteger(sqvm,
+										  (int)(fs::file_size(dir / fileName) / 1024)); // throws if file does not exist

I'm not doing this @GeckoEidechse

Just do
// clang-format off
THE LINES WITH ISSUE HERE
// clang-format on

then

already fixed
I am just complaining about clang-format

skipping code review for this PR cause I don't feel qualified to do proper code review on this + I still don't agree with the design decision (which is totally fine btw, enough other contributors seem to be fine with it ^^)

I still don't agree with the design decision (which is totally fine btw, enough other contributors seem to be fine with it ^^)

Which design decision?

I still don't agree with the design decision (which is totally fine btw, enough other contributors seem to be fine with it ^^)

Which design decision?

Full file access vs key-value store. Again I'm just one person's opinion and others are fine and/or prefer the current implementation, so PR will be merged upon approval accordingly regardless of my opinion :P

Another small thing
thinking about removing the native SaveJSON func and replacing it with a wrapper instead for consistency in code.
It's faster to keep it in native, i guess, but since we can't decode tables asynchronously (accessing SQTables async is a bad idea), it means the code could stay inconsistent
would love opinions about this

Additionally, I wonder if letting mods access subfolders is a good idea, since after the incident Safe I/O no longer checks if the file being accessed is in a subfolder.
This could be something we support, meaning:

Small modifications to allow checking subfolders (namely NSGetAllFiles)
Potentially an issue with @BobTheBob9's plans to put convar cfgs in /save_data/Author.Mod/cfg/
no real use for this(?)

I don't see any real disadvantage to this otherwise?

Potentially an issue with @BobTheBob9's plans to put convar cfgs in /save_data/Author.Mod/cfg/
Nah, if a mod wants to write a cfg to their folder, who are we to stop them? There isnt rly much point in them doing it, but I see no reason to stop them.
If a mod is writing to other mod's cfgs and breaking stuff then its simply a malicious mod and should just not be installed.

As far as I'm concerned the "safe" bit of safe IO is protecting the system, not other mods.

no real use for this(?)
Access to subfolders is always a nice thing to have, for organisational reasons

If a mod is writing to other mod's cfgs and breaking stuff then its simply a malicious mod and should just not be installed.

this should be impossible - every mod is contained within it's own folder :)

this should be impossible - every mod is contained within it's own folder :)

Sounds good then

UPDATE:
If you receive a Has to be called from a mod function! error whilst calling the functions from your own mod, callingmodfunc seems to be broken, and that seems to not be a fault of this PR :(

we do be waiting tho 🕔

i sure hope this doesn't fuck up :)

Kinda want someone with decent C++ experience like @BobTheBob9 or @pg9182 or similar to look at it

Kinda want someone with decent C++ experience like @BobTheBob9 or @pg9182 or similar to look at it ^^

>:(

Skimming over it in 2 seconds I didn't notice a mention of where Safe I/O files are stored. Maybe mention it in the PR description, so that whoever does ModdingDocs PR can just copy/paste it ^^

was already talked about - they're saved in <profile>/saves/<mod directory>.

I think it would be really cool if modsettings and safe IO were to be released in the same update (they both are too large for a patch release and delaying either one much longer is gonna really suck honestly)

Also @pg9182 just a reminder that you requested your own review on this 3 weeks ago, in case you forgot.
Your review on this PR would be really nice to have

I think it would be really cool if modsettings and safe IO were to be released in the same update (they both are too large for a patch release and delaying either one much longer is gonna really suck honestly)

We can always just have two minor (in the semver sense) releases back-to-back, i.e v1.15 one week and v1.16 the week after. Based on past experiences smaller releases are better as I cannot rely on contributors to help me debug an issue on a broken release so smaller release means less commits to try between to figure out which one introduced a regression...

@catornot made a safe io plugin, although not released as far as i know.
My personal view on this is to have new features like this in plugins and reimplemented features ( like bots ) in launcher.

@catornot made a safe io plugin, although not released as far as i know.

They did, yeah. However it is an inferior version, afaik you have to like, poll the plugin every frame to know if a task is finished and stuff due to plugins limitations. (No hate to catornot, they made it in a couple of hours it's just a limitation of plugins v2)

My personal view on this is to have new features like this in plugins and reimplemented features ( like bots ) in launcher.

I would agree, but plugins is still a bit half-baked atm, both in functionality and in mod manager support. Also in this case I would strongly recommend shipping a plugin like this with northstar or implementing in launcher, because of the number of mods that will use it.
Imo this falls under the same sort of category as ModSettings and squirrel http, where they probably should be a plugin/mod, but because of how much they are used it's easier to ship them with northstar in some capacity and not have tickets caused by missing dependencies.

Imo this falls under the same sort of category as ModSettings and squirrel http, where they probably should be a plugin/mod, but because of how much they are used it's easier to ship them with northstar in some capacity and not have tickets caused by missing dependencies.

We can still include plugins in a northstar install like discord rpc.
I think sensitive additions like HTTP and I/O should be plugins because that allows easy disabling without launch args & custom implementations.
Also more modularity is preferable imo


[RFC] Kubernetes CRD UI plugins

Need
Many modern infrastructure tools use Kubernetes as a control plane, examples include:
argo
istio
crossplane
Creating plugins for these tools would be beneficial to the users of Backstage. However, to use these tools, each one would need to create a separate plugin backend, increasing duplicated code (Kubernetes clients / auth / fan-out requests) and time to launch.
Proposal
The Backstage community should create patterns for plugins based on Kubernetes Custom Resources. This would include:
Creating a Kubernetes Backend Client that different plugins could use
Plugins could then fetch their data via the Kubernetes backend plugin and become frontend-only plugins
Create a template for Kubernetes Custom Resource-based plugins to speed up the initial development of these plugins

Alternatives
Each service could implement its own backend, introducing disparate features/interfaces for interacting with Kubernetes.
Risks
Each plugin could need access to different Kubernetes clusters increasing the complexity of configuring the Kubernetes backend and reducing performance.

(co-authored with @chinigo)
At VMware we had 3 different teams building plugins for visualizing CRDs related to their domains of expertise, and ended up building a similar kind of client library. We found those teams had some common needs that this library supported:

Querying for all objects of a given type (potentially constrained to a label selector or namespace) -- this has since been at least partially addressed by the new /resources/custom/query endpoint
Querying for owners/ancestors of a given object via ownerReferences
Auto-refreshing/real-time updates to the set of objects
Showing “status” on objects as an aggregate of various conditions

A natural model here (given the capabilities of the kubernetes-backend API at the time) was a kind of Repository pattern exposing an ORM: a react hook exposed a Repository which would make a giant upfront query against @backstage/plugin-kubernetes-backend, load it into the browser’s memory and opaquely refresh it on an interval. The repository exposed methods to filter that dataset by type or relationships.
These two components — Repository and ORM — could be shipped separately or combined together. This RFC sounds like it contemplates something like what we've developed with our Repository.
The Repository is a good place to:

Centralize the request/response handling against the backend. This part is tightly coupled to the wire format specified in @backstage/plugin-kubernetes-backend.
Present a clean API for accessing objects that's unrelated to the wire format (e.g. client code can rely on repository.ofType(Pod) instead of response.items[].resources[type="pods"].resources).
Cache data between responses and provide fast, in-memory access. We structured our implementation so that most accessors return an in-memory result in O(1) time.

The ORM is a good place to:

Allow consumers of a client library to be able to inject some business logic for the domain of their particular CRDs.
Define relationships, including those expressed in ways other than ownerReferences (tools like kapp and cartographer make use of certain conventions around labels and annotations that help to establish relationships between objects, sometimes even objects on different clusters)
Present an aggregate “status” from the various conditions known to occur on a given resource type.
Integrate detailed CRD definitions using the @kubernetes-models project (and allow third-party typedefs using the machinery in that library).
Allow client code to traverse a typesafe object graph naturally via references, e.g. pod.replicaSet.deployment.spec.selector.

#12950 adds a CRD UI plugin to the marketplace, with its own backend plugin with a bespoke CRD-fetching function. I wonder if @rannox considered using the existing kubernetes-backend plugin to perform these queries? If so, why did they choose not to?

@mclarke47 last I recall you were planning to make a PR with something like the "Present a clean API for accessing objects" capabilities described in the "Repository" part of my comment here -- am I remembering this correctly?


Windows WSL2 implementation with Cloud GPU

I want to use Replicate to deploy custom models for inference, but I'm Windows based. I read the documentation and saw this is possible with WSL2, but it mentions that you must have a GPU, install GPU drivers, etc. If I want to use Lambda Labs cloud GPUs is this still possible?

Hi @InsightfulFuture. We have a tutorial for pushing models with Lambda Labs here: https://replicate.com/docs/guides/get-a-gpu-machine. You should be able to SSH into a cloud GPU instance from WSL2 and push models to Replicate that way.


Fast Visibility By Circle fails with Geographic data

Fast Visibility By Circle (data_management\test\test_publishable_tasks\TestFastVisibilityByCircle_SingleInput.py ) fails when input elevation data is Geographic. The tool test fails as the Fast Visibility By Circle Tool fails when input elevation data is in Geographic coordinates. The tool should check inputs and change option as needed with warnings.
To test:

Download latest repo
Set up repo test software as in main README
Get test data as in main README
cd data_management\test
ant test_publishable_tasks... this should give an error in test_fv_by_circle

test_fv_by_circle:
     [exec] Starting Test: Fast Visibility By Circle - Single input circle
     [exec] ERROR: Executing: FastVisibilityByCircle C:\Users\matt2542\Documents\GitHub\solutions-geoprocessing-toolbox\data_management\data\geodatabases\PublishableTasksData.gdb\FVBC_InputCircle 5 http://afmcloud.esri.c
om/arcgis/rest/services/Environment/D_DigitalTerrainModel/ImageServer C:\Users\matt2542\Documents\GitHub\solutions-geoprocessing-toolbox\data_management\data\geodatabases\scratch.gdb\FVBCircle_1_vshed
     [exec] Start Time: Mon Feb 02 13:45:08 2015
     [exec] Executing (Calculate Cell Size): CalculateValue CalcCellSize(r"C:\Users\matt2542\Documents\GitHub\solutions-geoprocessing-toolbox\data_management\data\geodatabases\PublishableTasksData.gdb\FVBC_InputCircle")
"def CalcCellSize(ds):\n   width = arcpy.Describe(ds).extent.width\n   height = arcpy.Describe(ds).extent.height\n   cellsize = str(max(float(max(width,height))/1000.0,30.0))\n   #return cellsize + " " + cellsize\n   ret
urn cellsize" Double
     [exec] Start Time: Mon Feb 02 13:45:12 2015
     [exec] Value = 30.0
     [exec] Succeeded at Mon Feb 02 13:45:12 2015 (Elapsed Time: 0.24 seconds)
     [exec] Executing (Calculate Value): CalculateValue 30 # "Cell Size"
     [exec] Start Time: Mon Feb 02 13:45:12 2015
     [exec] Value = 30
     [exec] Succeeded at Mon Feb 02 13:45:12 2015 (Elapsed Time: 0.00 seconds)
     [exec] Executing (Make Image Server Layer): MakeImageServerLayer http://afmcloud.esri.com/arcgis/rest/services/Environment/D_DigitalTerrainModel/ImageServer ImageServer_Layer C:\Users\matt2542\Documents\GitHub\solut
ions-geoprocessing-toolbox\data_management\data\geodatabases\PublishableTasksData.gdb\FVBC_InputCircle # NORTH_WEST Name 0 # 30 #
     [exec] Start Time: Mon Feb 02 13:45:12 2015
     [exec] Succeeded at Mon Feb 02 13:45:14 2015 (Elapsed Time: 2.24 seconds)
     [exec] Executing (Feature To Point): FeatureToPoint C:\Users\matt2542\Documents\GitHub\solutions-geoprocessing-toolbox\data_management\data\geodatabases\PublishableTasksData.gdb\FVBC_InputCircle in_memory\Observer I
NSIDE
     [exec] Start Time: Mon Feb 02 13:45:14 2015
     [exec] Succeeded at Mon Feb 02 13:45:14 2015 (Elapsed Time: 0.11 seconds)
     [exec] Executing (Add Field (2)): AddField in_memory\Observer OFFSETA DOUBLE # # # # NULLABLE NON_REQUIRED #
     [exec] Start Time: Mon Feb 02 13:45:14 2015
     [exec] Adding OFFSETA to in_memory\Observer...
     [exec] Succeeded at Mon Feb 02 13:45:14 2015 (Elapsed Time: 0.00 seconds)
     [exec] Executing (Calculate Field (2)): CalculateField in_memory\Observer OFFSETA 5 PYTHON #
     [exec] Start Time: Mon Feb 02 13:45:14 2015
     [exec] Succeeded at Mon Feb 02 13:45:14 2015 (Elapsed Time: 0.00 seconds)
     [exec] Executing (Viewshed): Viewshed ImageServer_Layer in_memory\Observer C:\Users\matt2542\Documents\GitHub\solutions-geoprocessing-toolbox\data_management\data\geodatabases\scratch.gdb\FVBCircle_1_vshed 1 CURVED_
EARTH 0.13 #
     [exec] Start Time: Mon Feb 02 13:45:14 2015
     [exec] WARNING 000869: Z factor: The Z units of the output geographical spatial reference are undefined. A default Z factor of 1 was used.
     [exec] ERROR 010425: Earth curvature correction is not supported when the input surface raster is in a Geographic Coordinate System.
     [exec] Failed to execute (Viewshed).
     [exec] Failed at Mon Feb 02 13:45:15 2015 (Elapsed Time: 0.15 seconds)
     [exec] Failed to execute (FastVisibilityByCircle).
     [exec] Failed at Mon Feb 02 13:45:15 2015 (Elapsed Time: 6.15 seconds)

Testing this in the latest dev and on 10.4. I can see the same error for ALL of the Fast Visibility tools. Going to have to go back and change how the base Viewshed is working.
Just an FYI.. the other non-visibility tools, Drive Time and Point-To-Point Routing are passing tests now.

So here I tried to add a Calculate Value check for the type of spatial reference of the input image service and turn curvature option on (projected) or off (geographic) as necessary. Unfortunately the model fails. It seems there is a limitation of the Viewshed tool or Model Builder that it is not wanting to accept either "FLAT_EARTH" or "CURVED_EARTH" options at 10.4. I'm working with the Analysis team to figure this out. But there is not timeline on their side. Going to have to move this one into next release. :frowning:

Publishable Task Tools is moving to mature support and this issue is being removed.
#461


Awilliams/basemap widg

Here small demo:
https://user-images.githubusercontent.com/91129623/135610950-bb0e640b-e226-4415-86c6-081d15b74d11.mp4
used the listview. text, tooltip and icons are shown.  There is a strange large border around the component. When scrolling there is a black glitchy element showing up. Some of the maps takes quite a long time to load. Future enhancement would be showing a loading bar so user knows it is not stuck

All changes requested have been applied, thanks for the feedback.
Lastly, I will need to update the documentation, so when it is done I will request also Lucas review


Can we talk about / document threading semantics / requirements in PsychicHttp?

I think everyone here knows that ESPAsyncWebServer (or at least its origin fork) is a disaster in terms of thread safety. PsychicHttp is reported to be much better, which is great! But it's important for users to understand threading semantics to be able to write safe code using it...
The README has similar notes as ESPAsyncWebServer does, without clarifying too much: "PsychicHttp is a fully asynchronous server and as such does not run on the loop thread. You should not use yield or delay or any function that uses them inside the callbacks."
It would be good (necessary, even) to know the following

Q: What is the thread context user callbacks are invoked on?

I think: the HTTP server thread, which means if that thread touches any of the same data loop() does, it MUST USE SYNCHRONIZATION, which basically nobody is doing?

Q: What threads can methods on various PsychicHttp type objects be called FROM?

The PsychicHttpServer object should ONLY be accessed from the setup() / loop() thread??

What if you want to access it from a request handler?? What's safe and what's not?

I think: The PsychicRequest object should ONLY be accessed from the request handler??
I think: Similarly with PsychicWebSocketClient, ONLY access it from the event handler??
But I also think: You can save the socket (an int) somewhere, and use getClient() later??

where is it safe to call getClient() from??
how long is it safe to use the PsychicWebSocketClient you get back from that??

Q: What happens if you DO delay, or yield, or do long-running computation in a callback?
Q: What happens if you're sending lots of data, and the receiver is being slow (or goes offline entirely)?

Does this just stuff up the server thread indefinitely until some timeout??

Q: What happens if a client dribbles out the request headers and stuff?

Again, does this just stuff up the server thread indefinitely??

These are excellent questions, and unfortunately I don't have answers for them.  The webserver does run in its own thread, as do the callbacks.  If you need to do processing outside of callbacks, then you definitely need some threadsafe stuff.  I explained how I'm doing that in my other project yarrboard or you can dig in to the code to see how its working.

Accessing the server from a callback shouldn't be an issue unless you are using it in your loop.  Then you might need to use semaphores or something.  Most people setup the server in setup() then never touch it.
PsychicRequest only lives for the duration of the callback.  If you need to use it outside of that you need to store the data using queues (see: yarrboard)
Technically, there probably is a safer way to access clients outside the callback, but the sockfd id is the id from the underlying socket library and there are quite a few checks surrounding that when you call getClient().  So far its working without issues to use it, but YMMV.  I mostly use it to send messages to websocket clients asyncronously.
That is why its important to save the sockfd, call getClient(), check if its valid, then send data.  The server internally keeps track of all connected clients and if there's an unexpected disconnect, then that will catch it.

I can't remember what happens if you delay or yield too long inside a callback, but I think it just blocks processing.  The server is async in its own thread, but it can only process one request at a time (at least until we get the async workers stuff fully tested)
Those last 2 questions are very interesting.  There are definitely timeouts on the TCP connections, but I don't know what they are set to.  There are quite a few configuration options in the esp-idf http server library that does the gruntwork, which is exposed as the server.config object.
#define HTTPD_DEFAULT_CONFIG() {                        \
        .task_priority      = tskIDLE_PRIORITY+5,       \
        .stack_size         = 4096,                     \
        .core_id            = tskNO_AFFINITY,           \
        .task_caps          = (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT),       \
        .server_port        = 80,                       \
        .ctrl_port          = ESP_HTTPD_DEF_CTRL_PORT,  \
        .max_open_sockets   = 7,                        \
        .max_uri_handlers   = 8,                        \
        .max_resp_headers   = 8,                        \
        .backlog_conn       = 5,                        \
        .lru_purge_enable   = false,                    \
        .recv_wait_timeout  = 5,                        \
        .send_wait_timeout  = 5,                        \
        .global_user_ctx = NULL,                        \
        .global_user_ctx_free_fn = NULL,                \
        .global_transport_ctx = NULL,                   \
        .global_transport_ctx_free_fn = NULL,           \
        .enable_so_linger = false,                      \
        .linger_timeout = 0,                            \
        .keep_alive_enable = false,                     \
        .keep_alive_idle = 0,                           \
        .keep_alive_interval = 0,                       \
        .keep_alive_count = 0,                          \
        .open_fn = NULL,                                \
        .close_fn = NULL,                               \
        .uri_match_fn = NULL                            \
}

I'm moving this to discussions.  If there are specific things you want to address, or have a PR for better documentation please feel free to resubmit.


fix(mainloop): move out paint event trigger from openmp parallel loop (#204)

Fixes #204 .
Changes proposed in this pull request:

openmp parallel threads blocks in LCUI_TriggerEvent on locking System.event.mutex
fix some bug in test

@lc-soft

Thank you for your contribution

Test failed

I thought this icon means that the tests on GitHub Actions and Travis CI passed, but they are not.

Ok, I adjusted the waiting time, the test passed, no problem.
https://github.com/lc-soft/LCUI/commit/c5c9944b443bad19f75813b4bc53c0027597e16d


fix: branch to test all native image configuration changes in one place

No review needed.

First run of CI succeeded. Pulling in changes from main to verify again

Native Image tests still green after pulling in recent changes in main

Checks still passing after merging recent changes from main.

Looks like we're experiencing some failures due to Java 8 compilation issues. Will wait for https://github.com/googleapis/java-spanner/pull/1870 to be merged.

Closing since native image changes have been released with https://github.com/googleapis/java-spanner/pull/1878

Sorry @ansh0l, I'll have to reopen this PR. We were blocked on some Java compatibility issues which was introduces with the most recent version of GraalVM so this PR is yet to be merged.

"samples / compile (8) (pull_request) " failed:
2022-05-25T13:54:58.6638474Z [INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ google-cloud-spanner ---
2022-05-25T13:54:58.6675784Z [INFO] Changes detected - recompiling the module!
2022-05-25T13:54:58.6684037Z [INFO] Compiling 194 source files to /home/runner/work/java-spanner/java-spanner/google-cloud-spanner/target/classes
2022-05-25T13:54:58.9751742Z [INFO] -------------------------------------------------------------
2022-05-25T13:54:58.9754868Z [ERROR] COMPILATION ERROR :
2022-05-25T13:54:58.9757245Z [INFO] -------------------------------------------------------------
2022-05-25T13:54:58.9760200Z [ERROR] /home/runner/work/java-spanner/java-spanner/google-cloud-spanner/src/main/java/com/google/cloud/spanner/nativeimage/SpannerFeature.java:[20,38] cannot access org.graalvm.nativeimage.hosted.Feature
2022-05-25T13:54:58.9761016Z   bad class file: /home/runner/.m2/repository/org/graalvm/sdk/graal-sdk/22.1.0/graal-sdk-22.1.0.jar(org/graalvm/nativeimage/hosted/Feature.class)
2022-05-25T13:54:58.9761667Z     class file has wrong version 55.0, should be 52.0
2022-05-25T13:54:58.9763912Z     Please remove or make sure it appears in the correct subdirectory of the classpath.

Checking...

All checks are passing after #1890.


Missing license

Hey David,
could you add a license to this repo?
If there's no license it defaults to "All rights reserved" I guess.

Hey Julian,
I'm happy you're interested in using stylebuddy.
As stated in the package.json stylebuddy is published under the ISC license. However I will also add a proper license statement.
Cheers


Improved handling of different states

"Complete" state stays as long as badge remains connected after upload is complete
New "Rebooting" state to handle temporary disconnection after upload
Scanner entry widget is no longer appears in states where it is not required
Updated state images to be more consistent with each other

Soo much better. thanks @KrisPrajapati


Use that with AdminLTE

This works with adminlte? i'm going to use on a page

LOL xdddd

Ok.
MyUsers includes  login, register, etc etc etc.
Merging it with that panel could take a bit of time. Find just a login form mysql and a register one and then implement to it. Thats what i did. Because MyUsers is... in some words, designed? to be customized, create pages to it. As said, merging it with a panel could take some time.

@mogokcp is completely correct.


[docs] Demo SearchIcons crashes

[ ] I have searched for similar issues in this repository and believe that this is not a duplicate.

Steps to Reproduce

Visit https://mui.com/components/material-icons/?query=message
??
demo SearchIcons crashes

Your Environment

Tech
Version

MUI
v5.2.5

netlify deploy
https://61c098e520eae9000736c0df--material-ui-docs.netlify.app

Browser
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Duplicate of https://github.com/mui-org/material-ui/issues/30304


✨ Update to Kubernetes 1.26.3

Summary
Update to Kubernetes 1.26.3.
Todos

[x] Unit tests pass
[x] Boilerplate
[x] Lint
[ ] Update go.mod to real Kube branch
[x] Enable ValidatingAdmissionPolicy

Related issue(s)
Fixes #2772

/test all

/test ci/prow/e2e-shared ci/prow/e2e-sharded

/test e2e-shared

@MikeSpreitzer no need to retest. The code isn't ready for merging. Still working on finding the source of some issues.

Looks like presubmits are running on build01 now... maybe it'll have more cpu 🤷
/retest

/test e2e-multiple-runs

Status update:

The rebase work is "done" in the sense that everything has been updated and it all compiles
It looks like there is a performance regression and possibly a behavioral regression
I am working on other things now, and could really use help from others to diagnose the remaining issues to help get this done
One of the commits in my branch increases the number of worker goroutines for most/all controllers to 10. We saw an issue with this pre-rebase where the deletion e2es were not completing in time. We're still seeing that in the rebase. We potentially could drop this commit, although it would be nice to determine the root cause of this issue.

go test ./test/e2e/reconciler/workspacedeletion/ -v -count 1 -args --use-default-kcp-server alone run locally just takes the same time: 12s, although timing out in prow.

E0517 13:54:58.152639   42432 logicalcluster_deletion_controller.go:225] deletion of logical cluster 2iu62bs2xhxnhfhq|cluster failed: some content remains in the logical cluster, estimate 5 seconds before it is removed: Some resources are remaining: apibindings.apis.kcp.io has 1 resource instances; Some content in the logical cluster has finalizers remaining: apis.kcp.io/apibinding-finalizer in 1 resource instances

This looks fishy.

Yes, many of these tests time out in CI but not locally.
Another thing I noticed running locally: ran the quota e2e. It passed. Checked etcd. There were still a small handful of CRs (sheriffs or cowboys, can't remember which) but the CRDs/schemas/exports/bindings/workspaces/logicalclusters - everything related to the test - had all been deleted. Because we never did a test to verify all content was deleted, I have no way of knowing if this is a regression or it's always been that way.

Thanks to GPT-4 writing a script, here are the files in the logs that change most (% number in last column):
labelclusterrolebinding_controller.go 23995 202512 -157,626
logicalcluster_resource_deletor.go 741 2533 -109,469
workspace_reconcile_deletion.go 327 1023 -103,111
graph_builder.go 80571 32612 84,7459
workspace_reconcile_phase.go 3724 1785 70,3939
resource_quota_monitor.go<PHONE_NUMBER>1 61,8357
informer.go 22115 14343 42,6354
garbagecollector_patch.go 21653 14898 36,9621
resource_quota_controller_patch.go 10893 7532 36,483
shared_informer.go 34637 24698 33,5013
resource_quota_controller.go 1923 1395 31,8264
apiexport_controller.go 1274 930 31,216
logicalcluster_deletion_controller.go 5573 7525 -29,8061
apibinding_controller.go 40111 29892 29,1959
reflector.go 1315 987 28,497
labelclusterrolebinding_reconcile.go 3501 2639 28,0782
statusless_committer.go 3750 2836 27,7558
workspace_controller.go 11578 8770 27,5998
bootstrap_reconcile.go 888 681 26,3862
replication_reconcile.go 5831 4645 22,6422
bootstrap.go 1088 872 22,0408
labellogicalcluster_reconcile.go 277 224 21,1577
apiexport_apireconciler_controller.go 1856 1516 20,1661
apiexport_apireconciler_reconcile.go 715 590 19,1571
apibindingannotation_controller.go 26255 22282 16,371
committer.go 23959 20925 13,5193
apibinding_deletion_controller.go 10983 9596 13,4798
defaultlocation_controller.go 556 487 13,2311
synctargetexports_controller.go 807 707 13,21
heartbeat_controller.go 875 769 12,8954
synctarget_controller.go 1041 928 11,4779
workspacetype_controller.go 239 217 9,64912
labelclusterrole_controller.go<PHONE_NUMBER>91 9,14681
syncer_apireconciler_controller.go 656 599 9,08367
permissionclaimlabel_resource_reconcile.go 4294 3926 8,95377
apibinder_initializer_reconcile.go 6943 6392 8,26397
syncer_apireconciler_reconcile.go 6945 6424 7,79415
placement_controller.go 2078 1932 7,2818
controller.go 11017 10291 6,81434
cacher.go 892 834 6,72074
decorator.go 2487 2327 6,64728
publisher.go 1891 1782 5,9352
apibinder_initializer_controller.go 10361 9773 5,84087
garbagecollector.go 1258 1190 5,55556
labellogicalcluster_controller.go 34548 36446 -5,34693
workspace_reconcile_scheduling.go 1833 1739 5,26316

@MikeSpreitzer you want to have a closer look at the CI regression issue here that is holding up the 1.26 rebase?  If we clear this hurdle then we can close out on the rebase backlog issue in kubestellar.

See my debug PR https://github.com/kcp-dev/kcp/pull/2956. We are near.

Superseded by #2956
/close


Transition bug?

When I call Get.to(..., transition.fade)
I see the off transition on the previous page rightToLeft with fade (but it will be fade OUT ONLY)
Any way to create a Transition.Nothing? (and/or transitionIn/transitionOut?)
I need to handle the in and out animations too.
Thanks

When I call Get.to(..., transition.fade)
I see the off transition on the previous page rightToLeft with fade (but it will be fade OUT ONLY)
Any way to create a Transition.Nothing? (and/or transitionIn/transitionOut?)
I need to handle the in and out animations too.
Thanks

I did not understand. Is this a bug report or a feature request?

It is both 😂

Hi, Get uses native transitions to prevent breaches in app stores. This does not mean that you cannot casually use a different transition, but iOS manual analysis will reject your app if all transitions are different from Cupertino.
Android uses Transitions.fade which is the default for android, and on iOS it uses Transitions.cupertino.
You do not need to use Transitions.fade, unless you want this behavior on android and iOS, and your app will likely be rejected on the AppleStore if you do.
In view of this, there is no transition bug in Get, at least not in the latest version (1.12.0), if you use an old version, please update.
For custom transitions you will need to use named routes, and use a PageRouteBuilder (instead of GetRoute) for this.

If you want to navigate without transitions, you can use duration: Duration (seconds: 0)
Since there is no bug description here, and no clear critical resource request, I am closing this.

Added Duration 0, but the BACK animation is STILL left to right with a 300 ms...
Please fix this!

I need transitionOn and transitionOff properties.
It looks like you didn't handle the page OFF animation

Sorry this was the probleme
https://github.com/jonataslaw/get/issues/38

The problem about Duration not working has been resolved. Was he related in any way to this issue?
After the last update the problem still persists?

In the latest version this was fixed, thanks


Fixing an issue with remotebuild and ipv6

When remotebuild responds to a new build submssion, it includes a URL where more information can be found. When the client is connecting to the server via an ipv6 address this URL becomes malformed (e.g. the ipv6 address [abcd:1234::5678]:8080 is abbreviated to abcd:8080) and there is no good way to address that on the server. Instead we have the client ignore the host part of the URL and substitute the host that it wants to communicate with.

:+1:
Does this crashes if response.headers["content-location"] is null? or an invalid url?

If there is an invalid URL then it should work fine (until we try to connect to it and that fails). If the content-location header isn't set then we'll throw an exception at the moment, but that is part of the contract with remotebuild.

:+1:


Adding the animated cursor, form activation and tilty effect.

Animated Cursor:
Adding the animated cursor to improve the scrolling and cursing effect on different pages.
Tilty Effect:
Adding the tilty and swipe on hover features to cards present in about us and demo section.
Form Activation:
Activating the form via emailjs so that users can send their message to the admin.

@Akshatchaube01 Please assign the issue so that I can start working on it.


Forward port "Add Schedule" and "Add alert" features for CIS scans

On 2.6.0-rc2

Note this is an upgraded rancher from 2.5.9 to 2.6.0-rc2 . In order to get the Legacy option on a fresh install, Legacy has to be set to true.
On 2.5.9, deploy a downstream RKE1 cluster
Upgrade rancher to 2.6.0-rc2
Under Legacy option in the cluster --> CIS
The Add Schedule and Add alert buttons look disabled in CIS v1 scan page.

I've changed the issue title to forward port those features, since they are not present in the newest version of the dashboard:

Closing as old. If anyone still sees any issues here in a newer version, let us know and reopen or file a new ticket with a link back here.


add disk based caching in symbolicator-retrace

Summary

[ ] Pass mapping file FNV1 hash from measure-go to symbolicator-retrace when issuing symbolication request
[ ] Implement a disk based cache for storing and retrieving mapping files from disk in symbolicator-retrace

[ ] Configure an upper bound to disk volume usage. Should not exceed 100 GiB, for example.

[ ] Fetch mapping file from S3 host if mapping file checksum does not match or does not exist in disk cache.

We won't be doing this as the plan is to deprecate and replace symbolicator-retrace with a customized Sentry's symbolicator.


Content path generation fails adding new content

I added a new folder and texture file to Content.mcgb and followed the steps to generate the content class.
The process fails with ErrorGeneratingOutput in ContentPathGenerator.cs, ""A namespace does not directly contain members such as fields or methods" and invalidates all of the provided sample content.
I have tried it with the file in the root of the project and in /shared where you originally put it.

Update:  this happens even with a fresh reinstall of the project.

I cant seem to repro the error you are getting. I am seeing a totally different error. It seems that the latest Xamarin or Mono update caused T4 templates to now require specifically adding the System.Core assembly. I just pushed a change that adds it and it solved the issue for me. Let me know if it fixes it for you.

That fixed it.


Panic message printed even when stable shim is working

[dependencies]
proc-macro2 = "0.4"

extern crate proc_macro2;

fn main() {
    proc_macro2::Span::call_site();
}

Running this crate as of proc-macro2 0.4.15 and rustc 1.30.0-nightly (02cb8f2a4 2018-08-29) results in the following output being printed:
thread 'main' panicked at 'procedural macro API is used outside of a procedural macro', libproc_macro/lib.rs:1294:13
note: Run with `RUST_BACKTRACE=1` for a backtrace.
ran anyway

Is there any way we can do the nightly_works() check without a panic being printed?
https://github.com/dtolnay/syn/issues/475 @djmcgill

Id love to fix this! Short of juggling panic hooks though I think we will have to upstream something


Test - Revert updating crates that introduces a vulnerability to test the security audit check [SAME VERSION]

Will not be merged. No review needed

PR security audit checks work as expected. Till close the

PR security audit checks work as expected. Till close the


After upgrading to 1.0.0-beta.32.3 spec error ->ProxyZone

Please provide us with the following information:

OS?

Windows 10.

Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:
@angular/cli: 1.0.0-beta.32.3
node: 6.10.0
os: win32 x64
@angular/common: 2.4.0
@angular/compiler: 2.4.0
@angular/core: 2.4.0
@angular/forms: 2.4.0
@angular/http: 2.4.0
@angular/platform-browser: 2.4.0
@angular/platform-browser-dynamic: 2.4.0
@angular/router: 3.4.0
@angular/cli: 1.0.0-beta.32.3
@angular/compiler-cli: 2.4.0

Repro steps.

Application was created using Angular CLI 2.3.1.
After upgrade all migration steps were applied.
The test that no longer works is app.component.router.spec.ts written using the similar test from Angular ("All specs that test the sample application.")

The log given by the failure.
Error: Expected '' to equal '/home'.
at stack (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:1640:17) [ProxyZone]
at buildExpectationResult (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:1610:14) [ProxyZone]
at Spec.expectationResultFactory (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:655:18) [ProxyZone]
at Spec.addExpectationResult (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:342:34) [ProxyZone]
at Expectation.addExpectationResult (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:599:21) [ProxyZone]
at Expectation.toEqual (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:1564:12) [ProxyZone]
at Object. (http://localhost:9876/base/src/test.ts?3c4da2f4b4b9fa0d540a8868c44b48b34fa9ec1e:77453:33) [ProxyZone]
at Object. (http://localhost:9876/base/src/test.ts?3c4da2f4b4b9fa0d540a8868c44b48b34fa9ec1e:7608:30) [ProxyZone]
at ProxyZoneSpec.onInvoke (http://localhost:9876/base/src/test.ts?3c4da2f4b4b9fa0d540a8868c44b48b34fa9ec1e:59974:39) [ProxyZone]
at Zone.490.Zone.run (http://localhost:9876/base/src/polyfills.ts?c05b4dee47acb1fbef7050ba26f9f2548ae286a9:1360:43) [ProxyZone => ProxyZone]
at Object. (http://localhost:9876/base/src/test.ts?3c4da2f4b4b9fa0d540a8868c44b48b34fa9ec1e:59689:34) [ProxyZone]
at attemptSync (http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?916005cc407925f4764668d61d04888d59258f5d:1950:24) [ProxyZone]
Mention any other details that might be useful.

Thanks! We'll be in touch soon.

After upgrading angular version to "4.0.0-beta.8" the error is gone.


Software Tools - Software Engineer's Introduction to Visual Studio Code

Microsoft Visual Studio (VS) Code is a powerful industry-leading code editor and is a great tool for any software engineer to know. VS Code has various extensions and its robust and user-friendly design allows software engineers to program productively. The article aims to add information about setup and the powerful wide range of features it offers (including IntelliSense, debugging, integrated terminal, and extensions) for the benefit of other CSC301 students, whether they're looking to add VS Code to their workflow, need a refresher, or planning to learn ways to maximize their programming experience.
#447

This is a very helpful article on a topic that is relevant to most CSC301 students. The article is well-organised with a Table of Contents and multiple sections that are each distinct but relevant to the theme of the article. The article is very clear with all sections having detailed instructions on how to use and setup. The extensive use of images and even a video will aid the readers to better understand the article and there are several links to external resources that the reader can avail to gain additional information. Overall a very good article.

This is a very helpful article on a topic that is relevant to most CSC301 students. The article is well-organised with a Table of Contents and multiple sections that are each distinct but relevant to the theme of the article. The article is very clear with all sections having detailed instructions on how to use and setup. The extensive use of images and even a video will aid the readers to better understand the article and there are several links to external resources that the reader can avail to gain additional information. Overall a very good article.

Thanks a lot for your detailed review, Varun! I'm glad you enjoyed reading it!


PyArrow should write _common_metadata instead of _metadata

_metadata should include the metadata of all RowGroups in the whole
dataset while _common_metadata only describes the schema.

[x] Tests added / passed
[x] Passes flake8 dask

LGTM. Thanks!


[camera] Camera privileges problem

I have an android app using flutter 1.20.4 and using the camera plugin to take photos.
I found the camera plugin must has video recording & audio recording privileges to work properly.
But my applicaion only takes photo. I don't need audio recording privilege, because I want to keep
my application with the minimun privileges.
So how can use this plugin only with the video recording privilege?

In flutter version > 2.2.0, this problem has been fix. If you want to use camera only with the take photo privileges, you can upgrade you flutter Version and make sure your version > 2.2.0

@sotux
Since you are on older version of the framework, you'll need to upgrade to latest stable and also use latest plugin version to get improved experience. Also per above comment, upgrading should resolve your issue.
Closing this for now.


[1.0][rc] no pagination support in buyer management

Issue description
In buyer management, under 2 tabs of "stage environment" and "Production Environment", pagination support is missing which leads to FE only shows one page data
expected

support pagination, 20 records a page

pass


When will the draft be finalized?

At OpenRelay we'd really like to target the standard-relayer-api, but we don't want to spin our wheels chasing a specification that's changing every couple of days. Given that the API is versioned anyway, can we get a timeline for locking down a final /v0/ API, and have any subsequent breaking changes go into a /v1/ draft?

Now that the v0 draft has been announced publicly, I think it makes sense to leave ~1 week for feedback prior to locking it down.


[DO NOT MERGE] Auto PR to update dependencies of istio

This PR will be merged automatically once checks are successful.
none

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
c114c71c1738277dc5c95fcd91674e6538632b78
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
739c429338e9f24ed6d4cb4a57e607c74db90698
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
84e904bc93aab8182e30c6661ff6b3ce8d98491f
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
eb2d280899ea6397f0f84fe6be38ba754412f46e
link
/test istio-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


update kernel-mshv

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary

What does the PR accomplish, why was it needed?
Change Log

Change
Change
Change

Does this affect the toolchain?

YES/NO
Associated issues

#xxxx

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-YYYY-XXXX

Test Methodology

Pipeline build id: xxxx

Tested these components and was able to pass all container tests: https://dev.azure.com/mariner-org/mariner/_TestManagement/Runs?runId=80766&_a=runCharts
Additionally performed manual testing and verified all versions are as expected


The reported results of baselines ?

The reported results of ERNIE, KEPLER, KnowBERT, K-Adapter are based on ROBERTA-large ?

As we used the results reported in the original papers, please refer to the corresponding papers.

@ikuyamada LUKE reports the results based on ROBERTA-large, while the mentioned baselines are not based on ROBERTA-large, e.g., KnowBert is based on  bert-base-uncased. Therefore, I have a question, are LUKE and mentioned baselines compared fairly?

LUKE is based on RoBERTa-large because at the time of writing the paper, the state-of-the-art model of our entity-related tasks was the K-Adapter model which is based on RoBERTa-large. Although comparison with a model based on smaller PLM (e.g., KnowBERT) may not be a fair comparison, it is also difficult to run expensive pretraining multiple times due to our limited computational budget.


Command integration with Ubuntu's unity menu

Running commands with ctrl+space in lighttable is nice. In Ubuntu we've already been moving to that model, but we use the Alt key. It brings up a command-filter menu [1] which is constructed from the app's menu entry.
It would be better for ubuntu users if, rather than duplicating that functionality, lighttable used the DBus API [2] to utilize it. In my web browser I hit Alt, type 'tab', hit enter, and this opens a new tab. To open a browser tab in lighttable would ideally be the same.
[1] http://www.linuxuser.co.uk/wp-content/uploads/2012/04/hudpageweb.jpg for example
[2] http://askubuntu.com/questions/98692/how-to-add-support-for-the-global-menu-to-a-python-non-gtk-non-qt-app

I added this to the feature wishlist.


⚠ Bofrost.at has degraded performance

In feeb771, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2244 ms

Resolved: Bofrost.at performance has improved in bf2a96e.


Docs update with v1.4

Description:
Small docs updates.
Checklist:

[x] PR Location (usually master for hotfixes, dev for general development)

The build for dev and therefore this has failed because of https://github.com/larsimmisch/pyalsaaudio/issues/29 The PR build was fine, because it was built earlier with the older version of pyalsaaudio. If there is no fix to pyalsaaudio before our version release, I'll push a version lock for the older version and I'm keeping it like this for the meantime.

Merging ... doing v1.4 release - yay!


fix(radarr): Specify UHD Bluray Tier Scores

Make UHD Bluray Tier Scores explicit for SQP2 + SQP5, to support an upcoming change to the default scores of these custom formats

Waiting for other coordinated actions before merging this.


fix changed code

PR #5556 changed the code to use __Pyx_PySequence_ITEM, but changed a bit too much on this line. This was causing PyPy to fail the fused_def test, after the fix the test passes.
This is the change in the context of the PR

Thanks. I wonder why we didn't see it in PyPy in the CI? I'd thought we didn't show failures...

Dunno. I think this is the one. It seems to pass here, but failed on my weekly PyPy + Cython build

The only thing you're obviously doing differently is -DCYTHON_USE_TYPE_SPECS, although (based on a quick look) I don't see why that would affect this code.
Do you think we should be setting -DCYTHON_USE_TYPE_SPECS by default for PyPy?

It seems that is redefined to 0 anyway, so that flag is superfluous in CI: https://github.com/cython/cython/blob/f082052192ab54332ef28d657bfd520bd6772ee2/Cython/Utility/ModuleSetupCode.c#L126-L127

The  PyPy CI run is skipping the "Setup python" step since the condition is wrong https://github.com/cython/cython/blob/f082052192ab54332ef28d657bfd520bd6772ee2/.github/workflows/ci.yml#L223

While we are at it, I am not sure what the cache step in CI is for. Is something else skipped if the cache is found? It is emitting warnings. A newer workflow is https://github.com/actions/cache/tree/main, but I am not sure how the caching is meant to work and how to check that a cache is being used.

While we are at it, I am not sure what the cache step in CI is for. Is something else skipped if the cache is found? It is emitting warnings. A newer workflow is https://github.com/actions/cache/tree/main, but I am not sure how the caching is meant to work and how to check that a cache is being used.

ccache skips compilation of a file if the file is identical to one it's seen before (and all the defines/command line flags are the same). From the point of view of the tests it should be the same - it just accelerates the C compilation step by using a result from earlier

The PyPy CI run is skipping the "Setup python" step since the condition is wrong
https://github.com/cython/cython/blob/f082052192ab54332ef28d657bfd520bd6772ee2/.github/workflows/ci.yml#L223

That's likely it. So possibly we're not actually setting up PyPy and just running everything in CPython... I'll investigate and fix if needed (but likely tomorrow).
Thanks for spotting that!

I submitted #5582


Fails for method "ANY"

If you use the event "ANY" for any of your functions API Gateway does not work :(
  Failed to configure the Event Gateway. Failed to configure the Event Gateway. Failed to subscribe the event http to the function nano-api-graph due the error: Subscription doesn't validate. Validation error: "Key: 'Subscription.Method' Error:Field validation for 'Method' failed on the 'eq=GET|eq=POST|eq=DELETE|eq=PUT|eq=PATCH|eq=HEAD|eq=OPTIONS' tag"

Hey @bradennapier, thanks for your interest in the Event Gateway!
Currently, we don't support a catch-all ANY method for HTTP subscriptions, but that's a good suggestion for the future. We'll keep it in mind :)


Evidence Expression Atlas - add confidence column

can be tested with /evidence/ENSG00000139618/EFO_1001951

Looks great! 👍


Create ManagedClusterSet for AppStudio workspace

https://issues.redhat.com/browse/CMCS-32

/lgtm


Helm chart not updated for 0.5.1 release of the webhook

Describe the bug:
The helm chart was not updated for 0.5.1.
/kind bug

0.5.1 released .


File input plugin: tailStartPosition doesn't work

I'm not 100% sure if it's a bug or I'm doing something wrong.
I tried:
$ logagent --config /tmp/logagent.conf --tailStartPosition 0
...
2018-07-18T15:45:27.662Z pid[4994] Watching file:/tmp/a from position: 22

The same happened with a config like:
options:
  tailStartPosition: 0

I've also tried with -1 and it still reads from the end of the file.

Which operating system do you use?

It works for me on Mac OS X, Node 8.11.3, Logagent 2.0.112. Please install the latest Logagent version npm i -g @sematext/logagent@latest.
Please let me know version numbers.
uname -a
node  --version
logagent --version

Ok, it turned out the option tailStartPosition did not work, when used in the configuration file.
Actually it was a problem in the config file loader.
Fixed in commit: https://github.com/sematext/logagent-js/commit/a5a08237de584bbcc2586f592bc9b928621ca883
Released: +<EMAIL_ADDRESS>


Add first class Javascript/Typescript support to the Mill build tool

Related Issues
#3927
Checklist

[x] example/jslib/basic

[x] 4-multi-modules/: Multiple inter-related Typescript modules
[x] 5-client-server-hello/: Demonstrate a client-server application with two modules, one a minimal JS server and one a minimal JS client, wired up and interacting
[x] 6-client-server-realistic/: Demonstrate a client-server application with two modules, one an Express server and one a React.js client, wired up and interacting, implementing a TodoMVC application

Seems like the client-server-realistic example still doesn't work???

react app runs on localhost:3000
server runs on localhost:3001
Server api:
GET /todo => [Todo]
POST /todo => Todo
Todo {id: int, text: string}
maybe I should include api docs in mill Docs?

@monyedavid looks mostly good, just missing the link to where-ever you got the React.js TodoMVC example then I'll merge it

Looks great, thanks @monyedavid . I'll close out the bounty using your existing bank details


pallet uniques: fix broken docs link

Changes only in README
I fix three links of the pallet_uniques readme.
It seems that there's no such crate on docs.rs: https://docs.rs/releases/search?query=pallet+uniques

bot merge


Further clarify the custom header and how it can be used

Its confusing from the perspective of setting up Traffic Manager up for the first time, that Custom Header on the endpoint is only for the monitor. My app expects the host name to match the app service (claims and service verification), and I was mistakenly under the impression this Custom Header would allow me to override the Host header like you can do in Application Gateway.
I would recommend:
-Adding a little more about this Custom Header setting, and clarify exactly what it can and can't do.
-Making is super clear Traffic Manager has no Hostname override capabilites, and that if you need that for your app you should use Application Gateway.

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

ID: db349d8c-fb64-fc0a-a063-7dd7c047be93
Version Independent ID: 1a9e3921-7cec-219c-3050-7e3dee72c76f
Content: Quickstart: Create a profile for HA of applications - Azure portal - Azure Traffic Manager
Content Source: articles/traffic-manager/quickstart-create-traffic-manager-profile.md
Service: traffic-manager
GitHub Login: @greg-lindsay
Microsoft Alias: greglin

@McDoge , thank you for your feedback. We have assigned this to the content owner/author for review.
@greg-lindsay , could we please add some details about the "Custom Header Settings" option available in the Add Endpoint section:

We currently have a large backlog of issues, so I am working through them slowly. Thaks for the contribution here! I will address this issue shortly.

This is being tracked as internal content issue: 96316
#please-close


generate-glyphdata not working

Observed behaviour
Running fontbakery generate-glyphdata downloads some ttf files (what? the? heck?) and then fails:
$ fontbakery generate-glyphdata
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/sourceserifpro/SourceSerifPro-Bold.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/rosarivo/Rosarivo-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/raleway/Raleway-BlackItalic.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/librebaskerville/LibreBaskerville-Bold.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/worksans/WorkSans-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ufl/ubuntu/Ubuntu-BoldItalic.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/vollkorn/Vollkorn-BlackItalic.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/breeserif/BreeSerif-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/carme/Carme-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/creteround/CreteRound-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/eczar/Eczar-Bold.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/faunaone/FaunaOne-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/hind/Hind-Light.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ufl/ubuntumono/UbuntuMono-Bold.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/belgrano/Belgrano-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/trirong/Trirong-Light.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/mitr/Mitr-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/overpass/Overpass-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/jura/Jura-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/overpass/Overpass-Black.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/montserrat/Montserrat-Regular.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/montserrat/Montserrat-Black.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/ofl/montserrat/Montserrat-Thin.ttf
Downloading and generating glyph data for http://github.com/google/fonts/raw/master/apache/roboto/Roboto-Regular.ttf
Collating font data into glyph data file
Traceback (most recent call last):
  File "/Users/johannes/.pyenv/versions/fontbakery/bin/fontbakery", line 11, in <module>
    load_entry_point('fontbakery', 'console_scripts', 'fontbakery')()
  File "/Users/johannes/Packages/fontbakery/Lib/fontbakery/cli.py", line 22, in main
    "fontbakery.commands." + subcommand_module, run_name='__main__')
  File "/Users/johannes/.pyenv/versions/3.7.6/lib/python3.7/runpy.py", line 208, in run_module
    return _run_code(code, {}, init_globals, run_name, mod_spec)
  File "/Users/johannes/.pyenv/versions/3.7.6/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/johannes/Packages/fontbakery/Lib/fontbakery/commands/generate_glyphdata.py", line 101, in <module>
    sys.exit(main())
  File "/Users/johannes/Packages/fontbakery/Lib/fontbakery/commands/generate_glyphdata.py", line 89, in main
    glyph_data = collate_fonts_data(fonts_data)
  File "/Users/johannes/Packages/fontbakery/Lib/fontbakery/commands/generate_glyphdata.py", line 40, in collate_fonts_data
    for glyph in family:
TypeError: 'NoneType' object is not iterable

Expected behaviour
I have not used the command before, but I'd expect it to scan the current directory for ttf files and output a METADATA.pb file as mentioned in the documentation here.
Resources and exact process needed to replicate
Run the CLI command on the latest commit.

No, this command is not for generating METADATA.pb and it is not mentioned in the documentation you referenced.
But yes, it seems the command has some problem that needs fixing. I'll take a look at that.
The real purpose of this command is to build statistics of typical amount of glyph contours based on a set of reference font files (the ones you saw being downloaded). This is later used in a fontbakery glyph contour count check.

Ah sorry, I got confused, apparently. On a side note, I can't seem to locate that fontbakery-build-metadata.py anywhere except for ancient commits that mention it... is that functionality still available somehow?

if you want to generate metadata.pb files for google/fonts, use gftools add-font instead. Repo is here, https://github.com/googlefonts/gftools
Thank you for finding these edge cases.

A long time ago (hence, ancient commits), we reduced the scope of fontbakery to be laser-focused on the task of checking font files. Auxiliary tools were migrated into the GFTools project that @m4rc1e just mentioned ;-)

Makes sense, thanks for pointing me to the right command there.

this is now fixed. It was still using python2-only syntax. Now it is python 3 safe as well


generate C++ top-level namespace for double versions of user-defined functions

To expose user-defined functions as R functions, RStan needs versions of the user-defined functions that are (a) defined in the top-level namespace, and (b) instantiated with double types.
Question 1:  What if the function throws an exception?  Can R handle that, or should we catch all those and return NaN or something if there's a return?   These come in either through functions or reject statements.
Question 2:  What if the function prints?  Is it OK to have an output stream as one of the arguments?

It's relatively straightforward to catch exceptions via Rcpp.  Relevant
part near bottom of:
http://gallery.rcpp.org/articles/intro-to-exceptions/
Krzysztof
On Mon, Nov 23, 2015 at 2:32 PM, Bob Carpenter<EMAIL_ADDRESS>wrote:

To expose user-defined functions as R functions, RStan needs versions of
the user-defined functions that are (a) defined in the top-level namespace,
and (b) instantiated with double types.
Question: What if the function throws an exception? Can R handle that, or
should we catch all those and return NaN or something if there's a return?
—
Reply to this email directly or view it on GitHub
https://github.com/stan-dev/stan/issues/1703.

This would be nice to have but I'm not sure whether Rcpp::sourceCpp() will be able to compile an entire Stan C++ program. It only knows how to link against a few Rcpp related packages and it would be somewhat of a challenge to get all the rstan headers included in the right way. At the moment, when I strip out everything except the user-defined functions, I basically only need math.hpp.

I can generate complete double-only versions of the functions
that only depend on math.hpp.  It's exactly the same body-of-function
code generation as in the other case, just different arguments.
You wouldn't need to compile everything else.

Bob

On Nov 23, 2015, at 3:09 PM, bgoodri<EMAIL_ADDRESS>wrote:
This would be nice to have but I'm not sure whether Rcpp::sourceCpp() will be able to compile an entire Stan C++ program. It only knows how to link against a few Rcpp related packages and it would be somewhat of a challenge to get all the rstan headers included in the right way. At the moment, when I strip out everything except the user-defined functions, I basically only need math.hpp.
—
Reply to this email directly or view it on GitHub.

OK, not a huge priority since the current expose_stan_functions works 98% of the time and does not call any internal functions, so it is easy to source a version from GitHub that works 98.5% of the time after I have fixed another corner case. Also, it wouldn't need to be double-only since ints are also allowed. It just can't have var, fvar, etc.

I don't like things that only work 98% of the time, so it's
a high priority for me!  It shouldn't take me more than a day or
two to do, so I'll try to get it done before the end of the year.

Bob

On Nov 23, 2015, at 5:53 PM, bgoodri<EMAIL_ADDRESS>wrote:
OK, not a huge priority since the current expose_stan_functions works 98% of the time and does not call any internal functions, so it is easy to source a version from GitHub that works 98.5% of the time after I have fixed another corner case. Also, it wouldn't need to be double-only since ints are also allowed. It just can't have var, fvar, etc.
—
Reply to this email directly or view it on GitHub.

I think there's another issue floating around on roughly the same topic but can't find it now.  In any case, this is being pushed off to the future.

Hey, we did this already.


Add Subreddit.rules

See https://github.com/praw-dev/praw/pull/612 for the PRAW 3.6 addition.
@leviroth any chance you want to re-add this for PRAW4?

Funny, I had just noticed that wasn't in PRAW4. Would be glad to do that.


Uninstalling extension does not show the 'reload' tag

Testing #39593
Version 1.19.0-insider
Commit 6bc5a14bf34e44b3af5508350cc1221fcc999ceb
Date 2017-12-05T06:14:37.864Z

Started my existing workspace the first time, clicked on uninstalling an extension
'Uninstalling' is shown, but does not turn into 'Reload'
No error in the dev tools

I thought that extension was disabled before

@aeschli Did you get the confirmation dialog to Uninstall?

I think, I was seeing yesterday in out of dev build. But was not seeing this in latest insiders. Related https://github.com/Microsoft/vscode/issues/39561

@sandy081 I didn't get the dialog.
On restart, the extension is still present. 'Uninstall' then shows the dialog and all went fine.

@aeschli I am not able to reproduce it. Let me know if it is consistently happening on your system, so that I can take help of yours to debug on your system?

Sure, I haven't since then. Ok to close.

@sandy081 I'm getting this now. Have had it occur on 2 different machines - both Macs one on High Sierra and the other on Sierra.


support for MPD_HOST env variable

By default connect to MPD_HOST env var, if set.

Also default to default MPD port if you specify just a host as an argument?


Allow disabling object-level permissions for a given model in the RBAC registry

This is a "model registration flexibility" issue similar to https://github.com/ansible/django-ansible-base/issues/365
The ask here is to allow disabling of using object-level roles for a particular model. Spitball of the contract for this:
permission_registry.register(Instance, allow_object_roles=False)

We would have allow_object_roles default to True, as this is how it is always used today. With this change, the /api/v1/role_metadata/ endpoint would not show the content type for the Instance model. However, importantly, the permissions related to the Instance model would still be shown as possible for system-wide roles. This is a valid use-case for this feature, because you may want to allow someone to manage instances in AWX without making them a superuser, but you still don't want to build out a UI for giving permissions to single instances, because you just don't want that.
The AWX Instance model does not have a related organization, but you could repeat for an organization-scoped model.
Our use case for this second version (org-scoped) mode would be the OAuth2 Application model. In AWX organization admins got permissions to this model. Implementation here would be that the model's permissions are listed in the organization admin roles. Optionally, someone could create custom organization-level roles that include OAuth2 Application permissions. But a user would not be able to create custom roles that give permission to individual applications, simply because we do not want to build a UI for this.

@relrod my only hangup for doing a fast 30-minute version of this is where this data could live. Right now the permission_registry keeps some simple dictionaries and sets that were introduced for specific problems.

We could introduce another... set on permission_registry that lists model names that don't allow object roles? That would get the job done.
Another option to ninja this in would be that we could take the model class itself and do something like setattr(cls, '_allow_object_roles', True), and then use that flag on the objects themselves in the serializer.

Thinking it over, I'm okay with either approach.

This has a problem with the need for "creator" roles after someone creates a new object and does not have a role which would give implicit access to that object. Options for ways around that are:

For this type of model, require that the "add" permission is coupled with all other permissions. You can't have a role with "add" permission by itself.
Prohibit the "add" permission for models that have no object-level roles and use "change", "delete", or "view" permissions as proxy. This is complex and confusing.
Still allow system object-level roles but prevent custom object-level roles. But how would we communicate this to clients?

None of these options are slam dunks. If I were to choose one, I would lean towards (1). However that still leaves unanswered questions.
Also, a half-way option that looks like option (3) will be possible with https://github.com/ansible/django-ansible-base/pull/490. Drawback is that it blocks the action late in the user experience, as opposed to giving advance notice to clients. On the other hand, it can offer a detailed rationale which needs to be filled in by the specific model permission policies.
Those together make this a pretty solid won't-fix.

This is now coming back up for galaxy_ng, and we will be getting a model list for this for those models.

Link prior work for this https://github.com/ansible/django-ansible-base/pull/475


Ensure transformations can't mutate the original object

There was some mutation happening via the transformer, which was
wreaking havoc on attempts to complete #1298.
Apparently it was also somehow leading to incorrect printing of sum
type variants. I haven't had time to investigate why, but deep cloning
the original object must be safer and it is fixing a blocking problem in
ongoing work in #1298.
Since the cases in which this causes problems are quite subtle, I havent
been able to figure out how to test this directly.
NOTE that this is on top of #1382, and that needs to be merged in first
(and this then rebased). Only 31d5654ee777c5dc21fb234b6e9098b55878d367 is new here.

[x] Tests added for any new code
[ ] Documentation added for any new functionality
[ ] Entries added to the respective CHANGELOG.md for any new functionality
[ ] Feature table on README.md updated for any listed functionality

I wrote a comment on the commit that is now showing up here at the PR level: https://github.com/informalsystems/quint/commit/462dcfa6eaaa02dd71f0e11c1e85506f059eb853#r139252697

Thanks for the review here too!


Improve --model argument handling and help message

This PR introduces the following updates to the whisper/transcribe.py script:

Enhancement of the --model argument handling and help message: The --model argument now provides a list of available model choices along with the default option when the --help flag is used. This enhances user experience by providing immediate visibility of the available options.

Previous message: --model MODEL         name of the Whisper model to use (default: small)
Updated message: --model MODEL         name of the Whisper model to use. Available models are: tiny.en, tiny, base.en, base, small.en, small, medium.en, medium, large-v1, large-v2, large-v3, large. You can also specify a path to a model checkpoint. (default: small)
Note: The choices=available_models() option was not used to allow the use of custom model checkpoints.

Improved error message for incorrect model names: If a non-existing model name is used, the error message now functions as intended and indicates the error and provides the list of valid model names.

Previous message: whisper: error: argument --model: invalid valid_model_name value: 'some_incorrect_model_name'
Updated message: whisper: error: argument --model: model should be one of ['tiny.en', 'tiny', 'base.en', 'base', 'small.en', 'small', 'medium.en', 'medium', 'large-v1', 'large-v2', 'large-v3', 'large'] or path to a model checkpoint

large-v3 is not working, it's giving me this error.
RuntimeError: Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead

large-v3 is not working, it's giving me this error.
RuntimeError: Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead

i tested yesterday worked very well
i am using python 3.10.11

@FurkanGozukara
It turned out that the function log_mel_spectrogram requires n_mels to be set to 128 because large-v3 works with 128 not 80 like large-v2.

log_mel_spectrogram

what does it do?

log_mel_spectrogram

what does it do?

I also encountered this issue, and the error message is Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead.
The solution is to modify the following line of code:
mel = whisper.log_mel_spectrogram(audio).to(model.device)

to:
mel = whisper.log_mel_spectrogram(audio, n_mels=128).to(model.device)

By explicitly setting n_mels=128, it might resolve the issue and allow the code to run properly. If it still doesn't work, you can try changing n_mels = 128 back to n_mels = 80.
In general, when higher frequency resolution is needed, selecting n_mels = 128 is recommended. A higher value of n_mels provides more Mel frequency filters, capturing more details and frequency components in the spectrogram representation.


cloud: fix docker hub organization name

Fix docker organization name, because docker hub does not allow dashes (-) in the organization name.
@2opremio PTAL

LGTM, but please add a comment about the pull

LGTM, but please add a comment about the pull

@2opremio I will do the same change in both PRs, after you approved one of them I will merge both.

LGTM