[firebase_storage] Impossible to upload multiple files simultaneously?

Describe the bug
I was trying to upload 10 image files with under 20KB of file size, and it took around 15~17 seconds every time.
To Reproduce
So I ran a test if it performs upload tasks concurrently as below:

uploadAllImages(List<File> imagesToUpload) {
   final FirebaseStorage _storage = FirebaseStorage(storageBucket: "gs://xxxxxx.appspot.com/");
    for (int index = 0; index < imagesToUpload.length; index++) {
      uploadFile(_storage, imagesToUpload[index], index);
    }
}

uploadFile(FirebaseStorage storage, File file, int index) async {
    DateTime start = DateTime.now();

    int imageNo = index ~/ 2;
    String fileName = index % 2 == 0 ? "$imageNo.jpg" : "${imageNo}_thumbnail.jpg";
    // Temp path for testing.
    String path = "temp/$fileName";

    StorageUploadTask task = storage.ref().child(path).putFile(file);

    print("Task added: $path (size: ${file.lengthSync()} bytes)");

    StorageTaskSnapshot snap = await task.onComplete;

    print("$fileName completed");

    await snap.ref.getDownloadURL();

    print("$fileName getDownloadURL done");

    DateTime end = DateTime.now();
    print("$fileName took ${end.difference(start).inMilliseconds} ms");
}

The result shows it performed sequentially like:
I/flutter (27240): Task added: temp/0.jpg (size: 21312 bytes)
I/flutter (27240): Task added: temp/0_thumbnail.jpg (size: 3687 bytes)
I/flutter (27240): Task added: temp/1.jpg (size: 21312 bytes)
I/flutter (27240): Task added: temp/1_thumbnail.jpg (size: 3687 bytes)
I/flutter (27240): Task added: temp/2.jpg (size: 21312 bytes)
I/flutter (27240): Task added: temp/2_thumbnail.jpg (size: 3687 bytes)
I/flutter (27240): Task added: temp/3.jpg (size: 21312 bytes)
I/flutter (27240): Task added: temp/3_thumbnail.jpg (size: 3687 bytes)
I/flutter (27240): Task added: temp/4.jpg (size: 21321 bytes)
I/flutter (27240): Task added: temp/4_thumbnail.jpg (size: 3694 bytes)
I/flutter (27240): 0.jpg completed
I/flutter (27240): 0_thumbnail.jpg completed
I/flutter (27240): 0.jpg getDownloadURL done
I/flutter (27240): 0.jpg took 3288 ms
I/flutter (27240): 0_thumbnail.jpg getDownloadURL done
I/flutter (27240): 0_thumbnail.jpg took 3669 ms
I/flutter (27240): 1.jpg completed
I/flutter (27240): 1_thumbnail.jpg completed
I/flutter (27240): 1.jpg getDownloadURL done
I/flutter (27240): 1.jpg took 6732 ms
I/flutter (27240): 1_thumbnail.jpg getDownloadURL done
I/flutter (27240): 1_thumbnail.jpg took 7070 ms
I/flutter (27240): 2.jpg completed
I/flutter (27240): 2_thumbnail.jpg completed
I/flutter (27240): 2.jpg getDownloadURL done
I/flutter (27240): 2.jpg took 10014 ms
I/flutter (27240): 2_thumbnail.jpg getDownloadURL done
I/flutter (27240): 2_thumbnail.jpg took 10166 ms
I/flutter (27240): 3.jpg completed
I/flutter (27240): 3_thumbnail.jpg completed
I/flutter (27240): 3.jpg getDownloadURL done
I/flutter (27240): 3.jpg took 13186 ms
I/flutter (27240): 3_thumbnail.jpg getDownloadURL done
I/flutter (27240): 3_thumbnail.jpg took 13459 ms
I/flutter (27240): 4.jpg completed
I/flutter (27240): 4.jpg getDownloadURL done
I/flutter (27240): 4.jpg took 16009 ms
I/flutter (27240): 4_thumbnail.jpg completed
I/flutter (27240): 4_thumbnail.jpg getDownloadURL done
I/flutter (27240): 4_thumbnail.jpg took 16964 ms

So is the StorageUploadTask intended to be performed one-by-one when one task is completed? or is it a bug/coding mistake?

Hi @fysoul17
can you please provide your flutter doctor -v ,
your flutter run --verbose
and your pubspec.yaml
Thank you

No problem @iapicca !
flutter doctor -v
[√] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18362.657], locale ko-KR)
• Flutter version 1.12.13+hotfix.8 at D:\Flutter
• Framework revision 0b8abb4724 (3 weeks ago), 2020-02-11 11:44:36 -0800
• Engine revision e1e6ced81d
• Dart version 2.7.0
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at C:\Users\Terry\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 28.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
• All Android licenses accepted.
[√] Android Studio (version 3.5)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 42.1.1
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
[√] VS Code (version 1.42.1)
• VS Code at C:\Users\Terry\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.8.1
[√] Connected device (1 available)
• AOSP on IA Emulator • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)
• No issues found!
pubspec.yaml
name: firestore_concurrent_upload_test
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
firebase_core: ^0.4.4+2
firebase_storage: ^3.1.3
uuid: ^2.0.4
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
flutter run --verbose
[+1803 ms] I/flutter (12875): Task added: temp/0.jpg (size: 77190 bytes)
[        ] I/flutter (12875): Task added: temp/1.jpg (size: 73446 bytes)
[        ] I/flutter (12875): Task added: temp/2.jpg (size: 47357 bytes)
[        ] I/flutter (12875): Task added: temp/3.jpg (size: 49342 bytes)
[  +24 ms] I/flutter (12875): 0.jpg completed
[ +317 ms] I/flutter (12875): 0.jpg getDownloadURL done
[   +1 ms] I/flutter (12875): 0.jpg took 3367 ms
[  +11 ms] I/flutter (12875): 1.jpg completed
[ +573 ms] I/flutter (12875): 1.jpg getDownloadURL done
[   +1 ms] I/flutter (12875): 1.jpg took 4338 ms
[+1033 ms] I/flutter (12875): 2.jpg completed
[ +311 ms] I/flutter (12875): 2.jpg getDownloadURL done
[   +1 ms] I/flutter (12875): 2.jpg took 6066 ms
[ +731 ms] I/flutter (12875): 3.jpg completed
[ +300 ms] I/flutter (12875): 3.jpg getDownloadURL done
[   +1 ms] I/flutter (12875): 3.jpg took 7103 ms
I just used the example project of official firestorage project by replacing firebase to my own one and below code for upload preparation.
List<File> files = List<File>();

  for (int index = 1; index <= 4; index++) {
       ByteData bytes = await rootBundle.load('assets/image$index.jpg');
       List<int> imageData = bytes.buffer.asUint8List();
       final Directory systemTempDir = Directory.systemTemp;
       final File tempPath = File('${systemTempDir.path}');
       String fileName = "${Uuid().v1()}.jpg";
       final File orgFile = await File("${tempPath.path}/$fileName").create()
          ..writeAsBytesSync(imageData);
        files.add(orgFile);
   }

// This code is at first comment. (just remove codes regarding thumbnail)
uploadAllImages(files);

@fysoul17
I've tested this on the latest roadmap version
I did a similar test myself, and logged everything out below.  As you can see, the log order and timestamps suggest that these uploads are happening simultaneously.
Please keep an eye out for a release, and let us know if you're still experiencing the issue
I/flutter (12904): Index: 0 Start: 2020-09-22 10:16:17.224210
I/flutter (12904): Index: 0 Task: Added
I/flutter (12904): Index: 1 Start: 2020-09-22 10:16:17.226510
I/flutter (12904): Index: 1 Task: Added
I/flutter (12904): Index: 2 Start: 2020-09-22 10:16:17.226954
I/flutter (12904): Index: 2 Task: Added
I/flutter (12904): Index: 3 Start: 2020-09-22 10:16:17.227499
I/flutter (12904): Index: 3 Task: Added
I/flutter (12904): Index: 4 Start: 2020-09-22 10:16:17.230897
I/flutter (12904): Index: 4 Task: Added
I/flutter (12904): Index: 5 Start: 2020-09-22 10:16:17.231517
I/flutter (12904): Index: 5 Task: Added
I/flutter (12904): Index: 6 Start: 2020-09-22 10:16:17.232380
I/flutter (12904): Index: 6 Task: Added
I/flutter (12904): Index: 7 Start: 2020-09-22 10:16:17.233319
I/flutter (12904): Index: 7 Task: Added
I/flutter (12904): Index: 8 Start: 2020-09-22 10:16:17.234375
I/flutter (12904): Index: 8 Task: Added
I/flutter (12904): Index: 9 Start: 2020-09-22 10:16:17.235088
I/flutter (12904): Index: 9 Task: Added
I/flutter (12904): Index: 0 Task: Upload Complete
I/flutter (12904): Index: 2 Task: Upload Complete
I/flutter (12904): Index: 0 Task: Got Download URL
I/flutter (12904): Index: 0 End: 2020-09-22 10:16:18.400255
I/flutter (12904): Index: 0 Task: Completed in 1176 ms
I/flutter (12904): Index: 2 Task: Got Download URL
I/flutter (12904): Index: 2 End: 2020-09-22 10:16:18.412605
I/flutter (12904): Index: 2 Task: Completed in 1185 ms
I/flutter (12904): Index: 1 Task: Upload Complete
I/flutter (12904): Index: 3 Task: Upload Complete
I/flutter (12904): Index: 1 Task: Got Download URL
I/flutter (12904): Index: 1 End: 2020-09-22 10:16:19.337491
I/flutter (12904): Index: 1 Task: Completed in 2110 ms
I/flutter (12904): Index: 3 Task: Got Download URL
I/flutter (12904): Index: 3 End: 2020-09-22 10:16:19.362573
I/flutter (12904): Index: 3 Task: Completed in 2135 ms
I/flutter (12904): Index: 5 Task: Upload Complete
I/flutter (12904): Index: 4 Task: Upload Complete
I/flutter (12904): Index: 5 Task: Got Download URL
I/flutter (12904): Index: 5 End: 2020-09-22 10:16:20.278068
I/flutter (12904): Index: 5 Task: Completed in 3046 ms
I/flutter (12904): Index: 4 Task: Got Download URL
I/flutter (12904): Index: 4 End: 2020-09-22 10:16:20.298661
I/flutter (12904): Index: 4 Task: Completed in 3067 ms
I/flutter (12904): Index: 7 Task: Upload Complete
I/flutter (12904): Index: 8 Task: Upload Complete
I/flutter (12904): Index: 7 Task: Got Download URL
I/flutter (12904): Index: 7 End: 2020-09-22 10:16:21.160583
I/flutter (12904): Index: 7 Task: Completed in 3927 ms
I/flutter (12904): Index: 8 Task: Got Download URL
I/flutter (12904): Index: 8 End: 2020-09-22 10:16:21.241619
I/flutter (12904): Index: 8 Task: Completed in 4007 ms
I/flutter (12904): Index: 9 Task: Upload Complete
I/flutter (12904): Index: 9 Task: Got Download URL
I/flutter (12904): Index: 9 End: 2020-09-22 10:16:22.188572
I/flutter (12904): Index: 9 Task: Completed in 4953 ms
I/flutter (12904): Index: 6 Task: Upload Complete
I/flutter (12904): Index: 6 Task: Got Download URL
I/flutter (12904): Index: 6 End: 2020-09-22 10:16:22.408898
I/flutter (12904): Index: 6 Task: Completed in 5176 ms

@greghesp
Thanks for the information!
Just out of curiosity, are file all the same size?? or is the file on index 6 has largest size?
If all file sizes are the same, it doesn't seems working simultaneously, it is just happening sequentially by random order. (as you can see each file takes about 900ms to be uploaded)
I will test it with the latest version anyway! Thanks again for the comment.

Given the age of this issue and that there's been no further issue reported after this was tested on the new version of Storage I'm going to go ahead and close this issue. Thanks


RFC: Introduction of Empty Ranges

RFC text: https://github.com/ponylang/rfcs/blob/main/text/0076-introduce empty ranges.md

I am going to work on this issue this week. I have included it in LWIP a few times hoping we would get a new contributor to take it, but no takers.


[5.3] Fix aggregate method sum() to always return numeric

Changed here: https://github.com/laravel/framework/pull/14793
Reverted here: https://github.com/laravel/framework/pull/14994
However while reverting the sum() method didn't actually get back to the original form, in the current state it may return null in case there are no records.
This PR insures the return value is always numeric.

@themsaid What if aggregate returns a negative number? Isn't is_null what we need here?

What's wrong about a negative number?

Ah, my bad, sorry.


Change keybindings for paper

About the PR

Honestly I have no idea What is this code.
Paper now requires you to press [ Shift ] + [ Enter ] to make a new line
Paper now finishes writing when you press [ Enter ].
The old option of [ Ctrl ] + [ Enter ] still works if you're used to that . ( i have no idea why )
Why / Balance

[ Ctrl ] + [ Enter ] to finishing writing in unintuitive and is horrible for user experience.
Technical details

Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

Does this break console or anything like that.

Does this break console or anything like that.

Honestly have no idea. When i grep for the hotkey keyword the only places i see it used is in RobustToolbox and in the paper UI

Does this break console or anything like that.

grep -Rin "MultilineTextSubmit"
grep -Rin "TextNewLine
Honestly have no idea. When i grep for the hotkey keyword the only places i see it used is in RobustToolbox and in the paper UI
I'll test

Just check announcements console + the actual console ingame and good enough.

Tested it with News Management console. It works fine.
[ CTRL ] + [ Enter ] Doesn't create a new line unlike how it does with paper

Does this break console or anything like that.

grep -Rin "MultilineTextSubmit"
grep -Rin "TextNewLine
Honestly have no idea. When i grep for the hotkey keyword the only places i see it used is in RobustToolbox and in the paper UI
I'll test

Just check announcements console + the actual console ingame and good enough.

Yeah the announcements console and news management console works fine.


How to set space between two tab..

Hello, i am using ScrollableSegmentedControl but problem is that more space between to tabs also set text with two line...

Duplicate.


Add support for directories when using fileHistoryWalk

I was just looking at the documentation to see how this could be done. Any updates on merging this?


Unexpected '=', expecting enf of file in $HOME/flake/hosts/home.nix

In my $HOME/flake/hosts/home.nix file I'm getting the following error:
error: syntax error, unexpected '=', expecting end of file

       at /nix/store/nlnljhx8qhpqcbzajxx7za5q7dcfbnyv-source/hosts/home.nix:5:8:

            4|
            5|   home = {
             |        ^
            6|     username = "${user}";
(use '--show-trace' to show detailed location information)

I'm guessing the error may be in my $HOME/flake/hosts/default.nix but not sure where to look...

I cannot be 100% sure about this, since their is such little information, but this is most definitely just a syntax error in ~/flake/hosts/home.nix.
The only ways I would be to reproduce this is by:

Closing the attrs set before home = {, which in this case is not really likely since the error is on line 5.
Forgetting to open the attrs set, which is more likely.

Check your code at the start, it should look something like this, the comment is probably where it's going wrong.
{ config, lib, pkgs, user, ... }:
{ # forgetting this one or prematurely closing it can cause the same "unexpected '=', expecting end of file" error
  home = {
    username = "${user}";
  };
}

Thanks for your response.  I enjoyed your NixOS Configuration video, it was very good.
Yes, Somehow I omitted the opening brace after "{ config.... }" but before "home"
Thanks again for your help and your video!


updated database queries and endpoints

Thank you Askin.
We talked about your code in the stand-up meeting.


Update zio-prelude to 1.0.0-RC34

About this PR
📦 Updates dev.zio:zio-prelude from 1.0.0-RC19 to 1.0.0-RC34
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "dev.zio", artifactId = "zio-prelude" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "dev.zio", artifactId = "zio-prelude" }
}]

labels: library-update, early-semver-pre-release, semver-spec-pre-release, commit-count:1

Superseded by #826.


Cache should be localization aware

visitor A (with french default language) visits a collective page with, the page will be stored at cloudflare edge in french
a few seconds after, visitor B (with english default language) visits the collective page in the same region, the page will be displayed in french

Visitors with english as default language should never see a page displayed in french.

Reported on Twitter too: https://twitter.com/dog_awoo/status/1034445551914377217
Short term fix: disable frontend cache or translation.

Looks like we could play with custom caching keys https://support.cloudflare.com/hc/en-us/articles/115004290387-Using-Custom-Cache-Keys
or with cloud flare workers to manage that better https://developers.cloudflare.com/workers/reference/cloudflare-features/#custom-cache-keys

Copy pasting @znarf's comments from Slack:

I don’t think that’s right, users should be able to use the language they want, whatever the browser settings
browser settings can be used to detect a default, think about going in a cybercafé in China, you want to opt out
we can’t generate a custom header like X-Lang for the main server request, this is where cookies are interesting
there is also the possibility of client only localization, but this is a bit broken for React (server html !== client html)

Agreed. So looks like we can't avoid the use of cookies.
But in the meantime, isn't it a good mitigation to use the request header?
It's anyway how it works today.


Chaining- Hashing Algorithm

Description
Code for chaining algorithm
Programming Language

[x] - C++

@ravikr126 @sameeksharl please assign this issue to me

@ravikr126 @sameeksharl please assign this issue to me under LGMSOC

@ravikr126 @sameeksharl please assign this issue to me under LGMSOC


[WIP] Added orthonormalization_forced property to Camera3D

(Draft in-progress)
References godotengine/godot-proposals#2713
This PR aims to allow non-orthonormalized camera transform, that means you can do some crazy things to the camera's transform's basis, like scaling and skewing.
Basically, it adds a new property orthonormalization_forced which defaults to true (current behaviour), which when set to false allows you to modify the transform's basis without orthonormalizing it. It's really usefull for some camera projections, like oblique orthogonal and it can be combined to any other projection mode.
(Need to add some usage examples, but can't right now)

Made a mistake when opening PR https://github.com/godotengine/godot/pull/76489, forgot to rebase form master, this one should be correct now.

Right now it's getting the difference from the camera's transform and it's orthonormalized version to pass to the camera's projection instead of simply leaving the camera's transform non-orthonormalized.
I tried to simply set the camera's transform as non-orthonormalized, but there was some glitches with lightning, so now I'm passing the non-orthonormalized portion of the transform to the projection and orthonormalizing the camera's transform and now it works as expected.
This step is performed in the RenderingServer during the render_camera function, but I think there should be a better way to do this. Any help is appreciated.


Setting backpack into config mode

Hi!
I am trying to install hc-sr04 on my arduino uno. i am getting the following error
Can't configure device. Did you remember to set your backpack into config mode
so How can i set my "backpack into config mode`?
(Don't mind i am new to node development)

I was just noticing this is missing from the docs this morning.
Configuring the backpack firmware requires you to pull pin 2 high. Basically you connect pin 2 to a 5V pin with a jumper, and then flash the board.


feat(speakers): Speakers Page

Sliced the Speakers page based on Figma design
Closes #58

Pas di responsive sepertinya perlu dicek lagi. Kalau size mobile device masih oke, tapi pas size tab/ipad keliatannya kurang pas di frame fotonya.

I feel that the gap between the speaker card is quite tight, what if we increase the gap mas @milhamm?

Will do @dmaharika @jeeehaan

Lgtm!


Feature Request: JWT Authentication

This is great work. Can you implement authorization and authentication best practices with JWT Authentication?

Hey @CodeWorldIndustries!
Sorry for the late response. This is a recurrent question and I guess someone could add authorization/authentication to the WebAPI layer.
I would ask for a PR with Authentication/Authorization and see if there is help out there.
Best,
Ivan

I'm looking into it now.
I use this article as a starting point.
https://jasonwatmore.com/post/2019/10/11/aspnet-core-3-jwt-authentication-tutorial-with-example-api
However, I wonder if I should add the properties "Username", "Password" and "Token" to the "Customer" of the "Domain" project.
For "Username" and "Password", no problem, I think it can fit into the domain. However, the Token seems to me to be a technical detail of implementation.... What would be the approach you would recommend @ivanpaulovich ?

Currently the "Register" use-case is in charge of creating a new customer AND a new account linked to this new customer.
I think it would be appropriate to create a new UseCase named "Authenticate" and adapt the UseCase "Register" to limit it to the registration of an account.

I achieve a result.
However, I still have some work to do before I can propose a pull request.
I still have to work on getting the jwtSecret from the AppSettings.

Hey @phmatray!
I see that you added good stuff to the project, I am gonna review and run it on the next days, I am excited with your changes  :)

JWT authentication added to the latest changes.


PHN Information is getting missed on Personal FOI Request

Describe the bug in current situation
System not showing information entered inside PHN for Personals requests.
Link bug to the User Story
Impact of this bug
DATA LOSS or DISPLAY missing for PHN or DATA NOT POPULATING on Front end - PHN
Chance of Occurring (high/medium/low/very low)
Pre Conditions: which Env, any pre-requisites or assumptions to execute steps?
Steps to Reproduce
Steps to reproduce the behavior:

Go to Request View of a Personal Request.
Enter some value on the PHN field.
Click Save button.
The PHN field would be empty.

Actual/ observed behavior/ results
PHN text field is empty even after saving the value.
Expected behavior
PHN value should be displayed on it's text field.
Screenshots/ Visual Reference/ Source
If applicable, add screenshots to help explain your problem. You an use screengrab.

PHN value stayed displayed in the text field after saving and going back to the file.


feat: Add s3 http driver

🔗 Linked issue
#11
❓ Type of change

[ ] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[x] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
There is already an open PR (#96)  for an implementation based on AWS sdk.
This PR adds an AWS s3 driver based on HTTP for a lightweight bundle size and edge runtime compatibility.
~This is a WIP, I'm not sure if all driver methods can be implemented readme.~
Progress

[x] Implement main methods getItem getItemRaw setItem setItemRaw getKeys getMeta clear removeItem hasItem
[x] Refactor & optimize
[x] Add respective tests
[x] Add respective docs

📝 Checklist

[x] I have linked an issue or discussion.
[x] I have updated the documentation accordingly.

Hi @becem-gharbi,
thanks for your PR! I would like to address a few points to help get the driver ready for merging:

Remove your playground folder from the PR
Add the required tests for your driver

  testDriver({
    driver: driver({
      DRIVER_OPTIONS
    }),
  });

Lazy load the connection fore example with getAwsClient(), you can check some other drivers for similar implementations
Can we reevaluate on aws4fetch? It seems unmaintained and the preferred solution from #11 was direct HTTP, which should be possible with ofetch and uncrypto
Implement at least getItem, setItem and clear in addition to the existing methods for basic string based kv operations
Add respective docs for the driver

Hi @itpropro, thanks for your help.
This solution is a direct HTTP client, aws4fetch is there to sign the request by generating headers for authorization. To be honest I'm not familiar with AWS signature. However the package is stable and works well as expected.

Hi @itpropro, the driver is now ready to review. Regarding test, I'm not sure if using process.env is the way to pass driver options.

Hi, I have recently converted this PR to a draft. The reason is because this driver is intended to be used with any S3 compatible service. The problem is that some differences exist in term of their implementations. These differences reflect in the driver usage. I have mentioned them in docs. I'm not sure about the current approach and I'm looking forward to your feedback.

(@becem-gharbi sorry for delay on my side to give feedback, if you like, we can still keep it open or alternatively i can continue on this. just assuring you it was not intentionally left unattended)

@becem-gharbi Thank you, you've done a good job again.
@pi0 can you prioritize this issue, because this is a need in many areas such as amazon and cloudflare r2. It is an expected feature to use nuxt-og-image together.

Thanks a lot @becem-gharbi for the PR! For now, we have hosted your work here.
Your code passes all the tests with 2 very small issues. See open issues in the repo.
Thank you !

Is it really needed to support S3-like environments?
For example Cloudlare R2 has a working driver already. On the other hand Cloudflare R2 HTTP driver is currently missing and this could solve https://github.com/unjs/unstorage/issues/318


Bump pouch version to 5

Proposing bumping the pouchdb version.  I recently upgraded my node version to 4.2.0 and needed to bump pouchdb to 5.0.0 in order to get this library to work in my browserify build.  I'm not sure how many people have a need for this but I'm proposing anyway.

Thanks!


getEncryptedAppTicket Can't useful when I want to get PUBG's ticket

when I use NetHook,I can't find the Message of getEncryptedAppTicket and when I call the function use node , it is not useful,I want to know whether it is valid now.

This is a better question for the forum.
If you aren't observing PUBG requesting an encrypted appticket, then it probably isn't using them anymore.


Update encoder.rb to limit hex false positives

Looking at Util.prefixed? arg to determine whether to treat something as hex makes it impossible to encode anything that starts with the bytes [48,120], which is not that infrequent.
Also, I don't think we get any benefit from this part of the conditional anyway since if the string isn't both hex chars and 2x the input size things will fail anyway.
Longer term it might be beneficial to force the user to specify the encoding.
Thanks!

Longer term it might be beneficial to force the user to specify the encoding.

Or we will implement actual types in Ruby 🤡

Thanks!! And would types really be so crazy here? The hex v. bytes ambiguity is just so brutal for our use-case!
Should we force everyone to use a special class? Definitely annoying but maybe worth it to have a decent night's sleep?
Here's what the AI spit out. Thoughts?
class ByteString
  attr_reader :bytes

  # Factory methods
  def self.from_hex(hex_string)
    # Remove leading '0x' if present
    hex_string = hex_string[2..] if hex_string.start_with?('0x')

    # Ensure it's a valid hex string and has an even number of characters
    raise ArgumentError, "Invalid hex string" unless hex_string.match?(/\A[\h]*\z/)
    raise ArgumentError, "Hex string length must be even" unless hex_string.length.even?

    new([hex_string].pack('H*'))
  end

  def self.from_bin(binary_string)
    raise ArgumentError, "Binary string expected with ASCII-8BIT encoding" unless binary_string.is_a?(String) && binary_string.encoding == Encoding::ASCII_8BIT
    new(binary_string)
  end

  # Convert back to hex
  def to_hex
    @bytes.unpack1('H*')
  end

  # Convert to binary
  def to_bin
    @bytes
  end

  # Prevent calling to_s to avoid ambiguity
  def to_s
    raise NoMethodError, "Ambiguous conversion: Use `to_bin` for bytes or `to_hex` for hex representation"
  end

  # For debugging or string representation
  def inspect
    "#<ByteString hex=#{to_hex}<EMAIL_ADDRESS>  end

  # Equality comparison
  def ==(other)
    other.is_a?(ByteString) && @bytes == other.bytes
  end

  # More strict equality comparison (used by Hash)
  def eql?(other)
    self == other
  end

  # Hash method to allow use in sets or as hash keys
  def hash
    @bytes.hash
  end

  private_class_method :new

  # Initialize with binary string (bytes)
  def initialize(binary_string)
    raise ArgumentError, "Binary string must have ASCII-8BIT encoding" unless binary_string.encoding == Encoding::ASCII_8BIT
    @bytes = binary_string.dup.freeze
  end
end

Unfortuately, this breaks 6 tests:
Failures:

  1) Eth::Abi.encode .decode can handle hex-strings for bytes types
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0x80ac58cd
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./spec/eth/abi_spec.rb:305:in `block (3 levels) in <top (required)>'

  2) Eth::Client ens can resolve an ens record
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0xfab68bf82e5750a73a16c3c157598b4be30ed6b7e048f8e29e11572119713eaa
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./lib/eth/client.rb:463:in `call_payload'
     # ./lib/eth/client.rb:449:in `call_raw'
     # ./lib/eth/client.rb:263:in `call'
     # ./lib/eth/ens/resolver.rb:60:in `resolver'
     # ./lib/eth/ens/resolver.rb:74:in `resolve'
     # ./lib/eth/client.rb:110:in `resolve_ens'
     # ./spec/eth/client_spec.rb:91:in `block (3 levels) in <top (required)>'

  3) Eth::Ens::Resolver text gets text records for different keys
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0xfab68bf82e5750a73a16c3c157598b4be30ed6b7e048f8e29e11572119713eaa
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./lib/eth/client.rb:463:in `call_payload'
     # ./lib/eth/client.rb:449:in `call_raw'
     # ./lib/eth/client.rb:263:in `call'
     # ./lib/eth/ens/resolver.rb:60:in `resolver'
     # ./lib/eth/ens/resolver.rb:89:in `text'
     # ./spec/eth/ens/resolver_spec.rb:40:in `block (3 levels) in <top (required)>'

  4) Eth::Ens::Resolver resolve gets resolver and owner from chain
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0xfab68bf82e5750a73a16c3c157598b4be30ed6b7e048f8e29e11572119713eaa
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./lib/eth/client.rb:463:in `call_payload'
     # ./lib/eth/client.rb:449:in `call_raw'
     # ./lib/eth/client.rb:263:in `call'
     # ./lib/eth/ens/resolver.rb:51:in `owner'
     # ./spec/eth/ens/resolver_spec.rb:46:in `block (3 levels) in <top (required)>'

  5) Eth::Ens::Resolver resolve resolves ens names for Ethereum
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0xfab68bf82e5750a73a16c3c157598b4be30ed6b7e048f8e29e11572119713eaa
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./lib/eth/client.rb:463:in `call_payload'
     # ./lib/eth/client.rb:449:in `call_raw'
     # ./lib/eth/client.rb:263:in `call'
     # ./lib/eth/ens/resolver.rb:60:in `resolver'
     # ./lib/eth/ens/resolver.rb:74:in `resolve'
     # ./spec/eth/ens/resolver_spec.rb:51:in `block (3 levels) in <top (required)>'

  6) Eth::Ens::Resolver resolve resolves ens names for other coin types
     Failure/Error: raise ValueOutOfBounds, arg unless arg.size <= type.sub_type.to_i

     Eth::Abi::ValueOutOfBounds:
       0xfab68bf82e5750a73a16c3c157598b4be30ed6b7e048f8e29e11572119713eaa
     # ./lib/eth/abi/encoder.rb:179:in `bytes'
     # ./lib/eth/abi/encoder.rb:110:in `primitive_type'
     # ./lib/eth/abi/encoder.rb:80:in `type'
     # ./lib/eth/abi.rb:59:in `block in encode'
     # ./lib/eth/abi.rb:54:in `each'
     # ./lib/eth/abi.rb:54:in `each_with_index'
     # ./lib/eth/abi.rb:54:in `encode'
     # ./lib/eth/client.rb:463:in `call_payload'
     # ./lib/eth/client.rb:449:in `call_raw'
     # ./lib/eth/client.rb:263:in `call'
     # ./lib/eth/ens/resolver.rb:60:in `resolver'
     # ./lib/eth/ens/resolver.rb:74:in `resolve'
     # ./spec/eth/ens/resolver_spec.rb:55:in `block (3 levels) in <top (required)>'

Finished in 12.61 seconds (files took 0.6163 seconds to load)
295 examples, 6 failures, 3 pending

Failed examples:

rspec ./spec/eth/abi_spec.rb:304 # Eth::Abi.encode .decode can handle hex-strings for bytes types
rspec ./spec/eth/client_spec.rb:90 # Eth::Client ens can resolve an ens record
rspec ./spec/eth/ens/resolver_spec.rb:39 # Eth::Ens::Resolver text gets text records for different keys
rspec ./spec/eth/ens/resolver_spec.rb:45 # Eth::Ens::Resolver resolve gets resolver and owner from chain
rspec ./spec/eth/ens/resolver_spec.rb:50 # Eth::Ens::Resolver resolve resolves ens names for Ethereum
rspec ./spec/eth/ens/resolver_spec.rb:54 # Eth::Ens::Resolver resolve resolves ens names for other coin types

Could you give me an example that I can implement as test case? What are you trying to do that fails with the current library?


Added support of Python 3 in make_header.py

Script make_header.py run with error in Python 3.
I modified a code to support Python 2.x and Python 3.x
Fix #19043

I think yes. It says that both versions of Python are supported. Hm, maybe to make two version of this file? For Python 2 and 3 separately?

While it is supported.. http://docs.godotengine.org/en/3.0/development/compiling/compiling_for_windows.html

@mhilbrunner On most systems python is hard-coded to python2. Arch is an exception to this.

Which should still work, as this should still be compatible with Python 2, right?


Rendered table has a missing last row with Chrome webdriver

Prework

[X] Read and agree to the code of conduct and contributing guidelines.
[X] If there is already a relevant issue, whether open or closed, comment on the existing thread instead of posting a new issue.

Description
Hi,
GT has been great so far - thanks! Recently, the tables it outputs have a semi-missing last line:

(I cut the upper half of the image since the data is sensitive)
This is the last row of the table - and you can also see that the table "knows" that it's the last one since the image ends a bit below that. This happens on Windows and Linux (WSL).
Reproducible example
The code I'm running is a simple GT(df)...save(fname) (see below) and as I said it worked until a week ago. Sadly - I have no idea what has changed. git diff doesn't provide any clues, but regardless the code and data are still legit in the sense that they should be rendered correctly.
I was somehow able to make Firefox run on this work laptop (inside Docker) and saw that changing web_driver to firefox solves the issue, but still not having it work on Chrome (the default) on both Windows and Linux feels worthy of a bug report (and annoys me slightly).
    table = (
        GT(df)
        .tab_header(title=title + " (values in um)", subtitle=subtitle)
        .tab_stub(rowname_col="Radius")
        .tab_stubhead(label="Radius range")
        .cols_label(
            errors_x="X Mean Error",
            std_err_x="X St. Dev.",
            errors_y="Y Mean Error",
            std_err_y="Y St. Dev.",
        )
        .tab_spanner(label="X", columns=["errors_x", "std_err_x", "X 99% Rep."])
        .tab_spanner(label="Y", columns=["errors_y", "std_err_y", "Y 99% Rep."])
        # .fmt_number(["std_err", "mean_err"], decimals=2)  # unicode error, unrelated to this issue
    )
    table.save("table.png", web_driver="firefox")  # "chrome" fails

These are things that I checked:

The HTML output (as_raw_html()) outputs the correct table.
Using either a Polars or Pandas DF doesn't change anything.
The window_size parameter doesn't change anything.
I tried changing htmltools versions, as well as selenium and PIL, but that didn't help either.
There are no warnings that pop up in the console during runtime.
Running on week-old data that produced perfect tables now fails.
Changing output types to jpg and pdf doesn't help.

I'm sorry I can't provide a real reproducible example - I really have no idea what was changed. Instead, I'd be happy if you would point me at other angles that I haven't covered in my search.
Thanks again!
Development environment

Operating System: Windows and Linux
great_tables Version: 0.10.0

Shoot, it looks like the issue is that we need to resize the browser to capture the table, but resizing sets the browser outerHeight (the full browser, including topbar etc..). I'm guessing something about the outer size changed. I think we can tweak it so it accounts for the outer part better...

Thanks for the quick work and super-fast release!
Sadly, the issue is now that the table is seen in a "zoomed out" version:

The last row appears properly, but this is obviously the wrong "crop". The firefox web driver still works flawless, and changing window_size this time does decrease the window size, so theoretically I can pick the exact pixel size that will fit a given table.
This is true for Windows and Linux.
Thanks again for the help!

On Windows it's 128.0.6613.120.


Investigate speed issues

If you have it to speak - and not translate (e.g. see screenshot) it takes nearly 20 seconds to speak. I think this needs some hunting down

Is things like potshog slowing it down? We need to put that after the speak if so - or run it async
How slow is the save and play that we are doing?
Any other aresa of slowdown?

One aspect maybe because we are freezing the py script and it takes a while for it to load. This may necessitate us spinning this off as a service. It doesn't solve everything mind you - in our AAC apps we still need to call an executable. That in itself takes a few seconds.

Yeah - I think one main problem is the .spec files have been made with --onefile directive. They instead need to be made with --onedir directive.
https://stackoverflow.com/questions/9469932/app-created-with-pyinstaller-has-a-slow-startup
https://stackoverflow.com/questions/69058232/how-can-i-create-onedir-file-from-spec-file-using-pyinstaller


Code for experiments

Interesting article. Thanks for making the code and paper accessible.
Do you plan to make the code for the experiments available?
For me, I would think of incorporating this in computer vision tasks. This would be once the limitation of fixed point number limitation has been overcome.

With this code, the experiments of the paper should be fully reproducible -- or are you talking about releasing the trained points?

Thanks for the speedy reply. I see the code for the model, but not how to reproduce the examples in the SI (e.g. sections B, D.1, D.2 and D.3).
My ignorance showing here, but as a simple example of reproducibility is the result of C0 = 7.06574 estimated using the weights produced from the model as specified in the code then using latnetbuilder-t lattice-c ordinary-s N-d 32-e full-CBC-f CU:P2-q 2--weights file:/path/to/weights.txt?

Just following up in case this got lost amongst other notifications.


The error message does not make sense when saving '汉字‘ as the metadata key for blob containers/blobs/queues

Storage Explorer Version: 1.33.1 (98)
Build Number: 20240409.2
Branch: hotfix/1.33.1
Platform/OS: Windows 10/Linux Ubuntu 22.04/MacOS Sonoma 14.4(Apple M1 Pro)
Architecture: x64/x64/arm64
How Found: Ad-hoc testing
Regression From: Not a regression
Steps to Reproduce

Expand one storage account -> Blob Containers.
Create a blob container -> Right click the blob container.
Click 'Properties...' -> Click 'Add Metadata' -> Type '汉字' in the metadata key field -> Save it.

There is a failed activity log -> Click 'Details...'.
Check whether the error message makes sense.

Expected Experience
The error message makes sense. Like 'The metadata specified is invalid.'
Actual Experience
The error message doesn't make sense.
Error details:   "message": "Cannot convert argument to a ByteString because the character at index 10 has a value of 27721 which is greater than 255."

Additional Context
Here is the screenshot for files under file shares when saving metadata whose metadata key is '汉字'.
Error details:  "stack": "RestError: The metadata specified is invalid. It has characters that are not permitted.

We should have validation that catches this case (assuming it is actually invalid).

Verified this issue on the main build 20240604.2. Fixed. So, we are going to close it.


Mark active element in navigation

This PR fix the navigation menu so the active page is properly identified in the menu and the parent menu is automatically open when the page is changed:

Closes https://github.com/sensu/sensu-docs-site/issues/70


Refactor for jline3

Adjusts gshell to use jline3 api.  Fairly major refactor as the api is pretty different.
Issues:

[x] requires java8; means gshell will also have that requirement
[x] node-path completer can append extra " "; execute and history up removes " "
[x] command completer
[x] ConsoleReader.printColumns() replacement
[x] Control history file location with LineReader variables?  or adjust api to make it more flexible?
[x] Static accessible Terminal for current-thread access
[ ] IO impl optimizations; and or consider larger changes here?
[x] PromptReader optimizations
[x] Adjustments for Console & CommandExecutor CTRL-C handling while command running
[x] jline3: make path customizable in DefaultHistory, or make getPath() protected
[ ] add gshell commands for widget and keymap
[ ] investigate what jline3 highlighter, parser, expander is for, as well as right-prompt

mm


Update modal-editing-101.md

Fix a typo

I think instead of positions it should be characters.

Thanks @rogererens and @Apostolique ! Glad we're fixing the lines - the characters change sounds good to me too while we're here, so I just merged that in.


What about Homeoffice or just mobile anywhere?

There is not always classified network range or something. I mean is there a kind of exception to say: If it is not one of those networks, then this person is on the road or homeoffice.

Dokumentdetails
⚠ Bearbeiten Sie diesen Abschnitt nicht. Er ist für die Verknüpfung von docs.microsoft.com zum GitHub-Artikel erforderlich.

ID: 2f8119c9-61af-b469-af98-ddd37764c0ca
Version Independent ID: 7d829a74-9df7-5b6f-8e1c-44d3e5d38f75
Content: Hinzufügen und Aktualisieren von Daten für Speicherorte
Content Source: Teams/learn-more-about-site-upload.md
Service: msteams
GitHub Login: @tonysmit
Microsoft Alias: lolaj

Hi @SusanKocerka , thank you for your feedback.
I think you just not add these networks to the file. And then you know if it's not clasified, it's not some of your networks.

@SusanKocerka  Thank you for submitting this feedback.
From our understanding the issue has been resolved. If you feel it hasn't been resolved please re-open this issue.

@officedocsbot close

Well if you ask me:
No it's still a Case! @dariomws306 : I've added the networks to the / a file, but the only thing it's worth for seems to be the "call quality dashboard".
Within S4B everybody had the chance to "Setup" the location / site / whatever… in Teams is no Option available actually. As an Administrator, I thought: ok, give "Locations" a Chance, but NO... Just "call Quality Dashboard" an no chance for users to get the location of their teammates within ONE APP.

@officedocsbot reopen

Hi @SusanKocerka , please help me to understand.
Do you think it's an issue in the documentation or your concern is that there isn't a place with a simple and unique interface to add locations?
Thank you so much!

Hi @dariomws306 ,
Thank you for your reply
I think, that there should be a note in the documentation, that the location data added there, is just for the "Call Quality Dashboard".
Although it would be a good opportunity to integrate these locations (by networks) into Teams apps. Maybe there is a way to add that for contacts (right behind or beneath the name).

Hi @SusanKocerka , thank you again for your feedback.
I think there is a text wich specify that:
"This file is used by Call Analytics and Call Quality Dashboard for generating reports"
To generete a request to add this feature or similar the right place to do it is User Voice:
https://microsoftteams.uservoice.com/forums/555103-public
Thank you.

Don't worry!
It's the same article:
https://docs.microsoft.com/en-us/microsoftteams/learn-more-about-site-upload


pact-provider-verifier throwing error "undefined method `strip' for Pact::Term"

PactNet version: PactNet.Windows.2.0.17
I have an interaction (generated by pact-js version 3.0.1, targeting specification version 2.0.0) which defines a regex matcher for the Authorization header:
      "request": {
        "method": "GET",
        "path": "/programs/33",
        "headers": {
          "Authorization": "A"
        },
        "matchingRules": {
          "$.headers.Authorization": {
            "match": "regex",
            "regex": "A|B"
          }
        }
      },

This is causing the following failure from PactVerifier.Verify():
Failure/Error: replay_interaction interaction

     NoMethodError:
       undefined method `strip' for #<Pact::Term:0x476c490 @generate="A", @matcher=/A|B/>

No further backtrace.
I'm guessing this is a problem in the Ruby verifier itself, not with PactNet, but I've not been able to track down where this strip call is performed in the verifier or supporting gems.
A similar matcher in the response body works as expected:
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json; charset=utf-8"
        },
        "body": {
          "id": 33,
          "name": "F"
        },
        "matchingRules": {
          "$.body.name": {
            "match": "regex",
            "regex": "F|M"
          }
        }
      }

Any ideas on what could be going wrong with header matching? Tips for debugging the Ruby verifier (to get a proper backtrace) would also be appreciated.

The way to recreate the issues without the .net code is to use the ruby-standalone-e2e-example codebase. I've attempted to recreate your issue here, but haven't succeeded. https://github.com/pact-foundation/pact-ruby-e2e-example/commit/8fea24c36ebf0840114f6e94f9520056b2f23507
Can you have a look at it and see if you can tell me what about my code doesn't match your scenario? I know it's Ruby, but hopefully it's readable enough!
Perhaps it's to do with the version of the standalone package that .net is using. @neilcampbell what version are you on?

@bethesque Thanks, I made some good progress on this.
Managed to get a backtrace by changing
            :backtrace => false,

to
            :backtrace => true,

in pact-provider-verifier\lib\pact\provider_verifier\app.rb (too bad this isn't configurable).
NoMethodError:
       undefined method `strip' for #<Pact::Term:0x4840800 @generate="A", @matcher=/A|B/>
     # ./pact-win32/lib/ruby/lib/ruby/2.2.0/net/http/header.rb:17:in `block in initialize_http_header'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-2.0.3/lib/rack/utils.rb:454:in `block in each'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-2.0.3/lib/rack/utils.rb:453:in `each'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-2.0.3/lib/rack/utils.rb:453:in `each'
     # ./pact-win32/lib/ruby/lib/ruby/2.2.0/net/http/header.rb:15:in `initialize_http_header'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-reverse-proxy-0.12.0/lib/rack_reverse_proxy/roundtrip.rb:105:in `initialize_http_header'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-reverse-proxy-0.12.0/lib/rack_reverse_proxy/roundtrip.rb:189:in `setup_request'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-reverse-proxy-0.12.0/lib/rack_reverse_proxy/roundtrip.rb:208:in `proxy'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-reverse-proxy-0.12.0/lib/rack_reverse_proxy/roundtrip.rb:21:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-reverse-proxy-0.12.0/lib/rack_reverse_proxy/middleware.rb:25:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-test-0.6.3/lib/rack/mock_session.rb:30:in `request'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-test-0.6.3/lib/rack/test.rb:244:in `process_request'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rack-test-0.6.3/lib/rack/test.rb:58:in `get'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/test_methods.rb:23:in `replay_interaction'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/rspec.rb:84:in `block (4 levels) in describe_interaction'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/rspec.rb:174:in `run_once'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/rspec.rb:81:in `block (3 levels) in describe_interaction'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:447:in `instance_exec'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:350:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:507:in `block in run_owned_hooks_for'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:506:in `each'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:506:in `run_owned_hooks_for'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:593:in `block in run_example_hooks_for'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:592:in `reverse_each'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:592:in `run_example_hooks_for'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:462:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:494:in `run_before_example'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:253:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:500:in `block in with_around_and_singleton_context_hooks'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:457:in `block in with_around_example_hooks'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:464:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:602:in `run_around_example_hooks_for'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/hooks.rb:464:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:457:in `with_around_example_hooks'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:500:in `with_around_and_singleton_context_hooks'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example.rb:251:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:627:in `block in run_examples'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:623:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:623:in `run_examples'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:589:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `block in run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:590:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:118:in `block (3 levels) in run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:118:in `map'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:118:in `block (2 levels) in run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb:1894:in `with_suite_hooks'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:113:in `block in run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/reporter.rb:79:in `report'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:112:in `run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:87:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:71:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/pact_spec_runner.rb:94:in `run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/provider/pact_spec_runner.rb:35:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/cli/run_pact_verification.rb:60:in `run_with_pact_uri'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/cli/run_pact_verification.rb:48:in `run_specs'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/cli/run_pact_verification.rb:22:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-1.16.0/lib/pact/cli/run_pact_verification.rb:14:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/app.rb:105:in `verify_pact'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/app.rb:28:in `block in call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/app.rb:27:in `collect'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/app.rb:27:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/app.rb:21:in `call'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/cli/verify.rb:24:in `verify'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/thor-0.20.0/lib/thor/base.rb:466:in `start'
     # ./pact-win32/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.6.0/lib/pact/provider_verifier/cli/custom_thor.rb:17:in `start'
     # ./pact-win32/lib/app/pact-provider-verifier.rb:2:in `<main>'

Got the log from pact/lib/pact/provider/test_methods.rb replay_interaction:
Sending GET request to path: "/programs/33" with headers: {"HTTP_AUTHORIZATION"=>#<Pact::Term:0x3d78e00 @generate="A", @matcher=/A|B/>}

Uh-oh, looks like header terms are not expanded ("reified") to a string the same way the query and body are.
If I change the headers implementation in pact\lib\pact\provider\request.rb like this (inspired by reified_body):
        def headers
          request_headers = {}
          return request_headers if expected_request.headers.is_a?(Pact::NullExpectation)
          expected_request.headers.each do |key, value|
            request_headers[rack_request_header_for(key)] = reified_value(value)
          end
          request_headers
        end

        def reified_value value
          case value
          when String then value
          when NullExpectation then ''
          else
            rb = Pact::Reification.from_term(value)
            if rb.is_a?(String)
              rb
            else
              JSON.dump(rb)
            end
          end
        end

... the verification succeeds.
Makes sense? (body / reified_body could be refactored to call reified_value(expected_request.body). Not sure where query reification is done, but I tested that it works.)

@bethesque @neilcampbell PactNet is on standalone version 1.4.4; I've tested with the latest (1.9.0) and the issue persists.

Sorry, this got automatically closed by my commit message. Please reopen it until we've gotten the fix into the .net package.

@neilcampbell can you update the standalone version to 1.9.1 please. There are some changes to the CLI, but they're backwards compatible, so you can just upgrade for now, and then make the changes later.

@bethesque Yep sure can.

I have updated to 1.9.1 and pushed the package to the Nuget feed, however Nuget is currently experiencing a service degradation, so it cannot be downloaded just yet. Hopefully will be fixed soon. https://status.nuget.org/

Everything appears to be good now.

Verified fixed in latest Nuget. Great work, @bethesque and @neilcampbell !
The verifier is giving the warning
WARN: The --pact-urls option is deprecated. Please pass in a space separated list of URLs as the first arguments to the pact-provider-verifier command.

As mentioned in https://github.com/SEEK-Jobs/pact-net/issues/116, there's a change required to PactVerifierHostConfig Arguments to get rid of that.


Add TypeNode#locations or implement TypeNode#filename

Would be nice to have a TypeNode#locations : Array(Location), where Location could be the getters for line, column and filename.
The locations could be sorted by the order of declaration in the code, first declaration goes first.
Another suggestion was to just return an Array of NamedTupleLiteral with the keys :filename, :lineand:column`.
Note that ASTNode already have a filename attribute, but it returns nothing. So yet another option for this would be just to let the filename return the filename where the first declaration of the type was found, it's not a complete solution but solves my use case :grin: .
Use case
The use case for this is described at https://forum.crystal-lang.org/t/how-to-find-the-file-path-where-a-class-was-first-declared-through-an-included-module/4627

With #11762 one can write {{ T.definitions.map(&.filename) }} to obtain where a type is defined. Note that in rare cases this could still be empty (e.g. NoReturn has no definitions in source code, and built-in types also have none by default under an empty prelude).


LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20211013033751162 to main

LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20211013033751162 to main with localized lcls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 41.711%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
26792

Relevant Lines:
58320

💛  - Coveralls


Presentation of credential error

After issuing an obc, the infos aren't shown in the web wallet, although I can copy the credentials as shown in the screenshot

Closing this issue as the code in this repository is deprecated (as its name implies). For a more up-to-date web wallet UI, refer to our more recent community edition identity stack that is actively maintained and updated in the waltid-identity repository.


Range error in TClipperOffset.BuildNormals (Delphi)

During using shrinking of paths I got range error in procedure BuildNormals.
If pathlength is zero (len=0) fNorms[len-1] accesses element -1

procedure TClipperOffset.BuildNormals;
var
i, len: integer;
begin
len := Length(fInPath);
SetLength(fNorms, len);
for i := 0 to len-2 do
fNorms[i] := GetUnitNormal(fInPath[i], fInPath[i+1]);
fNorms[len -1] := GetUnitNormal(fInPath[len -1], fInPath[0]);
end;

My suggest for fix (works fine in my project):
if len>0 then fNorms[len -1] := GetUnitNormal(fInPath[len -1], fInPath[0]);
Best regards
Andreas

I am seeing the same exception when offsetting in C#.
Here is some minimal code that reproduces the issue.
using Clipper2Lib;

var path = new Path64 { new Point64(100,  100) };
var paths = new Paths64() { path };

var clipperOffset = new ClipperOffset();
clipperOffset.AddPaths(paths, JoinType.Miter, EndType.Polygon);

var solution = new Paths64();
clipperOffset.Execute(10, solution);

regards,
Richard


KVM support

We should detect KVM virtual video adapter there: https://github.com/inga-lovinde/RadeonResetBugFix/blob/master/RadeonResetBugFixService/Devices/KnownDevices.cs
However, I don't know what is it Manufacturer/Service/ClassName combination. KVM users can open a pull request, or comment with these so I will know what to add:

The Red Hat QXL VGA adapter (commonly seen in -vga qxl with QEMU) has these values:
Manufacturer: Red Hat, Inc.
Service: QxlDod
Class:  Display

can at least confirm this does not break anything and seems to work as expected with the following setup:

kvm/qemu/libvirt
windows 10 guest
radeon hd 7970 passed through
qxl as virtualized gpu
looking-glass service set up to automatically restart on fail, as it will fail on startup with this fix

I am not sure if this my card actually does suffer from a reset bug, but i thought i'd try this because once in a while my vm will start but have no display output and won't react to acpi shutdown commands.


runTransaction runs callback on very limited gRPC thread

Steps to reproduce

Use provided example
Transactions-part of example is expected to complete in less than 7s, but in practice completes in ~40s.

Code example
    Firestore firestore = FirestoreOptions.getDefaultInstance().getService();

    final List<DocumentReference> documents = new ArrayList<>();
    final List<ApiFuture<WriteResult>> writeResults = new ArrayList<>();
    for (int i=0; i < 64; i++) {
      final DocumentReference docRef = firestore.collection("counters").document(""+i);
      writeResults.add(docRef.set(Map.of("value", 0)));
      documents.add(docRef);
    }
    for (var writeResult : writeResults) {
      writeResult.get();
    }

    System.err.println("Starting update-transactions");
    var transactionsStart = Instant.now();

//  Using these specific options, it seems to work
//     var runner = Executors.newCachedThreadPool();
//     var options = TransactionOptions.createReadWriteOptionsBuilder().setExecutor(runner).build();

    final List<ApiFuture<Void>> transactions = new ArrayList<>();
    for (var docRef : documents) {
      transactions.add(firestore.runTransaction(transaction -> {
          // Just simulate something blocking
          Thread.sleep(5000);
          transaction.update(docRef, "value", 1);
          return null;
        }));
    }

    for (var transactionFuture : transactions) {
      transactionFuture.get();
    }

    var elapsed = Duration.between(transactionsStart, Instant.now());
    System.err.println("Done updating in "+elapsed);

External references such as API reference guides
https://cloud.google.com/firestore/docs/samples/firestore-transaction-document-update#firestore_transaction_document_update-java
Any additional information below
Breaking inside the transaction-handler, it seems to be called on the a "grpc-transport-X" thread. I would assume the intention, judging by TransactionRunner is to use the default executor from the service-instance. This seems to be a java.util.concurrent.ScheduledThreadPoolExecutor, configured with a maximumPoolSize of<PHONE_NUMBER>, but in practice somehow limited to 8, probably being the cause of the problem.

Dug a bit deeper. Turns out that since ScheduledThreadPoolExecutor is using an unbounded queue implementation, its "corePoolSize" is also its practical maximumPoolSize. So the pool running here really is bound to a maximum of 8 threads.
Looking at where this is used, in GrpcFirestoreRpc, it's both passed on as the actual Grpc-transport Executor, but also reused to drive all snapshotListeners and all transaction-callbacks (that don't explicitly use their own pool). This means that any callback-function to snapshot-listeners or transactions, are in practice also bound to a maximum of 8-concurrent. (Unless the GrpcTransportOptions are overriden during setup).
Unless this is by design, perhaps GrpcFirestoreOptions should have some "callbackExecutor", that does not need to be Scheduled, and perhaps default to Executors.newCachedThreadPool?


Add unit tests with HMMs; weaken checks so enumeration works

Addresses #915
This is a first step towards allowing Pyro to take advantage of Markov structure in enumeration. This PR adds the HMM example from #915 to tests/infer/test_enum.py and weakens check_mode_guide_match() to allow a weak form of site-shape-mismatch: sites may only match up to broadcasting, for dims governed by parallel enumeration (other dims must match exactly). The test passes but takes exponential time & space in the number of time steps. Eventually we'd like to take only linear time & space.
This relaxation in this PR is a step towards us being able to implement a junction tree algorithm that can efficiently compute ELBO on a factor graph of discrete variables, and to do this cheaply by avoiding broadcasting where unnecessary. Much more work remains.

After discussion with @martinjankowiak we've decided to add more tests to this PR.

Ok I've added one more HMM test, this time with markov structure in the guide. After a conversation with @eb8680 I am again convinced that TraceEnum_ELBO is correct. I think this is ready to merge as soon as tests pass.


Pa 156 python documentation

Developer documentation for the python script. This should have no change in functionality, only comments have been added to the code.

Moved to https://github.com/pactfi/pact-py-sdk/pull/7


[qa] Added RestructuredText checks #144

Added ReStructuredText checks to openwisp-qa-check
Will check recursively for errors in reStructuredText
Closes #144

Coverage remained the same at 99.735% when pulling 98a0f1f22c532560236c331f2295fbaf1278cb40 on KapilBansal320:patch-144 into b37b5eb1f5c7da72e27d8f6fca76456307751270 on openwisp:master.

@nemesisdesign @KapilBansal320  I don't think we need to add another third party library to add checks for ReST. There is a rst2html.py script bundled with docutils package.
I tried the following command on https://github.com/openwisp/openwisp-notifications/commit/3920a51c573aed1e35478e201585b520298df131 commit
rst2html.py README.rst > /dev/null

And got this output
README.rst:69: (ERROR/3) Error in "code-block" directive:
maximum 1 argument(s) allowed, 4 supplied.

.. code-block:: shell
    pip install openwisp-notifications

README.rst:429: (WARNING/2) Cannot analyze code. No Pygments lexer found for "jinja2".
README.rst:645: (WARNING/2) Cannot analyze code. No Pygments lexer found for "jinja2".

On current master of openwisp-notifications, nothing was printed to stderr conveying that there are no errors.
@KapilBansal320 you many write a script around the bundled script which looks for ReST files recursively and perform this check. I saw there is an option for returning non-zero exit codes when errors are encountered. There might be already something in the docutils package which does the same. I will suggest you to explore availaible scripts in docutils and check out docutils documentation. I found out this manpage on "rst2html" you can start from there.
I think restview library is aimed to render ReST instead of enforcing checks.

Thanks @pandafy for your helpful suggestion. I will try to use it for RestCheck now

@KapilBansal320 @pandafy as long as the problem is solved, I am fine with any solution, really, it doesn't make a difference to me.
What is the problem? Sometimes some errors prevent me (or others) from releasing to pypi, because pypi has a ReStructuredText in place which prevents the upload of the release if the description sent cause rendering errors.
We have a practical example we can use. Until this commit in openwisp-notification https://github.com/openwisp/openwisp-notifications/commit/3920a51c573aed1e35478e201585b520298df131, the syntax had a few issues, so, the way to test this solution is to test it against that commit and ensure the check fails.
Then move to this other commit and ensure the check passes: https://github.com/openwisp/openwisp-notifications/commit/071f1912ccdf50f3881052b083461bd5564c3e8d
The simplest solution we can use to solve this problem is fine to me.

Travis tests have failed
Hey @KapilBansal320,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
5th Build
View build log

     ./run-qa-checks

SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
All done! ✨ 🍰 ✨
47 files would be left unchanged.
SUCCESS: Black check successful!
SUCCESS: Flake8 check successful!
<string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

There are some Errors in your RST file syntaxwhich can create problems in future:

- <string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

ERROR: ReStructuredText check failed!
SUCCESS: Commit message check successful!
No changes detected
SUCCESS: Migrations check successful!

6th Build
View build log

     ./run-qa-checks

fatal: bad object 071585b05a349d294ca97c44e239b978aa9fb09b
SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
All done! ✨ 🍰 ✨
47 files would be left unchanged.
SUCCESS: Black check successful!
SUCCESS: Flake8 check successful!
<string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

There are some Errors in your RST file syntaxwhich can create problems in future:

- <string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

ERROR: ReStructuredText check failed!

No changes detected
SUCCESS: Migrations check successful!

TravisBuddy Request Identifier: eb77a0d0-f143-11ea-955b-8bce1a09c500

Travis tests have failed
Hey @KapilBansal320,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
6th Build
View build log

     ./run-qa-checks

SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
All done! ✨ 🍰 ✨
47 files would be left unchanged.
SUCCESS: Black check successful!
SUCCESS: Flake8 check successful!
<string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

There are some Errors in your RST file syntaxwhich can create problems in future:

- <string>:28: (ERROR/3) Error in "image" directive:
no content permitted.

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://pypi.org/project/black/

   :alt: code style: black

ERROR: ReStructuredText check failed!
SUCCESS: Commit message check successful!
No changes detected
SUCCESS: Migrations check successful!

TravisBuddy Request Identifier: 1a2b31d0-f144-11ea-955b-8bce1a09c500

@nemesisdesign changes done as requested but I wonder why build failed for ReStructuredText check as it is not implemented till now.

Great progress, see my comments below.
Question: have you tested this solution on openwisp-notifications as suggested?

Yes, I tested it on both commits as mentioned above.

Here are the results of checking the function of the given commits.

@nemesisdesign I have added all the required test cases.

Travis tests have failed
Hey @KapilBansal320,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
5th Build
View build log

     ./run-qa-checks

SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
--- tests/test_project/tests/test_qa.py	2020-09-08 17:59:13.444723 +0000
+++ tests/test_project/tests/test_qa.py	2020-09-08 17:59:42.425535 +0000
@@ -279,13 +279,9 @@
         finally:
             sys.stdout = sys.__stdout__  # reset redirect

     def test_qa_call_check_rst_file_syntax(self):
         with open(self._test_rst_file, 'a+') as f:
-            f.write(
-                'Test File \n'
-                '======= \n'
-                '.. code:: python'
-                )
+            f.write('Test File \n' '======= \n' '.. code:: python')
         with self.assertRaises(SystemExit):
             check_rst_files()

would reformat tests/test_project/tests/test_qa.py
Oh no! 💥 💔 💥
1 file would be reformatted, 46 files would be left unchanged.
ERROR: Black check failed! Hint: did you forget running openwisp-qa-format?
SUCCESS: Flake8 check successful!
SUCCESS: ReStructuredText check successful!
SUCCESS: Commit message check successful!
No changes detected
SUCCESS: Migrations check successful!

6th Build
View build log

     ./run-qa-checks

fatal: bad object 7182a6d4f1200e15315571a5bc167e405d89931c
SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
--- tests/test_project/tests/test_qa.py	2020-09-08 18:00:26.635678 +0000
+++ tests/test_project/tests/test_qa.py	2020-09-08 18:00:53.533687 +0000
@@ -279,13 +279,9 @@
         finally:
             sys.stdout = sys.__stdout__  # reset redirect

     def test_qa_call_check_rst_file_syntax(self):
         with open(self._test_rst_file, 'a+') as f:
-            f.write(
-                'Test File \n'
-                '======= \n'
-                '.. code:: python'
-                )
+            f.write('Test File \n' '======= \n' '.. code:: python')
         with self.assertRaises(SystemExit):
             check_rst_files()

would reformat tests/test_project/tests/test_qa.py
Oh no! 💥 💔 💥
1 file would be reformatted, 46 files would be left unchanged.
ERROR: Black check failed! Hint: did you forget running openwisp-qa-format?
SUCCESS: Flake8 check successful!
SUCCESS: ReStructuredText check successful!

No changes detected
SUCCESS: Migrations check successful!

TravisBuddy Request Identifier: 4491d7d0-f1fd-11ea-ba41-b1d3a642fad8

Travis tests have failed
Hey @KapilBansal320,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
6th Build
View build log

     ./run-qa-checks

SUCCESS: Blank endline check successful!
SUCCESS: Migration name check on "./tests/test_project/migrations" with migrations-to-ignore: 0 successful!
Skipped 1 files
SUCCESS: Isort check successful!
--- tests/test_project/tests/test_qa.py	2020-09-08 18:05:21.109045 +0000
+++ tests/test_project/tests/test_qa.py	2020-09-08 18:05:47.878426 +0000
@@ -279,13 +279,9 @@
         finally:
             sys.stdout = sys.__stdout__  # reset redirect

     def test_qa_call_check_rst_file_syntax(self):
         with open(self._test_rst_file, 'a+') as f:
-            f.write(
-                'Test File \n'
-                '======= \n'
-                '.. code:: python'
-                )
+            f.write('Test File \n' '======= \n' '.. code:: python')
         with self.assertRaises(SystemExit):
             check_rst_files()

would reformat tests/test_project/tests/test_qa.py
Oh no! 💥 💔 💥
1 file would be reformatted, 46 files would be left unchanged.
ERROR: Black check failed! Hint: did you forget running openwisp-qa-format?
SUCCESS: Flake8 check successful!
SUCCESS: ReStructuredText check successful!
SUCCESS: Commit message check successful!
No changes detected
SUCCESS: Migrations check successful!

TravisBuddy Request Identifier: f38326e0-f1fd-11ea-ba41-b1d3a642fad8


Ability to show dog ownership in the nametag

Like " [] []".
Might be better to allow custom dog names on servers, by config. Like "{dogName} &f[&4{dogLevel}&f] &f[&4{dogOwner}&f]".
Suggestion by crazy233 on Spigot.

Being able to customize the dog name/dog level tag language/colors would be great!


update factory-boy

@cpennington Can you please look into this? Thanks!

@wedaly

@wedaly @macdiesel @symbolist @muzaffaryousaf Please have a look. Thanks

:+1:

:+1:


Any new offset?

Anyone know how to find the new offset?

Seconded, if any kind soul would do this, would be greatly appreciated.

<3 Thank you friend


rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'

Rasa version:1.10.12
Rasa SDK version (if used & relevant):1.10.3
Rasa X version (if used & relevant):0.32.2
Python version:3.6.9
Operating system (windows, osx, ...): ubuntu 20.04
Issue:
rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
Error (including full traceback):

Command or request that led to error:

Content of configuration file (config.yml) (if relevant):

Content of domain file (domain.yml) (if relevant):

Thanks for raising this issue, @erohmensing will get back to you about it soon✨
Please also check out the docs and the forum in case your issue was raised there too 🤗

Hi @colinsongf, could you please provide a full traceback and information about what you were trying to accomplish when you hit this error?

2020-11-16 10:04:19 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:04:24 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:04:31 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:04:36 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:04:41 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:04:44 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:04:50 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:04:59 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:05:06 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:05:07 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:05:10 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:05:21 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'
2020-11-16 10:05:30 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:05:45 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:05:53 WARNING  rasax.community.telemetry  - An error occured when trying to send the telemetry event: HTTPSConnectionPool(host='api.segment.io', port=443): Read timed out. (read timeout=2)
2020-11-16 10:06:03 ERROR    rasax.community.services.event_consumers.event_consumer  - 'str' object has no attribute 'update'

Hi @colinsongf ,
Somehow a 'str' is passed instead of a 'dict'.
Can you turn on DEBUG mode, and re-post the log?
That might show where it is coming from.

Hi @colinsongf ,
Somehow a 'str' is passed instead of a 'dict'.
Can you turn on DEBUG mode, and re-post the log?
That might show where it is coming from.


Problems encountered in code retraining

Can I ask you a question? When I added colored salt noise and Gaussian noise to the model for noise reduction training, the PSNR of the validation set in the pre-trained model was not high, and the test set could not perform obvious image noise reduction (the input image during the test was originally noisy, so the code was also modified to perform unsupervised image noise reduction)

Is this due to the model itself or is it due to overfitting during model training?

The model was trained to denoise (clipped) Gaussian noise. In your experiment, your noise distribution is different from this one, so a drop in performance can be expected. You can try passing different noise variance values (the second input of the model) and see if that helps with the noise reduction aspect. Another thing to try is to finetune the model with this new noise distribution. Hope this helps.

OK, thank you. I have added colored salt noise and Gaussian noise information to the model and training before, but the effect is still not ideal. I would like to ask if you need to adjust some hyperparameters or the reward mechanism of training?

Also, I would like to ask you: How many iterations of previous training can significantly reduce the noise? Do you have to iterate to 80 times? Have you recorded it before? Thank you so much!

I see. I don't have experience with training models for salt and Gaussian noise. The change in hyperparameters which might help is to add more filters at each layer. Apart from that, depending on your input resolution, additional scales in the UNet architecture might help as well.
As for the length of the training, I've noticed that what is really important is leaving the large LR value run for a good while (0.001 for the first 50 epochs). An idea to speed up trainings could be to do fine-tuning starting from epoch 45, for example.

OK, thanks for your suggestion, I will try it soon.

I'm sorry to bother you again. What's the reason for the high loss during training? The PSNR value is high, but the PSNR of the validation set is low.

As for the value of the loss, the high value depends on how the loss is defined--the type of averaging might give different results from what you're expecting. I'd say that what's important to check is if the loss decreases monotonically or not.
As for the PSNR, you can modify the validation testset in the dataset code files. As validation might take a long time, I didn't care much about it and remember I only added one sequence in the valset. Maybe try adding a better valset and see if it gives more reasonable val PSNRs

OK, thank you for your answer. The value of loss is convergent and then tends to be unchanged.


fix error when an IOSystem is combined with a TransferFunction system

Fixes a bug in which system and system name were not being handled correctly when a TransferFunction system is combined with other linear systems using interconnect.

Coverage remained the same at 94.799% when pulling 3729027aa0dd1c2170f78367b560cdc0deb0926d on sawyerbfuller:interconnect-tf into 5180c7bd41da289ba8f63c20de5776287002704e on python-control:main.


Large image pull fails

I am running cri-dockerd on the socket below. I am trying to pull a large image onto the machine with crictl and it always times out after 2 mins . Is there a tunable that i can change in cri-dockerd to fix the current issue ?
I am running cri-dockerd-v0.2.0 with the following options.
cri-dockerd-v0.2.0 --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --container-runtime-endpoint=unix:///var/run/dockershim.sock --network-plugin=cni --image-pull-progress-deadline=5m0s
[root@qct32 ~]# time /usr/bin/crictl -i unix:///var/run/dockershim.sock -r unix:///var/run/dockershim.sock pull docker.io/slightlytyler/large-image-test
FATA[0119] pulling image: rpc error: code = Unknown desc = context deadline exceeded
real    1m59.087s
user    0m0.034s
sys     0m0.031s

any update on this ?


feat: Add lazy to root Zod class

Overview
Very tiny PR to add the ZodLazy type as a convenience method in the root ZodType class.
Also noticed the brand convenience method wasn't bound in the constructor, so I went ahead and fixed this too.

Appreciate this PR, though ultimately .lazy() isn't really needed as a method. The only reason it exists is so Zod can represent recursive schemas, since those require a type cast during declaration: https://github.com/colinhacks/zod#recursive-types. If a schema has already been declared, there's no reason I can think of to wrap it in ZodLazy. Gonna close this unless someone comes in with a use case.


How to map the cursor position of a player to the currect world location?

Well the question most likely stands for itself. I want to map the current cursor of a player to see if the player currently hovers over a rune, hero, creep,... (basically any kind of object on the map)
I do only have the cursor-position so far (I'm fairly new to the parser and java overall).
Is there an already built-in function/example/working code i could use or do I have to code it myself?
If the latter is the case, how exactly can I find out the camera position of a player (since its needed to calculate the coursor position)?

I don't know. There is a camera position in the player entity, but you would have to project the cursor position into the world somehow. No idea how.


STORM-2608 Remove any pending offsets that are no longer valid

@HeartSaVioR this PR includes fixes for https://issues.apache.org/jira/browse/STORM-2608

+1

@kevinconaway
Missed commenting: Could you craft a PR against master too? Thanks in advance!


Adding batch_gemm operator

This PR adds support for batch_gemm operator. batch_gemm implements the BLAS interface:
C = alpha*A*B + beta*C
Note that in the equation, C is both input and output. However, this is not possible in tensroflow python interface. One variable needs to be strictly input or output. The actual python batch_gemm interface is equivalent to Output = alpha*A*B + beta*C, in which beta*C is viewed as a constant input. In the backward pass, only alpha*A*B contributes to the gradient.
dA = (dA of gradient of alpha*A*B)/alpha
dB = (dB of gradient of alpha*A*B)/alpha
dC does not exist because C is a constant

Test performed:
//tensorflow:tf_python_api_gen_v1
//tensorflow/tools/pip_package:build_pip_package
//tensorflow/python/kernel_tests:batch_gemm_op_test

@jerryyin as expected the test //tensorflow/python/kernel_tests:batch_gemm_op_test fails on CUDA path. to merge the PR, and for future upstreaming purpose, how shall we remedy this?

@jerryyin as expected the test //tensorflow/python/kernel_tests:batch_gemm_op_test fails on CUDA path. to merge the PR, and for future upstreaming purpose, how shall we remedy this?

I need to fix it. My development is done on rocm only, the failure does not sounds surprising to me. Upstream-wise, I don't know if there is a chance for this PR, because C = alpha*A*B + beta*C calculation is already achievable with simpler operators. Besides, this seems to not be a user-friendly API, because it requires user to be able to know what dimension exactly is for C before the calculation. It can be hard for dynamic dimensions.

@whchung Both are good points, my thoughts are:

We probably need make Cuda runnable for now for the sake of Diego's perf comparisons. We don't necessarily have enable it for Cuda as the final result.
For the forward pass, I can compare more alpha and beta values. Backward pass is a little more special though. Effectively speaking, backward pass's gradient calculation should only be carried out on C = alpha*A*B (there is should not be delta to C, which is both input and output). In this sense, I can compare more alpha values but keep beta to be 0.

@jerryyin
Can you provide an example of how this op will be used?
When I look at the interface for matmul I only see inputs for "a" and "b"...wondering why the need to explicity specify the "c" input and how it will be used?
The TF matmul op (https://www.tensorflow.org/api_docs/python/tf/linalg/matmul) already provides "batch matrix multiplication" functionality. Can we re-use that op, instead of introducing a new one? If we can reuse that here, all we would need to change here is the ROCm implementation for that op?

@deven-amd you are not in the discussion loop so you might find this PR a bit surprising.
The crux of this PR is to allow non-trivial alpha/beta be passed down to rocBLAS so we can reduce small Eigen kernels invoked in certain models we are optimizing.
It appears perhaps due to limitations in cuBLAS, alpha is always 1.0, and beta is 0.0 right now in those TF matmul API. But rocBLAS can do better than that, hence we introduce a new API here. Upstreaming is not a priority at this moment. We just want to validate the functionality and its potential performance improvements.

@deven-amd Sure, the user API is:
c_out = math_ops.batch_gemm(
    x, y, c_in, transpose_a=transpose_a, transpose_b=transpose_b, alpha=alpha, beta=beta)

x, y: Tensor variables
c_in: constant Tensor that have exact same dimension as c_out
transpose_a, transpose_b: bool
alpha, beta: constant floats
It calculates Output = alpha*A*B + beta*C


Support Python Conda environment.yaml

Python support works okay out of the box, but isn't picking up conda's environment.yaml.

https://github.com/bcgov/nr-renovate/issues/38

This is being worked on by the Renovate team.  Not much we can do other than wait.
https://github.com/renovatebot/renovate/issues/2213


Could not working in past 3 days for all wordpress site

I think it has an issue with the newest Wordpress version or anything else. In the recent 3 days, the plugin doesn't work properly. Please fix the issue as soon a possible. we will contribute money to that.
This plugin is working perfectly, so please refer to this plugin and fix the bug in your plugin sir. because we love aicp Indian products so much.
Thank you

Hi,
Do you see any error in the chrome developer console or something like that? Just saying it's not working doesn't help. Please also share how to reproduce the issue.

Yesterday I have 70k page views, instead of 70,000 page views my blocked IP is the only 10ip. I have dual checked my ad placement and disabled cache plugin. in my all 6 site sites also facing this issue and my friend website also facing this same issue.
I have noticed since last weekday by day the blocked IPs are reducing lower than usual days. Last week I have more than 80ips and 2nd day it has gone to 50 and  30. now my number of blocked IP is only 4 in a day. most of the app-enabled sites also facing this issue only in recent days.
sir, please check the issue, when the aicp working fine and my car is below 5%. now the aicp isn't working now my AdSense ctr is above 10%.
please check my issue
jobs.recipescorner.in and jobzseeking.com

it has been getting this error in developer console ??

Yesterday I have 70k page views, instead of 70,000 page views my blocked IP is the only 10ip. I have dual checked my ad placement and disabled cache plugin. in my all 6 site sites also facing this issue and my friend website also facing this same issue.
I have noticed since last weekday by day the blocked IPs are reducing lower than usual days. Last week I have more than 80ips and 2nd day it has gone to 50 and 30. now my number of blocked IP is only 4 in a day. most of the aicp-enabled sites also facing this issue only in recent days.
sir, please check the issue, when the aicp working fine and my car is below 5%. now the aicp isn't working now my AdSense ctr is above 10%.
please check my issue
jobs.recipescorner.in and jobzseeking.com

Your fiend's website also use AICP? If you take out AICP from the equation does your other IP related problem gets solved?

it has been getting this error in developer console ??

It is saying your server has some bad gateway issues for that page.

Yesterday I have 70k page views, instead of 70,000 page views my blocked IP is the only 10ip. I have dual checked my ad placement and disabled cache plugin. in my all 6 site sites also facing this issue and my friend website also facing this same issue.
I have noticed since last weekday by day the blocked IPs are reducing lower than usual days. Last week I have more than 80ips and 2nd day it has gone to 50 and 30. now my number of blocked IP is only 4 in a day. most of the aicp-enabled sites also facing this issue only in recent days.
sir, please check the issue, when the aicp working fine and my car is below 5%. now the aicp isn't working now my AdSense ctr is above 10%.
please check my issue
jobs.recipescorner.in and jobzseeking.com

Your fiend's website also use AICP? If you take out AICP from the equation does your other IP related problem gets solved?

Yes my friend also using aicp and most of the aicp using tube friends site also not working with aicp.
i used ad inseter and many ad plugin. Only 2 or 4 IP are blocking.
please suggest any solution for what now i should do with my site?
or can u tell me any steps to fix the issue or to make a changes in my site?

it has been getting this error in developer console ??

It is saying your server has some bad gateway issues for that page.

Bro mark my words I'm not joking. I have using the aicp plugin for 2 years and I well knew to configure the plugin. This week at the same time all of my websites the aicp plugin isn't working not blocking the ads too and i  checked some nulled paid plugin that works fine. Only in ur plugin, there is a bug.
SIR it's MY REQUEST PLEASE LOOK AT UR CODE AND ALSO PLEASE TEST THE PUGIN SIR. This problem occurs most of the Wordpress users.
please sir....

@sathishmass I've released v1.2.4 of the plugin. Please download the update and use it. I hope it will resolve your problem.