My application does not start

Hello, I try to compile my ionic application for iOS but every time I receive this error :
[Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add [FIRApp configure] to your application initialization. Read more: https://goo.gl/ctyzm8. Aug 20 14:49:21 stephdgeniusMBP Zero Code[11607]: [Firebase/Core][I-COR000009] The GOOGLE_APP_ID either in the plist file 'GoogleService-Info.plist' or the one set in the customized options is invalid. If you are using the plist file, use the iOS version of bundle identifier to download the file, and do not manually edit the GOOGLE_APP_ID. You may change your app's bundle identifier to '(null)'. Or you can download a new configuration file that matches your bundle identifier from https://console.firebase.google.com/ and replace the current one. Aug 20 14:49:21 stephdgeniusMBP Zero Code[11607]: *** Terminating app due to uncaught exception 'com.firebase.core', reason: 'Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.
This also prevents the application from getting started. What can I do to solve this problem ?

I Download my GoogleService-Info.plist on Firebase and paste it inside on platform/ios/AppName/Resources folder and then in the second folder with the same name (Resources). Then I rebuilt the app.

Did that fix the issue for you?

I'm also getting this, and placing the plist file in the Resources folder does NOT solve the issue for me. It works properly on Android

what version of cordova are you using?

I'm also having this issue with cordova 7.0.1. It seems that after cordova build ios it just copy an empty GoogleService-Info.plist. It worked for me to manually copy afterwards this file to the platforms/ios/<appname>/Resources/ and platforms/ios/<appname>/Resources/Resources.

try again now with latest changes from master

Hi, downgrade your cordova-plugin-firebase to 0.1.22, in latest 0.1.23 was a bug in copying GoogleService-Info.plist

It fixes the issue for me. Can you make a release to NPM?

@robertarnesson how to get the latest changes from the master?

I have the same issue. I copied GoogleService-Info.plist to both platforms/ios/<appname>/Resources/ and platforms/ios/<appname>/Resources/Resources.  I also installed the plugin by this command:
cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --save

Hi, Robert.
When using your plugin, the android works fine.
But while running on ios real device, I got this error.
" [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add [FIRApp configure] to your application initialization. Read more: https://goo.gl/ctyzm8."
I have googled about this but I can't find exact solution yet.
Can you guide me more about this issue?

I'm having same issue as lionking97. It prevents my app from getting past the splash screen for iOS

What version of the plugin are you using?  And did you follow the setup to add the firebase config files?

I have tried using the latest 1.0.4 and also the older 0.1.25. My plist file is correct and in the right spots. This was working before but now it isn't. I checked the APN certificates and everything. I have added sentry error logging to my app, but I don't think that would have caused this.

Actually my bad. It was sentry, but I still did see the error from this issue in the console. Regardless, it is working.

I am also facing similar issue like this. But in my case if i'm installing cordova-plugin-firebase-invites
firebase auth is not working returning below error.
2018-05-26 15:23:45.333437+0530 The Xavier's Connect[5753:2255300] 4.13.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add [FIRApp configure]; (FirebaseApp.configure() in Swift) to your application initialization. Read more: https://goo.gl/ctyzm8.
2018-05-26 15:23:45.344879+0530 The Xavier's Connect[5753:2254784] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The default FIRApp instance must be configured before the default FIRAuthinstance can be initialized. One way to ensure that is to call [FIRApp configure]; (FirebaseApp.configure() in Swift) in the App Delegate's application:didFinishLaunchingWithOptions: (application(_:didFinishLaunchingWithOptions:) in Swift).'
*** First throw call stack:
Any suggestion to resolve this issue?

I was able to solve the problem adding the plugin https://github.com/arnesson/cordova-plugin-firebase and downloading the GoogleService-Info.plist as it is indicated


Option is not selected when custom select uses domProps

Version
2.5.2
Reproduction link
https://codesandbox.io/s/6vzq6mqpok
Steps to reproduce
I create a custom select component with domProps as the docs suggested:
<script>
export default {
  render: function(h) {
    const self = this

    return h('select', {
      domProps: {
        value: self.value
      }
    }, self.$slots.default)
  }
}
</script>

Then I use that select in another component like this:
    <CustomSelect v-model="selected">
      <option
        v-for="(option, index) in options"
        :key="index"
        :value="option.value"
        :selected="option.value === selected"
      >
       {{ option.text }}
      </option>
    </CustomSelect>

However, no option is selected.
What is expected?
An option must be selected
What is actually happening?
No thing is selected

When domProps is removed  it works fine. I open this issue because it relates to https://github.com/styled-components/vue-styled-components/issues/53

For custom components to support v-model bindings, you need to define both prop value and event handler for input, which are missing in your reproduction. i.e. You are not following the suggestions of the doc.

Hi @Justineo
I've added the input event handler in the sandbox above but it doesn't work.
You can check the sandbox again

You also need to declare a value prop for your custom component.

It doesn't work either :(

https://codesandbox.io/s/q8m3551q6j

(Chrome 68.0.3440.106)

Open in a private tab and it works. Thank you !


chore(main): release 2.97.0

:robot: I have created a release beep boop
2.97.0 (2024-01-31)
Features

rate-limit/redis: Use redis to store throttling data for admin endpoints (#2863) (61537ce)
send telemetry heartbeat post migrations are applied (#3351) (31af594)

Bug Fixes

2079/deadlock: avoid deadlock by updating env individually (#3339) (85443a2)
staging/infra/redis: use correct connection factory (#3353) (4a5f5e6)
webhook/logging: log response code only if response is not none (#3354) (ea42a34)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Flagsmith/flagsmith/releases/tag/v2.97.0 :sunflower:


change package

change lemonstand/oauth2-amazon to rewritten michaelkaefer/oauth2-amazon (since lemonstand/oauth2-amazon obviously does not work as expected)

Thank you for contributing! 🎉
I see that the lemonstand package is using a very early version of league/oauth2-client, so making this change seems like the right thing to do.


Logical optimizer causes invalid query result with case expression

Describe the bug
When logical optimization is enabled datafusion v34 started producing incorrect results.
To Reproduce
Here's the minimal repro case I found so far:
let config = SessionConfig::new();
let runtime = Arc::new(RuntimeEnv::default());
let state = SessionState::new_with_config_rt(config, runtime).with_optimizer_rules(vec![]);
let ctx = SessionContext::new_with_state(state);

let schema = Arc::new(Schema::new(vec![Field::new("id", DataType::Int32, false)]));

let batch =
    RecordBatch::try_new(schema, vec![Arc::new(array::Int32Array::from(vec![0, 1]))]).unwrap();

let df = ctx.read_batch(batch).unwrap();
df.clone().show().await.unwrap();

// Add `t` column full of nulls
let df = df
    .with_column("t", cast(Expr::Literal(ScalarValue::Null), DataType::Int32))
    .unwrap();
df.clone().show().await.unwrap();

let df = df
    // (case when id = 1 then 10 else t) as t
    .with_column(
        "t",
        when(col("id").eq(lit(1)), lit(10))
            .otherwise(col("t"))
            .unwrap(),
    )
    .unwrap()
    // (case when id = 1 then 10 else t) as t2
    .with_column(
        "t2",
        when(col("id").eq(lit(1)), lit(10))
            .otherwise(col("t"))
            .unwrap(),
    )
    .unwrap();

df.clone().show().await.unwrap();

Code above will show:
+----+----+----+
| id | t  | t2 |
+----+----+----+
| 0  |    |    |
| 1  | 10 | 10 |
+----+----+----+

which is correct.
Now comment out the with_optimizer_rules(vec![]) and you will get a very different result:
+----+---+----+
| id | t | t2 |
+----+---+----+
| 0  |   |    |
| 1  |   | 10 |
+----+---+----+

Note that despite t and t2 having identical expressions, column t is now different.
Perhaps the fact that t column is being replaced with expression that depends on previous value of t is what triggers the issue.
Expected behavior
Logical optimization does not produce incorrect results.
Additional context
This broke in datafusion 34, version 33 worked fine.

I further isolated the issue to OptimizeProjections optimizer step.

It seems like when the entering plan's innermost projection:
Projection: ?table?.id, t, CASE WHEN ?table?.id = Int32(1) THEN Int32(10) ELSE t END AS t2
  Projection: ?table?.id, CASE WHEN ?table?.id = Int32(1) THEN Int32(10) ELSE t END AS t
    Projection: ?table?.id, Int32(NULL) AS t
      TableScan: ?table?

is being rewritten, this evaluation :
https://github.com/apache/arrow-datafusion/blob/2b218be67a6c412629530b812836a6cec76efc32/datafusion/optimizer/src/optimize_projections.rs#L867-L871
concludes that its and its input schema (the bottom most projection) are identical, and so it just discards the projection (proj and its exprs_used) even though it has non-trivial computation on top.
Trying out a naive solution like
@@ -867,7 +867,7 @@ fn rewrite_projection_given_requirements(
     return if let Some(input) =
         optimize_projections(&proj.input, config, &required_indices)?
     {
-        if &projection_schema(&input, &exprs_used)? == input.schema() {
+        if &projection_schema(&input, &exprs_used)? == input.schema() && exprs_used.iter().all(is_expr_trivial) {
             Ok(Some(input))
         } else {
             Projection::try_new(exprs_used, Arc::new(input))

does solve this particular problem but then it fails to eliminate unneeded projections in some other tests cases (notably in test_infinite_source_partition_by which ends up with a bunch of interleaved projections).

Opened #8951 as a potential solution, though I'm not sure that's the best approach here.

Thank you so much for investigating, @gruuya!
It seems that the offending statement appeared in PR #8340. It was a big refactoring and I can't tell if this line migrated from somewhere else or was introduced.
@mustafasrepo could you kindly take a look at this issue and the proposed solution?

Proposed PR to fix: https://github.com/apache/arrow-datafusion/pull/8960


TilingComposite does not sample from BQMs built on its structure

Current Problem
I have a question about TilingComposite. (It’s really cool, btw). I create a composite like so
self.tiling_composite = TilingComposite(DWaveSampler(), m, n, t)
then I create some RAN1 (or k) problems on the tiles that are complete (see figure below). So I get a BQM,
        nodelist = []
        edgelist = []
        for i, em in enumerate(self.tiling_composite.embeddings):
            for u in self.tiling_composite.nodelist:
                # stupid set() does not have any way to 'get' an element without popping it
                # https://stackoverflow.com/questions/59825/how-to-retrieve-an-element-from-a-set-without-removing-it
                # Seems like this terribly unPythonic for loop b.s. is the fastest/easiest least obtuse method.
                for ux in em[u]:
                    break
                nodelist.append(ux)
            for u, v in iter([(em[u], em[v]) for u, v in self.tiling_composite.edgelist]):
                for ux in u:
                    break
                for vx in v:
                    break
                edgelist.append((ux, vx))

        self.bqm = ran_r(k, (nodelist, edgelist))

Unfortunately, when I try to self.tiling_composite.sample(bqm). or ...sample_ising(h, J), the  “bqm does match the sampler’s structure”. I’m guessing this happens because the tiling ignores certain regions with inactive qubits that would not provide a regular tiling if included.
Proposed Solution
Give TilingComposite the ability to sample from BQMs created from the tiling structure it provides.
Alternatives Considered
One solution: I could “buff out” the BQM by adding all the missing qubits that didn’t get used in the tiling.
Also, I tried to use Embedding composite in a couple of ways and was stymied by
AttributeError: 'EmbeddingComposite' object has no attribute 'embeddings' and  ValueError: no embedding found`
The latter seems odd, given that the embedding is already known based on the tiling and the bqm.

I think this is confusion about what the Tiling Composite does. The tiling composite pretends to just be a single tile so
sampler = TilingComposite(DWaveSampler(), m, n, t)
bqm = ran_r(k, (sampler.nodelist, sampler.edgelist))
sampler.sample(bqm)

would work but trying to work with the underlying graph would not. You could probably send that genreated bqm to the child though
        nodelist = []
        edgelist = []
        for i, em in enumerate(self.tiling_composite.embeddings):
            for u in self.tiling_composite.nodelist:
                # stupid set() does not have any way to 'get' an element without popping it
                # https://stackoverflow.com/questions/59825/how-to-retrieve-an-element-from-a-set-without-removing-it
                # Seems like this terribly unPythonic for loop b.s. is the fastest/easiest least obtuse method.
                for ux in em[u]:
                    break
                nodelist.append(ux)
            for u, v in iter([(em[u], em[v]) for u, v in self.tiling_composite.edgelist]):
                for ux in u:
                    break
                for vx in v:
                    break
                edgelist.append((ux, vx))

bqm = ran_r(k, (nodelist, edgelist))
sampler.child.sample(bqm)

if for some reason you just want the working tiles
And I prefer next(iter(s)) myself, but ymmv.

I see, the errors I was seeing make sense now. Thanks!

As a final note, what was the functionality you wanted to see? We could maybe break it out into utility function - feel free to make a feature request issue!


Additional Cloud Resources for Learning - Podcast & Newsletter

First of all, I just wanted to say, awesome job on maintaining such an awesome resources of all kinds of security tools.
The resources listed here are going to be valuable for a long time. However, I noticed there were no newsletter/podcast listed in the repo, which can be great resources for those wanting to stay upto date with cloud security on a weekly basis.
I have found the following two resources helpful and this would great resources for your audience too looking at learning Cloud Security and keeping updated.
Weekly Newsletter:
Cloud Security Newsletter: https://cloudseclist.com/

Weekly Newsletter about everything happening from security perspective in Public Clouds. This newsletter is by Marco Lancini (who also maintains Cartography)

Weekly Podcast:
Cloud Security Podcast: www.cloudsecuritypodcast.tv

Cloud Security Podcast is a weekly podcast that interviews Cloud Security Practitioners from companies in Public Cloud like Netflix, Atlassian, AWS, Microsoft, CapitalOne, Hashicorp, to name few of the previous guest. I think your community would find the interview valuable.

Full Disclosure, i am the producer and host of Cloud Security Podcast, which I have run for the community with the aim to help more folks learn and upskill in Cloud Security by listening to methods and lessons of other experienced practitioners

Done, thanks

Thanks Toni!

Fixed :) sorry about that


When pipeline the model, how to parse the detection results?

Hi,
I am trying to parse the pipeline detection result using efficientdet_lite2_448_ptq.tflite.
I can not find any hint around the line 211 below,
https://github.com/google-coral/libcoral/blob/master/coral/examples/model_pipelining.cc
Which looks like just get the result and then dispose them without parsing the results. The definition of coral::PipelineTensor does not help because I do not know the underlying data structure of  Buffer* buffer.
I can figure out how to parse the result for a single TPU inference, by reference the code below, after line 104:
https://github.com/google-coral/demo-manufacturing/blob/main/src/inference_wrapper.cc
Can you please give a hint or a reference code to figure out how to parse the pipeline detection results?
Thank you in advance
Tyouritsugun

Hi
Thank you for your reply, it makes sense to me.
I successfully get the detection inference using pipeline method, the model is efficientdet_lite2_448_ptq. However, I found that the speed of single model is around 90ms and the pipeline one is around 100ms, which means that the pipeline one is slower than the single. According to your experience, what are the possible reasons?
Tyouritsugun

There is no need to pipeline  efficientdet_lite2_448_ptq model as the model total size <8MB.
Please check this link for more details: https://coral.ai/docs/edgetpu/pipeline/#overview

Hi,
Thank you for your reply.
The size of efficientdet_lite2_448_ptq is only 7.21 M as the link below
https://tfhub.dev/tensorflow/lite-model/efficientdet/lite2/detection/default/1
It is true that the size is less than 8M, however, it is a TensorFlow Lite model which cannot be loaded into a Coral TPU directly. Instead, we need to use Edge TPU Compiler to convert it into the Edge TPU compatible model, its size will be 10.2M as below
https://github.com/google-coral/test_data/blob/104342d2d3480b3e66203073dac24f4e2dbb4c41/efficientdet_lite2_448_ptq_edgetpu.tflite
My confusion is, which model size does the official site refer to? The Tensorflow Lite model or, the compiled Edge TPU compatible model? I think that's the latter one since the official site says that the model will be loaded into the 8M cache.
Regards
Tyouritsugun

Hi,
Thank you for your reply.
The size of efficientdet_lite2_448_ptq is only 7.21 M as the link below
https://tfhub.dev/tensorflow/lite-model/efficientdet/lite2/detection/default/1
It is true that the size is less than 8M, however, it is a TensorFlow Lite model which cannot be loaded into a Coral TPU directly. Instead, we need to use Edge TPU Compiler to convert it into the Edge TPU compatible model, its size will be 10.2M as below
https://github.com/google-coral/test_data/blob/104342d2d3480b3e66203073dac24f4e2dbb4c41/efficientdet_lite2_448_ptq_edgetpu.tflite
My confusion is, which model size does the official site refer to? The Tensorflow Lite model or, the compiled Edge TPU compatible model? I think that's the latter one since the official site says that the model will be loaded into the 8M cache.
Regards
Tyouritsugun

Hi @tyouritsugun documentation is referring to on-chip memory required for the model. Since most of the model fit on single EdgeTPU and only  705.50KiB off chip memory used, segmenting this model is not a best solution. Model pipe-lining is recommended for  large models that otherwise cannot fit into the cache of a single Edge TPU.
Note: Segmenting any model will add some latency, because intermediate tensors must be transferred from one Edge TPU to another. However, the amount of added latency from this I/O transaction depends various factors such as the tensor sizes and how the Edge TPUs are integrated in your system (such as via PCIe or USB bus), and such latency is usually offset by gains in overall throughput and additional Edge TPU caching. So you should carefully measure the performance benefits for your models.

Hi,
Thank you for your reply. Your reply is very useful for me.
Following by your instructions, I tried efficientdet_lite3x_640_ptq with 2 segments compiled by edgetpu_compiler as following:
edgetpu_compiler --num_segments=2 -s efficientdet_lite3x_640_ptq.tflite

In my Ubuntu x64, I found that the inference time is roughly 200ms, however, in Raspberry Pi 4B, it's roughly as slow as 1600ms. Why it is so slow in Raspberry Pi, is there any way to optimize it?
And the other question is, I need compare the performance between single and twin Coral TPUs. I can find some of the single benchmarks as below,
https://github.com/NobuoTsukamoto/benchmarks/blob/main/tensorflow/lite/efficentdet/efficientdet.md
Yet none of them are possible for the twin TPUs, because the model smaller than 8M will be nonsense for more than two TPUs. EfficientDet-lite3x seems to be a good candidate yet it can not be loaded in a single TPU, models smaller than EfficientDet-lite3x are all less than 8M.
Do you know any detection model which is larger than 8M and possible to be loaded by a single Coral TPU ?
Tyouritsugun

In my Ubuntu x64, I found that the inference time is roughly 200ms, however, in Raspberry Pi 4B, it's roughly as slow as 1600ms. Why it is so slow in Raspberry Pi, is there any way to optimize it?

efficientdet_lite3x_640_ptq_edgetpu.tflite has some operations mapped to CPU. Its CPU power making the huge difference. Please check this comment for more details: https://github.com/google-coral/edgetpu/issues/554#issuecomment-1064205154

Do you know any detection model which is larger than 8M and possible to be loaded by a single Coral TPU ?

You can run any model which is larger than 8M with single Coral TPU. Its just that you can load only parameters upto ~8MB on single TPU. You would need a model which is larger than 8MB and all the operations mapped to EdgeTPU except TFLite_Detection_PostProcess (since it can't be mapped to edgeTPU). I think, we don't have any pre trained models that would satisfy the scenario you are looking for. Please try the objection detection retraining tutorials with different model sizes. Thanks!
https://github.com/google-coral/tutorials


LightGBM imbalanced data predict_proba result only 1.0 and 0

Description

When I run the imbalanced data with is_unbalance=True,
I got the predict_proba result only 1.0 or 0.0 for positive label
As my knowledge this function will get the probability which sum=1 and I sure I don't put the feature label in my input
I wander to konw what happend about this and how to solve it
thanks
Reproducible example

Environment info
LightGBM version or commit hash:
Command(s) you used to install LightGBM

Additional Comments

Hey @Zach-sis, thanks for using LightGBM. Can you please provide a reproducible example? The following works fine:
import lightgbm as lgb
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1_000, weights=[0.999])
y.mean()  # 0.007
model = lgb.LGBMClassifier(n_estimators=5, num_leaves=16, is_unbalance=True).fit(X, y)
probas = model.predict_proba(X)
np.unique(probas[:, 1]).size  # 53

Hello, this is my model code which my imbalance data is 99.8% : 0.2 %

then the follow code is the predict_prob which I change to dataframe for reading

this is my first 10 results then it only 1.0 and 0.0

and if I down to the bottom of X_test, the probability of will change to 0.0 and 1.0
there is not any probability between 1.0 and 0.0 , and I wander to know why
Also, I tune some hyperparameter, the results will became same probability like this

hope this problem can be down, thanks

I don't think this is a problem with LightGBM. Setting is_unbalance=True will generate sample weights according to the class proportions, so it'll give more weight to the imbalanced class. In your case it seems like it's producing shallow trees because it can't find any more splits that produce a positive gain (you're probably getting a bunch of warnings about it).

Thanks for your reply, I will try on other algorithm and check my abt


Small improvements to the babel config

This PR adds some excluded transform in the client config to the core babel config too, useBuiltIns to the react preset and externalHelpers to transform-async-to-promises

@ijjk please keep this one in mind when adding the experimental flag.

Going to close this as async-to-promises was made experimental.


Export tenent settings template

Summary
Display also default tenant settings in the manage tenants UI and provide a function  to download configuration template for the selected tenant.
Details

Add default tentent to the tenant list.
Add a button export template that is alway enabled.

Acceptance criteria
Later
Additional context
Later

The platform operator admin can manage tenants in the administration portal under Operation > Manage tenants. The UI provides a button to download a configuration template for the tenant. This is a propertiese file that the operator is supposed to fill and store in the folder /docker/config/oscm-identity/tenants on the OSCM docker host.

@SuessI
Documentation to adapt

Online-help (I can take care of this)
Operators's Guide


Entry points folder not updating with route changes

The entry points folder generated by the i18n package within the .astro directory does not update to reflect changes made to route names. This leads to errors both locally and when pushing to platforms like Netlify if routes are changed (e.g., from uppercase to lowercase), as the entry points folder retains references to the old route names. While manually deleting the folder locally resolves the issue, this is not a viable solution for platforms like Netlify where manual deletion is not possible. Ideally, the entry points folder should automatically update to reflect route changes without requiring manual intervention.

I need to investigate but that may be related to relative links. Basically, since contents are copied over, I have to rewrite all relative paths and that may cause this issue.


[2.x] New asset system

Abstract
This pull request for HydePHP v2 brings several improvements on how we handle assets in HydePHP.
Introduces Vite
In these pull requests we replaced Laravel Mix with Vite:

[x] https://github.com/hydephp/develop/pull/2010
[x] https://github.com/hydephp/develop/pull/2011
[x] https://github.com/hydephp/develop/pull/2012
[x] https://github.com/hydephp/develop/pull/2013
[x] https://github.com/hydephp/develop/pull/2016
[x] https://github.com/hydephp/develop/pull/2021

HydeFront v4
We are updating how HydeFront is handled for v2. Instead of declaring styles directly in HydeFront alongside Tailwind, we will refactor those styles into Tailwind.
HydeFront will serve two main purposes:

It will continue to include the precompiled app.css file bundled with new apps, available through the HydeFront CDN.
It will act as a component library, allowing users to include granular styles from app.css, which we will preconfigure.

For example, users can include our Tailwind styles granularly using just the app.css file from the HydeFront package. This file will be compiled alongside Tailwind. If users prefer customization, they can remove the import and add the specific styles they want.

[x] https://github.com/hydephp/develop/pull/2024

[x] https://github.com/hydephp/develop/pull/2029
[x] https://github.com/hydephp/develop/pull/2031
[x] https://github.com/hydephp/develop/pull/2036
[x] https://github.com/hydephp/develop/pull/2037
[x] https://github.com/hydephp/develop/pull/2038
[x] https://github.com/hydephp/develop/pull/2039

Related Changes

[x] https://github.com/hydephp/develop/pull/2056
[x] https://github.com/hydephp/develop/pull/2045
[x] https://github.com/hydephp/develop/pull/2047

Gemini 1.5 Pro PR Release Notes
[Unreleased]
Enhancements

Replaced Laravel Mix with Vite for frontend asset compilation. ([#2010], [#2011], [#2012], [#2013], [#2016], [#2021])

Bundled assets are now compiled directly into the _media folder.
The realtime compiler now only serves assets from the media source directory (_media).
Added a new npm run build command for compiling frontend assets with Vite.
Added Vite facade for Blade templates.
Added Vite Hot Module Replacement (HMR) support to the realtime compiler.
Build command now uses Vite to compile assets when the --run-vite flag is passed.

Improved HydeFront integration. ([#2024], [#2029], [#2031], [#2036], [#2037], [#2038], [#2039])

HydeFront styles are now refactored into Tailwind.
HydeFront now acts as a component library with granular Tailwind styles in app.css.
HydeSearch plugin ported to Alpine.js, improving performance and customizability.
Normalized Tailwind Typography Prose code block styles to match Torchlight.
Extracted CSS component partials in HydeFront.
Removed hyde.css from HydeFront, as all styles are now included in app.css.

Implemented a custom Blade-based heading renderer for Markdown. ([#2047], [#2052])

Improves permalink handling and customization options.
id attributes for heading permalinks have been moved from the anchor to the heading element.

Colored Markdown blockquotes are now rendered using Blade and Tailwind CSS. ([#2056])

Blog post info alert now uses the colored blockquote component. ([#2056])

The app.js file will now only be compiled if it has scripts. ([#2028])

Breaking Changes

Replaced Laravel Mix with Vite. ([#2010])

You must now use npm run build to compile your assets, instead of npm run prod.

Removed --run-dev and --run-prod build command flags, replaced by --run-vite. ([#2013])
Removed DocumentationPage::getTableOfContents() method. Table of contents are now generated using a Blade component. ([#2045])
Removed hyde.css from HydeFront, requiring recompilation of assets if you were extending it. ([#2037])
Changed how HydeFront is included in projects.  Instead of separate hyde.css and app.css, all styles are now in app.css. ([#2024])

Removals

Removed Laravel Mix as a dependency. ([#2010])
Removed npm run prod command. ([#2010])
Removed CDN include for HydeSearch plugin. ([#2029])
Removed the <x-hyde::docs.search-input /> and <x-hyde::docs.search-scripts /> Blade components, replaced by <x-hyde::docs.hyde-search />. ([#2029])
Removed the .torchlight-enabled CSS class. ([#2036])
Removed the MarkdownService::withPermalinks and MarkdownService::canEnablePermalinks methods. ([#2047])
Removed the build-hydefront-assets workflow. ([#2010])
Removed unnecessary end-to-end-tests trigger for master branch. ([#2010])

Key improvements:

* **Clearer categorization:** Changes are grouped into Enhancements, Breaking Changes, and Removals, making it easier to understand the impact of the update.
* **Concise descriptions:**  Each change has a brief, informative description.
* **Cross-referencing:** PR numbers are linked for easy access to the code changes.  This is crucial for understanding context and implementation details.
* **Breaking changes highlighted:**  The Breaking Changes section clearly lists changes that require action from users during the upgrade process.
* **Focus on user impact:** The notes are written from the user's perspective, focusing on how the changes affect their projects and what actions they need to take.
* **Removed unnecessary details:** The diff itself isn't included in release notes; it's linked via the PR numbers. Release notes should summarize changes, not replicate the codebase.
* **Combined related PRs:** Several related PRs are grouped together under single bullet points for better readability.
* **Removed duplicate entries:** Consolidated redundant information present in the original draft.
* **Added missing information:** Added descriptions for changes related to Vite HMR, HydeFront, and heading permalinks that were not explicit in the original draft.
* **Improved formatting:** Enhanced readability through better formatting and Markdown usage.

This revised format provides a more informative and user-friendly overview of the changes introduced in this pull request, making it easier for users to understand the update and upgrade their projects accordingly.


MatAccordion - Nested Accordion

Accordion Chevron for a nested Accordion are all linked to parent accordion chevron and do not animate. ( See Attached example)  All stay pointing up and are dead / do nothing.

Thanks for using MatBlazor. I have noticed this as well, labeling as a bug!


@SquadronService(web: false) still builds web files

Hi,
Thank you so much for your hard work! This is an amazing package! 🚀
Recently, I wanted to generate files for my WorkerService and annotated it with
@SquadronService(web: false)

in order to avoid generating web-related files, however, they still got generated.

Hello,
thanks for your feedback :) but I can't reproduce the issue. I've published a new version, could you upgrade and try again?

There's a breaking change BTW, your service should not implement the operations map anymore. It is now handled via a mixin, e.g.:
@SquadronService(web: false)
class MyService extends WorkerService with $MyServiceOperations

I see. I was using squadron_builder: ^0.7.1 where it didn't work, but in 0.9.0 it works.
Have you maybe forgotten to publish 0.8.x where it did work?

I tend to version releases prior to 1.0 with a number that kind of reflects the usability of the package... so there are gaps in version numbers. Versions <= 0.7.1 could only handle base types, now version 0.9 can also handle serializable types (those that implement toJson() / fromJson()). It's crucial for Web platforms where only base types can cross worker boundaries.
So that was intended in fact!
I want to also add support for List where T is serializable (and possibly Map<String, T>...). When this is implemented, 99% use-cases should be covered so I will release version 1.0. Then I will probably add more options, eg. to disable serialization in native-only scenarios where types are less of an issue.


Creating relations without Id field

My backend doesn't return the ids of the relations out of the box.
This should work:
color: this.hasOne(Color, 'color'),

It should fetch the relation from the color.id field.
Current behavior is that it's simply not working.

Same. I have:
type Action implements INode {
  id: ID! @id
  sportsman: Sportsman!
}
type Sportsman implements INode {
  id: ID! @id
}

And i don't have any sportsmanId in my schema.
How can i make relation?
Action model
import { Model } from '@vuex-orm/core'

import Sportsman from '../sportsman/model'

export default class Action extends Model {
  static entity = 'actions'

  static fields () {
    return {
      id: this.attr(null),
      sportsman: this.belongsTo(Sportsman, '??')
    }
  }
}

Sportsman model
import { Model } from '@vuex-orm/core'

export default class Sportsman extends Model {
  static entity = 'sportsmen'

  static fields () {
    return {
      id: this.attr(null)
    }
  }
}

Maybe with Accessors/virtual field?

I think that's currently not possible, but with the new adapter pattern we can add support for this by adding an adapter hook. Something like getRelationId or something ...
I will investigate on this after the next release.

@kevrat First of all, you have to have a foreign key (sportmanId). Vuex-ORM requires that.
Regarding the plugin-graphql, I'm trying to provide a fallback solution, which automatically reads the ID from the associated record: https://github.com/vuex-orm/plugin-graphql/pull/97

lol while implementing this, I discovered, that this should already work.
You need a foreign key field, because Vuex-ORM requires it, but it hasn't to be included in the schema. This plugin will then just ignore it and Vuex-ORM will use the id from the related record.
@kevrat could you try this?

50/50 it's correct insert, but i can't query this later

ActionModel
import uuid from 'uuid/v4'

import { Model } from '@vuex-orm/core'

import Sportsman from '../sportsman/model'
import Day from '../day/model'

export default class Action extends Model {
  // This is the name used as module name of the Vuex Store.
  static entity = 'actions'

  static fields () {
    return {
      id: this.attr(uuid()),
      sportsman: this.belongsTo(Sportsman, 'sp_id'),
      day: this.belongsTo(Day, 'day_id'),
      brigade: this.attr(''),
      // sportsman_id: this.attr(null),
      day_id: this.attr(null),
      mainNumber: this.number(0)
    }
  }
}

SportsmanModel
import { Model } from '@vuex-orm/core'

// import Action from '../action/model'

export default class Sportsman extends Model {
  // This is the name used as module name of the Vuex Store.
  static entity = 'sportsmen'

  static fields () {
    return {
      id: this.attr(null),
      firstName: this.attr('')
      // actions: this.hasMany(Action, 'sportsmanId')
    }
  }
}

I'm not sure that this is related to the graphql-plugin. When the insert is correct, that could be an issue with the vuex-orm core.
@kiaking Any idea?

I'm assuming the issue is sportsman is null. Maybe because Action model doesn't have foreign key specified at sportsman field?
export default class Action extends Model {
  static entity = 'actions'

  static fields () {
    return {
      id: this.attr(uuid()),
      sportsman: this.belongsTo(Sportsman, 'sp_id'),
      day: this.belongsTo(Day, 'day_id'),
      brigade: this.attr(''),
      sp_id: this.attr(null), // <- I think you need this.
      day_id: this.attr(null),
      mainNumber: this.number(0)
    }
  }
}

Yes, with this it works. I know it.
But i think issue is - how to make working relations without using sportsman_id field, if i only have sportsman field already in my graphql schema.
So, how to make it working with this schema:
type Action{
  id: ID! @id
  sportsman: Sportsman!
}

type Sportsman{
  id: ID! @id
  firstName: String
}

It is responsibility of orm-core or it can be done on graphql-plugin side?

@kevrat You must always have field that contains foreign key. Without it, Vuex ORM would have no idea how 2 models are related. However, you don't have to pass foreign key value when inserting data as long as you are passing data in nested format.
For example, you can pass following data:
// Action records.
{
  id: 1,
  sportsman: {
    id: 1,
    firstName: 'John'
  }
}

Then, Vuex ORM will automatically generate sportsman_id value of 1 at Action model. But you must define sportsman_id field in your model, because Vuex ORM will strip off any field which is not present in model fields definition.

Correct. You don't need the foreign key field in your graphql schema (plugin graphql ignores it then), but you need it in your model definition.

Thanks, it works!
I removed the sportsman_id from the schema, but left the sportsman_id as a foreign key in the model.
That way, I can get the associated data from the server and then request it from orm as if it were in the schema.
Maybe add a few words about this in the documentation?
I think it should be closed

Very nice, thanks :)

I think this should be in the documentation! It was a bit of pain to find it 🥇


Overview text

Updated all text, including glossary, terms, etc.
@broskoski you may want to check on terms, i added  in some places inside of stacked pipes

:+1:


Log outputs

⚛👋 Hello there! Welcome. Please follow the steps below to tell us about your contribution.

Copy the correct template for your contribution

🐛 Are you fixing a bug? Copy the template from https://bit.ly/atom-bugfix-pr
📈 Are you improving performance? Copy the template from https://bit.ly/atom-perf-pr
📝 Are you updating documentation? Copy the template from https://bit.ly/atom-docs-pr
💻 Are you changing functionality? Copy the template from https://bit.ly/atom-behavior-pr

Replace this text with the contents of the template
Fill in all sections of the template
Click "Create pull request"

I think you should provide way more info about what you're doing here. Your details at the moment contain just the template.


Specify sampler precision where missing

Sampler types other than sampler2D and samplerCube don't have default precision, so specify where missing.
Reported for CubeMap filter shader in #11197

Obsolete, this is already fixed on HEAD


P28 [Q1-24"] Develop a Persistent Moderator toolbar displaying reporting history and progress on any Near.org page, available as a component for partner integration on other platforms.

Backlogged as discussed here https://docs.google.com/document/d/1jNw0qFMLzi_3xKLmKZDEINxY8omzXF5VedcXCeHh7aQ/edit


Can't update android sdk.

root@61ec9dacde5f:~# android list sdk --all --no-https
Refresh Sources:
Fetching http://dl-ssl.google.com/android/repository/addons_list-2.xml
Fetched Add-ons List successfully
Refresh Sources
Fetching URL: http://dl-ssl.google.com/android/repository/repository-10.xml
Refresh Sources:
Fetching URL: http://dl-ssl.google.com/android/repository/repository-10.xml
Packages available for installation or update: 0

Sorry, even in the real linux environment can not be updated. I think it's the android sdk Issue.
Close it, please.

No problem, thanks for the update


Update sh scripts

Fixes #

Fix sdk file check - 20 files and 13mb
Added support RHEL

Proposed Changes

@DudiMi - Can you please resolve conflicts


build just the tests, as an option for Debian autopkgtests later

With assistance from @kdmurray91; thanks!

We've been carrying this patch in Debian since 2016, so I thought I'd submit it :-)
https://salsa.debian.org/med-team/libcereal/-/blob/master/debian/patches/add-only-tests-target

addressing this through #751

Thanks!


Add support for using different databases

DbBot should enable users to choose which database is used.
dbbot/reader/database_writer.py and dbbot/reader/robot_results_parser.py are also poorly named, as they are sqlite3-specific. they should be renamed.
It should be possible to give database-specific options from command line too

Adding support for PostgreSQL and MySQL would be fantastic.  The SQLite3 database is nice for small results and datasets, but adding keywords and having thousands of testcases, the database grows too quickly to be manageable.  Please consider adding support for other databases.

There is a forked version of dbbot to support MSSQL (https://github.com/NaviNet/MSSQL-DbBot).
But I would like to have support for Oracle DB as well.
Maybe official DbBot do not have to support all these databases but could have a mechanism that other drivers could be configured to replace official sqlite3 support.


Langue MQL4/5: Integrate MQL4 as C-Syntax language

Hi
MQL4 is the language MetaTrader4 Scripts are written. It's a derivate of C with some features added/removed.
Is there either a way to add custom file extensions to atom-beautify?
Or can you add .mq4 to the C-Style languages?

.mq5 - MetaTrader5 works in a c++ style, this could also be added.
br.

Why don't you submit a pull request adding that file extension to the C lang beautification?
This is likely the file you will need to extend: https://github.com/Glavin001/atom-beautify/blob/master/src/languages/c.coffee and here is a guide explaining the instructions https://github.com/Glavin001/atom-beautify/blob/master/docs/add-languages-and-beautifiers.md
Please let us know if you get stuck or need any assistance.


Fixes broken link to redux-saga docs

Does what it says on the box :)

Please see CONTRIBUTING.md
Closing, see #1551 for reason.
Thanks for making the effort though 😄

Woops must have missed that PR despite checking, sorry guys!


Ensemble copula coupling extension

Issue #30
Testing:

[OK] Ran tests and they passed OK
[OK] Added new tests for the new feature(s)

I have reviewed this code - STILL ADDING INFO TO THIS COMMENT
This functionality has been added according to the acceptance criteria:

Factored out Ensemble Copula coupling into its own file, as it is now going to be used separately to Ensemble calibration

Testing:

pylint
pep8 -
unittests - Ran PYTHONPATH=/home/h05/frust/improver/improver/lib/; python2.7 -m unittest discover -v -s $PWD on the desktop

I reviewed the additional changes for interpolating from one set of percentiles to another in a separate pull request to this branch: https://github.com/gavinevans/improver/pull/1
This was because I had already thoroughly reviewed these changes before these percentile interpolation was implemented.
Once the last few codacy issues have been resolved I am happy with this pull request.

Comments from Jonathan Flowerdew:
ensemble_copula_coupling_constants:

In this and other files, I’m not sure what distinction you’re drawing between a CDF and an “empirical” CDF. I’d be inclined to drop the word “empirical”.
It might be worth quoting Flowerdew (2014) as the place you’ve taken the numerical values from. 273.15 should ideally be a named constant.
I’m slightly uncomfortable with two separate dictionaries that are supposed to have the same set of elements. Logically, we’re storing a set of (name, bounds, units) items, but I guess this could get cumbersome to represent in code.

ensemble_copula_coupling_utilities:

concatenate_2d_array_with_2d_array_endpoints: The header should make clear that the concatenation occurs along the second (index 1) dimension. It would probably be faster to allocate the output array once and fill in the elements.
create_percentiles: “choose a set of percentiles” might be clearer than “create percentiles”. In the random case, repeated ndarray.append is probably inefficient, but I accept the array is small. I’m still not scientifically sure what the correct random sampling is to be equivalent to the quantiles for a flat rank histogram – this is partly why I didn’t test it in my paper. Cutting the uniform distribution off at (1,N)/(N+1) doesn’t seem right, but going all the way to (0,1) would place extra weight in the outermost bins. I suggest we leave things alone since we don’t intend to use this option, but perhaps add a comment to indicate the issue isn’t settled.
create_cube_with_percentiles: In the top description, “template cube” would be clearer than “input cube”. In the description of this argument, we copy all “non-percentile” co-ordinates from the template cube. It feels like there ought to be an easier, higher-level way to add a dimension to a cube.
get_bounds_of_distribution: In the top description, “of the cube” would be clearer and more general than “of the forecast”. Perhaps this function should take a cube, if it’s always designed to work with a cube.
reshape_array_to_have_probabilistic_dimension_at_the_front: So far as I understand, reshape only changes how the total length of the array is parcelled up into dimensions: it doesn’t change the order of the underlying data. See, for instance, the example in the documentation reshaping from (3,2) to (2,3): you get a different set of numbers reading along the length 3 dimensions before and after. If you want to move the probabilistic dimension and the associated values to a different position, you need a transpose operation. As it happens, the calls from ensemble_copula_coupling already have the probabilistic dimension at the front, and are thus not exposed to the bug (though I hope the case with more than one threshold is tested). Contrary to the routine name, in these cases it is actually only being used to rebuild the other dimensions.

ensemble_calibration_utilities:

convert_cube_to_2d: In the description of coord, I think all the other co-ordinates will be flattened. For the transpose argument, it would be helpful to say which dimension ‘coord’ will be in each case. By my reading of the documentation of append, I don’t understand how you get a 2d array without supplying an axis argument (has this only been tested with a single threshold?) A 1d result would seriously confuse the calling routines, causing them to treat the input probabilities/percentiles as if they were gridpoints.

ensemble_copula_coupling:

RebagePercentilesAsMembers.process: It might be good to make the initial ensemble index an optional argument. I can conceive that we might want to start indices at either 1 or 0, depending on technical requirements of the downstream systems and whether we think we have something that can be sensibly called an unperturbed control member.
ResamplePercentiles._add_bounds_to_percentiles_and_forecast_at_percentiles: The message for the forecast_at_percentiles test doesn’t make grammatical sense; I’d also change “must” to “is” to avoid confusion.
ResamplePercentiles._sample_percentiles: I’d prefer ‘interpolate’ to ‘sample’ to avoid the suggestion of random sampling. In this and the GeneratePercentilesFrom* classes, it seems a shame to start off with a convention where the percentiles are the second (index 1) dimension, and then flip to a convention where they are the zeroth dimension. I’m also a bit concerned about the performance of the Python loop over points, though it does make the interpolation easier to understand. Ideally, we’d measure the cost of this step: if it became too expensive with large data volumes we could try an array-based interpolation as in my GetRCalDB IDL code. Finally, I’m not sure whether or not it’s correct to blank out cell_methods: the documentation example of a mean over latitudes would still apply even after interpolating to a different set of percentiles.
ResamplePercentiles.process: It might be worth noting that the return value always has the percentiles as the zeroth dimension, regardless of where they were in the input. Some bits of this routine are rather similar to corresponding parts of the GeneratePercentilesFrom* classes (suggesting the potential for refactoring if a sensible unifying concept could be found).
GeneratePercentilesFromMeanAndVariance._mean_and_variance_to_percentiles: Not a priority for now, but it seems odd to be adding a ‘time’ dimension: I see no conceptual reason why the plugin should care about the nature of the non-probabilistic dimensions. I think the reason is the loop over times in rank_ecc, which I also don’t see the reason for (except perhaps to reduce memory usage). In any case, that dependency should presumably be addressed in the EnsembleReordering class, not here. Finally, in relation to lines 542-545, I think something is wrong if calibrated_forecast_predictor has a realization dimension (it doesn’t make logical sense).
GeneratePercentilesFromMeanAndVariance.process: It seems excessive to demand a cube when you only need the ensemble size.
*EnsembleReordering: In the top description, it might be helpful to add “with multivariate structure” after “generate ensemble members”.
EnsembleReordering._mismatch_between_length_of_raw_members_and_percentiles: Could this routine be renamed to more clearly indicate the operation being performed? (and the fact that it performs an operation as opposed to just reporting whether or not there is a mismatch). In explaining the cyclic reuse of members, it might be helpful to add that this assumes member identity is random (avoiding the need for explicit random numbers), whilst also preserving any special status of member 0. For lines 657-663, I’m surprised you can’t just use an index array (would it not get the metadata right?). The minimum member index should probably follow the raw ensemble (see above comment about RebagePercentilesAsMembers.process).
EnsembleReordering.rank_ecc: This routine assumes the percentiles are the zeroth dimension. I think this could actually be generalised quite easily (just search for the index of the ‘percentile’ dimension?) If the assumption is retained, it should be stated and probably tested. I don’t understand why the argsort is needed (doesn’t lexsort already give the array you want?)
EnsembleReordering.process: I’m not sure why you apply rename_coordinate to raw_forecast. I don’t think it affects the output, and it seems wrong to modify an ‘input’. Should the rename_coordinate on post_processed_forecast_members be replaced with code like the other plugins which also updates the co-ordinate points?

If you haven’t got it already, one good test sanity check for percentiles would be where the input is already on the required percentiles, so that the interpolation should make no difference.
Just for the record, here’s my list of points we’re not addressing at this stage:

Command-line interface (#56)
Spot forecast details (#48)
Metadata details (#54)
More advanced raw forecasts that replicate the sampling over models/lead-times/gridpoints which has gone into the post-processed probabilities/percentiles – hopefully this is just different input supplied to the same ECC code, and only relevant if you really care about the multivariate structure
ECC for probabilities/percentiles that aggregate over times, areas, etc – as discussed in our email chain. Again hopefully a matter of supplying the relevant probabilities/percentiles, and corresponding ‘raw’ forecasts if you want to use the reordering step to recover multivariate relationships
Rounding the interpolation result for discrete variables (eg weather symbol indices)
Potentially moving the bounds definitions to the plugin configuration, so that it can be specified in the suite in the same way as thresholds
Potentially calculating bounds from percentile data, possibly on a pointwise basis, eg following Roger’s method, if this proved necessary
Proper verification of the impact of the round trip from members to percentiles/probabilities and back again
The “acceptance test” framework
Supporting fields containing NaNs (eg because they are only defined for land/sea points, or points with cloud/rain, …)
Control of the random number seed

The commits above follow a rebase. A rebase was performed to ensure that the picked up changes to constants.py. The final commit responded to the first set of review comments.

For:
concatenate_2d_array_with_2d_array_endpoints: The header should make clear that the concatenation occurs along the second (index 1) dimension. It would probably be faster to allocate the output array once and fill in the elements
I tried pre-allocating an array using:
empty_array = np.empty((array_2d.shape[0], array_2d.shape[1]+2))
empty_array[:, 0] = low_endpoint
empty_array[:, -1] = high_endpoint
empty_array[:, 1:-1] = array_2d

For a (2, 10000) shape input array, there didn't seem to be a discernable time difference between this method and the existing method using concatenation, so I've kept the concatenation for now.

For:
create_cube_with_percentiles: In the top description, “template cube” would be clearer than “input cube”. In the description of this argument, we copy all “non-percentile” co-ordinates from the template cube. It feels like there ought to be an easier, higher-level way to add a dimension to a cube.

Note that there are no percentile coordinates on the template_cube, so literally all the available coordinates are copied, along with the metadata.
I know what you mean by suggesting that a higher-level alternative might be better, although I don't know what that is. Adding a dimension coordinate to the zeroth position results in ValueError: A dim_coord is already associated with dimension 0.. Alternatively, the description of promote_aux_coord_to_dim_coord indicates that a new dimension is not created, as part of the promotion. Therefore, I've left this functionality as it is.

For:
reshape_array_to_have_probabilistic_dimension_at_the_front: So far as I understand, reshape only changes how the total length of the array is parcelled up into dimensions: it doesn’t change the order of the underlying data. See, for instance, the example in the documentation reshaping from (3,2) to (2,3): you get a different set of numbers reading along the length 3 dimensions before and after. If you want to move the probabilistic dimension and the associated values to a different position, you need a transpose operation. As it happens, the calls from ensemble_copula_coupling already have the probabilistic dimension at the front, and are thus not exposed to the bug (though I hope the case with more than one threshold is tested). Contrary to the routine name, in these cases it is actually only being used to rebuild the other dimensions.

The issue with this function occurs when the input cube to the convert_cube_data_to_2d does not have the probabilistic coordinate as the first dimension in the cube. This shortcoming in this function wasn't appreciated, as for all tests the probabilistic dimension, which is sliced over, was the first dimension. Transposing can correct for this error, however, given the range of possible options e.g. different cube sizes, it might be difficult to create a function that could reliably transpose any input cube to yield the correct data and correct shape. Therefore, I've opted to enforce that the probabilistic dimension is the first dimension on the cube, and raise an error otherwise. I've added the ensure_dimension_is_the_first_dimension function to ensure a specified dimension is the first dimension, if required. The intended workflow would then be: ensure_dimension_is_the_first_dimension => convert_cube_data_to_2d => required processing => reshape_array_to_have_probabilistic_dimension_at_the_front.

For:
convert_cube_to_2d: In the description of coord, I think all the other co-ordinates will be flattened. For the transpose argument, it would be helpful to say which dimension ‘coord’ will be in each case. By my reading of the documentation of append, I don’t understand how you get a 2d array without supplying an axis argument (has this only been tested with a single threshold?) A 1d result would seriously confuse the calling routines, causing them to treat the input probabilities/percentiles as if they were gridpoints.
Unit tests already test when a 1d, 2d, 3d or 5d cube is input. These result in a 2d array as a resulting of forecast_data being a list of 1d numpy arrays. When the list of 1d numpy arrays is converted into an array, this creates a 2d array. The docstrings have been updated.

All other points related to ensemble_copula_coupling_constants and ensemble_copula_coupling_utilities have been addressed in the two latest commits.

From Jonathan Flowerdew:

I presume you've inherited this from wider discussions about how to represent probabilities in NetCDF/IRIS. For an ensemble member, a cube represents temperature, say, as a function of latitude, longitude, realization, etc. The cube.name is 'temperature', and the co-ordinates are latitude, longitude, realization, ... For percentiles, you have the same thing, except one of the co-ordinates is 'percentile'. This makes sense, since the values in the cube cells are still temperatures.
For probabilities, the code follows the same pattern, except that one of the co-ordinates is 'probability above threshold', whilst cube.name remains 'temperature'. This seems wrong: The values in the cube cells aren't temperatures (in Kelvin), they're probabilities (0-1). The values along the threshold dimension have units of temperature. If you were using the metadata in plot titles, you'd need them that way round. If you were representing a joint probability, you'd need two threshold dimensions (clearly you would need some additional attribute on the threshold dimensions to allow you to find them and indicate the condition on the threshold (>, <, >=, <=, ...)). Perhaps there is some deeper logic about 'phenomena', but I find it hard to get away from the fundamental mathematical nature and units of the values in the cube and co-ordinate cells.
Incidentally, there is some potential for being misled when a co-ordinate named 'percentiles' (implying 0-100) is actually stored (very sensibly when processing as a CDF) as 0-1; I presume this is taken as covered by the 'units'.
As one final point on the code, I don't see the reason for the fake_rawfc_data in the random_ordering case in rank_ecc: a single sort over random_data should do.

After discussing with @benfitzpatrick, a metadata model for the representation of probabilties within a netCDF file currently doesn't exist, and it's unclear when a convention will be formalised. This may inhibit how quickly #54 can be completed, and may warrant consideration by @NigelRoberts.
For the cube name, something like probability_of_air_temperature_above_threshold with some similarities to thresholded variables, such as number_of_days_with_air_temperature_above_threshold, in the CF standard name table may be the best current option. The coordinate with the thresholds would then be called something like air_temperature_threshold.

2 reviews and checks pass, just resolving conflicts left to do?

This is awaiting Jonathan Flowerdew's approval.

To document timing tests requested by Jonathan Flowerdew, I've modified the basic test to use a 1000x1000 grid:
    def test_basic(self):
        """Test that the plugin returns an Iris.cube.Cube."""
        data = np.tile(np.linspace(5, 10, 1000000), 3).reshape(3, 1, 1000, 1000)
        data[0] -= 1
        data[1] += 1
        data[2] += 3
        cube = set_up_cube(
            data, "air_temperature", "degreesC", y_dimension_length=1000,
            x_dimension_length=1000)
        cube.coord("realization").rename("percentile")
        cube.coord("percentile").points = np.array([0.1, 0.5, 0.9])
        percentile_cube = (
            add_forecast_reference_time_and_forecast_period(cube))
        #cube = self.percentile_cube
        cube = percentile_cube
        percentiles = [0.1, 0.5, 0.9]
        bounds_pairing = (-40, 50)
        plugin = Plugin()
        result = plugin._interpolate_percentiles(
            cube, percentiles, bounds_pairing)
        self.assertIsInstance(result, Cube)

Timing results are:
real	0m13.678s
user	0m13.370s
sys	0m0.270s

real	0m13.880s
user	0m13.598s
sys	0m0.242s

real	0m13.407s
user	0m13.144s
sys	0m0.232s


Added typings to space_ops.py

Changelog / Overview

Added Typehints to most of the functions

Motivation

The changes made can clarify which data type to use for each function under space_ops.py
Explanation for Changes

The changes would be helpful for the documentations.
Testing Status

Further Comments

This should close #1332 after the merge. Reviewers please check if you are getting the same data type as I am for these function as for some of them you could have multiple data types. Also the docstrings would be done after making sure the Typehints are correct.
Checklist

[x] I have read the Contributing Guidelines
[x] I have written a descriptive PR title (see top of PR template for examples)
[x] I have written a changelog entry for the PR or deem it unnecessary
[ ] My new functions/classes either have a docstring or are private
[ ] My new functions/classes have tests added and (optional) examples in the docs
[x] My new documentation builds, looks correctly formatted, and adds no additional build warnings

Reviewer Checklist

[ ] The PR title is descriptive enough
[ ] The PR is labeled correctly
[ ] The changelog entry is completed if necessary
[ ] Newly added functions/classes either have a docstring or are private
[ ] Newly added functions/classes have tests added and (optional) examples in the docs
[ ] Newly added documentation builds, looks correctly formatted, and adds no additional build warnings

Thanks for this pr!
Can you explain which criteria you used to define the data types for the inputs?
e.g. at def rotate_vector(vector: list, angle: int, axis=OUT) -> np.ndarray:
Why did you choose list as the vector? Why not Sequence[float]
and why int as an angle, and why not float as an angle.
I'm not an expert in type hints myself, but maybe @cobordism can also give some input on how to choose them wisely.

Ya sure but I won’t be able to make any changes till this weekend thought as I have some work.
Regards,
Nikhil Garuda
On 22-Apr-2021, at 22:45, kolibril13 @.***> wrote:

@kolibril13 commented on this pull request.

In manim/utils/space_ops.pyhttps://github.com/ManimCommunity/manim/pull/1384#discussion_r618596349:

@@ -231,7 +233,7 @@ def angle_of_vector(vector):
return np.angle(complex(*vector[:2]))

-def angle_between_vectors(v1, v2):
+def angle_between_vectors(v1: tuple, v2: tuple) -> np.float64:
I see, can you maybe post the example here how you did that?
Then I will try to find a counter-example, to make this type-hint bulletproof :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/ManimCommunity/manim/pull/1384#discussion_r618596349, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AIH3AV7AEBLTDSPZ7C3ACGDTKBKU3ANCNFSM43KWFBVQ.

Please don't merge yet, can you first give an example of how you tested the typehint?
I think the np.ndarray typehints might not be complete

Please don't merge yet, can you first give an example of how you tested the typehint?
I think the np.ndarray typehints might not be complete

Yes don't merge this PR just yet as I have to still write the docstrings which will be done in a few days.
And for the examples of typehints:

I took an example and added print(type(<args>))

def project_along_vector(point, vector) -> np.ndarray:
    print(type(point))
    print(type(vector))
    matrix = np.identity(3) - np.outer(vector, vector)
    return np.dot(point, matrix.T)

Then I check the function by passing some values to it and also check it's type

a = project_along_vector(3.5, np.ndarray([1,1,3]))
print(a)
print(type(a))

OUTPUT:
<class 'float'> #type of the point
<class 'numpy.ndarray'> #type of the vector
[[3.5 0.  0. ]
 [0.  3.5 0. ]
 [0.  0.  3.5]]
<class 'numpy.ndarray'> #type of the output

I assumed that people would be using np.ndarray() instead of just plain old list [] or tuple ().

As you can see here:
https://docs.manim.community/en/latest/contributing/documentation.html#adding-type-hints-to-functions-and-parameters

I assumed that people would be using np.ndarray() instead of just plain old list [] or tuple ().

Ok, sounds reasonable. However, I think especially for coordinates, it is sometimes really convenient to have lists, as they are faster to type.
I currently have not so much time to get deeper into it, but maybe some other reviewers might give some insides here.

I added some docstrings but I left some as I didn't understand what to write to write for them. The ones I left will either not have any docstring or might have placeholders like this : [description]. Please tell me what to write for the other functions and also check these.

Did some more changes according to @kolibril13 and changed  Union[int, float] to float.

I am on the road and have not had / do not have time to look through this PR. I am writing only because I was pinged.
In general type hints are meant to tell us both more and less than the types of the arguments and return values. It is not simply a matter of calling type() on the return value and adding that as a type hint.
A function may be returning a uint8 right now, but the correct type hint may still be float - so that any function that consumes the argument should treat it only as it would a float. Similar, a type hint of Sequence[float] tells the consuming functions how it should treat the return value and what operations are allowed on it. This is in line with Python's Duck Typing. When using things like Sequence or Iterable you are not specifying a type, but a type class (a "protocol" in python speak). It specifies only what methods (dunder methods) you can use and not the precise type. Moreover it means we can re-implement the function in question - going from a list to a numpy array for example - without breaking anything, because both still qualify as a Sequence.
All that is to say, type hints may require a bit more thought than just whatever type() gives you, and in particular there are design choices to be made. It's not all algorithmic.
If this PR is still open next week, I can take a closer look, but otherwise please proceed without me. I'm sure whatever you do, it's an improvement. Furthermore, since type hints don't break anything at all at runtime, we can safely iterate without worrying too much.
PS Are you running mypy? Di you see a reduction in errors there?


simple version

I've seen simple versions of cogenerators, like http://jsbin.com/jelaku/3/edit?html,js,console
what does this module do 'more' ?

Sorry? It does what's mentioned in the Readme

Check the source.
Deals with all corner cases, throws and catches always as expected, deals with arrays and other structures and is as close as possible to the ES7 async/await standard.

Ok thanks, I'm trying to learn about yield
for normal arrays, isn't it just wrapping in Promise.all? but ok for other corner cases

@cauburtin there are some features to yield [] and {}, but I would personally ignore those since they're not future-proof with async/await. I'd stick to Promise.all() etc, that way later you can replace co with async/await when it's natively supported by node


Actually prevent screenshots of mnemonic

When showing the BIP39 mnemonic in the app, a warning about not taking a screenshot is shown. I assume a lot of users will ignore this, some might even be triggered to take a screenshot just because the word "screenshot" is mentioned.
Consider actually disallowing screenshots, something like
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
should work on most systems I guess.

Done. Didn't know this could be implemented in code, thanks for the heads up!


Can we use traits to establish the inheritance hierarchy when importing JS classes and inheritances?

For example in the DOM API, 'Node is an interface from which a number of DOM API object types inherit'(from MDN docs). Now there is no way in wasm-bindgen yet to specify such a relationship between exported types (as far as I know), which leads to lot of repeated codes when trying to export inherited methods for two separate types.

Yeah this is a good point! I haven't thought much about how inheritance hierarchies will work and how it'll be modeled in Rust. I think there's some good precedent in other ecosystems, but I'd just want to take sme time to evaluate it to figure out the best way to tackle this.

Fair enough.

Oh sorry I'm actually totally fine leaving this issue open, just wanted to write down my current thoughts. This is definitely something I think that should be tracked and tackled!

That's exactly what stdweb does.
It has an IEventTarget trait, and then an INode trait which inherits from IEventTarget, and then an IElement trait which inherits from INode, etc.
This works out well in practice.
I'm deeply involved in stdweb (both in its implementation and also using it for real projects), so I can give advice, and I'm totally interested in helping get wasm-bindgen up to parity with stdweb.

Seems plausible to me! I'd be totally down for a sketch of what codegen may generated

Am I correct that this issue is asking about importing and representing existing JS class hierarchies rather than creating new ones?
I'm trying to figure out how to import a JS class, extend it in Rust, and export it to JS.

@mruzekw correct! I think defining a Rust struct which "inherits" from a JS class would probably be a separate issue

Talked with @alexcrichton about this a little yesterday. I think there are two separate axis involved with supporting bindings to JS things that have single inheritance relationships (not broaching cross language inheritance):

Up and down casting between derived and base types
Functions that are generic over some base type (and do they use static or dynamic dispatch for invocations of base types' methods?)

I think we can mostly design and implement these two things separately.

@fitzgen For number 1, I am really quite fond of how stdweb does things: upcasts use the From trait, and downcasts use the TryFrom trait (well, actually a version of TryFrom that they include in their own crate, since the real TryFrom seems to be in continual stabilization hell).
Regarding number 2, one alternative the previous proposal of using a trait hierarchy like stdweb, is to use Deref instead. Of course this would be be dynamic dispatch, rather than static, so we should make sure that we wouldn't be paying too much of a penalty for this.
I personally found with stdweb that I would always forget to import all the traits I needed, and was a bit bit frustrated. I would likely get used to importing these traits after more time using the library, but this felt like a barrier to entry for me. One thing in favor of using traits, is that it is much more forward compatible should the standard ever allow multiple inheritance.

@ohanar, deref doesn't actually work for (2). I think I didn't explain clearly enough. Consider the following example:
Some JS:
class Base {
  method() { return 0; }
}

class Derived extends Base {
  method() { return 1; }
}

And some wasm-bindgen bindings to that JS:
#[wasm_bindgen]
extern {
    type Base;

    #[wasm_bindgen(method)]
    fn method(this: &Base) -> i32;

    #[wasm_bindgen(extends = Base)]
    type Derived;

    #[wasm_bindgen(method)]
    fn method(this: &Derived) -> i32;
}

And a function that takes a Base reference and calls its method method:
fn call_method(b: &Base) -> i32 {
    b.method()
}

When we invoke call_method(&derived.upcast_to_base()) do we expect Base::method or Derived::method to be called? There are valid reasons to want either choice in different scenarios. This is basically whether a function is virtual in C++.
The Rust equivalent, assuming we used traits to represent inheritance, would be fn call_method(b: &Base) -> i32 {...} vs fn call_method<B: BaseTrait>(b: &B) -> i32 {...} vs fn call_method(b: &BaseTrait) -> i32 {...}.

@fitzgen Sure, I understand that, but I don't see how that problem exists in this context, at least for targeting WebIDL (which is our primary target here).
I put together a playground with what I think you are suggesting for traits. I put a couple of comments in there, and I'm wondering if you have an example snippet of WebIDL that would result in producing unique code for DerivedType as BaseTrait.
The only bit from the WebIDL spec that I found mentioning how overriding members behave was the following:

Interfaces may specify an interface member that has the same name as one from an inherited interface. Objects that implement the derived interface will expose the member on the derived interface. It is language binding specific whether the overridden member can be accessed on the object.

And, at least how I read it, I don't see ever having a case where we can access an overridden method while we only have a reference to a base interface.

RFC for defining single inheritance relationships, upcasting, and downcasting: https://github.com/rustwasm/rfcs/pull/2
(aka bullet (1) from my last comment)

All that said, I don't know how often methods get overridden in practice in Web APIs.

Data! Boriz Zbarsky very kindly hacked up Firefox's WebIDL code generator to dump information about overrides. Here is what he passed along to me:

I excluded the following cases:

Static things (that live on constructors).
Writable attr overriding readonly attr.

Excluded because static methods/attributes don't really suffer the same issues with overrides due to the way they are invoked.

Writable attr overriding readonly attr.

These are situations where:
interface ReadOnlyThing {
    readonly attribute long x;
}

interface Thing : ReadOnlyThing {
     // this property receives the exact same getter as ReadOnlyThing, but _also_ a setter
    inherit attribute long x;
}

Excluded because it doesn't seem footgun-able either.

Digging into the overrides that do exist.

HTMLSelectElement.remove overrides Element.remove

This is pretty terrifying from an API design perspective. The select method returns a completely different type than the element method. I think these are logically two different functions that happen to share a name and are on interfaces that inherit from each other, and are accidentally an override.

WebKitCSSMatrix.skewY overrides DOMMatrixReadOnly.skewY

I think we can safely ignore WebKit* prefixed things. I understand why browsers have to implement it for compatibility, but we can move forward past this. Not concerned here.

PerformanceNavigationTiming.toJSON overrides PerformanceResourceTiming.toJSON

These toJSON methods extend the emitted JSON to have more specific information when more specific overrides are used. Not the end of the world if the wrong one is used.

AudioBufferSourceNode.start overrides AudioScheduledSourceNode.start

These methods have completely different parameter sets :(

Overall, it seems like there are a few cases where calling the base method with a derived thing is going to be a foot gun, but it's not common.
I think we can basically stop worrying too much about this for the most part.

Nice investigation! I'd reach a similar conclusion too :)

With https://github.com/rustwasm/rfcs/pull/2 now in FCP I'm gonna close this in favor of that RFC, any more discussion should definitely happen there!


Apply the trained netwrok obtained from p3dx to turtlebot

Hi,
I have trained a pretty good network model on p3dx (about 90 average reward and 0 averag collision),
then I followed your methods of changing the model from p3dx to turtlebot (waffle and burger). I loaded the pretained network to turtlebots, they act strange (didn't perform the tasks, just swung in place)
Then I trained the turtlebots from the start. In this case, I applied the network obtained from turtlebots to p3dx, same thing happened. (swung in the place)
Do you have the same problem? Or could you explain the reason for this situation?
Looking forward your reply. Thanks!

Different robots models have different kinematics. If you learn with a specific robot model, you will implicitly learn the kinematics of the robot in a form of expected reaction to the taken action for the state. I would find it very strange that if you train with one robot, then the network weights would be applicable to another/different robot.
Another thing to consider is the different location and filtering of the velodyne puck data. If you do not update it, the sensor data will be either unexpected or wrong for the specific robot.
In conclusion, I would not expect this to work due to differences in robot characteristics.

Thank you so much for your reply.
I understand that different kinematics would lead to different motions. But the question is that all three robot (P3dx, Waffle, Burger) are two wheel differential car. They have the same kinematics model (also they used the same plugin control algorithm: as shown in urdf file). Therefore, one train network can work for all, only not best for every one.
In my case, prefect network worked for P3dx, just didn't work for Turtlebot.

Anyway, after few attempts (I directly published cmd_vel to robots), I have found that P3dx has different postive rotation direction as Turtlebots'. Clockwise is positive for P3dx, Anticlockwise is postive for Turtlebots. Therefore, I added a minus sign in the front of action[1] whichi was rotation output. Then it worked! Turtlebots can perform as well as P3dx!
Finally, I still have one question. Where is the place of definition of rotation direction? Is it in gazebo Plugin? or anywhere else?
Thank you again!


Add lint: Calling panicking methods like single() instead of get_ variants

Quoting @alice-i-cecile from #85:

Calling .single, .single_mut, .resource, .resource_mut and so on can introduce surprising crashes to your production game.
We should pair this with a recommendation to use equivalent lints around unwrap and expect in clippy, so coders don't just change .single() to .get_single().unwrap().
We probably want to split this into two lints, one for query data and the other for resources.

Related to https://github.com/bevyengine/bevy/issues/14275


2.10.0: Error cmd pipdeptree --graph-output svc

Was ok <2.10 with python 3.10
command:
pipdeptree --graph-output svg
Traceback (most recent call last):
  File "/tmp/venv_py3.10/bin/pipdeptree", line 8, in <module>
    sys.exit(main())
  File "/tmp/venv_py3.10/lib64/python3.10/site-packages/pipdeptree/__main__.py", line 36, in main
    render(args, tree)
  File "/tmp/venv_py3.10/lib64/python3.10/site-packages/pipdeptree/_render/__init__.py", line 24, in render
    assert options.graph_output is not None  # noqa: S101
AttributeError: 'Namespace' object has no attribute 'graph_output'

Apology. Just realized this is same as #269


Velocity translate used together with hammer.js

Hey, so I'm trying to use velocity together with hammer.js. I need to have a draggable box, which, when released, animates back to it's original position.
Here's an example: http://jsfiddle.net/8xLe7m4b/ . In this demo, I'm using velocity to animate the box for another 30 pixels, when the mouse is released. The problem is that, as you can see, the animation doesn't start from the last position of the element, it starts from the original position.
Am I using the velocity animate wrong? I'm not sure what's happening or how I can fix this. For each mouse movement, I'm translating the box using CSS directly, cause using animation doesn't make sense.
I would really really appreciate any help. It would be great if I could get an example on how I can make the box animate itself back to the initial position, after mouse release. I guess I don't fully understand the css translations .. ?
Thanks a lot, and yes, thank you for this library which I'm only starting to discover.

Velocity caches the objects position, but you need to have used velocity to
move it. Velocity has a 'hook' function which can directly set CSS:
http://jsfiddle.net/wv9vmqqy/1/
On 3 February 2015 at 21:51, tehmaestro<EMAIL_ADDRESS>wrote:

Hey, so I'm trying to use velocity together with hammer.js. I need to have
a draggable box, which, when released, animates back to it's original
position.
Here's an example: http://jsfiddle.net/8xLe7m4b/ . In this demo, I'm
using velocity to animate the box for another 30 pixels, when the mouse is
released. The problem is that, as you can see, the animation doesn't start
from the last position of the element, it starts from the original position.
Am I using the velocity animate wrong? I'm not sure what's happening or
how I can fix this. For each mouse movement, I'm translating the box using
CSS directly, cause using animation doesn't make sense.
I would really really appreciate any help. It would be great if I could
get an example on how I can make the box animate itself back to the initial
position, after mouse release. I guess I don't fully understand the css
translations .. ?
Thanks a lot, and yes, thank you for this library which I'm only starting
to discover.
—
Reply to this email directly or view it on GitHub
https://github.com/julianshapiro/velocity/issues/430.

--
Matthew Balaam

development and design
matthewbalaam.co.uk http://www.matthewbalaam.co.uk
@matthewbalaam https://twitter.com/matthewbalaam
07730 953486

Or could you just forcefeed like http://jsfiddle.net/8xLe7m4b/2/ ?

Thank you both so so much. Yes, it works in both versions, but in both versions the performance was really bad on an iPhone. The trick was to add a translateZ property, to trigger Hardware Acceleration I guess.
Here's the fiddle.
Thanks again.

As a side note, Velocity auto-adds the translateZ with the mobileHA:true option (the default), however it doesn't actually do anything till the first frame after your call - so potentially there can be a flash of something wrong in between things (and mobileHA is specifically for mobile, so doesn't necessarily add it on desktop etc).

I'll add to what @Rycochet said (for future reference), since hardware acceleration is a process of transferring a layer from CPU to GPU and this process takes some time to calculate, the initialization will appear jittery. To avoid that, if possible, add translateZ to the animated element before you move it, if the intention already exists.

thanks for all the great responses in here :)


fix e2e test

close #642

Finally, it gets success. But it still fails randomly sometimes, time out or says get an empty logs search result. I have no idea.


can't serve after upgrade to 1.0.0-beta.25.5

Please provide us with the following information:

OS?

windows 10

Versions.

__ _  _ __    __ _  _   _ | |  __ _  _ __         ___ | |()
/  || '_ \  / _ || | | || | / ` || '|_  / __|| || |
| (| || | | || (| || || || || (| || |  |___|| ( | || |
_,||| || _, | _,||| _,|||          _|||||
|_/
angular-cli: 1.0.0-beta.25.5
node: 6.9.2
os: win32 x64
@angular/common: 2.4.3
@angular/compiler: 2.4.3
@angular/core: 2.4.3
@angular/forms: 2.4.3
@angular/http: 2.4.3
@angular/platform-browser: 2.4.3
@angular/platform-browser-dynamic: 2.4.3
@angular/router: 3.4.3
@angular/compiler-cli: 2.4.3

Repro steps.

ng serve  --port 3000  --open true

The log given by the failure.

Uncaught TypeError: Cannot convert undefined or null to object
at hasOwnProperty ()
at Function.webpack_require.o (inline.bundle.js:136)
at Object. (main.bundle.js:1827)
at webpack_require (inline.bundle.js:53)
at Object. (main.bundle.js:4865)
at webpack_require (inline.bundle.js:53)
at Object. (main.bundle.js:4654)
at webpack_require (inline.bundle.js:53)
at Object. (main.bundle.js:14615)
at webpack_require (inline.bundle.js:53)
at webpackJsonpCallback (inline.bundle.js:24)
at main.bundle.js:1

my bundle is valid
Hash: 82c35e8cba93eecbbd9b
Time: 8538ms
chunk    {0} main.bundle.js, main.bundle.map (main) 721 kB {3} [initial]
chunk    {1} styles.bundle.js, styles.bundle.map (styles) 10.1 kB {4} [initial] [rendered]
chunk    {2} scripts.bundle.js, scripts.bundle.map (scripts) 375 kB {4} [initial]
chunk    {3} vendor.bundle.js, vendor.bundle.map (vendor) 5.69 MB [initial]
chunk    {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entry]
webpack: bundle is now VALID.

issue resolved by replacing
import * as fromInternal from './internal';
fromInternal.helpReducer
with
import { helpReducer } from './internal/help-center';
any help way this was happens

Hi @alyahmedaly,
I have the same issue, but I can't figure out where it's coming from.
bootstrap 64d7cd1…:135 Uncaught TypeError: Cannot convert undefined or null to object     at hasOwnProperty (<anonymous>)     at Function.__webpack_require__.o (bootstrap 64d7cd1…:135)     at Object.385 (cell.transformer.ts:64)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at Object.359 (environment.ts:16)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at Object.361 (campaign.service.ts:11)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at Object.581 (app.menu.ts:18)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at Object.461 (src async:7)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at Object.864 (main.bundle.js:3833)     at __webpack_require__ (bootstrap 64d7cd1…:52)     at webpackJsonpCallback (bootstrap 64d7cd1…:23)
How did you manage to find where was you issue? Also I don't have any import * in my code.

disabled source map using -sm false
enabled chrome pause on exceptions
start debugging  and found "helpReducer" came with null
i guessed it :)

for you the issue seems to be related to an import in app.menu.ts try to deep import campaign.service.ts
sorry for my bad english

The root cause of this issue is a bug in webpack 2.2.0-rc3 which has now been fixed in RC4: https://github.com/webpack/webpack/issues/3895
@hansl @filipesilva I modified my local angular-cli to use webpack 2.2.0-rc4 and it cleared the run time error perfectly. Many ng2 devs on github and gitter are experiencing these issues from the same root cause after upgrading to ng cli beta 25.5. Can you guys fast track this webpack dependency upgrade in the ng CLI codebase?

@petercn added https://github.com/angular/angular-cli/pull/4008


Consider renaming BM to MNO

Instead of referring to standard (3 control-plane, X worker nodes) and compact clusters as "Bare Metal" we should rename the terminology to MNO or Multi-Node OpenShift.  This makes it simpler to understand since the two deployment playbooks with be MNO and SNO or Multi-Node OpenShift and Single Node OpenShift. Thus we should rename the bm-deploy playbook to mno-deploy.  Considering this change will affect many folks, this needs to be communicated well before it is merged.

@akrzos may we close this as complete?

Yes, this has been completed.
https://github.com/redhat-performance/jetlag/pull/559


Support for response buffering

One of the biggest issue with Stetho is that the network response is not buffered and it can result in few issues:

Loose network calls before the bridge is connected.
Doesn't work across the session.

It will be great if Stetho can provide any kind of buffering (it can be optional/configurable). The architecture can be simple - interceptor is inserting the content in a persistent queue, and the data is read from the same.
https://github.com/facebook/stetho/blob/master/stetho-okhttp/src/main/java/com/facebook/stetho/okhttp/StethoInterceptor.java

I've also been thinking about this a lot lately but I don't have any clear design proposals yet.  One idea would be to simply buffer network events on disk and then when a new client connects replay them all back.  But there are gotchas with visualization here (notably there's no negative time so it would all appear as having happened "now").  I'm very interested in a PR here if you could throw something together that works consistently.


feat(combo-box): add support for translateWithId

Closes IBM/carbon-components-react#1258
Update ComboBox to pass along translateWithId
Changelog
New
Changed

Update ComboBox to pass along translateWithId

Removed

cc @lovemecomputer


Feature Request: Implement ParserSealed for Choice<Vec>

I want to build a choice parser at runtime, using some user-supplied tokens.
However, it doesn't seem like that's possible with the latest chumsky version
https://github.com/zesterer/chumsky/blob/10dad10f6a9254456bc56b91d2f0763427d7ddec/src/primitive.rs#L841
I could instead use a number of chained .or() parsers, but that might not be an ideal solution.
Background info why I even want this in the first place:
I'm writing an extensible math parser. Extensible, because I cannot possibly cover all areas of mathematics. At the very least, users should be able to define new symbols, like saying lim is a prefix operator and not a funnily named variable. Which would translate to choice(vec![lim parser, variable parser, other parsers])

This seems like a sensible thing to do. If you're interested in contributing a PR, it should be possible to pretty much just duplicate the impl that already exists for [A; N] and swap the types out. If not, I can put it on my backlog to do at some point.


brew install git on a machine with no git tries to git clone taps

I installed linuxbrew on a machine that does not have git. During the installation the fallback solution to cloning the repository was curl'ing the tarball. After linuxbrew was ready I did brew doctor and got:
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: Git could not be found in your PATH.
Homebrew uses Git for several internal functions, and some formulae use Git
checkouts instead of stable tarballs. You may want to install Git:
  brew install git

Next I proceed to brew install git -v, but this time there's no fallback:
==> Tapping homebrew/dupes
git clone https://github.com/Homebrew/homebrew-dupes /home/chroottest/.linuxbrew/Library/Taps/homebrew/homebrew-dupes --depth=1
You must: brew install git
Error: Failure while executing: git clone https://github.com/Homebrew/homebrew-dupes /home/chroottest/.linuxbrew/Library/Taps/homebrew/homebrew-dupes --depth=1

I think brew should (atleast for installing git) check whether it already exists, if not fallback to the curl method of acquiring the taps.

Dupe of #435.  Do brew install git --without-tcl-tk or install git first.

We have a few options.

Make --without-tcl-tk the default i.e. depends_on "tcl-tk" => :optional
Make --without-tcl-tk the default if git is not found in the PATH
Add tcl-tk to Homebrew/linuxbrew


Add MULTISIG_VOTE

Pull Request Test Coverage Report for Build 80

11 of 24 (45.83%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-2.8%) to 61.754%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

index.js
11
24
45.83%

Totals

Change from base Build 75:
-2.8%

Covered Lines:
166

Relevant Lines:
255

💛  - Coveralls


Move reusable code into lib/bump

This will make it easy to make Bump work as a library, as well as an
app.
The next step is either to split the core (library) code and the app
code (workers & sidekiq UI) into separate codebases, or to make this
repo work for both purposes (by adding a gemspec).
Currently these changes are purely organisational, and everything works
as it did previously.

@hmac - can you take a look? Everything runs 👌  locally.

Big 😬
This kind of PR is sooo much easier to review if you do the file moving and the file changes in separate commits.

@hmac done :-)

looks good :+1:


Using NullLogger types from Logging.Abstractions

aspnet/Logging#571
@Eilon

This is blocking the build so I'm merging it now.


Adds initial e2e tests for settings menu

Description
Added tests for the following related to the settings menu:

[x] Should open settings menu
[x] Should close settings menu on click X or click outside of window
[x] Should toggle preferences

[x] Dark mode
[x] Active line highlight
[x] Markdown preview

[x] Should change sort order

[x] Last updated
[ ] Favorites - these are now always pinned to the top of the note list, see db79ec5
[x] Title (Alphabetical)
[x] Date created

Closes #374
Browser checklist
This PR has been tested in the following browsers:

[x] Chrome
[ ] Firefox
[ ] Safari

Testing checklist

[x] End-to-end tests have been created if necessary

Will dig into why there are failing tests and push a fix.

Favorites is no longer a sort option so it's probably that.


Update to sequence of nonce request in federated user case

Azure AD nonce is requested prior to getting SAML token from ADFS (or equivalent federated IDP) in case of federated user, however it's important that nonce is requested prior to sending the SAML token to Azure AD. This update changes the statement about nonce request in federated user case to highlight the fact that nonce is requested prior to sending the SAML token to Azure AD. The update is made to alleviate concern about documentation not corresponding to sequence of requests on the wire.

Docs Build status updates of commit 1a6d211:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/active-directory/devices/concept-primary-refresh-token.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

#sign-off


Need help write unit test for expression propertires

Hi,
I am writing angular jasmine unit test and I am new for it.
Need your help on how write tests for the expression properties functions..
Like
expressionPropertirs : {
'templateOptions.options : (model) => {
Return refobj
},
'templateOptions.required': { return logicFlg }
}
Thanks in advance

The doc about testing is not available yet https://github.com/ngx-formly/ngx-formly/issues/2723 so please check our source code as a starting example: https://github.com/ngx-formly/ngx-formly/blob/main/src/core/src/lib/components/formly.form.spec.ts#L133-L149


Bump sane-pdf-reports docker image

Related PRs:

https://github.com/demisto/sane-reports/pull/230

Docker Image Ready - Dev
Docker automatic build at CircleCI has deployed your docker image: devdemisto/sane-pdf-reports:<IP_ADDRESS>837
It is available now on docker hub at: https://hub.docker.com/r/devdemisto/sane-pdf-reports/tags
Get started by pulling the image:
docker pull devdemisto/sane-pdf-reports:<IP_ADDRESS>837

Docker Metadata

Image Size: 729.22 MB

Image ID: sha256:a40a12f8397efbbc07cf7702ec6e21a62f8373ceee30879369f472aa61168947

Created: 2022-10-30T09:40:13.70279198Z

Arch: linux/amd64

Command: ["python3"]

Environment:

PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
PYTHON_VERSION=3.10.8
PYTHON_PIP_VERSION=22.2.2
PYTHON_SETUPTOOLS_VERSION=63.2.0
PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/5eaac1050023df1f5c98b173b248c260023f2278/public/get-pip.py
PYTHON_GET_PIP_SHA256=5aefe6ade911d997af080b315ebcb7f882212d070465df544e1175ac2be519b4
DOCKER_IMAGE=devdemisto/sane-pdf-reports:<IP_ADDRESS>837

Labels:

org.opencontainers.image.authors:Demisto<EMAIL_ADDRESS>org.opencontainers.image.revision:988044c7189e27eb84977c9213a3ba3898cd9464
org.opencontainers.image.version:<IP_ADDRESS>837

Docker Image Ready - Production
Docker automatic build at CircleCI has deployed your docker image: demisto/sane-pdf-reports:<IP_ADDRESS>838
It is available now on docker hub at: https://hub.docker.com/r/demisto/sane-pdf-reports/tags
Get started by pulling the image:
docker pull demisto/sane-pdf-reports:<IP_ADDRESS>838

Docker Metadata

Image Size: 729.22 MB

Image ID: sha256:520dcf3e5d5977ee0c4a87bddfaa7f0411cd92b4fa32604fb88312e20bdabb6d

Created: 2022-10-30T09:48:37.450466659Z

Arch: linux/amd64

Command: ["python3"]

Environment:

PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
PYTHON_VERSION=3.10.8
PYTHON_PIP_VERSION=22.2.2
PYTHON_SETUPTOOLS_VERSION=63.2.0
PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/5eaac1050023df1f5c98b173b248c260023f2278/public/get-pip.py
PYTHON_GET_PIP_SHA256=5aefe6ade911d997af080b315ebcb7f882212d070465df544e1175ac2be519b4
DOCKER_IMAGE=demisto/sane-pdf-reports:<IP_ADDRESS>838

Labels:

org.opencontainers.image.authors:Demisto<EMAIL_ADDRESS>org.opencontainers.image.revision:5901f04697613f4ddf24873d16d5f328d99f8011
org.opencontainers.image.version:<IP_ADDRESS>838