model.fit() does not return the best model

Unless  you are using ModelCheckpoint callback with save_best_only parameter, model.fit() returns not the best model encountered during the training (i.e. the one with the lowest validation loss or with highest validation accuracy), but rather the model whatever it happens to be at the last epoch (which cannot be counted on to have lowest loss or highest accuracy).
Since many users, esp beginners are unaware of this callback, by default their results are always not the best possible with the current parameters and the accuracy of their network is unnecessarily negatively impacted, despite that a better model has likely been already encountered during the already performed training pass.
Proposed change: model.fit() should return the best model encountered during training by default, or if it will negatively impact performance, at least provide a parameter to do so.
The current workaround is the following:
model = Sequential()
...
model.compile(loss='mse', optimizer=opt)
checkpointer = ModelCheckpoint(filepath="weights.hdf5", verbose=1, save_best_only=True)
hist = model.fit(..., callbacks=[checkpointer])
model.load_weights('weights.hdf5')
predicted = model.predict(X_test_mat)

[X] Check that you are up-to-date with the master branch of Keras. You can update with:
pip install git+git://github.com/fchollet/keras.git --upgrade --no-deps
[X] If running on Theano, check that you are up-to-date with the master branch of Theano. You can update with:
pip install git+git://github.com/Theano/Theano.git --upgrade --no-deps
[X] Provide a link to a GitHub Gist of a Python script that can reproduce your issue (or just copy the script here if it is short).

I think changing behavior of fit is not appropriate and Callback is powerful enough to achieve it. Maybe we should make some tutorials in FAQ to help user new to Keras.

What would be a down side of such change? Why would one not want model.fit() to return the best you can get during the current run?

Why would one not want model.fit() to return the best you can get during the current run?

because the word "best" is relative. sometime user want the lowest loss result on train data, most of the time on validation data.
and yes, +1 for FAQ entry.

I see. But with the current behavior it's neither lowest training loss nor lowest validation loss - it is whatever happens to be at the last epoch. I think selecting an intelligent default (e.g. lowest val loss) would be a right thing to do, in particular to make it easier for beginners to start and get better results. There are no backwards compatibility issues and the experts will still have full control.
Case in point - I've started with Keras about three months ago, trying to use an LSTM for time series forecasting. With the "default" behavior I've been getting accuracy of the forecast around or barely above 50%. But it's only recently I've realized that the model returned after fit() that I've been using to predict() is not the best model and added the ModelCheckpoint callback saving the best model - my accuracy with otherwise the same parameters went up to 55-60%. I am just thinking about others trying machine learning and some for this reason getting unnecessarily wrong impression that "it doesn't work yet", before they get to the depths of the documentation.
And of course I support covering this in FAQ, if the decision is not to make the change.

What would be a down side of such change?

The behaviors of fit in other ML framework are the same as Keras. Modifying it might produce unexpected result for most of the users.

Could this maybe be an optional parameter to fit? Something along these lines:
fit.(..., return_best_model=False)
Doing so, we would keep the current behaviour and also ease retrieving the best models (with return_best_model=True) without storing files to disk and with less code.

Sure, I think this will be a nice solution.

Is the only -- currently existing -- solution, to save the weights to a hdf5 file using ModelCheckpoint and then loading the file again and applying it to a model, which is then returned?
so something similar to this:
def getBestModel(...):
    model.compile(..)
    best_weights_filepath = './best_weights.hdf5'
    earlyStopping=kcallbacks.EarlyStopping(monitor='val_loss', patience=10, verbose=1, mode='auto')
    saveBestModel = kcallbacks.ModelCheckpoint(best_weights_filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='auto')

    # train model
    history = model.fit(x_tr, y_tr, batch_size=batch_size, nb_epoch=n_epochs,
              verbose=1, validation_data=(x_va, y_va), callbacks=[earlyStopping, saveBestModel])

    #reload best weights
    model.load_weights(best_weights_filepath)
    return model

fit(..., return_best_model=False)
is definitely better than no change. But just look how illogical "return_best_model=False" sounds. I still don't see a reason why it shouldn't be True by default. Just because other frameworks don't return the best model, we shouldn't blindly copy the bad behavior.

Could we get an update on this? Current behavior is limiting use of scikit wrappers in grid search.
For now we can save weights using ModelCheckpoint and then load them in custom scorer in GridSearchCV/RandomizedSearch but thats rather ugly workaround and its tricky while using multiple threads for GridSearch.

Has this issue been resolved or addressed? What is the optimal way to return the best weights from any given epoch based on metrics obtained?

@jerpint Currently, fit does not have a return_best_model parameter. See fit docs.
At the moment, the best way to get the best model is to use the ModelCheckpoint:
from keras.callbacks import ModelCheckpoint
...
mcp = ModelCheckpoint(model_chk_path, monitor="val_acc",
                      save_best_only=True, save_weights_only=False)
model.fit(X_train, Y_train,
          batch_size=batch_size,
          epochs=nb_epoch,
          validation_data=(X_test, Y_test),
          shuffle=True,
          callbacks=[mcp])

@MartinThoma I think you meant the best way to save the best model, am I correct? My understanding is that after fitting for n epochs if I need to predict using the best model I still need to explicitly load it before predicting.

@roebius Right, I wanted to write "save". Thank you, I've edited it. Yes, I also think that you would need to load it from the checkpoint.

I think changing the default to return the best model is a smart idea... it is definitely confusing. At the very least, the Keras examples should show it very prominently.
As a new user, you shouldn't have to go into a Github issue in order to return the best model.

@Hudler do you have a similar class for EarlyStopping?
I think you might be describing the solution to my problem, but I'm not sure.
When I try to put a KerasClassifier into GridSearch (on a subset of data), I get the following output:
(...)
Epoch 00021: val_acc did not improve

173/173 [==============================] - 0s - loss: 0.5392 - acc: 0.7225 - val_loss: 0.3749 - val_acc: 1.0000
109/109 [==============================] - 0s
192/217 [=========================>....] - ETA: 0s
217/217 [==============================] - 0s
Train on 173 samples, validate on 44 samples
Epoch 1/200
 64/173 [==========>...................] - ETA: 0s - loss: 0.7012 - acc: 0.5156
 96/173 [===============>..............] - ETA: 0s - loss: 0.7198 - acc: 0.4896
128/173 [=====================>........] - ETA: 0s - loss: 0.7217 - acc: 0.5156
160/173 [==========================>...] - ETA: 0s - loss: 0.7209 - acc: 0.5188Epoch 00000: early stopping
Epoch 00000: val_acc did not improve

173/173 [==============================] - 0s - loss: 0.7216 - acc: 0.5145 - val_loss: 0.6673 - val_acc: 0.7273
 32/109 [=======>......................] - ETA: 0s
109/109 [==============================] - 0s
217/217 [==============================] - 0s
Train on 174 samples, validate on 44 samples
Epoch 1/200
 32/174 [====>.........................] - ETA: 0s - loss: 0.7479 - acc: 0.5000
 64/174 [==========>...................] - ETA: 0s - loss: 0.7409 - acc: 0.5156
 96/174 [===============>..............] - ETA: 0s - loss: 0.7245 - acc: 0.5938
128/174 [=====================>........] - ETA: 0s - loss: 0.7170 - acc: 0.6172
160/174 [==========================>...] - ETA: 0s - loss: 0.7098 - acc: 0.6312Epoch 00000: early stopping
Epoch 00000: val_acc did not improve

174/174 [==============================] - 0s - loss: 0.7063 - acc: 0.6322 - val_loss: 0.7228 - val_acc: 0.1591
108/108 [==============================] - 0s
 64/218 [=======>......................] - ETA: 0s
128/218 [================>.............] - ETA: 0s
192/218 [=========================>....] - ETA: 0s
218/218 [==============================] - 0s
Train on 173 samples, validate on 44 samples
Epoch 1/200
 48/173 [=======>......................] - ETA: 0s - loss: 0.6862 - acc: 0.5417
 96/173 [===============>..............] - ETA: 0s - loss: 0.6757 - acc: 0.6250
144/173 [=======================>......] - ETA: 0s - loss: 0.6713 - acc: 0.5972Epoch 00000: early stopping
Epoch 00000: val_acc did not improve

Apparently, it seems that since the same instance of EarlyStopping is used as in the previous iteration of grid search, if the model does not improve immediately at the first epoch with respect to what was saved as "best" before, the code stops immediately. This obviously makes GridSearch obsolete.

This post gives very detailed description of how to use ModelCheckpoint in Keras. Hope it will help.

@FrugoFruit90
Actually, I ran multiple instances of my python script to perform the gridsearch.
However you can write your custom EarlyStopping for example by changing the 'on_train_end' method of the default class https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L505 . You need to set self.best = np.Inf (or -Inf) and self.wait = 0.

I am facing a problem that is related to this. I need to convert the trained Keras model to a TensorFlow model. As part of that process, I need to use keras.models.load_model method. However, the trained model saved using ModelCheckPoint seems different from what is saved with model.save method (correct me if I am wrong here), and cannot be loaded with load_model() method. In order to do that, I have to use model.save() method. However, with model.save() method, I cannot get the model with the best weights. I am stuck here. Can anyone please give a hint or suggestions here?

@thanks louis925 for this nice solution.,
I agree with most users here: working with Keras and earlystop since a couple of months, I only now, by accident realise, that earlystop does NOT restore the best found value. I expected Early-stop to do so, simply because such behaviour will be desired in most cases.
So at least it would be great, that Keras tells this prominently in its documentation, and provides a handy solution - an additional parameter to earlystop would be the best. Such parameter and its explanation in the docu would make clear the issue to everyone, and provide an easy solution at the same time. Dont see any drawback for this.

louis925
I had a situation, where I initialised the GetBest CallBack function as defined by you once, but called model.fit() multiple times (for cross validation), and wanted to model to re-initialise the incumbent (self.best) for each training run. Therefore I added an additional parameter "reset" to your code:
def __init__(self, monitor='val_loss', verbose=0,
             mode='auto', period=1, reset = True):
    super(GetBest, self).__init__()
    self.monitor = monitor
    self.verbose = verbose
    self.period = period
    self.reset = reset
    self.best_epochs = 0
    self.epochs_since_last_save = 0

.......
def on_train_begin(self, logs=None):
if self.reset == True:      # useful if multiple calls of fit(), e.g. during cross validation
self.best = np.Inf if self.monitor_op == np.less else -np.Inf
self.best_weights = self.model.get_weights()

js1285 - I don't think any information is retained in the callback between successive calls to fit (i.e., a new instance is created), hence self.best will not retain its past value. You might have to create a class/static variable to do this.

I did shorten the answer in https://github.com/keras-team/keras/issues/2768#issuecomment-361070688 and submit a pull request as shown above.

There's also the option of the EarlyStopping callback with the restore_best_weights.
This runs at each epoch end.

There's also the option of the EarlyStopping callback with the restore_best_weights.
This runs at each epoch end.

Specifically, it only runs when patience is exceeded - meaning if the model achieves best performance < patience epochs before the epoch limit, patience is not exceeded and the best weights are not restored
e.g.
epochs = 500
patience = 10
best performance at epoch = 495
patience not exceeded and best weights not restored
relevant code from tf 2.2.0 release:
https://github.com/tensorflow/tensorflow/blob/2b96f3662bd776e277f86997659e61046b56c315/tensorflow/python/keras/callbacks.py#L1479-L1485


data missing in grafana dashboard

hello,
I followed chart installation as per instructions keeping all default values provided but could not get data in dashboard and tried with modifying values.yaml for data to get scrape to grafana
tried with below content as well but no luck.
chart installation was done right but missing something to get data in dashboard. I was able to get kubernetes cluster data  in another dashboard to monitor like cluster memory and cpu.
Please advise
helm upgrade x509-certificate-exporter enix/x509-certificate-exporter --values myvalues.yaml
hostPathsExporter:
daemonSets:
nodes:
watchFiles:
- /var/lib/kubelet/pki/kubelet-client-current.pem
- /etc/kubernetes/pki/apiserver.crt
- /etc/kubernetes/pki/apiserver-etcd-client.crt
- /etc/kubernetes/pki/apiserver-kubelet-client.crt
- /etc/kubernetes/pki/ca.crt
- /etc/kubernetes/pki/front-proxy-ca.crt
- /etc/kubernetes/pki/front-proxy-client.crt
- /etc/kubernetes/pki/etcd/ca.crt
- /etc/kubernetes/pki/etcd/healthcheck-client.crt
- /etc/kubernetes/pki/etcd/peer.crt
- /etc/kubernetes/pki/etcd/server.crt
watchKubeconfFiles:
- /etc/kubernetes/admin.conf
  Thanks

Hi @kRajr
Given these values you must be a Prometheus operator user. It is likely the operator did not select the ServiceMonitor object installed by our Helm chart.
Troubleshooting could go this way:

Get access to the Prometheus web UI (kubectl port-forward, if not exposed in your cluster)
Go to Status/Targets and look for "x509"
If the x509-certificate-exporter is showing up "DOWN", then it could be a NetworkPolicy issue. You may have set-up network isolation of namespaces.
Or if it's missing then it has to do with the Prometheus operator

Check logs of the operator when you helm install the exporter (uninstall it first). It may explain why the ServiceMonitor is not accepted.
Inspect the YAML definition for your Prometheus custom resource. It must have serviceMonitorNamespaceSelector or serviceMonitorSelector parameters that prevent finding the ServiceMonitor installed by x509-certificate-exporter

I hope this helps a bit. Otherwise please provide a YAML export of your Prometheus object.

Hi @npdgm
Thanks for troubleshooting steps got some insight. I redeployed chart with default values. I am using prometheus operator. Prometheus operator was deployed using Kube-prometheus helm chart. In prometheus CRD I see labels added only for servicemonitorselector as below
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels:
release: kube-prometheus-stack
I added label release: kube-prometheus-stack in x509 servicemonitor selector filed to match for prometheus operator but did not help, nothing on prometheus operator pod logs as well.  I redeployed our x509 certificate with default values.yml and added below label in x509 service monitor manually before deploying chart. no logs in tail with x509 in prometheus operator
selector:
matchLabels:
{{- include "x509-certificate-exporter.selectorLabels" . | nindent 6 }}
release: kibe-prometheus-stack
much appreciated

@achetronic thank you for taking the time to report issues. We really appreciate it.
I agree with your position on PodMonitors. By default a ServiceMonitor will offer greater compatibility with older prometheus-operator versions and is quite the standard.
The associated Service was made headless on purpose, as there is no point having an internal load-balancer in front of multiple exporters. Prometheus-operator does query Endpoints and should not need kube-proxy or a CNI to provision unneeded network configurations.
I wonder why you and possibly other users may have an issue with the headless service. We've been deploying this chart on many Kubernetes distributions, CNI, and cloud providers, and never encountered this situation. If you can spare a little time, could you tell us about your environment and any detail you think may differ from most common clusters?
For example:

k8s distribution, version, and cloud provider used if it's managed
how was prometheus-operator deployed, it's version, and was the kube-prometheus-stack chart used?
usage of NetworkPolicies or not
CNI used, and is kube-proxy employed

Anyhow I went to investigate a few charts from prometheus-community and they don't seem to use headless services. Even though I'm pretty sure other exporters do use headless Services, let's follow the same practice as prometheus-community.
I will open a PR and make the Service a regular ClusterIP by default and move the headless option as a value flag. You can expect a release fairly soon as we have a few CI and build changes in the pipe.

:tada: This issue has been resolved in version 3.8.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Query: Inference on new data

I came across your paper, and it seems like a promising alternative to BERTopic. Running your code on a small custom dataset with a custom sentence encoder produced good topics. One thing is, I couldn't see a way of inferring topics on new documents in the code without rebuilding all the topics. I assume for zero-shot classification, I could just find the nearest neighbours against vec_t for each sentence and resolve it to the topic word list? But not sure if there is a better way of approaching this.

Thanks for the comment! Sorry for replying late. You are right, the library so far does not support (incremental) inference. Your approach seems reasonable.
I might add that feature in the future. Currently, the paper is under review at a conference and I will work further on it, once the paper gets accepted.


Modifier.drawLayer(rotationX=, rotationY=), support perspective projection

Now it is drawn with isometric projection. I.e. when we draw Box(Modifier.drawLayer(rotationX=45), it will just change its height.
May be it will help to implement perspective projection:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/transforms/3d-rotation
Drawing of layers (and nested ones) should be similar to drawing of layers in Android.

I also found it not working correctly.
I tried to achieve an effect like this:
https://codepen.io/iremlopsum/pen/WzKBpE
But the result of my code is somehow random and unexpected.
Sometimes negative values are treated the same way as positive, sometimes it works.
Really strange behaviour.
        val offset = remember { mutableStateOf(Offset.Zero) }
        val size = remember { mutableStateOf(IntSize.Zero) }

        val rotationX = if (offset.value == Offset.Zero)
            0f
        else
            ((offset.value.y / size.value.height) - 0.5f) * 90

        val rotationY = if (offset.value == Offset.Zero)
            0f
        else
            ((offset.value.x / size.value.width) - 0.5f) * 90

        Box(
            modifier = Modifier
                .graphicsLayer(
                    rotationX = rotationX,
                    rotationY = rotationY
                )
                .pointerMoveFilter(
                    onExit = {
                        offset.value = Offset.Zero
                        return@pointerMoveFilter true
                    },
                    onMove = {
                        offset.value = it
                        return@pointerMoveFilter true
                    }
                )
                .onSizeChanged {
                    size.value = it
                }
        ) {

            // The content
        }
    }
}

Made some experiments. Sample code:
@Composable
fun example0() {
    val (r, setR) = remember { mutableStateOf(true) }

    val rot = when (r) {
        true -> 45f
        false -> 0f
    }

    Box(Modifier.padding(100.dp).size(50.dp).graphicsLayer(rotationX = rot, rotationY = rot).background(Color.Green).clickable {
        setR(!r)
    }) {
        Text("R")
    }
}

Android:

Desktop (perspective-ish but still differs):

It's achieved with the following patch, inspired by the link from the description of this ticket:
Index: compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt	(revision f4b9436637e0391351984ebfa5470ff77051815e)
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/platform/SkiaLayer.skiko.kt	(date<PHONE_NUMBER>840)
@@ -24,6 +24,7 @@
 import androidx.compose.ui.graphics.Canvas
 import androidx.compose.ui.graphics.ClipOp
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.DefaultCameraDistance
 import androidx.compose.ui.graphics.DefaultShadowColor
 import androidx.compose.ui.graphics.Matrix
 import androidx.compose.ui.graphics.Outline
@@ -205,6 +206,12 @@
             rotateZ(rotationZ)
             scale(scaleX, scaleY)
         }
+
+        val depth = DefaultCameraDistance * 42
+
+        matrix *= Matrix().apply {
+            set(2, 3, -1f / depth)
+        }
         matrix *= Matrix().apply {
             translate(x = pivotX, y = pivotY)
         }

However, I couldn't find the depth that will make the image equal to the Android version, so probably more complex change is needed.
Also, there is some code from https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/opengl-perspective-projection-matrix, probably it can help somehow.

      val angleOfView = 90f
      val near = 0.1f
      val far = 100f
      val imageAspectRatio = size.width.toFloat() / size.height
      val n = near
      val f = far

      // gluPerspective
      val scale = tan(angleOfView * 0.5f * PI.toFloat() / 180f) * n
      val r = imageAspectRatio * scale
      val l = -r
      val t = scale
      val b = -t
      // gluPerspective

      // glFrustum
      val m = Matrix(
          floatArrayOf(
              2 * n / (r - l),
              0f,
              0f,
              0f,

              0f,
              2 * n / (t - b),
              0f,
              0f,

              (r + l) / (r - l),
              (t + b) / (t - b),
              -(f + n) / (f - n),
              -1f,

              0f,
              0f,
              -2 * f * n / (f - n),
              0f,
          )
      )
      // glFrustum

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Create a new pull request by comparing changes across

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.06%) to 95.633%

Files with Coverage Reduction
New Missed Lines
%

js/src/util/focustrap.js
1
91.67%

Totals

Change from base Build<PHONE_NUMBER>:
-0.06%

Covered Lines:
2024

Relevant Lines:
2077

💛  - Coveralls


Underbarrel guns

Description
Basically the Underbarrel gun feature that was in CrackShot, you could switch between 2 guns from 1 gun, while the "underbarrel attachment" was technically a seperate gun.
This was often used to have an underbarrel grenade launcher or something else.
The underbarrel has its own ammo pool, not using the main gun's one, <<30 | 1>> as example.
The underbarrel attachment can be coded as its own gun which then can be added to the Underbarrel of another gun, with Mechanics and the option to choose your trigger to switch between main gun and underbarrel gun.
Configuration
Underbarrel:
  Trigger: <TriggerSerializer>
  Switch_Delay: <Ticks> #Delay before you can fire the weapon after switching.
  Mechanics: <MechanicsSerializer>
  Weapon_Attachment: <weapon name>

Payment (optional)

[ ] I'm willing to pay for this feature

This is done via firemodes in WMP


Minor changes in documentation

Do not build under sudo (which fails).
Use gen_random_uuid() instead of uuid_generate_v4() in example.

Thank you, should save other people from confusion!


Create drop down menu to navigate to multiple games

@cmalk I'm a little unfamiliar with what the details of this is.. So go ahead and edit it.

I think they want the "GAME" tab to turn into a drop down menu wherein you could select "GAME 1", "GAME 2", etc

That's right, it would create a menu where you can select game 1 level 1, game 1 level 2, ..., game 2 level 1, etc.


Find most similar nodes

I'd like to have per each nodes the most similar based on embedding.
In the node2vec python library by SNAP: https://snap.stanford.edu/node2vec/
We can do that:
for node, _ in node2vec_model.most_similar('2302108'):
    print(node)

But using this library I got an error:
AttributeError                            Traceback (most recent call last)
<ipython-input-25-a7cd17929993> in <module>
----> 1 for node, _ in node2vec_model.most_similar('2302108'):
      2     print(node)

AttributeError: 'Node2Vec' object has no attribute 'most_similar'

Hi there,
Thanks for your message.
This functionality is not currently supported in the library.
I'm going to think about including it in a future release.
In the meantime, you could use Scikit-Learn DistanceMetric on the node embeddings to achieve what you want.


TST test pip check

Checklist

[ ] Used a fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

Failed to even lint the recipe, probably because of a conda-smithy bug :cry:. This likely indicates a problem in your meta.yaml, though. To get a traceback to help figure out what's going on, install conda-smithy and run conda smithy recipe-lint . from the recipe directory.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

The outputs section contained an unexpected subsection name. commands is not a valid subsection name.
The outputs section contained an unexpected subsection name. requires is not a valid subsection name.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin rerender

@conda-forge-admin rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to re-render for you, but it looks like there was nothing to do.


Add Provider Secret Condition

Add reconcile log message, so we can better visualize in the logs how often we reconcile
Change the column labels from Reason to Status
Remove IAM and INFRA labels as the values are implied
Remove an errant log entry that just printed a namespace

Signed-off-by: Joshua Packer<EMAIL_ADDRESS>@ianzhang366 @zhujian7 I'm interested in your feedback on the column names. Whether the READY needs to have the prefixes IAM and INFRA, as well as the STATUS.
NAME       STATUS                                       READY   STATUS                            READY   REFERENCE                           FOUND
sample     PlatformInfrastructureConfiguredAsExpected   True    PlatformIAMConfiguredAsExpected   True    ProviderSecretReferenceAsExpected   True
sample02   PlatformInfrastructureConfiguredAsExpected   False   PlatformIAMBeingConfigured        True    ProviderSecretReferenceAsExpected   True

Let me know if you think the status and the Ready labels need the prefixes
NAME       INFRA STATUS                                 INFRA READY   IAM STATUS                        IAM READY   REFERENCE                           FOUND
sample     PlatformInfrastructureConfiguredAsExpected   True          PlatformIAMConfiguredAsExpected   True        ProviderSecretReferenceAsExpected   True
sample02   PlatformInfrastructureConfiguredAsExpected   False         PlatformIAMBeingConfigured        True        ProviderSecretReferenceAsExpected   True

/cc @ianzhang366 @zhujian7

/lgtm


Diffing error

Hello, I think I have found an error in the diffing display in the demos provided. I used the JSON objects pasted here on Demo 1 to check the diffing display, and it seems that the display on line 27 on the left side and 24-27 on the right side are incorrect.
I believe the correct display would be to highlight line 25 on the left side, and lines 23 and 24 on the right side.

Hmm, interesting. In relation to #28 I will have to take deeper look at the diffing logic

+1

Took some time, but PR #69 solves this it seems


[incubator/jaeger] Update cassandra, trim README a little, grpc, prefer include over template

[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/chart])

/lgtm

/lgtm


Authentication problem with Niagara 4.6

I have been getting the following error when trying to connect to a JACE 8000:
File "C:\ProgramData\Anaconda3\lib\site-packages\pyhaystack\client\ops\grid.py", line 133, in _do_auth_failed
raise AuthenticationProblem()
AuthenticationProblem
I have set up the user as a basicHTTP user but I still can't connect. After watching the traffic it looks like the JACE sends back a Hello handshake but then pyhaystack just gives up and tries again.

I don't have access yet to 4.6..... but here is what I do with 4.4
The user I use is configured with digest using all rights I need (html5 web Profile) and for get_bql to work, we need the hx_view checked in the web profile (going from memory here... may be slightly different name.
Then I use this script to log in :
from pyhaystack.client.niagara import Niagara4HaystackSession
session = Niagara4HaystackSession(uri='https://<IP_ADDRESS>',
                                 username=user,
                                 password=password,
                                 http_args={'debug':True, 'tls_verify':False, 'insecure_requests_warning':False})

Hope it'll help

@tybeady It work on my side with 4.6 using SSL. Is this still a problem for you ?

Really, we should pull our fingers out and come up with a more helpful error message… when I wrote that code I didn't bother trying to add code to diagnose it further and it does make things difficult at times.
The http_args={'debug': True}, coupled with setting up logging (do import logging; logging.basicConfig(level=logging.DEBUG) prior to attempting to connect) can help diagnose a lot of issues.


SP5 Avalonia: Call InvalidateVisual from Dispatcher.UIThread.

Fixed #3359

Thanks for this fix @oktrue!
I'll ping @BendRocks and @ykarpeev (from #3359) and also @bclehmann (the creator of the first ScottPlot Avalonia control) to get their eyes on this change too, but I'm merging this in now and plan to include it in the next release 👍


Missing Class "Stack"

Hey there,
I get an error when using your fantastic lib, and it's fixed when I use WebPConvert\Convert\Converters\Stack; in the main index.php
Cheers!
S1SYPHOS

Thanks for raising it. However, would you mind telling how you managed to trigger that error? I have used this on quite a few projects and never seen that one.

I called the snippet through a file method. The file method resides in a plugin folder and is included by that plugin folder's index.php with 'fileMethods' => require_once 'file.php'

Hrmm... but what i dont understand is that line is inside a files that included into the top of index.php should work without that.

But maybe your file method cant see it becuase it's outside my plugin?

@S1SYPHOS The plugin does have a bunch of filemethods built in. The ->toWebp() will convert an image to webp on the fly in template if you already had images on the site before installing plugin.
https://github.com/HashandSalt/kirby3-webp/blob/master/index.php#L42

This method seems only available in some places, too ..
I gotta investigate further. Totally weird and first time something like this happened!

.. but I seem to be the only one having this problem so far, right?

@S1SYPHOS Actually somone else raised it with me yesterday. My hunch is that its a PHP 7.4 issue. Ive certainly not seen it with 7.2 or 7.3. That library is loaded in the file that is included at the top of the index PHP file, so its really odd that it cant see it.

Maybe 7.4 is stricter in the way that dependencies are included. I dont know.

Am I right to assume that it certainly doesn't hurt to include it, then :B ?

Thanks @S1SYPHOS!, I had the same issue, and fix it by adding use WebPConvert\Convert\Converters\Stack;, would be nice to have it in the next release

@HashandSalt should I open a PR then or .. ;)

Should be fixed now.


Updating Form Examples to ES6 standards

Changes
All declarations with var have been changed to let and class syntax has been added where useful.
Issue Solved
Fixes #317

👍


There is issue when otbr-agent service stare

Describe the bug A clear and concise description of what the bug is.
To Reproduce Information to reproduce the behavior, including:

Git commit id
IEEE 802.15.4 hardware platform
Build steps
Network topology

Expected behavior A clear and concise description of what you expected to happen.
Console/log output If applicable, add console/log output to help explain your problem.
Additional context Add any other context about the problem here.
I am using ubuntu 18.04.
How can i fix it ?
● otbr-agent.service - OpenThread Border Router Agent
Loaded: error (Reason: Exec format error)
Active: inactive (dead)
● otbr-web.service - Border Router Web
Loaded: loaded (/lib/systemd/system/otbr-web.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-08-03 17:06:29 KST; 10min ago
Main PID: 1100 (otbr-web)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/otbr-web.service
└─1100 /usr/sbin/otbr-web
charmk@charmk-MINIPC-PN50:/usr/sbin$ file otbr*
otbr-agent: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=4882e5ecfd36998fd529ddf1c944f2a37df8c3fe, not stripped
otbr-web:   ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=1b7cc0ae041ba41925213a500496562a7cd21bd4, not stripped

charmk@charmk-MINIPC-PN50:~/Matter/ot-br-posix$ dmesg | grep otbr*
[    2.020561] systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
[    2.040468] systemd[1]: otbr-agent.service: Cannot add dependency job, ignoring: Unit otbr-agent.service is not loaded properly: Exec format error.
charmk@charmk-MINIPC-PN50:~/Matter/ot-br-posix$ sudo service otbr-agent status
● otbr-agent.service - OpenThread Border Router Agent
Loaded: error (Reason: Exec format error)
Active: inactive (dead)
8월 03 19:32:09 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
8월 03 19:32:10 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
8월 07 12:59:45 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
8월 07 12:59:45 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
8월 07 12:59:54 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start
8월 07 12:59:54 charmk-MINIPC-PN50 systemd[1]: /lib/systemd/system/otbr-agent.service:9: Executable path is not absolute: service mdns start

It seems systemd cannot find the executable. Check the content of /lib/systemd/system/otbr-agent.service and make sure the paths are correct.

@bukepo   Hi,
File exist in "/lib/systemd/system/"
charmk@charmk-MINIPC-PN50:/lib/systemd/system$ find . -name otbr-agent.service
./otbr-agent.service

Hi @WooshinKang could you also try service mdns start and service mdns status?

charmk@charmk-MINIPC-PN50:/lib/systemd/system$ sudo service mdns status
[sudo] charmk의 암호:
● mdns.service
Loaded: loaded (/etc/init.d/mdns; generated)
Active: active (running) since Thu 2023-08-03 17:06:32 KST; 3 days ago
Docs: man:systemd-sysv-generator(8)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mdns.service
└─2528 /usr/sbin/mdnsd
8월 03 17:06:32 charmk-MINIPC-PN50 systemd[1]: Starting mdns.service...
8월 03 17:06:32 charmk-MINIPC-PN50 mdns[2521]: Starting Apple Darwin Multicast DNS / DNS Service Discovery daemon: mdnsd.
8월 03 17:06:32 charmk-MINIPC-PN50 systemd[1]: Started mdns.service.
8월 03 17:06:32 charmk-MINIPC-PN50 mDNSResponder[2528]: Default: mDNSResponder (Engineering Build) (Aug  3 2023 17:03:54) start
8월 03 17:06:32 charmk-MINIPC-PN50 mDNSResponder[2528]: Default: mDNS_AddDNSServer: Lock not held! mDNS_busy (0) mDNS_reentranc
lines 1-13/13 (END)

@superwhd
charmk@charmk-MINIPC-PN50:~/Matter$ cat /lib/systemd/system/otbr-agent.service
[Unit]
Description=OpenThread Border Router Agent
ConditionPathExists=/usr/sbin/otbr-agent
Requires=dbus.socket
After=dbus.socket
[Service]
EnvironmentFile=-/etc/default/otbr-agent
ExecStartPre=service mdns start
ExecStart=/usr/sbin/otbr-agent $OTBR_AGENT_OPTS
KillMode=mixed
Restart=on-failure
RestartSec=5
RestartPreventExitStatus=SIGKILL
[Install]
WantedBy=multi-user.target
Alias=otbr-agent.service
I think it is already absolute path. is it right ?

Try replacing this line:
ExecStartPre=service mdns start
with
ExecStartPre=/usr/sbin/service mdns start  (depending on where your service binary is, check which service).
Then run systemctl daemon-reload to reload the configuration.
Then service otbr-agent restart to see if it helps.

@superwhd
Thanks for your help.
It is working now.


chore: add version place holder comment in README.md file

Check List
Tests

[x] No need to test

[x] I checked and no code files have been changed.

skip-checks: true

/release-note-none


I tried to log in using my github account in the link https://www.codewars.com/users/sign_in , and it said invalid github account. However, I did signed up with my github. My user is AlbertoF13.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Provide code to reproduce the behavior or a link to Kumite.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Browser
If applicable, please provide your browser information.

OS: [e.g. macOS]
Browser [e.g. chrome, firefox, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

AlbertoF13 doesn't have GitHub account associated with it. Maybe you accidentally unlinked it? To fix this, you need to use password reset to sign in, then link your GitHub again from Account Settings.

I have the same error, I did unlink, I just tried to login on a new computer.


[release-1.13] go dependencies: bump protobuf library

Manual cherrypick required.
#37784 failed to apply on top of branch "release-1.13":
Applying: go dependencies: bump protobuf library
Using index info to reconstruct a base tree...
M	go.mod
M	go.sum
Falling back to patching base and 3-way merge...
Auto-merging go.sum
Auto-merging go.mod
CONFLICT (content): Merge conflict in go.mod
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 go dependencies: bump protobuf library
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

Merged in https://github.com/istio/istio/pull/37799


Bump buildkite agent to v3.22.1

🥫

and backported to stable-4-5

This updates the master branch, which currently isn't being released.
Do we need to update the 4-stable branch instead? Or maybe merge this and
then backport?
On Fri, 21 Aug 2020, 14:08 Samuel Cochran<EMAIL_ADDRESS>wrote:

🥫
You can view, comment on, or merge this pull request online at:
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701
Commit Summary

Bump buildkite agent to v3.22.1

File Changes

M README.md
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701/files#diff-04c6e90faac2675aa89e2176d2eec7d8
(2)
M packer/linux/scripts/install-buildkite-agent.sh
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701/files#diff-1524c3343c26dceec053d7ac2a9354fb
(2)
M packer/windows/scripts/install-buildkite-agent.ps1
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701/files#diff-43090593b14d70cab3e35dee1c8e64a7
(2)

Patch Links:

https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701.patch
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAB7RF6KUYNVPK2FKKLEXDSBXXKBANCNFSM4QG3PMPA
.

@yob I think I just beat you to it ;-)

Our comments passed on their way through the tubes 🙃
On Fri, 21 Aug 2020, 15:01 Samuel Cochran<EMAIL_ADDRESS>wrote:

@yob https://github.com/yob I think I just beat you to it ;-)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/buildkite/elastic-ci-stack-for-aws/pull/701#issuecomment-678039384,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAB7RAYKQBES5XOSDPQ4PLSBX5UNANCNFSM4QG3PMPA
.


Carriage Return (\r) is messing up Mac (not tail's fault)

My scripts fail to print the content of the files that tail is reading from. As result, many lines  simply do not appear in console.
I am running macOS Monterey 12.5 (21G72).
Doing some research I found this report that describes precisely my situation.
I could also do some quite extensive debugging and confirmed that there is nothing wrong with tail. It's node that "eats" lines out when \r is present.
To workaround this issue I have set separator: /\r|\n/, and the problem is now gone.
The question left here is: should we change the default separator value to better accommodate Mac users?

Hello @zvictor
Let me check I understood the scenario well.
Your file uses \r as an end of line character. When that happens, the library "eats" the following lines.
Is this correct? Or have I misunderstood?

Yes, that's correct. Except that it's not the library, but actually node itself!
That's what happens when I ask node to print the bad string from stackoverflow: https://app.warp.dev/block/Fg16AyIidLvFoeYgAljxp9


utilize slave work_dir for mount list file location, instead of a dedicated isolator parameter

In the v0.23.0 version of Mesos, the slave work directory was not readily available to an isolator implemented as a module. It is expected that this (slave work directory) will be available in an upcoming version of Mesos. When it is available, the existing isolator parameter will be deprecated, and the slave work directory will automatically be used instead. This will simplify configuration of the isolator

This is a link to the Jira ticket for adding access to the agents command line flags to the isolator module interface:
https://issues.apache.org/jira/browse/MESOS-4003
This is currently targeted for Mesos 0.27.0 so resolution of this issue is retarget for isolator 0.4.1

Changing plan to this:
since the work_dir is defined at the command line every time the agent is run anyway, we will just give it to DockerVolumeDriverIsolator::create() via the JSON string passed to the —modules flag?
more specifically, the ‘Parameters’ passed to —modules flag

existing code using work_dir should be refactored to use stout::path

Closed by last PR


Updated package-lock.json with 'npm install' with Node v9.4.0.

I noticed we've grown a package.json under devtools again, I wanted to understand the thought since just a bit ago @smalls had reworked our sub-package.json files to move them all to a single top level.
When/why do we prefer to break out separate files, and do we then just need to make sure the subdir npm install is added to the prepare step in the top level package.json file?

Thank you Walter for cleaning this up.
The thinking was that devtools/ is entirely a separate app/codebase. Having its dependencies and npm scripts separated from arcs seems to add clarity regarding which codebase requires what. The fact that npm install actually does npm install in the subdir reduces the friction nicely. This is quite a vague argument though.
What is the argument for handling all the deps together? One thing is that we don't download 2 copies of the same deps twice - but there's a really small overlap, so that's not a strong argument either.
WDYT?

I can't remember why we merged them, it may have been nothing more than that it made it easier to manage having the one file, and looking at other projects maybe we concluded it was the common thing done. But it is a fairly separate thing and I support modularity, so let's try it.
I know we did the merging back into one around the time we were fixing Travis and setting up AppVeyor so maybe something there made it easier too. In any case it's also not a big deal to change later, I really just wanted to briefly discuss the change to carry into whatever lays ahead.
Thanks again for the Polymer 3 work, build times are awesome now.


Your fee is too high.  Max is 50 sat/byte.

What if I want to set higher fee for faster confirmation?
Example: https://i.imgur.com/7cgMEjK.png

Several transactions with recommended fee about 0.00000226 took more than 10 minutes. Is that normal for Bitcoin Cash?
I thought it should be faster than Bitcoin.

maybe EDA(Emergency Difficulty Adjustment) caused? 1 minutes or 30 minutes a block
The fee is OK, and you have to wait it.

The general solution to this is that we implement instead of a end of the road notification dialog "Your fee is too high" we instead show a confirmation dialog and let them proceed with as high a fee as they want, and we make the 50 also configurable.  I'd also probably throw in a settings option to enable the change from notify to confirm, etc etc.  Needs some design and thought.

This also applies to the CLI, I don't know how well prompts work there

What if I want to set higher fee for faster confirmation?

1 sat/byte fee will work in 99.999% of the transactions, 50 sat/byte is not a use-case today.

"What if I want to set higher fee for faster confirmation?"
You don't need higher fee for faster confirmation.


chore: re-add @[simp] attribute lost in the port

This PR re-adds the @[simp] attributes that had a porting note that they could be proved by @[simp], but where that does not appear to be the case currently.
Of course, the simp set may have changed sufficiently to require un@[simp]ing some of these anyway, but we should add a more up to date comment in that case.

bors merge


[MRG+1] kit2fiff support for *.elp and *.hsp files

Replacing https://github.com/mne-tools/mne-python/pull/1001, adding support for files exported by the head shape digitizer used at UMD (and in the past at NYU NY).
For our KIT purposes we know that ELP/HSP are in [m] while TXT files are in [mm]. So I figured we could make things simpler by modifying _read_dig_points (https://github.com/mne-tools/mne-python/compare/master...christianbrodbeck:elp-hsp?expand=1#diff-74542bee8ed1be44ba6e68f0458010d8L358) such that it always return coordinates in [m](i.e. multiply coordinates from *.txt files with 0.001).
The mne.channels.read_dig_montage function also uses _read_dig_points, and in mne.channels.read_dig_montage (unlike the kit2fiff importers) the user specifies the unit the files are in, and the default is "mm". This leads to an ambiguous case where the users leaves unit="mm" but specifies *.hsp and *.elp files which we know (?) are in [m].
Ignore the value of unit for *.hsp and *.elp, assuming they are always in m?
Change the function signature default to unit=None and use mm for text and m for hsp/elp as long as unit is None?

We could also add a check that raises an error for unrealistic head diameters (>1m or <1cm) that way we should always catch erraneous units.

+1 for unit='auto' mode

[Current coverage][cc-pull] is 86.24%

Merging [#3320][cc-pull] into [master][cc-base-branch] will increase coverage by 0.01%

@@             master      #3320   diff @@
==========================================
  Files           336        336
  Lines         57284      57382    +98
  Methods           0          0
  Messages          0          0
  Branches       8716       8726    +10
==========================================
+ Hits          49397      49490    +93
- Misses         5219       5223     +4
- Partials       2668       2669     +1

[][cc-pull]

Powered by Codecov. Last updated by [81e8f63...84dcc31][cc-compare]
[cc-base-branch]: https://codecov.io/gh/mne-tools/mne-python/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/mne-tools/mne-python/compare/81e8f6309be5f864a691f85ba3f767c13cd7f86d...84dcc3133eda09696f75f94f95b28ff96d9652e7
[cc-pull]: https://codecov.io/gh/mne-tools/mne-python/pull/3320?src=pr

is there any API change in this PR?

KIT users any objections?
cc @kingjr @teonbrooks

Rebased to add whats_new

no objection to merge but I'd really like to have one of our KIT users to also test ....

no objection, @teonbrooks?

(ping me in two weeks if it's not merged, I'll be back in the lab)

sorry for the delay, i'm a bit backlogged on things. if it's not a rush, I will get to it soonish. if not, someone else can review in my stead.

No rush, I know you're traveling

Definitely stuff for the kit people. Make sure also here that you few people who use this code are happy.

other than those concerns, LGTM

ping @teonbrooks @kingjr are there any concerns left here?

Could you make a snippet so that I can adapt and test it onto my data?
On 11 July 2016 at 16:23, Christian Brodbeck<EMAIL_ADDRESS>wrote:

ping @teonbrooks https://github.com/teonbrooks @kingjr
https://github.com/kingjr are there any concerns left here?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mne-tools/mne-python/pull/3320#issuecomment-231853128,
or mute the thread
https://github.com/notifications/unsubscribe/AEp7DMRH0XwIuZpQM6sZk3KkhZ6LbQufks5qUqZQgaJpZM4I478m
.

@kingjr the GUI will be useful to verify that coordinates are read correctly, and you can use the testing data
import mne
import os

root = os.path.dirname(mne.io.kit.__file__)
data_dir = root + '/tests/data/'
hsp = data_dir + 'test.hsp'
elp = data_dir + 'test.elp'
mrk = data_dir + 'test_mrk.sqd'
sqd = data_dir + 'test.sqd'

raw = mne.io.read_raw_kit(sqd, mrk, elp, hsp)
mne.channels.read_dig_montage(hsp, mrk, elp, ['nasion', 'lpa', 'rpa'] + [''] * 5)

that's it for me. +1

@christianbrodbeck you need to rebaase

if @kingjr and @teonbrooks are happy I am happy to merge.

Rebased and fixed the exception

@kingjr do you have time to take one last look?

I didn't manage to run the snippet because I don't have the kit sample data (how do I download that?)
But I think if @teonbrooks is happy is probably good.

@kingjr this is the testing data in the snippet, it should be part of mne after this PR

LGTM

Addressed the remaining issues. I don't know what's wrong with CI, it's indicating it can't find some SUBJECTS_DIR, which does not seem related to the changes in the last commit.

I agree the CI is unrelated, shouldn't happen on master build hopefully. Last tweaks can be made later. Thanks @christianbrodbeck

cross reference #5836 #5975


Addditional content for Machine Learning concepts module?

The original idea was to have a part with videos with intuitions and without much code. For now, there are only the slides about ML concepts.
Not sure what we want to add there.

@ogrisel said he had something in mind about this one.

Not too sure what this was about pushing it to MOOC 1.0 milestone

Closing I still have no idea what this was about ...


DNS Challenge for DuckDns not working with Wildcard Zertifikat

I wanted to create a wildcard certificate. For this I wanted to use DuckDNS. I have entered all my data. I also entered the token from Duckdns. Unfortunately, I always get an error message. I have replaced xxx in certain places. I have the correct data in there. If I create a wildcard certificate myself, it works. It would be nice if it also worked here and when it expires it is automatically renewed. Can someone help me ?
error message
Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-7" --agree-tos --email<EMAIL_ADDRESS>--domains "*.xxx .duckdns.org" --authenticator dns-duckdns --dns-duckdns-credentials "/etc/letsencrypt/credentials/credentials-7"
An unexpected error occurred:
ModuleNotFoundError: No module named 'dns'
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/tmpq3vsn54y/log or re-run Certbot with -v for more details.
at ChildProcess.exithandler (node:child_process:399:12)
at ChildProcess.emit (node:events:520:28)
at maybeClose (node:internal/child_process:1092:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)

Exactly the same issue when requesting an let's encrypt wildcard cert for ".mydomain.duckdns.org".
Without the prefix "." (-> no wildcard certificate) it works.
Any chance to get this fixed?
PS.: Running latest HA addon which is currently @ Nginx Proxy Manager v2.10.4.

Hello, I have the same issue and would like to know how I can create a certificate for *.mysubdomain.duckdns.org

Same, tried inputing mydomain.duckdns.org and *.mydomain.duckdns.org, test server reachability says that the first one is accessible, but not the second one.
Just inputing mydomain.duckdns.org or mywebapp.hleretour.duckdns.org works fine.
I ended up creating one certificate for each but it's a real pain to do.
Aren't wildcards not supported anymore ?

Hello, I have the same issue and would like to know how I can create a certificate for *.mysubdomain.duckdns.org

I was able to do it on 20th of September - this is not an issue with Nginx Proxy Manager but with Duckdns. Duckdns is failing often lately. You need to try every once in a while and you need to be lucky. The other day it just worked for me:


Add Item Type dialog of theme editor focuses OK button by default

Godot version
4.0.dev (de83ee57e)
System information
macOS 11.4
Issue description
After the "Add Item Type" dialog of the new Theme editor is popped up:

Expected: the type name line edit gains focus so the user can start filtering classes immediately
Actual: it's the OK button that's focused, and I have to click the name line edit manually in order to start filtering

This does not happen in 3.x.
Steps to reproduce

Create a Theme resource
Click the plus icon button to bring up the "Add Item Type" dialog

... and the OK button is focused

Minimal reproduction project
No response

Is that something MacOS specific? Because that's exactly the behavior I've coded and it worked on Windows:
void ThemeTypeDialog::_dialog_about_to_show() {
	add_type_filter->set_text("");
	add_type_filter->grab_focus();

	_update_add_type_options();
}

I'm not sure and it works OK on 3.x.
The "Create New Node" dialog in the Scene panel correctly focuses the search box after popup though.

Okay, it's not working for me either in master, so not MacOS specific, will investigate.


Rhino (Geometry) -> Revit Direct Conversion Routines

Scaffold some basic, simple, non-exhaustive direct conversion routines for geometry (coming from Rhino) into Revit. Some examples, just to kick off a conversation:

xy planar surfaces (with/without inner trims) -> floors
vertically planar surfaces (with/without inner trims) -> walls
curves/lines -> model curves
etc.

I think this makes total sense, although I'd be inclined to include this in some sort of "smart mode" toggle option in the receiver side. This would allow the user to deactivate it if any of our conversion decisions don't suit them
A couple of remarks:

For curves -> This behaviour would be pretty much what I'd expect to happen in most situations.
For surfaces -> I see some possible problems:

This may seem inconsistent and/or tricky: At least in grasshopper, all surfaces are in fact Breps with one face, so we'd have to decide when a Trimmed/untrimmed Surface should be a wall/floor and when it should just be a DirectShape.

If we do this on the Rhino side, we are effectively modifying the data the user is sending in the stream (what if later you want to grab it in dynamo or gh?).
If we do this on the Revit side, we would need to check for surface planarity, orientation, etc in Revit using their lovely APIs...

Surfaces would have 0 volume, not sure how this would affect other Revit stuff down the line.
Flat roof vs flat floor?

I think this makes total sense, although I'd be inclined to include this in some sort of "smart mode" toggle option in the receiver side. This would allow the user to deactivate it if any of our conversion decisions don't suit them
A couple of remarks:

For curves -> This behaviour would be pretty much what I'd expect to happen in most situations.
For surfaces -> I see some possible problems:

This may seem inconsistent and/or tricky: At least in grasshopper, all surfaces are in fact Breps with one face, so we'd have to decide when a Trimmed/untrimmed Surface should be a wall/floor and when it should just be a DirectShape.

If we do this on the Rhino side, we are effectively modifying the data the user is sending in the stream (what if later you want to grab it in dynamo or gh?).
If we do this on the Revit side, we would need to check for surface planarity, orientation, etc in Revit using their lovely APIs...

Surfaces would have 0 volume, not sure how this would affect other Revit stuff down the line.
Flat roof vs flat floor?

For surfaces -> I see some possible problems:

This may seem inconsistent and/or tricky: At least in grasshopper, all surfaces are in fact Breps with one face, so we'd have to decide when a Trimmed/untrimmed Surface should be a wall/floor and when it should just be a DirectShape.

I believe in Rhino, Brep (collection of BrepFace, which are trimmed srfs) and Surface both inherit from GeometryBase, but there is some trickiness with Extrusion (inherits from surface) that often need to be treated as breps with a conversion.
Grasshopper breaks with this naming convention and Surface = single-face brep to prevent loss of trim info when brep faces get converted to srfs.
With walls/floor/slabs, does it make sense to associate the toggle with extracting the boundary curve for vertical/planar surfaces on the rhino side as an indicator for which surfaces get converted into families vs DirectShape? On this note, we'd have to handle hole trim edge curves -> voids as well

For surfaces -> I see some possible problems:

This may seem inconsistent and/or tricky: At least in grasshopper, all surfaces are in fact Breps with one face, so we'd have to decide when a Trimmed/untrimmed Surface should be a wall/floor and when it should just be a DirectShape.

I believe in Rhino, Brep (collection of BrepFace, which are trimmed srfs) and Surface both inherit from GeometryBase, but there is some trickiness with Extrusion (inherits from surface) that often need to be treated as breps with a conversion.
Grasshopper breaks with this naming convention and Surface = single-face brep to prevent loss of trim info when brep faces get converted to srfs.
With walls/floor/slabs, does it make sense to associate the toggle with extracting the boundary curve for vertical/planar surfaces on the rhino side as an indicator for which surfaces get converted into families vs DirectShape? On this note, we'd have to handle hole trim edge curves -> voids as well


fix: postgrest-js esm typings

Fixes https://github.com/supabase/supabase-js/issues/1229, fixes https://github.com/supabase/supabase-js/issues/1230

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
90

Relevant Lines:
117

💛  - Coveralls


Help needed to use BotFramework-WebChat as internal module rather than as a NPM dependency

We have been using BotFramework-WebChat v0.11.4 code by keeping the source in our codebase and using BotFramework-WebChat v0.11.4 as an internal module.
BotFramework-WebChat v4.2.0 works fine if our React app uses BotFramework-WebChat v4.2.0 as NPM dependency but since the amount and level of customizations that we need is high, we cannot go with this approach.
Hence, we want to keep the BotFramework-WebChat v4.2.0 source (along with our customizations) as an internal module in our code and then use it as the internal dependency.

Hey @bhushanvadgave, could you clarify what problems you are running into? What are you trying that doesn't work? You are welcome to fork Web Chat to make the customization you need, but our team is focused on developing new features and customers who are using Web Chat as a dependency.

Following are the major features for which we have customized BotFramework-WebChat v0.11.4.

Bubble-shaped Carousel cards indicator below the carousel. This is used for navigating cards (user can directly jump to any card of carousel) in carousel and indicates the position of current card.
Different logic of opening the button's tap-url in New Tab/Same Tab/New Window.
Persistent Menu (besides message input box) like FB Messenger
Style changes for Suggested action buttons, choice buttons, card buttons etc.

There are many more to add in above list.
Also  BotFramework-WebChat v4.2.0 have dynamic (not conctant) CSS class names for components and same class name for different type of components. This makes even style customizations difficult to carry out.
We can't wait for above features to be implemented in BotFramework-WebChat v4.2.0. If BotFramework-WebChat v4.2.0 webchat source cannot be manipulated and used as internal module, then we have to upgrade to only BotFramework-WebChat v0.15.0.

Hello @bhushanvadgave. Take a look at https://github.com/Microsoft/BotFramework-WebChat/tree/master/samples/05.b.idiosyncratic-manual-styling/ & https://github.com/Microsoft/BotFramework-WebChat/tree/master/samples/05.a.branding-webchat-styling to see if this interface will support your style needs. here is a list of defaults that can be overridden.
The styleOptions prop in the React component is the interface we expose for customization. Unfortunately we no longer support selecting and styling ad-hoc css classes inside WebChat.

@cwhitten @corinagum
The amount and level of customizations we need and have done (with previous versions of BotFramework-WebChat) are high. These customizations include changes in look-n-feel (changes in CSS and structure of HTML elements) and actions (changes in Typescript logic).
We want to implement the same customizations in BotFramework-WebChat v4.2.0. There is no way we can do this without manipulating and building the source code of BotFramework-WebChat v4.2.0. So, can you please help me in knowing whether this is possible or not? And if it is possible, how can I do it?

@bhushanvadgave can you provide a screenshot of the type of customizations you are looking to achieve?

@cwhitten Can you share your email address with me? I can't share the screenshots in public page.

<EMAIL_ADDRESS>

@cwhitten I have shared with you the set of our webchat screenshots. Can you now educate me on how I can build BotFramework-WebChat v4.2.0 source code and integrate with my React webchat application?

Email discussion included how to build Web Chat and questions about the generated lib files. Note to other users: the lib folder may be hidden on your IDE after building Web Chat due to user settings. Please use Explorer/Finder or change your IDE's settings. In VS Code, this would mean removing **/bundle/lib/ from the hidden files/folder list.
Closing due to inactivity.


How to integrate Lychee with a forum?

Detailed description of the problem: How do I install Lychee as a public Gallery on my forum? Forum software is MyBB.
Browser and system: Windows 10, some possibly Windows 8, Windows 8.1, whatever recent Mac OS

I don't think you would be able to directly link forum comments into Lychee. Your best bet is to just install lychee in a separate subdirectory, and directly link from there. Also, uploads are only enabled from the single user account, so you would have to share the admin password for uploads (eek!)
Your question could be more clear though. What were you expecting when you want to "install Lychee as a public Gallery"? Add as a plugin? Use as a direct linking method?


Update mergebot-config to include DC/OS 1.13.0 and DC/OS 1.13.1

High-level description

https://jira.mesosphere.com/browse/DCOS-52002 - Update mergebot-config to include DC/OS 1.13.0 and DC/OS 1.13.1

@mesosphere-mergebot label ready for review


System: Firmware: Settings: Add new option "always reboot after update"

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[X] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Is your feature request related to a problem? Please describe.
Some OPNsense updates do not require a reboot. Updated services are not being restarted automatically during the update procedure though. This results in continuing running the old version of the updated services, instead of the newly installed version.
Please refer to the discussion at https://github.com/opnsense/plugins/issues/3623 for further details.
Describe the solution you like

Add a warning to the WUI and Docs, that services are not being restarted automatically during the update procedure, unless it ends with a system reboot.
Add an option "always reboot after update" to System: Firmware: Settings to force a reboot after every update.

Describe alternatives you considered

Add the warning as stated above.
Add a new command "Automatic firmware update (always reboot)" to System: Settings: Cron

Additional context
None.

Add a warning to the WUI and Docs, that services are not being restarted automatically during the update procedure, unless it ends with a system reboot.

I don't mind adding this to the docs, but it's probably not worth the warning. The expectation of not documenting it is met by not restarting it so we're not stating anything that's not true. The biggest issue as we saw is actually getting it right, but that's not of interest to the documentation. So a sentence should be fine there.

Add an option "always reboot after update" to System: Firmware: Settings to force a reboot after every update.

Now that we have advanced settings it could be easily anchored there indeed. But we will discuss this briefly internally.
Cheers,
Franco

@AdSchellevis suggested hashing "pkg info" contents to compare before and after for deciding that something actually changed or not. Could work pretty well all things considered. To be continued. :)


grcp dependency in the latest version is generating this error "missing symbol called" message

Describe the bug:
We get a error when we use the google ads gem: "missing symbol called".
Steps to Reproduce:
grpc - 1.42.0
language - ruby
MacBook Pro (15-inch, 2019)
Processor 2.6 GHz 6-Core Intel Core i7
Ruby - 3.0.0, 3.0.3

[shoppingcontent.googleapis.com] GET /content/v2.1/522447824/accounts/522447824 (0.370 s)
dyld[5807]: missing symbol called

the grcp dependency in the latest version is generating this error
https://github.com/grpc/grpc/issues/28271#
Expected behavior:

[shoppingcontent.googleapis.com] PUT /content/v2.1/513198309/accounts/513198309 (0.290 s)
CID:<PHONE_NUMBER>, Host: googleads.googleapis.com:443, Method: /google.ads.googleads.v8.services.MerchantCenterLinkService/ListMerchantCenterLinks, IsFault: no, Request ID: 4TNRz_cjq1riVq8WNZVbwQ
Outgoing request: Headers: {"developer-token":"REDACTED","login-customer-id":"9945936419","x-goog-api-client":"gl-ruby/3.0.3 gax/0.4.3 gapic/13.0.0 grpc/1.41.0","x-goog-request-params":"customer_id=9825386996"} Payload: {"customerId":"9825386996"}
Incoming response: Payload: {"merchantCenterLinks":[{"resourceName":"customers/9825386996/merchantCenterLinks/513198309","id":"513198309","merchantCenterAccountName":"MACHA-TEST-ACCOUNT","status":"PENDING"}]}
CID:<PHONE_NUMBER>, Host: googleads.googleapis.com:443, Method: /google.ads.googleads.v8.services.MerchantCenterLinkService/MutateMerchantCenterLink, IsFault: no, Request ID: Q1oZaXTA9PRPPX_AvIGMWg
Outgoing request: Headers: {"developer-token":"REDACTED","login-customer-id":"9945936419","x-goog-api-client":"gl-ruby/3.0.3 gax/0.4.3 gapic/13.0.0 grpc/1.41.0","x-goog-request-params":"customer_id=9825386996"} Payload: {"customerId":"9825386996","operation":{"updateMask":"status","update":{"resourceName":"customers/9825386996/merchantCenterLinks/513198309","status":"ENABLED"}}}

Incoming response: Payload: {"result":{"resourceName":"customers/9825386996/merchantCenterLinks/513198309"}}
Client library version and API version:
Client library version: GRPC 1.42.0
Google Ads API version: 14, 15

google-ads-googleads (14.0.0), 15
grpc (1.42.0)
google-protobuf (~> 3.18)
Request/Response Logs:

This error causes the application to stop by rails and our application locally.
Anything else we should know about your project / environment:
at this moment we have forced to use the previous grpc version (grpc 1.41.0), and the google-ads-googleads version (13), to continue working on our project.

I'm getting the same error and I'm stuck on this.

Looks like an issue with grpc. You should either downgrade to 1.41, wait for a new version that fixes this, or possibly try this workaround from the grpc repo: https://github.com/grpc/grpc/issues/28271#issuecomment-1007677177
Our gem doesn't pin a specific version of grpc, and our dependencies only require grpc ~> 1.36, so you should be able to fall back to 1.41 with no issues.


Textual windows not focused on 10.13

General troubleshooting steps

[*] None of the templates was appropriate for my issue, or I’m not sure.
[*] I understand that if I ignore these instructions, my issue may be closed without review.

Description of issue
I have just installed the Textual Cask, version 7.0.8.
It installs and runs. However, the application window and any child windows are not focused. I can still use it, resize the window, however the window and its navigation buttons are greyed out, as if I have focused elsewhere. I haven't used Textual before, so I don't know whether this is an upstream problem, or a problem with this build.
Output of brew cask doctor
brew cask doctor
==> Homebrew-Cask Version
Homebrew-Cask 1.5.10-14-gc8533db
caskroom/homebrew-cask (git revision 578b6; last commit 2018-03-14)
==> macOS
10.13.3
==> SIP
Enabled
==> Java
1.8.0_161
==> Homebrew-Cask Install Location
<NONE>
==> Homebrew-Cask Staging Location
/usr/local/Caskroom
==> Homebrew-Cask Cached Downloads
~/Library/Caches/Homebrew/Cask (5 files, 266.8MB)
==> Homebrew-Cask Taps:
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask (3931 casks)
==> Contents of $LOAD_PATH
/usr/local/Homebrew/Library/Homebrew/cask/lib
/usr/local/Homebrew/Library/Homebrew
/Library/Ruby/Gems/2.3.0/gems/did_you_mean-1.0.0/lib
/Library/Ruby/Site/2.3.0
/Library/Ruby/Site/2.3.0/x86_64-darwin17
/Library/Ruby/Site/2.3.0/universal-darwin17
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0/x86_64-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby/2.3.0/universal-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/x86_64-darwin17
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/universal-darwin17
==> Environment Variables
LC_ALL="en_US.UTF-8"
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Homebrew/Library/Homebrew/shims/scm"
SHELL="/bin/bash"

Hmm. Seems okay now. Closing.


Do not showing the Spinner Selected item.

I tried but I can't show the spinner selected item in the list.

It's because the setup of the spinner needs to be done inside a successful or completed task for example :-
collectionRef.get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
//Log.d(TAG, document.getId() + " => " + document.getData().get("myField")); // replace 'myField' with your field name
categories.add((String) document.getData().get("name"));
}
//Spinner setup inside the successful task
ArrayAdapter adapter = new
ArrayAdapter(this, android.R.layout.simple_spinner_item, categories);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//mySpinner.setSelection(0);
mySpinner.setAdapter(adapter);
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
});


Refactor person

In this PR,

Removed Email, Person, UniquePersonList
Refactored person package to common package

Pull Request Test Coverage Report for Build 177

50 of 50 (100.0%)  changed or added relevant lines in 12 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+4.7%) to 88.39%

Totals

Change from base Build 172:
4.7%

Covered Lines:
2596

Relevant Lines:
2937

💛  - Coveralls


Demo website is down

Pre-requisites

[X] I have double-checked my configuration
[X] I can confirm the issues exists when I tested with :latest
[ ] I'd like to contribute the fix myself (see contributing guide)

What happened/what you expected to happen?
link to the demo website on the readme is broken https://workflows.apps.argoproj.io/workflows/argo
https://github.com/argoproj/argo-workflows/#try-argo-workflows

Version
latest
Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.
open link https://workflows.apps.argoproj.io/workflows/argo

Logs from the workflow controller
kubectl logs -n argo deploy/workflow-controller | grep ${workflow}

Logs from in your workflow's wait container
kubectl logs -n argo -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Succeeded

Yea, it's been down for some time (at least a few months by my count). It got mentioned on Slack a month ago. CD's demo site had also been down for a while.
It got brought up in maintainers meetings in April, May, and June. It was previously hosted and maintained by Intuit and was in-progress to move to a CNCF-hosted account.
It looks like we got a CNCF GCP account in October-ish, which is why CD's demo site is back up I think? @terrytangyuan is working on it per the meeting notes, so assigning him here

For reference, this may be due to https://github.com/argoproj/argoproj-deployments/pull/26 or https://github.com/argoproj/argoproj-deployments/issues/13. The former seems to roughly add up timeline-wise, but it may have been down longer per the latter.
That repo is synced with CD and deploys Workflows, and the Server is down because it can't reach Dex, both of which have the old cert-manager CRD.
Asked in the approvers channel if this could be merged, which may fix the issue.

The deployment is back up partially and no-longer 503ing, but not working properly.
https://cloud-native.slack.com/archives/C022F03E6BD/p1708982805190599

FYI, there is a migration of the demo argo in progress. Everything in https://cd.apps.argoproj.io/applications, including workflow, points to https://github.com/agaudreault/argoproj-deployments/tree/add-gcp-infra.
It seems like the channel you link is a private one. You can DM me on Slack or add me to a public thread if there is something not working requiring immediate actions.
It is now running in the new GCP account and the branch should be merged soon to the main branch with https://github.com/argoproj/argoproj-deployments/pull/28

It seems like the channel you link is a private one.

It's a link to a thread in the private #argo-maintainers channel. I've edited Alan's comment to make that more explicit as well. There doesn't seem to be new info there.
https://workflows.apps.argoproj.io/workflows/argo is no longer 503'ing, though I have no access to do anything on it (and I assume other users even less).

You can DM me on Slack or add me to a public thread if there is something not working requiring immediate actions.

I did list https://github.com/argoproj/argoproj-deployments/pull/26 and https://github.com/argoproj/argoproj-deployments/issues/13 above. There are still other open issues and PRs in that repo.
Given that the Workflows demo is not accessible, I don't think this issue should be closed yet


Simplify integration tests for admin CRUD operations

We currently have one test per operation but the create/list/delete tests all look the same:

Pick a random object (table, instance, cluster) to create.
List existing objects, make sure the object is not in the list
Create the object
List existing objecst, make sure it is there.
Delete the object
List existing objects, make sure the object is no longer there.

Sometimes we "get" the object after creating it, or maybe we "update" the object after creating it.
Instead of having one integration test per API we should have a single CreateListDelete test.

Sorry, I messed with the milestone when I should not have.

Shouldn't we merge update with create/list/delete tests?

Shouldn't we merge update with create/list/delete tests?

Yes. I think a simpler CRUD test would look like this:

Pick a random name for the entity
Create any prerequisites (e.g. the instance to contain the clusters)
List
Create
List to verify it was created
Get
Update
Get to verify it was updated
Delete
List to verify it is no longer there
Delete prerequisites.

That is one test that checks all operations.

Is it for instance admin or Table admin ?

Both I think.


[WIP][OSF-8210]Update OSFUser validation to catch invalid SOCIAL_FIELDS

This PR requires running a script
scripts/remove_invalid_social_entries.py  removes any invalid SOCIAL_FIELDS data from current users.
Without running this, current users with invalid data will not be able to update OSFUser.social and may not be able to make other OSFUser changes as well.
Purpose
Update OSFUser social_validator to catch OSFUser.social keys not in website.settings.SOCIAL_FIELDS
Changes
Move SOCIAL_FIELDS configuration dictionary to website/settings/defaults.py
Update refrences to SOCIAL_FIELDS
Update osf/models/validators.py to catch fields not in SOCIAL_FIELDS
Update api/users/serializers.py to return useful error message
Add scripts/remove_invalid_social_entries.py for existing bad entries
Side effects
If third party OSF v2 API users are currently taking advantage of un-validated SOCIAL_FIELDS they will no longer be able to do so.
Ticket
OSF-8210

@sloria Pushed updates.

@sloria  PR rebased and pointing to release/next-djangole. SOCIAL_FIELDS moved back to OSFUser. Ready for further review.

@sloria  CR addressed and migration re-tested.

I don't think my above concerns are necessarily blockers, so I've approved this. If you have some time, look into improving the error handling. Otherwise, please create a follow-up ticket.


Image overlap when logging

Describe the bug
When I log multiple images with the same key, the images show up in the UI as overlapped.
To Reproduce
Steps to reproduce the behavior:

Log image with same key over multiple steps
See images from those steps shown in UI as one image, each image overlapped on top of each other.

Expected behavior
Each step should have one image that I can see with the step slider.
Screenshots

Additional context
Using:
pytorch_lightning==1.1.0
wandb==0.10.12
torch==1.3.1

Hey @juneskiafc can you share a snippet of code showing how you're logging the images?  Also a link to a run with this behavior would be helpful for debugging.

heatmap = sns.heatmap(data=confmat_df, annot=True, fmt='.3f')
trainer.logger.experiment.log({f"confmat": wandb.Image(heatmap.get_figure())}, commit=False)
Unfortunately cannot share the run, unless there's a way to share one specific run without making the whole project public?

Hey @juneskiafc can you try logging the figure directly without wrapping it in a image?  Also, if you can provide a small snippet with dummy data populated in confmat_df we can likely reproduce.

If I try to log the image without wrapping it with wandb.Image, I get some weird errors related to mpl_to_plotly being deprecated. I do get a plotly plot in the UI, though, but it's missing all the nice colors of the seaborn heatmap.
I'll get back to you with a minimal reproducible example.

from pytorch_lightning.loggers.wandb import WandbLogger
import pytorch_lightning as pl
from torch.optim import Adam
from torch.utils.data import DataLoader, Dataset
import torch
import torch.nn as nn

import pandas as pd
import seaborn as sns
import wandb

class WandbLogImage(pl.callbacks.Callback):
    def __init__(self):
        super().__init__()

    def on_train_epoch_end(self, trainer, pl_module, outputs):
        self.log_confusion_matrix(pl_module.confmat)

    def log_confusion_matrix(self, confmat):
        confmat = confmat.detach().cpu().numpy().reshape(4, 4)
        confmat_df = pd.DataFrame(confmat)
        confmat_heatmap_seaborn = self.get_confmat_heatmap_seaborn(confmat_df)

        trainer.logger.experiment.log({f"confmat": wandb.Image(confmat_heatmap_seaborn)}, commit=False)

    def get_confmat_df(self, confmat):
        return pd.DataFrame(confmat)

    def get_confmat_heatmap_seaborn(self, confmat_df):
        confmat_heatmap = sns.heatmap(data=confmat_df,
                                      cmap='RdYlGn',
                                      annot=True,
                                      fmt='.3f',
                                      cbar=False)

        confmat_heatmap.xaxis.set_label_position('top')
        confmat_heatmap.tick_params(axis='x', which='both', bottom=False)

        return confmat_heatmap.get_figure()

class MinimalPLModel(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.dummy_linear = nn.Linear(4, 1)
        self.dummy_loss = nn.L1Loss()

        self.confmat = None

    def forward(self, x):
        return self.dummy_linear(x)

    def training_step(self, batch, batch_idx):
        x, _ = batch
        self.confmat = x
        output = self(x)
        loss = self.dummy_loss(output, output)

        return loss

    def configure_optimizers(self):
        return Adam(self.parameters(), lr=1e-3)

class DummyDataset(Dataset):
    def __getitem__(self, index):
        return torch.rand(size=(4, 4)), torch.Tensor([1])

    def __len__(self):
        return 1

class DummyDataModule(pl.LightningDataModule):
    def __init__(self):
        super().__init__()

    def setup(self, stage=None):
        self.train_dataset = DummyDataset()

    def train_dataloader(self):
        return DataLoader(self.train_dataset, batch_size=1)

callbacks = [WandbLogImage()]
logger = WandbLogger('wandb_bug', project='hassanpour')

trainer = pl.Trainer(logger=logger,
                     callbacks=callbacks,
                     gpus=[3],
                     max_epochs=2,
                     num_sanity_val_steps=0,
                     deterministic=True,
                     fast_dev_run=False)

model = MinimalPLModel()
trainer.fit(model, datamodule=DummyDataModule())

Never mind, I got it! I just have to clear the current active matplotlib figure with plt.clf() before creating the heatmap.

Awesome, glad to hear you figured it out!


Fix - Rename file in firestore & storage

[x] Edit in firestore & storage
[x] Delete in firestore & storage (or delete only in firestore, and auto-delete file in cron)
[ ] Fix 403 after rename
[ ] Close rules storage

#84


OpenspeechCTCModel.forward: self.fc is undefined

Good day!
https://github.com/openspeech-team/openspeech/blob/10b25890b64b722c50aa7579c2570ad5c69b2cf2/openspeech/models/openspeech_ctc_model.py#L118
self.fc is not defined,is it?
Which in_features, out_features should it have?
cc @upskyy , @sooftware

@kuraga
It should be defined as below link, but there seems to be a missing issue in the jasper model.
https://github.com/openspeech-team/openspeech/blob/main/openspeech/models/contextnet/model.py#L71
https://github.com/openspeech-team/openspeech/blob/main/openspeech/models/conformer/model.py#L66

@upskyy , thanks for the reply!
But as far as I understand, there is no the constant encoder_dim...
Should we calculate it?
See also https://github.com/sooftware/jasper/issues/4.

See https://github.com/sooftware/jasper/issues/4#issuecomment-2449833556.


:sparkles: Introducing AllMySms notification channel.

I'll add you as an admin now. Merge when ready!


ppSpace in elab/macro is ignored before constructor dot notation

Prerequisites
Please put an X between the brackets as you perform the following steps:

[x] Check that your issue is not already filed:
https://github.com/leanprover/lean4/issues
[x] Reduce the issue to a minimal, self-contained, reproducible test case.
Avoid dependencies to Mathlib or Batteries.
[x] Test your test case against the latest nightly release, for example on
https://live.lean-lang.org/#project=lean-nightly
(You can also use the settings there to switch to “Lean nightly”)

Description
Using ppSpace in a parser does not always result in a space. As a result, syntax does not roundtrip.
Context
Zulip
Steps to Reproduce

Run the following:

import Lean.Elab.Command

macro (name := useSyntax) "use" ppSpace arg:term : tactic => `(tactic| sorry)

run_cmd do
  Lean.logInfo <| ← `(tactic| use .succ 0)

Expected behavior: Outputs use .succ✝ 0
Actual behavior:  Outputs use.succ✝ 0, which is invalid syntax due to the missing space
Versions
4.10.0-nightly-2024-06-25
Additional Information
[Additional information, configuration or data that might be necessary to reproduce the issue]
Impact
Add :+1: to issues you consider important. If others are impacted by this issue, please ask them to add :+1: to it.

It looks like the issue is that when ppSpace is used as a macroArg without a variable name, it gets wrapped in a group, which inhibits inserting the space.
Is this a bug in whitespace insertion? Or should Lean.Elab.Command.expandMacroArg special case ppSpace?
import Lean

open Lean Lean.Parser.Command Lean.Elab.Command

elab "test_macroArg " args:macroArg* : command => do
    let (stxParts, patArgs) := (← args.mapM expandMacroArg).unzip
    logInfo m!"{stxParts}"
    logInfo m!"{patArgs}"

test_macroArg ppSpace term,+
-- [group✝(ppSpace), sepBy1(term, ",", ", ")]
test_macroArg x:ppSpace term,+
-- [ppSpace, sepBy1(term, ",", ", ")]

elab "use1" ppSpace term,+ : tactic => failure
elab "use2" x:ppSpace term,+ : tactic => failure

run_cmd Lean.Elab.Command.liftTermElabM do
  Lean.logInfo <| ← `(tactic| use1 .succ 0) -- use1.succ✝ 0
  Lean.logInfo <| ← `(tactic| use2 .succ 0) -- use2 .succ✝ 0


Logic exactly backwards?

Isn't the logic for this line exactly backwards? Perhaps some of the other related checks too.
l + VISIBLE_PADDING > p.offsetWidth + p.scrollLeft ... return false;
...as l represents the el.offsetLeft and p is it's parent?  For example, l in my code is about 950 (px), and p's left is around 600px.
In this case, the function isVisible should instead return true, affirming the checked el is visible given that el's left edge is a greater value (further to the right) than is the parent p (smaller value, closer to the left edge.)
I could understand if the function was isHidden. Am I missing something?

Never mind, I misunderstood... the logic is in fact correct.

It appears that this line specifically (the rest seem fine) is comparing apples and oranges (left edge of child vs overall width of parent) especially in light of what the comment seems to indicate...

//-- If the target element is to the right of the parent elm

We would expect child's left edge (el.offsetLeft + VISIBLE_PADDING) to be to the right of its parent's left edge (p.offsetLeft) regardless of parent's size (p.offsetWidth + p.scrollLeft) in order for it to be visible (at least for this first test.)
In which case, shouldn't it be...

l + VISIBLE_PADDING < p.offsetLeft ... return false

...to check if child's left edge is further left (smaller value) than the parent's left edge, and therefor return false ("not visible")?


falshStore.value() cannot work as expect

in flashStore.values, {lte: 10} result is 3, while {gte: 10} result is 5
snip as follows:
import { FlashStore } from '../src/flash-store'
async function main() {
  const flashStore = new FlashStore('falshstore.workdir')

  console.log('all values')
  for await (const value of flashStore.values()) {
    console.log(value)
  }

  console.log('value gte 10')
  for await (const value of flashStore.values({gte: 10})) {
    console.log(value)
  }

  console.log('value lte 10')
  for await (const value of flashStore.values({lte: 10})) {
    console.log(value)
  }

}
main()

output as follows:
all values
3
5
value gte 10
5
value lte 10
3

Confirmed, and added to known issues.
It seems that we are not passing the right parameters to the leveldown abstract API (to be confirm).


feat(nx-remotecache-s3): fallback to aws-sdk-v3 credentials provider

falls back to aws-sdk-v3 credentials provider
if credential settings are not provided from
user via environment variable or option.
CLOSES #62

Thanks!


The function dpll_satisfiable in logic.py requires arguments to be expr-s.

* What are the steps to reproduce the problem?

It is often quite convenient to manipulate propositional sentences in string
format
and then pass them to dpll_satisfiable to be solved.
If you pass a string argument to dpll_satisfiable, it sometimes works correctly
(in the cases when no choice is required), but other times gives an obscure
"out of index" error.

* What is the expected output? What do you see instead?

Running:
>>> import logic
>>> logic.dpll_satisfiable("A")
{A: True}

Expected result would be {A: True}

But then the following behaviour:

>>> logic.dpll_satisfiable("A | B")
Traceback from previous calls
 ...
    P, symbols = symbols[0], symbols[1:]
IndexError: list index out of range

I would expect to get either
{A: True}
or an error that the type of the argument should be Expr.

* What version of the product are you using? On what operating system?

The problem is in r202 (and earlier revisions) from the repository.

* Please provide any additional information below.

The debugging can be made much simpler by adding the following line to logic.py:

@@ -643,6 +643,7 @@
     >>> dpll_satisfiable(P&~P)
     False
     """
+    assert isinstance(s, Expr), "The argument 's' must be an instance of the
Expr type. Use logic.expr(string) to convert a string to Expr instance."
     clauses = conjuncts(to_cnf(s))
     symbols = prop_symbols(s)
     return dpll(clauses, symbols, {})

The code in this project is wonderful for learning and teaching purposes and
adding clutter is generally not a good idea. In this case the little additional
clutter is justified to save time in debugging and ease understanding.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 7 Dec 2013 at 1:16

Please review this pull request for this bug.
Link to pull request

hello, my name is jayant saraf. i want to contribute to this issue.
so, can i use the following code to solve the issue :
import re
try:
re.compile('[')
is_valid = True
except re.error:
is_valid = False


typings: init at 2.0.3

what
add typings for better typescript support
why
the typings in the definitely typed repository are not representing the current implementation. in fact it would be keep the typings in sync by having them closer to the source code

No knowledge to maintain typings here. May be it will be better send patch to existing global repo for such definitions?

thanks. i will forwards the changes in this PR to the global types repo from DefinitelyTyped.

will be merged in: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/25102


Malware: Events Summary

I ran the report and looking at the following part of the report, I'm not sure what to do with the information:
Event/Info | Count
Total Events | 17
Total Objects Flagged | 1
Total Unique Event Types | 2
I have been searching the internet, but not found anything leading me as to what I should be doing next (besides be concerned).
I also turned on "Storage-level corruption guard" on the Maintenance tab in the Advanced Settings window. This window is accessible from the Storage part of the Backup job configuration.

Hi,
So that table is just a quick summary from extended malware detection details. Flagged Objects are listed in the following tables "Malware: Infected Objects". Events are not listed here as they made the report look very messy.
Total Events is the total malware events that you have had flagged. To find more on this, look in your Veeam Backup & Replication Console > History View > Malware Detection > Malware Events. Then review these as needed with your security team. (You can also find this in the CSV files in C:\temp\vHC\Original\VBR\localhostmalware_events.csv)

Total Unique Event Types is a summary of the events. Basically, you have 17 total events split between 2 unique messages across 1 object (vm/server). Likely you have a single system that is being flagged for a couple of different reasons that you need to check.
Let me know if you need any more help with this!
-AC

Thank you for that information.
A follow-up question since I'm also part of the security team. It appears the files have been deleted since I can't find the files on the File Server.
The results:
[26.02.2024 21:04:26.164]    <12> Warning (3)    Fileserv01:123ABDC...:d:...\Canon iR-ADV C2030\UFRII_v20.90_INF:Readme.hta
[26.02.2024 21:04:26.164]    <12> Warning (3)    Fileserv01:123ABDC...:d:...\Canon iR-ADV C2030\UFRII_v20.85_INF:Readme.hta
[26.02.2024 21:04:26.164]    <12> Warning (3)    Fileserv01:123ABDC...:d:...\Canon iR-ADV C2030\PCL6_v20.90_INF:Readme.hta
[26.02.2024 21:04:42.961]    <12> Warning (3)    Fileserv01:123ABDC...:d:\Archive...\Logo:LogoFiles.sonic
Can I "clear" these events? The errors are from prior to my first day on the job.

If you've checked and are confident everything is clean, sure you can mark it as clean. If you're looking for some additional help with understanding the scope of the events as far as the Veeam detection is concerned, please open a ticket with support to gain some assistance.

Sorry. How do I mark it as clean?

To be clear, I'm assuming you're asking about clearing the infected machine as being flagged as infected. Here is how to mark the machines as clean: https://helpcenter.veeam.com/docs/backup/vsphere/malware_detection_managing_status.html?zoom_highlight=mark+as+clean&ver=120
If you're asking about clearing the events, the events cannot be cleared until they roll off from the session history.


added cross validaton to PEP calculation

This pull request adds cross-validation to the PEP calculation (see https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-13-S16-S3). Formerly, 25% of the data was used for training and a separate 25% of the data was used for testing. The metrics from the test were reported in the output. The trained model was then applied to all of the data including the training data, which could lead to overfitting.
In this PR, I added cross-validation. Now, all of the data is broken into four groups. Three groups are used for training and one is used for testing and application of the trained model. This process is repeated four times so that all PSMs are scored by a separately trained model. The metrics from the four models are averaged and presented as a single metric.

This is the two thousandth pull request 😮 👏

looks good to me but this is something I noticed that could happen on occasion:
this PR subdivides the PSMs into 4 groups and then if any of the groups doesn't have a true or false labeled PSM then the PEP training fails. it seems more robust to me to take the "trues", split those up randomly into 4 groups, then do the same for "falses". that way if there are at least 4 trues and 4 falses in the set of PSMs then you'll get valid subgroups


Fixing trap focus

I have imported the 'A11yModule' module in the package. It was missing. Which caused cdkTrapFocus not to work.

@aabi01
Thanks for the pull request.
I was working on a similar pull request, that relates to issue #48, I just hadn't had time to push the changes yet.
I'll merge yours and push my changes to the repo too.

LGTM