Implement #123 - Validate currency code

Summary:
This PR suggests code to validate currency codes from parsed entities.
Expected behavior:
The validity of field currency_type from fare_attributes.txt will be verified before operations on  parsed entities representing row from fare_attributes.txt.

Please make sure these boxes are checked before submitting your pull request - thanks!

[x] Run the unit tests with gradle test to make sure you didn't break anything
[x] Format the title like "Fix #<issue_number> - " (for example - "Fix #1111 - Check for null value before using field")
[x] Linked all relevant issues
[x] Include screenshot(s) showing how this pull request works and fixes the issue(s)

@barbeau While I do agree with your points, I think here we are in a bit of a special case. The goal of the architecture is to have one rule = one use case = one test class.
Here is a special case as we are not following this general idea but we do have a ValidateGtfsTypes use case class. It does lacks a test class, and I think fixing that could satisfy the need for readability.


The CRD is not updating the StackId

Kabanero: 0.6.1
In the docs we can see
"When the product operator activates the CRD, it associates the pipelines in the pipelines archive with each of the stacks in the stack hub. The default pipelines are intended to work with all the stacks in the stack hub in the previous example. All of the pipeline-related resources (such as the tasks, trigger bindings, and pipelines) prefix the name of the resource with the keyword StackId. When the operator activates these resources, it replaces the keyword with the name of the stack it is activating."
But upon creating a new pipeline resource such as
apiVersion: tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: StackId-mcm-pl-pullrequest-binding

I get
\"StackId-mcm-pl\" is invalid: metadata.name: Invalid value: \"StackId-mcm-pl\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')}

It appears the Regex only accepts lower case letters.
I added a new pipeline object with id nodejs-mcm in my CRD

    stacks:
      repositories:
      - https:
          name: central
          url: https://github.com/kabanero-io/kabanero-stack-hub/releases/download/0.6.3/kabanero-stack-hub-index.yaml
      - https:
          name: custom-node-stack
          url: https://github.com/odrodrig/custom-node-stack/releases/download/0.5.0/custom-node-stack-index.yaml
      pipelines:
      - https:
          url: https://github.com/kabanero-io/kabanero-pipelines/releases/download/0.6.1/default-kabanero-pipelines.tar.gz
        id: default
        sha256: 64aee2805d36127c2f1e0e5f0fc6fdae5cef19360c1bb506137584f3bd0988cc
      - https:
          url: https://github.com/oiricaud/devops-demo-kabanero-pipelines/releases/download/v1.31/default-kabanero-pipelines.tar.gz
        id: nodejs-mcm
        sha256: cfbe25c9650304601273fac167521a1c1c73e4ea2de2dd672d574abf0c033a9a

I am not sure if this is a bug or if I am missing a step, but it appears the operator is not activating these resources nor replacing the keyword name with the stack id.
I merely edited the kabanero.yaml file and changed the version and included the sha256

@oiricaud you will need to specify #Kabanero! on activate substitute StackId for text 'StackId' on the first line of the yaml files where you want this substitution to happen.

Thank you @kvijai82 didn't realized I need to specify a comment or do you mean I need to replace StackId with the actual stack id i.e nodejs.

You can do either.  If you want the pipeline you are writing to get
activated individually for all the stacks in your stackhub, adding that
comment will get you a separate pipeline for each stack with the StackId
replaced by the stack name.  If you only want one instance of your pipeline
to be activated, you can just replace StackId in your pipeline name with
just nodejs or not specify a stack name at all if it applies to multiple
stacks.
On Thu, Jun 4, 2020 at 12:11 PM Oscar Ricaud<EMAIL_ADDRESS>wrote:

Thank you @kvijai82 https://github.com/kvijai82 didn't realized I need
to specify a comment or do you mean I need to replace StackId with the
actual stack id i.e nodejs.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kabanero-io/kabanero-pipelines/issues/395#issuecomment-638955595,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADBUMTKNFOZV2XGZC36QXB3RU7BSFANCNFSM4NSX3XKQ
.

Thanks you are a legend!

Glad it worked out!
On Thu, Jun 4, 2020 at 1:09 PM Oscar Ricaud<EMAIL_ADDRESS>wrote:

Closed #395 https://github.com/kabanero-io/kabanero-pipelines/issues/395
.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kabanero-io/kabanero-pipelines/issues/395#event-3407888269,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADBUMTLG2X54WYVBNNG75S3RU7ILJANCNFSM4NSX3XKQ
.


Add option to disable preferred batch size sweep

There are many styling script updates to model_analyzer/config/input/config_command_profile.py file. The real changes are Line 38, 435 - 441.

Yes. Will work on it.

Merged, as the next PR is likely to step on this one.


You only need to be a subscription reader to see Security Center

This seems to be incorrect:
A user needs to be at least a subscription, resource group owner, or contributor to be able to see Security Center in Azure.
As a Subscription Reader, or Security Reader you have access to Security Center.. but without the capability to modify anything.

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

ID: 10c4b9ab-975f-4050-65fa-2d510ac93fbb
Version Independent ID: d3a90700-a503-1b65-983c-5356ffb93610
Content: Security Center Planning and Operations Guide
Content Source: articles/security-center/security-center-planning-and-operations-guide.md
Service: security-center
GitHub Login: @rkarlin
Microsoft Alias: rkarlin

@stschulznz
Thanks for your feedback! We will investigate and update as appropriate.

@stschulznz We are engaging the author to further verify this with engineering.
@rkarlin Could you please verify this with engineering and update the document as necessary ?

These are the accurate permissions: https://docs.microsoft.com/azure/security-center/security-center-permissions#roles-and-allowed-actions I'll make sure to remove anything else from this page. thanks.
#please-close


The readme could use some expansion

For instance

Which features are implemented
How they are implemented

I agree it would be nice to have a "summary" of the design of each layer/extension with just more general information
Happy to write this up in an upcoming PR I have

Thanks!

Closing. There's detailed docs for the sync2 layer, any new extensions supported should follow this model. Timeline semaphore is what it is for the time being since most drivers support the extension at this point.


Timing: Add only DNS at start (new view)

From demo session 22.11.2021

It is possible to add only DNS - also adding start is optional.


Doesn't Appear to work with Top level node Exports

Hello!
Thanks for the great package! However, I ran into an issue with packages that use a exports for the "top-level" node modules export. This package only appears to work if the import request is for a submodule like import x from "my-node-package/submodule";. it is possible for a package to use the exports field for root like import x from "my-node-package";.
For an example of this, see solid js which uses exports quite extensively to support different code paths in the server vs the browser.
https://github.com/solidjs/solid/blob/main/packages/solid/package.json#L37
In other words, jest-node-exports-resolver seems to work correctly when importing solid-js/web but not solid-js. i was able to work around this by making two changes to the resolver:
    if (!request.startsWith("@")) {
      if (length > 1) {
        packageName = pkgPathParts[0];
        submoduleName = `./${pkgPathParts.slice(1).join("/")}`;
      } else { // <- added this else
        packageName = request;
        submoduleName = ".";
      }
    } else if (length > 2) {
      packageName = pkgPathParts.slice(0, 2).join("/");
      submoduleName = `./${pkgPathParts.slice(2).join("/")}`; // <- I'm not sure if this line works for @namepspace/root packages but i didn't have any packages lie that to test
    }

i also needed to add a check on conditions since this change alone broke for the package expect (which has a conditions of undefined) as far as i can tell, this is a good change regardless since we can skip the resolveExport function in more cases
        if (typeof exportValue === "string")
          targetFilePath = exportKey.endsWith("*")
            ? exportValue.replace(/\*/, submoduleName.slice(exportKey.length - 1))
            : exportValue;
        else if (conditions && exportValue !== null && typeof exportValue === "object") { // <- Modified this line
          function resolveExport(exportValue, prevKeys) {

I have no idea if these changes are good in general. i'd be happy to make a PR if you think this is good idea.

For an example of this, see solid js which uses exports quite extensively to support different code paths in the server vs the browser.
<EMAIL_ADDRESS>
That package.json file is using node condition, that's not supported by jest. That's the reason why it's not working for you. In fact, I have another PR open to add support to it. It's not a problem of jest-node-exports-resolver.

Do you have a test case that we can replicate?

@piranna good idea. i should have just done this from the get go.
https://github.com/dairyisscary/jest-enviorn-root
$ node --version
v16.13.0
$ npm install
$ npm test

if the test fails, that means that jest is using the server version of solid-js (./dist/server.js), when i want the browser version(./dist/solid.js). the test it will pass if it imports the correct version -- i verified that by monkey patching my local installation of jest-node-exports-resolver. hope this helps.

I've published a new version 1.1.5, can you check if it works?

@piranna its working swimmingly! thank you so much for your efforts. I consider this issue closed.
(side note, i was able to pull your 1.1.5 from npm but it looks like you've forgotten to push your changes to github too -- just a heads up)


503 Service Not Available

I followed the instructions in the repository. The terraform apply command finished successfully without any errors. But when I navigated to the mlflow_uri, I get the following text rendered: 503 Service Temporarily Unavailable. How do I fix this?
Please see the atttached screenshot.

it's a very generic error. Please check the containers' logs - if they are running and are healthy

Thank you. I figured out the issue. It had to do with setting up the oath settings. I think the README would benefit from some clarifications. I will fork the project and submit a PR if you are interested.

cool
if something is not clear, please submit a PR. Thanks

I created the pull request: https://github.com/mjedrasz/oauth2-mlflow-aws/pull/2


Unable to merge YouTube video and audio on both Linux and Mac

I've chosen the Question issue type because I'm sure this isn't a software bug but instead something I'm missing. I've spent most of the day trying to get this to work so I'm finally asking for help!
I'm running 2020.01.01.
I'm downloading all content from https://www.youtube.com/channel/UCw0WzNn6m2Na6ZW7rKqWI3g.

 However, when trying to use the bestvideo+bestaudio format to pull 1080 and merge, I get the stream error from ffmpeg.

mp4 and webm cant be merged into mp4. Do not touch --merge-output-format if you have no idea of what you are doing.

So is it not possible to download 1080p videos and merge with audio for
these particular videos?
On Fri, Jan 3, 2020 at 4:35 PM Sergey M<EMAIL_ADDRESS>wrote:

mp4 and webm cant be merged into mp4. Do not touch --merge-output-format
if you have no idea of what you are doing.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ytdl-org/youtube-dl/issues/23616?email_source=notifications&email_token=ABUW62AUR6ONNVRNIKXZ4SLQ36VQRA5CNFSM4KCSDNU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICEKEA#issuecomment-570705168,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABUW62DDDRU6FUMH4REUA6TQ36VQRANCNFSM4KCSDNUQ
.

Are you trolling or what?

No, I'm not trolling.
I just spent some more time going through the documentation and realized I
can use -f 'bestvideo+bestaudio[ext=m4a]' to achieve what I need to do.
I appreciate your help. Sometimes it's helpful to say this stuff "aloud".
On Fri, Jan 3, 2020 at 4:40 PM Sergey M<EMAIL_ADDRESS>wrote:

Are you trolling or what?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ytdl-org/youtube-dl/issues/23616?email_source=notifications&email_token=ABUW62G57IBB5OVMO2TCGX3Q36WEJA5CNFSM4KCSDNU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICEUBY#issuecomment-570706439,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABUW62FXSU4EUKJTD4SPXCLQ36WEJANCNFSM4KCSDNUQ
.


Add new impliedByAfterDate annotation to compatibility-date

The new annotation allows us to specify that a compatibility flag is implied if the named other flag is enabled, but only at the specified compatibility date or later. If the flag is marked experimental and experimental flags are not allowed, or if the flag is explicitly turned off, the annotation will not apply.
This will be used, for instance, to specify that nodejs_compat_v2 is implied on by nodejs_compat after a given date.

To confirm, what this lets us then provide is:

If you are using nodejs_compat today, and have a compat date of 06-25-24 — nothing changes
If you are then change your compat date to <future date> — we will (behind the scenes) use nodejs_compat_v2 instead

...allowing us to maintain existing behavior, and provide an explicit opt-in (via a compatibility date)

Test added. experimental check removed.


Supporting more and improved data serialization options

From what I can tell, you used to use your character resources for data, but you've since migrated to using JSON for everything.
However, there are distinct pros and cons to each data format.

Resources:

visual editing with drag/drop support
type-safe use of properties
support for methods, signals, constants
automatic data-sharing at global scale (separately loaded resources with the same path share the same instance; this is not true of Dictionaries which will produce duplicate when loading the same file multiple times).

JSON:

doesn't have any of the 3.2.x frustrations with exporting user-defined resources, namely because it's all done via code anyway.
can easily edit data in any text editor with a commonly understandable format that does not break as a result of Godot API changes.
easier to export to or import from alternative editor software.

It'd be better if multiple serialization options could be supported simultaneously, presenting users with options to suit their preference/scenario.
I can also see that you manually parse and put together the data in the editor_view.gd script which performs many other tasks as well. Might I suggest the following changes?

Use the Strategy pattern to define serialization strategies (or just use an enum inside some Saver class). Allow JSON and Resource as options. Make the selection configurable from the UI.
Switch to exclusively using Resources for in-editor work, rather than Dictionaries.
Switch to using inst2dict and dict2inst to automatically convert resources to and from JSON formats.
Write a separate class that exclusively handles the data for the app, e.g. a DialogicDB class. Have it handle your "iterating over directories" work, building the object instances, and storing them in Arrays/Dictionaries/whatever for use elsewhere. Then, have your editor_view.gd just create an instance of the DialogicDB class and initialize it. This will help clean up the editor_view.gd script.

Also, long-term, because editing arrays of resources in the Inspector kinda sucks, we could consider implementing a spreadsheet-like editor in the bottom panel for editing multiples of these resources at once (with each row being a different instance), at which point, the entire collection of resources could be saved into a single dialog_db.tres file. Give people the option of saving each resource out to a separate file in a directory, but also give the option to just have it all saved to a single resource file that stores an array of the other resources internally. There's actually already a proposal I wrote about it at godotengine/godot-proposals#13. Not a requirement of the above changes though.

It was impossible to effectively modify resources from a tool made using gdscript. I tried many things but it was really hard and even when managed to save updated resources they wouldn't update properly. Going with JSON was the easiest solution and I like the simplicity of it.
 I might split the code and separate the part that deals with files and the part that deals with the editor, but for now I think it works faster for me to have it all in one place.
Reading the proposal seems like implementing what you are saying will just be a lot of work to end up in the same place we are right now. The design idea behind this plugin is that you add it and don't think about it later, but if we start adding options for resources, files, where to save, single resource, many resoureces, editing in files, editing in the inspector, etc.. will just make the plugin feel less "magical".

if we start adding options for resources, files, where to save, single resource, many resoureces, editing in files, editing in the inspector, etc.. will just make the plugin feel less "magical".

I mean, if your goal is really to make it a "magical" and opinionated editing experience that hides the details from users, then I would still recommend finding a way to use resources if possible. All of the other suggestions I made were just assuming you'd want a less opinionated API.
You could just use a single dialogic_db.tres file to house all of the data related to the plugin for any given project. That hides the details far more than any collection of directories filled with foreboding <key>-<timestamp_id>.json file names would.
Something like this:
extends Resource
class_name DialogicDB
export var characters := []
export var character_keys := {}
export var dialogs := []
export var dialog_keys := {}
func add_character(p_key: String, p_char: Resource) -> void:
    if character_keys.has(p_key):
        characters[character_keys[p_key]] = p_char
    else:
        character_keys[p_key] = characters.size()
        characters.append(p_char)

# usage
extends Node
func _ready():
    var db = DialogicDB.new()
    var char_res = CharacterResource.new()
    char_res.name = "Bob"
    char_res.image = load("icon.png")
    db.add_character(char_res.name, char_res)
    ResourceSaver.save("dialogic_db.tres", db)

This overall can lead to more maintainable code as you have a guarantee of the structure of each record, the data types associated with them, autocompletion, etc.

Adding resources as options would make much harder the entire thing

In what way? The biggest drawback of resources is not being able to export them to the Inspector out-of-the-box, but you are creating a dedicated editor for them directly in your plugin, so that isn't even a concern. There aren't a lot of distinct advantages with Dictionaries I can think of except some insignificant memory saving within a given local scope.

It was impossible to effectively modify resources from a tool made using gdscript. I tried many things but it was really hard and even when managed to save updated resources they wouldn't update properly.

I'm actually very curious about which issues you encountered here. I'd be interested in figuring out how to resolve these issues. JSON certain works and is simplistic in nature, but the simplicity also results in limited features and less capacity to abstract and organize your codebase safely. I'd even be willing to try creating a working resource-based approach in a forked branch for you to test and play with.

Regardless, if you're adamant that you want to stick to JSON, and don't want to revisit the possibility of resources, then no harm done. I'll just drop the issue. Don't want to divide development with some competing repository or anything like that.

Hey @willnationsdev is this what you meant?
This is a custom resource (TimelineResource) that has an events array. Every event is a EventResource based and every event can had its own behaviour.
They can be saved as a resource file inside the resource tree (as like any other resource).

Yeah, although, if it had been me, I'd likely try to find a way to implement everything as resources. So, you'd have each character be a resource. They would have hash IDs for lookup in some sort of CharacterStore resource. That would be independent of a TimelineStore with Timeline resources. And then all the various Stores would be in a master DialogicStore resource that holds everything.
Now, I remember I tried implementing a CharacterStore in my fork at one point, and I ran into a bug where Resource elements in a Dictionary wouldn't persist properly. Ended up simulating them all as separate properties instead, and then I took that concept, abstracted it, and created a class in Godot Next for it (something like HashArray?). Never got around to testing it further or merging the character implementation into Dialogic. And to my understanding, it was a bug that will be fixed in a future Godot version anyway (already in 4.0, not sure if already backported).
But yes, I did mean having actual Resource types to represent the data types used by Dialogic. Even in a "worst case scenario" of only using JSON files, you could probably still write script classes that extend ResourceFormatLoader in order to define your own custom format type that matches on .character.json or .timeline.json or something to have auto-recognized as specific Resource instances. There are many possible solutions.

I'd likely try to find a way to implement everything as resources. So, you'd have each character be a resource.

I'm trying to make everything like a resource as well.

Thank you for answering this very old problem, I will take your advice and see what happens if I try to make a PR (since the dialog_node is becoming too complex)

@willnationsdev I tried to save the DB (using ResourceSaver.save) after modifying its properties while testing in game (because i'm too lazy to reload the plugin). The resource file is not saved.
There's no problem if i do it with the editor (as far i know based on https://github.com/godotengine/godot/issues/6603). I was just wondring if you know a workaround (at least until https://github.com/godotengine/godot/issues/6603 get closed)

@AnidemDex Can't exactly suggest a workaround until we know what the actual problem is. You'd need to start with a basic resource save and move up in complexity until you reach the same level of complexity as your DB resource, just to ascertain what exact conditions prevent proper saving. I suspect it has something to do with recursive saving of custom resources within an exported Array property on another resource script, but I'd need to know what actual logic your DB script has in order to better diagnose the problem. If it is the above case, you might have to try using the ArrayMap script I wrote for Godot Next.
Also, issue 6603 appears to already be closed, so I'm not sure if you meant to refer to a different issue, or...?

Also, issue 6603 appears to already be closed, so I'm not sure if you meant to refer to a different issue, or...?

@willnationsdev My mistake, i was talking about #30302, i edited my previous message.
Don't worry. While saving the database doesn't work in game, the editor can save the database while its excecuted as plugin, as expected.

... but I'd need to know what actual logic your DB script has in order to better diagnose the problem.

I store an array of strings (PoolStringArray) that gives me the path for every resource, instead saving the resource directly. You can see it here

... you might have to try using the ArrayMap script I wrote for Godot Next.

I tried to use it, I swear, and while I was able to save the resources, I didn't know how to expose them in the inspector. I need expose them to know if the editor plugin is doing something without a wall of print_debug calls, at least, while debugging. I will probably need it later, but I have not been able to understand its nature.

I'll have to look at your script when I get a chance. As for the ArrayMap, there's a decent chance there are issues with it since I never got to fully test it when I was writing it. XD So it may not necessarily be something you're doing wrong. No worries. If the properties aren't being exposed to the editor, then it's probably because the _get_property_list() method isn't properly adding the PROPERTY_USAGE_EDITOR flag to their usage value. That's what makes properties appear in the Inspector. I don't have time to debug it now though. Sorry. Lots of stuff with work.

I'm closing this one since we are now using resources for the new stuff


Radiant Amphorae can trigger a NullPointerException from Dispensers

Specifically if the tank they are linked to goes away.

Fixed in f39a520ff081419b0895398e1a0953b0776c052a.


build: adjust for new build layout

Moving CoreFoundation into the root is needed to actually get the proper
dependency tracking for Foundation builds. This adjusts the use of it
in swift-package-manager.

Please test with following PRs:
apple/swift-corelibs-foundation#2004
@swift-ci please smoke test


changed a few things to match the documentation

changed the directory of graph_data.txt
added requirements.txt which was not there in the original repo

removed the requirements as not needed. check once. and change if any error or something is missing. thanks for noticing

funny


Move flavor dimensions to another file

Hello!
I have an application with more than 30 flavors, there's some automations I'm doing via flavorizr + local scripts so I can structure it better.
Recently I'm having a lot of trouble solving Git conflicts in the application build.gradle due to the size of these flavors config + our application dependencies.
I think that creating an product-flavors.gradle and applying it on build.gradle would organize it better and make it simpler to do Android changes in the project.
Do you guys have an suggestion of how I can organize it or examples in big projects like mine?
If you think it's plausible I can open a PR with this change

example:
product-flavors.gradle:
android {
    flavorDimensions "flavor-type"
    productFlavors {
        dev {
            dimension "flavor-type"
            applicationId "com.app.dev"
            resValue "string", "app_name", "app dev"
        }
        hml {
            dimension "flavor-type"
            applicationId "com.app.hml"
            resValue "string", "app_name", "app hml"
        }
        prd {
            dimension "flavor-type"
            applicationId "com.app.dev"
            resValue "string", "app_name", "app hml"
        }
    }
}

build.gradle:
// ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) -----
apply from: 'product-flavors.gradle'
// ----- END flavorDimensions (autogenerated by flutter_flavorizr) -----


deliveryPhoto does not contain a photo

We are trying to capture a Proof of Delivery (PoD) in our workflow via API - and a key element to this is the signature and the photo.
I see the deliveryPhoto object - which shows a photo string (which I expected to be a Base64 encoded image) - but the string "photo" is missing from my response;

   "deliveryInformation": {
                            "location": "Front door",
                            "deliveryPhoto": {
                                "photoCaptureInd": "Y",
                                "photoDispositionCode": "V",
                                "isNonPostalCodeCountry": false
                            }
                        },

How to get the photo? Given one was captured?

I think I met the same problem. How to get the pod(not the signature image) from "Tracking" API? or another API?

Since switching to the YAML schemas the whole section of the DeliveryPhoto is now missing, signature is empty, online ups tracking page shows a delivery picture for my test shipments, how do we get this in the API now?

I just called tech support about this and was told to send an email, which i just did. Our current system uses the old system, where the html page was included in the response.
Anyway, how are you all downloading the proof of delivery now? Can you even download it online?

I got a reply from UPS Developer API Support:

There are gaps between the OAuth RESTful Track API and XML/SOAP. These gaps have been identified and scheduled for testing and future release. The legacy Track API structure is similar but not the same as the Restful structure used with OAuth. Do not use the legacy track API developer guide to troubleshoot.
Track Details

Alternate tracking numbers (USPS only)
GMT information
Milestones
Reference number
Direct to Retail (D2R), Retail to Retail (R2R)
Delivery Signature (Signature Required and Adult Signature Required)

Release date: TBD
ReceivedBy
Package Dimensions
HTML Proof of Delivery document
Track by Reference number
Not currently supported:
Barcode (BCDN)
Delivery Photo

When i asked what to do about the proof of delivery and if i should just continue using the old system:

Yes, If you are comfortable using the XML API as of now you can use that until the releases are done for the new OAuth RESTful Track API.

So, i guess we'll continue to use the old system. For anyone else looking at what to do, Legacy UPS Developer Kit says:

By June 2023, UPS will no longer issue new API access keys.

Being that date has passed, if you don't have an access key already, you might be out of luck. But even then, the developer kit says:

Beginning June 3, 2024, access keys will no longer be supported for authentication to any UPS APIs.

So, it's only good for a short while longer, in any case. I really hope they finish implementing by then.

Add this {"returnPOD": "true"} to query params.

@chacham2 is the content good enough for your purposes? I struggle a bit, see #76

Hi, thank you for your comment. The Track API does not return the delivery photo. The deliveryPhoto object in the Track API is to show if a photo exists.

The deliveryPhoto object in the Track API is to show if a photo exists.

But how do you get the photo?


A few improvements to UrlFetcher

Having the HTTP verb in the UrlFetcher::Request makes retries a lot easier, and also everything is a bit more general (no switch statement to call different Get/Post/etc methods).

LGTM


cloudcost-exporter: support GCP c4a compute and local hyperdisks

Follow up from #182992.
Add GCP c4a compute and local storage support to cloudcost-exporter:
### Tasks
- [x] compute cost: cpu and memory cost for these new GCP instance type(#341)
- [ ] local storage cost: `hyperdisk-*` local disks (required by these new instances)

Handling the ARM chipset was fairly straight forward(#341). The hyperdisk requires a bit more thinking. I pushed an MVP PR(#344) that will emit cost metrics just for the capacity. This is ideal because our initial attempts at using hyperdisks will be limited to configurations where throughput and IOPS and the default values, which are effectively free.
@jjo posed an interesting question, which is how do we expose the other pricing dimensions? I did a bit of a deep dive of Grafana's internal usage of the metrics. Most of our calculations for TCO of storage boil down to this:
...
joining the pod information
                      * on (cluster, namespace, persistentvolumeclaim) group_left(pod) (
                        # deduplicate
                        group by (cluster, namespace, pod, persistentvolumeclaim)(
                          kube_pod_spec_volumes_persistentvolumeclaims_info
                          # filter out failed pods
                          * on (cluster, namespace, pod) group_left() (
                            group by (cluster, namespace, pod)(kube_pod_status_phase{phase="Running"} == 1)
                          )
                        )
                      )
                      # Multiply for the hourly cost per pvc.
                      * on (cluster, volumename) group_left() (
                          label_replace(
                          label_replace(
                          cloudcost_gcp_gke_persistent_volume_usd_per_hour
                          , "volumename", "$1", "persistentvolume", "(.*)")
                          , "cluster", "$1", "cluster_name", "(.*)"
                        )
                        )
                      # Divide by 60 to get the per-minute cost.
                      / 60

Note that the only calculation we're making is finding pod's that are running, then joining that against the hourly cost of persistent volumes associated with that volume. In previous iterations, the cost metric would emit the list price for a specific volume. In our current approach, we bake that in to the metric so that we don't need to put more pressure on Prometheus to make the calculations.
Because of that design decision to calculate the total hourly cost for the metric, I believe we can also add  the cost of the other dimensions necessary for Hyperdisks. This would require a subtle change to our storage pricing map(https://github.com/grafana/cloudcost-exporter/blob/414f655cece6402ce6f3e9216befe5df1d3447a4/pkg/google/gke/pricing_map.go#L148)
We'd need to expand that from simply being a float64 to being something like
type StoragePriceDimensions struct {
    Capacity float64
    IOPS     float64
    Throughput float64
    HA       float64

Then the disk would need a method that gets the associated metadata for each dimension and calculates the cost based upon those dimensions.
What do you think @jjo?

[...]
We'd need to expand that from simply being a float64 to being something like
type StoragePriceDimensions struct {
Capacity float64
IOPS     float64
Throughput float64
HA       float64
Then the disk would need a method that gets the associated metadata for each dimension and calculates the cost based upon those dimensions.
What do you think @jjo?

💯 indeed we'd "just" need to change cloudcost_gcp_gke_persistent_volume_usd_per_hour to feed from those extra three dimension (set at creation time, e.g. from a Kube storage class.
In that sense, is interesting to realize that cost has always been "provisioned ", previously only one (Capacity), now these added to hyperdisks.

dimension
per-month price

Hyperdisk Balanced provisioned space
$0.083 per GiB

Hyperdisk Balanced provisioned IOPS
$0.005 per IOPS provisioned

Hyperdisk Balanced provisioned throughput
$0.042 per MB/s provisioned

Hyperdisk Balanced High Availability provisioned space
$0.1664 per GiB

Just to play with an example, disk provisioned with: 100GiB space, 10K IOPs, 1000 MB/s BW, no HA (for simplicity), using the above table should give for  cloudcost_gcp_gke_persistent_volume_usd_per_hour:

currently is:

0.01137 [USD/hr] =
  100 [GiB] * 0.083 [USD/GiB/mo]
  /
  (30.4 [day/mo] * 24 [hr/day])

new should be:

0.1374 [USD/hr] =
  (100 [GiB] * 0.083 [USD/GiB/mo] + 10000 [IOps/mo] * 0.005 [USD/IOps/mo] + 1000 [MBsec] * 0.042 [USD/MBsec/mo])
  /
  (30.4 [day/mo] * 24 [hr/day] )

Very strong plus one on the calculations. The only very minor nit to be added @jjo is that GCP charges for usage after a certain point. So it would be closer to
100 [GiB] * 0.083 [USD/GiB/mo] + (10000 - freeIOPS) [IOps/mo] * 0.005 [USD/IOps/mo] + (1000 - freeMBsec) [MBsec] * 0.042 [USD/MBsec/mo]

Very strong plus one on the calculations. The only very minor nit to be added @jjo is that GCP charges for usage after a certain point. So it would be closer to
100 [GiB] * 0.083 [USD/GiB/mo] + (10000 - freeIOPS) [IOps/mo] * 0.005 [USD/IOps/mo] + (1000 - freeMBsec) [MBsec] * 0.042 [USD/MBsec/mo]

+1  math-wise just be careful to not go negative on those factors (i.e. max(factor, 0)) , if for whatever reason the scraped IOps or MBsec happen to be below the free threshold.

Very strong plus one on the calculations. The only very minor nit to be added @jjo is that GCP charges for usage after a certain point. So it would be closer to
100 [GiB] * 0.083 [USD/GiB/mo] + (10000 - freeIOPS) [IOps/mo] * 0.005 [USD/IOps/mo] + (1000 - freeMBsec) [MBsec] * 0.042 [USD/MBsec/mo]

+1 math-wise just be careful to not go negative on those factors (i.e. max(factor, 0)) , if for whatever reason the scraped IOps or MBsec happen to be below the free threshold.

Great call out! Effectively we need to do Math.Max(configuredDimension - freeDimension, freeDimension).

Very strong plus one on the calculations. The only very minor nit to be added @jjo is that GCP charges for usage after a certain point. So it would be closer to
100 [GiB] * 0.083 [USD/GiB/mo] + (10000 - freeIOPS) [IOps/mo] * 0.005 [USD/IOps/mo] + (1000 - freeMBsec) [MBsec] * 0.042 [USD/MBsec/mo]

+1 math-wise just be careful to not go negative on those factors (i.e. max(factor, 0)) , if for whatever reason the scraped IOps or MBsec happen to be below the free threshold.

Great call out! Effectively we need to do Math.Max(configuredDimension - freeDimension, freeDimension).

I think that's actually Math.Max(configuredDimension - freeDimension, 0) (i.e. no cost if not over free)

I'm going to place this back into TODO until we are closer to adopting hyperdisks. For now we handle the storage costs, and the remaining task is to attribute costs for IOPS and the other dimensions. One key bit I learned from this is that we'll need to handle the SKU similar to what we do with CPU/Memory, and write out regex's to match properly. See https://github.com/grafana/cloudcost-exporter/compare/feat/hyperdisk-price-calculator?expand=1 for where I stopped. Specifically, https://github.com/grafana/cloudcost-exporter/compare/feat/hyperdisk-price-calculator?expand=1#diff-c58feeadbe3b07fb5e4ff69378e1db9ed311c68e971e6bcdc2d91828c7226089R196-R197 is where things started to break down and the naive implementation no longer works.


Random updates

See title

This request does not contain any changes: https://github.com/iptv-org/database/pull/3841/files


Add #modding-showcase channel features

Add support for self-curated submission and gallery channels.
config.py
Add fields:

MOD_CHANS - set<int> - List of channel IDs for self-curated-channels.
SHOWCASE_CHAN - int - Channel ID for showcase channel for client to repost messages in MOD_CHANS.
SHOWCASE_ROLES - set<int> - List of role IDs capable of making submissions in MOD_CHANS.

main.py
Add methods:

verify_art(message) - Replace message reposting from ART_CHANS to VERIFY_CHAN.
publish_art(message) - Replace staff reaction handling from VERIFY_CHAN to GALLERY_CHAN.
publish_mod(message, reaction) - Read reacted posts in MOD_CHANS and repost directly to SHOWCASE_CHAN with original embedded content.

Note: this commit also changes gallery embed descriptions from VERIFY_CHAN message contents with message.text.split('\n')[-2] to [1:-2] in publish_art(message), which you might not want.


Add Example on Spelling Errors/Out of Vocabulary

It would be interesting to add an example that demonstrates how certain word embeddings handle spelling errors. We've currently got part of this in the "observations" section in the guides but we can probably move this into he more "blog-like" examples section as described https://github.com/RasaHQ/whatlies/pull/176.

@koaning Hey I want to work on this

By all means!
Do you have an idea for the blogpost/document? What might be cool; try and see what happens when you submit words vs. words with typos generated with nlpaug.

So you are talking about this on
blogpost right  @koaning ?

Yes! But feel free to share some other ideas if you have any.

Hello @koaning ,
How about this  ?
The Letter
Dear Jane,
I was delighted to read you're letter last week. Its always a pleasure to recieve the latest news and to here that you and your family had a great summer.
We spent last week at the beach and had so much fun on the sand and in the water exploring the coast we weren't prepared for the rains that came at the end of the vacation. The best parts of the trip was the opportunities to sightsee and relax.
My kids are back in school to. I find their are less things to worry about now that the kids are at school all day. There is plenty of fun things to do in the summer, but by August, I've running out of ideas. I've excepted the fact that we'll have to think up brand-new activities next summer; hoping to round up some creative ideas soon.
Thanks again for your letter!
Sincerely,
Karen
The Mistakes

"You're" – The contraction "you're" means "you are." The word "your" should be used with a noun to indicate possession, as in "your letter."
"Its" – "Its" is a word indicating possession, as in "its wheels." "It's" is a contraction meaning "it is." This sentence should read "It's always a pleasure…"
"Recieve" – You'll need to use the "I before E except after C" rule to find the correct spelling of "receive" here.
"Here" – "Here" indicates location. The writer should have used the homonym "hear," which indicates listening.
The third sentence is a run-on sentence – A period or a comma and conjunction would make a big difference in the readability of the phrase.
Subject-verb agreement – The subject of the sentence is "parts" (which is plural) and the verb is "was" (which is singular). The sentence should read, "The best parts of the vacation were…"
"To" – "To" is a preposition, as in "to the beach." Here, the writer should use "too," meaning also.
"Their" – "Their" is possessive. "They're" means "they are." In this case, the writer should use the third homonym, "there."
"Less" – "Less" should be used with an amount that you can't count, as in "less money" or "less animosity." The word "fewer" should be used with amounts that you can count, as in "fewer things," "fewer items," or "fewer stores."
Subject-verb agreement – "Is" is a singular verb. In this sentence, the verb should be plural, as in: "There are plenty of fun things to do…"
"I've running" – This verb should be "I am running" or "I have run." With contractions, "I'm running" or "I've run."
Incorrect word usage – The writer should have used the word "accepted" instead of "excepted."
Incorrect semi-colon usage – A semi-colon should be used between two related complete sentences, i.e. two connected independent clauses.

The Corrected Letter
Dear Jane,
I was delighted to read your letter last week. It's always a pleasure to receive the latest news and to hear that you and your family had a great summer.
We spent last week at the beach, and we had so much fun on the sand and in the water. We explored the coast, but we weren't prepared for the rains that came at the end of the vacation. The best parts of the trip were the opportunities to sightsee and relax.
My kids are back in school too. I find there are fewer things to worry about now that the kids are at school all day. There are plenty of fun things to do in the summer, but by August, I've run out of ideas. I've accepted the fact that we'll have to think up brand-new activities next summer, though; I'm hoping to round up some creative ideas soon.
Thanks again for your letter!
Sincerely,
Karen

These are all examples of common spelling errors, but how are you planning on relating that to the whatlies package?

I think it will be like when someone type wrong word or vocab it will automatically correct it like i did in the LETTER above.
(or if i'm not getting this issue properly ? please guide me sir @koaning )

I was thinking about a guide that demonstrates how word embeddings have a hard time with spelling errors.
If a backend has the word "spelling" in it, it may not have the word "speling". It'd be interesting to compare spaCy vs. BERT vs. bytepair when it comes to these typos/spelling errors. It could highlight some of the tools in this repo with cool visuals too.
I was thinking along these lines.

So we are comparing wrong word vs right word in the doc right?

We're comparing the embeddings for a word with correct spelling vs. an incorrect spelling, yes.

So I have to add examples in docs?

That's the goal, yes, have you seen the examples section in the docs?

Not yet. could you provide me the link of that docs Please

https://rasahq.github.io/whatlies/examples/arabic/
On Wed 8. Sep 2021 at 15:01, Ayush Anand @.***> wrote:

So I have to add examples in docs?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/RasaHQ/whatlies/issues/181#issuecomment-915218034,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHY7D7DDYSJ5QGA6QD6VCTUA5NBNANCNFSM4QNAR34Q
.

--
- Vincent

Okay so we have to make documentation page for other languages like this

I sent the examples section of the docs, which is meant as a place where examples can be shared of what you can do with the library. The first example shows how you might use it for arabic benchmarks, but there's another example that shows how to use whatlies to evaluate fairness mitigation techniques (here).
The goal of this issue is to add another example to the docs here, that explores how this library can be used to show what the effect of spelling errors is on the output embeddings.

I'm closing issues because ever since the project moved to my personal account it's been more into maintenance mode than a "active work" mode.


How to use only wbn and web-sign packages to create an swbn for IWA?

Depending on which package counting method is used this library depends on 496 to 514 packages.
It looks like wbn and wbn-sign and imported we wind up with 9 total packages

wbn
wbn-sign
to-data-view
read
mute-stream
mime
commander
cborg
base32-encode

Assuming we just want to bundle an HTML page and a single .js file - without xterm and so forth, how would we do that using only wbn and wbn-sign?

Deconstruction of the rollup-plugin-webbundle to use wbn-sign-webcrypto (wbn-sign using Web Cryptography API) and wbn https://github.dev/guest271314/webbundle for use with node, deno, bun.


ngOptions not observing changes in model in chromium browser

Plunk for a problem is here.
After timeout no option is selected in <select> control. This issue only occurs in Chromium, I have no problems with Firefox (and since I am on linux box I cannot test on IE).
I tested it on Angular 1.2, 1.3 and 1.4 with Chromium Version 44.0.2403.89

Are you sure it doesn't work in 1.4? I've tested with latest Chrome + angular 1.4.6, and it works. I'm asking because that looks a lot like a bug that was fixed in 1.4.

OK, my mistake when I created Plunk I used 1.3 instead of 1.4. Checked again and it works in 1.4. Sorry for troubles.


Restrict iframe reload to URL changes

[#175254598]
Normally, I’m in favor of following the exhaustive-deps rule’s recommendations rather than disabling it, but in this case I think it makes sense to go the other way. With this effect in particular we’ve repeatedly gone through the cycle of adding new code to the effect, adding the recommended identifiers to the list of dependencies, and then figuring out what combination of useCallback, useMemo, and useRef will suffice to make sure that none of them trigger a reload of the <iframe>. Rather than perpetuating that cycle, with this PR I propose to say explicitly what we mean, namely that only a URL change should trigger an <iframe> reload and any reload triggered otherwise is a bug.

I was off today, but I've just noticed it. I think this particular change would work, but e.g. I'm not sure if setters returned from useState remain constant all the time or not. If they can be reinitialized randomly, it can introduce some bugs here. I guess theoretically they can, but in practice, they are not. 😉
Also, when this useEffect is extended in the future, it might lead to similar issues.
I definitely noticed issues with iframe being reloaded before and I thought a bit about it. I think we shouldn't really try to prevent that by using useCallback/useMemo in parent components, as then parent makes assumptions about child implementation, and useCallback can still use dependencies and it can be re-run when we don't really expect it.
I guess the safe solution here would be to wrap all the necessary variables in refs, but do all that in IframeRuntime component, not in parents (and keep ref values updated). It'd ensure that all the callbacks in this problematic useEffect would always use the most recent value. It doesn't look pretty, but it might be the safest option.

@pjanik I didn't want you to think I'd forgotten about this discussion. 😉 The PR got merged and I got busy with other things, but I think it's an important conversation to have.

I was off today, but I've just noticed it. I think this particular change would work, but e.g. I'm not sure if setters returned from useState remain constant all the time or not. If they can be reinitialized randomly, it can introduce some bugs here. I guess theoretically they can, but in practice, they are not.

The setters returned from useState() are guaranteed to be stable.

I definitely noticed issues with iframe being reloaded before and I thought a bit about it. I think we shouldn't really try to prevent that by using useCallback/useMemo in parent components, as then parent makes assumptions about child implementation, and useCallback can still use dependencies and it can be re-run when we don't really expect it.

Another way to look at it is that parent components should always use useCallback/useMemo for props passed to child components precisely because they shouldn't make assumptions about how those props will be used in the child implementation. The key difference is that only the creator of the entity has the ability to specify dependencies in useCallback/useMemo whereas downstream clients can only use it as provided (i.e. re-run the effect whenever the prop changes according to the parent implementation) or wrap the prop with useRef (i.e. never re-run the effect because of it at all). The creator of the entity has a scalpel while the recipient only has a cudgel. The child can't know whether a prop change is meaningful unless the parent restricts changes to meaningful ones.

I guess the safe solution here would be to wrap all the necessary variables in refs, but do all that in IframeRuntime component, not in parents (and keep ref values updated). It'd ensure that all the callbacks in this problematic useEffect would always use the most recent value. It doesn't look pretty, but it might be the safest option.

There are two risks to be considered here with respect to the "safest option":

Future changes to the code could introduce new props that should trigger a re-run of the effect but don't (e.g. because the exhaustive-deps rule has been disabled).
Future changes to the code could introduce new props that shouldn't trigger a re-run of the effect but do.

A defining characteristic of the IframeRuntime component is that reloading the <iframe> leads to a terrible user experience and should be avoided except when absolutely necessary. If IframeRuntime were implemented as a class component, we would put this code in componentDidMount and never give it another thought because doing so precisely expresses the desired behavior of initializing the handlers on initial render and never reloading the <iframe> again during the lifetime of the component. It is only because functional components/hooks require us to put our one-time-initialization code in the "render" function via useEffect that we're having this discussion at all.
As such, my engineering assessment is that the likelihood of occurrence of the first risk above is essentially 0, because not reloading the iframe is one of the defining requirements of the component. Conversely, the likelihood of occurrence of the second risk is ~100%, because it has already occurred multiple times and seems to occur whenever new props/features are added. Disabling the exhaustive-deps rule is analogous to putting the code in componentDidMount for a class component. It expresses the engineering assessment that the default behavior of the code should be to not re-render as future changes are made. If some future prop is introduced which should trigger a re-render, then it is incumbent upon that engineer to recognize the unusual nature of that prop and to understand that it should be added to the dependencies without being instructed to do so by the exhaustive-deps rule. In that context, wrapping everything in refs just seems like unnecessary busy-work.
I've said it before, but what I'd really like is a version of useEffect() which takes a second array of symbols to ignore. Then code like this would work, but if the code changed any new symbols would still be flagged if appropriate:
const unusedButShouldTrigger = 1;
const usedButShouldntTrigger = 1;
useEffectIgnorableDeps(() => {
  ... code that uses usedButShouldntTrigger but not unusedButShouldTrigger
}, [unusedButShouldTrigger], [unusedButShouldTrigger, usedButShouldntTrigger]);

but you'd have to also write a custom version of the exhaustive-deps rule to understand the useEffectIgnorableDeps() hook and to respect the second array. I actually went so far as to look at the source for the exhaustive-deps rule and I don't think it would be too hard to extend it to support the second "ignore" array, but I don't know that it's worth it.

As such, my engineering assessment is that the likelihood of occurrence of the first risk above is essentially 0, because not reloading the iframe is one of the defining requirements of the component. Conversely, the likelihood of occurrence of the second risk is ~100%, because it has already occurred multiple times and seems to occur whenever new props/features are added.

I agree with this assessment and everything that's below. useRefs would provide additional safety against the first risk in case it's > 0% at the cost of more lines and hitting reload issues again in the future. But I agree the first risk is pretty close to 0% in this particular case, as iframe reloading is so specific and so disturbing for users.

The child can't know whether a prop change is meaningful unless the parent restricts changes to meaningful ones.

usePrevious could be used to check this. Still, if prop change has some critical effects like iframe reload, I think it should be handled in the affected component => child. Either by refs, empty dependencies array, or some other way. I agree that useMemo or useCallback won't hurt and we can use it often, but I just wouldn't make it obligatory or a way to fix issue in a child component. Just an optional (performance) improvement. This can be totally enough when child component rerender isn't that visible as in this particular case.


Target Adaptive Loss

Where can we find the implementation of the target adaptive loss mentioned in the paper?
Also what is the difference between the concave_dps and concave_dps_w? It seems the Softmax, attention, and pooling only exists in concave_dps_w.py?

Hi, Shen,
The target adaptive loss can be seen at the 302nd  in train_sf_partial.py. More general version may be delivered in future. Concave_dps corresponds to the PIPO part, the outputs of PIPO are five feature maps, which helps we learn the weights for different scales. On the other hand, concave_dps_w correspond to PIPO + FAN, the output of is a probability map. Thus softmax and attention are added in concave_dps_w. That is to say, concave_dps (PIPO) is part of concave_dps_w (PIPO+FAN).
Best,
Xi

Thanks you. Sorry, forgot to reply earlier. Also, in the paper it says " For each epoch, we randomly select three continuous slices containing target organ label from all the CT training volumes" is that the number of input channels to the model - the input size would be (batch size, 3, width, height)? Would the target also be the masks for those three slices or only the middle slice?

Yes. The input size is set to be (batch size, 3, width, height) to enhance the context information. It's also named as 2.5D network. Only the mask of middle slice is used for training.

That makes sense. Thanks!


Namespaces are not getting created because it could not find roleTemplates

What kind of request is this (question/bug/enhancement/feature request):
Question/Issue
Steps to reproduce (least amount of steps as possible):
When I create namespace, it gets stuck in activating state. The namespace is created under a project in rancher.
I am using rancher 2.3.4v and k8s version 1.16.3. I imported an existing k8s cluster into rancher. When I create a namespace through rancher in a project, it gets stuck in activating state. When checked on k8s end, it is active. The user through which I am creating namespace in rancher is having project owner access. The error from rancher says "[ERROR] NamespaceController ******* [namespace-auth] failed with : couldn't get role template rt-j6dbw: roleTemplate.management.cattle.io "rt-j6dbw" not found" But I could not find the roleTemplate at all.
If i create a namespace outside the project and move into into error occurring project, the namespace disappears for few users.
Result:
Namespace gets stuck in activating state
Other details that may be helpful:
Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): 2.3.4
Installation option (single install/HA): Yes

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported): Imported
Machine type (cloud/VM/metal) and specifications (CPU/memory): VM
Kubernetes version (use kubectl version): 1.16.3

(paste the output here)

Docker version (use docker version):

(paste the output here)

I am not able to reproduce in Rancher version: v2.3.4 and an imported RKE cluster with k8s v1.16.3-rancher1-1 (Node roles: 1 all, 2 workers).
I import the cluster.
I add user1 as standard user.
Cluster gets active.
As admin I create project1 and add user1 as project owner.
As user1 I create a namespace ns1 in project1. It goes active.
As admin I create namespace ns2 in project1. It goes active.
Login as admin add user2
As user1 I create project2 and add user2 as project owner.
As user2 I create a namespace ns3 in project2. It goes active.
As user1 I create namespace ns4 in project2. It goes active.
As admin I create namespace ns5 in project2. It goes active.
@DinshKW44 do you have any more details to share to see if I can reproduce with more info?

I am really sorry. Firstly, we were on k8s version 1.12.3. When on 1.12.3, I created a project and added users to it. Also, some of the users were given project owner access and some were given custom role access such as LimitRange with Project owner inherited, LimitRange, ServiceMonitor & Prometheus. It worked all fine.
After upgrading the cluster to 1.16.3, I am starting to face these issues. None of the custom roles were edited. When in 1.16.3, one of the user with project owner access creates a namespace, it goes into activating state and for some of the users, the namespaces disappears (they could not view it). When checked internally in the k8s cluster, I can view those namespaces. For example:
I have cluster admin access and I create a namespace, I get the following error:
2020/04/17 13:31:50 [ERROR] NamespaceController test-willbedeleted [namespace-auth] failed with : couldn't get role template rt-j6dbw: roleTemplate.management.cattle.io "rt-j6dbw" not found
2020/04/17 13:31:50 [ERROR] NamespaceController test-willbedeleted [namespace-auth] failed with : couldn't get role template rt-j6dbw: roleTemplate.management.cattle.io "rt-j6dbw" not found
2020/04/17 13:31:51 [ERROR] NamespaceController test-willbedeleted [namespace-auth] failed with : couldn't get role template rt-j6dbw: roleTemplate.management.cattle.io "rt-j6dbw" not found
When I search for the roleTemplate, I do not find it:
kubectl get roleTemplate | grep rt-j6dbw

@DinshKW44 thanks for the extra information I will take a look at this and try to reproduce.

Hey @izaac thank you. I found the issue. My teammate, when he checked, he observed that one of the users had no roles assigned inside the project. Normally rancher does not allow to add a user to project without a role but this is weird. Somehow the  user did not have any role.  As soon as we deleted the user without a role, everything got fixed.

@DinshKW44 I was about to update the issue and tell you I wasn't able to reproduce, I tried a few scenarios around Custom Roles and Project access. It's not straightforward since it's a very old k8s version upgraded to 1.16.3. There are built-in and default roles too, it might be the reason the user was allowed?
Thanks for updating.

Closing, open if this is still an issue or if it is reproducible on latest Rancher versions.