Rebase Kubeflow repo (1.4 --> 1.6)

Thank you @brendangadd, @Souheil-Yazji for the following instructions on how to rebase:
git remote add upstream https://github.com/kubeflow/kubeflow/
git checkout upstream/master # make sure you have the forked repo's master locally
git checkout stc-master
git pull
git checkout -b {your-new-branch-to-rebase-fork}
git reset $(git merge-base upstream/master $(git branch --show-current)) # this will reset your current branch to a good merge base between it and the upstream master, essentially the idea is to undo all commits not on upstream master
git add .
git commit -m "commit message"
git rebase upstream/v1.6.0

I tried to stay upstream as much as possible.
The folders I tended to take our changes from were:
components/centraldashboard
.github/workflows

Linked Issue: https://github.com/StatCan/daaas/issues/1341

Running tests locally:

><EMAIL_ADDRESS>test-client
> karma start --single-run

clean-webpack-plugin: /home/kathy/Projects/kubeflow/components/centraldashboard/dist/public has been removed.
ℹ ｢wdm｣: Compiled successfully.
15 09 2022 13:53:36.368:INFO [karma-server]: Karma v5.1.1 server started at http://localhost:9876/
15 09 2022 13:53:36.370:INFO [launcher]: Launching browsers ChromeHeadlessTest with concurrency unlimited
15 09 2022 13:53:36.417:INFO [launcher]: Starting browser ChromeHeadless
15 09 2022 13:53:36.935:INFO [Chrome Headless 105.0.5195.125 (Linux x86_64)]: Connected on socket jnwhk1SdlWit-ug0AAAA with id 53600659
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 0 of 66 SUCCESS (0 secs / 0 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 1 of 66 SUCCESS (0 secs / 0.075 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64) Activities List Shows Activities in descending by lastTimestamp FAILED
	Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	Error: Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	    at <Jasmine>
	    at UserContext.<anonymous> (webpack://centraldashboard/public/components/activities-list_test.js:90:23 <- public/index_test.js:89266:19)
	    at <Jasmine>
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 2 of 66 (1 FAILED) (0 secs / 0.104 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64) Activities List Shows Activities in descending by lastTimestamp FAILED
	Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	Error: Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	    at <Jasmine>
	    at UserContext.<anonymous> (webpack://centraldashboard/public/components/activities-list_test.js:90:23 <- public/index_test.js:89266:19)
	    at <Jasmine>
15 09 2022 13:53:37.820:WARN [web-server]: 404: /api/dashboard-settings
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 3 of 66 (1 FAILED) (0 secs / 0.108 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 4 of 66 (1 FAILED) (0 secs / 0.109 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 5 of 66 (1 FAILED) (0 secs / 0.11 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 6 of 66 (1 FAILED) (0 secs / 0.301 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 7 of 66 (1 FAILED) (0 secs / 0.364 secs)
ERROR: SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 7 of 66 (1 FAILED) (0 secs / 0.364 secs)
ERROR: SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 8 of 66 (1 FAILED) (0 secs / 0.381 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 9 of 66 (1 FAILED) (0 secs / 0.52 secs)
15 09 2022 13:53:37.999:WARN [web-server]: 404: /assets/gcp-logo.png
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 10 of 66 (1 FAILED) (0 secs / 0.531 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 11 of 66 (1 FAILED) (0 secs / 0.54 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 12 of 66 (1 FAILED) (0 secs / 0.547 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 12 of 66 (1 FAILED) (0 secs / 0.547 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 13 of 66 (1 FAILED) (0 secs / 0.556 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 14 of 66 (1 FAILED) (0 secs / 0.56 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 15 of 66 (1 FAILED) (0 secs / 0.574 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 16 of 66 (1 FAILED) (0 secs / 0.582 secs)
15 09 2022 13:53:38.209:WARN [web-server]: 404: /jupyter/
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 17 of 66 (1 FAILED) (0 secs / 0.707 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 18 of 66 (1 FAILED) (0 secs / 0.784 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 19 of 66 (1 FAILED) (0 secs / 0.892 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 20 of 66 (1 FAILED) (0 secs / 0.976 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 21 of 66 (1 FAILED) (0 secs / 1.069 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 22 of 66 (1 FAILED) (0 secs / 1.162 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 23 of 66 (1 FAILED) (0 secs / 1.264 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 24 of 66 (1 FAILED) (0 secs / 1.338 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 25 of 66 (1 FAILED) (0 secs / 1.439 secs)
15 09 2022 13:53:39.132:WARN [web-server]: 404: /pipeline/
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 26 of 66 (1 FAILED) (0 secs / 1.528 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 27 of 66 (1 FAILED) (0 secs / 1.66 secs)
15 09 2022 13:53:39.422:WARN [web-server]: 404: /assets/gcp-logo.png
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 28 of 66 (1 FAILED) (0 secs / 1.803 secs)
15 09 2022 13:53:39.513:WARN [web-server]: 404: /pipeline/?foo=bar
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 29 of 66 (1 FAILED) (0 secs / 1.883 secs)
15 09 2022 13:53:39.626:WARN [web-server]: 404: /myapp/test/
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 30 of 66 (1 FAILED) (0 secs / 1.99 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 31 of 66 (1 FAILED) (0 secs / 2.081 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 32 of 66 (1 FAILED) (0 secs / 2.164 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 33 of 66 (1 FAILED) (0 secs / 2.18 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 34 of 66 (1 FAILED) (0 secs / 2.192 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 35 of 66 (1 FAILED) (0 secs / 2.199 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 36 of 66 (1 FAILED) (0 secs / 2.22 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 37 of 66 (1 FAILED) (0 secs / 2.241 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 38 of 66 (1 FAILED) (0 secs / 2.271 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 39 of 66 (1 FAILED) (0 secs / 2.288 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 40 of 66 (1 FAILED) (0 secs / 2.304 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 41 of 66 (1 FAILED) (0 secs / 2.321 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 42 of 66 (1 FAILED) (0 secs / 2.337 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 43 of 66 (1 FAILED) (0 secs / 2.351 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 44 of 66 (1 FAILED) (0 secs / 2.382 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 45 of 66 (1 FAILED) (0 secs / 2.395 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 46 of 66 (1 FAILED) (0 secs / 2.417 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 47 of 66 (1 FAILED) (0 secs / 2.43 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 48 of 66 (1 FAILED) (0 secs / 2.444 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 49 of 66 (1 FAILED) (0 secs / 2.453 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 50 of 66 (1 FAILED) (0 secs / 2.467 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 51 of 66 (1 FAILED) (0 secs / 2.468 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 52 of 66 (1 FAILED) (0 secs / 2.487 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 53 of 66 (1 FAILED) (0 secs / 2.507 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 54 of 66 (1 FAILED) (0 secs / 2.512 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 54 of 66 (1 FAILED) (0 secs / 2.512 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 55 of 66 (1 FAILED) (0 secs / 2.517 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 56 of 66 (1 FAILED) (0 secs / 2.534 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 57 of 66 (1 FAILED) (0 secs / 2.55 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 57 of 66 (1 FAILED) (0 secs / 2.55 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 58 of 66 (1 FAILED) (0 secs / 2.555 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 58 of 66 (1 FAILED) (0 secs / 2.555 secs)
WARN: 'Failed to parse JSON sent from null'
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 59 of 66 (1 FAILED) (0 secs / 2.56 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 60 of 66 (1 FAILED) (0 secs / 2.564 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 61 of 66 (1 FAILED) (0 secs / 2.565 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 62 of 66 (1 FAILED) (0 secs / 2.566 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 63 of 66 (1 FAILED) (0 secs / 2.566 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 64 of 66 (1 FAILED) (0 secs / 2.567 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 65 of 66 (1 FAILED) (0 secs / 2.567 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 66 of 66 (1 FAILED) (0 secs / 2.567 secs)
Chrome Headless 105.0.5195.125 (Linux x86_64): Executed 66 of 66 (1 FAILED) (2.967 secs / 2.567 secs)
TOTAL: 1 FAILED, 65 SUCCESS
TOTAL: 1 FAILED, 65 SUCCESS

And:

><EMAIL_ADDRESS>test-server
> ts-node --transpile-only node_modules/jasmine/bin/jasmine --config=app/.jasmine.json --reporter=jasmine-console-reporter

Executing 45 defined specs...
Running in random order... (seed: 05834)

Test Suites & Specs:

1. KubernetesService

   2. Get Platform Info
Initializing Kubernetes configuration
      ✔ Returns a known provider and version (12ms)
Initializing Kubernetes configuration
Unable to fetch Nodes testing-error
Unable to fetch Application information: testing-error
      ✔ Returns defaults on error (3ms)
Initializing Kubernetes configuration
      ✔ Returns unknown when no Application resource is found (16ms)
Initializing Kubernetes configuration
      ✔ Returns other when no providerID is listed (1ms)

   3. Get Namespaces
Initializing Kubernetes configuration
      ✔ Returns all namespaces (2ms)
Initializing Kubernetes configuration
Unable to fetch Namespaces: testing-error
      ✔ Returns empty list on error (1ms)

   4. Get Nodes
Initializing Kubernetes configuration
      ✔ Returns all Nodes (1ms)

   5. Get Events for Namespace
Initializing Kubernetes configuration
Unable to fetch Events for bad-namespace: testing-error
      ✔ Returns empty list on error (1ms)
Initializing Kubernetes configuration
      ✔ Returns events (1ms)

6. Workgroup API

   7. Add / Remove Contributor
      ✔ Should error on invalid email for contrib (36ms)
      ✔ Should successfully remove a contributor (7ms)
      ✔ Should error on missing contributor (11ms)
      ✔ Should should show error if user auth status is not detected (4ms)
      ✔ Should successfully add a contributor (4ms)

   8. Create Workgroup
      ✔ Should use user identity if no body is provided (4ms)
Unexpected error creating profile
      ✔ Returns an error status if the Profiles service fails (4ms)
      ✔ Should work for a non-identity aware cluster (5ms)
      ✔ Should use post body when provided (5ms)

   9. Has Workgroup
      ✔ Should return for an identity aware cluster with a Workgroup (5ms)
      ✔ Should return for an identity aware cluster without a Workgroup (4ms)
      ✔ Should return for a non-identity aware cluster (4ms)

   10. Environment Information
Unable to get environment info: A bad thing happened
      ✔ Returns an error status if the Profiles service fails (5ms)
      ✔ Should retrieve information for a non-identity aware cluster (6ms)
      ✔ Should retrieve information for an identity aware cluster (4ms)

11. Main API

   12. With a Metrics Service
      ✔ Should retrieve Pod Memory Usage for default 15m interval (4ms)
      ✔ Should retrieve Node CPU Utilization for a user-specified interval (4ms)
      ✔ Should retrieve Node CPU Utilization for default 15m interval (5ms)
      ✔ Should retrieve Pod CPU Utilization for default 15m interval (3ms)

   13. Without a Metrics Service
      ✔ Should return a 405 status code (3ms)

14. StackdriverMetricsService

   15. Pod Memory Usage
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (4ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod Memory Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:408:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:407:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (22ms)
Requesting cluster name from Metadata server
Unable to obtain cluster name from Metadata server
Unable to fetch Pod Memory Utilization metrics: TypeError: (intermediate value) is not iterable
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:130:22)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (7ms)

   16. Pod CPU Utilization
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:300:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:299:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (2ms)
Requesting cluster name from Metadata server
Unable to fetch Pod CPU Utilization metrics: TypeError: (intermediate value) is not iterable
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:130:22)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (1ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (1ms)

   17. Node CPU Utilization
Unable to fetch Node CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:148:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:147:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (1ms)
      ✔ Retrieves for multiple nodes (1ms)
      ✔ Retrieves for different time intervals (3ms)
      ✔ Retrieves for a single node cluster (1ms)

18. Metrics Service Factory getMetricsService
"local" is not a supported platform for Metrics
   ✔ Returns null on an unsupported platform (2ms)
   ✔ Returns Kubernetes service when running on GCE (132ms)
Unable to retrieve information from cluster Error: Kubernetes service error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:75:33
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:8:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:4:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:74:60)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
   ✔ Returns null if nodes cannot be fetched (3ms)

19. Attach User Middleware
   ✔ Should extract a default User when no userid header was passed in (1ms)
   ✔ Should extract a User from the request headers when present (<1ms)
   ✔ Should extract a default User when no user header is present in request (<1ms)

>> Done!

Summary:

👊  Passed
Suites:  19 of 19
Specs:   45 of 45
Expects: 111 (0 failures)
Finished in 0.393 seconds

npm run coverage

><EMAIL_ADDRESS>coverage
> nyc npm run test-server && karma start --single-run --reporters coverage-istanbul

><EMAIL_ADDRESS>test-server
> ts-node --transpile-only node_modules/jasmine/bin/jasmine --config=app/.jasmine.json --reporter=jasmine-console-reporter

Executing 45 defined specs...
Running in random order... (seed: 47146)

Test Suites & Specs:

1. Workgroup API

   2. Environment Information
      ✔ Should retrieve information for a non-identity aware cluster (54ms)
      ✔ Should retrieve information for an identity aware cluster (7ms)
Unable to get environment info: A bad thing happened
      ✔ Returns an error status if the Profiles service fails (8ms)

   3. Create Workgroup
      ✔ Should use user identity if no body is provided (5ms)
Unexpected error creating profile
      ✔ Returns an error status if the Profiles service fails (4ms)
      ✔ Should use post body when provided (13ms)
      ✔ Should work for a non-identity aware cluster (4ms)

   4. Has Workgroup
      ✔ Should return for an identity aware cluster without a Workgroup (5ms)
      ✔ Should return for a non-identity aware cluster (4ms)
      ✔ Should return for an identity aware cluster with a Workgroup (4ms)

   5. Add / Remove Contributor
      ✔ Should error on missing contributor (8ms)
      ✔ Should should show error if user auth status is not detected (3ms)
      ✔ Should successfully remove a contributor (4ms)
      ✔ Should successfully add a contributor (4ms)
      ✔ Should error on invalid email for contrib (4ms)

6. Attach User Middleware
   ✔ Should extract a User from the request headers when present (1ms)
   ✔ Should extract a default User when no userid header was passed in (<1ms)
   ✔ Should extract a default User when no user header is present in request (<1ms)

7. Main API

   8. With a Metrics Service
      ✔ Should retrieve Node CPU Utilization for default 15m interval (7ms)
      ✔ Should retrieve Pod CPU Utilization for default 15m interval (3ms)
      ✔ Should retrieve Pod Memory Usage for default 15m interval (3ms)
      ✔ Should retrieve Node CPU Utilization for a user-specified interval (3ms)

   9. Without a Metrics Service
      ✔ Should return a 405 status code (3ms)

10. KubernetesService

   11. Get Events for Namespace
Initializing Kubernetes configuration
Unable to fetch Events for bad-namespace: testing-error
      ✔ Returns empty list on error (3ms)
Initializing Kubernetes configuration
      ✔ Returns events (1ms)

   12. Get Namespaces
Initializing Kubernetes configuration
      ✔ Returns all namespaces (1ms)
Initializing Kubernetes configuration
Unable to fetch Namespaces: testing-error
      ✔ Returns empty list on error (1ms)

   13. Get Nodes
Initializing Kubernetes configuration
      ✔ Returns all Nodes (1ms)

   14. Get Platform Info
Initializing Kubernetes configuration
      ✔ Returns a known provider and version (2ms)
Initializing Kubernetes configuration
      ✔ Returns unknown when no Application resource is found (1ms)
Initializing Kubernetes configuration
Unable to fetch Nodes testing-error
Unable to fetch Application information: testing-error
      ✔ Returns defaults on error (2ms)
Initializing Kubernetes configuration
      ✔ Returns other when no providerID is listed (1ms)

15. StackdriverMetricsService

   16. Pod CPU Utilization
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (4ms)
Requesting cluster name from Metadata server
Unable to fetch Pod CPU Utilization metrics: TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:10:194)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:2:808)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (16ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:300:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:299:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (11ms)

   17. Node CPU Utilization
      ✔ Retrieves for different time intervals (2ms)
Unable to fetch Node CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:148:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:147:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (1ms)
      ✔ Retrieves for multiple nodes (2ms)
      ✔ Retrieves for a single node cluster (1ms)

   18. Pod Memory Usage
Requesting cluster name from Metadata server
Unable to obtain cluster name from Metadata server
Unable to fetch Pod Memory Utilization metrics: TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:10:194)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:2:808)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (2ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod Memory Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:408:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:407:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (2ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (1ms)

19. Metrics Service Factory getMetricsService
"local" is not a supported platform for Metrics
   ✔ Returns null on an unsupported platform (2ms)
Unable to retrieve information from cluster Error: Kubernetes service error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:75:33
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:8:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:4:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:74:60)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
   ✔ Returns null if nodes cannot be fetched (2ms)
   ✔ Returns Kubernetes service when running on GCE (130ms)

>> Done!

Summary:

👊  Passed
Suites:  19 of 19
Specs:   45 of 45
Expects: 111 (0 failures)
Finished in 0.386 seconds

--------------------------------|---------|----------|---------|---------|------------------------
File                            | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------------------------|---------|----------|---------|---------|------------------------
All files                       |   78.17 |    70.59 |   72.04 |   79.21 |
 api.ts                         |   45.28 |    64.29 |   29.41 |   47.06 | 62-122
 api_workgroup.ts               |    68.7 |    67.24 |   66.67 |   70.73 | 77,225-246,269,324-373
 attach_user_middleware.ts      |     100 |      100 |     100 |     100 |
 k8s_service.ts                 |   85.48 |       52 |   90.91 |      85 | 62,82-87,117-118,147
 metrics_service.ts             |     100 |      100 |     100 |     100 |
 metrics_service_factory.ts     |     100 |      100 |     100 |     100 |
 stackdriver_metrics_service.ts |     100 |    84.62 |     100 |     100 | 51,83,115-153
 test_resources.ts              |   88.24 |      100 |     100 |    87.5 | 7-8
--------------------------------|---------|----------|---------|---------|------------------------
clean-webpack-plugin: /home/kathy/Projects/kubeflow/components/centraldashboard/dist/public has been removed.
ℹ ｢wdm｣: Compiled successfully.
15 09 2022 14:01:11.414:INFO [karma-server]: Karma v5.1.1 server started at http://localhost:9876/
15 09 2022 14:01:11.416:INFO [launcher]: Launching browsers ChromeHeadlessTest with concurrency unlimited
15 09 2022 14:01:11.420:INFO [launcher]: Starting browser ChromeHeadless
15 09 2022 14:01:11.971:INFO [Chrome Headless 105.0.5195.125 (Linux x86_64)]: Connected on socket UqslZ12kSCAboUtRAAAA with id 67351590
WARN: 'Failed to parse JSON sent from null'
15 09 2022 14:01:13.587:WARN [web-server]: 404: /jupyter/
15 09 2022 14:01:13.788:WARN [web-server]: 404: /pipeline/
15 09 2022 14:01:14.394:WARN [web-server]: 404: /myapp/test/
15 09 2022 14:01:14.692:WARN [web-server]: 404: /assets/gcp-logo.png
15 09 2022 14:01:15.056:WARN [web-server]: 404: /pipeline/?foo=bar
Chrome Headless 105.0.5195.125 (Linux x86_64) Activities List Shows Activities in descending by lastTimestamp FAILED
	Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	Error: Expected $[0] = '19:00:00' to equal '7:00:00 PM'.
	Expected $[1] = '18:00:00' to equal '6:00:00 PM'.
	Expected $[2] = '17:00:00' to equal '5:00:00 PM'.
	Expected $[3] = '16:00:00' to equal '4:00:00 PM'.
	Expected $[4] = '15:00:00' to equal '3:00:00 PM'.
	Expected $[5] = '14:00:00' to equal '2:00:00 PM'.
	Expected $[6] = '13:00:00' to equal '1:00:00 PM'.
	Expected $[7] = '12:00:00' to equal '12:00:00 PM'.
	Expected $[8] = '11:00:00' to equal '11:00:00 AM'.
	Expected $[9] = '10:00:00' to equal '10:00:00 AM'.
	    at <Jasmine>
	    at UserContext.<anonymous> (webpack://centraldashboard/public/components/activities-list_test.js:90:23 <- public/index_test.js:89266:19)
	    at <Jasmine>
15 09 2022 14:01:15.420:WARN [web-server]: 404: /api/dashboard-settings
15 09 2022 14:01:15.420:WARN [web-server]: 404: /assets/gcp-logo.png
WARN: 'Failed to parse JSON sent from null'
WARN: 'Failed to parse JSON sent from null'
ERROR: SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
SyntaxError: Unexpected token 'N', "NOT FOUND" is not valid JSON
WARN: 'Failed to parse JSON sent from null'
TOTAL: 1 FAILED, 65 SUCCESS
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-------------------|---------|----------|---------|---------|-------------------
All files          |   88.36 |     72.9 |   88.52 |   88.45 |
 public            |   95.31 |    78.95 |   95.24 |   95.16 |
  ...est_helper.js |     100 |      100 |     100 |     100 |
  library.js       |   91.89 |    57.89 |   88.89 |   91.89 | 45-50
 public/components |   89.17 |    76.03 |   89.51 |   89.28 |
  ...ities-list.js |     100 |      100 |     100 |     100 |
  activity-view.js |     100 |      100 |     100 |     100 |
  card-styles.js   |     100 |      100 |     100 |     100 |
  ...board-view.js |   85.71 |    83.33 |      80 |   85.71 | 72-73
  ...-container.js |     100 |    88.89 |     100 |     100 | 60
  iframe-link.js   |     100 |      100 |     100 |     100 |
  ...tion-mixin.js |   82.35 |       55 |     100 |   82.35 | 21,30,38
  main-page.js     |   78.91 |    61.84 |   78.79 |   78.47 | ...26,451,463-465
  ...ontributor.js |   85.19 |    44.44 |     100 |   85.19 | 84-86,98-100
  ...users-view.js |   63.16 |    45.45 |    62.5 |   66.67 | 78-99
  ...e-selector.js |   93.75 |       92 |     100 |   92.86 | 166-167
  ...found-view.js |     100 |      100 |     100 |     100 |
  ...books-card.js |   96.88 |      100 |     100 |   96.55 | 113
  ...lines-card.js |    92.5 |    83.33 |   88.89 |   94.87 | 177-178
  ...ation-page.js |    88.1 |     87.5 |   71.43 |   91.43 | 60-68,76
  ...urce-chart.js |   98.31 |      100 |   93.33 |   98.28 | 24
  ...ties-mixin.js |     100 |      100 |     100 |     100 |
 ...ents/resources |      80 |       30 |   76.47 |   81.25 |
  ...-checkmark.js |   66.67 |      100 |      50 |   66.67 | 9
  ...-indicator.js |      80 |        0 |      75 |      80 | 69
  ...tform-data.js |     100 |      100 |     100 |     100 |
  ...flow-icons.js |      85 |       50 |     100 |   88.24 | 30-34
  paper-chip.js    |   66.67 |        0 |      60 |   66.67 | 50-53
 ...rces/md2-input |   65.38 |       45 |   77.78 |      64 |
  md2-input.js     |   65.38 |       45 |   77.78 |      64 | ...65,74-75,80-84
-------------------|---------|----------|---------|---------|-------------------

npm run test-server
><EMAIL_ADDRESS>test-server
> ts-node --transpile-only node_modules/jasmine/bin/jasmine --config=app/.jasmine.json --reporter=jasmine-console-reporter

Executing 45 defined specs...
Running in random order... (seed: 05834)

Test Suites & Specs:

1. KubernetesService

   2. Get Platform Info
Initializing Kubernetes configuration
      ✔ Returns a known provider and version (12ms)
Initializing Kubernetes configuration
Unable to fetch Nodes testing-error
Unable to fetch Application information: testing-error
      ✔ Returns defaults on error (3ms)
Initializing Kubernetes configuration
      ✔ Returns unknown when no Application resource is found (16ms)
Initializing Kubernetes configuration
      ✔ Returns other when no providerID is listed (1ms)

   3. Get Namespaces
Initializing Kubernetes configuration
      ✔ Returns all namespaces (2ms)
Initializing Kubernetes configuration
Unable to fetch Namespaces: testing-error
      ✔ Returns empty list on error (1ms)

   4. Get Nodes
Initializing Kubernetes configuration
      ✔ Returns all Nodes (1ms)

   5. Get Events for Namespace
Initializing Kubernetes configuration
Unable to fetch Events for bad-namespace: testing-error
      ✔ Returns empty list on error (1ms)
Initializing Kubernetes configuration
      ✔ Returns events (1ms)

6. Workgroup API

   7. Add / Remove Contributor
      ✔ Should error on invalid email for contrib (36ms)
      ✔ Should successfully remove a contributor (7ms)
      ✔ Should error on missing contributor (11ms)
      ✔ Should should show error if user auth status is not detected (4ms)
      ✔ Should successfully add a contributor (4ms)

   8. Create Workgroup
      ✔ Should use user identity if no body is provided (4ms)
Unexpected error creating profile
      ✔ Returns an error status if the Profiles service fails (4ms)
      ✔ Should work for a non-identity aware cluster (5ms)
      ✔ Should use post body when provided (5ms)

   9. Has Workgroup
      ✔ Should return for an identity aware cluster with a Workgroup (5ms)
      ✔ Should return for an identity aware cluster without a Workgroup (4ms)
      ✔ Should return for a non-identity aware cluster (4ms)

   10. Environment Information
Unable to get environment info: A bad thing happened
      ✔ Returns an error status if the Profiles service fails (5ms)
      ✔ Should retrieve information for a non-identity aware cluster (6ms)
      ✔ Should retrieve information for an identity aware cluster (4ms)

11. Main API

   12. With a Metrics Service
      ✔ Should retrieve Pod Memory Usage for default 15m interval (4ms)
      ✔ Should retrieve Node CPU Utilization for a user-specified interval (4ms)
      ✔ Should retrieve Node CPU Utilization for default 15m interval (5ms)
      ✔ Should retrieve Pod CPU Utilization for default 15m interval (3ms)

   13. Without a Metrics Service
      ✔ Should return a 405 status code (3ms)

14. StackdriverMetricsService

   15. Pod Memory Usage
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (4ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod Memory Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:408:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:407:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (22ms)
Requesting cluster name from Metadata server
Unable to obtain cluster name from Metadata server
Unable to fetch Pod Memory Utilization metrics: TypeError: (intermediate value) is not iterable
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:130:22)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (7ms)

   16. Pod CPU Utilization
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
Unable to fetch Pod CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:300:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:299:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (2ms)
Requesting cluster name from Metadata server
Unable to fetch Pod CPU Utilization metrics: TypeError: (intermediate value) is not iterable
    at StackdriverMetricsService.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:130:22)
    at Generator.next (<anonymous>)
    at fulfilled (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
      ✔ Filters without cluster name (1ms)
Requesting cluster name from Metadata server
Retrieved cluster name test-cluster
      ✔ Retrieves for multiple pods (1ms)

   17. Node CPU Utilization
Unable to fetch Node CPU Utilization metrics: Error: Stackdriver error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:148:44
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:23:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/stackdriver_metrics_service_test.ts:147:53)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
      ✔ Returns an empty list on error (1ms)
      ✔ Retrieves for multiple nodes (1ms)
      ✔ Retrieves for different time intervals (3ms)
      ✔ Retrieves for a single node cluster (1ms)

18. Metrics Service Factory getMetricsService
"local" is not a supported platform for Metrics
   ✔ Returns null on an unsupported platform (2ms)
   ✔ Returns Kubernetes service when running on GCE (132ms)
Unable to retrieve information from cluster Error: Kubernetes service error
    at SpyStrategy.throwError (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:7547:58)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:75:33
    at Generator.next (<anonymous>)
    at /home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:8:71
    at new Promise (<anonymous>)
    at __awaiter (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:4:12)
    at UserContext.<anonymous> (/home/kathy/Projects/kubeflow/components/centraldashboard/app/metrics_service_factory_test.ts:74:60)
    at QueueRunner.attempt (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6365:44)
    at QueueRunner.run (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6406:25)
    at runNext (/home/kathy/Projects/kubeflow/components/centraldashboard/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:6325:18)
   ✔ Returns null if nodes cannot be fetched (3ms)

19. Attach User Middleware
   ✔ Should extract a default User when no userid header was passed in (1ms)
   ✔ Should extract a User from the request headers when present (<1ms)
   ✔ Should extract a default User when no user header is present in request (<1ms)

>> Done!

Summary:

👊  Passed
Suites:  19 of 19
Specs:   45 of 45
Expects: 111 (0 failures)
Finished in 0.393 seconds


Installation source can be choosen for the wrong Zone

Steps:

Go to create VM
Choose Installation source for Zone RU1.Compute (e.g. OS template: test-template-2)
Change Zone from RU1.Compute to US1.HighIO

Actual Result: Installation source stay 'OS template: test-template-2' and Create button is available. 'The template 609 is not available for use' message displayed after click 'create'
Expected Result: Installation source should be cleaned if chosen Zone doesn't have such template, Create button is not available

i think it was fixed in #524


Can't using in Vite2

util is node built-in lib, but not in browser. And vite has no polyfill of node util.
> ../../node_modules/.pnpm/@jsdevtools+ono@7.1.3/node_modules/@jsdevtools/ono/esm/types.js:1:9: error: No matching export in "browser-external:util" for import "inspect"
    1 │ import { inspect } from "util";
      ╵          ~~~~~~~

8:08:43 PM [vite] error while updating dependencies:
Error: Build failed with 1 error:
../../node_modules/.pnpm/@jsdevtools+ono@7.1.3/node_modules/@jsdevtools/ono/esm/types.js:1:9: error: No matching export in "browser-external:util" for import "inspect"
    at failureErrorWithLog (/Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:1493:15)
    at /Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:1151:28
    at runOnEndCallbacks (/Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:941:63)
    at buildResponseToResult (/Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:1149:7)
    at /Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:1258:14
    at /Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:629:9
    at handleIncomingPacket (/Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:726:9)
    at Socket.readFromStdout (/Users/xiaoxun/github/playground/components-playgound/node_modules/.pnpm/esbuild@0.13.15/node_modules/esbuild/lib/main.js:596:7)
    at Socket.emit (node:events:520:28)
    at addChunk (node:internal/streams/readable:315:12)

this is config you should use
import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'; import rollupNodePolyFill from 'rollup-plugin-node-polyfills' // https://vitejs.dev/config/ export default defineConfig({   plugins: [react()],   resolve: {     alias: {         // This Rollup aliases are extracted from @esbuild-plugins/node-modules-polyfill,         // see https://github.com/remorses/esbuild-plugins/blob/master/node-modules-polyfill/src/polyfills.ts         // process and buffer are excluded because already managed         // by node-globals-polyfill         util: 'rollup-plugin-node-polyfills/polyfills/util',         sys: 'util',         events: 'rollup-plugin-node-polyfills/polyfills/events',         stream: 'rollup-plugin-node-polyfills/polyfills/stream',         path: 'rollup-plugin-node-polyfills/polyfills/path',         querystring: 'rollup-plugin-node-polyfills/polyfills/qs',         punycode: 'rollup-plugin-node-polyfills/polyfills/punycode',         url: 'rollup-plugin-node-polyfills/polyfills/url',         string_decoder:             'rollup-plugin-node-polyfills/polyfills/string-decoder',         http: 'rollup-plugin-node-polyfills/polyfills/http',         https: 'rollup-plugin-node-polyfills/polyfills/http',         os: 'rollup-plugin-node-polyfills/polyfills/os',         assert: 'rollup-plugin-node-polyfills/polyfills/assert',         constants: 'rollup-plugin-node-polyfills/polyfills/constants',         _stream_duplex:             'rollup-plugin-node-polyfills/polyfills/readable-stream/duplex',         _stream_passthrough:             'rollup-plugin-node-polyfills/polyfills/readable-stream/passthrough',         _stream_readable:             'rollup-plugin-node-polyfills/polyfills/readable-stream/readable',         _stream_writable:             'rollup-plugin-node-polyfills/polyfills/readable-stream/writable',         _stream_transform:             'rollup-plugin-node-polyfills/polyfills/readable-stream/transform',         timers: 'rollup-plugin-node-polyfills/polyfills/timers',         console: 'rollup-plugin-node-polyfills/polyfills/console',         vm: 'rollup-plugin-node-polyfills/polyfills/vm',         zlib: 'rollup-plugin-node-polyfills/polyfills/zlib',         tty: 'rollup-plugin-node-polyfills/polyfills/tty',         domain: 'rollup-plugin-node-polyfills/polyfills/domain'     } }, optimizeDeps: {     esbuildOptions: {         // Node.js global to browser globalThis         define: {             global: 'globalThis'         },         // Enable esbuild polyfill plugins         plugins: [             NodeGlobalsPolyfillPlugin({                 process: true,                 buffer: true             }),             NodeModulesPolyfillPlugin()         ]     } }, build: {     rollupOptions: {         plugins: [             // Enable rollup polyfills plugin             // used during production bundling             rollupNodePolyFill()         ]     } } })
But with this it is working in dev but production build fails to parse JSON, any ideas?

@cxyb I found a way, copy util polyfill as file util.js in polyfills folder, and link it as a package in package.json, like below.
"dependencies": {
"util": "./polyfills/util.js"
// ....
}

I found a fix like so:
# Shim util module
npm i -D util

Vite will auto pick this up without resolve.alias.
In index.html add:
<script>
  globalThis.global = globalThis;
  globalThis.process = { env: {} };
</script>

in body to shim global and process.env

There's 3 issues here:

util shim should not be needed. It's imported by @jsdevtools/ono but it has a browser field that should avoid it in the first place. Related issue: https://github.com/vitejs/vite/issues/7576
global is used by call-me-maybe dep
process.env is used by util (ironically)

1 and 3 is related and should be resolved when that issue is resolved.
Related discussion: https://github.com/vitejs/vite/discussions/8549

I don't know what Vite is but if #275 hasn't helped please send pull requests.

@philsturgeon did you resolve problem with Vite configuration?


Add/update documentation on running a local mixer (remove bazel refs)

Updated https://github.com/istio/istio/wiki/Mixer-Running-a-Local-Instance to use mixs and mixc.
https://github.com/istio/istio/wiki/Mixer-Adapter-Walkthrough was updated before to remove any bazel refs.
@douglas-reid , @geeknoid : Please see if this looks ok and we can close this item accordingly.

Looks good. Thanks!


Test on Torchx with Metal and address gaps

There are too many limitations still on Torchx :mps, unfortunately not ready for prime time.


Properly handle indented comments

For block line overflow, we maintain the same level of indent.
For block line underflow, I think we only merge if there is the same indent as the initial line of the block?
For single line underflow, we only merge with the next line if it has the same indent as the current line.
For single line overflow, we maintain the same level of indent.

We do not look at the indent of the first line of the comment and use it for every line of the comment because we cannot assume that the comment is well formed. Individual lines of the comment might have varying levels of indentation. Instead:

when considering overflow, we can only look at the level of indentation of the current line, and carry it forward to the next line should there be a need to wrap
when considering underflow, we have to check that the indent of both the current line and the next line are the same, and only fix the underflow when the level of indent is the same.

When consider starred versus unstarred block comments:

when consider overflow, we copy the style of the current line onto the next line.

if there is a leading asterisk on the current line, look at its indentation, and whether it has a space, and carry that style over into the next line.
if there is no leading asterisk, then carry over that style into the next line.
if there is whitespace following the asterisk, carry that style over into the next line
if there is not whitespace following the asterisk, carry that style over into the next line

when considering underflow, look at whether the current line and the next line have the same style. maybe do not fix underflow if the style does not align?

for block overflow we have to be more careful about first line versus later line. consider the differences in the following styles:
/**
 * nice javadoc
 */

/**
* wtf
* is
* this
*/

/*
* wtf is this
*/

/*
oh god
*/

/*some really long line*/

Added a prefix section to CommentLine and parse it specially. I think most of the code is now "prefix aware". Parsing the prefix has the benefit of normalization. There is one canonical line object that we unmarshall the text into, and all the logic that consumes the object does not need to care about the idiosyncrasies of each situation.


[DOC] How to use Prometheus with Flagd

Change in the documentation
Add documentation that explains how use Prometheus with Flagd. The docs should include information like how to scrape the metrics (e.g. what port is exposed by default) and what metrics are collected.
Resources

https://github.com/jupyterhub/jupyterhub/pull/2891/files

This is done with latest telemetry improvements & updated documentation is available for flagd [1].
@beeme1mr  can you verify and close the issue ?
[1] - https://github.com/open-feature/flagd/blob/main/docs/configuration/flagd_telemetry.md


TP 3 Draft Specs

This issue is a central hub for the specifications of TP 3. It can refer to more detailed issues but should offer a summary of the features we plan for the next major release of TP.
Releasable singletons
We should release all internal providers under memory pressure, but not automatically as some can't recover their state. Thus, users should have full control over this. We should provide different mechanisms to let user mark classes whose singletons can be released:

add an annotation @Releasable that can apply to a type that is injected
add .markAsReleasable() to the bindings API

Details in #212
Better scope annotations
For now, only "singleton classes" can be annotated to indicate in which scope TP should create an instance of theses classes. We want to extend this mechanism, which actually breaks the JSR 330, and allows things like:
@ActivityScope
public class Foo {}

Which means Foo can only be created by TP inside a scope that supports the @ActivityScope, but without Foo being a singleton. A singleton would be expressed by:
@ActivityScope  @Singleton
public class FooSingleton {}

Note that this new notation is just making more clear and distinct to which scope entities belong and how they are recycled. These 2 concepts are currently entangled in JSR 330. Also, using the new annotation model will still preserve the strong contract of
@Singleton
public class FooSingleton {}

being a singleton of the root scope, as everyone would expect.
This change should not require any binding API changes.
Better TP API
Changing the API will also help users to be sure of which TP version they are using and avoid misinterpreting the new annotation model.

[x] Toothpick.inject(foo, scope) --> scope.inject(foo), more details in #217.
[x] give scopes a fluent API, more details in #218.
[x] change bind --> support for scope annotation, more details in #169
[x] allow to inject package-protected classes, right now we only allow public #227 (testEmptyConstructor_shouldWork_whenConstructorIsProtected)
[x] allow @Inject annotated methods to send Exceptions, more details in #200
[ ] give a base class to factories and MemberInjectors? to limit the generated code size.

Improve Examples

[x] Fix Test examples by using ToothpickRule
[ ] Add a @Singleton example
[ ] Add Presenter and Flow example (state preservation)
[ ] Improve coding style in examples -> inner classes, bad names, ...
[x] Make sure all examples work (https://github.com/stephanenicolas/toothpick/issues/337)

KTP
https://github.com/stephanenicolas/toothpick/issues/316
Documentation

[x] Improve documentation and come with a way to represent the way it works internally for maintainers.

Misc

[x] Add test to make sure that releasable is working
[x] Add test to verify that the new scope and singleton system works
[x] Add tests to make sure that the whole library works for Kotlin
[ ] Add support for Mockk (https://github.com/stephanenicolas/toothpick/issues/334)
[ ] Being able to test scope graph at build time using unit tests
[x] switch to Mockito internally
[x] make scopes lifecycle-aware (https://github.com/stephanenicolas/toothpick/issues/332)

other ideas
Add an annotation @ShouldBeLazy so that a class can only be injected lazily. This could help for instance to delay the creation of some network related classes..

Let me share my thoughts on it.

Releasable singletons. tldr: I doubt this is something a DI library should do.
I'm strongly against this. This will introduce more complexity with little to no benefits. If user needs to handle low memory conditions they should do it solely on their own without resorting to a DI library. After all, Toothpick is a dependency injection library, not a memory management library. Finally, this will make singletons not so singletons.

Better scope annotations. Love it! Will definitely give more control and make things clearer. As for JSR 330, I don't think it will break the standard (emphasis mine):

If a scope annotation is present, the injector may retain the instance for possible reuse in a later injection

However, it might in fact cause confusion to users.

The rest looks 👍, except that it is unclear to me what #169 is about

Are you talking about the overhead created by TP, or just about the fact that long-living objects consume memory? If it is the former case, how significant is it? If it is the latter, again, the user is responsible and there is no need to aid him in this. You might also consider the dagger's team experience https://github.com/google/dagger/issues/1117, they have dropped a similar feature.
Yeah, didn't think of that. What if you leave @Singleton intact, thus keeping compliance to the standard, and instead create a custom annotation similar to @ProvidesSingletonInScope? Like @SingletonInScope for instance. This would clearly indicate that it's not standard as well as better communicate the intent (because of a little more verbosity).
Thx for the explanation!

No there is no significant overhead, I am talking about the ability to remove these long living objects.
Unfortunately, users can't release them. TP 1/2 offers Singletons that can't be released, we will offer releasable ones as well.
Thx for the dagger thread about the removal, I didn't know about that. The main reason they want to get rid of this is for decreasing complexity. Let's see what it gives in TP, but at Groupon,we have quite some use cases for this. I believe the implementation is simpler for TP.
We are really looking for something clear and intuitive, not sure yours is ;) Also, we will preserve the very essential contract of '@Singleton' annotated classes. What will change is how custom Scopes are used.

I really like the idea of releasable singletons with an annotation since our team wanted to increase the performance of tp by caching classes that had no state but these "singletons" could be cleaned out and recreated since we only made it singleton to speed up the injection.

TODO: better CHANGELOG, README, and wiki landing page. To be updated for TP3.

Ticket closed as all was released in 3.0.0


Sukoon is also hungry...

🙄

/order pizza Ashburn

Enjoy @sukoonmusic!

OMG. this gives me an idea... You are quickly becoming like the 🍕 god. Those worth enough can request pizza from your repo lol!

OMG. this gives me an idea... You are quickly becoming like the 🍕 god. Those worthy enough can request pizza from your repo lol!

Hahahahaha I love this

This was delicious. Thank you!!


python312Packages.matrix-nio: 0.24.0 -> 0.25.0

Description of changes
Diff: https://github.com/poljar/matrix-nio/compare/0.24.0...0.25.0
Changelog: https://github.com/poljar/matrix-nio/blob/0.25.0/CHANGELOG.md

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 338874 run on x86_64-linux 1

9 packages marked as broken and skipped:

matrix-commander
matrix-commander.dist
opsdroid
opsdroid.dist
pantalaimon
pantalaimon-headless
pantalaimon-headless.dist
pantalaimon.dist
weechatScripts.weechat-matrix

13 packages built:

home-assistant-component-tests.matrix
python311Packages.matrix-nio
python311Packages.matrix-nio.dist
python311Packages.zulip
python311Packages.zulip.dist
python312Packages.matrix-nio
python312Packages.matrix-nio.dist
python312Packages.zulip
python312Packages.zulip.dist
visidata
visidata.dist
zulip-term
zulip-term.dist


License misses original copyright notice

Although I am not a legal expert, I think one should extend the courtesy of not only mentioning the roots promenently in the readme as this project does, but also add it to the license file. The MIT license reads "The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software." after all.

Sorry I am a bit confused, what exactly are saying should be added to the license file?

I would suggest that the License file carries the following entries:
Copyright (c) 2019 Carlos Alessandro Ribeiro
Copyright (c) 2019, 2020 Hannes Widrig

since if I read the history correctly your very nice Improvements are based on Alessandro Ribeiro's work. If I am mistaken, I am sorry for the hussle, otherwise I hope I just pointed out a potential oversight.

Understood, I used his project as a starting point for constructing my own extension, the license he has on his project doesn't require credit. Thanks anyways


bertieb: Watch sdcinternationalshipping.com

bertieb requests the watch of the watch_keyword sdcinternationalshipping\.com. See the MS search here and the Stack Exchange search here.

sdcinternationalshipping\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Makyen in Charcoal HQ


Indicate Python 2 incompatibility

Fixes #1
It is fine to only support Python 3 in this day and age, but there were bits here actively pretending that this supported Python 2. I have fixed those bits :wink:

Hey @remram44  thanks for the contribution, apologies that I didn't recognize the issue much earlier.

No problem. Cheers!


[SPARK-6649] [SQL] Made double quotes denote identifiers

Jira link: https://issues.apache.org/jira/browse/SPARK-6649
After this change, the Spark SQL parser treats anything enclosed in
double quotes as an identifier (not a string), as described in the SQL
standard. The parser also treats backpacks (`) the same way as double
quotes.
Modified two test cases that used double quotes to delimit string
literals and added a new test case for the new behavior.

Can one of the admins verify this patch?

Thanks for working on this, but we can't change the semantics of the SQL parser or we'll break existing users queries.  I suggest we close this issue and you look at our new pluggable dialect support if this is a something you need for compatibility.

Hi Mike,
Thanks for getting back to me on this, and thanks for pointing out the new
multi-dialect support added under SPARK-5213. I'm fine with putting ANSI
SQL under a separate dialect, but but it looks like there currently is no
dialect bundled with Spark that is compliant with any version of the SQL
standard. Are there plans to include such a dialect with Spark? SQL
compliance (particularly at the level of basic things like identifiers and
strings) is a very basic requirement. Spark won't be able to import DDL or
queries from any major database without a compliant parser. Users who are
accustomed to ANSI SQL will be frustrated if queries that work against
Oracle or DB2 won't parse on Spark.
Fred
From:	Michael Armbrust<EMAIL_ADDRESS>To:	apache/spark<EMAIL_ADDRESS>Cc:	Frederick R Reiss/Almaden/IBM@IBMUS
Date:	05/18/2015 12:20 PM
Subject:	Re: [spark] [SPARK-6649] [SQL] Made double quotes denote
identifiers (#6208)
Thanks for working on this, but we can't change the semantics of the SQL
parser or we'll break existing users queries. I suggest we close this issue
and you look at our new pluggable dialect support if this is a something
you need for compatibility.
—
Reply to this email directly or view it on GitHub.

I'd certainly be interested in a clean well tested patch that added an ANSI SQL dialect, but as HiveQL is getting closer and closer to ANSI SQL and there is already considerable investment there that is where I plan to devote my effort.


Get-DbaConnection - up for discusion

Created this because I needed more information than what Test-DbaConnectionAuthScheme was offering.
After I made the command and the test, I realized that Get-DbaProcess has most, but not all, of this information.

 Get-DbaProcess is very limited in what it returns because it uses that enumerator. For connections, we could also validate if a listener exists on the instance and if it does also include that information.
Would we want to include say number of request/sessions? You can do a left join to see if it has any activity.

sweet, glad you see value. i'll merge. we can include the number, do you ahve the SQLs?


More Accessibility things

More accessibility suggestions from the latest scans

[x] Allow users to quickly skip to content

skip links /  landmark: https://webaim.org/techniques/skipnav/

[ ] Combine adjacent links with the same destination

on e.g. Browse all page cards, the image and title both link to the same place. Maybe we remove the title link?

[x] Ensure every page contains a top-level heading, i.e.

/, /faq, /login, any empty profile pages
maybe change the profile name from h2 to h1?

[ ] Ensure links explain their purpose

The paginator "next page" and "previous page" only uses icons, not text. Maybe add an aria-label?

[x] Mark navigation as lists

On the tags list page, represent the groups of tags as

[ ] Ensure form controls have labels

In the form fields of the profile tags edit modal

[x] Fix duplicate IDs

On the search results page, the "By Tag" and "By Keyword" headers have the same ID

[x] Ensure links are distinguished by more than color. Increase contrast

On the homepage, "name or keyword..." and the tags should have increased contrast and underline style (or maybe show as tags?)

[x] Ensure dialogs have labels

The profile tag editor modal pop-up should have an aria-label to describe it

[x] Ensure headings include text

On the students/about page, the big arrows are h2. Maybe just use a styled div.h2.my-5 instead, with a aria-role=decoration

[x] Ensure text has sufficient contrast

[x] On the profile cards, the "View Profile" text
[x] On the homepage, the tags
[x] On the profile page, the person titles
[x] On the login page, the login button

[x] Ensure form controls change appearance when selected

[x] The main search box should have an outline when focused
[ ] The tags modal fields should have an outline when focused

[x] Ensure pages don't require zooming and 2D scrolling on small screens

Fix the super long tags (and maybe let them wrap?)

[x] Identify the purpose of fields programmatically

[x] On the login page, the password field should have an autocomplete="current-password" and the username field should have autocomplete="username"
[ ] On the profile tags edit modal, some sort of autocomplete setting. Maybe "off" since we provide our own autocomplete.

[x] Ensure form controls contrast sufficiently with their surroundings

form field borders everywhere should have a 3:1 contrast on their borders. Example: the login page form fields

Most of these were handled in #142, as well as subsequent commit 9d9a3db4.
There are a few remaining, mostly relating to the tags modal picker, but I'm just going to close this out for now.


Unable to enter API key

Where do I enter the OpenAI API key?
You simply say to enter it in the extension options, but I can't find this option menu anywhere.

It is available in the browser setting of the extension

or

That's strange I don't have it...
I a mon brave so I tried on Google Chrome but same result...

Same issue here 🤷

Same here

@krlvi would you be able to push a new release out? it might be that the latest release doesn't have this?

Okay, for the Chrome store I had to create a privacy policy (https://github.com/sturdy-dev/codereview.gpt/commit/84f8b36c1ecff4f01672e4ab2f0e6b16b5e87474) and resubmit it.

okay v 0.3.0 is out, could you try again?

All good! Thanks!


[vRPex] Problems currently known in vrpex

Currently after the pro vrpex migration, the code got cleaner and the best, except that vrpex started to generate problems that did not occur in vrpfx, I will try to report all possible problems related to Vrpex. the problems that are occurring are:

Problem with the "Unknow Client" message withelist when the withelist is Enabled, the Client enters the server, and never receives the kick message with the ID to the withelist. always appearing to msg "Unknow Client". Thus not giving the possibility of using the witheliste.     ---adjusted

Problem of server instability when going from 4 to 6 players online.      ---adjusted

The server kicks the client by Ping High every 20 mins sometimes longer, never being able to stay long online without taking a kick.         ---adjusted

Sometimes the server "timed out after 10 seconds" sometimes "Server connection timed out after 15 seconds." knocking everyone onlines, and then back quickly.          ---adjusted

Delay immense when opening the Interaction Menu. vrpfx the delay is 0, instantly opens the menu without the delay occurring in vRPex.      ---Not yet corrected

Bug Glitche reported by Players: Bug of the farmes: enter the place of the farmes and exit quickly by clicking "Enter" several times, bugando and you can farmer without being there in the place.   ---Not yet corrected

car tracking in the police department, this bug is ten of the master version, I believe no one has reported it yet, I may be wrong. At the time of tracking the vehicle with the identity number of the player, it never traces, 10x trying to track a vehicle, always the error in the tracking. I do not know if this is a bug in itself or is something of a possibility of crawling, But I tried to track the vehicle several times and always without success.          ---Not yet corrected, This problem comes in ten of the master version

## Out all the problems listed, Thanks in advance for doing a great job!

What about 5 now ?

Not up to date, prefer an issue for a specific problem instead of an issue for multiple problems.


Support for java.nio.ByteBuffer in IonReader

Hey,
I was scratching my head upon the possibility of using Ion for deserializing the content of either direct NIO buffer or read only ByteBuffer. Currently the limitation of the interface would require the client to create either a ByteArrayOutputStream or allocate heap back non-direct ByteBuffer and copy the data first to be able to deserialize it.
It would be really convenient if the ByteBuffer could have act as fully supported first level citizen to be passed to IonReader and in this way the need for unnecessary data coping could have been avoided in the first place.

@jmnarloch Thanks for the suggestion, and I agree. For the next evolution of the ion-java APIs, we need to explore supporting additional abstractions like ByteBuffer, FileChannel, etc.
This may be pretty hard to add to the existing IonReader (the dependency on InputStream runs pretty deep in the implementations) but it's worth looking into.

@tgregg Wouldn't it be possible to wrap the InputStream within an abstraction that would expose the methods needed by IonReader so that the specific implementation would allow to delegate to either InputStream or ByteBuffer or any other type needed in a future.
Though I expect that it might involve quite significant refactoring.

@jmnarloch Yes, I think defining some abstraction (or discovering an existing one) that can allow IonReader to consume data from InputStream, ByteBuffer, byte[], FileChannel, etc., without unnecessary copying, is likely the best approach.
I am interested in looking into it more deeply, but can't guarantee when that will happen.


Locally validate policy before sending

This is related to conjurinc/possum#33 -- the CLI could notice the problem without contacting the server and provide better and faster diagnostics. It could also perform further verification: even if not fully policy parsing (to avoid cases when there's a new policy feature on server and you need to update the CLI to use it), it could at least validate it's YAML.

Why not just let the server do it? If we do this in the client, we create a situation where clients written in other languages have less functionality.
We can add cukes to the server suite that better test the policy error conditions.

The server already does it currently, which it should and which it should.
The idea is to have some rudimentary checks to catch things like wrong
filename etc. It's a UX feature of the CLI, so I don't think feature parity
between implementations is relevant here.
10 lip 2017 17:06 "Kevin Gilpin"<EMAIL_ADDRESS>napisał(a):

Why not just let the server do it? If we do this in the client, we create
a situation where clients written in other languages have less
functionality.
We can add cukes to the server suite that better test the policy error
conditions.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/conjurinc/cli-ruby/issues/167#issuecomment-314134760,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAyRVJvSDaFwcTKOkdGlN02cK2AmDquJks5sMj3igaJpZM4ONHIQ
.


git not available on windows server

I run project in window server 2008.
I have completed the installation and setup git in PATH:
C:\Program Files\Git\cmd;C:\Program Files\Git\cmd\bin
But test in github, repsonse follow:
`
Checking the environment ...
Running as nt authority\system.
git not available. It needs to be installed on the server for this script to work.
`
Please help!!

what version of git are you using are you using the GitHub one or git-scm

I have the same issue on Windows. Perhaps if your script allowed for specifying the path to git and rsync, that would fix the issue.


rootless: fix user lookup if USER= is not set

Lookup the current username by UID if the USER env variable is not
set.
Reported in: https://github.com/projectatomic/libpod/issues/1092
Signed-off-by: Giuseppe Scrivano<EMAIL_ADDRESS>

bot, retest this please

bot, retest this please

LGTM

@rh-atomic-bot r+


Change the pipeline *_params format

All the pipelines parameters, init_params, fit_params, etc. are expected to be a dict with the format {(block_name, param_name): param_value} as input.
This format is not JSON serializable because of the tuple, and needs to be converted to a different format inside the MLPipeline in order to interact with the MLBlocks.
I suggest using nested dictionaries, as in {block_name: {param_name: param_value}} as input, which will be JSON serializable (as far as the value also is), and will greatly simplify the internal MLPipeline implementation.

This will be fixed in #43


Fix some PDF related issues

f0d465091f33726bf6f1be73a7e2fbc0685e108b Fixed the ./build-meta.bash: 7: [[: not found error occurring in both pnpm dev and build processes.

623e35c7fe54208627f3b9fe563417ec9a627ade Resolved an issue where navigating to another view (PDF, both, log) and clicking on a path did not automatically redirect to the editor view, which was unintended behavior.

fa7ade7c76086a09e4097384d709e64c2e9f9295 Fixed issues with PDF display and the functionality of the both view. Most modern desktop browsers support using iframes to display PDF files, which is not supported by mobile browsers. However this is still a big improvement over the previous not usable state (Before the pdf view will freeze the whole page except the nav bar and not work on both view). The pdfslick dependency was retained and can be removed in the future.

which is not supported by mobile browsers.
I hope this does not break things. I'm not able to test it on my phone or iPad before the code is released.

which is not supported by mobile browsers.

I hope this does not break things. I'm not able to test it on my phone or iPad before the code is released.

I think it won't be a big problem.
You can have a try of this demo website. It provides different ways to embed pdf, which include a example iframe.
https://pdfobject.com/static/
On mobile Chrome, it just shows a button to open/download it.

which is not supported by mobile browsers.

I hope this does not break things. I'm not able to test it on my phone or iPad before the code is released.

I think it won't be a big problem. You can have a try of this demo website. It provides different ways to embed pdf, which includes iframe. https://pdfobject.com/static/ On Android Chrome/Edge, it just shows a button to open/download it. On Android Firefox, it can be displayed properly.

It also works fine on iPad as an installed PWA. I think it's good.

Great, I think after it being released and tested, we can remove all PDFSlick related dependency. I can make another PR to do this.

Great, I think after it being released and tested, we can remove all PDFSlick related dependency. I can make another PR to do this.

I have already done. But thanks.


Changing color of default red 'set colorcolumn=80'

The red bar from set colorcolumn=80 is somewhat distracting and does not fit with the airline theme.
I propose implementing a soft and hard line wrap using a gray color scale color as an alternative.
let &colorcolumn=join(range(81,999),",")
highlight ColorColumn ctermbf=235 guibg=#2c2d27
let &colorcolumn="80,".join(range(120,999),",")

*ctermbg :)


Training tensor not match error

Hi I face some errors,
Oneline-DLTv1/resnet.py", line 288, in forward
feature_loss = torch.sum(torch.mul(feature_loss_mat, mask_ap)) / sum_value
RuntimeError: The size of tensor a (315) must match the size of tensor b (560) at non-singleton dimension 3
when training:
python train.py --gpus 2 --cpus 8 --lr 0.0001 --batch_size 32
Could you please share me how to solve it thx!

I was running into the same issue - I think it's related to the version of packages you use.
I couldn't get conda to install the versions that are in the README, but after poking at it, the following versions appear to work.
name: deep_homography
channels:
  - conda-forge
  - defaults
dependencies:
  - imageio
  - opencv
  - pytorch==1.7.1.post2
  - tensorboard==2.7.0
  - tensorboardX==2.4
  - torchvision==0.8.0a0
  - pip:
prefix: /home/$USER/.conda/envs/deep_homography

Put this in a file like conda.yml and then conda env create --file ./conda.yml and conda activate deep_homography.

python test.py also has same error. anyone can help me?

python test.py also has same error. anyone can help me?
I change the torch version and it works！

Pytorch 1.0.1 (1.2.0)
torchvision 0.2.2

I have the same issue,
feature_loss = torch.sum(torch.mul(feature_loss_mat, mask_ap)) / sum_value
RuntimeError: The size of tensor a (315) must match the size of tensor b (560) at non-singleton dimension 3
After downgrading PyTorch to the 1.0.1 version, then I got "[CUDA error: no kernel image is available for execution on the device]" error.
Does anyone know how to solve the issue? Many thanks!

I'm also having the same issue, did anyone fix it? Please enlighten

if anyone knows how to fix it, please inform me.

It is because nn.TripletMarginLoss(). If the input tensor is (B, C, H, W),
In PyTorch 1.0.1 version as this work used, this loss function will take the second dim as C, and it works.
But in some latest versions,  this loss function will take the last dim as C, so you need to tanspose the input tensor to (B, H, W, C)

Thank you very much！
---Original---
From: @.>
Date: Mon, Jan 29, 2024 15:39 PM
To: @.>;
Cc<EMAIL_ADDRESS>Subject: Re: [JirongZhang/DeepHomography] Training tensor not match error (Issue #37)
It is because nn.TripletMarginLoss(). If the input tensor is (B, C, H, W),
In PyTorch 1.0.1 version as this work used, this loss function will take the second dim as C, and it works.
But in some latest versions,  this loss function will take the last dim as C, so you need to tanspose the input tensor to (B, H, W, C)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

Thanks all of you


Add new messages for new Download sections

Since #288 was merged recently, there are new strings needing messages to be translated. This Pull Request adds them.

Looks good, could you please fix the conflicts?

Looks good, could you please fix the conflicts?

Should be all fine now. Changed some more messages on the Download page, aswell as fixed some formatting/intendation.

Should be all fine now. Changed some more messages on the Download page, aswell as fixed some formatting/intendation.

Fixed the merge conflicts again caused by the most recent commit on master, should be good to go now?

Fixed the merge conflicts again caused by the most recent commit on master, should be good to go now?


Not getting any autocomplete suggesstions

I have the latest sourcecode and when I try doing the simple autocomplete it doesn't work.
bin git:(master) ./racer complete std::io::B
Any suggestions?
Thanks

I can't reproduce this with current master (c0afd513).
Running RUST_LOG=debug racer complete std::io::B might provide more information on what is going wrong.

Here is the output
➜ bin git:(master) RUST_LOG=debug ./racer complete std::io::B
DEBUG:main::racer::nameres: do_file_search std
DEBUG:main::racer::nameres: do_file_search srcpaths ~/rust/src/
DEBUG:main::racer::nameres: do_file_search v is ["~/rust/src/", "."]

On Tue, Jan 13, 2015 at 06:12:06PM -0800, Naveen wrote:

DEBUG:main::racer::nameres: do_file_search v is ["~/rust/src/", "."]

I think racer doesn't expand the '~'. Replacing '~' with your home
directory might help.

Here is what I got
➜  bin git:(master) RUST_LOG=debug ./racer complete std::io:B
DEBUG:main::racer::nameres: do_file_search std
DEBUG:main::racer::nameres: do_file_search srcpaths /Users/naveen/rust/src/
DEBUG:main::racer::nameres: do_file_search v is ["/Users/naveen/rust/src/", "."]
DEBUG:main::racer::nameres: do_external_search path ["io:B"] Some("/Users/naveen/rust/src/libstd/lib.rs")
DEBUG:main::racer::nameres: searching scope BothNamespaces start: 0 point: 0 'io:B' Some("/Users/naveen/rust/src/libstd/lib.rs") StartsWith local: false
DEBUG:main::racer::nameres: search_scope found matches StartsWith []

On Wed, Jan 14, 2015 at 03:16:53AM -0800, Naveen wrote:

Here is what I got
➜  bin git:(master) RUST_LOG=debug ./racer complete std::io:B

You are missing a colon after the std::io.

Thanks. Got it!


"as" isn't used for comparisons like this

Just stumbled upon this, I'm not a native speaker but I believe that as is only used in different contexts (with an adjective or something, like... "as big as") - seemed weird to me so I put in like.
Maybe I'm wrong  :sweat_smile:

I think they're interchangeable in this case. Personally, I like as better, but I might be wrong...
...although, while we're here, I think the describe should be described.

@kirbyfan64 that depends on what the meaning is. If the meaning should be "it works like we described it would" it should definitely be "as described". I figured the meaning should rather be "context works exactly like the describe method" - don't know what the original author intended, but the latter seems like a better spec description to me :)
Thanks for the input!

Adjusted title as the previous title was very poorly chosen, sorry :(

Hey everyone, this is just a grammar change to clear up the spec - nothing important but I hope we can get it in soon (if this is really what the author intended).
Thanks!

:+1:

I'm not a native English speaker but @waterlink (the original author of that) agrees, so I have to agree too :-)
In any case, it's just a small string in the description, I don't think it matter much.


Add mtls capability for the user_info call.

We had a client that required certs on the user_info call, while it seems excessive I can see this as an optional feature that can be used.
We ended up monkey patching to make work, but it would be nice to have the ability to mtls the userinfo! call.  This change is tested, safe, and does not affect the existing functionality.
Thanks!

Underling OAuth2 gem supports MTLS client auth & MTLS access token.
https://github.com/nov/rack-oauth2/blob/master/lib/rack/oauth2/client.rb
https://github.com/nov/rack-oauth2/blob/master/lib/rack/oauth2/access_token/mtls.rb
You can simply use them, or following the underling gem structure, you can define MTLS access token class for this gem.

Hey nov, thanks for the quick response!  The reason for adding the change to your gem is that the omniauth_openid_connect gem calls your userinfo! method.  Even adding the :mtls parameters beforehand would not work since your client send would not attach the cert.

could you try this?
https://github.com/nov/openid_connect/pull/76


Honor Nullable types in LEFT JOIN

I want LEFT JOIN to honor Nullable types.  Elapsed: 0.004 sec.

Thank you for you note.
NULL functionality is unstable and not finalized yet (especially for "JOIN" clauses).
Finalized functionality will include proper JOIN implementation.

Is there any news on that? Thanks a lot!

It is implemented.
Behaviour is controlled by join_use_nulls setting.
If set to 1, NULLs will be substituted instead of default values.
You could adjust this setting like any other - per query, per session, per user...

Behaviour is controlled by join_use_nulls setting.
If set to 1, NULLs will be substituted instead of default values.

If the RIGHT table have Array(String) column, it is substituted with [], even if  join_use_nulls is set to 1.
Is this expected behaviour?
SELECT *
FROM
(
    SELECT *
    FROM
    (
        SELECT
            [1, 2, 3, 4, 5] AS TCKN,
            ['ali', 'veli', 'celil', 'delil', 'halil'] AS AD
    )
    ARRAY JOIN
        TCKN,
        AD
) AS K
LEFT JOIN
(
    SELECT *
    FROM
    (
        SELECT
            *,
            rand() % 3 AS SAYI,
            ['X', 'Y'] AS X
        FROM
        (
            SELECT
                [2, 3, 4, 5] AS TCKN,
                ['ali', 'veli', 'celil', 'delil'] AS ADLAR
        )
        ARRAY JOIN
            TCKN,
            ADLAR
    )
) AS N ON K.TCKN = N.TCKN

┌─TCKN─┬─AD────┬─N.TCKN─┬─ADLAR─┬─SAYI─┬─X─────────┐
│    1 │ ali   │   ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ  │ ᴺᵁᴸᴸ │ []        │
│    2 │ veli  │      2 │ ali   │    0 │ ['X','Y'] │
│    3 │ celil │      3 │ veli  │    0 │ ['X','Y'] │
│    4 │ delil │      4 │ celil │    0 │ ['X','Y'] │
│    5 │ halil │      5 │ delil │    0 │ ['X','Y'] │
└──────┴───────┴────────┴───────┴──────┴───────────┘

5 rows in set. Elapsed: 0.015 sec.

As you can see the column X is [] while column AD is ᴺᵁᴸᴸ.

@ramazanpolat because for Arrays empty array [] is analog for Null. Arrays cannot be nullable itself but can contain nullable types.

is join_use_nulls affect a function like emptyArrayToSingle ?
I'm using this to make left arrayJoin() that could be nice to have both LEFT ARRAY JOIN and arrayJoin linked by the same parameter.

You may try and make an issue if there's some unexpected.

@4ertus2 I tried and it seems emptyArrayToSingle is not impacted by join_use_nulls. What is the expected behavior ?

@4ertus2 I tried and it seems emptyArrayToSingle is not impacted by join_use_nulls. What is the expected behavior ?

Let's make an issue. It could be something unknown or related to #9253


Add basic antispam measure to contact form

Asana Ticket: Feedback Form | Address spam issues
This adds an invisible field to the contact form that must not be filled in for the submission to succeed. The image below has the field un-hidden for illustrative purposes (this is also how a screen reader might "see" it, which is why the label is important).

I was unable to get Wallaby testing working for this — I could be missing something, but there seems to be an issue with the library where telling it to fill in a non-visible field just doesn't work, but acts as though it worked. I used this code:
@tag :wallaby
test "Catches spam bots that fill every available field", %{session: session} do
  session
  |> visit("/customer-support")
  |> fill_in(css("#comments"), with: "Support Form Integration Test")
  |> click(css("label[for=\"service-Suggestion\"]"))
  |> fill_in(css("#leave-this-alone", visible: false), with: "spam!")
  |> click(@submit_button)
  |> assert_text("We had an issue submitting your feedback")
end

This "succeeds" at filling in the field, but fails on the assert_text, and inspecting the conn reveals that the field has an empty value as though it wasn't filled in.

@digitalcora Looks good to me, though for an example I would have gone with "You're not my real dad."


Add indication in the account request submitted page on what email to expect

Summary
I noticed that email sends to prospective users from the account request form (http://diaper.test/account_requests/new) goes into the promotion filter in Gmail. This could cause prospective users on not seeing the email to come up in their inbox.
It seems like there is an algorithm at Gmail that auto filters these emails. I'am not entirely sure how to change the email. However, I think a good first start is to add some text that informs the prospective user to check their spam or promotion filters.
I envision a red text that says something like "Check your spam filters" for a email from<EMAIL_ADDRESS>on this page (http://diaper.test/account_requests/received)

Criteria for Completion

[ ] Prospective users will clearly be informed that they should be looking for a email from<EMAIL_ADDRESS>

Hello, I'm learning Ruby and would like to help with this one.


What is the list of "styles keys" that's available?

Just a general discussion/question.
Where can I find the full list of "style keys" like ['BOLD', 'ITALIC', 'UNDERLINE', 'STRIKETHROUGH']?
It is used by functions like this.
It might sound stuipid but I have basically debugged all the way to find out the "Key" at the moment.
Where it is documented?
Thanks

I think this constants file defines all the out-of-the-box default inline styles: https://github.com/facebook/draft-js/blob/master/src/model/immutable/DefaultDraftInlineStyle.js
you've basically listed them all yourself already in your question, with the exception of 'CODE' 🙂


Ignore pylint too-many-instance-attributes on repo level

Description
From: https://github.com/kedro-org/kedro-plugins/pull/189#discussion_r1178116114

Maybe we should just ignore this on the repo level, it's not really a relevant check for the datasets.

This would also reduce issues with OS PR as this shows up in every PR and it takes more time for OS user to figure out how to deal with pylint issue.