feat: Dedicated quantity column like dnd5e default sheets and a5e sheets

Level Up: Advance 5e sheets have a quantity column that sits to the left of their "Show Item Description" / "Hover Fly-out Menu" section on the far right of the table row. Users of the a5e sheets report that this setup works out really well, as it does not get in the way of the item name and also provides an instant look at the item's quantity at any moment in time, as well as the ability to edit the quantity inline.
Likewise, other users have reported that the ( 1 ) quantity approach in Tidy 5e can be an eyesore when the quantities are set to always visible. Additionally, when they're only shown on hover, knowing how many items one has at a glance is not possible.
I propose we add a quantity column in the style of a5e, on the right side of the table, just before the classic controls. This will make more sense with a hover fly-out menu for the classic controls (see: #96 ). Either way, it might be best to cut at least one column from the default columns and allow users to put columns back in via column selection (#60).

More recently, the default dnd5e sheets have been adding quantity:

Closing as completed.


[WishList] Support more sources

Comment here if you need/want support for

Pulsar
Google PubSub
Microsoft EventHub
RedPanda
Fluvio
etc.

Ideally, make it clear whether you already have such a message queue in production or not.

Hi. I'm not quite sure it's a right place to vote, but I'd like to see a better support for Google Cloud services, because we're  building on it. So PubSub and I guess Storage also. Thank you.

In the main branch, (but not in Quickwit 0.2) we already support custom endpoint for storage. All S3 compatible storage are -in theory- supported. I have not tested that with Google Cloud storage specifically however.
For Google PubSub, it is more complicated story.
I opened an issue here: https://github.com/quickwit-oss/quickwit/issues/1107

This is an awesome project. I've been wanting a serverless search engine solution for years. Really happy to see the support this has gained.
I'm an AWS geek right now - GCP next! Given that, I would love to get this up and running against an AWS Kinesis stream.
So there's my vote! Thanks for all the hard work!

I would like to see support for NATS

I did not know about nats.
https://github.com/nats-io/nats.rs
https://docs.nats.io/nats-concepts/overview

@BrutalSimplicity  Thanks for your message! Kinesis is on our task list, so it should happen very fast.
You can check the progress one this issue https://github.com/quickwit-oss/quickwit/issues/1157

+1 for NATS as Nuclia is using it.

Redis Streams and Redis Pub/Sub!
I love having a small, selfhosted stack, so minio/ceph/garage+redis+quickwit seems like a dream for most of my projects.

scylladb/cassandra

+1 on Pulsar, already running in production on our side

+1 for Scylla/Cassandra, which is already used in our production systems for our chat service.

+1 for RabbitMQ (Queue or Stream)

Hi, I would like to have rabbitmq support also which is already running in production.


Likes and Dislikes: Non-binary approach

Hi!
It would be great to use this system with a bit more fine-grained inputs, so it doesn't consider just the if (a user likes/dislikes something) but also the how much - so your ratings matrix (see cf_api.js, line 200) could not only contain

0 for no given rating,
1 for a like, and
-1 for a dislike,

but (for example)

0 for no given rating,
0.6 for a "half" like,
-0.2 for a very light dislike,
etc.

Could anybody point me into a direction that would take this into consideration?
Thanks a lot :)

This would be an amazing feature to have and would make the algorithm way more powerful and applicable to even more applications! Great suggestion! 👍


Some Links

Hi,
Cool to see a .Net implementation of the LanguageServer Protocol. I'm searching for something like this for Coco/R parsers for nearly a year now. Thanks.
I just wanted to offer my 5 cents:

https://github.com/DotJoshJohnson/vscode-dotnet (similar intent, but apparently not active anymore)
https://github.com/Astn/JSON-RPC.NET/ (it's probably useful, to use an existing JSON RPC implementation, however it's only for net40 and mono)

Best regards
Martin

👍 I had looked at the latter but if I recall there were some differences.  However I'm not yet 100% sold on this truly supporting the full Json RPC spec, once I fully realized the duality relationship between the "client" and the "server".
In some scenarios the editor (vscode, emacs, eclipse, etc) is the "client" in other's is actually the "server".  And the reverse is true for the server itself.  Sadly this is leaking into the JsonRpc code a little bit, so my feeling is I'll probably internalize those namespaces, or make them part of the same nuget package until that can be properly sorted.

Just a link to the protocol documentation:

https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md


GUI uses VP9 instead of AVC now

The title pretty much says it all but for more details you can see the following conversation.
https://www.reddit.com/r/youtubedl/comments/14kj5h0/ytdlp_gui_suddenly_changed_the_codec_from_avc/

Done according to multiple ffprobe tests it's back to AVC now, I assume this request is due to vp9 compatibility issues?

Indeed,


Develop design review template for epics/milestones

What folder sub-structure would we want to use for the "design-reviews" top-level folder? Should the templates go into a sub-folder called "templates" or "recipes"?


ExecuteNonQuery for Aql operations

Is there an equivalent of ExecuteNonQuery for Aql operations? Something that only returns the result of success/failure and maybe the id if it is an Insert or Upsert.
In the Upsert case, will need to know insert or upsert was performed ..

Hi, there is no dedicated method for executing AQL queries that do not return any data since even after insert or upsert operation user can still retrieve data through return statement. However for the convenience I can add a method which won't have a result payload, but only success and status code information filled in. Is that ok?

ExecuteNonQuery operation implemented and merged into the master and will be part of the 0.10.2 version on nuget.


4.x: Module enabled MP quickstart can't be packaged

mvn package of Helidon 4 quickstart with module-info leads to:
Error assembling JAR: Could not create modular JAR file. The JDK jar tool exited with 1 -> [Help 1]
jar: Package io.helidon missing from ModulePackages class file attribute

Maven version: 3.8.7 and higher

Root cause:
https://github.com/codehaus-plexus/plexus-archiver/issues/310

See also #7722

Helidon 3.x uses maven-jar-plugin 3.0.2, Helidon 4.x 3.3.0, support for module main class MJAR-238 was added in 3.1.1. Unfortunately main class is derived from manifest configuration, discussed here by @ljnelson codehaus-plexus/plexus-archiver/issues/310.
:warning:  Helidon 2.x and 3.x are also affected.
Possible workarounds:

Downgrade maven jar plugin to pre MJAR-238:
 <properties>
     <version.plugin.jar>3.1.1</version.plugin.jar>
 </properties>

Use custom main class in current module:
<properties>
   <mainClass>me.daniel.mp.quickstart.Main</mainClass>
</properties>

package me.daniel.mp.quickstart;
class Main {
   public static void main(String[] args) {
       io.helidon.Main.main(args);
   }
}

Remove mode-info.java, same as 1., modul-info triggers jar plugin to generate module based jar

Permanent solution?

Our archetypes could generate explicit Main class + documentation
Build time generation of "routing" Main class when default main class detected


Add user's wishlist to Saleor

I want to merge this change to make user to be able to add and remove items to his wishlist.

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Simplify challenge directory layout

challenge and healthcheck directories are simple Docker images now
images now include the highest value secrets (exploits)

we need to make sure that they are properly secured
it should still require two bugs to reach them: 1) nsjail escape, 2) gain access to the node metadata server
that is, unless you have a kernel exploit but under that assumption it would have broken the previous version of the infrastructure as well

Are you planning more changes?
More generally, how should we manage updates to the samples? Also to documentation like SECURITY.md for ex

that should probably be part of this pull request. But before I do that work, I would like to discuss if these changes look good.

I will also add a README based on the one in the other pull request, wdyt?

@sirdarckcat updated the SECURITY.md and added a challenge/README.md, PTAL

I would submit this as is and then update the samples in follow up commits, wdyt?

Maybe samples can be updated on every release? Rather than every commit.

every change that requires an update to the samples would be a new release anyway if there are breaking changes


Login Pin UI

Done when:
-you can log into your role based on a unique 4 digit code given to every employee
-manager can create pins for new employees
-load in pins from file?

1hr 35min- getting basic UI design functional

1 hour - getting initial skeleton functional

1hr 6min- working on implementation

30 min - implementation

1 hour - pair programming w John on implementation

1 hour - working with anika

1 hr: discussing with toby, emma and peter about how this should be done

2.5 hrs: Pair programming with peter to rework the structure of the GUI

2 hrs: discussing with Toby, John and Emma about how to structure the GUI, and discussing in class

2.5 hrs: Pair programming with John to rework the structure of the GUI

30 min: discussing with toby

10 min - pair programming w Emma for update pin string

10min- fixing login pin to update the screen w Anika.

4hr 9min, asking toby for help, working w John and Peter, working on my own from past week.


Directory targets should invalidate subtargets

When a target is a directory, and that target completes, any subtargets of that target should have their mtimes updated based on the task that created the directory. As a result this should effectively stop the subtargets from applying if they've been defined by the directory target.
The use case here is npm installs where there is the npm install operation and an npm install pkg@v operation, where the npm install target is node_modules and package-lock.json and the npm install pkg@v target is package-lock.json and node_modules/pkg. If the npm install is running and the npm install pkg@v depends on it, then the npm install pkg@v should be able to be preemptively stopped by the npm install task.
Another way to implement this might be to simply lazily compute mtimes after dependencies have finished processing.

This is a bit too complex for now, instead one or the other applies in the npm extension.


set: add command to onyo

This enables to set one or multiple values for one or multiple assets.
It changes existing values, or adds new ones.
The flags --rename and --filter are still missing and must be
added later. Dictionary keys and lists as values are not implemented.
Close #108 because it implements the changes discussed.
Close #15 because the command is implemented.
Issues about the missing flags and functionalities will be added,
together with a cleanup of the readme.

Thanks for the feedback, I added the changes to the PR and squashed them into the commit.


Error with EXE compiled with Pyinstaller

Hi, in version 1.2.0, 1.2.1, 1.3.0 of fake-useragent, i compile my application from PY to EXE with Pyinstaller. When i launch the EXE, the prompt CMD closed immediatly after show this error.

If i use version 1.1.3 of fake-useragent, the prompt CMD shows the same error, but it not close and app works well. How can i resolve this issue?

resolved with
pyinstaller --onefile --collect-datas=fake_useragent myprg.py


Change on pause button

Hello there
It would be awesome for people that use BW as lazyraider a way to use pause as push/release button as a way to use situational cooldowns that need to be used on specific moments.
For example i have a stun on shift+r. When i press shift the rotation pauses when i release it continues

Can be done but requires some work in BW's core.

so the current pause function its on combathotkeys.cs and the pause its Hotkeys.RegisterHotkey
Cant add another function on this file like pause2 with a keydown event?

made a plugin with this functionality so i guess we may close this


Casting using Chromecast  to JBL BoomBox 3 WiFi plays for a few seconds and stops with an error

What version of Music Assistant has the issue?
stable,beta
What version of the Home Assistant Integration have you got installed?
2024.7.1
Have you tried everything in the Troubleshooting FAQ and reviewed the Open and Closed Issues and Discussions to resolve this yourself?

[X] Yes

The problem
Casting to JBL Boombox 3 Wi-Fi stops after a few seconds, then speaker looks disconnected in the web interface.
Any other casting application to that speaker eq Youtube Music on Android, Spotify on Android, Youtube Music on Desktop,  Youtube from Chrome on Windows from Desktop, Spotify from Windows Desktop in Chrome Browser, Spotify Windows client...works with no issues
Other devices in my home connected to the same network working with no issues : Google Home Mini Speaker, Xiaomi Mi Smart Clock (two of them), Google Chromecast TV dongles (two of them), Google Chromecast 3,
How to reproduce
Play any song via Chromecast  to a JBL Boombox 3 Wi-Fi from MusicAssitant
Music Providers
youtube music, filesystem
Player Providers
Chromecast
Full log output
2024-09-22 09:13:25.270 INFO (MainThread) [music_assistant] Loaded music provider YouTube Music
2024-09-22 09:13:27.156 INFO (MainThread) [music_assistant.music] Sync task for YouTube Music completed
2024-09-22 09:13:27.156 INFO (MainThread) [music_assistant.metadata] Starting metadata scanner
2024-09-22 09:13:27.158 INFO (MainThread) [music_assistant.metadata] Metadata scanner finished.
2024-09-22 09:15:20.344 ERROR (Thread-8) [pychromecast.socket_client] [JBL Boombox 3 Wi-Fi(<IP_ADDRESS>):8009] Error reading from socket.
2024-09-22 09:15:20.344 WARNING (Thread-8) [pychromecast.socket_client] [JBL Boombox 3 Wi-Fi(<IP_ADDRESS>):8009] Error communicating with socket, resetting connection
2024-09-22 09:15:20.352 ERROR (Thread-8) [pychromecast.socket_client] [JBL Boombox 3 Wi-Fi(<IP_ADDRESS>):8009] Failed to connect to service MDNSServiceInfo(name='JBL-Boombox-3-Wi-Fi-dd7b82f44610618daceef042ebf09ff5._googlecast._tcp.local.'), retrying in 5.0s
Additional information
No response
What version of Home Assistant Core are your running
2024.7.1
What type of installation are you running?
Home Assistant Container
On what type of hardware are you running?
Linux

That isn’t the full log. Please follow the template instructions

@OzGav  Apologies, full log attached after this morning upgrade to latest beta.
[
core.log
](url)

Looks like we're loosing connection to the speaker completely. Do you also have the cast integration setup within HA ?
Try to disable that for a while and see if MA keeps up. Some of these cast players crash if they get too many socket connections.

Hi @marcelveldt ,
Cast integration in HA is disabled since I installed MA (eq about 2 - 3 weeks ago ).

Hi @marcelveldt ,
Cast integration in HA is disabled since I installed MA (eq about 2 - 3 weeks ago ).

OK, thanks for letting me know. So there is something else causing it. I'll have a look at the code if we're throttling the commands to the cast players well enough.

Hi,
If there is anything I can do to help to diagnose this issue , let me know.
Thanks

Hi,
I have the same issue with a JBL Authentics 500.
Using Chromecast: Music stops after few seconds. Device becomes unavailable for another couple of seconds. (Chromecast disabled in HASS)
Using Airplay: Device showing up, but Playback not possible at all. Play Button does nothing.
Using DLNA: Everything works, but stopping Music is not possible. Music plays endless until I use the hardware button on the device.
It almost seems that JBL is not using any standard correctly.
My Apple Homepods and Sonos Players work normally with Airplay.

I can confirm  @Peyto79 's radio statement.  Radio is the only thing I can stream  via  Chromecast to my JBL BoomBox 3 Wifi also .  Youtube and Files have the same behaviour as previously stated...streaming stops in a few seconds and speaker becomes unavailable

I have added an option to force the mp3 codec on Google Cast players. Available in the player settings. Most probably that will fix this issue.

@marcelveldt
Installed newest release and I can confirm that it works now!
My JBL Authentics 500 plays now also files (not only Radio) with Chromecast.
Thank you very much!!!

Closing on the basis of the above report.

Thank you so much !!!! All good now !!!!!


Base API on futures-rs

The current API offers both synchronous and asynchronous operation, but it would be better to do that based on futures-rs. I've looked into it, but decided to hold off for the moment, until I had a chance to learn a bit more about futures-rs and experience it from a user's perspective (as opposed to that of a library author).

I'm working with futures-rs (and learning from it) on a personal project. I think implementing futures-rs would be really useful, and should be a target for 0.5. Do you have any thoughts/suggestions (or even existing code) about how to go about this?

I have some thoughts, but not many:

There's existing code: tokio-inotify, which is a wrapper around an older version of inotify-rs.
tokio-inotify implements Stream. The inotify-rs API has become more low-level since then, so I don't think this will work any longer, as inotify-rs no longer manages a heap-allocated buffer. I'm guessing that returning a future that returns an iterator from read_events would be the way to go.
The point where I gave up was when decided what to do about Handle. You seem to need a Handle to do stuff with Tokio. We can probably just assume that a future-enabled API that uses inotify-rs already has a Handle, but what about end users that don't have one and don't know how to get one? There must be a way to support both use cases conveniently.

That's about it. I still don't have much experience with futures/Tokio. Some of my question might be easy to answer, but I think there will probably be undiscovered problems that I'm not aware of. When I looked into it, I gave up pretty quickly, as it wasn't a high priority at the time (I think it's very important long-term, though).

and should be a target for 0.5

I generally don't like setting such goals for versions, as I prefer to just release when there are enough useful changes. For example, I plan to take a closer look at issue #61 soon. Any improvements in that area, together with your pull request (#67), are already useful enough by themselves. If a futures-based API were ready at the same time, then fine, but if not, it can just go into another release later.


setup Production AWS Environment

separate VPC etc.

needs to be us-east-2 as east-1 has most issues

done


Add a few more tests to azcore

Fixed a bug in body download policy.
Added a missing comment on an exported field.

[ ] The purpose of this PR is explained in this or a referenced issue.
[ ] The PR does not update generated files.

These files are managed by the codegen framework at Azure/autorest.go.

[ ] Tests are included and/or updated for code changes.
[ ] Updates to CHANGELOG.md are included.
[ ] Apache v2 license headers are included in each file.

Can one of the admins verify this patch?


Additions/Refactor of Realm.framework to support new swift apis

This moves over to RLMObjectBase. We also now properly hide private apis using bridging headers.
@jpsim @tgoyne

:+1: nice work

Have you actually tested the dynamic framework with these changes? I am unable to get it to work from either obj-c or swift.

This has been tested against the objc and swift examples

:+1:


[Remove] deprecated getMapping API from IndicesClient

Removes the deprecated types based get, getMapping, getAsync, and
getMappingAsync methods from IndicesClient. It also removes extra nesting of
mappings belong the deprecated type named object and removes the types based
methods from the affected request classes.
relates #1940

Repeat failure from #1746
Refiring

start gradle check

Docker build failure! Refiring

start gradle check

Another #1746 failure! Refiring!

start gradle check

unrelated non reproducible test failure. Opened #2311. Refiring

start gradle check


chore(host): Make l2-chain-id optional if a rollup config was passed.

Overview

[!NOTE]
Needs https://github.com/ethereum-optimism/optimism/pull/11951 for CI to pass.

Makes the l2-chain-id flag mutually exclusive from the rollup-config-path flag.

#534  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @clabby and the rest of your teammates on  Graphite


IsBatched missing?

Hi,
Following document mentions of IsBatch but I can't find it in attribute class
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=in-process%2Cextensionv5&pivots=programming-language-csharp#attributes

Hi @sadiqkhoja,
IsBatched is not a property of the attribute, and hasn't been for several major versions. @shreyabatra4 are you able to help get these docs updated?

This issue has been transferred to the repository of the team best able to assist with documentation updates as #223


Refactor PigResource.java

This class could be refactored in a number of ways, including:

use constants from java.net.HttpURLConnection to remove magic numbers from Responses; also methods like Response.serverError() can get rid of 500

As explained here, exception handling can be done more elegantly. I would declare some exception handlers and get rid of all the try catches, or at least most of them.

Also, I wouldn't throw HTTP 409 since it's a more complicated scenario for it (see here); I would throw 500 server error or throw HTTP 412 (precondition failed; usually as a result of validation failures)

There seems to be duplicated code for try { ... } catch (IOException) (2 nested catch for the same exception) inside public Response registerScript(...)

If agreed upon these changes, I could make a PR as soon as I have a little time.

Please go ahead and submit PR.

@rucshah PR #4 is for this. The changes are structured in 3 commits.
I wrote a detailed description of the PR and also left some line comments. I hope everything makes sense. If not, don't hesitate to ask, I'll answer as soon as possible


Setup backend CLI

Be nice if we could do:
npm install -g @shabados/backend  # Install shabadOS as a CLI tool via npm
@shabados/backend  # Launch shabadOS backend

For linux/those who want a shell only, with updates.

What would they do with the backend in CLI?

Closing without resolution. This issue either affects too few users or there are too many issues with higher impact to be working on. It is possible to re-open or re-visit this issue at a later time. If you feel this issue is important, please give a thumbs-up reaction to the first post. You may track this issue from the pinned meta-tracker at the top of the issues home page.


Recent list does not include device/local files

Preflight Checklist

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Describe the bug
I work with alot of files both locally, in git, github and confluence.
The "Recent" files misses to include local files (save to device).
This is really annoying, since re-opening the same files takes many clicks, and is a chore when you are working with several files at the same time for a task.
To Reproduce
Steps to reproduce the behavior:

Start drawio (using web app, app.diagrams.net), open a local drawing (e g test.drawio) from your device/local drive. Do some edit, save.
Close drawio and open it again
Go to Open Recent in the menu

Expected behavior
test.drawio is present in recent menu.
Actual
test.drawio has not been added to recent menu
Screenshots

draw.io version (In the Help->About menu of the draw.io editor):

draw.io version 18.0.7

Desktop (please complete the following information):

OS: Microsoft Windows [Version 10.0.19042.1706]
Browser chrome
Version 101.0.4951.67 (Official Build) (64-bit)

Additional context

Example of recent functionality in webapp populated with local / device files:

https://googlechromelabs.github.io/text-editor/
https://web.dev/file-system-access/

Reproduced with 18.0.8 in Chrome and FF
The same issue was fixed in desktop https://github.com/jgraph/drawio-desktop/issues/963


Toggl button unavailable in Redmine

Open redmine task but button not showing
http://screencast.com/t/cqE5Cj4D6w7

Just tested this in redmine demo account and it seems to be working. Tested with this url http://demo.redmine.org/issues/77490
"Start timer" is shown in the issue detail view. Toggl button supports all services on their default domains. If you have redmine on some other domain than redmine.org please refer to this article https://github.com/toggl/toggl-button/wiki/Adding-custom-domains


o $PATH$

If this is an issue regarding antivirus, make sure you search the existing issues first.
My Environment

[ ] Windows 7 or below (not truly supported due to EOL)

[ ] Windows 8

[ ] Windows 8.1

[ ] Windows 10

[ ] Windows 10 IoT Core

[ ] Windows Server 2012

[ ] Windows Server 2012 R2

[ ] Windows Server 2016

[ ] My Windows installation is non-English.

I have already...

[ ] read the README to be aware of npm gotchas & antivirus issues.
[ ] reviewed the wiki to make sure my issue hasn't already been resolved.
[ ] verified I'm using an account with administrative privileges.
[ ] searched the issues (open and closed) to make sure this isn't a duplicate.
[ ] made sure this isn't a question about how to use NVM for Windows, since gitter is used for questions and comments.

My issue is related to (check only those which apply):

[ ] settings.txt
[ ] proxy support
[ ] 32 or 64 bit support

Expected Behavior
Fill me in...
Actual Behavior
Fill me in...
Steps to reproduce the problem:
Fill me in...

Closing because there isn't anything written.


support for minimum size visuals

Current coverage is 66.71% (diff: 77.77%)

Merging #82 into master will decrease coverage by 0.05%

@@             master        #82   diff @@
==========================================
  Files            11         11
  Lines           629        631     +2
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            420        421     +1
- Misses          209        210     +1
  Partials          0          0

Powered by Codecov. Last update 171e3e7...e3ceed3


3D-Secure 2.0 - PayIn Missing Fields

Hello,
According to the implementation for 3D-Secure 2.0, we should add BrowserInfo, IpAddress, Billing & Shipping objects to:

CardPreAuthorization
PayIn

For CardPreAuthorization object, the SDK almost reflects  (see #459) the API call (based on the fact Billing & Shipping are optional, I'm suppose it should work without passing them to the API...)
For PayIn object, I can't see any of the asked properties (BrowserInfo, IpAddress, Billing & Shipping) in the current SDK.
Even in sub PaymentDetails (PayInPaymentDetailsPreAuthorized in my case), there is no possibility at all to pass the required informations.
How can we adapt the API calls without having a SDK up to date? Can we have a rlz date for a new version of the SDK? We need to have time to perform the changes and testing them before the end of March.
2nd question: if my PayIn is based on a PreAuthorization (on which I've attached BrowserInfo and IpAddress), do we have to pass again these informations during the API call or you're able to recover automatically them from the PreAuth?
Thanks in advance

Hello @laurent-bientz
Thank you for sharing this issue with us. We are working on a new release and I hope it could land this week.
About your second question, we'll look into it.

Hello @dduwoyemgp
Thanks for the new release that allows to pass the correct informations for CardPreAuthorization (including FirstName & LastName).
About PayIn object or sub PayInPaymentDetailsPreAuthorized, I can't see any Billing, Shipping, BrowserInfo or IpAddress.
Do I assume all these fields are not required to be passed in the case of a PayIn triggered by a PreAuth?
I guess that because for a standard PaymentDetails (aka PayInPaymentDetailsCard) we get almost all the fields? (don't understand why Billing is missing but whatever).

Hello @laurent-bientz
You assumed well because as you said, all these fields are not mandatory  in the case of a PayIn triggered by a PreAuth

@dduwoyemgp great, thanks for your feedback! We can close.


Add Integer#<, Integer#<=, Float#<, Float#<=

Related to https://github.com/myst-lang/myst/issues/57

Awesome! Love the detailed specs for these as well. Thanks :)


docs: update logo

replacing old logo with corporate branded logo, obtained from https://www.freelogodesign.org/preview?lang=en&autodownload=true&logo=0063d8c7-ebfa-4603-ae0e-a4bf0b531e46

It would be good to know why the tests are stuck for a day.

Is it possible that we required some jobs that don't run at all times? ;)

#63 should fix the frozen tests.


[T3A4][T17-A2]Clara Tan

Ready for Review

@hotchocolatemarshmallow Good effort in implementing exceptions. Please close the PR after you have read the comments.

Thanks for the review :))


LinkitONE and pubsubclient 2.7

Hello everyone, I'm using a Linkit ONE board with mobile connection and MQTT, everything was going fine with library version 2.6, but when I switched to the 2.7 release I experienced  the completely freezing of the board.
I have the suspect that the fw is not executed from the beginning, I mean also the normal Serial.println() function doesn't work. Anyone with a similar experience? I think that could be a hardware incompatibility but it seams strange to me.

I'm also having an issue with this using a Linkit ONE. I stripped back my program and built it up in steps, and it seems to freeze the board as soon as I try to use the pubsubclient in the code (checking client.connected, client.connect). It's when it's included but unused. As with keomaster, not even Serial.println() works in setup, it seems to completely freeze it.


UAI Queue:

Initiating units:

Signer (Health Check):
a. Trigger:
i. On app login, check for the signers date last seen and todays date.
ii. > 180 days from Last Seen (Last Seen is anything from signing to health check to registration to manual confirmation).
iii. Turn on the visual indicators and add item to the UAI queue with priority 80.
b. UAI item:
i. Heading: "Health Check due"
ii. Sentence: " was last accessed <193> days back. Confirm access"
iii. CTA:
1.Positive: Confirm;
2.Negative: Skip
iv. Condition to Keep: Last Seen < 180 days
c. Visual indicators:
i. Home Screen> Manage Signers tile
ii. Manage Signers> Specific Signer
d. User message:
i. Where: On the Signer Details screen. To be shown whenever this visual indicator is on
ii. Message: "Health Check for this Signer is now due. Please follow the steps to confirm access to the signer". "You can skip
this step and come back to it later or manually confirm access"
iii. CTAs: Continue; Manual Confirm and Skip (cancel)
1. Continue: This will lead you to the Health Check steps where you repeat the steps as if you are adding the signer to
Keeper. On completion of the steps - reset.
2. Manual Confirm: Warning message "By choosing this option you are confirming access to the signer at this time. Ok to
continue, cancel to go back". Ok - reset. Cancel - Do nothing and back to the Signer details screen.
3. Cancel: Do nothing and back to the Signer details screen.
iv. Reset: remove visual indicators, remove UAI message from the queue and reset counter to 180.
Vault (Signer Registration):
Recovery Key (Backup and confirm):
New Release (Release Notes):
Rate the app (sometimes):

UAI queue:

Trigger:
a. On Home Screen loading:
i. Pick top three items from the queue
ii. Check for Condition to Keep for those items
iii. Shows remaining items with entry animation. One entry animation for all items, not one for each.
b. On positive CTA (Continue or Confirm etc.)
i. Go to the UAI screen d.1. Message and the rest of the process will follow on its own.
c. On Skip:
i. Transitions from one item to another with a transition animation. Returns to empty state at the end.
ii. Reduce priority by 5. Remove from Show Queue.
iii. This means that in one go the user will perform a max of 3 actions.

https://xd.adobe.com/view/f1543c84-c25a-4ad6-81ca-1e0c540e956e-a407/screen/09f28828-b661-4d05-8717-4dad777502bb/

Verified this issue on keeper app v 1.1.12(309)


Add a Gitter chat badge to README.md

flow-stack/flow now has a Chat Room on Gitter
@sebastianconcept has just created a chat room. You can visit it here: https://gitter.im/flow-stack/flow.
This pull-request adds this badge to your README.md:
![Gitter](https://badges.gitter.im/Join Chat.svg)
Happy chatting.
PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

Added manually on the right channel


Hawkbit (http request) and MQTT can't seem to work together

Describe the bug
I'm trying to have the hawkbit and MQTT running together, but the hawkbit is having problem with the http request where the http_client_req always return -12 (ENOMEM). Is this supposed to happen? As in http and mqtt aren't supposed to run together?
To Reproduce
Have a thread that does its MQTT thing and another thread that does the Hawkbit thing and see error.
Expected behavior
I expecting (hoping) that both of them can work in parallel without issue.
Impact
Unable to use hawkbit and mqtt together in my project
Environment (please complete the following information):

OS: Windows 10
Toolchain: gnuarmemb
zephyr-v2.6.0-1638-g0296d12675fd

Closed, see #38191 's comment


Feature Request: Be able to change feed name

CayenneLPP seems to force the feed name. Can the feed name be changed in the sketch?
example
lpp.addDigitalInput(1, 0);

creates an MQTT feed called  Digital_Input
Can that feed name be edited before it is sent?

Hello @hpssjellis!
Thank you for your patience. Unfortunately, for now, is not possible to change or edit the name.
Apologies for the inconvenience caused.

@jazhe No Problem, thanks for the reply. I wasn't sure if that was an easy change or not. Have a great day. Great library!


feat: adds code-editor asset

Description
Adds code-editor asset that can be used to edit JSON content and call an expression on changes.
Change Type

[ ] patch
[x] minor
[ ] major

Release Notes
Added code-editor asset that can be used to edit JSON content and call an expression on change:
import { CodeEditor } from "@devtools-ui/plugin";

// and use it to define your Player-UI content:
myFlow = {
  id: "my_flow",
  views: [<CodeEditor exp={e`my_expression`} binding={b`my_binding`} />],
};

📦 Published PR as canary version: 0.1.0--canary.17.811

Try this version out locally by upgrading relevant packages to 0.1.0--canary.17.811

/canary

/canary


10736: Fix for self join table names extraction in multistage

Fix for extracting the table names in case of Self Join queries.
Added test cases for Self Join queries.

As per the issue
cc: @walterddr @ankitsultana @xiangfu0

Codecov Report

Merging #10739 (84d08c4) into master (7dcae92) will decrease coverage by 56.50%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             master   #10739       +/-   ##
=============================================
- Coverage     70.32%   13.83%   -56.50%
+ Complexity     6462      439     -6023
=============================================
  Files          2125     2071       -54
  Lines        114368   111883     -2485
  Branches      17259    16963      -296
=============================================
- Hits          80435    15475    -64960
- Misses        28325    95145    +66820
+ Partials       5608     1263     -4345

Flag
Coverage Δ

integration1
?

integration2
?

unittests1
?

unittests2
13.83% <0.00%> (-0.02%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...org/apache/pinot/sql/parsers/CalciteSqlParser.java
0.00% <0.00%> (-84.65%)
:arrow_down:

... and 1677 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

I am not sure, but integration test set 2 failures don't seem to be related to this issue.
Error:  Failures:
Error:    UrlAuthRealtimeIntegrationTest.setUp:70->ClusterTest.startServer:201->ClusterTest.startServers:209->ClusterTest.startOneServer:217 » Runtime
Error:    UrlAuthRealtimeIntegrationTest.tearDown:89->dropRealtimeTable:185->ControllerTest.sendDeleteRequest:831 » IO

Also, failed tests are working fine in my local with the current changes. Anyone please re-trigger the execution of integration test set 2? Thanks

Can we re-trigger the failing integration test? I am unsure, but I see intermittent failures in the integration test. Thanks


ORAS compatibility

Hi There,
Are the generated images OCI-compliant?
We have ORAS distributing our artifacts across different OCI registries. Hence, being OCI-compliant is a hard requirement.
I haven't found any reference in your documentation.
Thanks.

The images Cog generates are standard Docker images, so can be used in any place those are acceptable, including as an OCI artifact.


COVID SDE lecture edits

https://github.com/SciML/DiffEqBase.jl/issues/548 is what was missing from the plots with output_func. Just to get things done, I avoided that for now.


Can only run in service mode on Ubuntu desktop, not server

Hi folks!
I suspect there's some weird dependencies at work here, but I've been able to duplicate this on 12.04 and 16.04, so there's probably something amiss.
When running Grobid in service mode following the documentation, it starts up normally on Ubuntu desktop installations. However, on Ubuntu server, it prints these additional warning lines:
[11:36] [INFO] >>> maven-jetty-plugin:6.1.10:run-war (default-cli) > package @ grobid-service >>>
[11:36]  [WARNING] The POM for com.sun.jersey:jersey-core:jar:1.9 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[11:36]  [WARNING] The POM for asm:asm:jar:3.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
and then nothing happens after
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
The warnings seem like maven is just complaining about being able to resolve sources... any idea why this would be happening so consistently?
This is with maven 3 and openjdk-8-jre. Thanks!

@axfelix could you please provide the whole log when you run maven with the option -X ?
Could you also give me the result of the command mvn dependencies:tree?

Nevermind -- this seems to be an issue with non-root users trying to start the Grobid service, which throws errors about dependency resolution. I'm not familiar enough with maven to know why that's happening, but I don't think it's a Ubuntu server issue.

@axfelix if you send me the log information I've asked you I can try to figure it out ;)

ok, ok :)

trying to run grobid-service as www-data after building as root (vagrant in this case) and then chowning the grobid directory to www-data for good measure results in this:
vagrant@xmlps:/opt/grobid/grobid-service$ sudo su www-data
www-data@xmlps:/opt/grobid/grobid-service$ mvn -Dmaven.test.skip=true jetty:run-war -U
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building grobid-service 0.4.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-jetty-plugin:6.1.10:run-war (default-cli) > package @ grobid-service >>>
Downloading: https://repo.maven.apache.org/maven2/org/grobid/grobid-core/0.4.0/grobid-core-    0.4.0.pom
[WARNING] The POM for org.grobid:grobid-core:jar:0.4.0 is missing, no dependency information     available
Downloading: https://repo.maven.apache.org/maven2/org/grobid/grobid-core/0.4.0/grobid-core-    0.4.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.967 s
[INFO] Finished at: 2016-06-07T21:47:36+00:00
[INFO] Final Memory: 13M/136M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project grobid-service: Could not resolve dependencies for project org.grobid:grobid-service:war:0.4.0: Could not find artifact org.grobid:grobid-core:jar:0.4.0 in central (https://repo.maven.apache.org/maven2) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1]     http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

@axfelix could you please provide the whole log when you run maven with the option -X ?
Could you also give me the result of the command mvn dependencies:tree?

Sure! here they are when run as the www-data user.
mvn-X.txt
mvn-dependencies.txt

@axfelix sorry, the second command should be mvn dependency:tree, not dependencies. My mistake.

@axfelix Since I haven't got any news, feel free to reopen it, if you have more feedback and we can continue investigating this problem.


update to<EMAIL_ADDRESS>

Describe the bug
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: nuxt-ultra@undefined
npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/@pinia/nuxt
npm ERR!   dev<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/@pinia-plugin-persistedstate/nuxt
npm ERR!   dev<EMAIL_ADDRESS>from the root project
Reproduction
NA
System Info
NA

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] The provided reproduction is a minimal reproducible of the bug.

My short-term workaround (to ensure my deploys continue) is to install & pin the requested version.
yarn add<EMAIL_ADDRESS>

My short-term workaround (to ensure my deploys continue) is to install & pin the requested version.
yarn add<EMAIL_ADDRESS>

Should be fixed now. Sorry, both sick and really busy these days.
Hope this works now 😌

I had the same problem. I tried to go down


Fix nested struct array rule generation

Follow up to https://github.com/runtimeverification/kontrol/pull/830.
This PR ensures that the elements of nested structs up to an arbitrary depth all have _{i} indices appended to their names if they correspond to an array element.  It also factors out the processing of tuple array components into a separate function process_tuple_array.
This PR also adds a test that exercises the previously missing edge case, which manifested in variables on the LHS and in the ensures clause of the #abiCalldata rule in contract.k not having proper indexes (..._0) set.
Please note that this test branches on the possible length of dynamically sized strings in the calldata, so it is meant to test kontrol build and is not run during the kontrol prove stage:
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.13;

import "forge-std/Test.sol";

interface ProjectConfig {
    struct ChainEnv {
        string chainName;
        string chainIndex;
    }

    struct Vault {
        string tokenName;
        address oracle;
        uint256 allowedToTrade;
        InputData params;
        uint256 reserves;
    }

    struct InputData {
        uint256 ltv;
        uint256 rate;
        uint256 exchangeRate;
        uint256 utilization;
    }

    struct AssetAddresses {
        address cToken;
        address dToken;
    }

    struct VaultWithAddresses {
        Vault vault;
        AssetAddresses addresses;
    }
}

contract NestedStructArrayTest is Test, ProjectConfig {
    // this test branches on dynamically sized calldata and not run in CI; it is only meant to test `kontrol build`
    function testVaultSignature(ChainEnv calldata environment, VaultWithAddresses[] memory listings) external {
        assert(listings.length == 1);
    }
}

:heart_eyes: nice refactoring!


In router-view, the page browser rendered by suspense wrapped by keepAlive cannot return or switch components

Vue version
3.2.36
Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-n7zewy?file=src%2FApp.vue
Steps to reproduce
if in the built-in window

click about tab
click home tab

if outside the built-in window（you need click Open in New Window，in right top）

click about tab
browser click back

What is expected?
browser back success and switch component success.
What is actually happening?
The console has some errors.
in sharedContext.deactivate an error occurred,look like keepAlive the error.
TypeError: Cannot read properties of null (reading 'da')
    at Array.<anonymous> (chunk-4OGPFPXL.js?v=c2056a12:3154:23)
    at flushPostFlushCbs (chunk-4OGPFPXL.js?v=c2056a12:1556:41)
    at flushJobs (chunk-4OGPFPXL.js?v=c2056a12:1585:5)

The corresponding file I think should be here.
System Info
System:
    OS: Windows 10 10.0.22000
    CPU: (12) x64 Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
    Memory: 15.93 GB / 31.84 GB
  Binaries:
    Node: 16.10.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.18 - ~\AppData\Roaming\npm\yarn.CMD
  Browsers:
    Edge: Spartan (44.22000.120.0), Chromium (101.0.1210.53)
    Internet Explorer: 11.0.22000.120

Any additional comments?
No response

I have the same problem

minimal reproduction


PyMuPDF or fitz?

Question
Hi.
In the cookbook about PDF extraction https://docs.mirascope.io/latest/cookbook/extract_from_pdf/, PyMuPDF is claimed to be used in the text, but all the examples feature package named fitz.
On top of being confused with this discrepancy, I tried looking up fitz, and found only a lib about neuroimaging.
What is up here?

Ah I see the confusion.
fitz is the legacy name for that package and is acting as an alias. We should update this to import pymupdf so there isn't any confusion here.
I will make sure this gets fixed in our upcoming docs updates. Thanks for pointing this out!

FYI, they have this page on AI integration: https://pymupdf.readthedocs.io/en/latest/rag.html

Hi Also wanted to ask
if I can add support for Llamaparse API which can also act as a Alternative to any python package.
@willbakst
If it's ok I can add that functionality

For this particularly cookbook, let's keep it as-is.
However, if you're interested in implemented a more RAG + PDF cookbook recipe and want to use Llama Parse to do that, you're more than welcome to!
Please also submit a separate Feature Request as a GitHub issue outlining what you'll be adding so that we can properly track it there (rather than in this issue).

Ok, thank you @willbakst
Closing this since there is nothing else to add.


[JS/TS/Flow] Read GraphQL documents inside template strings

Followup to https://github.com/apollostack/apollo-codegen/pull/24#issuecomment-266221363
We need to support extracting queries from template strings.

[x] Extract from gql tags
[ ] Extract and infer a fragment name for Relay.QL tags

@chollier Relay.QL will require more work than just finding template strings since Relay dynamically generates the queries. We'll maybe need your contribution for that!

Indeed I was thinking the same, we don't name fragments in Relay.
I'm thinking we could maybe infer the fragment name from the filename?
I also know that with Relay2 it's planned that their would be a way to statically traverse the code, extract the Relay Queries and eventually store them as persisted queries (https://www.youtube.com/watch?v=OEfUBN9dAI8)
Also, they recently introduced babel-plugin-graphql ( https://github.com/facebook/relay/commit/c51c351de44619d1e5a05143dafad97d341d8469 ), it gives clues on how fragments will be named in the future.

I was wondering for this implementation how a parser would be chosen? Would it be inferred for example that maybe ntypescript would be used for typescript generation and babylon would be used for flow generation? Or would setting the specific parser and perhaps it's setting be configurable from the CLI.
By having multiple parsers, they could each conform to an implementation interface in which they would return an array of plain text graphql source and optional paths. A modified version of loadAndMergeQueryDocuments would then create the merged AST. The path of execution would then look like:
CLI -> Language Specific Parser -> Standard Compiler -> Language Specific Generator -> Output
For this approach to work, the extraction of source from literal .graphql files would have to be moved into it's own "parser", but that implementation would be trivial.

I don't think we need a parser for this at all, a simple regex seems to work just fine: https://github.com/Poincare/persistgraphql/blob/master/src/extractFromJS.ts

(BTW that's the codebase for a query persisting tool for Apollo we're planning on announcing very soon)

Any updates on this?

@Grmiade there has been a lot of talk around this topic but no progress yet because we've been trying to figure out how to create a generalized utility around extracting gql.

I took a very rough stub at this in https://github.com/apollographql/apollo-codegen/pull/113

thanks @itajaja i'll take a look

I merged in #113 @itajaja thanks! we do want to add docs/tests for it -- and in the original issue it would be cool to support arbitrary template tags so I'm going to leave this issue open until we resolve those

We'll track what's left to do in #140. Thank you for the work already done!


Training on TPU stuck at "Waiting to connect to client mesh master (300 seconds) localhost:54541"

🐛 Bug
I am training GPT2 model on TPU but training is getting stuck with following as the last line:
tensorflow/compiler/xla/xla_client/mesh_service.cc:208] Waiting to connect to client mesh master (300 seconds) localhost:54541
To Reproduce
I have followed all steps as outlined in https://github.com/mgrankin/ru_transformers/tree/master/tpu to train a GPT2 model on TPU on Google Cloud.  As mentioned there, I was able to successfully run MNIST example without any issue
python /pytorch/xla/test/test_train_mp_mnist.py
But when I ran the full training which is on a small dataset (10MB) just to make sure it runs successfully, the training is getting stuck with above line and doesn't proceed further. When I press Ctrl-C, I can see it is waiting in socket polling. I have tried restarting the TPU but same problem is observed.
Steps to reproduce the behavior:

Run the fit.sh present in the repo here: https://github.com/mgrankin/ru_transformers after all the necessary configuration.

Logs
TPU Hang.log
Expected behavior
Training should complete successfully.
Environment
Collecting environment information...
PyTorch version: 1.5.0a0+65bad41
Is debug build: No
CUDA used to build PyTorch: None

OS: Debian GNU/Linux 9 (stretch)
GCC version: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
CMake version: version 3.14.0

Python version: 3.6
Is CUDA available: No
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA

Versions of relevant libraries:
[pip] numpy==1.18.1
[pip] numpydoc==0.9.1
[pip] torch==1.5.0a0+65bad41
[pip] torch-xla==0.8+98a2790
[pip] torchvision==0.6.0a0+b6f28ec
[conda] blas                      1.0                         mkl
[conda] mkl                       2019.4                      243
[conda] mkl-service               2.3.0            py36he904b0f_0
[conda] mkl_fft                   1.0.14           py36ha843d7b_0
[conda] mkl_random                1.1.0            py36hd6b4f25_0
[conda] torch                     1.5.0a0+65bad41           <pip>
[conda] torch-xla                 0.8+98a2790               <pip>
[conda] torchvision               0.6.0a0+b6f28ec           <pip>

```### Additional context

This is my first time using TPU for training.

Is it the case that training is actually completing but command doesn't return, which is what I am used to seeing?

I am seeing the pytorch_model.bin getting created so which means training was successful. Closing the issue.


Cartola FC WebApp

User story:
As a Cartola player
I want to access a website and request a line up
So that I can print it and draft my team in Cartola app
Acceptance criteria:
Be able to access a website and request a line up for the current round
Accept at least 433 schema
Accept any budget

[ ] Draft microservice
[ ] Forecast microservice
[ ] Microservices orchestration
[ ] Webapp

Microservices
Lambda functions will be the build blocks of the backend
Orchestration
Orchestration will be done with Step Functions
Web App
Streamlit will be used for the web app development


Support all ember exports

Closing, as this is possible elsewhere now, not much work, and done in another PR


import python_2_unicode_compatible from six instead of django

Django 3.0 removed Python 2 compatibility libraries. Switching this import to six makes seeker work with Django 3.0/3.1. I have not been able to find any other incompatibilities.

I think a better route would be to get rid of Python 2 compatibility code entirely. Python 2 is no longer supported, nor is any version of Django that supports Python 2.

Would that warrant bumping the major version? Dropping python 2 support that is

Probably? Are we even sure if the current version actually still works on Python 2/Django 1.11? I wouldn't be surprised if it doesn't and just nobody noticed, in which case I'd say it's fine to do in the current version. But otherwise you're right, it should be a new version, if only to make a clean break.

Would it be reasonable to merge this in now to allow Django 3.0/3.1 compatibility, and then worry about removing Python 2 support later? Unless there's already an upgrade effort underway.

Has any decision been made about this? django-seeker has been the only roadblock to our project's Django 3.1 upgrade for a while now.

Even if you don't want to go through everything right now, I'd still say just get rid of python_2_unicode_compatible instead of changing to import from six. But even leaving it in, I wouldn't merge this yet - you'd need to add six to the install_requires if you plan to use it.

six is already being used in other places in this project, so I assumed (perhaps incorrectly) that that wouldn't be an issue.
https://github.com/imsweb/django-seeker/blob/6.0/seeker/facets.py
https://github.com/imsweb/django-seeker/blob/6.0/seeker/mapping.py
https://github.com/imsweb/django-seeker/blob/6.0/seeker/views.py
https://github.com/imsweb/django-seeker/blob/6.0/seeker/templatetags/seeker.py
If you would prefer, I can go through and remove all references to six. Thoughts?

This may have been a safer bet in the past, but nowadays with Python 2 no longer supported, I wouldn't rely on having six through a dependency without explicitly specifying it.
I've already advocated for dropping Python 2 support (which would include removing six), but ultimately I'm not actively using this project so I don't think the final decision should be mine - @lefcourn or @tomlinsj have any thoughts?

Jake and I agree that the proper path is removing python 2 (especially if we have an implicit requirement on six). I think we should bump to a new major number, just cause it's a significant change (even if only on paper).

We decided to just bump to 6.6 for this since seeker is currently version matched to ES (6).


Separate SegmentDirectoryLoader and tierBackend concepts

Right now the concept of tier storage backend and segmentDirectoryLoader have gotten mixed. Cleaning that up to have SegmentDirectoryLoader identifiable by the segment.directory.loader property and moving tier.backend and tier.properties to the table config.

Codecov Report

Merging #7737 (b34ff0a) into master (91d2a95) will decrease coverage by 56.92%.
The diff coverage is 0.82%.

@@              Coverage Diff              @@
##             master    #7737       +/-   ##
=============================================
- Coverage     71.50%   14.57%   -56.93%
+ Complexity     4033       80     -3953
=============================================
  Files          1581     1529       -52
  Lines         80472    78429     -2043
  Branches      11954    11736      -218
=============================================
- Hits          57540    11434    -46106
- Misses        19037    66155    +47118
+ Partials       3895      840     -3055

Flag
Coverage Δ

integration1
?

integration2
?

unittests1
?

unittests2
14.57% <0.82%> (+0.04%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 827c1ce...b34ff0a. Read the comment docs.


Rotate display view

Hey,
is it possible to rotate the display view?
Thanks

i want to know this, too!  :+1:

nope! the 'orientation' is only the one way


Intermittent failure of quic_multistream_test on Windows

This is a new QUIC CI failure as of today:
https://github.com/openssl/openssl/actions/runs/6480442670/job/17595984416

ERROR: (uint64_t) 'error_code == cc_info.error_code' failed @ ..\test\quic_multistream_test.c:1643
[5] compared to [10]

The test expects QUIC_ERR_STREAM_STATE_ERROR (5), but we seem to get QUIC_ERR_PROTOCOL_VIOLATION (10)

Another instance of the same failure happening on MacOS https://github.com/openssl/openssl/actions/runs/6602304852/job/17942081332

Just to add to this, both NonStop x86 and ia64 platforms hang in this test when using SPT threads (not helpful, the process is waiting to receive a message, from this trace:
Procedure call trace:
  AsmBreakDispatchNoRelink + 0x10 (Milli)
  $n_NSK_Event_Wait + 0x140 (Milli)
  Timer_WaitOnEmbeddedTLE_ + 0xA0 (SLr)
  PROCESS_WAIT_ + 0x80 (SLr)
  AWAITIOX + 0x1C60 (SLr)
  FILE_COMPLETE_ + 0x790 (SLr)
  $n_EnterPriv + 0x280 (Milli)
  cma__io_available + 0x1C0 (DLL zsptdll)
  cma___null_thread + 0x100 (DLL zsptdll)
  cma__thread_base + 0x200 (DLL zsptdll)
  GTHREAD_START_ + 0xD0 (SLr)

There is an error EWOULDBLOCK on the AF_INET TCP socket in this test. I'm not at all certain why a AF_INET socket is being used. We have access to PRNGD with AF_UNIX.

This should be fixed by #22578.

This should be fixed by #22578.

Will hold off on my other issue in hope. Thanks.

On 3.2.0-beta1, to add to this, both NonStop x86 and ia64 platforms hang in this test when using SPT threads (not helpful, the process is waiting to receive a message, from this trace. We did not see this with alpha2.

This sounds like a completely different issue. @rsbeckerca - can you raise a new issue for this?

On 3.2.0-beta1, to add to this, both NonStop x86 and ia64 platforms hang in this test when using SPT threads (not helpful, the process is waiting to receive a message, from this trace. We did not see this with alpha2.

This sounds like a completely different issue. @rsbeckerca - can you raise a new issue for this?

@mattcaswell Opened as #22588


Fix segfault

This affected me on MacOS.
Apple clang version 11.0.0 (clang-1<IP_ADDRESS>)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: malthe sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Note sure why Windows-builds are failing, va_copy should be supported.

Hello @malthe , thanks for the PR.
Is this the patch for fixing the segmentation fault on MacOS when network tracing(debug) is turned on?

@yunhaoling yes, this happens if you have logging enabled.

Thanks @malthe!
Hey @lmazuel @annatisch , can you take a look at this PR?

Thanks for your contribution @malthe!
@yunhaoling - before we get too far we need to figure out why the build is failing on Windows, or if this is unsupported (and unneeded) on Windows - we'll need a way where this is only used for OSX.

@annatisch @malthe
from the logging info, the problem is that  va_copy can't be resolved.
To build uamqp whl for py2.7 on Windows, we're using Visual C++ 9.0 -- my guessing is that va_copy isn't provided in VC++ 9.0.
From this article: https://stackoverflow.com/questions/558223/va-copy-porting-to-visual-c, maybe we should not use the macro? just va_copy = va seems to work as well.
d:\a\1\s\uamqp\c_uamqp.c(88052) : warning C4700: uninitialized local variable '__pyx_v_va_copy' used
C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC\Bin\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:build\temp.win32-2.7\Release/cmake /LIBPATH:build\temp.win32-2.7\Release/cmake/deps/azure-c-shared-utility/ /LIBPATH:build\temp.win32-2.7\Release/cmake/Debug/ /LIBPATH:build\temp.win32-2.7\Release/cmake/Release/ /LIBPATH:build\temp.win32-2.7\Release/cmake/deps/azure-c-shared-utility/Debug/ /LIBPATH:build\temp.win32-2.7\Release/cmake/deps/azure-c-shared-utility/Release/ "/LIBPATH:C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC\Lib" "/LIBPATH:C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\WinSDK\Lib" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x86" /LIBPATH:C:\hostedtoolcache\windows\Python\2.7.17\x86\libs /LIBPATH:C:\hostedtoolcache\windows\Python\2.7.17\x86\PCbuild /LIBPATH:C:\hostedtoolcache\windows\Python\2.7.17\x86\PC\VS9.0 uamqp.lib aziotsharedutil.lib AdvAPI32.lib Crypt32.lib ncrypt.lib Secur32.lib schannel.lib RpcRT4.lib WSock32.lib WS2_32.lib /EXPORT:initc_uamqp build\temp.win32-2.7\Release\uamqp\c_uamqp.obj /OUT:build\lib.win32-2.7\uamqp\c_uamqp.pyd /IMPLIB:build\temp.win32-2.7\Release\uamqp\c_uamqp.lib /MANIFESTFILE:build\temp.win32-2.7\Release\uamqp\c_uamqp.pyd.manifest
   Creating library build\temp.win32-2.7\Release\uamqp\c_uamqp.lib and object build\temp.win32-2.7\Release\uamqp\c_uamqp.exp
c_uamqp.obj : error LNK2019: unresolved external symbol _va_copy referenced in function ___pyx_f_5uamqp_7c_uamqp_vprintf_alloc
build\lib.win32-2.7\uamqp\c_uamqp.pyd : fatal error LNK1120: 1 unresolved externals
error: command 'C:\\Program Files (x86)\\Common Files\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\link.exe' failed with exit status 1120

Why not using the recommended approach with va_start instead?
http://www.cplusplus.com/reference/cstdio/vsnprintf/
void PrintFError ( const char * format, ... )
{
  char buffer[256];
  va_list args;
  va_start (args, format);
  vsnprintf (buffer,256,format, args);
  perror (buffer);
  va_end (args);
}

Why not using the recommended approach with va_start instead?
http://www.cplusplus.com/reference/cstdio/vsnprintf/
void PrintFError ( const char * format, ... )
{
  char buffer[256];
  va_list args;
  va_start (args, format);
  vsnprintf (buffer,256,format, args);
  perror (buffer);
  va_end (args);
}

@lmazuel that example reserves a fixed size buffer which is not really what we want here.

@annatisch , I installed the Visual Studio 2008 (9.0) and checked the header file "stdarg.h" under Microsoft Visual Studio 9.0\VC\include, va_copy is not provided in VC 9.0.
stdarg header(from vc 9.0).txt

Hello @malthe, based on your finding, I tried to add extra header file to enable building on windows python2.7.
https://github.com/Azure/azure-uamqp-python/blob/4c4b18ddd11eaa256eeae5949bacc829ac0ceb58/src/vendor/inc/c_xlogging.pxd#L33-L34
https://github.com/Azure/azure-uamqp-python/blob/4c4b18ddd11eaa256eeae5949bacc829ac0ceb58/src/vendor/inc/va_copy_patch.h#L1-L5
Would you be able to apply the change in your PR? you own the credit for this :)


[Metrics] Add Depth Loss

🚀 Feature

Add depth-loss to PT-lighting since image-gradient is being added. As discussed here.
Motivation

Depth-Loss is one of the metrics that's often used in depth-estimation-oriented papers (DenseDepth etc). The addition of depth-loss to PT-lightning out-of-box would greatly help developers and researchers
Pitch

Make depth-loss available out-of-box in PT-Lightning
Additional context

This is a continuation of PR #5056

@SkafteNicki I am kinda at loss here. The depth loss as defined in the paper, is given as follows,
L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ)
where Ldepth is the L1 pointwise loss between the prediction and the ground truth.
Ldepth is the L1 pointwise loss between the image gradients of the prediction and the ground truth
LSSIM is the SSIM index between the prediction and the ground truth
My question is, is depth-loss a bit too specific to be included out of the box?

@SkafteNicki I am kinda at loss here. The depth loss as defined in the paper, is given as follows,
L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ)
where Ldepth is the L1 pointwise loss between the prediction and the ground truth.
Ldepth is the L1 pointwise loss between the image gradients of the prediction and the ground truth
LSSIM is the SSIM index between the prediction and the ground truth
My question is, is depth-loss a bit too specific to be included out of the box?

Hey @pranjaldatta,
I would say it might be too specific. If @SkafteNicki feels the same way, let's close this issue. Otherwise, would you mind making a contribution ?
Best,
T.C

Hey @pranjaldatta,
I would say it might be too specific. If @SkafteNicki feels the same way, let's close this issue. Otherwise, would you mind making a contribution ?
Best,
T.C

Sure, that works fine! Waiting for @SkafteNicki's POV

Sure, that works fine! Waiting for @SkafteNicki's POV

@pranjaldatta so I agree that metric would be too specific to implement. However, I talked with @justusschock at some point that our metrics should support composition such that the can be added together, multiplied by constants ect. In this way the metric in question here could constructed by
new_metric = lambda * pl.metrics.MeanAbsoluteError() + pl.metrics.GradientLoss() + pl.metrics.SSIM()

however, we have hesitated to implement this because we needed good usecases, but the above constitutes a very good one IMO.
Therefore, lets keep the issue open for now, so we dont forget about this feature.

@pranjaldatta so I agree that metric would be too specific to implement. However, I talked with @justusschock at some point that our metrics should support composition such that the can be added together, multiplied by constants ect. In this way the metric in question here could constructed by
new_metric = lambda * pl.metrics.MeanAbsoluteError() + pl.metrics.GradientLoss() + pl.metrics.SSIM()

however, we have hesitated to implement this because we needed good usecases, but the above constitutes a very good one IMO.
Therefore, lets keep the issue open for now, so we dont forget about this feature.

@SkafteNicki That's great to hear, if it's okay I would like to work on a PR regarding the same.

@SkafteNicki That's great to hear, if it's okay I would like to work on a PR regarding the same.

@pranjaldatta feel free to send a PR :]

@pranjaldatta feel free to send a PR :]

Hi @pranjaldatta,
Just played a bit around with it. I would propose we add something like the following class:
class CompositionalMetric(Metric):
    def __init__(
            self,
            metric_A: Optional[Metric] = None,
            metric_B: Optional[Metric] = None,
            metric_C: Optional[Metric] = None,
            metric_D: Optional[Metric] = None,
            alpha: float = 1.0,
            beta: float = 1.0
    ):
        """ Implements composition of metrics of the following form:
                alpha * A * B  + beta * C / D
            where A, B, C, D are metrics and alpha, beta are scalars.

            Addition:
                CompositionalMetric(A, None, B, None)
            Multiplication by metrics
                CompositionalMetric(A, B, None, None)
            Multiplication by scalar
                CompositionalMetric(A, None, None, None, alpha)
            Division of metrics
                CompositionalMetric(None, None, A, B)
        """
        super().__init__()
        if metric_A is not None:
            self.metric_A = metric_A
        if metric_B is not None:
            self.metric_B = metric_B
        if metric_C is not None:
            self.metric_C = metric_C
        if metric_D is not None:
            self.metric_D = metric_D
        if metric_A is None and metric_B is None and metric_C is None and metric_D is None:
            raise ValueError('Atleast one metric should be provided')

        self.alpha = alpha
        self.beta = beta

    def update(self, *args, **kwargs):
        if self.metric_A is not None:
            self.metric_A.update(*args, **kwargs)
        if self.metric_B is not None:
            self.metric_B.update(*args, **kwargs)
        if self.metric_C is not None:
            self.metric_C.update(*args, **kwargs)
        if self.metric_D is not None:
            self.metric_D.update(*args, **kwargs)

    def compute(self):
        if self.metric_A is not None:
            val_a = self.metric_A.compute()
        else:
            val_a = 1.0
        if self.metric_B is not None:
            val_b = self.metric_B.compute()
        else:
            val_b = 1.0
        # If neither metric_A or metric_B is defined set to 0
        if self.metric_A is None and self.metric_B is None:
            val_a = val_b = 0.0
        if self.metric_C is not None:
            val_c = self.metric_C.compute()
        else:
            val_c = 1.0
        if self.metricD is not None:
            val_d = self.metric_d.compute()
            if val_d == 0.0:
                raise ValueError('Division by 0')
        else:
            val_d = 1.0
        # If neither metric_C or metric_D is defined make sure the term is 0
        if self.metric_A is None and self.metric_B is None:
            val_c = 0.0
            val_d = 1.0

        return self.alpha * val_a * val_b + self.beta * val_c / val_d

    def reset(self):
        if self.metric_A is not None:
            self.metric_A.reset()
        if self.metric_B is not None:
            self.metric_B.reset()
        if self.metric_C is not None:
            self.metric_C.reset()
        if self.metric_D is not None:
            self.metric_D.reset()

And then implement the different __add__, __mul__ ect methods in the base metric class as:
    def __add__(self, other): # addition from left
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = self,
                                       metric_C = other)
        elif isinstance(other, Number):
            return CompositionalMetric(metric_A = self,
                                       beta = other)
        else:
            raise ValueError('invalid addtion')

    def __radd__(self, other): # addition from right
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = other,
                                       metric_C = self)
        elif isinstance(other, Number):
            return CompositionalMetric(metric_A = self,
                                       beta = other)
        else:
            raise ValueError('invalid addtion')

    def __mul__(self, other): # multiplication from left
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = self,
                                       metric_B = other)
        else:
            return CompositionalMetric(metric_A = self,
                                       alpha = other)

    def __rmul__(self, other): # multiplication from right
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = other,
                                       metric_B = self)
        else:
            return CompositionalMetric(metric_A = self,
                                       alpha = other)

Hi @pranjaldatta,
Just played a bit around with it. I would propose we add something like the following class:
class CompositionalMetric(Metric):
    def __init__(
            self,
            metric_A: Optional[Metric] = None,
            metric_B: Optional[Metric] = None,
            metric_C: Optional[Metric] = None,
            metric_D: Optional[Metric] = None,
            alpha: float = 1.0,
            beta: float = 1.0
    ):
        """ Implements composition of metrics of the following form:
                alpha * A * B  + beta * C / D
            where A, B, C, D are metrics and alpha, beta are scalars.

            Addition:
                CompositionalMetric(A, None, B, None)
            Multiplication by metrics
                CompositionalMetric(A, B, None, None)
            Multiplication by scalar
                CompositionalMetric(A, None, None, None, alpha)
            Division of metrics
                CompositionalMetric(None, None, A, B)
        """
        super().__init__()
        if metric_A is not None:
            self.metric_A = metric_A
        if metric_B is not None:
            self.metric_B = metric_B
        if metric_C is not None:
            self.metric_C = metric_C
        if metric_D is not None:
            self.metric_D = metric_D
        if metric_A is None and metric_B is None and metric_C is None and metric_D is None:
            raise ValueError('Atleast one metric should be provided')

        self.alpha = alpha
        self.beta = beta

    def update(self, *args, **kwargs):
        if self.metric_A is not None:
            self.metric_A.update(*args, **kwargs)
        if self.metric_B is not None:
            self.metric_B.update(*args, **kwargs)
        if self.metric_C is not None:
            self.metric_C.update(*args, **kwargs)
        if self.metric_D is not None:
            self.metric_D.update(*args, **kwargs)

    def compute(self):
        if self.metric_A is not None:
            val_a = self.metric_A.compute()
        else:
            val_a = 1.0
        if self.metric_B is not None:
            val_b = self.metric_B.compute()
        else:
            val_b = 1.0
        # If neither metric_A or metric_B is defined set to 0
        if self.metric_A is None and self.metric_B is None:
            val_a = val_b = 0.0
        if self.metric_C is not None:
            val_c = self.metric_C.compute()
        else:
            val_c = 1.0
        if self.metricD is not None:
            val_d = self.metric_d.compute()
            if val_d == 0.0:
                raise ValueError('Division by 0')
        else:
            val_d = 1.0
        # If neither metric_C or metric_D is defined make sure the term is 0
        if self.metric_A is None and self.metric_B is None:
            val_c = 0.0
            val_d = 1.0

        return self.alpha * val_a * val_b + self.beta * val_c / val_d

    def reset(self):
        if self.metric_A is not None:
            self.metric_A.reset()
        if self.metric_B is not None:
            self.metric_B.reset()
        if self.metric_C is not None:
            self.metric_C.reset()
        if self.metric_D is not None:
            self.metric_D.reset()

And then implement the different __add__, __mul__ ect methods in the base metric class as:
    def __add__(self, other): # addition from left
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = self,
                                       metric_C = other)
        elif isinstance(other, Number):
            return CompositionalMetric(metric_A = self,
                                       beta = other)
        else:
            raise ValueError('invalid addtion')

    def __radd__(self, other): # addition from right
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = other,
                                       metric_C = self)
        elif isinstance(other, Number):
            return CompositionalMetric(metric_A = self,
                                       beta = other)
        else:
            raise ValueError('invalid addtion')

    def __mul__(self, other): # multiplication from left
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = self,
                                       metric_B = other)
        else:
            return CompositionalMetric(metric_A = self,
                                       alpha = other)

    def __rmul__(self, other): # multiplication from right
        if isinstance(other, Metric):
            return CompositionalMetric(metric_A = other,
                                       metric_B = self)
        else:
            return CompositionalMetric(metric_A = self,
                                       alpha = other)

Hey @SkafteNicki, that's a Great Idea! I do have a couple of question regarding the same,

Just to be clear, do you propose this as a general feature that lets users build compositional metrics, or do propose this only for this specific loss function?

Regarding the skeleton metric equation alpha * A * B  + beta * C / D, wouldn't it be better if the skeleton equation is something along the lines of  alpha * MetricA + beta * MetricB +gamma * Metric C + ..... I say this because isn't it more likely that compositional metrics would most commonly be composed via weighted addition (like L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ) ) instead of multiplication or division of resultant metric values. I may be wrong though.

Hey @SkafteNicki, that's a Great Idea! I do have a couple of question regarding the same,

Just to be clear, do you propose this as a general feature that lets users build compositional metrics, or do propose this only for this specific loss function?

Regarding the skeleton metric equation alpha * A * B  + beta * C / D, wouldn't it be better if the skeleton equation is something along the lines of  alpha * MetricA + beta * MetricB +gamma * Metric C + ..... I say this because isn't it more likely that compositional metrics would most commonly be composed via weighted addition (like L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ) ) instead of multiplication or division of resultant metric values. I may be wrong though.

@SkafteNicki I would only add a compositional metric, that gets two metrics and an operation. For more advanced things, you will then compose multiple compositional metrics. Interface would then look like that:
class CompositionalMetric(Metric):
    def __init__(self, operator, metric_a: Union[Metric, int, float, torch.Tensor], metric_b: Union[Metric, int, float, torch.Tensor])
        super().__init__()

        self.op = operator

        if isinstance(metric_a, torch.Tensor):
            self.register_buffer('metric_a', metric_a)
        else:
            self.metric_a = metric_a

        if isinstance(metric_b, torch.Tensor):
            self.register_buffer('metric_b', metric_b)
        else:
            self.metric_b = metric_b

    def update(self, *args, **kwargs):

        # maybe add some parsing for kwargs as in metric collection?
        if isinstance(self.metric_a, Metric):
            self.metric_a.update(*args, **kwargs)

        if isinstance(self.metric_b, Metric):
            self.metric_b.update(*args, **kwargs)

    def compute(self, *args, **kwargs):

        # also some parsing for kwargs?
        if isinstance(self.metric_a, Metric):
            val_a = self.metric_a.compute(*args, **kwargs)
        else:
            val_a = self.metric_a

        if isinstance(self.metric_b, Metric):
            val_b = self.metric_b.update(*args, **kwargs)
        else:
            val_b = self.metric_b

        return self.op(val_a, val_b)

    def reset(self):
        if isinstance(self.metric_a, Metric):
            self.metric_a.reset()

        if isinstance(self.metric_b, Metric):
            self.metric_b.reset()

and the implementation of `add would look like this:
def __add__(self, other: Union[Metric, int, float, torch.Tensor]):
    return CompositionalMetric(torch.add, self, other)

That way you could also add some more complex operators if necessary and it supports all tyes, the torch operators support out of the box.

@SkafteNicki I would only add a compositional metric, that gets two metrics and an operation. For more advanced things, you will then compose multiple compositional metrics. Interface would then look like that:
class CompositionalMetric(Metric):
    def __init__(self, operator, metric_a: Union[Metric, int, float, torch.Tensor], metric_b: Union[Metric, int, float, torch.Tensor])
        super().__init__()

        self.op = operator

        if isinstance(metric_a, torch.Tensor):
            self.register_buffer('metric_a', metric_a)
        else:
            self.metric_a = metric_a

        if isinstance(metric_b, torch.Tensor):
            self.register_buffer('metric_b', metric_b)
        else:
            self.metric_b = metric_b

    def update(self, *args, **kwargs):

        # maybe add some parsing for kwargs as in metric collection?
        if isinstance(self.metric_a, Metric):
            self.metric_a.update(*args, **kwargs)

        if isinstance(self.metric_b, Metric):
            self.metric_b.update(*args, **kwargs)

    def compute(self, *args, **kwargs):

        # also some parsing for kwargs?
        if isinstance(self.metric_a, Metric):
            val_a = self.metric_a.compute(*args, **kwargs)
        else:
            val_a = self.metric_a

        if isinstance(self.metric_b, Metric):
            val_b = self.metric_b.update(*args, **kwargs)
        else:
            val_b = self.metric_b

        return self.op(val_a, val_b)

    def reset(self):
        if isinstance(self.metric_a, Metric):
            self.metric_a.reset()

        if isinstance(self.metric_b, Metric):
            self.metric_b.reset()

and the implementation of `add would look like this:
def __add__(self, other: Union[Metric, int, float, torch.Tensor]):
    return CompositionalMetric(torch.add, self, other)

That way you could also add some more complex operators if necessary and it supports all tyes, the torch operators support out of the box.

Hey @SkafteNicki, that's a Great Idea! I do have a couple of question regarding the same,
1. Just to be clear, do you propose this as a general feature that lets users build compositional metrics, or do propose this only for this specific loss function?

2. Regarding the skeleton metric equation `alpha * A * B  + beta * C / D`, wouldn't it be better if the skeleton equation is something along the lines of  `alpha * MetricA + beta * MetricB +gamma * Metric C + ....`. I say this because isn't it more likely that compositional metrics would most commonly be composed via weighted addition (like `L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ) `) instead of multiplication or division of resultant metric values. I may be wrong though.

General feature
The idea would be that the user would not have to use CompositionalMetric themself since we would implement __add__, __mul__ ect in the base class that would allow users to simply add together metrics: metric = metric_1 + metric_2

@justusschock your proposed solution is soo much better than mine. I propose that you create the PR for this feature :]

Hey @SkafteNicki, that's a Great Idea! I do have a couple of question regarding the same,
1. Just to be clear, do you propose this as a general feature that lets users build compositional metrics, or do propose this only for this specific loss function?

2. Regarding the skeleton metric equation `alpha * A * B  + beta * C / D`, wouldn't it be better if the skeleton equation is something along the lines of  `alpha * MetricA + beta * MetricB +gamma * Metric C + ....`. I say this because isn't it more likely that compositional metrics would most commonly be composed via weighted addition (like `L(y, yˆ) = λLdepth(y, yˆ) + Lgrad(y, yˆ) + LSSIM(y, yˆ) `) instead of multiplication or division of resultant metric values. I may be wrong though.

General feature
The idea would be that the user would not have to use CompositionalMetric themself since we would implement __add__, __mul__ ect in the base class that would allow users to simply add together metrics: metric = metric_1 + metric_2

@justusschock your proposed solution is soo much better than mine. I propose that you create the PR for this feature :]

General feature
The idea would be that the user would not have to use CompositionalMetric themself since we would implement __add__, __mul__ ect in the base class that would allow users to simply add together metrics: metric = metric_1 + metric_2

Gotcha!

General feature
The idea would be that the user would not have to use CompositionalMetric themself since we would implement __add__, __mul__ ect in the base class that would allow users to simply add together metrics: metric = metric_1 + metric_2

Gotcha!

Closing this as PR #5464 now allows for composition of such complex metrics.

Closing this as PR #5464 now allows for composition of such complex metrics.


email not working in prod although exception storing in db

Hi
I configured everything fine and even the exceptions saves in "vendor_tylercd100_lern_exceptions" table. In local-host (xamp server) it simply sends emails without any problem, but not working in prod!

can Anyone help???!!!

Hey Mo,
I'm very sorry but I just got back from vacation yesterday and did not see your request for help until now.
Is your configuration set to use native mail or SMTP?
if smtp is false then you will need to properly install the recommended packages for sending native mail on you production machine
if smtp is true then you will need to properly configure your smtp settings found in config/mail.php

Hi Tyler,
I should check with guys if it is native mail or SMTP and I will get back.

What version of Laravel are you using?
What are you using for your SMTP server?
Have you tried using a tool like https://mailtrap.io/ for email testing?
Also check this out for more help with sending mail with laravel
https://laravel.com/docs/5.4/mail#mail-and-local-development

well SMTP server is our default config in our project and in other module, mailing works fine, we don't want to use mailtrap in production. but mailtrap works in localhost like I mentioned before
what do you think?
Thanks

So, SMTP works just fine in production for your other emails? What version of Laravel are you using?

We are using the  version 5.3.30

Hey Mo,
So I found some time to test it out on 5.3.30 and I am having no issues getting it to send an email using SMTP.
Can you try verifying your mail settings for production? config/mail.php

Still I have the problem

this is part of my code in handler.php
protected $dontReport = [
\Illuminate\Auth\AuthenticationException::class,
\Illuminate\Auth\Access\AuthorizationException::class,
\Symfony\Component\HttpKernel\Exception\HttpException::class,
\Illuminate\Database\Eloquent\ModelNotFoundException::class,
\Illuminate\Session\TokenMismatchException::class,
\Illuminate\Validation\ValidationException::class,
];
/**
 * Report or log an exception.
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param  \Exception  $exception
 * @return void
 */
public function report(Exception $e)
{
    if ($this->shouldReport($e)) {

        //Check to see if LERN is installed otherwise you will not get an exception.
        if (app()->bound("lern")) {
            app()->make("lern")->handle($e); //Record and Notify the Exception

            /*
            OR...
            app()->make("lern")->record($e); //Record the Exception to the database
            app()->make("lern")->notify($e); //Notify the Exception
            */
        }
    }
    //parent::report($e);
    return parent::report($e);
}

recently after some manipulation sometimes when Laravel throwing error it says undefined index to  !

By the way our user/pass is null
MAIL_DRIVER=smtp
MAIL_HOST=xx.xx.xx.xx
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=

It is fixed now our smtp configuration was not good


Bad interaction between unused variable elimination and "let x = if ... in" hoisting

This issue is based on the following comment in one of the HACL PRs: https://github.com/hacl-star/hacl-star/pull/611#discussion_r974402228
The problematic code has the shape
let c = BN.bn_add args in Ghost.hide c, where bn_add is inline_for_extraction, and consists of an if_then_else statement.
After extraction, the resulting code has shape
uint64_t c1;
if e {
  use of c0
} else {
  use of c0
}
c1 = c0;
return;

As far as I understand, c1 is introduced as a temporary variable to handle let c = if e then .. else ... in, but is not used afterwards. It could be removed as part of an unused variable elimination pass.

This might be improved by the recent fix to unused variable elimination. @R1kM can you tell me whether this is still valid?


Understand GitHub PR merges

Basic issue for me to learn GitHub "Squash & Merge" vs. "Rebase & Merge"

My first PR attempt (#1) used "Squash & Merge" onto a user branch. It did NOT create a merge commit, which is great. It used my base commit and added the PR into it (although into the title and I wonder I think I prefer the body).

Rebase and merge fails signing. I think this relates to the docs I read that mentioned something along the lines of "GitHub will always rewrite the commit SHA and author information" instead of doing a clean fast-forward when possible.

So, squash and merge is the way. Although it would be nice to have a single PR w/ intentional multiple commits, but oh well.

Also, maybe only add the GitHub issue in the merged commit 🤔. B/c otherwise it gets linked but probably shouldn't (it's in-flight work; we want the PR + merged/pushed/final commit linked)

Final step: Understand the different squashed commit message defaults (related docs)

Done. Squash and merge matches squash and rebase flow I prefer.


Discussion: Upgrading Aruba in GLI

Hi there,
I was wondering if we could discuss trying to bump the version of aruba currently in use in gli
Ideally first bumping to 0.8.0 and then to 0.14.9, from there supporting the latest 0.x version.
The reason is that we're trying to get all gems which are large and using aruba using a 0.14.x version where a lot of the bugfix and deprecation PR's are going in. As we're looking to release 1.0 of aruba in the near future.
If you could have a stab or let us know what we can do to help that would be great. It might be that the upgrade works flawlessly, if so that's awesome.
Try 0.8.0 and then 0.14.9 as the first two static upgrades would be my advice. Any other queries ask away I'll try help
Luke

Hey. Yeah, I have tried this a few times over the years (!).  The main issue is that Aruba seems to have changed how it sets the path for executing commands and for whatever reason it's incompatible with GLI and I could not make it work.
I just tried to update to 0.8.0 and this is the issue I hit.  I'm sure it's fixable, but I haven't had time to work with it.

That's fine. If there's a PR or something where I can view failures I can try co-operate e.t.c. Or if you enable me to have push privileges to a branch I can try do something.
Happy to help, just not sure where I need to do whatever

I have removed aruba in favor of integration tests.  They don't cover as much as the aruba ones but I think they will make it easier to maintain this app with one less dependency.  See #303


werkzeug.BadRequest is thrown when wrong key is provided in a .format() for a custom exception

I'm using flask to make an api and JWT to generate oauth tokens.
When I want to check if the uuid and the secret inside the token match the ones in the DB, I have my condition and on fail, I raise a custon app.errorhandler() exception called error.badrequest.BadRequestError. Anyway, the message I was providing was
        if user.secret != data['client_secret']:
                raise badrequest.BadRequestError(
                    "Can't generate oauth token: `client_secret` {} not found "
                    "for `client_id` {}.".format(data['client_secret'],
                                                 data['client_id']),
                    "Check the `client_secret` and try again"
                )

And the code for the badrequest:
from flask import jsonify

from instant_server import application

class BadRequestError(Exception):
    """
    This is the BadRequestError class for the Exception.
    """
    def __init__(self, msg, solution):
        self.msg = msg
        self.solution = solution
    pass

@application.errorhandler(BadRequestError)
def generate_badrequest(error):
    """
    This is the 400 response creator. It will create a 400 response along with
    a custom message and the 400 code

    :param error: The error body
    :return: Returns the response formatted
    """

    status_code = 400
    success = False
    json = {
        'success': success,
        'error': {
            'type': error.__class__.__name__,
            'message': error.msg,
            'solution': error.solution
        },
        'code': status_code

    }
    resp = jsonify(json)
    resp.status_code = status_code

    return resp

Why is it throwing a 400
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>

Bad Request

The browser (or proxy) sent a request that this server could not understand.

when it's simply an error where X is not found in my .format(data[X]) ?

IMO it should throw a 500

You didn't show what data is, but it's likely a MultiDict, which raises a 400 error on missing key access. The message it shows in debug mode has been improved in Flask 1.0.
Please use Stack Overflow for questions about your own code. This tracker is for issues related to the project itself. Be sure to include a minimal, complete, and verifiable example.


Workplanes ignored in function/class

from build123d import *

def workplanes_ignored():
    with Workplanes(Plane.XZ):
        with BuildSketch() as sk:
            Rectangle(10, 10)
            Fillet(*sk.vertices(), radius=1)
    return sk.sketch

sk = workplanes_ignored()

show_object(sk)

Workplanes have been eliminated with commit c5edfea8e7d457ad5756ec4192431e16a96f5c57