New UI for blending editor

Normally, users are expected to use the blending editor in the simplified mode. In this mode, the user chooses media range, the width of the widget and the relative order of the widget.

The pixel size of the responsive media ranges changes according to the relative size of the partial. I.e. if the size of the partial is approximately 50% of the size of the browser, the pixel sizes are halved.

@Starcounter-Jack can you also make an image with opened "advanced" block?
Here http://juicy.github.io/juicy-tile-editor/simple.html you can see what is included under "More" and "Advanced" buttons.

Will do

@Starcounter-Jack nice! do you have an SVG or AI for that?

Cool! :)

if the size of the partial is approximately 50% of the size of the browser, the pixel sizes are halved. In this way, the responsive symbols will be operational also for nested partials

Theoretically partial size may also be highly flexible, but I think for basic view, providing defaults in such way should be really enough, as long, as:

In advanced mode, I suggest that the ranges could be specified manually.

The other question is that we would not be able to react on partial re-sizes within parent's range without element-queries, but we could react once parent is repacked due to it's media-query tick.
Maybe we could make something to emphasize the current value of a relative priority? As it is 0-1 number we could simply stroke some indicator (bullet/label/buttons) with color in opacity given by priority? For example button up will make it hotter/red, and button down cooler/blue/white

Adobe Illustrator file:
https://www.dropbox.com/s/x9aixg36xqhpzkq/BlendingEditor.ai?dl=0

Thanks! For the AI! (@miyconst: @andwah should be able to convert it to other formats)

Maybe we could make something to emphasize the current value of a relative priority? As it is 0-1 number we could simply stroke some indicator (bullet/label/buttons) with color in opacity given by priority? For example button up will make it hotter/red, and button down cooler/blue/white

Isn't it now obvious that the UP (▲) buttons moves elements closer to the top and DOWN (▼) closer to the bottom? For me that's more obvious than the hot/cold methaphor.
Please let's not discuss breakpoint architecture in this issue, because this will get really messy up here. @tomalec I propose that you write how you propose this to work in the GitBook. I will give you access to it.

... For me that's more obvious than the hot/cold methaphor.

Agree. For me colors would be even more confusing.

@miyconst: @andwah should be able to convert it to other formats

I can look for some online tools, but I don't have PS or AI.
@Starcounter-Jack how this image should zoom to 1920 px width screen? It looks huge when stretched to the entire width. Can you provide some dimensions?

@andwah has AI, so he's better than any online tool :)

@warpech where do you want me to put the converted file?

@andwah could you please save each element as an png icon and put to dropbox?

Isn't it now obvious that the UP (▲) buttons moves elements closer to the top and DOWN (▼) closer to the bottom? For me that's more obvious than the hot/cold methaphor.

Me too.
Nice flicks @Starcounter-Jack.

Parent issue: https://github.com/Juicy/juicy-tile-editor/issues/98

I like it! The only thing which confuses me is tab selection. Looks like "out of design".
@andwah could you please cut the icons off the AI file and save in png format?

@miyconst Sure,

@miyconst How do you want this part cut?

@andwah no, I don't need that. It could be done with css, even though I don't yet understand what it shows :)

@miyconst You can find the images in my dropbox/BlendingEditor folder

Good! Thank you!

I think we should really use SVG not PNG.

Exported the images in  PNG and SVG format, files can be in my dropbox "BlendingEditor" folder.

Super, thanks!
Regarding Outline and Fill, they should show the current color choice.
Readability of black text on dark background can be achieved by putting an SVG glow around the text or by using simple JavaScript color inversion (demo)

I'd like to note that techically size given in % and px could be as well fixed and flexible. Are we going to expose this feature in the editr, or do we assume that % means flexible and if someone would like to make a tile one third of a size of its 1235wide container, but fixed, he would need to calculate it by his own?

@tomalec I think, the "Grow with parent" button is "flexible" checkbox, so we do expose this feature.

Sorry, my bad, then we probably do not expose *Adaptive - grow with siblings (within row/col), but as I'm not yet 100% sure if it will be fully supported in -table, maybe we should not bother about it much

Rename Group and Ungroup to Box and Unbox.
Add possibility to create empty boxes. The Box button should be a dropdown with items box selection, new line.

I am closing this issue as it is too long and in Launcher repository. Let's use https://github.com/Juicy/juicy-tile-editor/issues for tracking issues and split them into many small items instead of one huge.


feat(UI): Show the name of the indexes in dataframe widget

          In a next iteration, i propose to nicely show the name of the indexes. For instance,

Originally posted by @thomass-dev in https://github.com/probabl-ai/skore/issues/493#issuecomment-2413829457

It should be pertinent on a dataframe with multi-indexes.
In [6]: import pandas as pd
   ...:
   ...: df = pd.DataFrame([{"age": ">70", "number": "1M", "gender": "M"}])
   ...: df.index = pd.MultiIndex.from_arrays([["france"], ["paris"], ["1"]], names=('country', 'city', 'district'))

In [7]: df
Out[7]:
                        age number gender
country city  district
france  paris 1         >70     1M      M

@anasstarfaoui what do you think? Multi-index means that a row can have a composed identifier.

@sylvaincom @MarieS-WiMLDS is it relevant for a DS to have details over multi-index? Actually, its
https://github.com/probabl-ai/skore/pull/493#issue-2588285175

yes, it can happen sometimes to use dataframes with multi-indexes due to group_by!


App crashes after Webview redirect

Description
The component that renders the WebView logs everything through all of the lifestyle methods (see code below), and crashes right after the render() method is called
Reproduction

Android emulator version <IP_ADDRESS>
react-native-cli: 1.0.0
react-native: 0.36.1
Operating System: Mac OSX Sierra 10.12

Code
'use strict';

import React, {Component} from 'react';
import {connect} from 'react-redux';
import {Keyboard, Dimensions, Image, Platform, WebView} from 'react-native';

import {pushNewRoute, replaceRoute} from '../../actions/route';

import {Container, Content, Text, InputGroup, Input, Button, Icon, View} from 'native-base';
import {Grid, Col, Row} from "react-native-easy-grid";

import {observer, inject} from 'mobx-react/native';
import {observable} from 'mobx';

@inject('taskStore') @observer
class Authenticate extends Component {
  stop
  isAuthenticated

  constructor(props) {
    super(props);

    // Hack to prevent router from sending multiple requests
    //this.stop = true;

    this.state = {
      email: '',
      password: '',
      visibleHeight: Dimensions.get('window').height,
      offset: {
        x: 0,
        y: 0
      }
    };
    this.constructor.childContextTypes = {
      theme: React.PropTypes.object,
    }
    console.log(this, "component constructed")

  }

  componentWillMount() {
    console.log(this, "component mounted")
    Keyboard.addListener('keyboardWillShow', this.keyboardWillShow.bind(this))
    Keyboard.addListener('keyboardWillHide', this.keyboardWillHide.bind(this))
  }

  keyboardWillShow(e) {
    let newSize = Dimensions.get('window').height - e.endCoordinates.height
    this.setState({offset: {y: 80}});
  }

  keyboardWillHide(e) {
    this.setState({offset: {y: 0}});
  }

  replaceRoute(route) {
    console.log('called')
    this.props.replaceRoute(route);
  }

  pushNewRoute(route) {
    this.props.pushNewRoute(route);
  }

  onNavigationStateChange(navState) {

    // Hack to prevent router from sending multiple requests
    console.log('onNavChange', navState.url, HOME_URL, navState.url == HOME_URL);
    if(this.stop) return;

    // Comparing the url is a somewhat delicate approach
    if (navState && navState.url == HOME_URL ) {
      console.log('comparing url true')
      this.props.taskStore.isAuthenticated = true;
      this.stop = true;
      this.replaceRoute('home')
    }
  }

  render() {
    console.log('rendered');

    return (
        <WebView
           source={{uri: 'https://github.com/facebook/react-native'}}
           style={{marginTop: 20}}
        >
    )
  }
}

function bindActions(dispatch) {
  return {
    replaceRoute: (route)=>dispatch(replaceRoute(route)),
    pushNewRoute: (route)=>dispatch(pushNewRoute(route))
  }
}

export default connect(null, bindActions)(Authenticate);

I'm also seeing this.

Closing this issue because it has been inactive for a while. If you think it should still be opened let us know why.

Facing same problem


error waiting for Aiven Kafka topic to be ACTIVE: couldn't find resource

I'm using terraform aiven version of 1.3.0 and I'm seeing error as shown below when running Terraform plan command after 3 minutes.
mmError: merror waiting for Aiven Kafka topic to be ACTIVE: couldn't find resource (* retries)
I also added timeout options in aiven_kafka_topic resource creation as but I'm still getting the error in 3 minutes itself.
timeouts {
create = "10m"
read = "10m"
}
Why do need kafka topic to be active?
if I'm creating a new topic, terraform would never be able to locate that topic in Aiven kafka

During the creation of Kafka Topic resource Terraform constantly monitoring its status via Aiven API, When Terraform is waiting for its state of being ACTIVE which means that all the necessary work for topic creation on Aiven side is done. This newly created topic is available for the end-user. It looks like Aiven cloud cannot create a Topic for you Kafka cluster in a reasonable time set in Terraform using timeouts.
I would recommend reporting this issue to Aiven Tech support and provide more details regarding your Kafka Cluster TF resource and Kafka Topic that you are trying to create.

We have the kafka cluster with below configuration.
Kafka version: 2.4
Service plan: Startup-2 (1 CPU, 2 GB RAM, 90 GB storage, no backups) 3-node high availability set
When we are creating the topics manually on the cluster, it's creating fine. The issue comes up when we are creating topic via TF.
Below is the kafka topic which we are trying to create
resource "aiven_kafka_topic" "topic1" {
project      = var.aiven_kafka_project_name
service_name = var.aiven_kafka_service_name
topic_name   = "test-topic1_NEW"
partitions   = var.aiven_kafka_partitions
replication  = var.aiven_kafka_replication
}

Thanks for additional information, we cannot reproduce this issue on our end, can you please run TF_LOG=DEBUG TF_LOG_PATH=my-tf-plan.log terraform plan and provide corresponding errors from my-tf-plan.log file?

Sorry but i'm not able to add TF_LOG = Debug stuff, I couldn't find a way actually.
I'm running all of these in azure devops pipeline using a yaml file.
I figured out the issue.
the issue was with .tfstate file which we were already having it from 2 weeks back and this was causing the issue.
I deleted the .tfstate file present and now I'm able to create topics via TF on Aiven.
but I can still see another issue in TF Apply.
I'm not sure if we have a limitations on number of topics being created but after creating few topics.
mmError: **mrpc error: code = Unavailable desc = transport is closing
mmError: **mrpc error: code = Canceled desc = context canceled
and at last terraform is crashing.
00-07-T:7:0.554Z [DEBUG] plugin: plugin exited
!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Great that you found a problem, without having environment variable TF_LOG=DEBUG and checking the logs, we cannot understand what is happening on your end.
The new errors that you reported:
rpc error: code = Unavailable desc = transport is closing
rpc error: code = Canceled desc = context canceled

are generic Terraform errors and cannot help here.


geoaggregate: the geometric point that is returned for every geohash is the upper left corner. Return the centroid instead.

In gitlab by @sylvaingaudan on Sep 11, 2017, 09:45

In gitlab by @sylvaingaudan on Sep 11, 2017, 11:48
changed milestone to %13

In gitlab by @MohamedHamouGisaia on Sep 12, 2017, 14:34
added ~2424198 label

In gitlab by @MohamedHamouGisaia on Sep 12, 2017, 14:34
added ~2424199 and removed ~2424198 labels

In gitlab by @MohamedHamouGisaia on Sep 12, 2017, 14:40
mentioned in merge request !94

In gitlab by @sfalquier on Sep 15, 2017, 10:59
changed milestone to %14

In gitlab by @sfalquier on Sep 15, 2017, 16:59
closed via commit 5fc8290fc1cc15df95a1259d5f5bcb39be33b82f

In gitlab by @sfalquier on Sep 15, 2017, 16:59
closed via merge request !94

In gitlab by @sfalquier on Sep 15, 2017, 17:02
mentioned in commit 5fc8290fc1cc15df95a1259d5f5bcb39be33b82f


Add coveralls support

Fixes #256.

Example: https://coveralls.io/jobs/11820242
(Note the check added to the PR as well.)

nice, lgtm


Introducing and applying swift-format

swift-format rules were created and formatting was performed. A loose set of rules has been created for now.
Specifically, the rules NeverForceUnwrap and NeverUseForceTry, which would require logic modification, have been set to false for now, but they are expected to be set to true soon to prevent runtime exceptions.

How to run linter/formatter on xcode
There may be a better way to do this, but I have confirmed that it can be done in the following way.


fix systems test for DSM in Java since partition was removed as a tag

Description

Motivation

Additional notes

Ok, I've adressed comment from @smola .
I also took the liberty to rewrite the assertion for a better output, as it was hard to understand whats going on. Thanks to that, I observe two failures :
Kafka check

-> You are looking for tag "partition:0", which is not present.
rabbitmq check

-> I strongly suspect that the check for direction:in has been copy pasted from kafka one, it's the same. But there is not direction:in / type:rabbitmq reported ?

@smola the internal flush period on DSM is 10 seconds, I had to raise the wait period to 25 seconds on java (we changed it to 10 seconds yesterday).


[cxx-interop] Synthesize conformances to UnsafeCxxInputIterator

This makes ClangImporter automatically conform C++ sequence types to Cxx.UnsafeCxxInputIterator protocol.
We consider a C++ type to be a random access iterator type if conforms to UnsafeCxxInputIterator, and additionally defines operator- and operator+=.

@swift-ci please smoke test


Fix the default URL in OAuth callback

In a regular OAuth authorize process, the default URL defined at the callback logic level is never used as the OAuth20CallbackLogic relies on the pac4j requested URL saved in the session (which is the /authorize URL).
Nonetheless, if I bookmark the /login URL during the OAuth authorize process and call it back later on, I'm redirected to the /callbackAuthorize URL without nothing in session for the pac4j requested URL.
So it loops to the /callbackAuthorize URL itself again and again as the default URL is defined to the /callbackAuthorize URL itself (context.getFullRequestURL()).
This PR proposes to use the redirect_uri instead of the /callbackAuthorize URL itself as the default URL. I can't say this will always work but I think it's better (to try to return to the client app) than the current setting which never works for this edge use case.

If I understand this correctly, are you saying that with this change, the flow would never return to /callbackAuthorize and instead, we always directly go to the redirect_uri?
The flow normally is: 1) go to authorize, 2) redirect to login with the callbackAuthorize as a service, 3) return back to callbackAuthorize, 4) redirect to redirect_uri.
Does your change remove step 3?

If I understand this correctly, are you saying that with this change, the flow would never return to /callbackAuthorize and instead, we always directly go to the redirect_uri?
The flow normally is: 1) go to authorize, 2) redirect to login with the callbackAuthorize as a service, 3) return back to callbackAuthorize, 4) redirect to redirect_uri.
Does your change remove step 3?

Let me try to give you better explanations.
No, the normal flow remains untouched.
In fact, the regular flow has one more step:

go to authorize
redirect to login with the callbackAuthorize as a service
return back to callbackAuthorize
redirect to /authorize <==
redirect to redirect_uri.

This PR only targets a specific edge use case (empty session at step 3).
The transition from 1) to 2) is triggered by pac4j when no user profile is in session, at this moment, it saves the requested URL (/authorize) in session.
In step 3), after finishing the login process, pac4j retrieves the originally requested URL from the session and redirect to it.
I have a user who has bookmarked step 2. When he goes to step 3, the session is expired and no originally requested URL is available  in it.
In that case, in step 3, the redirection performed by pac4j is to the default URL which is defined to be the callback URL itself which leads to an infinite loop.
I propose in that case to try to redirect to the redirect_uri.

I understand. Thanks much for the notes.

Thanks for the merge. Backported: https://github.com/apereo/cas/pull/5322


[Addition]:

Hotspot b58 Addresses
1117yUjTr7ngtP1W58JPYPrRz7SsTgEThx9Ke23TXFQzmKXau1e
112soBarykHhTzm9JWL1f6zqMarr8FnwtnK1o94riFbW8z8BaYnJ
112cwpuGgAr5hD12M5ru3FarsZqy5jErvC2dWSZG2FeB4KknbH7k
112hzQHxCeLtsBt3MztyJ2MEXxAKLRN9tkK2BFUevJCtYW9kyEt3
11Qdx5Ex9iCV4Hu2XAE9ADFzxtG7AaYoA5Kpvbq76kRD49aFNYF
11geV1xdib8yJMjvMTKMWiquE3agpiek16d4FLpzztyenuhwuW3
11YG1MYPgx8NWgaLDi6nqufMPfTHqRZxQvrtiNVPE6SgNtbVHe9
11g13QLMwhH4Ehigp5mrwUss9GVH1eXPecryHs7whctonL4qz7e
Discord Handle
DustyRusty#3458
Reason(s)
This area is hilly and semi rural.  I know it well.  These placements are at 0m height and perfectly spaced.

Same cluster as https://github.com/helium/denylist/issues/4343


Clean up DOM

This PR removes unnecessary wrapping divs following the criteria described in #3822, so far:

Deletes div.navContent (child of nav)
Deletes div.content (parent of splitPane)

Looks good to me!


dynamic c/p of images/screenshots

feature request:
programs like tiddlywiki, qownotes, zim, .. support the ability to paste an image into the editor,
it would be nice to have something similar like this in asciidocfx,
speeding up productivity
for example after pasting an image in qownotes, the following code is shown (their own markup):

and the actual pasted image is shown in the the preview
for example:

--
so for asciidocfx this would translate to:

paste the image
automatically add code image::images/image_id_string.png[]
optionally ask for the desired name of image when pasting, with a images/image_id_string.png already prefilled in the input field for this
optionally make the images directory a setting, maybe a separate setting from the images that come from the filesystem, which are more likely to have a meaningful name
4.1 dir images for images put there by the user
4.2 dir images_pasted for this use case or pasted images which might have not such meaningful name

ctrl+v doesnt work, but it this seems implemented with clipboard pasting, using the mouse to paste the content of the clipboard
just wondering/asking, why does ctrl+v only work for text and not for the clipboard?

ctrl+v doesnt work, but it this seems implemented with clipboard pasting, using the mouse to paste the content of the clipboard
just wondering/asking, why does ctrl+v only work for text and not for the clipboard?

Sorry, you can use ctrl-shift-v, I think it should paste the clipboard image.


Weird behaviour in Download format chips

Describe the bug
In the Downloads page, chips informing the dataset format keep adding up after using the search bar.

To Reproduce
Steps to reproduce the behaviour:

Go to https://platform.opentargets.org/downloads
Search for "evidence" - 2 chips are added
Clear the search bar, evidence has 4 chips.
Search for "evidence" again - 2 more chips are added
Clear the search bar, evidence has 6 chips

Additional context
Only the last 2 chips are usable, so chips are added on the left.

This issue has been fixed in the Platform 23.09 release


Type inference with multiple arguments

Here's a fake representation of my setup (my code is too complicated to paste directly).
extension NSFetchedResultsController: MDFFetchedResultsController { }

class TableViewControllerAssembly: AssemblyType {

    func assemble(container: Container) {
        container.registerForStoryboard(TableViewController.self) { (r, c) in
            let controller = r.resolve(MDFFetchedResultsController.self)!

            // This line throws an error when unwrapping the optional.
            let dataSource = r.resolve(MDFDataSource.self, arguments: (c.tableview, controller))!

            c.dataSource = dataSource
            c.tableView.dataSource = dataSource
        }
    }
}

class MDFConcreteDataSource: MDFDataSource {
    let tableView: UITableView
    let controller: MDFFetchedResultsController

    init(tableView: UITableView, controller: MDFFetchedResultsController) {
        self.tableView = tableView
        self.controller = controller
    }
}

class DataSourceAssembly: AssemblyType {

    func assemble(container: Container) {
        container.register(MDFDataSource.self) { r, tableView, fetchedResultsController in
            MDFConcreteDataSource(tableView: tableView, controller: fetchedResultsController)
        }
    }
}

I believe the issue is Swinject doesn't find the registry due to how it determines the type of an object when using arguments. The registry is looking for a protocol (MDFFetchedResultsController), and I'm passing in a concrete implementation of the protocol (NSFetchedResultsController ) as an argument.
I've also tried explicitly typing controller like so: let controller: MDFFetchedResultsController = ....
Any thoughts on what's going on, or how I could work around this issue?
I'm using Swinject at this commit: c598e7a.

I think the problem is your registration of MDFDataSource.self with registerForStoryboar expects arguments though it does not support arguments. Reading #27 might be helpful for you.

Ah sorry, that was a mistake when I was writing this up. I've updated to fix the mistake.

No worries. I think the naming of registerForStoryboard is confusing. I submitted an issue to rename the method: https://github.com/Swinject/SwinjectStoryboard/issues/21

Just to be clear, this was a mistake when I was writing the fake example. My problem still persists with the above setup. Swinject can't find the correct registry with the given arguments.

I suspect the problem is passing implicitly unwrapped optionals as arguments instead of wrapped values:
 (c.tableview, controller) is of type (UITableView!, MDFFetchedResultsController!), while your registration is with arguments of type (UITableView, MDFFetchedResultsController)
Explicit upcasting should fix the issue, i.e:
r.resolve(MDFDataSource.self, arguments: (c.tableview as UITableView, controller as MDFFetchedResultsController))

Ah good call. I made the following change and it was able to resolve the dependency properly:
let dataSource = r.resolve(MDFDataSource.self, arguments: (c.tableview as UITableView, controller))!

Upcasting the controller didn't seem to make a difference.

For some reason I thought that implicitly unwrapping an optional returns value of type ImplicitlyUnwrappedOptional instead of wrapped type. Good to know that is not the case 😄
I guess we can close this now.

I think it's good to modify the documentation for arguments to explicitly specify types like
container.register(AnimalType.self) { (_: ResolverType, name: String, running: Bool) in
    ...
}

and
let name: String = "Lucky"
let running: Bool = true
container.resolve(AnimalType.self, arguments: name, running)!

to recommend typing the arguments explicitly. Swinject users can drop the explicit types by their own understandings.
https://github.com/Swinject/Swinject/blob/master/Documentation/DIContainer.md#registration-with-arguments-in-a-di-container

As this issue of not exactly matching types comes up quite often, maybe we could implement some runtime warning messages similar to checkedResolved, which would somehow log that resolve failed, what arguments were given, and maybe some suggestion to what might be an problem..
Not sure about implementability yet, but something like
Resolving of MDFDataSource failed.
Name: -
Arguments: UITableView!, MDFFetchedResultsController

Found similar registration for MDFDataSource:
Name: -
Arguments: UITableView, MDFFetchedResultsController

@jakubvano, yes you are right. The Swifty way is important. I'll update the Remark section shortly. An example with optionals makes sense!


Durations are being typed incorrectly

Longs are typed with a class but appear to be serialized as a string representing its value in seconds.

related https://github.com/osmosis-labs/telescope/issues/142

oh yeah jk it's Duration not Long

https://github.com/osmosis-labs/osmojs/issues/12

please try the new release candidate to test this via osmojs:
<EMAIL_ADDRESS>
example here https://github.com/cosmology-tech/cosmology/blob/main/packages/cli/src/commands/lock.ts#L113-L116

  const msg = lockTokens({
    owner: account.address,
    coins,
    duration: Duration.fromPartial({
      seconds: Long.fromString(duration),
      nanos: 0
    })
  });


RadiusMiles is wrong? Very small value

In the search result for jobs with location Filter the field radiusMiles is a very small value like: 0.000067626627
So what I want is the distance from the job to my current location. Is it the correct field for that?

https://issuetracker.google.com/issues/145390342


Code Exchange Upgrade

Resolves #3

@po5i - can you take a look at the failed builds?

@po5i - can you take a look at the failed builds?

@jonedavis Fixed!

Merging. This meets requirements @dkundel laid out.
I suspect we'll have another conversation in future if this meets requirements of an app that takes necessary security steps to for an app that lives in the account security world.


Some question about implement in Net

Hi, Morvan:
In here, why do we need to write self.eval()? what does it do in effect?
In the Pytorch Official document, it says

Sets the module in evaluation mode. This has any effect only on modules such as Dropout or BatchNorm.

The first question is: in this implementation, it doesn't exist Dropout layer so as BatchNorm layer so self.eval() has no effect?
The same situation appears in line 52: self.train()
Another question is about the usage of self.eval() and self.train(). If there exists Dropout layer or BatchNorm layer in our neural network, what does the above code actually do?

If they haven't change the core code and if I remember it right, when using self.eval(), the net will not store values for backpropagation, meaning fast computation.


[feat] Extended Type Annotations for TimeStep

Extend the Type Generics for TimeStep so that one is allowed by the type-checker to create transformations of other TimeStep objects.
Example behaviour,

# Or just step: TimeStep without annotations
step: TimeStep[jax.Array] = ...

new_step: TimeStep[tuple[int]] = jax.tree_map(jnp.shape, step)

At the moment this is only possible for the Observation field.

This would be solved by https://peps.python.org/pep-0696/

For now I will simply extend the TimeStep with Generics for all fields and bound them with their current type and the PyTree type from jaxtyping

This problem is tracked further in #28


[Feature] load_yaml_dags should take a list of dag_folders

Description
It be nice to be able to pass a list of dag folders to load_yaml_dags instead of just a single one
Use case/motivation
My project structure is complex, and uses mulitple dag folders with yaml files in each.
Related issues
#289, #291
Are you willing to submit a PR?

[x] Yes, I am willing to submit a PR!

I'm not likely to have time for this until Q1


[Engineering task] Implement Claims API to Bypass Cache When Claims are Present in MSAL with Managed Identity

MSAL client type
Managed identity
Problem Statement
MSAL client type
Confidential
Problem Statement
Task type
Development
Description
Currently, MSAL with Managed Identity does not expose any API claims API. With CAE (Continuous Access Evaluation) being enabled by default, we need to implement a mechanism to bypass the cache if claims are detected in the token request.
Steps to Reproduce:

Enable CAE by default in MSAL with Managed Identity.
Make a token request with claims present.

Observe that the cache is not bypassed, leading to potential stale token usage.
Expected Behavior:
When claims are present in the token request, the cache should be bypassed to ensure that the latest token is used, in line with CAE requirements.
Proposed solution

Expose the claims API in MSAL for MI
Expose Claims to MI Assertion Provider for FIC
By-pass cache when claims are present

note : msi v1 endpoint is unchanged so there is no need to pass any claims to the endpoint itself, this feature is done so MSAL will bypass the cache.
Alternatives
No response

Let's take this one as well please.


Module prevents MM from starting

When I use this module, Magic Mirror seems to stop at a certain point. It starts the browser and shows a black screen and the mouse cursor, and seems to stop at that point. The message that something might be wrong in the config file isn't even displayed.
I used API Tester to test my credentials and they work, I can get data like consumptions etc, so this is not the issue.
Ps: I was waiting for years for someone to make this module, I hope you can get it to work on my MM.

Sorry to hear that. I had the same problems with my MM but couldn’t pin it down to a specific module.
Currently I don’t have the time to look into this but hopefully in some months when I start my parental leave.

Thanks for the work you've allready done!! I'll be keeping an eye on this one ;)


Is there anyway to get Promise from redux-resource-xhr?

Hi @jamesplease ,
I've just found out redux-resource last weekend and it has a great documentation & covers many cases that I've concerned of.
But there's one thing that bugged me is redux-resource-xhr's crudRequest returns XMLHttpRequest instead of Promise. Thus, it's hard to make it works in some cases:

chain the dispatches: dispatch(Actions.jobOpeningCreate({ data })).then(...)
combine with redux-form's submitting, since it works with Promise-only

I've read included xhr.js file and seen that there's a check to return Promise if the callback is not a function. But crudRequest always pass a function callback to xhr()
I worked-around by promisify the returned XMLHTTPRequest, but it's quite tedious and redundant accross the action creators
So is there any convenient way to return Promise instead of XMLHTTPRequest when using redux-resource-xhr?

Hi @knightus ! Thanks for opening the issue. Unfortunately, there is not, and I can't think of a way to make that work while still having the API allow you to cancel requests easily.
I've been meaning to make redux-resource-fetch, but I haven't gotten around to it. If you'd prefer to work with Promises always, then it make sense to roll your own wrapper. redux-resource-xhr isn't too big!
Thanks! :v:

Thank @jamesplease for the really quick response! So that's a trade-off. In my use cases, I don't have to cancel the requests much.
But I can see the idea here. Will work on a wrapper instead 👌

Let me know if you run into any issues. And if you get around to making a wrapper that uses fetch, it could become the official redux-resource-fetch if you are interested!

Sure! I'm using axios but since the purpose is to make it return Promise in order to be compatible with other libs, I think it would be the same possibility with fetch. Will get back to you soon ;)

Cool, that makes sense. Well, if you end up making a redux-resource-axios library, then that could be added to the core libraries as well 🙂I'd love to provide more options for people!


Fix ItemList text trimming

This fixes #97438
The left content margin was probably calculated as an offset by the get_size() function in the line above, but I couldn't check that, because I haven't found the function. If this needs to be changed please tell me where to find it.
Video showing the resolved issue

https://github.com/user-attachments/assets/ad4a7355-5124-406f-b563-3b7a4ed2209d

The minimal right margin is smaller than the left one. Shouldn't they be symmetrical? 🤔

Also the autowrap margin with multiple columns seems to be the same as before:
https://github.com/user-attachments/assets/f7a022bc-095e-42e0-9726-21f3a86df2fb
But this can be considered a separate issue.

If the minimal right margin is the same size as the left margin, it cuts the text, because it can't be fully displayed in the center at this size of the ItemList. (see Image)
Image

If you set the `h_separation` bigger than the size of the ItemList just the left size of the h_separation is considered and the text is fully shown. Theoretically if the `h_separation` is the size of the ItemList (or bigger) it would fill the whole space and hide the text, leaving a blank item. (see Video 1)
Therefore, I thought if there is enough space for the text to be displayed it should be shown and it would be symmetrical if  you enable the auto_width feature (#93270). (see Video 2)
Video 1

https://github.com/user-attachments/assets/ba83ac85-fc9d-4e88-acd3-21b1741b130f

Video 2

https://github.com/user-attachments/assets/f68b44dc-f95d-4e72-a234-700d8226f40e

I think the autowrap margin should be considered as a separate issue. Is there a bug report already?

It's symmetrical when h_separation is 0. Looks like the left side uses half of the separation, the right one should too probably.

This happens when adding panel->get_margin(SIDE_LEFT) to a position.x and subtracting panel->get_minimum_size().width from width instead of panel->get_margin(SIDE_RIGHT).

@WhalesState  I don't think I quite understood your comment.
Do you think it should stay the way I did it in the pr (and it's just the explanation to the problem), or should it be changed back to the previous state?

Seems like you already have fixed that, but i have found a regression.
https://github.com/user-attachments/assets/f9bacbe0-f137-4486-a09c-426dd93fadef

The icons are not aligned correctly when using top icons.

Fixed

The h_separation is not clamped.

I have added if statements so that v_separation and h_separation can no longer be negative.
Is there a better way to disable negative numbers for Theme::DATA_TYPE_CONSTANT than checking each usage?

The separation line is not drawn when aligning the icons on top.

This was apparently intentionally removed. (https://github.com/godotengine/godot/pull/82236)

I have added if statements so that v_separation and h_separation can no longer be negative. Is there a better way to disable negative numbers for Theme::DATA_TYPE_CONSTANT than checking each usage?

I think we can't use property hints for theme constants or setters, you will have to clamp them everytime if the negative values will cause issues. you will have to use MAX(theme_cache.h_separation, 0) everytime, or maybe caching it int h_sep = MAX(theme_cache.h_separation, 0) if it will be used many times.

@KoBeWi What you think of my comment on the symmetry of the minimum margin? (https://github.com/godotengine/godot/pull/97439#issuecomment-2374384905)
I think a new user could get confused that the text is truncated when the next entry to be separated is already on the next row.

So I did an experiment to test the new behavior. I made a StyleBox with 0 content margins and borders equal to h_separation. This way it's easy to visualize the actual margins imposed by separation.
Here's old behavior:
https://github.com/user-attachments/assets/4adaf15c-43eb-4f77-b5fd-f16f405da1d2
It uses half separation on the left and full separation on the right.
Here's new behavior:
https://github.com/user-attachments/assets/bcc97cf6-5889-4c66-a0cb-5e01973905ff
Half separation on the left, right separation is ignored.
I think both are sort of inconsistent, but the new one is more friendly, as there is more space.

So it would be good for now, and we could open a discussion on better consistency if that is needed?

Yeah, overall it's an improvement.

Should I rebase the branch or does this happen automatically when merging?

Rebasing is only needed if there are conflicts, or sometimes when a PR is very old and wasn't recently updated.


Add a DropWizard command to populate v2 hash data

Context
Trello: https://trello.com/c/JBenqGkg/3103-implement-rfc0010-item-hashing-algorithm-with-redactability
Now that ORJ supports 2 concurrent hashing algorithms, we can populate the new hashes that will be read by the V2 API.
Changes proposed in this pull request
Add a command to populate blob_hash with objecthash hashes for all items, entries, and system entries. Previously blob_hash values were set to the V1 hashes.
Guidance to review

I made this a command rather than a migration, because I don't want it to block application startup if it takes a long time to run
The command is run by passing migrateHashes config.yaml as arguments to the jar instead of server config.yaml
It shouldn't matter too much if this command fails to execute, because only the /next API reads it, and the update is idempotent
I used the imperative JDBI style instead of the declarative one, because I don't think the queries will be useful for anything else
We can remove the command again once we're happy the V2 hashes are correct

Cool, I'll deploy this on Monday


fix: relic scorer improvements

Pull Request

Description

Updated relicScorer to cache results more aggressively
Updated flat stats handling to use a global scaling to assist in more aggressive caching
Relocated unnecessarily function scope arrays to improve performance

Related Issue

Related to #516

Checklist

[x] I have added commit messages that are descriptive and meaningful.
[x] I have tested the changes locally.
[x] I have reviewed the code changes.

Screenshots

Im not sure how to reconcile these score differences anymore - top row is current live scoring, bottom row is 0 / 0.25 / 0.5 / 0.75 / 1.0 flat scaling. The differences are pretty huge

Oh nice these score changes look more reasonable now, what was the bug?

Oh nice these score changes look more reasonable now, what was the bug?

I just forgot a pair of parentheses so the mainstat selection algorithm was using the raw meta.stats instead of the filtered + sorted version it should have been using