loadExternalStyleSheet doesn't work and  global conception issue

$("form").conversationalForm({ 'loadExternalStyleSheet': false });
This option doesn't work. A default remote stylesheet is called everytime I instantiate the conversationalForm object... Worst good idea ever.
As for bootstrap, jquery... etc. We should add a call from HTML to a default CSS if the user wants it. And that's easier if we want to customize the styles. Here, I cannot create a conversationalForm on the fly (OR NOT !) depending on the context... Because once conversationalForm object is instantiated... I cannot override default styles because your CSS oveerrides mine... Daaaah !
And, no, instantiate conversationalForm everytime is not a good idea either.

@tvequaud hard to dissect the problem you are having, but it seems to be rooted elsewhere in your code, please be more problem oriented in your issue description.
these jsfiddles showcases the options usage is working as expected:
This one DOES load external stylesheet
[This one DOES NOT load external stylesheet][https://jsfiddle.net/c0vq6h1b/2/]
I would recommend you to let it load the external stylesheet, you get some bootstrap styling from it.. and through style specificity override the styles.


Compiler fails to compile int8 quantized TFLite Model

Description
I want to convert a int8 quantized tflite model:
converter.optimizations = [tf.lite.Optimize.DEFAULT]
def representative_dataset_gen():
  # Get sample input data as a numpy array in a method of your choosing.
  for data in dataset:
    # not sure why, for single input data use [data] for multiple inputs just data...
    yield [data]
converter.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
converter.experimental_new_converter = True
tflite_model = converter.convert()

I can load the quantized tflite model without issues and run inference with it. But when I want to convert it the edgetpu compiler fails with many of these errors:
Edge TPU Compiler version 16.0.384591198
Searching for valid delegate with step 1
Try to compile segment with 136 ops
Started a compilation timeout timer of 180 seconds.
ERROR: :344 no_integer_overflow_from_quantization was not true.
ERROR: Node number 31 (CONV_2D) failed to prepare.

Compilation failed: Model failed in Tflite interpreter. Please ensure model can be loaded/run in Tflite interpreter.
Compilation child process completed within timeout period.
Compilation failed!

I assume this means that somewhere in the quantized model there are integers outside of int8 range. But that should not happen with the quantized tflite model, right?
model_quant.tflite.zip
And thanks for adding more meaningful error messages with the new compiler update!
Click to expand!
Issue Type
Bug, Support
Operating System
Linux
Coral Device
No response
Other Devices
No response
Programming Language
Python 3.7
Relevant Log Output
No response

@j-o-d-o can you try to export the saved_model without bathnorm for layer 31 ?
model.html.tar.gz

@hjonnala that doesnt seem to help. Same error message for the next Layer:
ERROR: :344 no_integer_overflow_from_quantization was not true.
ERROR: Node number 37 (CONV_2D) failed to prepare.

I mean, I know what the error is trying to tell me. What I do not understand is why they are happening and how I would look into this issue. I am a bit surprised that all batchnorm and bias layers are quantized with int32 despite setting converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] and it seems that might be the issue when trying to compile the edgetpu model.

Any updates on this one? I am kind of stuck on here :(

Have you exported the model with fixed tensor shape? only fixed shape tensors or models will work on edgetpu.
I have tried to quantize the model the saved model and I am getting
ERROR: Attempting to use a delegate that only supports static-sized tensors with a graph that has dynamic-sized tensors..
edgetpu_453.ipynb.tar.gz

Hi, any updates on this? I'm having the sampe problem. Compiler setup is:
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
converter.optimizations = [tf.lite.Optimize.DEFAULT]

and compiling with !edgetpu_compiler -a -s model.tflite yields
Edge TPU Compiler version 16.0.384591198
Started a compilation timeout timer of 180 seconds.
ERROR: :344 no_integer_overflow_from_quantization was not true.
ERROR: Node number 15 (DEPTHWISE_CONV_2D) failed to prepare.

Compilation failed: Model failed in Tflite interpreter. Please ensure model can be loaded/run in Tflite interpreter.
Compilation child process completed within timeout period.
Compilation failed!

That's puzzling, since the same model compiles fine with compiler version 15.0.340273435. Here's the tflite model in question.

@hjonnala The original issue I posted is still present. My last message is only a workaround. I don't think it is a viable solution to this issue to tell developers that they must set an unsupported flag (_experimental_new_quantizer).
Also, if I were to develop this compiler I would really want to know why it fails with the default quantization and works with the experimental_new_quantizer.

@xadrianzetx yes, its due to  depth wise conv layer limitation(Tensor has unsupported rank (up to 3 innermost dimensions mapped), those ops  are mapped to CPU.

Fee free to reopen if you have questions.

I have a similar problem with compilation. Not sure if it should be part of this thread or a separate thread, but it seems to be an issue with weight conversion to int8
My model compiles when I create it but don't load my Tensorflow weights: If I create the model, don't train or load weights, quantize and compile with the same settings as in this thread, things work.
When I load pre-trained weights, and repeat the procedure, it doesn't, fails without an error message
edgetpu_compiler -a -s -t 1000 {save_path} returns:
'Edge TPU Compiler version 16.0.384591198',  'Started a compilation timeout timer of 1000 seconds.',  'Compilation child process completed within timeout period.',  'Compilation failed! '
When pre-trained weights are not loaded, the log file shows the following layers:
`Edge TPU Compiler version 16.0.384591198
Input: /home/ubuntu/network_quant.tflite
Output: network_quant_edgetpu.tflite
Operator                       Count      Status
CONCATENATION                  3          Mapped to Edge TPU
SOFTMAX                        1          Mapped to Edge TPU
RESHAPE                        2          Mapped to Edge TPU
ADD                            19         Mapped to Edge TPU
QUANTIZE                       2          Mapped to Edge TPU
TRANSPOSE_CONV                 3          Mapped to Edge TPU
CONV_2D                        59         Mapped to Edge TPU
`
Software versions:  Tensorflow 2.8.0, Python 3.9.12
 converter.optimizations = [tf.lite.Optimize.DEFAULT]   converter.representative_dataset = representative_data_gen   converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]   converter.inference_input_type = tf.uint8   converter.inference_output_type = tf.uint8


Fix deprecation warnings in Typst 0.12

Update dependencies to remove related deprecation warnings.
Remove styles from function measure.
Tested with local manual.typ
refers to #5
BREAKING CHANGE: remove compatibility with Typst v0.10

Thanks for the PR! It is superseded by de8343d which will be released after I can update the manual (waiting on https://github.com/jgm/typst-hs/issues/53)
The commit also uses 0.12's context to infer when a justified linebreak should be added at the content wrap.


Building for all platforms

@Menzorg is everything what was required by that issue is done? Can we close this?


Preprocessing and Training Flow for Other Datasets

Hello authors, thank you for your great work.
You noted in the README:

Apart from the LLFF dataset, we experimented on the RealEstate10K, KITTI Raw and the Flowers Light Fields datasets - the data pre-processing codes and training flow for these datasets will be released later.

I believe the last update on this was in October 2021, so I am following up. Will you be able to release the dataloaders/code soon?
All the best,

@vincentfung13 same question

Hello authors, I just wanted to follow up on this issue.

@vincentfung13  same question as well (looking forward to the KITTI code in particular)

Hello authors, I wanted to follow up on this again.

@vincentfung13 same question (especially the Flower code)


WIP: Provide the Option to supply only the Normal Operator [breaking]

Hi @tknopp,
this is a first draft of what I mentioned to you. You are absolutely right that I could have hacked the old version by supplying an identity operator as A. But this really feels like a hack to me, in particular, as it requires intimate knowledge of each algorithm and whether it uses A for anything but the back-projection. The current version allows you to choose whether you want to supply A or AHA or both where this makes sense and makes A compulsory for algorithms that require it.
While I was at it, I also tried to tidy up and homogenize the interface a bit. In particular, I

removed any options of supplying the data or a starting vector to the constructor, as they will be over-written anyway by init!.
removed some options to change the intimate details of the solver in init! as this was not consistent across solvers and logically does not make sense to me.
changed (almost) all keywords to ASCII in compliance with the Julia guidelines
unified the keywords
added documentation for the solvers
removed kwargs... as I find this to be a dangerous "sink" for keywords that make it rather intransparent if a solver provides this feature. In other words, with kwargs... I find myself often changing unused parameters and am then surprised that nothing changes.
removed the solverInfo keyword from constructors, as they were not used anyway. In solve, they still do the same thing

I left the createLinearSolver interface unchanged, i.e., it softens the breaking aspect of this change but also limits the power of this interface. I never use it as I rather use the constructors directly, so I don't have any strong feelings about it. Not sure if having two interfaces helps or hurts in terms of clarity.
Things I still plan to do:

unify the solve! function with one implementation that just calls different storeInfo methods. Otherwise, the functions solve! all do the same if I see this correctly.
clean up the code a bit more.
clean up the doc-strings a bit more. I'll take a look at the other documentation and see if I get around to working on that a bit, and/or if this is necessary.

Thoughts? I am aware that I took a rather radical re-write approach to the interface and am sure I have overlooked a thing or two in terms of functionality you had in mind. I would appreciate any feedback you might have! Also happy to have Zoom call for a quicker convergence to mutual understanding.
Thanks for considering!

Hello! Tobi, Mirco and I talked a bit about the PR. Overall I think all the implemented and planned changes are very good, we just have two small-ish points.
The first is in regards to the kwargs. We stumbled over a similar issue with the dangerous "sink" behavior in our MPIReco.jl package (the "fix" there actually started our effort in updating RegLS lately). Having just an explicit list of keywords is definitely safer, but it would cause a few issues in MPIReco and MRIReco. However, I think I found a solution where we can have "both":
The direct constructors only use an explicit list of keyword arguments and instead the createLinearSolver function receives any number of keyword arguments and just selects the fitting ones for the given solver. This requires a little bit of introspection, where we look at the method table for the constructors with methods(Kaczmarz) for example and then with Base.kwarg_decl.(...) we can look at the list of keywords.
This way we can still have the safety when directly using a solver and the flexibility if the utility function is used. createLinearSolver could even give (debug or optional) logging messages about unused parameters. I can add this functionality later on top of this PR.
The second comment is about the constructor and if A should be an argument or a keyword argument. Since A is an "understandable"  and often times mandatory argument for all solvers, even if it is just used to create the normal operator in the default case, I feel like it would better to have it be an argument instead of a keyword.
If we then define the function as follows: FISTA(A=nothing; AHA = ..., reg = ...) then you can still call FISTA(AHA = foo, ...) and only supply the normal operator. I haven't tried it out yet, but I think that should cover your use case.
Best regards,
Niklas

Hello @JakobAsslaender, I really like the two constructor version for A and AHA. That's a great idea!
Regarding createLinearSolver: I think our main goal here is to have an "easy" constructor for a solver, that can take a hodgepodge of parameters and return a "best-effort" solver. For MPIReco/MRIReco the hodgepodge is a result of the reco frameworks supporting the "union" of all solver parameters in a way and not the solver specific sets. This is partially a result of the least-squares details being hidden for the high-level users.
I think another use case we could consider is if a user is not entirely sure which solver is the correct one for their given least-squares problem. We could add a createLinearSolver version where the solverType is not specified and instead the function checks which solver are actually applicable for the given A, AHA, x and reg via the isapplicable function.
If a user is sure which solver they want to use they can directly construct it and I think we can reflect that like you said by directly building the solver in the documentation. And maybe have an additional small section for the createLinearSolver in the docs.
I'll try to take a look at the code today or tomorrow. Did you get around to all the changes you want to do?

I think it would be great to have the function createLinearSolver to pick an algorithm based on the regularization!
I think I am done with the changes I had in mind. From my end, this branch can be merged if no one has any objections. We can wait for your additions, but I guess this could also be a separate branch and if we decide to make a release, this change would be breaking and your changes shouldn't be, so I would be fine with releasing the code as is and making a separate one for you changes if you don't want to rush it.


Support global and session parts in show variables for mysql and generic dialects

Examples:
mysql_and_generic().verified_stmt("SHOW GLOBAL VARIABLES");
mysql_and_generic().verified_stmt("SHOW GLOBAL VARIABLES LIKE 'admin%'");
mysql_and_generic().verified_stmt("SHOW GLOBAL VARIABLES WHERE value = '3306'");
mysql_and_generic().verified_stmt("SHOW SESSION VARIABLES");
mysql_and_generic().verified_stmt("SHOW SESSION VARIABLES LIKE 'admin%'");
mysql_and_generic().verified_stmt("SHOW GLOBAL VARIABLES WHERE value = '3306'");

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
We've detected an issue with your CI configuration that might affect the accuracy of this pull request's coverage report.
To ensure accuracy in future PRs, please see these guidelines.
A quick fix for this PR: rebase it; your next report should be accurate.

12 of 14 (85.71%)  changed or added relevant lines in 3 files are covered.
517 unchanged lines in 9 files lost coverage.
Overall coverage increased (+0.06%) to 87.707%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/ast/mod.rs
9
11
81.82%

Files with Coverage Reduction
New Missed Lines
%

tests/sqlparser_mysql.rs
2
99.42%

src/ast/data_type.rs
3
81.93%

src/lib.rs
5
11.83%

tests/sqlparser_mssql.rs
9
97.36%

tests/sqlparser_postgres.rs
33
98.06%

src/ast/query.rs
61
83.81%

src/tokenizer.rs
80
88.62%

tests/sqlparser_common.rs
120
96.91%

src/parser/mod.rs
204
83.16%

Totals

Change from base Build<PHONE_NUMBER>:
0.06%

Covered Lines:
17801

Relevant Lines:
20296

💛  - Coveralls


Hiding subtree on large tree re-renders it instead of hiding it

Hi there,
I've been using Phylotree on the small examples for a few days and I like the features it provides (thanks for that!).
I wanted to visualize a large tree (around 170 leaf-nodes), but when I use the hiding feature on a large subtree, it rerenders the subtree besides the original tree, as seen in the following image:

This is the original view of the tree before the hiding. The selected branches correspond to the "hidden" subtree.

I looked for the same bug in your large tree example, but haven't managed to reproduce this behaviour. Is this behaviour known? Do you have any idea what might be causing it?
Thanks in advanced and I look forward to your response!

A simple change in the hiding code manages to solve this problem.
phylotree
    .modify_selection(
    [node].concat(
    phylotree.select_all_descendants(node, true, true)
    ),
    "notshown",
    true,
    true,
    "true"
    )
    .update_has_hidden_nodes()
    .update();

Instead of the original:
phylotree
    .modify_selection([node], "notshown", true, true)
    .update_has_hidden_nodes()
    .update();


RFC: Reuse complex components implemented in React plus Redux

This post is meant to be a start for a discussion. Moved from here as @gaearon suggested here.
Intro
I'm interested in finding best practices on how to architect complex components implemented in React and Redux so that they are reusable as a whole in another app.
Not sure how widespread is the problem, but I encounter it from time to time. I hope the developers from the front-end community encounter similar problems, too.
Terms and definitions
A complex component -- a UI (React, Redux actions), coupled with business logic (Redux reducer), and data access logic (Redux actions' side effects; middleware).
Traits of a complex component:

can be instantiated more than once, maybe simultaneously (not a singleton)
each instance can have its own configuration
can query and manipulate the global environment:

the URL and the history (routing, back-forward)
network communication (AJAX, WebSockets etc.)
storage (cookie, localStorage, sessionStorage etc.)
viewport dimensions, global events like viewport scrolling/resizing

can depend on the app state:

query and manipulate other components
delegate some functionality, e.g. asset loading, full-screen modal container etc.

should not pollute the environment
when used from another app, the component should be reused, not copy-pasted

An app -- a UI environment where the components are configured and instantiated.
Traits of an app to consider:

can be a React + Redux app
can be a React-only app
can be a non-React app

Examples of components

a wizard, a multi-step form, a questionnaire
a complex stateful popup, like a multi-tab settings dialog, or a chat
a WYSIWYG editor with autocompletion and image uploads

Developing such components with Redux adds the invaluable benefits of predictability and replayability.
Questions to answer

How to structure the component code (where to put reducers, actions, UI code)
How to put a component into a React + Redux app
How to put a component into an app that has no Redux and/or React
How to isolate the state of the component instance
How to configure the component reducers' logic based on the component instance configuration
How to target actions at specific component instances' state
How to handle actions of a specific component instance in the app reducers
How to bridge the component with the global environment (URL and history, network, storage)
How to bridge the component with the app state
How to bridge the component with the functionality provided by an app (asset loading, full-screen modal container etc.)

React developers from Facebook answered that I should "start by reusing React components only", but having a lot of business logic copied from app to app is not the best way to go.
Elm architecture answers some of the questions, but Redux is quite different (no view+reducer coupling, no explicit serializable side-effects).
References

Similar discussion, but not so broad: https://github.com/reactjs/react-redux/issues/123
Similar discussion, but about just actions / reducers / side-effects: https://github.com/reactjs/redux/issues/1171
Similar question: https://github.com/reactjs/redux/issues/1314
Related: https://github.com/yelouafi/redux-saga/issues/62 Though I'd like to avoid sticking to redux-saga until these sagas' state is serializable as well as redux state to at least survive a page reload. ( https://github.com/yelouafi/redux-saga/issues/22, https://github.com/yelouafi/redux-saga/issues/5 )
Related: https://github.com/reactjs/redux/issues/1098
Related, about action types convention: https://github.com/reactjs/redux/issues/786
Related: https://github.com/reactjs/redux/issues/913
Related: https://github.com/reactjs/redux/issues/943#issuecomment-150712338
Related, reducer logic customization: BurntCaramel/flambeau reducer props
https://github.com/erikras/redux-form
https://github.com/tonyhb/redux-ui
https://github.com/erikras/multireducer
https://github.com/acdlite/reduce-reducers
https://github.com/artsy/react-redux-controller
https://github.com/Wildhoney/ReduxLocal
https://github.com/gcazaciuc/redux-fractal
https://github.com/tomchentw-deprecated/redux-component
https://github.com/wcjohnson/redux-components

Similar discussion, but not so broad: https://github.com/rackt/react-redux/issues/123

Similar discussion, but about just actions / reducers / side-effects: https://github.com/rackt/redux/issues/1171

Related: https://github.com/yelouafi/redux-saga/issues/62
Though I'd like to avoid sticking to redux-saga until these sagas' state is serializable as well as redux state to at least survive a page reload. ( https://github.com/yelouafi/redux-saga/issues/22, https://github.com/yelouafi/redux-saga/issues/5 )

Related: https://github.com/rackt/redux/issues/1098

Related, about action types convention: https://github.com/rackt/redux/issues/786

Related: https://github.com/rackt/redux/issues/913

Related: https://github.com/rackt/redux/issues/943#issuecomment-150712338

Related, reducer logic customization: BurntCaramel/flambeau reducer props

Related:

https://github.com/erikras/redux-form
https://github.com/tonyhb/redux-ui
https://github.com/erikras/multireducer
https://github.com/acdlite/reduce-reducers

tl;dr: Use The Elm Architecture
Here's my proposal:

Not sure how widespread is the problem, but I encounter it from time to time. I hope the developers from the front-end community encounter similar problems, too.

Unless you like spaghetti code, the problem is indeed very widespread, because by default Redux does not force you to encapsulate (except combineReducers but that's not enough) and therefore componentize.
I believe The Elm Architecture has found the solution for all the problems above.
The principle behind The Elm Architecture is basically just simple composition. People who are using Redux nowdays definitely knows of composition... we are composing our views, state and even reducers
The Elm Architecture is doing same - except one small thing, it's composing Actions and Side Effects as well. Just imagine you could have something like:
{
  type: 'PARENT_ACTION',
  payload: {
    type: 'CHILD_ACTION',
    payload: 'foo'
  }
}

Fairly simple concept which solves everything.
Before reading following explanation I highly encourage you to go through The Elm Architecture description

can be instantiated more than once, maybe simultaneously (not a singleton)

Just compose actions and add ID of the instance so the hierarchy could look like Counters.Counter.1.INCREMENT where 1 stands for the index of the Counter. example in Redux

each instance can have its own configuration

Have an init action, which configures the instance (Using Action composition).

can query and manipulate the global environment:

This means to make the component capable of Side Effects... Elm solves this by reducing them in updater function (Updater is same as reducer in Redux). With Redux, there are store enhancers which supports this kind of functionality already. Please keep in mind that using Generators for side effects is opinionated and has its drawbacks, but you can always use plain old reduction as Pair<AppState,List<Effects>> which works without generators too. example in Redux

can depend on the app state:

Parent components should be responsible for orchestrating inter-component communication => therefore just simple composition, I blogged about this.

should not pollute the environment

Every Component in The Elm Architecture is independent and isolated, there's no way to access parent's component state in the child component.

when used from another app, the component should be reused, not copy-pasted

And because Components are isolated, it's fairly simple to integrate it into any other redux-based application. example in Redux

@tomkis1 Thanks for this great overview! I'm familiar with the Elm Architecture, but the missing piece was this library https://github.com/salsita/redux-elm/ which looks like new kid on the block.
Several real-world questions aren't yet answered for me, but I'll study the examples from this repo first.

@sompylasar Please keep in mind that it's not a framework nor library, it's just a proof of concept that we can write Elm like programs using redux. Good thing is that using this approach will solve many problems  which otherwise needs some solution while using redux.

@tomkis1 I like the Elm architecture and it seems perfect to handle local component state, however I think it's missing something for real world apps.
Wrapping actions according to the dom tree structure means at the top your mailbox basically only receive some kind of global action like APP_STATE_CHANGED, and it's the deeply nested payload of that action that actually holds the useful action. So if you have an app with a lot of counters everywhere, at very different nested levels, it seems pretty hard for me to listen to ALL the increment actions of ALL counters, and display that value somewhere.
I've written something here and did not get any good answer but maybe you can try to solve my counter problem? https://github.com/evancz/elm-architecture-tutorial/issues/50
By the way, I'd appreciate if you wanted to contribute to this TodoMVC-Onboarding with an Elm architecture solution.

@sompylasar maybe the DDD part of my anwser here can interest you: https://github.com/rackt/redux/issues/1315#issuecomment-179164091

@slorber :+1:

@sompylasar Thanks for the kind words in https://github.com/reactjs/redux/issues/419#issuecomment-183775729.  I believe everything in my article, React, Automatic Redux Providers, and Replicators, covers most of your questions and provides solutions for nearly all of them.  I'd be glad to answer any specific questions.  In advance, if you can include some background/reasoning behind your questions, it would help me answer them to the best of my ability.  :)

@timbur Yes, thank you, I'm very excited with the article, that's exactly what I was looking for. I'm still reading it now, I'll ping you here if something comes into mind. One thing for now is I wonder how would redux-saga fit into the proposed architecture.

In our applications we solved problem of isolating component's logic in a connect-like style. https://github.com/Babo-Ltd/redux-state

More ideas here: https://github.com/reactjs/redux/issues/1385#issuecomment-184805927

Relevant new discussion: https://github.com/reactjs/redux/issues/1528

Encounter just the same problems, and haven't found any practical solution yet. I will keep my eye on it.

Related: https://github.com/reactjs/redux/blob/master/docs/recipes/IsolatingSubapps.md

I've been playing around with the Elm (0.16) architecture for a while -- there are two main issues in regards to using that architecture with Redux:

its less performant (unless you're really clever about it) because every time you map over dispatch (i.e. action => dispatch({type: 'childAction', action})) you create a new function references which forces the component to be re-rendered on every state change.

with better encapsulation comes a tradeoff with the amount of plumbing you have to do to communicate between components (much like React with local state).

If you're interested, here's some of my latest examples of playing around with the elm pattern:
https://github.com/ccorcos/elmish/tree/narrative/src/tutorial

Had a look at @sompylasar article and try out the example. It's great in term of reducing boilerplate, but I couldn't find any part solving the problem with reusing complex component.
On the other hand, I stumble into this library which seems to solve the exact problem https://github.com/datadog/redux-doghouse. It's comparable to the redux-elm (now called prism) solution, I think.

Just stumbled across this discussion and thought I'd drop a link in to my library for solving this problem, redux-subspace.  It creates a sub-store (backed by the root store) and can automatically namespace actions to isolate them from the parent components.
It has been designed so that the complex child components (which we have dubbed micro-frontends, but we have used it on really small complex components too) are completely unaware that they are in a "subspace" instead of a regular react-redux provider.  The parent component decides where in it's state (which could also be a subspace for all it knows) the child component's state is kept which make it really resilient to refactoring, multi-instance and reuse in multiple apps (we use redux-subspace for all these cases).

Neat stuff. I was actually thinking about building a "next gen" Redux that takes the concept of composable stores to the core, letting you individually enhance and maintain them, but also link them together in interesting hierarchies.

For what it's worth, I've collected a list of all of the "per-component state" and "encapsulated store"-type libs that I've seen in the Component State and Encapsulation section of my Redux addons catalog.  And yes, that includes both redux-doghouse and redux-subspace already :)
Tim, drop by Reactiflux sometime and we can chat about that idea.

@markerikson (and anyone else for that matter), can you offer any words of wisdom when it comes to choosing a namespacing library? I used prism to build a google maps autocomplete component, that also used redux-observable. I don't like the implementation, and am hoping to find something better. The main thing that doesn't smell right to me is how prism monkey patches the store, so that dispatching global actions no longer works correctly. Sagas and epics also don't work as expected and require a bit of extra plumbing to get going. Do you have a favorite fractal component lib or pattern?

@jcheroske : I haven't actually played with any of the libs in my list, just cataloged them :)  I think it would be great if someone did compare a whole bunch of them and write up some thoughts on similarities, differences, and use cases, but I've got way too much other stuff on my plate to tackle that myself.
I'm a bit curious what you mean by "monkey patches the store".  I skimmed the Prism source and didn't see anything obvious, unless you mean the part in prism-react where it overrides the fields in the store object passed down through context.  I've seen several other libs use that approach as well.  It's not a "standard" technique, but it seems like a valid approach for certain problems like this.

Yeah, that's what I'm talking about. It works, until you want to bust out of the sandbox. Say you wanted to call an action creator that's part of a 3rd-party lib, like react-redux-form. All of the actions dispatched will get prefixed, which is probably not what you want. So there needs to be some kind of escape hatch. Or better yet, scope the actions by using a separate scope property of the action, instead of prefixing the action type. Then you can dispatch all you want. If a reducer wants to look at the scope field and respond accordingly it can. But if it just wants to look at the action type and fire for all actions of that type it can.
On the flip side of that, there is the issue of epics and sagas. Since they are part of the fractal component, they need scoping applied. I have yet to see a lib ship with helpers that scope those. I wrote a wrapper that scopes epics, but it's ugly. Due to how the observable pipeline works, it's hard to unwrap and re-wrap actions. Essentially, it's that the observable metaphor makes it hard to pass metadata down the chain without creating a container object to hold everything. See https://github.com/ReactiveX/RxJava/issues/2931 to understand the issue. I'm about to give redux-logic a try, as it seems to be the best side-effect approach I've seen so far.

@jcheroske I don't want to sound too much like I'm spruiking my own library here, but redux-subspace gets around around the 3rd party issue by allowing either the component or the app specify actions as global actions.
We are also currently working on sagas-support and definitely open to looking at the observable pipeline to see if we can sort a solution for that.
We also opted for the store wrapping approach, so if that still makes you uncomfortable, then no hard feelings.

@mpeyper what state gets added to an action to scope it? Do you alter the type with something like a prefix, or do you add a new property? I ask because I think the latter approach may have some advantages, but I haven't actually tried it out.

@jcheroske, we prefix the type.
There are advantages and disadvantages to both approaches, and neither will be work in all cases, all the time.
One of my favourite advantages of the prefix approach is it makes tracing actions in the redux dev tools really easy.
In the end, the prefix approach was what we were already doing manually at my company so it made transitioning to subspace a bit smoother.
I actually have a stash somewhere where I also added a scope property to the action, but I couldn't see enough use cases to have both.
I don't want to derail this discussion too much so feel free to come have a discussion in our repo (just raise an issue with questions or comment).
p.s. I may have cracked the isolated sagas problem last night (Australian time)

Excited to see more people take serious stabs at this, as it is still one of the major unsolved problems in the Redux ecosystem 👍👏

@dalgard, I totally agree. I'm going to follow @mpeyper's suggestion, and start up a conversation over in his repo. I think one thing that's needed is a clear list of use-cases. Then we could see which approaches handle which cases. That list @markerikson linked to is sort of demoralizing in a way. It shows that everyone is basically rolling their own fractal lib, and that there is no consensus within the redux community as to what approach is best. And yet, any serious project runs into this reuse issue sooner or later. The community desperately needs one lib to rise above the rest and become the standard.
After using prism, I feel that, in order to co-exist and interoperate with the larger redux ecosystem, the fractal lib must support 3rd-party actions transparently. Fire an action, be it apollo, redux-form, or whatever, from within a fractal component, and it should just work. No tagging of the action as global. No config options. Just dispatch and it works. This shouldn't be viewed as a violation of encapsulation, as 3rd-party libs already often have a scoping mechanism built in.
So global actions are really fundamental to redux, and making them second-class citizens really goes against the grain. Likewise, global state is fundamental to redux. Being able to grab what you want from anywhere is just how it needs to be done sometimes. And yet, scoping the state is a requirement of a true fractal component. We do already have selectors though. Perhaps the state scoping could be accomplished via an auto-generated selector, instead of wrapping getState(), so that both the scoped state and the global state is easily available?
So, I'd like to know the shortcomings of the following approach:

Scope actions by wrapping dispatch with a decorator that adds a scope property to actions. Similar to the type prefixing approach, but won't break global action dispatch.
Scope the state somehow, but also provide the global state. Really have no idea what approach would be best here.

Just some ideas to bounce around I guess.

I'm thinking autogenerated lenses would be useful.

I think I'd better leave that to the internet, I'm still learning all the functional stuff myself.
https://medium.com/@dtipson/functional-lenses-d1aba9e52254

FWIW, lenses / cursors / actions with "state paths" are not exactly the encouraged approach with Redux.  I linked and quoted Dan's prior comments on how they related to Redux in my post The Tao of Redux, Part 1 - Implementation and Intent.

@markerikson I can't find Dan's comments about lenses in your post, can you help me? It is difficult for me to see why they would be in contrast to the philosophy of Redux.

Another idea would be to have each component add to a selector/lens that is passed down via context.

I think this should probably be the ideal here: https://github.com/staltz/cycle-onionify/
If something like that could be implemented for Redux – that is, without observable streams – that would be great!

@dalgard : Woops, my bad - Dan's comments are in Part 2, not Part 1.  The specific anchor in that post is http://blog.isquaredsoftware.com/2017/05/idiomatic-redux-tao-of-redux-part-2/#cursors-and-all-in-one-reducers .
Basically, Dan doesn't like the idea of "write cursors" because it's impossible to trace what part of the app actually triggered an update to a given portion of state.

@dalgard, FWIW, at my company we have another library we are using internally that uses subspace  and an dynamic reducer solution to make it all a bit more automatic.
Basically, it's a HOC that injects the reducer on mounting and then wraps the WrappedComponent in a subspace using the new reducer's node as the root of it's state.
I actually wrote it a while ago, but we have only just started to use in in our apps, so after it's been road tested a bit more, we plan to open source it as well.

@mpeyper Sounds like what I'm talking about 👍 Looking forward to seeing it in public.

@markerikson From your post, it appears that Dan is discouraging the use of cursors as an alternative to reducers, which is obviously bad.
In my thinking, every reducer would the root state (and could thus be composed rather than combined with a map) but changes it through a lens that is available to it somehow.

What are your thoughts on just creating multiple redux stores:
From https://github.com/reactjs/react-redux/blob/master/docs/api.md#examples-2

import {connect, createProvider} from 'react-redux'

const STORE_KEY = 'componentStore'

export const Provider = createProvider(STORE_KEY)

function connectExtended(
  mapStateToProps,
  mapDispatchToProps,
  mergeProps,
  options = {}
) {
  options.storeKey = STORE_KEY
  return connect(
    mapStateToProps,
    mapDispatchToProps,
    mergeProps,
    options
  )
}

export {connectExtended as connect}

And then just use the above connect and Provider

Should allow multiple instances of the complex component as long as they are not nested one inside another. Though I am not sure of if the different branches of component structures have different context or its just one global context object. If different branches have different context then multiple instances would be ok, but if its the same then one instance might override the store of another instance. Even in that case these can just take the STORE_KEY as argument and return the necessary connect and Provider.
Should solve most of the requirements but still haven't figured how to hydrate state from SSR.

@azizhk Multiple stores are definitely one of the ways. I used this approach when I was gradually introducing React components as mini-apps into a large app with a proprietary component framework, but I used createStore in each of the React components to create the private stores. There are several libraries on npm that implement that approach differently, I think the References section links to them.

I just had an idea related to SSR (server-side rendering) and and state restoration of the multiple instances of a complex component that are plugged into the shared state tree, with a shared reducer and shared actions. Each instance needs an identifier that is included into the dispatched action objects to tell the reducer which state object to operate on. Some libraries use a user-provided identifier (the user needs to generate and provide that identifier), some generate a random unique identifier (not restorable because the identifier is generated anew on component mount). One more way to make that identifier is to calculate a hash of the serializable props of that component. This way components with the same values of the props provided from the outside (the ownProps of mapStateToProps) will connect to the same state object; components with different props will connect to different state objects.

Here is a solution of our team.https://github.com/hapood/redux-arena
Redux-Arena will export Reudx/Redux-Saga code with React component as a high order component for reuse:
When hoc is mounted, it will start Redux-Saga task, initializing reducer of component, and register node on state.
When hoc is unmounted, it will cancel Redux-Saga task, destory reducer of component, and delete node on state.
Reducer of component will only accept actions dispatched by current component by default. Revert reducer to accept all actions by set options.
Virtual ReducerKey: Sharing state in Redux will know the node's name of state, it will cause name conflict when reuse hoc sometime. Using vReducerKey will never cause name conflict, same vReducerKey will be replaced by child hoc.
Like one-way data flow of Flux, child hoc could get state and actions of parent by vReducerKey.
Integration deeply with Redux-Saga, accept actions dispatched by current component and set state of current component is more easily.

@hapood isn't it a bit similar to https://github.com/threepointone/redux-react-local?

@slorber Yes, very similar, only feature excluded in redux-arena is vReducerKey.

Some people here might be interested to know that redux-subspace v2 (previously mentioned) was just released and now comes with support for redux-promise, redux-saga, redux-observable and redux loop (as well as still supporting redux-thunk).

where to put reducers, actions

http://nicolasgallagher.com/redux-modules-and-code-splitting/
https://github.com/akameco/s2s

Use The Elm Architecture

https://github.com/gcanti/elm-ts


Merge dev into master

Coverage remained the same at 100.0% when pulling 1eb89d753bf1ddd57eb2c5eb4085f59d48326307 on dev into 36450be3c232bb48da53eb4e35041efa26a4797b on master.


The uploader is not respecting memory

Given a recent process kill, the uploader is either:

storing the chunks being uploaded in memory as opposed to disk
has a memory leak

Both of those scenarios are unscalable. Fingers point at the uploader as:

there was at least one active upload going on, and it corresponded to the last log entries from the webserver
the webserver was "Killed"
at approximately the time the webserver was killed (no timestamps, but guessing due to time of day), a python process was forcefully killed by the kernel oom-killer

@josenavas have you been able to test this?

This hasn't happened since this was reported, almost a year ago. My guess is that there was a conflict between the ipython controllers being ran in the main node together with the webservers. Now, we are running only the webservers in the main node, the controllers are in the queue. Can we close?

I'm going to close as this hasn't been an issue for a year now. Please reopen if you think otherwise.


Modelmetadata provider should throw if it detects more than one  IBinderMetadata associated with a model

Current behavior is using FirstOrDefault we should change it to SingleOrDefault with appropriate exception.
https://github.com/aspnet/Mvc/pull/1546/files#diff-4d8c97ccbb19f56bde7a555943db021aL41

Dup of #1597.


[Gekidou] bug fixes

Summary

Add space to bottom of channel content
Clicking username/avatar in channel crashes app
Loading state of server item button is misaligned
user is typing shows on channel rather than thread and styling

Ticket Link

https://mattermost.atlassian.net/browse/MM-44005
https://mattermost.atlassian.net/browse/MM-43998
https://mattermost.atlassian.net/browse/MM-44033
https://mattermost.atlassian.net/browse/MM-44035

NONE

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/22409
https://circleci.com/gh/mattermost/mattermost-mobile/22408

Artifact links:
https://output.circle-artifacts.com/output/job/c6e480aa-55db-4bc9-8b94-7043865d66c1/artifacts/0/tmp/artifacts/Mattermost_Beta.ipa
https://output.circle-artifacts.com/output/job/1d911e71-fe99-42ab-8f3f-ea3d747a4566/artifacts/0/tmp/artifacts/Mattermost_Beta.apk

Add space to bottom of channel content

✅ Looks good

Clicking username/avatar in channel crashes app

✅ No crash now - just the temp alert dialog which is better

Loading state of server item button is misaligned

✅ Alignment fixed now

user is typing shows on channel rather than thread and styling

❎ I am not seeing the indicator at all now when another user is typing in either the channel or the thread view

I am not seeing the indicator at all now when another user is typing in either the channel or the thread view

yeah, me neither,.. let me check what happened

@matthewbirtch maybe test on a channel that does not have a lot of users I believe there is a restriction that does not send the WS when there are a lot of users IIRC

I was testing on a cloud test server of mine which only has a couple users. For some reason it seems the WS evens were not firing properly

@matthewbirtch if you open the server list, does it show an alert that the Server is unreachable ?

@matthewbirtch if you open the server list, does it show an alert that the Server is unreachable ?

no, it's showing normal


JSON Server Publisher uses Latin-1 Encoding, not UTF-8

Software and hardware versions
Aggregate v1.4.7 Production
Problem description
The ODK Aggregate JSON Publisher appears to use Latin-1 encoding, despite seeming to demand UTF-8. This causes failures at least when sending survey data containing the special character é.
65 72 5f 6e 61 6d 65 22 	e r _ n a m e "
3a 22 54 e9 6c 6f 72 22 	: " T . l o r "
7d 5d 7d                	} ] }

Possible fix?
String Entity toString doesn't have charset
I'll submit a PR right now to show the proposed change, but I can't run this on my local machine yet.
Steps to reproduce the problem

Spin up Aggregate on Google AppSpot
Set up a form with an active JSON Alpha Publisher that sends data to a server which will give you access to the binary. I use https://ngrok.com/ so inspect the requests.
Submit data via ODK Collect which includes a special character. I've used "Télor" in this example.
Inspect the POST coming from Aggregate and note that the é is encoded as e9 (binary in hex), rather than c3 a9. (Inspector image below.)

Note that while it's less obvious, you can tell the difference using Requestb.in. In the image below you'll see that the second post (from ODK Aggregate) is Latin-1 encoded—we know this because it only contains 435 bytes, while the first post, made by me using UTF-8 encoding, is 436 bytes.

Expected behavior
Posts to JSON servers should use UTF-8 encoding.
45 6e 74 65 72 5f 6e 61 	E n t e r _ n a
6d 65 22 3a 22 54 c3 a9 	m e " : " T . .
6c 6f 72 22 7d 5d 7d    	l o r " } ] }

Other information
I'm wondering if this is an issue with ODK Aggregate, or with Tomcat. It seems that you can set the request headers, but I'm not a Java developer and haven't spun up ODK Aggregate on my machine.
These are what seem to be the relevant bits:

Defining UTF8_ENCODE in HtmlConsts
Create submissionJsonObj
Send the post using HttpEntity
String Entity toString doesn't have charset—this might be the culprit

@acawood777 thanks for bringing this to my attention
@rorymckinley thanks for digging in with me

@taylordowns2000 Thanks for tracking the issue down!
This is currently problematic for us as we use the JSON publisher exclusively.
Every time we get a submission with one of these characters the JSON endpoint responds with something other than a 200, and the publisher then gets stuck on that submission, doing endless retries without progressing.

It would seem that @taylordowns2000 does indeed work.
The text that was used:

And the binary that was received for the text:

The é is encoded as c3 a9

That's fantastic. Thanks for the test @jovaee . I'm closing this as @mitchellsundt has implemented the change in the uimaster branch of aggregate. Will reference this on that commit.


Remove expensive lodash functions

Hello!
This is my attempt at #115. I managed to do most of the work, but some tests are failing mostly due to replacing the _.merge function. I don't know of an approach that would replicate Lodash's behavior, as iirc it does a deep merge, while ES6's spead operator only works on depth 1.
Feel free to give me suggestions, I'm kinda lost at this point :p

Hey @RodrigoLeiteF thanks for trying to solve this issue. In the end I went for the solution in #132
Will close this PR as it is a duplicate.
Cheers


Implement thaliMobile

Reviewed 5 of 5 files at r1.
Review status: all files reviewed at latest revision, 9 unresolved discussions, some commit checks failed.

test/www/jxcore/bv_tests/testThaliMobile.js, line 210 [r1] (raw file):
NB: Nice way, btw, of using spies as a built in counter.

thali/NextGeneration/thaliMobile.js, line 156 [r1] (raw file):
Does it seem at all odd that if someone calls start and both thaliWifiInfrastructure and thaliMobileNativeWrapper return an error that we are still in thaliMobielStates.started = true? Of course if even one is true then we do return true. So maybe it makes sense. Not sure.

thali/NextGeneration/thaliMobile.js, line 593 [r1] (raw file):
Why do you stringify and then parse it? Shouldn't that be a noop?

thali/NextGeneration/thaliMobile.js, line 680 [r1] (raw file):
NB:
var unavailabilityThreshold = connectionType === connectionTypes.TCP_NATIVE ? ThaliConfig.TCP_PEER_UNAVAILABILITY_THRESHOLD : ThaliConfig.NON_TCP_PEER_UNAVAILABILITY_THRESHOLD;

thali/NextGeneration/thaliMobile.js, line 694 [r1] (raw file):
Let's imagine this is a non-tcp peer and let's further imagine that it hasn't gotten an update in awhile and thaliMobile decides to declare it not present. What is thaliMobileNativeWrapper doing? In other words when thaliMobileNativeWrapper sent up the peerAvailability event it sent along with it a port number it was listening on for connections to that peer. If thaliMobile has decided that the peer is no available then nobody is going to call that port (at least not unless another peer availability event shows up). So do we just let thaliMobileNativeWrapper sit on that port waiting for a connection that will never come? Does thaliMobileNativeWrapper have its own separate logic for when the peer won't be available and when it will clean things up? Certainly the native layer has its own logic on these things. Are we depending on that native layer to eventually send up a peerAvailability event saying the peer isn't available? Who is going to make sure that the port is closed?

thali/NextGeneration/thaliMobile.js, line 734 [r1] (raw file):
Is this just for debugging purposes or is it supposed to do something?

thali/NextGeneration/thaliMobile.js, line 859 [r1] (raw file):
What this error really means is that tcpServersManager set up a mux listener and sent it to the native layer and the native layer tried to connect to it and the connection failed. So the question becomes - when and how could that happen? And what, if anything, should we (or anyone else) do about it?

thali/NextGeneration/thaliWifiInfrastructure.js, line 125 [r1] (raw file):
Why is there a comma after true? Shouldn't it be || and the next two are supposed to be together in one expression with an && in between?
What the logic you wrote above will do (with the comma) is evaluate self.states.stopping === true to true and discard that result and then just run the && statement below. This is called the comma operator and it is fairly evil.
This also argues that you're short at least one test, the one that would have detected this. :)

thali/NextGeneration/thaliWifiInfrastructure.js, line 285 [r1] (raw file):
And it is the fact that you caught this that lets me sleep at night. :)

Comments from the review on Reviewable.io

Review status: 3 of 6 files reviewed at latest revision, 9 unresolved discussions.

thali/NextGeneration/thaliMobile.js, line 156 [r1] (raw file):
The way I was thinking about it is that the thaliMobileStates reflect what the caller of thaliMobile would want the states to be. So, even if one of the underlying starts fails, thaliMobile would get into a start state.
When network conditions change, thaliMobile will try to call underlying starts again since it kind of "guesses" that the failure to start may have been due to some radio being off.
If the upper layer wants a more specific handling for certain start error, the error message is bubbled upwards and such handling can be implemented in upper layers.

thali/NextGeneration/thaliMobile.js, line 593 [r1] (raw file):
This is a way to do a copy of the object so that we don't emit the same object that we cache. This was mainly done since the cached peer has a custom availableSince property that we don't want to get emitted.
I am going the stringify -> parse now in a few places so it could be refactored into a utility function like "copy data object". I'll do that next time I need this functionality.

thali/NextGeneration/thaliMobile.js, line 680 [r1] (raw file):
Done.
Yep - much better.

thali/NextGeneration/thaliMobile.js, line 694 [r1] (raw file):
This is a good question and I am not sure what approach would result into simplest and most robust solution. Should we create this as a separate issue under which we would decide the approach we take, i.e., take it offline from this PR?

thali/NextGeneration/thaliMobile.js, line 734 [r1] (raw file):
Debugging purposes.
When testing different network conditions on device (like switch Wifi off and then on), I wanted to have something printed in the logs when things don't match.
This could be gotten rid of at some point if seen too verbose, but I'd like to keep it still.

thali/NextGeneration/thaliMobile.js, line 859 [r1] (raw file):
That is right.
Based on my knowledge so far, we could handle this event within thaliMobileNativeWrapper and there would not be a need to handle it in thaliMobile.
I pushed a commit to this PR that removes this section from the specification to mark that we should handle it in thaliMobileNativeWrapper (that file already contains instructions about handling it).

thali/NextGeneration/thaliWifiInfrastructure.js, line 125 [r1] (raw file):
Done.
Clear mistake from me that I fixed.
Also a fair point about the test so added a test that would have shown this issue.
ps. I wish editors would at least warn if comma operators are used within if clause conditions - I bet people rarely really want to do that..

Comments from the review on Reviewable.io

Reviewed 3 of 3 files at r2.
Review status: all files reviewed at latest revision, 2 unresolved discussions.

thali/NextGeneration/thaliMobile.js, line 694 [r1] (raw file):
Please do.

thali/NextGeneration/thaliWifiInfrastructure.js, line 125 [r1] (raw file):
IntelliJ does warn about this.

Comments from the review on Reviewable.io

Review status: all files reviewed at latest revision, all discussions resolved.

thali/NextGeneration/thaliMobile.js, line 694 [r1] (raw file):
Done.
https://github.com/thaliproject/Thali_CordovaPlugin/issues/589

Comments from the review on Reviewable.io


support slicing of distributions

Support numpy like slicing of distributions.

Codecov Report

Merging #645 into master will increase coverage by 0.22%.
The diff coverage is 91.17%.

@@            Coverage Diff             @@
##           master     #645      +/-   ##
==========================================
+ Coverage   83.71%   83.93%   +0.22%
==========================================
  Files         178      178
  Lines       10285    10342      +57
==========================================
+ Hits         8610     8681      +71
+ Misses       1675     1661      -14

Impacted Files
Coverage Δ

src/gluonts/distribution/dirichlet.py
98.73% <100%> (+0.04%)
:arrow_up:

src/gluonts/distribution/piecewise_linear.py
100% <100%> (ø)
:arrow_up:

src/gluonts/distribution/mixture.py
96.62% <100%> (+0.07%)
:arrow_up:

src/gluonts/distribution/binned.py
96.61% <100%> (+1.69%)
:arrow_up:

src/gluonts/distribution/multivariate_gaussian.py
98.38% <50%> (-1.62%)
:arrow_down:

src/gluonts/distribution/distribution.py
84.11% <87.5%> (+0.99%)
:arrow_up:

...c/gluonts/distribution/transformed_distribution.py
95% <94.11%> (-0.3%)
:arrow_down:

src/gluonts/distribution/neg_binomial.py
98.52% <0%> (+1.47%)
:arrow_up:

src/gluonts/distribution/beta.py
98.5% <0%> (+1.49%)
:arrow_up:

src/gluonts/distribution/laplace.py
100% <0%> (+1.66%)
:arrow_up:

... and 6 more

Codecov Report

Merging #645 into master will increase coverage by 0.22%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #645      +/-   ##
==========================================
+ Coverage   83.71%   83.93%   +0.22%
==========================================
  Files         178      178
  Lines       10285    10342      +57
==========================================
+ Hits         8610     8681      +71
+ Misses       1675     1661      -14

Impacted Files
Coverage Δ

src/gluonts/distribution/neg_binomial.py
98.52% <0.00%> (+1.47%)
:arrow_up:

src/gluonts/distribution/beta.py
98.50% <0.00%> (+1.49%)
:arrow_up:

src/gluonts/distribution/laplace.py
100.00% <0.00%> (+1.66%)
:arrow_up:

src/gluonts/distribution/student_t.py
100.00% <0.00%> (+1.66%)
:arrow_up:

src/gluonts/distribution/binned.py
96.61% <0.00%> (+1.69%)
:arrow_up:

src/gluonts/distribution/uniform.py
93.10% <0.00%> (+1.72%)
:arrow_up:

src/gluonts/distribution/gamma.py
98.21% <0.00%> (+1.78%)
:arrow_up:

src/gluonts/distribution/poisson.py
98.18% <0.00%> (+1.81%)
:arrow_up:

src/gluonts/distribution/bijection.py
90.90% <0.00%> (+9.09%)
:arrow_up:

What is the problem with multivariate distributions? I guess it only makes sense to slice within the set of “batch” dimensions, right?

Yes, if you only slice the batch dimension it should be relatively easy (maybe we can add this later?). You could also support slicing the event dimension but that would be more complicated.

I was looking back at this, it's really a beauty to use.

Yes, if you only slice the batch dimension it should be relatively easy (maybe we can add this later?)

Yeah I think it would make sense to slice along the batch dimension only, why not


cabal file on hackage lags in deps

you have updated the bounds of tasty-hedgehog here on github, but on hackage the bound <1.4 is still present. haven't checked doctest but it might have the same issue.

Hi, thanks for the heads up. Can you clarify the problem you are encountering? I am looking at the latest revision for each release, and they seem up to date to me:

<IP_ADDRESS>
0.2
0.3

In particular, the tasty-hedgehog bounds are all <1.5.

Ah sorry, I must have been looking at the original Cabal file instead of the revision. Apologies!

No problem, thanks for checking!


ARROW-17320: [Python] Refine pyarrow.parquet API exposure

Fixes ARROW-17320
Added a deprecation for _filters_to_expression -> filters_to_expression, in https://github.com/apache/arrow/pull/14096/commits/c7fdff3b50ca0fe95ae4c771cee81d4d59aa98d0 let me know if that commit should be dropped. :)

The only comment I would have is about the linter error. If you have seen it already, please ignore me - I have missed this error in the past and so am adding this just in case.
filters_to_expression now need some extra docstrings besides the description:
INFO:archery:Running Python docstring linters

pyarrow.parquet.core.filters_to_expression
PR01: Parameters {'filters'} not documented

I suppose now that it's public, it raises the lint error.

Yes, exactly.

I'll wait until it's confirmed we ought to deprecate it in the first place. I was thinking if it was suppose to go away with the legacy dataset, then might not want to rename it just to remove it later. :)

Makes sense. Let's see what the decision will be - otherwise it could be renamed for a while I guess.

There is still a doc lint error:
pyarrow.parquet.core.filters_to_expression
PR01: Parameters {'filters'} not documented

(the Dev lint failure seems unrelated)

@jorisvandenbossche I think it's okay now, the one failure doesn't seem related.


Increase verbosity of !status reply

Currently the reply to " !status" is just "Currently 2 bots are running". It would be nice to get some more info, like which bots are running and what are they doing right now, how much work (i.e. games/cards) is left, etc.
If that ends up as too much of a flood for bigger cases maybe have a "!status <bot>"?

Doh, looking at the code, that's exactly how it works, it just was not in the list of commands :P

Already suggested it #20, I made a !status all command, that show what every bot is doing.

I guess we can change it so !status issues ResponseStatus() on each bot, and each bot responses with what it's currently doing.

I like where this all going. Maybe someday I wouldn't need to merge & build own version of asf everytime you make some commits...

It's not like I do not want to merge your pull request, I'm grateful for all contributions, but I must make sure that code remains top-quality, so I it won't hurt me later when I implement new things.
As I said, I am looking at them, and implementing when I have some time, like I did recently with WCF.

Better to close this old pull-request, too many changes in master branch since then. I better do new one tomorrow, or even a couple of them, as you suggest.

Dividing them makes it easier for both you and me to cover everything, also increases chances that I can issue a merge without an inner feeling to rewrite the pull request. As I said, I deeply appreciate all contributions, but I must also make sure that code remains top quality, at least to me at the time of writing.

Of course, quality first.

Nobody was born with C# knowledge, it's a good way to improve yourself as well, just by analyzing commits made by other people.

That's one of the reasons I'm interested in your project)


Get Cookie fails if cookie does not have expiry date and return_type=dict.

Get Cookie fails if cookie does not have expiry date and return_type=dict. Example like this:

Keyword should succeed if expiry date does not exist.

Can reproduce in Windows OS only. If I have this test case:
Get Cookie And No Expiry
    New Browser    chromium     headless=True
    New Context
    New Page    about:blank
    Add Cookie    tidii    kala    http://address.com/to/site
    ${cookie} =    Get Cookie    tidii    return_type=dict
    Log    ${cookie}

Then there is this error:
Traceback (most recent call last):
  File "d:\workspace\.venv\lib\site-packages\Browser\browser.py", line 680, in run_keyword
    return DynamicCore.run_keyword(self, name, args, kwargs)
  File "d:\workspace\.venv\lib\site-packages\robotlibcore.py", line 103, in run_keyword
    return self.keywords[name](*args, **(kwargs or {}))
  File "d:\workspace\.venv\lib\site-packages\Browser\keywords\cookie.py", line 205, in get_cookie
    return self._cookie_as_dot_dict(cookie_dict)
  File "d:\workspace\.venv\lib\site-packages\Browser\keywords\cookie.py", line 79, in _cookie_as_dot_dict
    dot_dict[key] = datetime.fromtimestamp(cookie[key])

Added logging and expiry value is -1. I guess the way to fix it suppress the exception and log it.


Logan/eng 469 fix tinacms dependency vulnerabilities

Updates deps to remove vulnerabilities.
One known issue.
When updating next I get this warning
warn  -<EMAIL_ADDRESS>Module not found: Can't resolve 'encoding' in<EMAIL_ADDRESS>
It does not seem to effect anything.

When updating next I get this warning

We should probably make sure we understand why that's happening. Might be related https://github.com/node-fetch/node-fetch/issues/675.

When updating next I get this warning

We should probably make sure we understand why that's happening. Might be related node-fetch/node-fetch#675.

@jeffsee55 I think that is the issue

Some key things to review for the PR

Local image uploads
cloudinary image uploads
General next.js stuff (does the site load, does getStaticProps work, any more warning messages or errors, etc)
Editing a file, click save and see if the changed file is updated in the file system.

@logan-anderson there are some conflicts with main - you want to resolve before we validate this?

@kldavis4 I have update it. Good catch

@logan-anderson
when I run yarn build in tina-cloud-starter in the monorepo I get:
<EMAIL_ADDRESS>Critical dependency: the request of a dependency is an expression

Import trace for requested module:
<EMAIL_ADDRESS><EMAIL_ADDRESS>../../packages/next-tinacms-cloudinary/dist/handlers.js
./pages/api/cloudinary/[...media].tsx

<EMAIL_ADDRESS>Critical dependency: the request of a dependency is an expression

Import trace for requested module:
<EMAIL_ADDRESS><EMAIL_ADDRESS>../../packages/next-tinacms-cloudinary/dist/handlers.js
./pages/api/cloudinary/[...media].tsx

It looks like the build succeeds, so not sure if this is an issue. In the main branch, it fails completely

@logan-anderson

local image uploads seem to be working normally in the tina-cloud-starter
cloudinary image uploads don't seem to be currently testable due to: https://linear.app/tina/issue/ENG-485/cloudinary-not-working-in-tina-cloud-starter-in-monorepo
nextjs stuff seems to be working normally
editing a file works. Creating a new file wasn't testable due to: https://linear.app/tina/issue/ENG-484/create-document-in-tina-cloud-starter-monorepo-fails
svgs seem to load as normal in the tina-cloud-starter

Everything in the validation list is now working for me.
@jamespohalloran do we need to make corresponding changes in the standalone tina-cloud-starter repo?

Yep I think all our starters will have to upgrade next, and tinacms once this is out


log4j configuration is being supplied with the library

Thanks. And sorry, but my mobile app went a little crazy and somehow your description got lost. But not before I read it.
Your issue title is on point, though.
Ok, so would you agree that it is harmless to provide logj properties or xml if it targets specific library  packages? Because I was actually considering packaging 'sensible'  default configurations for all major logging implementations and then let users override it with their own configuration.
What do you think?

Odd how the description got dropped.
I think the idea with libraries is generally that they can leverage slf4j so that they don't need to provide any other logging information.
The user of the library just includes the correct slf4j connector and configure their own logging as they need.  If they need special logging levels from a library, they can just enable that in their local configuration file by enabling them for the package path for the classes in that library.
Sample log configurations could be provided, but I don't think that most people would use them.  I definitely don't think they should be included in the standard packaging of the library.
A little bit of stackoverflow wisdom on this issue:
https://stackoverflow.com/questions/31138140/should-i-put-log4j-properties-file-into-library
http://stackoverflow.com/a/5081386/622115 (check the comments).

Agreed. I'll exclude the config files from the distributions.


some styles like underline do not work

So far, I've found that the underline and through styles don't work correctly

@forMine: I've just been battling the same issue. Turns out there's a lot of common WYSIWYG features which are missing in MD.
For this example, we assume ++ wraps underline...
import { convertToRaw } from 'draft-js';
import { draftToMarkdown } from 'markdown-draft-js';

export const extendedStyleItems = {
  UNDERLINE: {
    open: function open() {
      return '++';
    },

    close: function close() {
      return '++';
    },
  },
};

export function draftToMarkdownWrapper(editorState) {
  return draftToMarkdown(
    convertToRaw(editorState.getCurrentContent()),
    {
      styleItems: extendedStyleItems,
    },
  );
}

@forMine: I've just been battling the same issue. Turns out there's a lot of common WYSIWYG features which are missing in MD.
For this example, we assume ++ wraps underline...
import { convertToRaw } from 'draft-js';
import { draftToMarkdown } from 'markdown-draft-js';

export const extendedStyleItems = {
  UNDERLINE: {
    open: function open() {
      return '++';
    },

    close: function close() {
      return '++';
    },
  },
};

export function draftToMarkdownWrapper(editorState) {
  return draftToMarkdown(
    convertToRaw(editorState.getCurrentContent()),
    {
      styleItems: extendedStyleItems,
    },
  );
}

How to handle this while converting markdown to draft syntax?

If you check out remarkable's documentation (this lib uses remarkable) you can turn on underline support with their extra options! Then you need to also pass in options for how it should map to draftjs (see the readme on this repo for that part)

Thanks @Rosey for such a quick reply. I will check the documentation once more, I couldn't find that option when I checked last time. It would be awesome if there are any samples which you can point out.
Thank you so much

@Rosey I tried this
markdownToDraft("Test string with bold and ++underline++", {
remarkableOptions: {
enable: {
inline: "ins",
},
},
})
but doesn't seems to work. Am I missing something?
As per this https://jonschlinkert.github.io/remarkable/demo/ clearly '++' syntax looks like a underline one.

@maheshchauhan-terem After enabling in remarkable you'll also need to pass in custom blockStyles to map the remarkable key to the draftjs version.  Try
markdownToDraft("Test string with **bold** and ++underline++", {
    blockStyles: {
      'ins_open': 'UNDERLINE',
    },
    remarkableOptions: {
      enable: {
        inline: "ins",
      },
    },
  })

You are awesome @Rosey . Thank you so much 🤩

Hi, thanks for this great library. Can't figure out ++UNDERLINED TEXT++ isn't parsed in the editor? is there any more configuration I'm missing aside from the codes above? I did that and seems like it is parsing correctly to the markdown specified (++) and as well as rendering as UNDERLINE when converting the value from markdown to draft. But doing ++TEXT++ not parsed when typing the text.

Hi, thanks for this great library. Can't figure out ++UNDERLINED TEXT++ isn't parsed in the editor? is there any more configuration I'm missing aside from the codes above? I did that and seems like it is parsing correctly to the markdown specified (++) and as well as rendering as UNDERLINE when converting the value from markdown to draft. But doing ++TEXT++ not parsed when typing the text.


Update scanvi tutorial

@M0hammadL could you give me rights to push without a review?

Strange you are admin I guess, will look

Ok, now i see how to do it.


[Feature]  flink engine can support flink1.14.5

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Problem Description
Flink1.14.5 has some features and I want use the new feature by the flink engine of linkis.
Description
No response
Use case
No response
solutions
No response
Anything else
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

提供最新版DataSphereStudio全家桶安装服务。
包括（DataSphereStudio, Linkis, Exchangeis(Datax, Sqoop), Scriptis, Streamis(Flink), Visualis, DolphinScheduler)

另外包含 元数据，数据安全，数据质量，数据血缘。（这些都是DataSphereStudio不自带的服务）
包含hadoop集群搭建（hive, spark, flink, kafak, kylin）
提供上述所有系统二次定制开发服务
提供系统搭建运维疑难问题解决

添加备注，DSS大数据
持续为DataSphereStudio开源贡献力量


📎 Implement lint/noGlobalEval - eslint/no-eval

Description
Implement no-eval without rule options.
In contrast to the Eslint rule, I think we should not warn against local variables named eval.
In other words, teh following code should be valid:
function f(eval) {
    eval("var a = 0");
};

However, we could report all use of eval including when we pass it to a function or assign it somewhere:
f(eval) // should report this
const evalAlias = eval; // should report this

Want to contribute? Lets you know you are interested! We will assign you to the issue to prevent several people to work on the same issue. Don't worry, we can unassign you later if you are no longer interested in the issue! Read our contributing guide and analyzer contributing guide.
Implementation notes
The implementor could use the biome_js_syntax::global_identifier helper function.

@Conaclos Can I take this issue?


implement aggregator for old ffmap-backend

it's not possible to import data from ffmap-backend#master … only dev-branch is supported at the moment. Most communities are still running master, so master should be supported, too.

recent version actually works with the old data


Ruff crashed when checking code in jupyter notebook. It failed to handle non-ascii characters correcly.

Ruff: Lint failed (
error: Ruff crashed. If you could open an issue at:
https://github.com/astral-sh/ruff/issues/new?title=%5BPanic%5D

...quoting the executed command, along with the relevant file contents and pyproject.toml settings, we'd be very appreciative!
thread 'main' panicked at /rustc/a28077b28a02b92985b3a3faecf92813155f1ea1\library\core\src\str\mod.rs:660:13:
byte index 2 is not a char boundary; it is inside '且' (bytes 0..3) of 且类型为枚举SupportType中的类型
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
)

Hy @LENAX I'm sorry you ran into this issue. What ruff version are you using? It should be fixed in ruff 0.1.9 or newer (see https://github.com/astral-sh/ruff/pull/9146)

I was using version 0.1.8. Thanks for reminding me to upgrade.


Meltano Install with Running Processes leads to broken venvs

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/2876
Originally created by @vischous on 2021-08-04 20:40:56

meltano install -p 20
I have multiple processes running using the same meltano directory. Something like 25 taps/targets in this meltano project (lots of inheritance).
When I runmeltano install -p 20  I had one of the taps/targets get an Access Denied (Another process was using the files in the venv that was getting updated). This lead to a state where that tap/target was not runnable. Maybe this was a rm -rf tapdirectory/ action?
Ideally Meltano would be aware of what's running and not clober the venv for that job unless you told it to try with -force or something.
I know the recommendation is to run docker containers which side steps these problems, but I don't have that option today. It's looking like running symlinks on a production directory and stepping in a new version of my Meltano project would be the way to go, but curious about what you think about making meltano install not break things if something is running at the same time
Slack Thread: https://meltano.slack.com/archives/C01TCRBBJD7/p1628105558044000

View 1 previous comment from the original issue on GitLab

Still relevant


fix(sticky): works around overflow-x: hidden sticky interference

Closes: https://artsyproduct.atlassian.net/browse/FX-2809
Re: https://artsyproduct.atlassian.net/browse/FX-2796?focusedCommentId=36021
I always forget about this issue which is a huge gotcha when using position: sticky. The thing that will finally fix this long-standing annoyance is overflow: clip but that's not widely supported yet
https://caniuse.com/?search=overflow
We're already tracking the intersection here so it's not much of a leap to just replicating what position: sticky does using position: fixed and a placeholder.
I've also refactored away having to pass in a Container prop in favor of just optionally supporting a function-as-prop. I was going to do a context + hook thing here but I think we'll only ever need it on the first level anyway so this simplifies things quite a bit.

@sweir27 realizing also that I had removed an app-wide overflow-x: hidden when we first implemented this feature 😆  — I'll add a comment there so I don't trip over myself again.


Implement nightly test-harness action for stress testing

Currently, test-harness-ci is based on 3 nodes only. This is quite insufficient when problematic edge-case scenarios like #847 and #855 are deeply hidden.  On a nightly basis github action that bootstraps test-harness and leaves it running for a couple of hours should allow us to catch hardly reproducible issues on time.
This is a proposal for test-harness-nightly github action that will:

Start test-harness 02:00 GMT every night
Bootstrap initially a network of 10 nodes (provisioners)
Each 10 mins another bucket of 3 nodes (provisioners) will join the network
After 3 hours running, ensure that consensus average time is less than 30 sec and all network nodes are synced up.

NB. Parameters could be readjusted depending on the environment capabilities.
In addition, later on test-harness-nightly could be extended with various other edge-case scenarios concerning transactions.

Isn't DevNet specifically for this purpose, but just on longer timeframes? That said, I do think the periodic adding of nodes + health checks would be a good idea to incorporate in the DevNet, as well as some kind of CD pipeline that restarts the process when master is updated.

Isn't DevNet specifically for this purpose, but just on longer timeframes? That said, I do think the periodic adding of nodes + health checks would be a good idea to incorporate in the DevNet, as well as some kind of CD pipeline that restarts the process when master is updated.

Agreed.

Agreed.


[DOCS] Update incomplete SQL doc pages

Describe the bug
Several doc pages for SQL (API Documentation -> SQL) look like this:

Below are all the incomplete SQL docs:

AzureConfig
GCSConfig
HTTPConfig
S3Config
count_matches
hash
minhash
normalize
tokenize_decode
tokenize_encode

And when you search for "normalize", why does it look like this?

To Reproduce
No response
Expected behavior
No response
Component(s)
SQL
Additional context
No response

I'd like to work on this issue. Having trouble building the docs locally but trying best.

@willvo2004 if there are any specific issues you are running into while building the docs, feel free to open up separate issues for those!

Currently having trouble getting documentation changes through; would appreciate direction:
    fn docstrings(&self, _alias: &str) -> String {
        match self {
            Self::EndsWith => "Returns true if the string ends with the specified substring".to_string(),
            Self::StartsWith => "Returns true if the string starts with the specified substring".to_string(),
            Self::Contains => "Returns true if the string contains the specified substring".to_string(),
            .
            .
            .
            Self::Normalize(_) => "Does something cool".to_string(),
        }
    }

Changes were made to src/daft-sql/src/modules/utf8.rs under the docstrings function.
Changes to documention docstring are to be made here (I could be wrong)

Running the folllowing build commands for sphinx under daft/docs
make clean
make html

Docstring on documentation site does not appear to be changed and I'm not sure why this is happening. Been trying to trace for a while.
Do I have to change conf.py?


MWPW-128665  Add Collection Title input field

This PR adds new functionality to the CAAS Configurator so that authors can add a collection title directly in the configurator UI.
The new "Collection Title" input field provides three options:

English Title  -  does not need translation nor a placeholder mappings file
Placeholder key - for titles that are localized and use placeholder mappings file
Empty - for collections without title

See video demo:
https://jira.corp.adobe.com/secure/attachment/9849299/Collection Title Authoring.mp4
It also adds a "title" attribute to the input field that it is used as a "tooltip"

Resolves: MWPW-128665
NOTE: This will not affect existing collection.  This new functionality will only be available in the CAAS Configurator UI.
Test URLs:

Before: https://main--milo--adobecom.hlx.page/tools/caas?martech=off
After: http://cmiqueo.corp.adobe.com:3000/tools/caas?martech=off

cc: @sanrai, @chrischrischris , @auniverseaway

Couple comments. Also, I'm curious about why you aren't using a milo link for your "After" test url

I don't have access :(

Couple comments. Also, I'm curious about why you aren't using a milo link for your "After" test url

I don't have access :(

@chrischrischris How do we handle testing links and verification for people without access?

Couple comments. Also, I'm curious about why you aren't using a milo link for your "After" test url

I don't have access :(

@chrischrischris How do we handle testing links and verification for people without access?

Isn't that just about changing the URL to point to the branch and forked repo name? Or is there more involved in this ticket that needs additional access?
https://mwpw-128665--milo--cmiqueo.hlx.page/tools/caas?martech=off


provider says "insufficient capacity" sporadically

provider 0.4.6
akash-node 0.26.1
provider - Hurricane provider

and provider says it has insufficient capacity sometimes (usually gets deployed fine on a 2nd attempt), I've started seeing this from today:
$ date; provider_info.sh provider.hurricane.akash.pub
Thu Sep 28 06:36:37 PM CEST 2023
type       cpu     gpu  ram                 ephemeral           persistent
used       49.5    1    143.5               388.5               500
pending    0       0    0                   0                   0
available  43.395  0    30.681856155395508  1420.2646561246365<PHONE_NUMBER>994833
node       43.395  0    30.681856155395508  1420.2646561246365  N/A```

D[2023-09-28|16:32:54.261] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":43395,"gpu":0,"memory":32944392192,"storage_ephemeral":1524997562430}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":828738306048}},"total_available":{"cpu":43395,"gpu":0,"memory":32944392192,"storage_ephemeral":1524997562430,"storage":{"beta3":767944789872}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service
I[2023-09-28|16:32:58.882] order detected                               module=bidengine-service cmp=provider order=order/akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1
I[2023-09-28|16:32:58.884] group fetched                                module=bidengine-order cmp=provider order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1
I[2023-09-28|16:32:58.884] requesting reservation                       module=bidengine-order cmp=provider order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1
D[2023-09-28|16:32:58.884] reservation requested                        module=provider-cluster cmp=provider cmp=service cmp=inventory-service order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1 resources[{resource:{id:1,cpu:{units:{val:2000}},memory:{size:{val:2147483648}},storage:[{name:default,size:{val:1073741824}}],gpu:{units:{val:0}},endpoints:[{sequence_number:0}]},count:1,price:{denom:uakt,amount:1000.000000000000000000}},{resource:{id:2,cpu:{units:{val:2000}},memory:{size:{val:8589934592}},storage:[{name:default,size:{val:1073741824}}],gpu:{units:{val:0}},endpoints:[{sequence_number:0}]},count:1,price:{denom:uakt,amount:1000.000000000000000000}}]=(MISSING)
I[2023-09-28|16:32:58.884] insufficient capacity for reservation        module=provider-cluster cmp=provider cmp=service cmp=inventory-service order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1
E[2023-09-28|16:32:58.884] reserving resources                          module=bidengine-order cmp=provider order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1 err="insufficient capacity"
I[2023-09-28|16:32:58.884] shutting down                                module=bidengine-order cmp=provider order=akash1h2adh8s6ptsx33m6hda7p9kahcdwy09dhr5x90/13006204/1/1
D[2023-09-28|16:33:01.525] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":43395,"gpu":0,"memory":32944392192,"storage_ephemeral":1524997562430}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":828694003712}},"total_available":{"cpu":43395,"gpu":0,"memory":32944392192,"storage_ephemeral":1524997562430,"storage":{"beta3":767900487536}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service

seen the same issue earlier today on the same provider
[https://rpc.akashnet.net:443][default][13001588--1]$ cat deploy.yaml
# Simple deployment.
---
version: "2.0"

services:
  app:
    image: bsord/tetris
    # command:
    #   - "sh"
    #   - "-c"
    # args:
    #   - sleep infinity
    expose:
      - port: 80
        as: 80
        to:
          - global: true
        #accept:
        #  - "tetris.yourdomain.com"

profiles:
  compute:
    app:
      resources:
        cpu:
          units: 1
        memory:
          size: 4Gi
        storage:
          size: 20Gi
  placement:
    akash:
      pricing:
        app:
          denom: uakt
          amount: 1000000

deployment:
  app:
    akash:
      profile: app
      count: 1

$ date; provider_info.sh provider.hurricane.akash.pub
Thu Sep 28 10:56:22 AM CEST 2023
type       cpu     gpu  ram                 ephemeral           persistent
used       55.5    1    156.5               392.5               500
pending    0       0    0                   0                   0
available  37.395  0    17.681856155395508  1416.2646561246365<PHONE_NUMBER>616242
node       37.395  0    17.681856155395508  1416.2646561246365  N/A

13001588: insufficient capacity for reservation

$ grep -C30 -E 13001588 hurricane-provider.log | grep -Ev 'check|ip'
D[2023-09-28|08:55:00.933] service available replicas below target      module=provider-cluster cmp=provider cmp=service cmp=deployment-manager lease=akash16p6lrlxf7f03c0ka8cv4sznr29rym27uv0qz0d/12991178/1/1/akash15tl6v6gd0nte0syyxnv57zmmspgju4c3xfmdhk manifest-group=akash cmp=deployment-monitor service=app available=0 target=1
D[2023-09-28|08:55:01.102] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":836884627456}},"total_available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134,"storage":{"beta3":780783722388}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service
D[2023-09-28|08:55:05.039] service available replicas below target      module=provider-cluster cmp=provider cmp=service cmp=deployment-manager lease=akash16p6lrlxf7f03c0ka8cv4sznr29rym27uv0qz0d/12991178/1/1/akash15tl6v6gd0nte0syyxnv57zmmspgju4c3xfmdhk manifest-group=akash cmp=deployment-monitor service=app available=0 target=1
I[2023-09-28|08:55:05.122] order detected                               module=bidengine-service cmp=provider order=order/akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1
I[2023-09-28|08:55:05.126] group fetched                                module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1
I[2023-09-28|08:55:05.126] requesting reservation                       module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1
D[2023-09-28|08:55:05.126] reservation requested                        module=provider-cluster cmp=provider cmp=service cmp=inventory-service order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1 resources[{resource:{id:1,cpu:{units:{val:1000}},memory:{size:{val:4294967296}},storage:[{name:default,size:{val:21474836480}}],gpu:{units:{val:0}},endpoints:[{sequence_number:0}]},count:1,price:{denom:uakt,amount:1000000.000000000000000000}}]=(MISSING)
I[2023-09-28|08:55:05.126] insufficient capacity for reservation        module=provider-cluster cmp=provider cmp=service cmp=inventory-service order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1
E[2023-09-28|08:55:05.126] reserving resources                          module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1 err="insufficient capacity"
I[2023-09-28|08:55:05.126] shutting down                                module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001588/1/1
D[2023-09-28|08:55:08.008] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":836876632064}},"total_available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134,"storage":{"beta3":780775726996}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service

13001692: Reservation fulfilled

$ grep -C30 -E 13001692 hurricane-provider.log | grep -Ev 'check|ip'
D[2023-09-28|09:05:32.917] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":838743359488}},"total_available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134,"storage":{"beta3":782640832404}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service
I[2023-09-28|09:05:34.077] order detected                               module=bidengine-service cmp=provider order=order/akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1
I[2023-09-28|09:05:34.080] group fetched                                module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1
I[2023-09-28|09:05:34.080] requesting reservation                       module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1
D[2023-09-28|09:05:34.080] reservation requested                        module=provider-cluster cmp=provider cmp=service cmp=inventory-service order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1 resources[{resource:{id:1,cpu:{units:{val:1000}},memory:{size:{val:4294967296}},storage:[{name:default,size:{val:21474836480}}],gpu:{units:{val:0}},endpoints:[{sequence_number:0}]},count:1,price:{denom:uakt,amount:1000000.000000000000000000}}]=(MISSING)
D[2023-09-28|09:05:34.080] reservation count                            module=provider-cluster cmp=provider cmp=service cmp=inventory-service cnt=10
I[2023-09-28|09:05:34.080] Reservation fulfilled                        module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1
D[2023-09-28|09:05:34.764] submitting fulfillment                       module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1 price=15.313822000000000000uakt
I[2023-09-28|09:05:36.895] filtering pods                               cmp=provider client=kube labelSelector=
D[2023-09-28|09:05:37.852] cluster resources dump={"nodes":[{"name":"worker-01.hurricane2","allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054},"available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134}}],"total_allocatable":{"cpu":102000,"gpu":1,"memory":210936590336,"storage_ephemeral":1942146261054,"storage":{"beta3":838713409536}},"total_available":{"cpu":37395,"gpu":0,"memory":18985748480,"storage_ephemeral":1520702595134,"storage":{"beta3":782610882452}}} module=provider-cluster cmp=provider cmp=service cmp=inventory-service
I[2023-09-28|09:05:40.160] bid complete                                 module=bidengine-order cmp=provider order=akash1h24fljt7p0nh82cq0za0uhsct3sfwsfu9w3c9h/13001692/1/1

cluster resources dump comparison between the dseq's

Can't reproduce this after disabling the unattended upgrades.
Likely the unattended upgrades were the root cause of the issue https://github.com/akash-network/support/issues/131


feat: Use ::ratatui instead of ratatui

This PR uses ::ratatui to ensure it doesn't clash with a module named ratatui in an app, per comment https://github.com/ratatui-org/ratatui-macros/pull/52#discussion_r1656670148
This PR also refactors some tests.

Address comments from https://github.com/ratatui-org/ratatui-macros/pull/52

Should this be a breaking change?

Should this be a breaking change?

no

Can you elaborate on why this is not a breaking change? Just trying to understand.
Currently, if a macro like this is defined in this crate:
#[macro_export]
macro_rules! my_custom_macro {
    () => {
        foobar::test()
    };
}

Then the user can define a foobar module in their code and call the macro:
mod foobar {
    use ratatui::prelude::*;
    pub fn test() -> String {
        String::default()
    }
}

fn test_function() {
  let s = my_custom_macro!();
}

i.e. the current behavior is to call functions from the ratatui module in the macro expansion scope or calling scope.
But with this PR, the behavior is to call functions from the ratatui module that is a dependency of the ratatui-macros crate. So technically this could be breaking, right?

Can you elaborate on why this is not a breaking change? Just trying to understand.
Currently, if a macro like this is defined in this crate:
#[macro_export]
macro_rules! my_custom_macro {
    () => {
        foobar::test()
    };
}

Even if the foobar is not defined in this crate, this crate will compile fine. Then, a user can use this macro by defining a foobar module in their code and calling the macro:
mod foobar {
    pub fn test() -> String {
        String::default()
    }
}

fn test_function() {
  let s = my_custom_macro!();
}

i.e. the current behavior is to call functions from the ratatui module in the macro expansion scope or calling scope, or the ratatui dependency that they choose to add into their project.
But with this PR, the behavior is to call functions from the ::ratatui module that is a dependency of the ratatui-macros crate.
So technically this could be breaking, right?

Technically yes, but this is the opposite of Unicode-width crate mess that wasn't a "breaking change" despite it being a "change that broke things". This is a "breaking change" that "doesn't break anything". There's 19 results in https://github.com/search?q=ratatui_macros&type=code and none of them define a ratatui module in their code that would be impacted by this. I wouldn't sweat this.

A breaking change is when the intended behaviour changes. This PR ensures that the intended behaviour always works. It’s a fix to ensure it actually works as it should. That’s the same of what unicode-width did: ensuring that it does what it should.

This PR seems to also include unrelated changes?

This PR seems to also include unrelated changes?

It was refactoring of the tests, I guess that should have gone in a separate PR?

Not a big deal in this lib.


Update owlapi-distribution to 4.5.19

Updates net.sourceforge.owlapi:owlapi-distribution from 4.5.15 to 4.5.19.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "net.sourceforge.owlapi", artifactId = "owlapi-distribution" } ]

labels: library-update, semver-patch

Superseded by #91.