Tensorflow eager version fails, while Tensorflow static graph works

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): no
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Archlinux
TensorFlow installed from (source or binary): repository
TensorFlow version (use command below): 1.11
Python version: 3.7
CUDA/cuDNN version: cuda 10, cudnn 7
GPU model and memory: nvidia 1080ti

Describe the current behavior
I'm porting a ML model ( https://github.com/samet-akcay/ganomaly ) implemented in pytorch to tensorflow (using the keras layers, knowing that tf 2.0 will come soon).
The first implementation was using the eager version to do the train, but the model collapses, nothing works.
The same model definition has been reused but it has been used to first define a static graph and then train the model: it works perfectly.
Describe the expected behavior
The static graph version and the eager version should have the same behavior.
Code to reproduce the issue
Model description (same for both eager and static)
from typing import Dict
import tensorflow as tf
import tensorflow.keras as k
import numpy as np

conv_initializer = k.initializers.random_normal(0.0, 0.02)
batchnorm_inizializer = k.initializers.random_normal(1.0, 0.02)

eps = 1e-5
momentum = 0.99

class Decoder(k.models.Model):
    """
    Decoder (Generator) Network
    """

    def __init__(self, output_depth: int = 1):
        super(Decoder, self).__init__()

        self.conv1 = k.layers.Conv2DTranspose(
            filters=256,
            kernel_size=(4, 4),
            strides=(1, 1),
            kernel_initializer=conv_initializer,
            input_shape=(-1, 1, 1, 100),
            use_bias=False,
        )
        self.batchnorm1 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv2 = k.layers.Conv2DTranspose(
            filters=128,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm2 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv3 = k.layers.Conv2DTranspose(
            filters=64,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm3 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv4 = k.layers.Conv2DTranspose(
            filters=output_depth,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )

    def call(self, x, training=True):
        # print("X.SHAPE: ", x.shape)

        x = self.conv1(x)
        x = self.batchnorm1(x, training=training)
        x = tf.nn.relu(x)

        x = self.conv2(x)
        x = self.batchnorm2(x, training=training)
        x = tf.nn.relu(x)

        x = self.conv3(x)
        x = self.batchnorm3(x, training=training)
        x = tf.nn.relu(x)

        x = self.conv4(x)
        x = tf.nn.tanh(x)  # image

        # print("Decoder call output size: ", x.shape)

        return x

class Encoder(k.models.Model):

    def __init__(self, latent_dimensions: int = 100):
        super(Encoder, self).__init__()

        self.conv0 = k.layers.Conv2D(
            filters=64,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            input_shape=(-1, 32, 32, 1),
            use_bias=False,
        )

        self.conv1 = k.layers.Conv2D(
            filters=128,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm1 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv2 = k.layers.Conv2D(
            filters=256,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm2 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv3 = k.layers.Conv2D(
            filters=latent_dimensions,
            kernel_size=(4, 4),
            strides=(1, 1),
            padding="valid",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )

    def call(self, x, training=True):
        # x = self.conv0(x, input_shape=x.shape[1:])

        x = self.conv0(x)
        x = tf.nn.leaky_relu(x)

        x = self.conv1(x)
        x = self.batchnorm1(x, training=training)
        x = tf.nn.leaky_relu(x)

        x = self.conv2(x)
        x = self.batchnorm2(x, training=training)
        x = tf.nn.leaky_relu(x)

        x = self.conv3(x)
        # x = tf.nn.tanh(x)       # latent space unitary sphere [-1,1] TODO: temporary?

        # print("Encoder call output size: ", x.shape)

        return x

class Discriminator(k.models.Model):

    def __init__(self):
        super(Discriminator, self).__init__()

        self.conv0 = k.layers.Conv2D(
            filters=64,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )

        self.conv1 = k.layers.Conv2D(
            filters=128,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm1 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv2 = k.layers.Conv2D(
            filters=256,
            kernel_size=(4, 4),
            strides=(2, 2),
            padding="same",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )
        self.batchnorm2 = k.layers.BatchNormalization(
            epsilon=eps,
            momentum=momentum,
            beta_initializer=batchnorm_inizializer,
            gamma_initializer=batchnorm_inizializer,
        )

        self.conv3 = k.layers.Conv2D(
            filters=1,
            kernel_size=(4, 4),
            strides=(1, 1),
            padding="valid",
            kernel_initializer=conv_initializer,
            use_bias=False,
        )

    def call(self, x, training=True):
        x = self.conv0(x)
        x = tf.nn.leaky_relu(x)

        x = self.conv1(x)
        x = self.batchnorm1(x, training=training)
        x = tf.nn.leaky_relu(x)

        x = self.conv2(x)
        x = self.batchnorm2(x, training=training)
        x = tf.nn.leaky_relu(x)

        x = self.conv3(x)

        return x

Also, the following variable definitions are shared in both the eager and static implementations
            global_step = tf.train.get_or_create_global_step()
            generator_optimizer = tf.train.AdamOptimizer(2e-4, 0.5)
            discriminator_optimizer = tf.train.AdamOptimizer(2e-4, 0.5)
            discirminator = Discriminator()
            g_encoder = Encoder()
            g_decoder = Decoder()
            encoder = Encoder()

Eager training
I show just a single training update, that's run in a training loop
            # Discriminator training
            with tf.GradientTape() as tape:

                discriminator.trainable = True
                disc_x = tf.squeeze(discriminator(x, training=False), axis=[1, 2])

                disc_real_loss = tf.losses.sigmoid_cross_entropy(  # discriminator loss on result disc_x
                    multi_class_labels=tf.ones_like(disc_x), logits=disc_x
                )
                g_encoder.trainable = False
                g_decoder.trainable = False
                # recreate the data (=> x_hat), starting from real data x
                z = g_encoder(x, training=True)  # Not training
                x_hat = g_decoder(z, training=True)  # Not training

                disc_x_hat = tf.squeeze(discriminator(x_hat, training=False), axis=[1, 2])
                disc_gen_loss = tf.losses.sigmoid_cross_entropy(  # discriminator loss on result disc_x_hat
                    multi_class_labels=tf.zeros_like(disc_x_hat), logits=disc_x_hat
                )
                disc_loss = disc_real_loss + disc_gen_loss

            discriminator_gradients = tape.gradient(
                disc_loss, discriminator.trainable_variables
            )

            discriminator_optimizer.apply_gradients(
                zip(discriminator_gradients, discriminator.trainable_variables)
            )

            # Generator Training
            with tf.GradientTape() as tape:

                # err_g_bce
                g_encoder.trainable = True
                g_decoder.trainable = True
                encoder.trainable = True
                z = g_encoder(x, training=True)
                x_hat = g_decoder(z, training=True)
                disc_x_hat = tf.squeeze(
                    discriminator(x_hat, training=False), axis=[1, 2]
                )
                bce_loss = tf.losses.sigmoid_cross_entropy(
                    multi_class_labels=tf.ones_like(disc_x_hat),
                    logits=disc_x_hat,  # G wants to generate reals so ones_like
                )

                l1_loss = tf.losses.absolute_difference(x, x_hat)
                # err_g_enc
                z_hat = encoder(x_hat, training=True)
                l2_loss = tf.losses.mean_squared_error(z, z_hat)

                gen_loss = 1* bce_loss + 50 * l1_loss + 1 * l2_loss

            trainable_variable_list = (
                g_encoder.trainable_variables
                + g_decoder.trainable_variables
                + encoder.trainable_variables
            )

            generator_gradients = tape.gradient(gen_loss, trainable_variable_list)

            generator_optimizer.apply_gradients(
                zip(generator_gradients, trainable_variable_list),
                global_step=global_step,
            )

Static graph training
First I show the graph definition,then how is used in the training loop
Graph def

    # Discriminator on real
    D_x = discriminator(x)
    D_x = tf.squeeze(D_x, axis=[1, 2])

    # Generate fake
    z = g_encoder(x)
    x_hat = g_decoder(z)

    D_x_hat = discriminator(x_hat)
    D_x_hat = tf.squeeze(D_x_hat, axis=[1, 2])
    ## Discriminator
    d_loss = tf.losses.sigmoid_cross_entropy(
                    multi_class_labels=tf.ones_like(D_x), logits=D_x) + tf.losses.sigmoid_cross_entropy(
                    multi_class_labels=tf.zeros_like(D_x_hat), logits=D_x_hat)

    # encode x_hat to z_hat
    z_hat = encoder(x_hat)

    ## Generator
    bce_loss = tf.losses.sigmoid_cross_entropy(tf.ones_like(D_x_hat), D_x_hat)
    l1_loss = tf.losses.absolute_difference(x, x_hat)
    l2_loss = tf.losses.mean_squared_error(z, z_hat)

    g_loss = 1 * bce_loss + 1 * l1_loss + 1 * l2_loss
    global_step = tf.train.get_or_create_global_step()

    # Define the D train op
    train_d = tf.train.AdamOptimizer(
        lr, beta1=0.5).minimize(
            d_loss, var_list=D.trainable_variables)

    # train G_e G_d E
    train_g = tf.train.AdamOptimizer(
        lr, beta1=0.5).minimize(
            g_loss,
            global_step=global_step,
            var_list=g_encoder.trainable_variables + g_decoder.trainable_variables +
            encoder.trainable_variables)

And this is what's inside the training loop (executed in a MonitoredSession):
            # extract from tf.data.Dataset, x is a placeholder and x_ is the iterator.get_next
            real = sess.run(x_)
            feed_dict = {x: real}

            # train D
            _, d_loss_value = sess.run([train_d, d_loss], feed_dict)

            # train G+E
            _, g_loss_value, step = sess.run([train_g, g_loss, global_step],
                                             feed_dict)

The model definition is the same, the loss definition is the same, the training steps and the same, the only difference is the eager mode enabled or disabled. The results with eager on are:
D loss: collapses to zero, that's wrong since its aim is to stay around 0.5

Generated images: wrong, bad reconstructions since D collapsed

While when eager is off, the discriminator loss looks correct and the generated output are the one expected:
D loss:

Generated output:

@galeone - Please try with Python 3.6.

@harshini-gadige I tried. Same exact results: D collapses in eager version, D works correctly in static graph version.
For this test:

Python 3.6.6
Tensorflow: 1.11.0

I wonder whether it's possible to narrow this down a little.
Also, I recommend Sequential, it'll dramatically simplify the model definition.

@martinwicke I  add debug operations in both versions and I'll try to spot where the difference starts.
I'll update the thread as soon as I have some insight

The eager code you shared should also work in graph mode to produce training ops (one from the generator and one from the discriminator, which you can session.run separately). Can you do that and see if you also observe the collapse?

Hi @galeone,
I tried to reproduce the problems, but I'm not able to. The only changes I made were to add this loop (and print the losses).
def main(_):
  tf.enable_eager_execution()

  (train_images, train_labels), (_, _) = k.datasets.fashion_mnist.load_data()

  train_images = train_images / 255.0
  train_images = train_images.astype(np.float32)
  train_images = np.expand_dims(train_images, -1)

  train_dataset = tf.data.Dataset.from_tensor_slices(
      (train_images, train_labels)).shuffle(10000).repeat().batch(128).map(lambda x, y: (tf.image.resize_images(x, [32, 32]), y))

  global_step = tf.train.get_or_create_global_step()
  generator_optimizer = tf.train.AdamOptimizer(2e-4, 0.5)
  discriminator_optimizer = tf.train.AdamOptimizer(2e-4, 0.5)
  discriminator = Discriminator()
  g_encoder = Encoder()
  g_decoder = Decoder()
  encoder = Encoder()

  it = iter(train_dataset)
  for i in range(10000):
    x, _ = it.next()
    train(encoder, g_encoder, g_decoder, generator_optimizer, discriminator,
          discriminator_optimizer, global_step, x)

I get after 2000 steps:
step <tf.Variable 'global_step:0' shape=() dtype=int64, numpy=1000>, g: 4.06344842911, d: 1.27861332893
step <tf.Variable 'global_step:0' shape=() dtype=int64, numpy=2000>, g: 3.98709654808, d: 0.57758295536

Note that I tried this with/without a GPU, and on 1.11 as well as nightly and wasn't able to reproduce it.
Perhaps you can paste your full code so that I can reproduce this better?

Yes, no problem.
The models are the one posted earlier and are inside the models/ganomaly.py file.
The dataset definition (common to both version too) is placed inside ops/input_fn/fashion_mnist.py:
"""Load Fashion MNIST Dataset."""

from typing import Callable, Dict, Tuple

import numpy as np
import sklearn.model_selection as sk
from skimage.transform import resize
from matplotlib import pyplot as plt
import tensorflow as tf
import tensorflow.keras as k

Dataset = Dict[str, np.ndarray]
CompleteDataset = Dict[str, Dataset]

def arrays_dataset_to_generator(dataset: Dataset) -> Callable:
    # DOCUMENT
    def _generator():
        for i in range(len(dataset["x"])):
            yield dataset["x"][i], dataset["y"][i]

    return _generator

def extract_label(
    features: np.ndarray, labels: np.ndarray, target_label: int
) -> Tuple[Dataset, Dataset]:
    """
    Extract all features whose label is ``target_labels``.

    Args:
        features: Dataset features
        labels: Dataset labels
        target_label: The label used as filter

    Returns:
        All the features with the ``target_labels`` as label.

    """
    bool_filter = labels == target_label
    normal_features = features[~bool_filter]
    normal_labels = labels[~bool_filter]
    anomalous_features = features[bool_filter]
    anomalous_labels = labels[bool_filter]
    return (
        {"x": normal_features, "y": normal_labels},
        {"x": anomalous_features, "y": anomalous_labels},
    )

def _process_features(feature, image_size):
    feature = tf.squeeze(tf.image.resize_images(tf.expand_dims(tf.expand_dims(feature, axis=2), axis=0), size=(32, 32)),
                         axis=0)  # resize change to float32

    # Normalize features between -1 and 1
    feature = (feature * 2) - 1

    return feature.numpy()

class FashionMNIST:
    """
    DigitsMNIST Dataset.

    Attributes:
        train_datasets (Dict[str, np.ndarray]): Dictionary of features for training..
            The dictionary has keys in the form of ``non_{label}`` meaning that each
            key holds the 80% of the features whose labels is not ``{label}``
        test_datasets (Dict[str, np.ndarray]): Dictionary of features for testing.
            The dictionary has keys in the form of ``only_{label}`` meaning that each
            key holds the all the features whose label is ``{label}`` and 20% of all
            the other features as non-anomalies

    """

    train_datasets: CompleteDataset
    test_datasets: CompleteDataset

    # def __init__(self, image_size: Tuple[int, int, int] = (28, 28, 1)) -> None:
    def __init__(self, image_size: Tuple[int, int, int] = (32, 32, 1)) -> None:
        """
        Fetch the dataset and partition it for training and testing.

        Retrieve the dataset from the Keras builtin, split each class 80-20 and
        using these splits build all the datasets required for training and testing.

        Args:
            image_size: Size of each image

        Returns:
            None.

        """
        self.image_size = image_size
        self.train_datasets = {}
        self.test_datasets = {}

        mnist_train_set, _ = k.datasets.fashion_mnist.load_data()
        mnist_x, mnist_y = mnist_train_set

        mnist_x = np.array([_process_features(x, self.image_size) for x in mnist_x])

        for n in range(10):
            # print(n)
            normal_data, anomalous_data = extract_label(mnist_x, mnist_y, n)
            n_train_x, n_test_x, n_train_y, n_test_y = sk.train_test_split(
                normal_data["x"], normal_data["y"], test_size=0.2, random_state=42
            )

            # print(n_train_x.shape[0], n_test_x.shape[0], anomalous_data["x"].shape[0])

            self.train_datasets[f"anomaly_{n}"] = {"x": n_train_x, "y": n_train_y}
            self.test_datasets[f"anomaly_{n}"] = {
                "x": np.concatenate((n_test_x, anomalous_data["x"])),
                "y": np.concatenate((n_test_y, anomalous_data["y"])),
            }

    def to_tf_dataset(self, arrays_dataset: Dataset, hyper: Dict) -> tf.data.Dataset:
        """
        Convert ``features`` and ``labels`` into a `tf.data.Datasets``.

        Args:
            features: Array of features
            labels: Array of labels
            hyper: Dictionary of hyperparameters

        Returns:
            `tf.data.Dataset` of batch(image, label).

        """
        generator = arrays_dataset_to_generator(arrays_dataset)
        dataset = tf.data.Dataset.from_generator(generator, (tf.float32, tf.uint8))
        dataset = (
            dataset.shuffle(hyper["buffer_size"], seed=42)
            .batch(hyper["batch_size"], drop_remainder=True)
            .prefetch(1)
        )
        dataset = dataset.repeat(hyper["epochs"]) if hyper.get("epochs") else dataset

        return dataset

Eager version
This is the training definition:
from __future__ import annotations

import os
import time
from typing import Callable, Dict, Optional

import tensorflow as tf
import tensorflow.keras as k
from models.ganomaly import Discriminator
import statistics as s
import copy

LOGGED: Dict = {}

class GANomaly:
    """
    GANomaly
    """

    g_encoder: k.models.Model  # bow-tie encoder (encoder)
    g_decoder: k.models.Model  # bow-tie decoder (generator)
    encoder: k.models.Model  # encoder
    discriminator: k.models.Model  # discriminator

    generator_optimizer: tf.train.AdamOptimizer
    discriminator_optimizer: tf.train.AdamOptimizer

    dataset: tf.data.Dataset

    checkpoint: tf.train.Checkpoint
    logging_fn: Optional[Callable]

    def __init__(
        self,
        g_encoder: k.models.Model,
        g_decoder: k.models.Model,
        encoder: k.models.Model,
        discriminator: k.models.Model,
        dataset: tf.data.Dataset,
        model_dir: str,
        hyper: Dict,
        logging_fn: Optional[Callable] = None,
    ) -> None:

        # Model
        self.g_encoder = g_encoder()
        self.g_decoder = g_decoder()
        self.encoder = encoder()
        self.discriminator = discriminator()
        self.hyper = hyper

        # Optimizers

        # this is for g_encode, g_decoder and encoder
        self.global_step = tf.train.get_or_create_global_step()
        self.learning_rate = self.hyper["learning_rate"]

        # with decay, 2 optimizer
        self.generator_optimizer = tf.train.AdamOptimizer(
            self.learning_rate, hyper["beta1"]
        )

        self.discriminator_optimizer = tf.train.AdamOptimizer(
            self.learning_rate, hyper["beta1"]
        )
        # Data
        self.dataset = dataset

        # Checkpoints
        self.checkpoint = tf.train.Checkpoint(
            generator_optimizer=self.generator_optimizer,
            discriminator_optimizer=self.discriminator_optimizer,
            g_encoder=self.g_encoder,
            g_decoder=self.g_decoder,
            encoder=self.encoder,
            discriminator=self.discriminator,
        )

        self.checkpoint_prefix = os.path.join(model_dir, "ckpt")
        self.summary_writer = tf.contrib.summary.create_file_writer(
            model_dir, flush_millis=10000
        )

        self.saved_model_dir = model_dir

        # Logging
        self.logging_fn = logging_fn

    def train(  # TODO: reduce complexity
        self,
        steps_per_epoch: int,
        batch_size: int,
        noise_dims: int,
        epochs: float,
        checkpoint_frequency: int,
        logging_enabled: bool = False,
        discriminator_passes: int = 2,
    ) -> None:
        # global_step = tf.train.get_or_create_global_step()

        # self.g_enc_dec_weights = []
        epoch = 0
        epoch_start = time.time()
        for x, _ in self.dataset:
            tf.Print(self.global_step, [self.global_step], "GLOBAL STEP")
            if int(self.global_step.numpy()) % steps_per_epoch == 0:
                tf.logging.info("---------------[NEW EPOCH]---------------")
                tf.logging.info(f"Current Epoch {epoch + 1} | Total Epochs: {epochs}")
                tf.logging.info(
                    f"Step {self.global_step.numpy()} "
                    f"| Total Steps: {steps_per_epoch * epochs}"
                )
                tf.logging.info(f"Epoch time: {time.time() - epoch_start}")
                epoch_start = time.time()
                epoch += 1
            step_start = time.time()

            # Discriminator training
            with tf.GradientTape() as tape:

                self.discriminator.trainable = True
                disc_x = tf.squeeze(
                    self.discriminator(x, training=False), axis=[1, 2]
                )  # discriminator on real data x. Training on.

                # I save the weights here because here I know they are not zero
                if int(self.global_step.numpy()) == 0:
                    print("Saving weights...")
                    self.discriminator.save_weights()

                disc_real_loss = tf.losses.sigmoid_cross_entropy(  # discriminator loss on result disc_x
                    multi_class_labels=tf.ones_like(disc_x), logits=disc_x
                )

                self.g_encoder.trainable = False
                self.g_decoder.trainable = False
                # recreate the data (=> x_hat), starting from real data x
                z = self.g_encoder(x, training=True)  # Not training
                x_hat = self.g_decoder(z, training=True)  # Not training

                disc_x_hat = tf.squeeze(
                    self.discriminator(x_hat, training=False), axis=[1, 2]
                )  # discriminator on recreated data. Training on.
                disc_gen_loss = tf.losses.sigmoid_cross_entropy(  # discriminator loss on result disc_x_hat
                    multi_class_labels=tf.zeros_like(disc_x_hat), logits=disc_x_hat
                )
                disc_loss = disc_real_loss + disc_gen_loss

            discriminator_gradients = tape.gradient(
                disc_loss, self.discriminator.trainable_variables
            )

            self.discriminator_optimizer.apply_gradients(
                zip(discriminator_gradients, self.discriminator.trainable_variables)
            )

            # Generator Training
            with tf.GradientTape() as tape:

                # err_g_bce
                self.g_encoder.trainable = True
                self.g_decoder.trainable = True
                self.encoder.trainable = True
                z = self.g_encoder(x, training=True)
                x_hat = self.g_decoder(z, training=True)
                disc_x_hat = tf.squeeze(
                    self.discriminator(x_hat, training=False), axis=[1, 2]
                )  # Training false
                bce_loss = tf.losses.sigmoid_cross_entropy(
                    multi_class_labels=tf.ones_like(disc_x_hat),
                    logits=disc_x_hat,  # G wants to generate reals so ones_like
                )

                # print("disc_x_hat.shape::::::::", disc_x_hat.shape)

                # err_g_l1l
                l1_loss = tf.losses.absolute_difference(x, x_hat)

                # err_g_enc
                z_hat = self.encoder(x_hat, training=True)
                l2_loss = tf.losses.mean_squared_error(z, z_hat)

                # final generator loss
                gen_loss = (
                    self.hyper["adversarial_w"] * bce_loss
                    + self.hyper["contextual_w"] * l1_loss
                    + self.hyper["encoder_w"] * l2_loss
                )

            trainable_variable_list = (
                self.g_encoder.trainable_variables
                + self.g_decoder.trainable_variables
                + self.encoder.trainable_variables
            )
            generator_gradients = tape.gradient(gen_loss, trainable_variable_list)

            self.generator_optimizer.apply_gradients(
                zip(generator_gradients, trainable_variable_list),
                global_step=self.global_step,
            )

            if disc_loss < 1e-4:
                print("RESET WEIGHTS")
                self.discriminator.reset_weights()
                # self.discriminator = Discriminator()

            step_time_delta = time.time() - step_start

            LOGGED.update(
                {  # HACK: Find better way
                    "generated_data": x_hat,
                    "real_data": x,
                    "encoded_real": z,
                    "gen_loss": gen_loss,
                    "disc_loss": disc_loss,
                    "gen_bce_loss": bce_loss,
                    "gen_cont_loss": l1_loss,
                    "gen_enc_loss": l2_loss,
                    "step": self.global_step,
                    # "learning_rate": self.learning_rate(),
                    "learning_rate": self.learning_rate,
                }
            )

            # TODO: Move the logging to a separate function
            # TODO: Divide Epoch-wise logging from Step-wise logging
            # TODO: Add support for metrics

            if logging_enabled:
                if self.logging_fn:
                    self.logging_fn(self.summary_writer, LOGGED)
                else:
                    tf.logging.error("Logging enabled but no logging_fn was provided.")

        tf.logging.info("# ############ [Training Complete] ##############")
        self.checkpoint.save(file_prefix=self.checkpoint_prefix)

And this is the file that runs the train:
"""
Run the model.
"""
from typing import Optional

import fire
import tensorflow as tf

from models.anogan import AnoGAN
import GANomaly as ganomaly
import models.ganomaly as m_ganomaly

tf.enable_eager_execution()
tf.logging.set_verbosity(tf.logging.INFO)

def main(gan: str, mnist_type: Optional[str] = None) -> None:
    """Execute the training script."""
    print("main -- checking fire arguments")
    if gan.lower() == "dummy":
        tf.logging.info(f"Starting DummyGAN")
        from models.dummy import Generator, Discriminator, stepwise_train_logging
        from ops.input_fn.dummy import DummyData

        hyper = {
            "mean": 10.0,
            "std": 0.01,
            "points": 10000,
            "batch_size": 1000,
            "epochs": 2200,
            "buffer_size": 10000,
            "noise_dims": 100,
            "learning_rate": 0.0002,
            "beta1": 0.5,
        }

        config = {"checkpoint_frequency": 500}

        dataset = DummyData(hyper["mean"], hyper["std"], hyper["points"])
        train_dataset = dataset.to_tf_dataset(
            dataset.train_features,
            batch_size=hyper["batch_size"],
            buffer_size=hyper["buffer_size"],
            epochs=hyper["epochs"],
        )

        dummy_gan = AnoGAN(
            Generator,
            Discriminator,
            train_dataset,
            "logs/dummy",
            logging_fn=stepwise_train_logging,
            hyper=hyper,
        )

        dummy_gan.train(
            steps_per_epoch=int(hyper["points"] / hyper["batch_size"]),
            batch_size=int(hyper["batch_size"]),
            noise_dims=int(hyper["noise_dims"]),
            checkpoint_frequency=int(config["checkpoint_frequency"]),
            logging_enabled=True,
            epochs=hyper["epochs"],
        )

    elif (gan.lower() == "mnist") and mnist_type is not None:
        print("Category: MNIST")
        tf.logging.info(f"Starting MnistGAN")
        from models.ganomaly import stepwise_train_logging
        from ops.input_fn.fashion_mnist import FashionMNIST
        from ops.input_fn.mnist import DigitsMNIST

        config = {"checkpoint_frequency": 1}

        # ----------------------------------- fashion mnist
        if mnist_type.lower() == "fashion":
            print("Sub-Category: FASHION")

            hyper = {
                "batch_size": 64,
                "epochs": 2000,     # 500
                "buffer_size": 6000,
                "noise_dims": 100,  # 128
                "dataset_length": 6000,
                "learning_rate": 0.0002,
                "beta1": 0.5,
                "adversarial_w": 1,    # 1
                "contextual_w": 50,     # 50
                "encoder_w": 1,        # 1
            }

            dataset = FashionMNIST()
            n = 0
            train_dataset = dataset.to_tf_dataset(
                dataset.train_datasets[f"anomaly_{n}"],
                hyper=hyper,
            )

            dummy_gan = ganomaly.GANomaly(
                m_ganomaly.Encoder,
                m_ganomaly.Decoder,
                m_ganomaly.Encoder,
                m_ganomaly.Discriminator,
                train_dataset,
                "logs/ganomaly",
                logging_fn=stepwise_train_logging,
                hyper=hyper,
            )

            dummy_gan.train(
                steps_per_epoch=int(hyper["dataset_length"] / hyper["batch_size"]),
                batch_size=int(hyper["batch_size"]),
                noise_dims=int(hyper["noise_dims"]),
                checkpoint_frequency=int(config["checkpoint_frequency"]),
                logging_enabled=True,
                epochs=hyper["epochs"],
            )

if __name__ == "__main__":
    fire.Fire(main)

^ This version produces the D collapse.
While inside a session, (with ops generated by the eager as @alextp told me to do or using the static graph definition as I showed in the first post) it does not.

Hi @galeone,
I'm still unable to reproduce this (the scale of the loss is different, but it doesn't seem to collapse). I am able to fix the scaling by updating the _process_features function to include as the first line:
feature = feature / 255.

I am also not saving/restoring discriminator weights.
Could you try to replace your dataset using the dataset code I posted above, and see if it still collapses?
That might point to some environment differences which are contributing to this.
Thanks

Update: The eager version with the feature /= 255. does not collapses, it works.
But the question is: why in my setup the missing feature scaling makes the model collapse while in yours it doesn't?

Which Python version? Did rounding change maybe?

Python 3.6 and Python 3.7 (with tensorflow compiled and packaged by the archlinux maintainers with cuda 10)

Maybe this comes down just to random seeds? Eager and graph happen to use
slightly different random seeds for the weights unless you explicitly pass
seeds to the initializer ops.
On Mon, Nov 12, 2018 at 7:06 AM Paolo Galeone<EMAIL_ADDRESS>wrote:

Python 3.6 and Python 3.7 (with tensorflow compiled and packaged by the
archlinux maintainers with cuda 10)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/23407#issuecomment-437912922,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAATxU_GKaUUZLn8I5uFqsY664Y_CZPnks5uuY58gaJpZM4YEcrD
.

--

Alex

It might be, but I repeated the tests several times and the behavior was always the same

Hi @galeone,
Taking a step back, I want to confirm that it is actually broken without the feature /= 255. line?
The images that were generated initially (from your screenshot in https://github.com/tensorflow/tensorflow/issues/23407#issue-376045885) seem reasonable enough (at the very least not broken/collapsed).
Can you print the disc_loss out in python for the eager case as well (as I mentioned when I did this, the loss was small, but not 0.0).
Thanks!

Yes, without the feature /= 255. line the eager code is broken.
 The loss is small, but I'd expect 0.0s or NaNs if the model had collapsed, so I was saying that this hadn't collapsed.
Is it possible that the datasets and preprocessing steps are different between graph and eager? If so, can you try the graph version with an identical dataset?

Update: maybe https://github.com/tensorflow/tensorflow/issues/23882 is related

Indeed, this could be the case.
On Wed, Nov 21, 2018 at 10:41 AM Paolo Galeone<EMAIL_ADDRESS>wrote:

Update: maybe #23882
https://github.com/tensorflow/tensorflow/issues/23882 is related
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/23407#issuecomment-440768781,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAATxfGlJwn0r_NCybbAFpLM4Vicdr1Aks5uxZ4-gaJpZM4YEcrD
.

--

Alex

Nagging Assignee @alextp: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

FYI, we are addressing this problem by a comprehensive revamp in RFC tensorflow/community#38. Please comment on that.


DNM: ci: Use workflow from swiftlang/github-workflows for soundness checks

Motivation
[Explain here the context, and why you're making that change. What is the problem you're trying to solve.]
Modifications
[Describe the modifications you've made.]
Result
[After your change, what will change.]
Test Plan
[Describe the steps you took, or will take, to qualify the change - such as adjusting tests and manual testing.]

Kicking the CI again following the merge of https://github.com/swiftlang/github-workflows/pull/7.

Closing since we merged this in #648 instead.


.eh_frame: Don't allocate the full unwind table by default

As we are going to enable DWARF-based unwinding by default soon, which
means that the DWARF unwind information parser and the table generation
will be called significantly more times.
During prototyping, some shortcuts were taken, such as generating the
unwind table ahead of time. The unwind table is an array of unwind rows,
which for "medium-sized" binaries it can reach 200k entries. For the largest
binaries we've seen, the unwind tables were up to 2M entries big.
Generating and keeping these large slices in memory is not good for
performance, as we need to re-allocate them multiple times when
regrowing the backing memory buffer, as well as copying the data over, if
necessary.
While we could reasonably estimate the final size of the buffer using the
.text size as a proxy, this is not necessary for the majority of
cases, and we can process one unwind entry at a time.
This is what this commits implements. It refactors the table generation
code to change from returning said unwind table in a slice, to accepting
a callback function that can then process each element in the way it
finds it suitable.
Note that there are way more optimisations that we could do to speed up
the code but we'll first profile this code in production once we carry
out the monolithic unwind table work, as its architecture will reduce
the redundant work.
Note: The unwind generation table is still generating the full table ahead
of time. This would have to be changed to take advantage of this new API.
Benchmarks
$ go test -v github.com/parca-dev/parca-agent/pkg/stack/unwind -bench=. -count=30

[javierhonduco@fedora parca-agent]$ benchstat /tmp/old /tmp/new
name                                  old time/op    new time/op    delta
ParsingLibcDwarfUnwindInformation-12    34.5ms ±43%    10.8ms ±32%  -68.60%  (p=0.000 n=30+30)

name                                  old alloc/op   new alloc/op   delta
ParsingLibcDwarfUnwindInformation-12    32.7MB ± 0%     5.6MB ± 0%  -82.80%  (p=0.000 n=30+29)

name                                  old allocs/op  new allocs/op  delta
ParsingLibcDwarfUnwindInformation-12      150k ± 0%       83k ± 0%  -44.76%  (p=0.000 n=30+30)

As discussed in the chat, removing the callbacks resulted in a big perf regression (see commit msg) 😮. I couldn't spot anything obvious by inspecting the code.

As discussed in the chat, removing the callbacks resulted in a big perf regression (see commit msg) 😮. I couldn't spot anything obvious by inspecting the code.

Probably because of the closure we return. Have you tried to return the pointer directly?

Probably because of the closure we return. Have you tried to return the pointer directly?

Which one?

Probably because of the closure we return. Have you tried to return the pointer directly?

Which one?

https://github.com/parca-dev/parca-agent/pull/1101/files#r1044656024

The new approach that doesn't use callbacks has pretty much the same perf characteristics as the initial commit:
[javierhonduco@fedora parca-agent]$ benchstat /tmp/old /tmp/new2
name                                  old time/op    new time/op    delta
ParsingLibcDwarfUnwindInformation-12    58.9ms ±37%    13.4ms ±25%  -77.21%  (p=0.000 n=18+30)

name                                  old alloc/op   new alloc/op   delta
ParsingLibcDwarfUnwindInformation-12    32.7MB ± 0%     5.6MB ± 0%  -82.89%  (p=0.000 n=19+29)

name                                  old allocs/op  new allocs/op  delta
ParsingLibcDwarfUnwindInformation-12      150k ± 0%       79k ± 0%  -47.21%  (p=0.000 n=18+30)

Slightly better allocs/op 79k vs 83k, slightly worse timing but falls within the error margin 😄

Rebased + s/lastInsContext/lastInsCtx which somehow slipped through!

Thanks for the comprehensive survey on Go iterators! I don't particularly prefer any of them, so thinking of landing the current one and once Go's iterator proposal materializes we can use it


infra: fix automated PR creation

Description
Remove the git.requireBranch parameter from release creation scripts. release-it seems to have a weird behavior where using --no-git with any --git. parameters lets the Git steps proceed (commit, tag, push).
For automated PR creation to work, the changes need to be staged but not pushed yet.

Codecov Report

Merging #34 (9b79cdc) into main (becf274) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #34      +/-   ##
==========================================
+ Coverage   96.37%   96.40%   +0.03%
==========================================
  Files          28       28
  Lines         578      582       +4
  Branches      132      135       +3
==========================================
+ Hits          557      561       +4
  Misses         19       19
  Partials        2        2

Impacted Files
Coverage Δ

src/translator/regex.js
100.00% <ø> (ø)

mocks/roam.js
100.00% <100.00%> (ø)

src/translator/createTEX.js
90.77% <100.00%> (+0.22%)
:arrow_up:


Workflow to sync labels across multiple repos

Problem:
We often create a label in dbt-core and then want it to also appear in all other repos (dbt-snowflake, dbt-redshift, dbt-spark, dbt-bigquery, dbt-docs,  and so on).  Right now we manually create it everywhere.
It would be great to be able to run an action to copy a label from one repo to one-to-many others.  The name, description and color should all match.  If the label already exists in another repo, it would be ideal if we could overwrite it with the new color/description properties.
Solution:
A reusable workflow with a workflow_dispatch and workflow_call trigger.  We could then have a workflow that copies from dbt-core to all repos listed under the Core GitHub team.  Then the workflow could also be triggered manually to deliver to a subset of those repos.

I have a notebook that might help getting started: https://github.com/lostmygithubaccount/codyspace/blob/main/notebooks/labels.ipynb
it reads all the colors from dbt-core and sets them as the same in a bunch of other repos. not sure how urgent this is, but I'd be interested to do this in Go after some recent learning in #51


Missing dependencies

Report
I installed the geome package in a new conda environment with pip install geome. The install does not seem to install all required dependencies such as squidpy. For example, when trying to download from the gnome package (e.g. from geome import transforms) I get the No module named 'squidpy'.
Version information
No response

Thanks for reporting this issue!
We recently migrated to a new project template and overlooked the management of dependencies during the process. However, we've already taken action to address this. In a recent commit, we've listed all the required dependencies in the pyproject.toml file.
We're actively working on improving the handling of dependencies to prevent similar issues in the future.
If you have any more questions or encounter further difficulties, please let us know. We appreciate your interest in our project and your patience.
Thanks again!


Another link missing

Here "To learn how to set up a high-availability solution for your databases using these tools, see Active Data Guard and GoldenGate.", you need a link to "Active Data Guard and Goldengate" article.
Thanks
Cenk
Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 42a87992-3c2d-68cd-01b2-d41ea5e3b142
Version Independent ID: 5cf81a67-4e67-17d6-2b7c-f1ae3947088f
Content: Overview of Oracle Applications and solutions on Azure - Azure Virtual Machines
Content Source: articles/virtual-machines/workloads/oracle/oracle-overview.md
Service: virtual-machines
Sub-service: oracle
GitHub Login: @jjaygbay1
Microsoft Alias: jacobjaygbay

@cenk-ersoy
Thanks for the feedback! I have assigned the issue to content author to check and update the document as appropriate.


M3-1515 Create a unified volumes table- Styling Updates

Updated the styling based on view, so the columns will be wider on linodes/id/volumes view than they are on /volumes (as they presently are today). I also updated the action menu padding, it was inheriting a new MUI style that was messing up alignment throughout the app.

Coverage decreased (-0.003%) to 30.874% when pulling dcbcdcfd4076216c339d45bbdecb09f375fa2b28 on WilkinsKa1:M3-1515-styling-volumes-tables into 5f0fc6fd6e81fd3521e37126f94aa534326578f0 on linode:feature/unified-volumes.


trailing space after the cross reference on PDF output

Hi @leovan, thanks for developing the pseudocode extension.

For the PDF output, there is a trailing white space after the cross-reference and before the period (.). I was wondering if you are able to fix it? You can see it from the figure you shared in the Readme.

I tried the EPUB output, but the pseudocode is not rendered with EPUB. Oddly, the cross-reference from different files works on EPUB. I am not sure if it may give you a hint to fix the bug for HTML, where the cross-reference from different files does not work.

FYI, there is a discussion on Quaro-cli related to this extension. it would be great if you could fix the bugs and make this repo to be an official ext for  Quaro.
https://github.com/quarto-dev/quarto-cli/discussions/3049

The first bug will be fix soon. Filter is not fully tested with EPUB output, so it may not work with it. PR is welcome to make this filter compatible with EPUB output.

Thanks, yes, the first bug is FIXED!


Make all e2e test pass. Add search e2e tests

JIRA issue: https://digital-engagement.atlassian.net/browse/SDPA-
Changed

Fixed timezone not being set properly in CI
Adds site search tests
Add elasticsearch smoke test
Fix CI environment variables loaded by Ripple context
Fix failing authenticated content tests - skip tests that rely on auth content taxonomy setup. Adds tideadmin task for creating roles if required
Fix event tests
Configure CI to run e2e tests in parallel
Adds cypress dashboard service

Screenshots

@dylankelly Is there any changes need to be added in create app update script?


lua: print output into console window instead of REPL window?

Currently when I'm using lua the print() output goes into the REPL window.
I don't want that.
Instead I want the output to appear in the "DAP console" window.

I have the same issue using the lldb-vscode debugging. any tips on how to set this up?

Set console = "integratedTerminal" in your DAP configuration, e..g. for python
  {
    type = "python",
    request = "launch",
    name = "Launch file",
    program = "${file}",
    console = "integratedTerminal",
  }

unfortunately that does not seem to work for me. I added it as followed, but still get my stdout and stderr output in repl window.
dap.adapters.lldb = {
  type = "executable",
  command = "lldb-vscode"
}

dap.configurations.c = {
  {
    name = "runtime",
    type = "lldb",
    request = "launch",
    program = "./runtime",
    cwd = "${workspaceFolder}",
    console = "integratedTerminal",
  }
}

Setting "integratedTerminal"in mylaunch.json` actually fixed that problem for python logs. Still doesn't work for Go stdout printing though.

I am experiencing this in Python as well as C. I have never seen stdout in the console element, but it does consistently display in the repl.

I experience the same error using nvim-dap-ui with the golang delve debugger. Debugger standard out prints to the repl window.

@rcarriga I could not succeed with your configuration and Python. Maybe there is something wrong with my configuration?
require("dapui").setup()
local dap, dapui = require("dap"), require("dapui")
dap.listeners.after.event_initialized["dapui_config"] = function()
  dapui.open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
  dapui.close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
  dapui.close()
end
dap.configurations.python = {
  {
    type = "python",
    request = "launch",
    name = "Launch file",
    program = "${file}",
    console = "integratedTerminal",
  }
}

On this screenshot we can see that the Pytest output is written in the repl buffer in the bottom right:

Ah, I just found something. As I run nvim-dap with neotest, I had to adjust the config in neotest:
require("neotest").setup({
    adapters = {
        require("neotest-python")({
            dap = {
                django = true,
                jinja = true,
                justMyCode = true,
                showReturnValue = true,
                console = "integratedTerminal",
            },
        }),
    }
})


x/crypto/bcrypt: API to check hash format

golang.org/x/crypto/bcrypt [1] does not provide an official API to verify that the hash format is good one. The current sources indicates [2] that one can use bcrypt.Cost() as that parses and verifies the whole hash string. But the documentation does not reflect that a successful return from the function indicates a valid hash. Also the documentation implies that bcrypt.ErrHashTooShort can only be returned from CompareHashAndPassword when the Cost function can also return it.
It would be nice to have an explicit API to check hash format and perhaps check that it was created by older version so a password change can be scheduled in such case.
[1] - https://godoc.org/golang.org/x/crypto/bcrypt
[2] - https://github.com/golang/crypto/blob/6c586e17d90a7d08bbbc4069984180dce3b04117/bcrypt/bcrypt.go#L118

Yes, this would be very helpful


Feature/mockup

Please pass travis

Pull Request Test Coverage Report for Build 472

6 of 25 (24.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.6%) to 93.834%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

bddrest/mockupserver/init.py
1
20
5.0%

Totals

Change from base Build 463:
-0.6%

Covered Lines:
1674

Relevant Lines:
1784

💛  - Coveralls


[ID] New users aren't shown under the users tab after being added

Go to users tab
add a new user
click OK

Expected: new user appears on the list
Actual: nothing appears on the list, even upon refreshing. And when I try to recreate the same user again, I get a message saying that the user already exists, though I cannot see them.

superseded by #102


Ability to pass a cabundle to connect Oauth provider in JWTRule

When defining a JWTRule there doesn't seem to be a way to specify a cabundle to be used when connecting to the Oauth issuer to get the public keys.
In my use case the Oauth provider is internal and signed with an internal CA, so the cabundle is not "well known".
When I run envoy with this JWTRule, I get this error:
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/mixer/filter.cc:39] Called Mixer::Filter : Filter
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/mixer/filter.cc:146] Called Mixer::Filter : setDecoderFilterCallbacks
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/jwt_auth/jwt_authenticator.cc:82] Jwt authentication starts
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/jwt_auth/jwt_authenticator.cc:243] Jwt authentication completed with: Failed to fetch public key
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/jwt_auth/jwt_authenticator.cc:246] The value of allow_missing_or_failed in AuthFilterConfig is: true
[2020-04-04 01:37:32.215][21][debug][filter] [src/envoy/http/jwt_auth/http_filter.cc:55] JwtVerificationFilter::onDone with status OK

I believe it's due to the fact that envoy cannot validate the Oauth provider issuer certificate.
Describe the feature request
Add a field to be able to pass the CAbundle inline or by referencing a file. The latter would then require the ability to mount configmaps and/or secrets when running in kubernenets containing such cabundle.
Describe alternatives you've considered
passing the keyinline, however, this approach will make the system less "dynamic".
Additional context

This should be implemented in https://github.com/istio/istio/pull/17176, could you try if it solves the issue?

@raffaelespazzoli could you check https://github.com/istio/istio/issues/22733#issuecomment-610102082 and let us know if the problem still exists?

Closing as this is assumed fixed by https://github.com/istio/istio/pull/17176 and has no response for half a year. Thanks!


Adds local constant for the localization area key

@LottePitcher Nothing major, I'd noticed the multiple "adminOnlyProperty" strings, so thought I'd move it to a local constant.

@leekelleher makes sense, thanks!


ListView sometimes doesn't show all items

This bug appears always, when the ui refreshes and the listview is not scrolled to top, even in the Flutter Gallery App.
Steps to Reproduce
VIDEO

Start the Flutter Gallery App and go into the "Leave-behind list items" demo
Scroll to the bottom and delete an item
Reset the list (setState won't be called, so you have to delete a second item or undo the deletion)
Scroll to top and you won't be able to see all items, even when they are in the list (object) and should be shown

Flutter Doctor
[√] Flutter (on Microsoft Windows [Version 10.0.15063], locale de-DE, channel master)
• Flutter at E:\Flutter\flutter
• Framework revision e3bab988ce (5 hours ago), 2017-06-02 13:15:49 +0200
• Engine revision 75c74dc463
• Tools Dart version 1.24.0-dev.3.0
[√] Android toolchain - develop for Android devices (Android SDK 25.0.3)
• Android SDK at E:\Android\sdk
• Platform android-25, build-tools 25.0.3
• ANDROID_HOME = E:\Android
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version: OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[√] Android Studio (version 2.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Gradle version 3.3
• Java version: OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[√] IntelliJ IDEA Community Edition (version 2017.1)
• Dart plugin version 171.4424.63
• Flutter plugin version 14.0
[√] Connected devices
• Z2 Pro • 69f89783 • android-arm • Android 6.0.1 (API 23)

This sounds very much like https://github.com/flutter/flutter/issues/9665 and possibly https://github.com/flutter/flutter/issues/8090

#9665 sounds a bit like that, sadly i can't test it on IOS. Something to point out, the whole list blinks on setState, when this bug happends
#8090 seems to be a different issue, because my issue won't be caused when fast scrolled and only, if you call setState at the bottom of the ListView and a change was made previously

I have tested this issue a little bit more and here is a little workaround for the Gallery App:
List<LeaveBehindItem> testList=
    new List<LeaveBehindItem>.generate(15, (int index) {
  return new LeaveBehindItem(
      index: index,
      name: 'Item $index Sender',
      subject: 'Subject: $index',
      body: "[$index] first line of the message's body...");
});

void initListItems() {
  leaveBehindItems.clear();
  leaveBehindItems.insertAll(0, testList);
}

So what i observed was, creating a new list or modifying "testList" in my example will trigger the wrong behavior, but as long, as you don't change "testList" it will work as expected.
I tried to implement a similar workaround in my app, but that's not working, because i don't have a non changing list of items.

Once you've passed a list to a ListView, you cannot change it again. If you want to change the children, you have to create a new list and pass that in.
I'm not sure how or where to document that.

@Hixie
For my understanding i already do that, maybe im missing something, so here is the code, that leads to this misbehavior (on dismiss):
Widget buildBody(BuildContext context) {
    User.currentList.shoppingItems?.sort((a, b) => a.id.compareTo(b.id));
    User.currentList.shoppingItems?.sort(
        (a, b) => a.crossedOut.toString().compareTo(b.crossedOut.toString()));

    var mainList = User.currentList.shoppingItems.map((x) {
      var lt = new ListTile(
        title: new Row(children: [
          new Expanded(
              child: new Text(
            x.name,
            maxLines: 2,
            softWrap: true,
            style: new TextStyle(
                decoration: x.crossedOut
                    ? TextDecoration.lineThrough
                    : TextDecoration.none),
          )),
        ]),
        leading: new PopupMenuButton<String>(
          child: new Row(children: [
            new Text(x.amount.toString() + "x"),
            const Icon(Icons.expand_more, size: 16.0),
            new SizedBox(height: 38.0), //for larger clickable size (2 Lines)
          ]),
          initialValue: x.amount.toString(),
          onSelected: (y) => shoppingItemChange(x, int.parse(y) - x.amount),
          itemBuilder: buildChangeMenuItems,
        ),
        onTap: () => crossOutMainListItem(x),
      );

      return new Dismissible(
        key: new ObjectKey(lt),
        child: lt,
        onDismissed: (DismissDirection d) => handleDismissMain(d, x),
        direction: DismissDirection.startToEnd,
        background: new Container(
            decoration:
                new BoxDecoration(color: Theme.of(context).primaryColor),
            child: new ListTile(
                leading: new Icon(Icons.delete,
                    color: Theme.of(context).accentIconTheme.color,
                    size: 36.0))),
      );
    }).toList(growable: true);

    var lv = new ListView.builder(
      itemBuilder: (c, i) => mainList[i],
      itemCount: mainList.length,
      physics: const AlwaysScrollableScrollPhysics(),
    );

    return new RefreshIndicator(
      child: lv,
      onRefresh: _handleMainListRefresh,
    );
  }

here is my dismiss method (reduced to the important part, rest is server communication):
 void handleDismissMain(DismissDirection dir, ShoppingItem s) {
    var list = User.currentList;
    setState(() => list.shoppingItems.remove(s));
  }

Weird. Does the same thing happen with ListView (rather than ListView.builder)?

By the way, the code above would be more efficient if you didn't create the list each time, but just provided a builder than actually built the children on the fly. If you create the list in advance like in the code above, you might as well use a regular ListView constructor.

ListView doesn't work either, i have used it before i switched to ListView.builder and i tried it again, same result.
The code above looked way different before i encountered the bug, but i tried to find a workaround. When i first started to modify this code, i had a list of widgets, where i added and deleted the items, so exactly the thing, you shouldn't do.
But when you don't find another bug in my code, it seems like it's not just some documentation changes

Would you mind creating a one-file flutter project that shows this problem? (i.e. flutter create repro, then edit the main.dart file to contain whatever is needed to reproduce it)

I will try to reproduce this issue in one file.
I tried something different (again) and with a CustomScrollView it seems to work as expected, so this is the changed and now working code:
    var lv = new CustomScrollView(
      slivers: [
        new SliverFixedExtentList(
            delegate: new SliverChildBuilderDelegate(
                (BuildContext context, int index) {
              return new Container(
                alignment: FractionalOffset.center,
                child: mainList[index],
              );
            }, childCount: mainList.length),
            itemExtent: 50.0)
      ],
      physics: const AlwaysScrollableScrollPhysics(),
    );

So the problem is basically just the way you set the keys -- you are making each row have a unique key, which changes each time you build the list. (It's unique because it's equal to an object, the ListTile widget, that you just created that very build.) To the underlying code it's as if you were generating an entirely new list each time. For some reason, the code can't handle that. We'll have to fix that.
But in the meantime, doing that is clearly wrong. It's why, for instance, when you dismiss two rows at once, the moment you remove the first item, the other item's dismissal state is lost -- from the framework's perspective, each time you build all the rows change, and so the one that was dismissing is gone and replaced by a new one that isn't.
The fix is simple, change ObjectKey(lt) to ValueKey(x).

Okay that's good to know and that really fixed my problem, thank you very much.
The only question left for me is, why could the CustomScrollView handle that?

Yeah I'm not really sure what's going on. The CustomScrollView+SliverList uses the same code as the ListView (ListView really is just a wrapper around the other two). There's definitely a bug here.

I think what's going on is that when the key is a UniqueKey, when we rebuild, we add the child but don't remove it straight away, and then we end up deciding that we have too many children so we remove the earlier ones but we don't update the scrolling window or something. Definitely a bug with how SliverMultiBoxAdaptorElement interacts with the underlying render objects.

Weird, somehow we end up removing these nodes in the collectGarbage() step.

This is not on our short-term priority list. Moving to next milestone.

I tried to reproduce with https://github.com/susch19/Flutter-ListView-Bug and couldn't see a bug
but I'm not sure what the wrong behavior actually looked like.

In steps to reproduce i linked a video showing the bug with the flutter gallery.
Maybe it was fixed in the meantime and this issue can be closed. I will look into this in the next days

@susch19 the video is quite fast and I don't know what exactly to look for.
Would be great if you could check.


Fail planning module when it got default routing request

System information

OS Platform and Distribution (e.g., Linux Ubuntu 14.04): Ubuntu 16.04 LTS
Apollo installed from (source or binary): binary
Apollo version (1.0, 1.5, 2.0, 2.5, 3.0): 3.0

Steps to reproduce the issue:

launch dreamview with canbus, planning, routing, localization;
choose SynnuvaleLoop map;
start car simulator which take ControlCommand message and produce Chassis, Gps and Imu  messages;
put car in simulator those way that car position is set on the road;

send default routing request POI: 1195 office

Expectations:

generation and visualization planning trajectory;
generation ControlCommand;
car movement;

Real behaviour:

in planning.ERROR:

E0822 14:29:35.645706 22723 frame.cc:137] Failed to create reference line
E0822 14:29:35.645731 22723 frame.cc:361] Failed to init reference line info
E0822 14:29:35.646157 22723 planning.cc:85] failed to init frame:PLANNING_ERROR: failed to init reference line info
E0822 14:29:35.650450 22723 planning.cc:378] PLANNING_ERROR: failed to init reference line info

in attached to planning VSCode debugger:

crash planning module

Additional information:
ApolloAuto is started on CPU Intel(R) Core(TM) i7-3610QE CPU @ 2.30GHz.
PCL library is recompiled according to instruction. Also I had to fix some compilation issues in PCL branch 1.7.2.

Are you using sim_control? If not, you will need to provide some localization information to the ego vehicle in some way, for example, by playing a rosbag.

@lianglia-apollo I'm not using simcontrol. I'm using my own software for simulation. I provide Gps, Imu, Chassis messages and waiting for ControlCommand. Gps, Imu, Chassis data is accepted by apollo's modules fine.

My suggestion is to provide localization information, add and check the output of planning logs to debug.

@lianglia-apollo, you mean I should provide localization info right here? I can go step-by-step in VSCode debugging up to line with error and everything looks good in debugger.
Also I reproduce this situation on PC with CPU Intel i7-8700 CPU @ 3.20GHz and  everything works fine.

To provide proper Gps and Imu msg for the localization module is very tricky. Take a look of data_parser.cpp, and make sure you set orientation properly. Currently the code is hard-coded to follow Novotel body frame definition somehow. To my understanding, the quaternion is constructed incorrectly (yaw angle should from East instead of North). The interesting thing is that the 90 degree is re-considered in computing heading from quaternion in common::math::quaternion.

@jilinzhou Thanks a lot, I will check my quaternion math. Actually I provide not gnss driver but replace localization module cause I generate data in ros in binary format and I have no idea to place this into gnss driver scheme.

Hi @gladijos, have you solved this problem?

@lianglia-apollo I am having a similar issue when I am using SimControl.
Running Apollo 3.0 on Ubuntu 14.04.
Here are the steps I am taking:

Start dreamview using bootstrap.sh script.
Choose the Mkz example vehicle.
Turn on SimControl. I see Localization and Chasis modules running.
I turn on the Planning module.
I turn on the Routing Module.
From default routing I click on the Reverse Early lane change POI.
The vehicle doesn't move and I see the planning module run for 7 seconds and reset and this continues.

The planning module gives me the same errors:
E0822 14:29:35.645706 22723 frame.cc:137] Failed to create reference line
E0822 14:29:35.645731 22723 frame.cc:361] Failed to init reference line info
E0822 14:29:35.646157 22723 planning.cc:85] failed to init frame:PLANNING_ERROR: failed to init reference line info
E0822 14:29:35.650450 22723 planning.cc:378] PLANNING_ERROR: failed to init reference line info
ApolloAuto is started on Intel® Core™ i7-2600 CPU @ 3.40GHz

@gladijos Hope our answer resolved your question. We will close the issue for now. If you have any additional question, please feel free to open a new issue.

@lianglia-apollo I am having a similar issue when I am using SimControl.
Running Apollo 3.0 on Ubuntu 14.04.
Here are the steps I am taking:

Start dreamview using bootstrap.sh script.
Choose the Mkz example vehicle.
Turn on SimControl. I see Localization and Chasis modules running.
I turn on the Planning module.
I turn on the Routing Module.
From default routing I click on the Reverse Early lane change POI.
The vehicle doesn't move and I see the planning module run for 7 seconds and reset and this continues.

The planning module gives me the same errors:
E0822 14:29:35.645706 22723 frame.cc:137] Failed to create reference line
E0822 14:29:35.645731 22723 frame.cc:361] Failed to init reference line info
E0822 14:29:35.646157 22723 planning.cc:85] failed to init frame:PLANNING_ERROR: failed to init reference line info
E0822 14:29:35.650450 22723 planning.cc:378] PLANNING_ERROR: failed to init reference line info
ApolloAuto is started on Intel® Core™ i7-2600 CPU @ 3.40GHz

Have you solved your problem? I met the same problem, helping!


Handling the "/me" status in the message preview.

Fixes #2115

Automated message from Dropbox CLA bot
@TigorC, it looks like you've already signed the Dropbox CLA. Thanks!

@TigorC Would you mind updating/rebasing this branch so it's easier for me to test? Thanks!

I'm not convinced this implementation is correct.


fix(Global Catalog): regen code from new API definition

PR summary
This PR contains a re-gen of the Global Catalog service due to recent changes in the API definition, along with a minor change to the integration test to accomodate it.
PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] New tests
[ ] Build/CI related changes
[ ] Documentation content changes
[ ] Other (please describe)

What is the current behavior?

What is the new behavior?

Does this PR introduce a breaking change?

[x] Yes
[ ] No

Other information

:tada: This PR is included in version 0.5.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Add policy rules to verify RPM sig keys

Ref: EC-842

In draft because https://github.com/release-engineering/rhtap-ec-policy/pull/36 must be merged first.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (ef32a68) to head (4e2d826).

Additional details and impacted files

@@            Coverage Diff            @@
##              main     #1125   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          115       117    +2
  Lines         5791      5857   +66
=========================================
+ Hits          5791      5857   +66

Files with missing lines
Coverage Δ

policy/release/rpm_signature.rego
100.00% <100.00%> (ø)

policy/release/rpm_signature_test.rego
100.00% <100.00%> (ø)

Dependencies merged. Moved out of draft.


Syntax checking error

From<EMAIL_ADDRESS>on February 18, 2012 00:05:13
[What steps will reproduce the problem?]
Produce a source code file of this form (so nothing outside the following scope):
"
Form 1:
if (TRUE)
{
#...
}
if (T == T)    #Syntax checker failure at this line.
{
# ...
}
"
Form 2:
"
if (TRUE)      #Syntax checker failure at this line.
{
# ...
}
"
[What is the expected output? What do you see instead?]
I expect verification of this correct syntax. Instead a syntax error is reported.
[What version of the product are you using? On what operating system?]

Intellij IDEA 11.0.2
R4Intellij 0.6
modern Linux

[Please provide any additional information below.]
Original issue: http://code.google.com/p/r4intellij/issues/detail?id=29

label:pn


chore: add ci release

Codecov Report

Merging #160 (48345b2) into master (16204e0) will increase coverage by 0.88%.
The diff coverage is n/a.

:exclamation: Current head 48345b2 differs from pull request most recent head c144067. Consider uploading reports for the commit c144067 to get more accurate results

@@            Coverage Diff             @@
##           master     #160      +/-   ##
==========================================
+ Coverage   93.89%   94.77%   +0.88%
==========================================
  Files          16       17       +1
  Lines         180      191      +11
  Branches        0        2       +2
==========================================
+ Hits          169      181      +12
+ Misses         11       10       -1

Impacted Files
Coverage Δ

...scala/zio/spark/sql/RelationalGroupedDataset.scala
100.00% <0.00%> (ø)

core/src/main/scala/zio/spark/sql/Dataset.scala
98.08% <0.00%> (+0.17%)
:arrow_up:

core/src/main/scala/zio/spark/rdd/RDD.scala
100.00% <0.00%> (+20.00%)
:arrow_up:

Continue to review full report at Codecov.

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


feat(aws-cloudfront-apigateway-lambda): require explicit authentication type

Issue #, if available:
Closes #1043
Description of changes:
Check incoming props to require explicit auth type
Update all integration tests from no auth to custom auth
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: 7829fb39e9d9945f3656b573a7b73bdc168e8fe1
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: beb316e2882c04ce9de1a29b21d6567d31a5c8ab
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: 8ae588b9a21395c2f4891e8ef6ed94e33eab58f1
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


install editable package in codespace

Why are these changes needed?
The flaml package in the current codespace is the pypi version. Developers need to run pip install -e themselves. We should update the devcontainer.json and Dockerfile to install the editable package in codespace.
When working on this PR, test_forecast keeps breaking due to dependency. So, more changes are added to pass the test.
Related issue number
Closes #825
Checks

[x] I've used pre-commit to lint the changes in this PR, or I've made sure lint with flake8 output is two 0s.
[ ] I've included any doc changes needed for https://microsoft.github.io/FLAML/. See https://microsoft.github.io/FLAML/docs/Contribute#documentation to build and test documentation locally.
[ ] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

@int-chaos there is a test error for the panel dataset forecasting. I don't know how to fix it. Could you please help? This is an urgent issue as it blocks all PRs from merging.


Use tempfile to create the temporary image

This should ensure there are no conflicts in the event that two images
are being built simultaneously.  Let me know what you think.

I should note that using tempfile the temp file is cleaned up with garbage collection but I intend to test different methods and what happens when an error is raised.

That was my first thought but the file is created by default in /tmp. The idea there was to create it in the same place as the rest of the images reside, where I suppose there's enough space. Maybe generating the name with some random number is enough. I'll have to fix the path before that. Probably a temp_image = repo.image_path(temp_name) could do the trick.

I found out that the directory can be specified. Thanks!


Upgrade Node20 to Node16 (will be removed spring 2024)

Were you able to test this like mapi-action@cd6de694b46ceba64eac5e1673c480eb98322600

Tested over at https://github.com/Ross-ForAllSecure/mapi-action-test/actions/runs/8792111837/job/24127648432 . lgtm.


Erroneous CursorStateError

python-arango==4.2.0
If the collection has fewer documents than the batch size limit, the collection.all() rasies CursorStateError('cursor ID not set').
If the size of the result set is smaller than the batch size the lack of a cursor ID is expected and should, therefore, be ignored and the results returned.
File "/usr/local/lib/python3.6/site-packages/arango/cursor.py", line 292, in close
    raise CursorStateError('cursor ID not set')
arango.exceptions.CursorStateError: cursor ID not set

I released a fix in python-arango 4.2.1. Please try it out and feel free to reopen this ticket if you have any other questions. Thanks again!

Confirmed. Thanks for getting to it so quickly.


Console logs in non-local timezone

Looks like console logs are in UTC, even though defaults.settings.timezone=Australia/Melbourne

Also the message in the first audit line is confusing.  Says "start => it's 00:16 but availability is 1100-1630"  (talking in two different timezones in the same sentance)


package is now available for installation on NixOS\nixpkgs

package can be installed by a
"environment.systemPackages = [
pkgs.tplay
];"
in your configuration.nix

well done!


Autostrafe fix?

I believe some values for the autostrafe were not right, and i feel this change fixes autostrafe cause it was kind of wonky before

Thanks!

i think the original purpose of the delta check was to not make the autostrafe too smooth and have VACnet determine it was a robot rather than somebody pressing the keys themself, if you havent encountered any vac auths or bans while using the change then the original purpose is probably obsolete.

i think the original purpose of the delta check was to not make the autostrafe too smooth and have VACnet determine it was a robot rather than somebody pressing the keys themself, if you havent encountered any vac auths or bans while using the change then the original purpose is probably obsolete.

I mean i'm kind of new to c++ in a way which kind of makes me question if i'm right or wrong, but like i haven't necessarily gotten any vac auth errors, if i am wrong and people do get then, i apologise.

i dont think you can get vac auth from a legit autostrafe, like vac auth comes when you flick alot on casual,deathmatch,etc

valve probably isn't smart enough to check if your velocity always follows your view angle but if they are the slightest bit competent then it could become a detection vector in the future.


alok27a-Animated Splash Screen Added & Text color acc to theme

Text not visible in start activity.
Solved it by:-
Text Color changes according to the theme in mobile phone
[✔] I have read the Code Of Conduct.
[✔]I have followed all the steps of submission properly.

Animated Splash Screen Added
Libraries added

Lottie Animation
New features Incorporated
Animated Splash screen
[✔]I have read the Code Of Conduct.
[✔]I have followed all the steps of submission properly.

@ak523 Can u pls review it

@alok27a  I have reviewed your changes and incorporated it into the app. Thanks for contributing😄.
Happy coding!🥳


uploads should be overwritten on deploy

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.17%. Comparing base (f004411) to head (3471041).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #18   +/-   ##
=======================================
  Coverage   94.17%   94.17%
=======================================
  Files           5        5
  Lines         326      326
=======================================
  Hits          307      307
  Misses         19       19

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


How to change the expiration per token

I just installed jwt and it is going well so far.  I need some tokens to never expire (i.e. set the expire date 100 years from now) and I need some to expire after say 2 hours.
How can I put an expiration on a per token basis?
I imagine override the encode_handler?
Does anyone have a working example of dynamically changing the expiration?
Thank you!
p.s. I apologize, I did not see issue # 311 before I posted this.

Duplicated of #311


Update README.md

HACKTOBERFEST 2022 Submission.
Opened the first pr on web-snap.

Hi. I appreciate your work, but what is this?
Did you actually look at what this project is doing ? web-snap has absolutely nothing to do with Selenium, or Python. Why would you want to add a random article about Selenium in a project that has absolutely nothing to do with that ? You can add that kind of documentation on your blog, if you want.


Persistent, sorted, filterable Action Center/Notification history

Summary of the new feature/enhancement
The current Action Center is quite often frustratingly useless. Notification items may pop up and I may be in the middle of something and not look quick enough, but then it is no-where to be seen in the Action Center, or if it does show up, I click it and nothing happens(when it normally would open its parent application or similar).
I have been looking far and wide, but I cannot seem to find any sort of persistent Action Center / Notification history that can be reviewed even if an item is dismissed, or doesn't show up in the Action Center. At this point, even an ongoing text only log file would be better than nothing, which often feels like what I have now.

Proposed technical implementation details (optional)

What would be great would be either an icon within the Action Center, or a right-click context menu on the Action Center taskbar icon which reads "View History" or similar, which brings up a window which allows you to view all past notifications, either as a list sorted by date received, perhaps with a side menu allowing you to filter notifications by their originating source application or service.

Sounds like you would be better off giving Feedback for the native Windows OS function.
I assume you tweaked the Settings for Action Center already?
What version (build number) of Windows are you using?

v2004 19041.264
Though, I have submitted feedback on multiple occasions, adjusted every setting I could find, tried doing some Action Center repair tasks I came across. etc.  This has been occurring for years throughout many different versions, it is nothing new.
While fixing the action center would be nice, even if it worked perfectly, I would still really like to have a running notification history as mentioned in my request,

It's not as huge a deal anymore. I discovered that using the Windows Universal API and was able to fairly easily snag all notifications and output them to json. I will just figure out what I want to do with them after that, I mostly just wanted to have them for the time being.

There's also this, which does what I need. Placing it here in case someone else runs across this thread:  https://apps.microsoft.com/detail/9mzf9dmhnh3p


TABL: SAPGUI data preview doesn't work when opened from abapGit

If I navigate to a transparent table (SE11) from abapGit and then go to 'Contents' (SE16) nothing happens and the window closes.

Seems only to happen for tables for which its selection screen weren't called once after their creation: I created a new table and navigated from abapGit to the transparent table and tried to call the selection like you did and the window just closes itself. Found out that after COMMIT WORK  in form "ausgeben" the report just exits:
  insert report repname from report.
  update progdir set rstat = 'S'
                   unam  = 'SAP*'
                   cnam  = 'SAP*'
                   edtx  = 'X'
                   rload = sy-langu
                   occurs = '1'
                   subc  = '1' where name = repname and state = 'A'.
  commit work.

After that I called SE11 manually, clicked the "content" button and from that moment on the selection screen opened via abapGit without error.

Will apply a fix very soon: Figured out that calling RS_TOOL_ACCESS instead of ABAP4_CALL_TRANSACTION for SE11 fixes the bug.


Roblox

Hi, is there any way to put it in Roblox? I tried startautoclicker "Roblox" -1200,770 300000 SPFS but all it did was put out an error.
maybe it was cause I had it on my 2nd monitor?

VAC >> Something went wrong when trying to start the autoclicker!
System.Exception: There was no process named Roblox, no auto clickerstarted.
at VirtualAutoClicker.AutoClicker.Init() in C:\Projects\virtual-auto-clicker\src\VirtualAutoClicker\AutoClicker.cs:line 52
at VirtualAutoClicker.Commands.StartAutoClicker.Start(String proposedAcName, String processName, Coordinates coordinates, Int32 interval) in C:\Projects\virtual-auto-clicker\src\VirtualAutoClicker\Commands\StartAutoClicker.cs:line 80

Hi, please open your Task Manager and double check the details tab.
It might be that the title of the tab and the name of the process is not the same.


Target missing

Hi,
It's a great plain editor, I like it because of its plainness.
But can you add a "target" option when you insert a link, because now the page always opens in the same window.
Thnx a lot!
Davy

Unfortunately, execCommand API -- used in Cazary when create link -- doesn't support target property.
When Cazary supports target, it's needed to be implemented without using execCommand. So code might be complex (since IE8 doesn't support surroundContents, I'll have to implement by own efforts...)
But, surroundContents-like function might be useful. I'll try to implement!


did you use the repo I linked to or did you use the files I attached in a zip?? If you used the zipped files don't, use the linked repo instead

          > did you use the repo I linked to or did you use the files I attached in a zip?? If you used the zipped files don't, use the linked repo instead

Sorry，I git the wrong repo branch.
Now it can be compiled without errors,I will test it later.
Originally posted by @jd3096-mpy in https://github.com/lvgl/lv_binding_micropython/issues/227#issuecomment-1356641632

I'm stuck here (still has many compilation errors) and I'm glad to see someone is OK, and I appreciate if someone can teach me how to do it without any compliation errors for the esp32-s3.  I'm good at assembly , C, Arduino programming but just get started how to use Micropython & LVGL. I 'm not familiar with (or I don't know) the binding between lv_micropython and the link  from kdschlosser. Per kdschlosser, can't use .zip file , then how to combine both of lv_micropython & lv_binding_micropython in one directory without .zip file. Appreciate if someone can give me steps by steps like, thanks in advance
git clone https://github.com/lvgl/lv_micropython.git
cd lv_micropython
git submodule update --init --recursive lib/lv_bindings (this step will download data from lv_micropython, not from   how to change ? )
Next you should build mpy-cross
make -C mpy-cross
Michael

For questions and help please use the forum: https://forum.lvgl.io/c/micropython/8


Reduce binary size by generating fewer strings

Closes #277.
This cuts the size of the .rlb by around 500kb. Not sure how that translates to compiled binary sizes.

r+

r-, leaves a bunch of unnecesary stuff lying around, patch incoming...

sure thing.

This shrinks the rlib to 8.1M and the so to 5.9M

Nice! Does this work? I thought it would not be able to call the function if it was transmuted, because the signature was different?

It can call whatever it wants :) There will indeed be extra arguments on the stack/in registers, untouched, but they are all primitive C types and it's just going to panic anyway, so it doesn't matter.

nice!

we need to rebase this on top of the directory restructure, btw


feat: start some files

Description:
This pull request introduces the initial code structure and architecture for MonkBuilder, a tests initial files
Changes Made

AggregationFuncs:

Included some initial changes Group, Project, Sort, Match, Group e Build.

Functions Class:

Created Functions Class where is set the initial functions of the most common aggregation

Testing:

Introduced the tests directory and added initial unit tests for classes and functions.

Formatter Functions:

Included Prettier on this PR.

Closes #3


As an admin, I want to add and edit collection descriptions so that I can help site users understand the collection and find related materials.

Notes for testing

There should be a description on collections
You can edit it, and also add bolding and italics to fonts
These will display on the 'View Collection' page with formatting intact.

Notes for development

Needs to support for basic formatting
Suggest tinymce with fairly minimal set of html fields/styles
make sure description displays in list view with formatting

Both superuser and archive manager were able to add collection description, which is view able on the user site with proper formatting (italics, bold, etc.).


Remove/change xor(seed, epoch) in shuffling

What is wrong?
Spec issue: https://github.com/ethereum/eth2.0-specs/issues/550
Spec PR: https://github.com/ethereum/eth2.0-specs/pull/552
How can it be fixed
Update generate_seed:
    return hash_eth2(
        get_randao_mix(state, epoch - SEED_LOOKAHEAD) +
        get_active_index_root(state, epoch) +
       epoch.to_bytes(32, 'big')
    )

Pending on #256

looks like this is unblocked so i can address it


visual comparison of raster diffs using CSS

CSS image diffs! Could be an interesting way to show subtle differences between different masking techniques.
http://franklinta.com/2014/11/30/image-diffing-using-css/
@dnomadb - this might apply more generally to raster-tester.

This works 🎉  Nothing actionable.


code cleanup: removing unused namespaces

This diff removes unused namespace imports in order to declutter autocomplete.

Not sure why the native tests on MacOS are failing. Can't make out a change in this PR that should cause this 😕

@MovGP0 -- those error are intermittent. I don't understand how they can be, since they don't seem like the kind of thing that would be, but they are. I restarted the job -- we'll see how that goes.

@MovGP0 -- not that you are a contributor, I would like to ask you to introduce yourself in the discussion thread for that:
https://github.com/dotnet/TorchSharp/discussions/333
It's optional, and not all contributors have done it, but it's nice for people who work on TorchSharp together to know a little bit about each other, and it's nice for the community of users to know a little bit about the people who are putting it together.
Thanks,
Niklas


Chaskey is never claimed to be a cipher.

While Chaskey is it self constructed as CMAC/OMAC with EvanMansour block cipher, afaik it was never claimed its building block (EM block cipher) is safe to be used as standalone building block for encryption. More over, cryptoanalyzes have sentences about "attaker has no way for chosen ciphertext attack".
May be I'm missing something? Can you point on investigations?

Yes, you right. Chaskey is a MAC algorithm and using its block cipher for other encryption modes is a trade-off for the applications that cannot afford standard encryption algorithms


Could yarn.lock update PRs include the dependency they come from?

Heya,
Dependabot is awesome!
I wonder if when a PR is raised relating to a yarn.lock file, the message could also indicate which dependencies / devDependencies in the package.json this relates to?
This PR tells me just about the yarn.lock file. If I knew which package this came from up front that would be helpful / interesting. Also, I'm likely to attach greater urgency to shipping a new release if this is a  dependency rather than a  devDependency
https://github.com/TypeStrong/ts-loader/pull/947

I created a reusable workflow that does this:
https://github.com/pangaeatech/.github/blob/main/.github/workflows/annotate-npm-dependencies.yml
See also #2702

Closing as a duplicate of:

https://github.com/dependabot/dependabot-core/issues/2125


Redundant errors in html-checker

connector: chrome and jsdom
url: www.gmail.com
rule: html-checker
About 366 errors were reported from html-checker.

But running https://www.gmail.com in https://validator.w3.org/nu/ returns only 4 errors. For this particular page, the html returned from our connector seems to be different from the content fetched directly by the validator using the url.

But running https://www.gmail.com in https://validator.w3.org/nu/ returns only 4 errors. For this particular page, the html returned from our connector seems to be different from the content fetched directly by the validator using the url.

I believe this is because the w3c validator only fetches the url and that's all, while the connectors execute some JS on that page and then send the HTML to the validator. You have the option to check the source the validator is analyzing, if you compare it to the source of the page once it is loaded you will see it is different so IMO, the results of sonar are more accurate.

In any case, maybe we should do some changes to the validator rule as it can generate a lot of noise.
Some ideas (not exclusive):

Not be a default one
Report errors grouped if possible
Just report one error and link to the results page

@sonarwhal/contributors what do you think?

@molant What do you think about the following?

By default we group the errors by error messages, so users have a rough idea about what html-checker complains about.
The user is allowed to enable showing the details, so if they are interested in the line/column numbers and etc for the html-checker errors, they can configure to do so.

The user is allowed to enable showing the details, so if they are interested in the line/column numbers

so we will have an option for this rule? Something like the following?
"html-checker": ["error", {
  "report": "compact|detailed"
}]

I like that idea. We need to see how the grouping would be like because sometimes is very specific ("you can't use attribute ATTRIBUTE in here". Will be nice if they had an error id or similar.
Also I still have mixed feelings about having it on by default.

Yes.

so we will have an option for this rule? Something like the following?

It doesn't provide error id, but returns the location information and code snippet for each error. I don't think they include location information inside the error messages, but sometimes it will refer to the location like Attribute XX is not allowed at this point/in this context.

Will be nice if they had an error id or similar.


Support WebGL build

See https://speckle.community/t/unity-webgl-build/1415

Error that appears if you attempt to do a build in WebGL


Viewing models with functional api

How can we view full network built with functional apis in keras?

model.summary()


How to add new resource in Leshan Bootstrap or LwM2M Server?

Hi All,
How to add new custom resource in  /0 and /1 in Leshan Bootstrap or LwM2M Server.

Are you talking about leshan bsserver demo (with web UI) or are you asking how to do this programmatically ?

ping ?

I close it because of inactivity (Feel free to reopen it, if needed)


Add a task type to wait for other task

Feature Request
A new feature request to add a task type to wait for some other running task.
Purpose
The purpose of the feature is to support the scenario where one needs to debug server and client code at the same time by using a compound.
Use Case
In our scenario, the server needs to be compiled prior launching its debug session (via a “Build Server” task), and you can use preLaunchTask for that; however the client launches immediately and there is no easy way to make it wait for the “Build Task” started by the server to end. The usecase would be to also add a preLaunchTask to the client (of this new type) to wait for the other task “Bbuild Task”) to end.
Alternatives
Maybe some other way to wait for a port to be open and ready, so the client being launched waits for the server to start listening to it.

There is the concept of dependsOn. You can do:
{
	// See https://go.microsoft.com/fwlink/?LinkId=733558
	// for the documentation about the tasks.json format
	"version": "2.0.0",
	"tasks": [
		{
			"label": "echo",
			"type": "shell",
			"command": "echo Hello` World"
		}, {
			"label": "compound",
			"dependsOn": [ "echo" ],
			"problemMatcher": []
		}
	]
}

Please ping if this doesn't fulfill your request.


Observation Search View Button Recommendation

Map view is the default view and the first view many folks see. It has come up in user testing that folks are missing the view buttons. This is probably because there is so much going on with the map.
I am making a UX recommendation to add labels to these buttons for better usability.

...just a heads up the font size of the labels will need some adjusting, but the above mock up is just to give you an idea.

this went out too. Didn't see the second note about text size. How does it look?

@pleary This looks great. One minor thing and if it's time consuming, we can forget about it...
It would fabulous if the labels vertically lined up with the icons. The labels are slightly too high on all browsers, so hopefully that means no customization for certain browsers:
Chrome:

FF:

Safari:

I fiddled with it in the web dev tools and couldn't get it right, so it really may be something difficult. (I think Ken-ichi has mentioned something about icons and labels being tricky) Anyways, if it's something that would take longer than 5min, no worries.
Thanks for taking care of this!

the button labels are a little better vertically aligned now