Update stream-analytics-get-started-with-azure-stream-analytics-to-pr…

…ocess-data-from-iot-devices.md
fixed ambiguity in scenario

Microsoft authors of articles need to make updates through the private repository, so the updates can be staged and validated by current validation rules. After you review staging and fix all validation issues, you can add the sign-off comment to let the PR reviewers know the updates are ready to be merged.
It's easy to access the private repo version of your articles in GitHub. Just add -pr to the URL, as follows:
 Public repo URL: https://github.com/MicrosoftDocs/{docs-repo}
 Private repo URL: https://github.com/MicrosoftDocs/{docs-repo-pr}
We have closed this pull request. Please resubmit the updates through the private repo. For more information, see the contributor guide.


[Feature]: Add generics for LoaderFunction and ActionFunction

What is the new or updated feature that you are suggesting?
Loader/Action functions cannot have a type of State. We can't know how object are delivery by these functions.
I suggest to add generics for LoaderFunction and ActionFunction. Using generics in these remix functions, we can know the shape of objects.

For LoaderFunctions, we can know which object to return
For ActionFunctions, we can know which objects we have in request. No matter how they are send to server (as JSON or FormData)

If this issue is approved, I can do a PR with the typing 😄
Use case:
// copy some parts from routeModules.d.ts (@remix-run/server-runtime/routeModules)
type RemixRequest<Body = any> = Omit<Request, "json"> & {
  json: () => Promise<Body>;
};

export interface DataFunctionArgs<Body> {
  request: RemixRequest<Body>;
  context: any;
  params: any;
}

// instead of AppData, I use the Res generics
type LoaderFunction<Req = any, Res = any> = (ctx: DataFunctionArgs<Req>) => Promise<Response> | Response | Promise<Res> | Res;

type User = {
  name: string;
};

type UserResponse = {
  firstName: string;
  lastName: string;
};

export const loader: LoaderFunction<User, UserResponse> = async (ctx) => {
  const userJson = await ctx.request.json();
  const names = userJson.name.split(" ");
  return {
    firstName: names[0],
    lastName: names.pop()!,
  };
};

Why should this feature be included?
With strict types in LoaderFunction, we can know which object to return. With this, we can sync the data with useLoaderData. The curious thing is that useLoaderData already has a generics and we don't have generics in LoaderFunction.
The same argument for ActionFunction, but in this case we need know the type of body in request.

Looks like this: https://github.com/remix-run/remix/discussions/1401
I know its discussion not issue, just wanted to link to the proposal to what seems like the thing you want here, just with 1 generic param instead of 2.

I don't understand the use of User and UserResponse in the example. User is nowhere related to the loader function. Did you forget something in the example to make it clear?

@akomm in my example, the type User is the body of request received in LoaderFunction. UserResponse is used for response in loader function.

Here’s a comment from Ryan explaining why actions and loaders can’t be genetics https://github.com/remix-run/remix/pull/1254#issuecomment-1034475233


How to use a transaction

I think you cannot.
The producer does not implement what is needed to create a transaction and produce message that are part of a transaction.
Best you can do is, when consuming messages, filter those that are uncommitted using IsolationLevel in the config.


Replace Homeroom relation with Section assignments

Related to https://github.com/studentinsights/studentinsights/issues/1693.
Homeroom is inferred from the import, but we explicitly import Section data that describes this more accurately and includes rosters for other classes (eg, art, social studies), particularly for middle school.
I think we can remove Homeroom altogether and migrate to using Sections for rosters and authorization K-8.

Actually this raises the barrier to entry; we'd have to look at cost to import this more widely first.


Refactor lineCounter to use bufio scanner

Using Scanner simpiflies the code because:
- The default token is a newline
- Scanner.Err() does not return EOF error
This commit also will double the maxium buffer size.

The current implementation is optimized for speed and I believe it is the best you can get. It uses bytes.Count which is an asm optimized function to get extra speed.
The buffer size (32k) isn't the max buffer that can be loaded into micro, it just determines how many bytes are read At once to count new lines (maybe I misunderstood what you meant by doubling the size of the buffer).

Sorry for the confusion but i was referencing the buffer inside the function.
The buffer was 32 * 1024 and now is MaxScanTokenSize (64 * 1024), it can be change by Scanner.Buffer.
I did some benchmarks and the change made it faster (at least on my laptop).
BenchmarkBytes1-4     	  200000	      8026 ns/op
BenchmarkScanner1-4   1000000	      1512 ns/op
BenchmarkBytes2-4     	  200000	      8092 ns/op
BenchmarkScanner2-4   	 1000000     1521 ns/op
BenchmarkBytes3-4     	  200000	      8045 ns/op
BenchmarkScanner3-4   	 1000000     1544 ns/op
PASS
ok  	github.com/zyedidia/micro/cmd/micro	9.742s

Can you post what you were measuring with the benchmark please?

here is a gist
https://gist.github.com/mrfallible/ec75b854b87b3ce59353cea60309d072

Could you demonstrate the performance of these operations when running them against many-megabyte files? Part of the existing performance changes were made based on loading very large text files and being able to performant.

I added a fourth file which is 300 copies of this and 13M,
and scanner still out performs the bytes.
BenchmarkBytes1-4     	  100000	     15647 ns/op
BenchmarkScanner1-4   1000000	      1717 ns/op
BenchmarkBytes2-4     	  100000	     16237 ns/op
BenchmarkScanner2-4   	 1000000      1667 ns/op
BenchmarkBytes3-4     	  100000	     15879 ns/op
BenchmarkScanner3-4   	 1000000     1717 ns/op
BenchmarkBytes4-4     	  100000	    16094 ns/op
BenchmarkScanner4-4   1000000	      1718 ns/op
PASS
ok  	github.com/zyedidia/micro/cmd/micro	14.882s

Micro is now using a different method for loading files and no longer counts the number of lines in the file beforehand.


Limit fifo buffer size to prevent memory attacks.

Currently each stream has a fifo buffer that grows as needed, but is not limited. This make it possible to fill a nodes memory if it is not cleared fast enough. The buffer should have a max size and once it is reached writing to it should fail (return 0 bytes written).

done


Bug when using getMqttClient() feature.

Hi,
When using the Homie.getMqttClient(); feature the OnMessage callback is called but topic argument is not complete.
This is due to the BootNormal.cpp OnMessage callback that suppress '/' and remplace those by '\0' vithin the topic buffer variable(which will be then given to our custom OnMessage callback).
Topic is shorten until node, property and  set field are behind the end_of_string.
I agree that this bug appears depending on in which order OnMessage callback are registered, but this seems a bit dirty when processing message to not check device-id while subscription are possible for any MQTT topic.
I made a fix to BootNormal.cpp, the fix consist in verifying that arriving message are destinated to current device-id (after processing for Broadcast messages)
Before submitting your issue, make sure:

[ ] You're using a stable release, not the Git development version which is, by definition, unstable
[X] You've read the documentation for your release, which is in the docs/ folder of the .zip of the release you're using, especially the Getting started and Troubleshooting pages, which contain respectively the minimum required version of the dependencies, and some answsers to the most common problems
[X] You're using the examples bundled in your release, which are in the examples/ folder of the .zip of the release you're using. Examples in the latest git revision might not be backward-compatible with your release

Thanks!

Thanks!


Update Readme.md

Add article/guide to learning React Hooks in the Tutorials/Articles/Workshops section

Oops, someone else already proposed this change, I will retract my PR.


The example app tapping does not work

I tried creating a new flutter app and just copy the whole main file to my app.
I did not modify anything on main but whenever I tap on the screen, it throws

flutter: The following StateError was thrown while handling a gesture:
flutter: Bad state: Cannot add event after closing
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #2      HasWidgetsOverlay.addWidgetOverlay (package:flame/game/game.dart:90:34)
flutter: #3      ExampleGame.onTap (package:flappy_bird/main.dart:27:7)
flutter: #4      WidgetBuilder.build.<anonymous closure> (package:flame/game/widget_builder.dart:11:64)
flutter: #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
flutter: #6      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
flutter: #7      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
flutter: #8      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
flutter: #9      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:470:9)
flutter: #10     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
flutter: #11     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
flutter: #12     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
flutter: #13     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
flutter: #14     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
flutter: #15     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
flutter: #16     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
flutter: #17     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
flutter: #18     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
flutter: #19     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
flutter: #23     _invoke1 (dart:ui/hooks.dart:274:10)
flutter: #24     _dispatchPointerDataPacket (dart:ui/hooks.dart:183:5)
flutter: (elided 5 frames from dart:async)
flutter:
flutter: Handler: "onTap"
flutter: Recognizer:
flutter:   TapGestureRecognizer#c3929
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════

I think I posted on a wrong thread. Close it.


[firebase_databse] It fails to build on ios

Describe the bug
I made a flutter project using firebase auth ui and database and it worked well on android device.
But when I try on ios it didn't even succeed to build.
On ios, it works well when I just make dependency on firebase_core, firebase_auth, and firebase_auth_ui, but it fails when I add firebase_database. So I think something's wrong in firebase_database with my project.
I attached the result of flutter doctor and flutter run, and pupspec.yaml of my project.
I would appreciate a little bit of help :)
flutter doctor -v
[✓] Flutter (Channel stable, 1.20.1, on Mac OS X 10.15.6 19G73, locale ko-KR)
    • Flutter version 1.20.1 at /Users/angyein/Documents/Developer/flutter
    • Framework revision 2ae34518b8 (5 days ago), 2020-08-05 19:53:19 -0700
    • Engine revision c8e3b94853
    • Dart version 2.9.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/angyein/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.6, Build version 11E708
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 48.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] Connected device (1 available)
    • iPhone (mobile) • 799c1bd01910e23ea8e8617f3fba5a4f83c6c0b9 • ios • iOS 13.5.1

• No issues found!
Process finished with exit code 0

flutter run --vervose
Launching lib/main.dart on iPhone in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: 78XSNJ2WP7
Running Xcode build...
Xcode build done.                                           15.3s
Failed to build iOS app
Error output from Xcode build:
↳
Could not build the precompiled application for the device.

Error launching application on iPhone.
** BUILD FAILED **

Xcode's output:
↳
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:32:1: error: unknown type name 'FIRDatabaseReference'
FIRDatabaseReference *getReference(FIRDatabase *database, NSDictionary *arguments) {
^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:32:36: error: unknown type name 'FIRDatabase'
FIRDatabaseReference *getReference(FIRDatabase *database, NSDictionary *arguments) {
                                   ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:34:3: error: use of undeclared identifier 'FIRDatabaseReference'
  FIRDatabaseReference *ref = database.reference;
  ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:34:25: error: use of undeclared identifier 'ref'
  FIRDatabaseReference *ref = database.reference;
                        ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:35:26: error: use of undeclared identifier 'ref'
  if ([path length] > 0) ref = [ref child:path];
                         ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:35:33: error: use of undeclared identifier 'ref'
  if ([path length] > 0) ref = [ref child:path];
                                ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:36:10: error: use of undeclared identifier 'ref'
  return ref;
         ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:39:1: error: unknown type name 'FIRDatabaseQuery'
FIRDatabaseQuery *getDatabaseQuery(FIRDatabase *database, NSDictionary *arguments) {
^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:39:36: error: unknown type name 'FIRDatabase'
FIRDatabaseQuery *getDatabaseQuery(FIRDatabase *database, NSDictionary *arguments) {
                                   ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:40:3: error: use of undeclared identifier 'FIRDatabaseQuery'; did you mean 'getDatabaseQuery'?
  FIRDatabaseQuery *query = getReference(database, arguments);
  ^~~~~~~~~~~~~~~~
  getDatabaseQuery
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:39:19: note: 'getDatabaseQuery' declared here
FIRDatabaseQuery *getDatabaseQuery(FIRDatabase *database, NSDictionary *arguments) {
                  ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:40:21: error: use of undeclared identifier 'query'
  FIRDatabaseQuery *query = getReference(database, arguments);
                    ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:44:5: error: use of undeclared identifier 'query'
    query = [query queryOrderedByChild:parameters[@"orderByChildKey"]];
    ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:44:14: error: use of undeclared identifier 'query'
    query = [query queryOrderedByChild:parameters[@"orderByChildKey"]];
             ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:46:5: error: use of undeclared identifier 'query'
    query = [query queryOrderedByKey];
    ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:46:14: error: use of undeclared identifier 'query'
    query = [query queryOrderedByKey];
             ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:48:5: error: use of undeclared identifier 'query'
    query = [query queryOrderedByValue];
    ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:48:14: error: use of undeclared identifier 'query'
    query = [query queryOrderedByValue];
             ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:50:5: error: use of undeclared identifier 'query'
    query = [query queryOrderedByPriority];
    ^
/Users/angyein/Documents/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_database-3.1.6/ios/Classes/FLTFirebaseDatabasePlugin.m:50:14: error: use of undeclared identifier 'query'
    query = [query queryOrderedByPriority];
             ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
note: Using new build system
note: Building targets in parallel
note: Planning build
note: Constructing build description

pubspec.yaml

name: ere_manager
description: A new Flutter application.

publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^0.4.5
  firebase_auth:
  firebase_auth_ui:
  firebase_database: ^3.1.6
  toast:
  shared_preferences:
  path_provider:

  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true

Hi @AnGyeIn
Added  firebase_database: ^3.1.6 to an existing, no issues  on latest stable
Added firebase_database to his project
  firebase_auth: ^0.16.1
  firebase_core: ^0.4.5
  google_sign_in: ^4.5.1
  firebase_dynamic_links: ^0.5.1
  firebase_database: ^3.1.6

flutter doctor -v
[✓] Flutter (Channel stable, 1.20.1, on Mac OS X 10.15.6 19G73, locale en-GB)
    • Flutter version 1.20.1 at /Users/tahatesser/Code/flutter_stable
    • Framework revision 2ae34518b8 (6 days ago), 2020-08-05 19:53:19 -0700
    • Engine revision c8e3b94853
    • Dart version 2.9.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.1
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.6, Build version 11E708
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 48.1.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.47.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.13.2

[✓] Connected device (3 available)
    • SM M305F (mobile)      • 32003c30dc19668f                     • android-arm64 • Android 10 (API 29)
    • Taha’s iPhone (mobile) • 00008020-001059882212002E            • ios           • iOS 13.6
    • iPhone 11 (mobile)     • A63D6F51-59F3-4A75-961F-3769709F3A92 • ios           • com.apple.CoreSimulator.SimRuntime.iOS-13-6
      (simulator)

• No issues found!

Can you try running deleting podfiles and recreating from ios folder
rm -rf podfile
pod init
pod install
Thank you

Thanks a lot! It works well now. I really appreciate your help 👍


Create snyk_infrastructure-analysis.yml

A sample workflow which checks out your Infrastructure as Code Configuration files,
such as Kubernetes, Helm & Terraform and scans them for any security issues.
The results are then uploaded to GitHub Security Code Scanning

For more examples, including how to limit scans to only high-severity issues
and fail PR checks, see https://github.com/snyk/actions/
name: Snyk Infrastructure as Code
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '23 3 * * 2'
jobs:
snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Snyk to check configuration files for security issues
# Snyk can be used to break the build when it detects security issues.
# In this case we want to upload the issues to GitHub Code Scanning
continue-on-error: true
uses: snyk/actions/iac@master
env:
# In order to use the Snyk Action you will need to have a Snyk API token.
# More details in https://github.com/snyk/actions#getting-your-snyk-token
# or you can signup for free at https://snyk.io/login
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
# Add the path to the configuration file that you would like to test.
# For example deployment.yaml for a Kubernetes deployment manifest
# or main.tf for a Terraform configuration file
file: your-file-to-test.yaml
- name: Upload result to GitHub Code Scanning
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: snyk.sarif

Trial...

Trial...


support redis  keys command

features request
support redis  keys command

for example:
let keys:Vec<String> = client.exec(cmd::Keys("service*")).unwrap();
``

implemented


Issue w/ trusted SSL intermediate certs in Safari

Steps to reproduce the problem:

Get a trusted SSL certificate issued by Comodo (let's say it's for www.rofreg.com), and convert it into a .pem file that includes all intermediate certs
Update your /etc/hosts file to redirect www.rofreg.com to <IP_ADDRESS>
Run mitmproxy --cert=your_cert.pem -R https://www.example.com
Open https://localhost:8080 in Safari

What is the expected behavior?
The page should load without any SSL issues.
What went wrong?
Safari does not trust the intermediate certificates, and the request is blocked.
Any other comments? What have you tried so far?
This one is baffling me pretty good, but I've confirmed that the exact same .pem file DOES work in Safari when served up by a plain Rails server. My hunch is that something is going wrong with the intermediate certs in the .pem file, such that they don't get properly delivered during the handshake, but I'm not yet familiar enough with mitmproxy to know where I should start looking. Any thoughts? I'd be happy to dig into this further myself (especially since I have a valid .pem file that can reproduce the problem), just hoping for some guidance :)

Mitmproxy Version: 0.18
Operating System: OS X 10.11.6

Potentially stupid question, but did you put the intermediary certs at the end of the PEM file?
(See: http://docs.mitmproxy.org/en/stable/certinstall.html#using-a-custom-certificate)

Yep! Private key first, followed by www.rofreg.com cert, followed by intermediate certs in ascending order (e.g. from leaf to root).

Ok, not sure why this is happening then, sorry.
I would try and set SSLKEYLOGFILE, capture the traffic with WireShark and see what mitmproxy actually sends. We don't do much besides calling pyOpenSSL's use_certificate_chain_file.

Cool – thanks for the tips! Hopefully that'll help me dig into this further over the next few days. I'll let you know if I find anything!

You're welcome - feel free to drop by on Slack if you have any ad hoc questions!

Aha, made some progress!
Wireshark confirmed that mitmproxy is actually returning a different intermediate certificate than the one specified in the .pem file. After doing some more investigation, it looks like this may be a conflict between the two different calls to load_verify_locations made on lines 544 and 845. If you comment out line 544 (and temporarily overwrite the function on line 529 to always return True), then the SSL handshake goes through successfully without any SSL errors.
I'm about to head to bed, but I'll look into this more in the coming days. My guess is that the default intermediate certs loaded on line 544 are effectively overriding the manually-specified cert in my .pem file, and thus mitmproxy ends up returning a combination of certs that is invalid against the default OS X keychain.

Fixed by #1590 - thanks again!


[regexp feature request] Support 'Ş' character on word boundary search, like in .NET/Python3/Java regex engine.

What version of Go are you using (go version)?

$ go version

go version go1.20.1 linux/amd64
Does this issue reproduce with the latest release?
Yeaps.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOVERSION="go1.20.1"

What did you do?
package main
import(
    fmt
    regexp
)
func DeleteNonDate(toBeDeleted string) (string, string, error) {
	nonDateRegex, err := regexp.Compile(`(?mi)\b(\d{1,2}\s)?(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|[Oo]cak|January|February|March|April|May|June|July|August|September|October|November|December|[Şş]ubat|[Mm]art|[Nn]isan|[Mm]ayıs|[Hh]aziran|[Tt]emmuz|[Aa]ğustos|[Ee]ylül|[Ee]kim|[Kk]asım|[Aa]ralık)(\s\d{1,2},?)?(\s\d{4})?\b`)
	if err != nil {
		return "", "", err
	}
	// if no line matches:
	return strings.TrimSpace(nonDateRegex.FindString(toBeDeleted)), nonDateRegex.ReplaceAllString(toBeDeleted, ""), nil
}

func main() {
      excepted, _, err := DeleteNonDate(`asdasd \n \n Şubat 2023 Haziran 2023`)
     if err  != nil {
        panic(err)
      }
      fmt.Println(excepted)
}

What did you expect to see?
Şubat 2023
What did you see instead?
Haziran 2023, missed Şubat 2023 match entirely.
https://regex101.com/r/uq8ZR9/1, live demo to play around. Python, Java, .NET engine supports 'Ş' match with same regex, can we please have it on RE2?

I accidentally pressed enter, dismiss me for now!

Please hit me up if more edge cases or test cases needed.

This should be raised with https://github.com/google/re2

Just to be clear, the Go regexp package[^1] and RE2[^2] support \b for ASCII word boundaries only; since that's very unlikely to change in the foreseeable future, you might want to look into using https://github.com/dlclark/regexp2 instead.
[^1]: The Go regexp package is not RE2.
[^2]: RE2 is not the Go regexp package.


[Feature-3973][*] Release 1.2.0-rc4

Purpose of the pull request

Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

1.Fix the bug of HistoryServer with hdfs.
2.Fix the bug of CDCSOURCE empty data.
3.Supports Flink Jar with RS:hdfs in local and remote mode.
4.Supports check EXECUTE JAR.
5.Optimize the scan of UDF.


Is everything CC-BY 4.0?

We should check where we are actually allowed to share data in the open access format we want to, and change footers and add disclaimers where that is not the case.

We will assume this database is a single publication legally citing bits of other published and unpublished sources, giving proper attribution and agreeing with how science is done, and can therefore be CC-BY licensed by us as a whole.


Build failure: waybar in nixos unstable

Steps To Reproduce
Steps to reproduce the behavior:

build system with waybar in unstable nixos

Build log
error: builder for '/nix/store/wp5d5205rv1kdz2rrz4jgknqjy6y2pm5-waybar-0.10.0.drv' failed with exit code 1;
       last 10 log lines:
       > Run-time dependency libudev found: YES 255
       > Run-time dependency libevdev found: YES 1.13.1
       > Run-time dependency libmpdclient found: YES 2.22
       > Run-time dependency xkbregistry found: YES 1.5.0
       > Run-time dependency jack found: YES 1.9.22
       > Run-time dependency wireplumber-0.4 found: NO (tried pkgconfig)
       >
       > meson.build:95:17: ERROR: Dependency "wireplumber-0.4" not found, tried pkgconfig
       >
       > A full log can be found at /build/source/build/meson-logs/meson-log.txt
       For full logs, run 'nix log /nix/store/wp5d5205rv1kdz2rrz4jgknqjy6y2pm5-waybar-0.10.0.drv'.
error: 1 dependencies of derivation '/nix/store/567iamqjrkw0pkshxz51sy0nm230lahv-home-manager-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/8w2h0j4s25ld98ww3zf02hybdl378lxr-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/gy22ixl76a5brlnhspalw7yb4pycj593-unit-script-waybar-start.drv' failed to build
error: 1 dependencies of derivation '/nix/store/00apvzpn7mhwh4m69i9nwnld5y4lmqaq-nixos-system-Casual-PC-24.05.20240319.b06025f.drv' failed to build

Additional context
I guess waybar wants wireplumber v0.4, but unstable have v0.5
Notify maintainers
@FlorianFranzen Florian Franzen<EMAIL_ADDRESS>@jtbx  Jeremy Baxter<EMAIL_ADDRESS>Bernardo Meurer<EMAIL_ADDRESS>@minijackson Rémi Nicole<EMAIL_ADDRESS>Erik Rodriguez<EMAIL_ADDRESS>@Synthetica9 Patrick Hilhorst<EMAIL_ADDRESS>@khaneliman Austin Horstman<EMAIL_ADDRESS>
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.8.0-zen1, NixOS, 24.05 (Uakari), 24.05.20240314.d691274`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.1`
 - channels(root): `"nixos-23.05, nixpkgs"`
 - channels(casual): `""`
 - nixpkgs: `/home/casual/.nix-defexpr/channels/nixpkgs`

Add a :+1: reaction to issues you find important.

Wait for #297158 to get merged into unstable. Track it here.

Duplicate of #297261

Closing as it's already fixed on master.


Payment path constraint

Implements #289.
New constraint is added to macaroons/constraints.go, alongside with utilities like payment path constraint parser and corresponding struct. As macaroon validation happens at the beginning of the SendPayment execution, I added new ValidateMacaroonWithCheckers function that allows to validate macaroons with arbitrary checker sets. This function is used in an additional filter-function argument to routing.ChannelRouter.SendPayment.
TODO:

[x] Tests for parser.
[x] Implement corresponding checker.
[x] Provide an authentication option.
[x] lncli testing utils.
[x] Integration tests.

@aakselrod , should the option to add payment path macaroon constraint be available in lnd or lndcli? Also, this is probably the time to think about dedicated subcommand for lndcli to create custom macaroons as described in #283 .

Apart from implement payment route constraint system, this also does the following:

Refactor macaroon constraints code to generalize checker interface: now checker is a function, that delays actual checker instantiation to the moment where complete context is known, and extracts the values required for the check from it. This allows to  perform macaroon checks at any moment provided we have access to the context.Context. Thus, more elaborate logic for macaroons is possible to implement.
First steps to complete lncli testing toolset, which will be useful for testing different macaroon constraints.

At last, merged @Roasbeef's changes that fix multi-hop payments.

Closing this since the implementation was so hacky the conflicts completely destroyed it:)


Enable dnsmasq for azure name resolution and fix app load balacer naming

Resolved 2 issues:
1. No dns names on infra nodes resulting in failure of app load-balancer.
2. Naming resolution for Azure Names not working due to dnsmasq changes in previous PR.

Talked to @glennswest and dnsmasq will be used by azure as well as the default use of ocp/origin.
+1


Pydantic validation error on angchain_community.chat_models.ChatLiteLLMRouter

Checked other resources

[X] I added a very descriptive title to this issue.
[X] I searched the LangChain documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangChain rather than my code.
[X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

Example Code
ChatLiteLLMRouter
from langchain_core.prompts import ChatPromptTemplate
from litellm.router import Router
from langchain_community.chat_models import ChatLiteLLMRouter

_prompt = ChatPromptTemplate.from_messages(
    [
        ("human", "You are an asistant. {input}"),
    ]
)

model_list = [
    {
        "model_name": "claude_3_haiku",
        "litellm_params": {
            "model": "bedrock/anthropic.claude-3-haiku-20240307-v1:0",
        },
    },
    {
        "model_name": "claude_3_sonnet",
        "litellm_params": {
            "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0",
        },
    },
]

litellm_router = Router(model_list=model_list)
_modellm=ChatLiteLLMRouter(router=litellm_router)

Error Message and Stack Trace (if applicable)
pydantic_core._pydantic_core.ValidationError: 1 validation error for ChatLiteLLMRouter
router
Field required [type=missing, input_value={'name': None, 'cache': N...ogether_ai_api_key': ''}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.9/v/missing
Description
I'm trying to create an instance of ChatLiteLLMRouter object, passing the required parameter router as:
_modellm=ChatLiteLLMRouter(router=litellm_router)

expected:  the  ChatLiteLLMRouter object is created
actual: exception raised because do not detect router parameter being passed:
pydantic_core._pydantic_core.ValidationError: 1 validation error for ChatLiteLLMRouter
router
Field required [type=missing, input_value={'name': None, 'cache': N...ogether_ai_api_key': ''}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.9/v/missing

System Info
System Information

OS:  Linux
OS Version:  #1 SMP Wed Mar 2 00:30:59 UTC 2022
Python Version:  3.11.10 (main, Sep  7 2024, 18:35:41) [GCC 11.4.0]

Package Information

langchain_core: 0.3.12
langchain: 0.3.3
langchain_community: 0.3.2
langsmith: 0.1.136
langchain_aws: 0.2.2
langchain_cli: 0.0.31
langchain_text_splitters: 0.3.0
langserve: 0.3.0

Optional packages not installed

langgraph

Other Dependencies

aiohttp: 3.10.10
async-timeout: Installed. No version info available.
boto3: 1.35.43
dataclasses-json: 0.6.7
fastapi: 0.115.2
gitpython: 3.1.43
gritql: 0.1.5
httpx: 0.27.2
jsonpatch: 1.33
langserve[all]: Installed. No version info available.
numpy: 1.26.4
orjson: 3.10.7
packaging: 24.1
pydantic: 2.9.2
pydantic-settings: 2.6.0
PyYAML: 6.0.2
requests: 2.32.3
requests-toolbelt: 1.0.0
SQLAlchemy: 2.0.36
sse-starlette: 1.8.2
tenacity: 8.5.0
tomlkit: 0.12.5
typer[all]: Installed. No version info available.
typing-extensions: 4.12.2
uvicorn: 0.23.2

It works as expected for me when removing the constructor in the class:
class ChatLiteLLMRouter(ChatLiteLLM):
    """LiteLLM Router as LangChain Model."""

    router: Any

    #def __init__(self, *, router: Any, **kwargs: Any) -> None:
    #   """Construct Chat LiteLLM Router."""
    #  super().__init__(**kwargs)
    #  self.router = router

Hello @pppazos! We're a group of students from the University of Toronto, and we're interested in investigating this issue further and making a PR to fix it. Do you have any additional information regarding this issue?
While we were able to replicate it, we didn't get the exact error message but it seems close to the error you got. I have attached an image of the error we got  below and would appreciate if you could review it.

If you have no extra information, we can begin working on this as soon as you confirm and will have a PR ready by mid-November.

If you have no extra information, we can begin working on this as soon as you confirm and will have a PR ready by mid-November.

Thanks @Aarya2004 ,  No additional info on my side.

Hi @pppazos  @Aarya2004 ,
The routing for a specific model is also not functioning.
We have configured three models here,
 model_list = [     {         "model_name": "small",           "litellm_params": {             "model": "bedrock/mistral.mistral-small-2402-v1:0",          },         "tpm": 100000,          "rpm": 100000,         "metadata": {             "description": "Meta's LLaMA 2 model for multi-turn conversations",         }     },     {         "model_name": "7billion",           "litellm_params": {             "model": "bedrock/mistral.mistral-7b-instruct-v0:2",          },         "tpm": 100000,          "rpm": 100000,         "metadata": {             "description": "Meta's LLaMA 2 model for multi-turn conversations",         }     },     {         "model_name": "large",           "litellm_params": {             "model": "bedrock/mistral.mixtral-8x7b-instruct-v0:1",         },         "tpm": 100000,          "rpm": 100000,         "metadata": {             "description": "Mistral for SQL generation and complex tasks",         }     } ]
router = Router(model_list=model_list)
chat = ChatLiteLLMRouter( model_name="large",router=router)
chat.invoke("Capital of india")
Instead of using large model mistral.mixtral-8x7b-instruct-v0:1, its using small model mistral.mistral-small-2402-v1:0.

Even in the source code, its selecting the first model from the list, instead of selecting user passed model.

The issue has been reported earlier, but it has been closed by GitHub BOT.
https://github.com/langchain-ai/langchain/issues/19356


Small fixes for TRIK Studio 3.1.4

Fixed segfaulting sometimes when subprogram cannot be generated into a structured code
Fixed disappearing text on link when throwing block on it
Fixed displaying internal editable enum values in property editor
Fixed expanding main window over the screen on small resolutions when switching modes in TRIK Studio

[Current coverage][cc-pull] is 26.22%

Merging [#1725][cc-pull] into [master][cc-base-branch] will decrease coverage by 0.02%

@@             master      #1725   diff @@
==========================================
  Files          1877       1877
  Lines         79099      79105     +6
  Methods       13303      13303
  Messages          0          0
  Branches       1074       1074
==========================================
- Hits          20761      20746    -15
- Misses        58240      58261    +21
  Partials         98         98

Powered by Codecov. Last updated by [91af0ce...13804bf][cc-compare]
[cc-base-branch]: https://codecov.io/gh/qreal/qreal/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/qreal/qreal/compare/91af0cec750b89316f214d9e33549b36dcf4eb0a...13804bfc96f84c759e63393dc9c64f3842cced2c
[cc-pull]: https://codecov.io/gh/qreal/qreal/pull/1725?src=pr


Analog Clock

Could you please assign me for this issue.

#Hacktoberfest2022

the issue has been assigned to @rishabh1911007


Moist held suarez breaks after switching to SSP and CAM_SE hyperdiffusion

See here: https://buildkite.com/clima/climaatmos-gpulongruns/builds/242#01902f1a-4668-41c6-b245-dfc68b13005b. @Sbozzolo Could you check if something is wrong with the setup, or if we should reduce dt?

I think one of the runs I had explicitely checked and it was running fine, but I might be getting confused. I am off today and I'll check this tomorrow morning.
If you want to re-run this tonight, can you try with dt of 120 s?

dt=120s is running: https://buildkite.com/clima/climaatmos-gpulongruns/builds/246#0190326e-9db4-4fe6-97ed-afdfa865d7e2


Xamarin 4.0 , FFImageLoading and SkiaSharp

Hi People.
I am updating my project to Xamarin 4.0, and I am using FFImageLoading with skiaSharp, but  with skiaSharp 1.68.0  I have this problem.
/Users/LALA/Projects/Clarika/Imperial-ClienteFiel/ClienteFiel.Forms.iOS/MTOUCH: Error MT0009: Error while loading assemblies: /Users/hugo/.nuget/packages/skiasharp/1.68.0/runtimes/win-x86/native/libSkiaSharp.dll (MT0009) (ClienteFiel.Forms.iOS)
My question.
Do support SkiaSharp the new version o Xamarin?
Thx!

In other chat, I found
https://github.com/xamarin/xamarin-macios/issues/5265

I'm having the same issue. Xamarin Forms 4.0.0, Visual Studio 2019 for Windows, SkiaSharp.Views.Forms 1.68.0. The workaround of # 5265 to switch from x64 to Any CPU temporally resolve the issue.

I am having the same issue.
How would I change to Any CPU on VS for Mac?

Any more info on this issue? I have the same problem. Can not make an iOS build with SkiaSharp 1.68.0.

Any news on this issue ?

I'm struggeling with this issue as well. As soon as I upgrade to 1.68.0 it cannot load the assemblie. I've tried many suggestions, none solved the problem so far.

I am facing the same issue with Xamarin Forms <IP_ADDRESS>8062 and SkiaSharp 1.68.0
Error Details : MTOUCH : error MT0009: Error while loading assemblies:
Is there any fix provided for this issue

If you are still hitting this issue, it is likely due to a configuration on your csproj file for your iOS project that looks similar to the following.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<DefineConstants>__IOS__;__MOBILE__;__UNIFIED__;Release;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<MtouchArch>ARM64</MtouchArch>
<CodesignKey>iPhone Distribution</CodesignKey>
<MtouchUseLlvm>true</MtouchUseLlvm>
<MtouchFloat32>true</MtouchFloat32>
<MtouchEnableSGenConc>true</MtouchEnableSGenConc>
<MtouchLink>SdkOnly</MtouchLink>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>

Remove the <PlatformTarget>x86</PlatformTarget> and you should be good to to go. Make sure that you do this for all of your iPhone release configurations, likely Release, Ad-Hoc and AppStore.

If you are still hitting this issue, it is likely due to a configuration on your csproj file for your iOS project that looks similar to the following.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
    <DebugType>none</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\iPhone\Release</OutputPath>
    <DefineConstants>__IOS__;__MOBILE__;__UNIFIED__;Release;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <MtouchArch>ARM64</MtouchArch>
    <CodesignKey>iPhone Distribution</CodesignKey>
    <MtouchUseLlvm>true</MtouchUseLlvm>
    <MtouchFloat32>true</MtouchFloat32>
    <MtouchEnableSGenConc>true</MtouchEnableSGenConc>
    <MtouchLink>SdkOnly</MtouchLink>
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <PlatformTarget>x86</PlatformTarget>
</PropertyGroup>

Remove the <PlatformTarget>x86</PlatformTarget> and you should be good to to go. Make sure that you do this for all of your iPhone release configurations, likely Release, Ad-Hoc and AppStore.

Thanks! Works for me!

I don't have that platform target line and still hitting this error

I can build locally, because I do not have the PlatformTarget line, but I cannot build via App Center. It's pulling the win-64 version of SkiaSharp:

/Users/runner/work/1/s/iOS/myProject.iOS.csproj" (Rebuild target) (1) ->
(_CompileToNative target) ->
MTOUCH : error MT0009: Error while loading assemblies: /Users/runner/.nuget/packages/skiasharp/2.80.1/runtimes/win-x64/native/libSkiaSharp.dll [/Users/runner/work/1/s/iOS/myProject.iOS.csproj]
0 Warning(s)
1 Error(s)

Time Elapsed 00:05:49.82
##[error]Xamarin.iOS task failed with error Error: /Library/Frameworks/Mono.framework/Versions/6_8_1/bin/msbuild failed with return code: 1. For guidance on setting up the build definition, see https://go.microsoft.com/fwlink/?LinkId=760847.

The link is about building apps with AppCenter. This was working great until I needed SkiaSharp for something and had to add it.

I saw you posed here too: https://github.com/xamarin/xamarin-macios/issues/5265
I'll see what I can do, but maybe you can try adding ExcludeAssets="runtimes":
<PackageReference Include="SkiaSharp" Version="2.80.1" ExcludeAssets="runtimes" />

This should force the files to not even be loaded.
But, could you try out the v2.80.2 preview, that might fix it.

Hello,
I'm having the same problem here after updating SkiaSharp from 1.60.3 to 2.80.2
Solution is Xamarin.Forms (shared) and an iOS project and Android project. Android works just fine.
Here's the error in iOS build:
Severity	Code	Description	Project	File	Line	Suppression State
Error		Error while loading assemblies: /Users/[user]/Library/Caches/Xamarin/mtbs/builds/[mycompany].iOS/2b8bb42efaa82e056d0923743e8a2829/bin/iPhoneSimulator/Debug/libSkiaSharp.dll.	[mycompany].iOS
2>  /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin/mtouch @/Users/[user]/Library/Caches/Xamarin/mtbs/builds/[mycompany].iOS/2b8bb42efaa82e056d0923743e8a2829/obj/iPhoneSimulator/Debug/response-file.rsp "--gcc_flags=-Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/[user]/Library/Caches/Xamarin/mtbs/builds/[mycompany].iOS/2b8bb42efaa82e056d0923743e8a2829/obj/iPhoneSimulator/Debug/Entitlements.xcent"
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(885,3): error MT0009: Error while loading assemblies: /Users/[user]/Library/Caches/Xamarin/mtbs/builds/[mycompany].iOS/2b8bb42efaa82e056d0923743e8a2829/bin/iPhoneSimulator/Debug/libSkiaSharp.dll.
I have tried removin gthis from the iOS .proj file: x86
And I've tried adding this to the .proj file: ExcludeAssets="runtimes" in the skiaSharp reference(s).
If I regress to 1.60.3 it works just fine.
Any other potential fixes?
Thanks

I ran into a similar problem with Visual Studio for Mac 8.9.2 (build 0) and early versions.
/Users/Neocriss/Documents/iLive.Mobile/ILive/ILive.iOS/MTOUCH: Error MT0009: Error while loading assemblies: /Users/Neocriss/.nuget/packages/harfbuzzsharp/<IP_ADDRESS>/runtimes/win-x86/native/libHarfBuzzSharp.dll. (MT0009) (ILive.iOS)
I added the following lines to the file 'ILive.iOS.csproj':
<RuntimeIdentifiers>osx;osx-x86;osx-x64</RuntimeIdentifiers>
<NuGetRuntimeIdentifier>osx</NuGetRuntimeIdentifier>

then the problem disappeared.
But now there are another problem. My app crashes at runtime with exception:
System.MissingMethodException: Method not found: System.Span`1<uint16> SkiaSharp.SKRunBuffer.GetGlyphSpan()

And this is only reproduced in Visual Studio for Mac 8.9.1 (build 34) and 8.9.2 (build 0) versions.


show count of entities and datasets on 2 more pages

Thanks for your very excellent UI! A couple of minor improvements:

Search results page (eg https://www.opensanctions.org/search/?q=abramovich) shows breakdowns per topic (type) and dataset. But it doesn't show the total number of entities.
https://www.opensanctions.org/datasets/ shows that Due Diligence List includes 42 data sources and 190,258 targets.
But when you go to its page https://www.opensanctions.org/datasets/default/, it shows breakdown per type and (190,464 total) but not the number of datasets

Hello @VladimirAlexiev - sorry for failing to respond to this for a long while. Just two notes on the numbers:

The total result count is shown near the bottom in the pagination bar, e.g. "1 - 25 of 2817". Unfortunately, for result counts larger than 10k, ElasticSearch doesn't return precise numbers any more, so the result count it only useful below that threshold.
I've remodelled the datasets info page a bit, with what I hope is a more useful presentation of the key numbers, and the list of sources. the total number of sources is in the heading of the sources section now. does that look ok to you?

I checked a more common name https://www.opensanctions.org/search/?q=ivanov and I see "1 - 25 of 196", thanks!
Yes, I see the count in the section Datasets. Thanks!


RETEST 508: EM Submission Access Duplicate ID

ID on Reporting Period and Status is a duplicate ID

found the duplication in the html. See screenshot with the highlighted id's

@aprematta ticket is ready for testing

Testing complete, there is no error for duplicate id's on this page anymore


document versioning policy

SemVer is for the wire protocol. Since romantic/sentimental versioning are clearly perjorative (nor do the terms even approach describing peoples' experience with software), the client / source-level APIs are /Realistically Versioned/; emphasizing system intent and praxis (but it's basically the same thing)
Essentially, the client version will track the protocol semver so it's clear which clients are compatible with which servers. On the other hand, the client is free to make API-level changes (often this will imply breaking compilation, so it's clear code needs to be updated). This avoids being locked into bad source-level APIs while still preserving the ability to communicate with older servers.

/cc @jpbetz we probably want to get this done in 3.4 cycle.


WIP: Simplify travis file and lint target

Simplify the overcomplicated and verbose travis file to make it easier to maintain it. Also I thing the codecov part is still broken: https://github.com/inovex/illuminatio#illuminatio---the-kubernetes-network-policy-validator the badge alway shows 0.

Let's see what breaks 🙈

I cleaned up the file with: https://config.travis-ci.com/explore somehow the matrix doesn't work :(


Formalize column sizing as constrained flex

Closes
Addresses https://github.com/adobe/react-spectrum/issues/3007#issuecomment-1360434152
We could possibly have the browser calculate our column sizes by rendering a hidden flex much as I do in the jsfiddle in my comment. Then read those widths from the dom and apply them to our component, however, I think this will put us a render behind unless we hold up the thread to read them inline, which doesn't seem ideal. Something to explore though if this solution is inadequate
The underlying issue that caused this rewrite was that we try to calculate the sizes in a single pass. This meant that all columns were set to a target width, then that was clamped, and the remaining width after the clamp was never distributed to the columns that weren't in violation. I started writing this, and as I did, I realized I was implementing a version of flex layout. I verified that with the jsfiddle I linked to in my comment, and I also verified it by reading the algorithm for flex layout as defined for the browsers which was very close to what I was already implementing. In doing so I saw an opportunity to make our sizing algorithm based on something well understood and hopefully easy to understand with all the annotations.
✅ Pull Request Checklist:

[ ] Included link to corresponding React Spectrum GitHub Issue.
[ ] Added/updated unit tests and storybook for this change (for new code or code which already has tests).
[ ] Filled out test instructions.
[ ] Updated documentation (if it already exists for this component).
[ ] Looked at the Accessibility Practices for this feature - Aria Practices

📝 Test Instructions:

🧢 Your Project:

Could you explain why the issue led to this complex of an algorithm? Doesn't seem like we need all of its features (in particular we always both grow and shrink). How does this differ in behavior from the old algorithm? What was the underlying issue with the old one?

@devongovett updated the description to add this information. Happy to discuss more. Thanks for having a look.

kylebot storybook

Why wouldn't a simple greedy algorithm work?
// Inputs
let available = 300; // available space remaining after applying fixed widths
let factors = [2, 1]; // fr factors for remaining columns
let maxWidths = [50, Infinity];
let minWidths = [20, 0];

let totalFactors = factors.reduce((p, f) => p + f); // Sum of factors
let widths = factors.map((f, i) => {
  // Compute size of column based on currently available space.
  let w = Math.max(minWidths[i], Math.min(maxWidths[i], available / totalFactors * factors[i]));

  // Subtract the actual used space from available for next iteration.
  available -= w;
  totalFactors -= f;
  return w;
});

With that, the widths are [50, 250] in the above example. With maxWidths = [Infinity, Infinity], the output is [200, 100].
What cases am I missing here?

Unfortunately that doesn't quite work because you need to account for a minWidth that might be wildly bigger but with an equal flex value.
for instance:
available = 300
factors = [1, 1]
maxWidths = [Infinity, Infinity]
minWidths = [10, 200]

Which, with flex, yields the last group of two in this jsfiddle https://jsfiddle.net/snowystinger/wv0ymjaf/63/ where the widths are 100 and 200 respectively
However, your algorithm would yield 150 and 200

Yeah I think we have to constrain the min width by the available width so it doesn't go beyond.
// Inputs
let available = 300; // available space remaining after applying fixed widths
let factors = [1, 1]; // fr factors for remaining columns
let maxWidths = [Infinity, Infinity];
let minWidths = [10, 200];

let totalFactors = factors.reduce((p, f) => p + f); // Sum of factors
let widths = factors.map((f, i) => {
  // Compute size of column based on currently available space.
  let w = Math.max(Math.min(minWidths[i], available), Math.min(maxWidths[i], available / totalFactors * factors[i]));

  // Subtract the actual used space from available for next iteration.
  available -= w;
  totalFactors -= f;
  return w;
});

yields [150, 150] which seems correct given the factors are equal.

Ok how about something like this. First pass, satisfy all the min widths. Second pass, fill in remaining.
let widths = new Array(factors.length);
let currentAvailable = available;
let currentFactors = totalFactors;
for (let i = 0; i < widths.length; i++) {
 let w = currentAvailable / currentFactors * factors[i];
  if (w < minWidths[i] || w > maxWidths[i]) {
    // Computed width needs to be constrained.
    // Pin the width and treat as inflexible (remove from available).
    w = widths[i] = Math.max(minWidths[i], Math.min(maxWidths[i], w));
    available -= w;
    totalFactors -= factors[i];
  }
  currentAvailable -= w;
  currentFactors -= factors[i];
}

// Now fill in the remaining widths.
for (let i = 0; i < widths.length; i++) {
  if (widths[i] === undefined) {
    widths[i] = Math.min(maxWidths[i], available / totalFactors * factors[i]);
    available -= widths[i];
  }
}

I get [100, 200] with this.

That returns wrong I believe here
let available = 1400 - 400; // available space remaining after applying fixed widths
let factors = [1, 0, 4]; // fr factors for remaining columns
let maxWidths = [Infinity, Infinity, Infinity];
let minWidths = [50, 50, 50];

let totalFactors = factors.reduce((p, f) => p + f, 0); // Sum of factors
let widths = new Array(factors.length);
widths[1] = 400;
let currentAvailable = available;
let currentFactors = totalFactors;
for (let i = 0; i < widths.length; i++) {
    if (!widths[i]) {
 let w = currentAvailable / currentFactors * factors[i];
  if (w < minWidths[i] || w > maxWidths[i]) {
    // Computed width needs to be constrained.
    // Pin the width and treat as inflexible (remove from available).
    w = widths[i] = Math.max(minWidths[i], Math.min(maxWidths[i], w));
    available -= w;
    totalFactors -= factors[i];
  }
  currentAvailable -= w;
  currentFactors -= factors[i];
    }
}

// Now fill in the remaining widths.
for (let i = 0; i < widths.length; i++) {
  if (widths[i] === undefined) {
    widths[i] = Math.min(maxWidths[i], available / totalFactors * factors[i]);
    available -= widths[i];
  }
}
console.log(widths) -> [200, 400, 640] -> sums to 1240 // this should sum to 1400, and if we follow flex, it should be [200, 400, 800]

@snowystinger looks like I forgot to subtract from totalFactors in the example. Here it is passing all the tests so far. Any other broken ones? https://codesandbox.io/s/hungry-curran-fxtre0?file=/src/index.test.js

It fails the original test that we were solving for. It doesn't fill the remaining space. See jsfiddle first example https://jsfiddle.net/snowystinger/wv0ymjaf/79/
  assert.deepEqual(
    calculateWidths(
      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
      970,
      [50, Infinity, 50, 50, 50, 50, 50, 50, 50, Infinity],
      [0, 200, 0, 0, 0, 0, 0, 0, 0, 200]
    ),
    [50, 285, 30, 50, 50, 50, 50, 50, 50, 50, 285]
  );

I've added this to the codesandbox tests as well
https://codesandbox.io/s/still-rgb-m2w78m?file=/src/index.test.js

Sorry, I don't quite follow what the problem is. It looks like it sums to the correct value of 970 and satisfies all the min and max widths?

Yes, it fulfills all of those. The thing it's missing is that two columns with the same FR value should split the remaining space equally. I haven't looked at your code long enough yet to see why it doesn't in that one test. I tried a couple of other tests, and they do split it evenly. I think it's weird that it splits according to the FRs sometimes, but not always.

What is the usecase for frs other than 1fr in the first place? When would you use 2fr vs just using a percent or something? Is it worth the long term maintenance cost? I don't want it to end up like the overlay positioning code. It is much simpler to just take the remaining space and divide it evenly, satisfying min/max greedily, as we had before. If it's not something you can specify, you only omit the width, then it's less weird when they don't exactly match.

That example is just 1fr's
What I'm saying is, your proposed algorithm returns the fr split differently depending on other elements
    calculateWidths(
      [1, 1],
      970,
      [Infinity, Infinity],
      [0, 0]
    ),
=> [485, 485] // or a 50/50 split

    calculateWidths(
      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
      970,
      [50, Infinity, 50, 50, 50, 50, 50, 50, 50, Infinity],
      [0, 200, 0, 0, 0, 0, 0, 0, 0, 200]
    ),
=> [50, 200, 30, 50, 50, 50, 50, 50, 50, 50, 370] // or a 200/370 split

// but it gets weirder still, if we omit the 200min width on the first column, we get back our 50/50 split
    calculateWidths(
      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
      970,
      [50, Infinity, 50, 50, 50, 50, 50, 50, 50, Infinity],
      [0, 0, 0, 0, 0, 0, 0, 0, 0, 200]
    ),
=> [50, 285, 30, 50, 50, 50, 50, 50, 50, 50, 285] // back to a 50/50 split

I don't think this is anything like our positioning code. This is explicitly defined by spec. Our positioning code is essentially made up and we never formalized any of the edge cases in a spec.

I'm aware, however we have had this same algorithm for years and it has not been a problem. It's only a problem because now you're explicitly saying 1fr rather than just omitting the width.


Change textarea fields column type to text

Context
Change made because the string data type only allows for 255 characters.
Link to Trello card
https://trello.com/c/OEwa5yP3/1277-create-a-migration-to-increase-the-length-of-the-textarea-inputs

 Create a migration to increase the length of the textarea inputs


Add japanese locale

Dear maintainers,
I'd like you to add Japanese locale to your great work.

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

Pull Request Test Coverage Report for Build 194

2 of 2 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.008%) to 92.371%

Totals

Change from base Build 190:
0.008%

Covered Lines:
896

Relevant Lines:
970

💛  - Coveralls

@tsukakei Thank you for your contribution!


How to trigger a tool recalculation after 'addToolState' for RectangleRoiTool?

Prerequisites

[x] Are you running the latest version?
[x] Are you reporting to the correct repository?
[x] Did you perform a cursory search?

For more information, see the CONTRIBUTING guide.
Description
I am working currently on a tool that has to calculate a volume, this means, I draw an area using the RectangleRoiTool, and then I have to replicate that area on X number of images. I am doing this by using addToolState on each image, using the toolState from the area I created. The problem is, when the script scrolls to the next image and adds the tool state, it doesn't recalculate the Mean and StdDev of the current image, but it is saving the data from the created area. Is there an option to recalculate the state once it is added? Specifically for the RectangleRoiTool.
Thanks!
Steps to Reproduce

Draw a rectangle using RectangleRoiTool.
Save the tool state on a variable.
Add the saved tool state on any other image. The calculations are still the ones from the variable, not the ones that should be from this new image.

Expected behavior: Once the tool state is added, it should recalculate the information from this new image.
Actual behavior: After setting the tool state, the information from the saved state is static, no recalculation is being triggered.

@pzehle, I don't believe this feature exists. I would be open to a PR that updates the BaseAnnotationTool to accomplish this. Something like...
forceRecalc that has a default implementation of setting the tool's measurement as "dirty" and triggering a re-render. This is definitely up for discussion. @JamesAPetts may have other thoughts.
Small note. If you're calculating volume, you may not want to sum area on X slides. You might be better off calculating the volume of your cube, then using that cube's dimensions to determine how to annotate each slice.

This is an interesting problem and one I've thought of for a while. Shared data between annotations are what modules are built for, and this is a perfect use case for that.
I would just give the rects a UID, and register them to a ledger in a module. In the rects addToolState function I'd add a call to the module to invalidate all annotations registered in the ledger.

You could also save the volume as a module variable, and have a getter in your render function for the toolState that fetches this, so you only have to keep track of one copy of it.

@dannyrb Thanks for the response. I will think of an implementation for this and let you know of my thoughts. Maybe we can include this as a PR. I will let you know. As of the volume note, thanks, I will keep in mind that, but I actually need the density of the HU of the cube, which I think is a lot more important for my development, as we are trying to implement some ML and tumour detection.
@JamesAPetts Thanks for the response as well. I will think of a solution for this. My problem is that I have to deliver a quick example this Friday, no time to develop complex stuff. You think, if after adding the tool state, I trigger a click on one of the handles to update the calculations, which manually works, is a good idea?
I am up to quick solutions if you have them, if not, I will think of something for the library and instead I am going for something temporary. Thanks both!

@dannyrb, @JamesAPetts hey, no luck with the triggered click, don't know why but it doesn't work. Digging further in the code, I found that the RectangleRoiTool.js source file has a function called _updateCachedStats. Isn't it possible to call that function from within my code?
Thanks!

@pzehle, probably, but it's not "public" and could change.
If you need something quick, we could:

Restore state with no calculated value
Put in a PR where, if the value is undefined, it should be recalculated in the render loop

If you need to force a re-render for all elements, you can do something like:
import { updateImage } from 'cornerstone-core';
import { store } from 'cornerstone-tools';

store.state.enabledElements.forEach(enabledElement =>
    updateImage(enabledElement );
  );

@dannyrb thanks for the reply. I've tried this, and sadly it updates the image but doesn't recalculate the information within the area, it just stays the same. I am bit lost here.

@pzehle, right. You would also need a PR that changes this line:
https://github.com/cornerstonejs/cornerstoneTools/blob/master/src/tools/annotation/RectangleRoiTool.js#L191
if (data.invalidated === true || !data.cachedStats) {
  ...
}

@dannyrb thanks, you are always helpful. I am still lost, but I think you gave me a place to start. Thanks!

How are you console.log()-ing? I could be wrong, but for objects I think the value is evaluated when you expand the object in the console, not at the time of logging.
When you restore state, are you making sure invalidated is true and cachedStats is undefined?

I am logging directly on my code, and you are right, but that happens only some times. This has been a difficult development as my code has so many promises and async stuff, that I think most of the time is running so fast that values are not being properly updated. Also, I forgot to set cachedStats as undefined, and I just did that and it crashed, because of the async stuff. I will look into it and let you know. Thanks again.

Hello @dannyrb, as always, thank you very much.
I managed to accomplish this setting  invalidated as true and cachedStats as undefined as you suggested. I was having the problem of the tool still not updating, but I've restructured my process with a lot of promises, and have a timeout to wait for the tool to recalculate, this was the trick.
I will work on the PR you suggested to add this functionality. Thanks!

👋 Hi @pzehle, I'm going to close this issue for now. It sounds like there's an "okay" workaround that helped you accomplish your goal.
If you think there's an improvement we can make to simplify this, please feel free to create a separate discussion issue for the change.

Hi @dannyrb. For now is OK. I will work in the future on a PR to have an automated method to accomplish this without any of this processes. I will let you know. Thanks!

@pzehle @dannyrb
Hey y'all, just a heads up, I'm going to build an API to help with stuff like this, for plugin development for larger/3D tools.
On the drawing board:
// Returns toolState for each image in the stack with toolState.
// If tool is specified, only that tool's state.
getToolStateForStack(
  element,
  [tool]
)

// Invalidates any toolState in the stack that has an `invalidated` method.
invalidateToolStateForStack(
  element,
  [tool]
)

// Cleanly merges toolState to globalToolState.
mergeToolStateToGlobalToolState(
  toolState
)

// clears toolstate for all imageIds in the stack.
// If a tool is specified, then only clear that tool.
clearToolStateForStack(
  element,
  [tool]
)

Probably expose this stuff under something like:
const {
  getToolStateForStack,
  invalidateToolStateForStack,
  mergeToolStateToGlobalToolState,
  clearToolStateForStack
} = cornerstoneTools.import('utils/stackToolStateUtils');

Let me know if you think of any additional functionality that'd be useful for your usecase.

Hi @JamesAPetts, I think it is an excellent idea, mainly because right now it is complicated to achieve what I wanted, though it was relatively easy to accomplish, I think this would resolve a lot of issues.

Addressed in #889 .

I have a tool that changes colPixelSpacing and rowPixelSpacing it works fine on tools that are used after the calibration, however any measurements that were there before do not get updated unless I touch them. How can I force an update?


Authorization header for ApiKey authentication is wrongly formatted

Bug description
It is not possible to authenticate to the APM Server via ApiKey.
Details
The HTTP Authorization header for authenticating via ApiKey should be in the form:
Authorization: ApiKey <base64_encoded_credentials
see: Elastic documentation (I could not find APM Server specific doc for the ApiKey authentication).
Here instead the ApiKey identifier is also base64 encoded. So the authentication does not work.
https://github.com/krojew/tracing-elastic-apm/blob/7634b123307311401b8b982810f316f04b6bf6e2/src/apm_client.rs#L75

@krojew
We are having the same issue. Would you please perform a new release containing this fix?


text.eo:151-153: Current implementation works only with...

The puzzle 65-b89d6548 from #65 has to be resolved:
https://github.com/objectionary/eo-strings/blob/15c45dafe746aadede441a56e331043716e70e5b/src/main/eo/org/eolang/txt/text.eo#L151-L153
The puzzle was created by @Graur on 26-Dec-22.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@eugenedar please pay attention to this new issue.


Problem with Type of Tuple.map (was: type inference regression)

Compiler version
Works fine in 3.2.0, fails in 3.2.1-RC1-bin-20220904-b5fea82-NIGHTLY
Minimized code
import language.implicitConversions

class Inverse[F[_], G[_]]
type MatchSome[X] = X match { case Some[t] => t }
def matchSome[X](x: X): MatchSome[X] = x match { case k: Some[t] => k.get }
given Inverse[MatchSome, Some] = new Inverse

extension [T](x: T) inline def widen[S >: T]: S = x

given [X, Y](using ev: X =:= Y): Conversion[X, Y] = ev(_)
inline def rel[A] = <:<.refl[Any].asInstanceOf[A]
given simplify_map_map[T <: Tuple, F[_], G[_]]: (Tuple.Map[Tuple.Map[T, G], F] =:= Tuple.Map[T, [X] =>> F[G[X]]]) = rel
given simplify_map_id[T <: Tuple]: (Tuple.Map[T, [X] =>> X] =:= T) = rel
given mapinverse_inversemap[T <: Tuple, F[_], G[_]](using Inverse[F, G]): (Tuple.Map[T, F] =:= Tuple.InverseMap[T, G]) = rel
given simplify_map_inversemap[T <: Tuple, F[_]]: (Tuple.InverseMap[Tuple.Map[T, F], F] =:= T) = rel
given map_ismappedby[O <: Tuple, F[_], M <: Tuple.Map[O, F]]: Tuple.IsMappedBy[F][M] = rel

def f[T <: Tuple](t: T): Tuple.Map[T, [X] =>> Option[List[X]]] =
  val tl: Tuple.Map[T, List] = t.widen.map([X] => (x: X) => List(x))
  val tol: Tuple.Map[Tuple.Map[T, List], Option] = tl.widen.map([X] => (x: X) => Option(x))
  tol

def g[T <: Tuple](t: T): T =
  val nt: Tuple.Map[T, [X] =>> X] = t.widen.map[[X] =>> X]([X] => (x: X) => {println(x); x})
  nt

def h[T <: Tuple](to: T)(using Tuple.IsMappedBy[Some][T]): Tuple.InverseMap[T, Some] =
  val t: Tuple.Map[T, MatchSome] = to.widen.map([X] => (x: X) => matchSome(x))
  t

def back_forth[T <: Tuple](t: T): T =
  val ts: Tuple.Map[T, Some] = t.widen.map([X] => (x: X) => Some(x))
  val nt = h(ts)
  nt

@main def example =
  println(f(4, 2))
  println(g(4, 2))
  println(back_forth(4, 2))
  println(h(Some(1), Some(2)))

Output
[error] -- [E007] Type Mismatch Error: /home/adamv/IdeaProjects/Test/src/main/scala/tuple_laws.scala:22:42
[error] 22 |  val tl: Tuple.Map[T, List] = t.widen.map([X] => (x: X) => List(x))
[error]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]    |Found:    <root>.this.scala.Tuple.Map[(?1 : T), List]
[error]    |Required: <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |
[error]    |where:    ?1 is an unknown value of type T
[error]    |          T  is a type in method f with bounds <: <root>.this.scala.Tuple
[error]    |
[error]    |
[error]    |Note: a match type could not be fully reduced:
[error]    |
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[(?1 : T), List]
[error]    |  failed since selector  (?1 : T)
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => List[h] *: LazyRef(Tuple$.this.Map[t, List])
[error]    |
[error]    | longer explanation available when compiling with `-explain`
[error] -- [E007] Type Mismatch Error: /home/adamv/IdeaProjects/Test/src/main/scala/tuple_laws.scala:23:63
[error] 23 |  val tol: Tuple.Map[Tuple.Map[T, List], Option] = tl.widen.map([X] => (x: X) => Option(x))
[error]    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]    |Found:    <root>.this.scala.Tuple.Map[
[error]    |  (?2 : <root>.this.scala.Tuple.Map[T, scala.this.package.List])
[error]    |, scala.this.Option]
[error]    |Required: <root>.this.scala.Tuple.Map[
[error]    |  <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |, [A] =>> <root>.this.scala.Option[A]]
[error]    |
[error]    |where:    ?2 is an unknown value of type <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |          T  is a type in method f with bounds <: <root>.this.scala.Tuple
[error]    |
[error]    |
[error]    |Note: a match type could not be fully reduced:
[error]    |
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[
[error]    |  (?2 : <root>.this.scala.Tuple.Map[T, scala.this.package.List])
[error]    |, scala.this.Option]
[error]    |  failed since selector  T
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => List[h] *: LazyRef(Tuple$.this.Map[t, scala.this.package.List])
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |  failed since selector  T
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => List[h] *: LazyRef(Tuple$.this.Map[t, scala.this.package.List])
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |  failed since selector  T
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => List[h] *: LazyRef(Tuple$.this.Map[t, scala.this.package.List])
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[T, scala.this.package.List]
[error]    |  failed since selector  T
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => List[h] *: LazyRef(Tuple$.this.Map[t, scala.this.package.List])
[error]    |
[error]    | longer explanation available when compiling with `-explain`
[error] -- [E007] Type Mismatch Error: /home/adamv/IdeaProjects/Test/src/main/scala/tuple_laws.scala:27:58
[error] 27 |  val nt: Tuple.Map[T, [X] =>> X] = t.widen.map[[X] =>> X]([X] => (x: X) => {println(x); x})
[error]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]    |Found:    <root>.this.scala.Tuple.Map[(?3 : T), [X] =>> X]
[error]    |Required: <root>.this.scala.Tuple.Map[T, [X] =>> X]
[error]    |
[error]    |where:    ?3 is an unknown value of type T
[error]    |          T  is a type in method g with bounds <: <root>.this.scala.Tuple
[error]    |
[error]    |
[error]    |Note: a match type could not be fully reduced:
[error]    |
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[(?3 : T), [X] =>> X]
[error]    |  failed since selector  (?3 : T)
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => h *: LazyRef(Tuple$.this.Map[t, [X] =>> X])
[error]    |
[error]    | longer explanation available when compiling with `-explain`
[error] -- [E007] Type Mismatch Error: /home/adamv/IdeaProjects/Test/src/main/scala/tuple_laws.scala:31:47
[error] 31 |  val t: Tuple.Map[T, MatchSome] = to.widen.map([X] => (x: X) => matchSome(x))
[error]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]    |Found:    <root>.this.scala.Tuple.Map[(?4 : T),
[error]    |  tuple_laws.this.tuple_laws$package.MatchSome
[error]    |]
[error]    |Required: <root>.this.scala.Tuple.Map[T, tuple_laws.this.tuple_laws$package.MatchSome]
[error]    |
[error]    |where:    ?4 is an unknown value of type T
[error]    |          T  is a type in method h with bounds <: <root>.this.scala.Tuple
[error]    |
[error]    |
[error]    |Note: a match type could not be fully reduced:
[error]    |
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[(?4 : T),
[error]    |  tuple_laws.this.tuple_laws$package.MatchSome
[error]    |]
[error]    |  failed since selector  (?4 : T)
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => tuple_laws.this.tuple_laws$package.MatchSome[h] *:
[error]    |  LazyRef(Tuple$.this.Map[t, tuple_laws.this.tuple_laws$package.MatchSome])
[error]    |
[error]    | longer explanation available when compiling with `-explain`
[error] -- [E007] Type Mismatch Error: /home/adamv/IdeaProjects/Test/src/main/scala/tuple_laws.scala:35:42
[error] 35 |  val ts: Tuple.Map[T, Some] = t.widen.map([X] => (x: X) => Some(x))
[error]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]    |Found:    <root>.this.scala.Tuple.Map[(?5 : T), scala.this.Some]
[error]    |Required: <root>.this.scala.Tuple.Map[T, [A] =>> <root>.this.scala.Some[A]]
[error]    |
[error]    |where:    ?5 is an unknown value of type T
[error]    |          T  is a type in method back_forth with bounds <: <root>.this.scala.Tuple
[error]    |
[error]    |
[error]    |Note: a match type could not be fully reduced:
[error]    |
[error]    |  trying to reduce  <root>.this.scala.Tuple.Map[(?5 : T), scala.this.Some]
[error]    |  failed since selector  (?5 : T)
[error]    |  does not match  case <root>.this.scala.Tuple$package.EmptyTuple => <root>.this.scala.Tuple$package.EmptyTuple
[error]    |  and cannot be shown to be disjoint from it either.
[error]    |  Therefore, reduction cannot advance to the remaining case
[error]    |
[error]    |    case h *: t => scala.this.Some[h] *: LazyRef(Tuple$.this.Map[t, scala.this.Some])
[error]    |
[error]    | longer explanation available when compiling with `-explain`

Expectation
Work as defined in 3.2.0.

I think we'll need a bisect on this one

Minimized:
def widen[T](x: T): T = x

def f[T <: Tuple](t: T): Tuple.Map[T, [X] =>> Option[List[X]]] =
  val tl: Tuple.Map[T, List] = widen(t).map([X] => (x: X) => List(x))

I think the new behavior is correct, unfortunately. widen(t) has type ?: T (i.e. unknown value of type T) and that type appears in invariant position in the type of map. That means we cannot approximate to T. And since Map is invariant in its first parameter we get the expected error message:
5 |  val tl: Tuple.Map[T, List] = widen(t).map([X] => (x: X) => List(x))
  |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |               Found:    Tuple.Map[(?2 : T), List]
  |               Required: Tuple.Map[T, List]
  |
  |               where:    ?2 is an unknown value of type T
  |                         T  is a type in method f with bounds <: Tuple

Previous to https://github.com/lampepfl/dotty/commit/46e3d773ce1cae594196dc984356e2629d3fd74a the approximation logic had holes, that's we this case was overlooked. https://github.com/lampepfl/dotty/commit/46e3d773ce1cae594196dc984356e2629d3fd74a was done to fix  weird error message but we see here that it fixes a soundness problem as well.

I use widen a lot, and this makes me worried upgrading other projects past 3.2.0 @odersky
Specifically, without the widen the minimized code fails with
  val tl: Tuple.Map[T, List] = t.map([X] => (x: X) => List(x))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Found:    <root>.this.scala.Tuple.Map[(t : T), List]
Required: <root>.this.scala.Tuple.Map[T, scala.this.package.List]

where:    T is a type in method f with bounds <: <root>.this.scala.Tuple

which is expected behavior too?
It's very hard to do anything nontrivial with the new Tuple constructs at the moment, is there any workaround?

After digging deeper it looks like a fundamental problem with Tuple.map to me, which was only hidden by a hole in asSeenFrom. To recap:
t.map([X] => (x: X) => List(x))

is of type
Tuple.Map[t.type, List]

Map is invariant so this is not compatible with Tuple.Map[T, List]. The previous trick of using
(t: T).map([X] => (x: X) => List(x))

(which is essentially what widen does) does not work either. Because the prefix T occurs invariantly in the type of
map it has to be narrowed to a skolem. So you get
Tuple.Map[?1: T, List]

The problem seems to be that map does not widen the key type of the map. Indeed it is defined like this:
  /** Called on a tuple `(a1, ..., an)`, returns a new tuple `(f(a1), ..., f(an))`.
   *  The result is typed as `(F[A1], ..., F[An])` if the tuple type is fully known.
   *  If the tuple is of the form `a1 *: ... *: Tuple` (that is, the tail is not known
   *  to be the cons type.
   */
  inline def map[F[_]](f: [t] => t => F[t]): Map[this.type, F] =
    runtime.Tuples.map(this, f).asInstanceOf[Map[this.type, F]]

So the result is this.type. I believe it should be This instead.
Also the doc comment is ill-formed and incomplete, so that needs to be fixed as well.

@anatoliykmetyuk Is your fix complete? Is there a reason why it wasn't put into a pr?

It seems we've fixed int in 3.5.0.
The compilation passes since 3.5.0-RC1.
What remains is to port the fix to LTS.

Fixed in https://github.com/scala/scala3/pull/19954 - not yet sure if it would be back portable, it seems to depend on the Scala 3.4 match type changes.

The fix cannot be backported to the LTS - it does course regressions, probably due to missing PR backports and what's important it does not fix this issue. I'm closing this issue as there is nothing more we can do in the LTS line and it's already fixed in the Next line


Fix license in docs

Changing license for MIT in README and doc website to be consistent with commit https://github.com/AudienceHero/AudienceHero/commit/84daf6bf226627270c0360e72a2c4fd4fa0f2ca2

thanks!


Changed index file, added favicons and fixed manifest

Types of changes

Bug fix (non-breaking change which fixes an issue)

Description

Changed index file to support multiple favicon files.
Also updated title for index.html title into: "Request Yo Racks" instead of my app.
Updated manifest file to show "Request Yo Racks" instead of Polymer app.
Added favicon support for Apple, Android and Microsoft.
Main favicon updated to Request Yo Racks logo.

Motivation and Context

Fixes multiple minor issues that Request Yo Racks had.
How Has This Been Tested?

Changes don't tamper with any code
Checklist:

Fixes request-yo-racks/web#88
Fixes request-yo-racks/web#89

Review @rgreinho

Making a new pull request now with changes requested


Support for mutiple class names as key (close #2571)

This commit adds support for using multiple class names as key when specifying a :class object, for example <div :class="{ 'a b c': flag }">. Previously, doing so will trigger an uncaught InvalidCharacterError, as spaces are not allowed in DOM tokens. Feature request #2571 should also be satisfied by this commit.

We also need to handle removeClass for the same. I think it's better to handle this inside directives/internal/class.js and add related test cases for the directive.

Oh right. I'll look into that.

Let me close this and use a proper, updated, branch instead.


Create a new tag to enable installing latest version with bugfixes

Hi!
It's been a year since last version bump, do you mind creating a new tag? Or otherwise we have to reference dev-master.
In particular I need a bugfix with FileSystemFactory which fixed a problem with incorrect date recognizing for some cases.
Thank you :)

Or don't :)

Sorry about that slight delay!
I've created version 1.2.1 with the latest changes


Increase the speed of typing

A large part of the delay in typing was spent in the kernel where it was scanning the +wa cache because the giant type nouns were reconstructed each time; the VM underneath couldn't do a simple pointer check. Now we use the caching version of +slot in +slur.
In addition, we also were using the compiler in a silly way in +ap-find in Gall, where we were generating arm names and seeing if they existed. Each time we tried to fire that arm. This was 10% of runtime. We cache this value now.

(When reviewing, could you patch this in locally to see if I'm just hallucinating the speed increase?)

I tested this locally and typing feels incrementally faster. (FWIW, it had already gotten significantly faster with the %ford hint fix.)
Timing the test suite with :time _* +test / didn't show a consistent difference, but that's probably not a great example. I added some timing printfs to :test [%cores /] and saw improvements, but the results were inconsistent from one run to the next. I'm not sure how to get actual comparable numbers for event timings.

I'm going to wait until Monday to commit this, just to make sure everyone who wants to comment sees it first.
You might also want to combine testing this with urbit/urbit#1073, since the allocator also was a big source of latency inside arvo between card dispatch.

That's definitely the fastest combination. But I'm still looking for an appropriate and consistent timing test to compare across these branches.

How granular are the printf timing annotations under -DGHETTO, and could
this be combined with |verb to compare the bootup sequence on a per-card
basis?
On Saturday, 24 November 2018, Joe Bryan<EMAIL_ADDRESS>wrote:

That's definitely the fastest combination. But I'm still looking for an
appropriate and consistent timing test to compare across these branches.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/urbit/arvo/pull/894#issuecomment-441420766, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABxXhiy_t_9rtJUuBTiINqAgX-qR_HGuks5uykQugaJpZM4YxqI7
.

I added #define GHETTO to all.h and booted a fake-zod in three different configurations: 1) release-candidate Arvo and vere, 2) release-candidate vere with this branch, and 3) urbit/urbit#1073 with this branch. Output (and a diff3 of the files is attached.

time1.txt
time2.txt
time3.txt
time-compare.txt

TLDR, number 3 is the fastest, but not for everything. This still isn't an idea test (it'd be better to have a greater variety of events and more granular timing), but it's interesting all the same.

Can you +solid a lac=| pill? This seems to be on UNIX event granularity and
not |verb granularity.
(Also several runs under each might be useful to get an idea of variance on
any given vere, but idk if those are easy to summarize concisely)
On Sunday, 25 November 2018, Joe Bryan<EMAIL_ADDRESS>wrote:

I added #define GHETTO to all.h and booted a fake-zod in three different
configurations: 1) release-candidate Arvo and vere, 2) release-candidate
vere with this branch, and 3) urbit/urbit#1073
https://github.com/urbit/urbit/pull/1073 with this branch. Output (and
a diff3 of the files is attached.

time1.txt https://github.com/urbit/arvo/files/2613702/time1.txt
time2.txt https://github.com/urbit/arvo/files/2613703/time2.txt
time3.txt https://github.com/urbit/arvo/files/2613704/time3.txt
time-compare.txt
https://github.com/urbit/arvo/files/2613701/time-compare.txt

TLDR, number 3 is the fastest, but not for everything. This still isn't an
idea test (it'd be better to have a greater variety of events and more
granular timing), but it's interesting all the same.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/urbit/arvo/pull/894#issuecomment-441489810, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABxXhgPAsDpz_zHBxraZjCqyGAw0PYfnks5uyzsagaJpZM4YxqI7
.

Sure. "before" is release-candidate vere and arvo, "after" is urbit/urbit#1073 and this branch, and "compare" is a diff:

time-verb-before.txt
time-verb-after.txt
time-verb-compare.txt

A --word-diff might be easier to parse here: time-verb-compare-word.txt
This does look like improvements across the board!
Possibly-final fiddling request: it looks like DGHETTO consolidates timings <10ms? Which I can see being useful in debugging(esp if printing takes ~10ms), but makes the relevant prints harder to compare directly, due to minor fluctuations changing which of the lines end up bearing the full timestamps.

I suppose an adjacent possibility is measuring from boot time, or the beginning of the event, or sth: this can be done in post-processing obviously, but might be easier to eyeball changes in. (somebody with a stats major help us budget our compute)

somebody with a stats major help us budget our compute


[generic/redirect?] [reddit] Redirect Loop Detection

Checklist

[X] I'm reporting a feature request
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2022.04.08 (update instructions) or later (specify commit)
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
It seems like this URL is broken on reddit's website https://www.reddit.com/r/MovieStunts/comments/geywlx/besouro_brazilian_martial_arts_film_ocal/
It would be nice if there was some redirect loop detection somehow....
[generic] r2rqsh8zg9x41: Requesting header
[redirect] Following redirect to https://www.reddit.com/r/MovieStunts/comments/geywlx/besouro_brazilian_martial_arts_film_ocal/
[Reddit] geywlx: Downloading JSON metadata
[generic] r2rqsh8zg9x41: Requesting header
[redirect] Following redirect to https://www.reddit.com/r/MovieStunts/comments/geywlx/besouro_brazilian_martial_arts_film_ocal/
[Reddit] geywlx: Downloading JSON metadata
[generic] r2rqsh8zg9x41: Requesting header
[redirect] Following redirect to https://www.reddit.com/r/MovieStunts/comments/geywlx/besouro_brazilian_martial_arts_film_ocal/
[Reddit] geywlx: Downloading JSON metadata
[generic] r2rqsh8zg9x41: Requesting header
[redirect] Following redirect to https://www.reddit.com/r/MovieStunts/comments/geywlx/besouro_brazilian_martial_arts_film_ocal/
[Reddit] geywlx: Downloading JSON metadata
[generic] r2rqsh8zg9x41: Requesting header
... this does not stop (although I only waited 3 hours)

Verbose log
No response

hmmm maybe I will just use timeout in my CLI script

This needs to be fixed

Note that the video is not currently downloadable. The only think I can fix is the infinite loop

throwing an error is very welcome 🐱


Optimization of complex parameters

When optimizing a real loss function for a complex variable I encountered some issues with jaxopt 0.7. It seems this use case is less widely used. Are the methods also designed for this use case?

I had to use the complex conjugate of the gradient. Is this due to the choice for the complex gradient of jax? Should the jaxopt optimizers take this into account?
The 'error' (L2 norm of the gradient), which is used for convergence check is calculated as sum of squares. For complex gradients this should be replaced by the sum over the absolute value, or equivalently, the sum of the squared real and imaginary parts. As a simple fix a patched the l-BGFS and GradientDescent methods. I tested that this change also works with real gradients, and when jitted the extra operation is removed for real gradients.

def tree_l2_norm_patched(tree_x, squared=False):
  """Compute the l2 norm ||tree_x||."""
  squared_tree = jaxopt.tree_util.tree_map(lambda x: jnp.square(x.real) + jnp.square(x.imag), tree_x)
  sqnorm = jaxopt.tree_util.tree_sum(squared_tree)
  if squared:
    return sqnorm
  else:
    return jnp.sqrt(sqnorm)

import jaxopt._src
jaxopt._src.lbfgs.tree_l2_norm = tree_l2_norm_patched
jaxopt._src.proximal_gradient.tree_l2_norm = tree_l2_norm_patched

Gregor

Thanks a lot for the bug report. Currently, JAXopt hasn't been tested with complex variables, as this use case is less common in ML. There are probably a few places that need to be fixed, both in the tree_ utils and in the solvers themselves. Pull-requests would be welcome. I suggest with fix the solvers incrementally in several smaller pull requests.

Thanks, I started updating the l-BFGS solver and zoom linesearch, see pull request #468


Stuck at Copying assets...

Have you ever launched Minecraft 1.8.8? What's the path you're decompiling Minecraft from?

Have you ever launched Minecraft 1.8.8? What's the path you're decompiling Minecraft from?

I launched 1.8.8 a few minutes ago and I'm following the tutorial on the setup I extracted the mcp file into a folder and ran the decompile bat file.

What's the path of the folder?

What's the path of the folder?

C:\Users\19293\Documents\MBC

What's the path of the folder?

nvm fixed took like 30 minutes but it finally started copying


Make sure private_key is String before checking ecdsa_key?

Make sure private_key is String before checking ecdsa_key?
[2016-10-11T11:14:05+00:00] ERROR<EMAIL_ADDRESS>(xxx-jenkins::credentials line 14) had an error: NoMethodError: undefined method `include?' for #<OpenSSL::PKey::RSA:0x00000017bd0328>

@tas50 updated


KurtZimmermann.HDCleaner version 2.043

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hi @Info445,
The program installed in a sandbox, but gave an error when launched:

Hi @Info445,
The program installed in a sandbox, but gave an error when launched:

i must check this.thanks

Hi @Info445,
The program installed in a sandbox, but gave an error when launched:

i must check this.thanks

Works with Windows Sandbox

Hi @Info445,
The program installed in a sandbox, but gave an error when launched:

i must check this.thanks

Works with Windows Sandbox

Is HDCleaner installed? Installed in Temp Folder? Are all files in the same folder?

Hi @Info445,
The program installed in a sandbox, but gave an error when launched:

i must check this.thanks

Works with Windows Sandbox

Is HDCleaner installed? Installed in Temp Folder? Are all files in the same folder?


Modifying RazorPrecompiler to use IMemoryCache to cache results when precompilation is invoked via Design Time Host.

Change compilation to occur in parallel

:watch:

Updated.

Updated

:watch: for a few remaining comments, especially decision on exposing MaxDegreesOfParallelism

:shipit:

Updated,