Error on save PyTorch model defined in another module

I defined custom PyTorch network. If I try to save it using MLEM, it fails.
Environment
OS: Ubuntu Linux 20.04
Python: 3.8.10
Virtual envronment: venv
Python dependencies:

numpy==1.22.4
mlem==0.2.3
pandas==1.4.2
scikit-learn==1.1.1
torch==1.11.0
torchvision==0.12.0
tqdm==4.64.0

Code
Full code: https://github.com/ankxyz/mlem-pytorch-demo

src/utils/train.py

from torch import nn

class Network(nn.Module):
    def __init__(self, out_features=2) :
        super().__init__()
        self.network = nn.Sequential(
            nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1),
            nn.MaxPool2d(kernel_size=3, stride=2, padding=1),        #14
            nn.LeakyReLU(),
            nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),
            nn.MaxPool2d(kernel_size=3, stride=1, padding=1),        #7
            nn.LeakyReLU(),
            nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1),
            nn.MaxPool2d(kernel_size = 3, stride = 2, padding = 1),  #3
            nn.AdaptiveAvgPool2d((1,1))                              #flatten
        )

        self.dnnModel = nn.Sequential(
            nn.Linear(128, 64),
            nn.LeakyReLU(),
            nn.Linear(64, 32),
            nn.LeakyReLU(),
            nn.Linear(32, out_features)
        )

    def forward(self, x) :
        output = self.network(x)
        output = output.squeeze()
        output = self.dnnModel(output)
        return output

src/stages/train.py

"""
Trains classification model
"""

import argparse
from mlem.api import save
from pathlib import Path
import time
import torch
from tqdm import tqdm
from typing import Text

from src.utils.config import load_config
from src.utils.datasets import ImageFolderWithPaths
from src.utils.loggers import get_logger
from src.utils.train import get_loss_fn, Network
from src.utils.transforms import get_transforms

def train(config_path: Text) -> None:
    """Trains gesture classification model.
    Args:
        config_path(Text): path to config
    """

    config = load_config(config_path)
    logger = get_logger('TRAIN', log_level=config.base.log_level)
    device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
    logger.info(f'Device: {device}')

    logger.info('Load datasets')
    data_transform = get_transforms()

    # Create dataset objects from folder/images
    raw_data_dir = Path(config.base.raw_data_dir)
    train_dataset = ImageFolderWithPaths(
        root=raw_data_dir / 'train',
        transform=data_transform
    )

    # Create data loader
    logger.info('Create Data Loaders')
    trainloader = torch.utils.data.DataLoader(
        train_dataset,
        batch_size=config.base.batch_size,
        shuffle=True,
        num_workers=config.base.num_workers
    )

    logger.info('Setup model')

    classes_number = len(train_dataset.classes)
    logger.info(f'Classes number = {classes_number}')

    model = Network(out_features=classes_number)
    model = model.to(device)
    optimizer = torch.optim.Adam(model.parameters(), lr=config.train.learning_rate)
    scheduler = torch.optim.lr_scheduler.StepLR(
        optimizer,
        step_size=config.train.step_size,
        gamma=config.train.gamma
    )

    logger.info('Fit model')
    epochs = config.train.epochs
    loss_fn = get_loss_fn(device)

    start_time = time.time()
    sample_data = torch.Tensor(0)

    for epoch in tqdm(range(epochs)):

        logger.info(f'Epoch {epoch}/{epochs}')
        logger.info('-' * 10)
        logger.info('Train')

        epoch_loss = 0
        epoch_acc = 0
        for i, (img, label, _) in tqdm(enumerate(trainloader)):
            img = img.to(device)
            sample_data = img
            label = label.to(device)

            predict = model(img)
            loss = loss_fn(predict, label)

            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

            epoch_loss += loss
            correct_prediction = torch.argmax(predict, 1) == label
            correct_prediction = correct_prediction.sum()
            epoch_acc += correct_prediction / img.shape[0]

        epoch_loss = epoch_loss / len(trainloader)
        epoch_acc = epoch_acc / len(trainloader)

        print('Epoch : {}/{},   loss : {:.5f},    acc : {:.5f}'.format(epoch+1, epochs, epoch_loss, epoch_acc))

        if epoch_acc > 0.99 and epoch_loss < 0.1 :
            print('early stop')
            break

        time_elapsed = time.time() - start_time
        minutes = time_elapsed // 60
        seconds = time_elapsed % 60
        logger.info(f'Training complete in {minutes:.0f}m {seconds:.0f}s')

        scheduler.step()

    save(
        obj=model,
        path=f'clf_model',
        sample_data=sample_data,
        description=f'PyTorch classification model'
    )

if __name__ == '__main__':

    args_parser = argparse.ArgumentParser()
    args_parser.add_argument('--config', dest='config', required=True)
    args = args_parser.parse_args()

    train(args.config)

Commad
PYTHONPATH=. python src/stages/train.py --config=params.yaml

Error

Error
Traceback (most recent call last):
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/metadata.py", line 34, in get_object_metadata
    return MlemData.from_data(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/objects.py", line 675, in from_data
    data_type = DataType.create(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/data_type.py", line 74, in create
    return DataAnalyzer.analyze(obj, **kwargs).bind(obj)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/hooks.py", line 107, in analyze
    return cls._find_hook(obj).process(obj, **kwargs)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/hooks.py", line 135, in _find_hook
    raise HookNotFound(
mlem.core.errors.HookNotFound: No suitable DataHook for object of type "Network". Registered hooks: [<class 'mlem.core.data_type.PrimitiveType'>, <class 'mlem.core.data_type.OrderedCollectionHook'>, <class 'mlem.core.data_type.DictType'>, <class 'mlem.contrib.torch.TorchTensorDataType'>, <class 'mlem.contrib.numpy.NumpyNumberType'>, <class 'mlem.contrib.numpy.NumpyNdarrayType'>]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "src/stages/train.py", line 126, in <module>
    train(args.config)
  File "src/stages/train.py", line 112, in train
    save(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/metadata.py", line 96, in save
    meta = get_object_metadata(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/metadata.py", line 38, in get_object_metadata
    return MlemModel.from_obj(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/objects.py", line 615, in from_obj
    requirements=mt.get_requirements().expanded,
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/contrib/torch.py", line 169, in get_requirements
    return super().get_requirements() + InstallableRequirement.from_module(
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/core/model.py", line 279, in get_requirements
    ) + get_object_requirements(self.model)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/utils/module.py", line 585, in get_object_requirements
    a.dump(obj)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/dill/_dill.py", line 620, in dump
    StockPickler.dump(self, obj)
  File "/usr/lib/python3.8/pickle.py", line 487, in dump
    self.save(obj)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/utils/module.py", line 554, in save
    self.add_requirement(obj)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/utils/module.py", line 548, in add_requirement
    self.add_requirement(parent_package)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/utils/module.py", line 537, in add_requirement
    for local_req in get_local_module_reqs(module):
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/mlem/utils/module.py", line 310, in get_local_module_reqs
    tree = ast.parse(inspect.getsource(mod))
  File "/usr/lib/python3.8/inspect.py", line 997, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/lib/python3.8/inspect.py", line 979, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/lib/python3.8/inspect.py", line 780, in findsource
    file = getsourcefile(object)
  File "/usr/lib/python3.8/inspect.py", line 696, in getsourcefile
    filename = getfile(object)
  File "/media/alex/hdd/Dev/progexp/mlem/mlem-pytorch-demo/.venv/lib/python3.8/site-packages/torch/package/package_importer.py", line 625, in patched_getfile
    return _orig_getfile(object)
  File "/usr/lib/python3.8/inspect.py", line 659, in getfile
    raise TypeError('{!r} is a built-in module'.format(object))
TypeError: <module 'src.utils' (namespace)> is a built-in module

At first I assumed the error occures because of the network defined in seprate module. I tried to move the network to the same module where it is used. But I got the same error.

Could you please provide exhaustive example of usage MLEM + Pytorch? It would be great to understand:

how to save any (including custom) PyTorch models
how to correctly specify sample data  in the method save() if my data are images
how to call apply for saved model from CLI if dataset is images.

Thanks for advance

For now images are not supported, but we are working on this in #310.
As for the error, you may try to update to 2.4 since we got some bugs resolved, but I don't think they were the same as yours. But you should at least try
In the meantime I will try to run you code and see what is wrong. Thanks for the code to reproduce it!

Hey, what about saving optimizer state_dict?
I found an Error of yaml
'cannot represent an object', <FlatterDict>

seems to be better to use ruamel.yaml or reduce some way recursive structures in the optimizer.

Is there a reproducible example in your repo?

Yes, I prepared one example
Traceback (most recent call last):
  File "src/example_for_mlem.py", line 35, in <module>
    main()
  File "src/example_for_mlem.py", line 28, in main
    save(
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/mlem/core/metadata.py", line 99, in save
    meta.dump(path, fs=fs, project=project, index=index, external=external)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/mlem/core/objects.py", line 508, in dump
    self._write_meta(location, index)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/mlem/core/objects.py", line 243, in _write_meta
    safe_dump(self.dict(), f)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/__init__.py", line 269, in safe_dump
    return dump_all([data], stream, Dumper=SafeDumper, **kwds)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/__init__.py", line 241, in dump_all
    dumper.represent(data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 27, in represent
    node = self.represent_data(data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 48, in represent_data
    node = self.yaml_representers[data_types[0]](self, data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 207, in represent_dict
    return self.represent_mapping('tag:yaml.org,2002:map', data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 118, in represent_mapping
    node_value = self.represent_data(item_value)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 48, in represent_data
    node = self.yaml_representers[data_types[0]](self, data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 207, in represent_dict
    return self.represent_mapping('tag:yaml.org,2002:map', data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 118, in represent_mapping
    node_value = self.represent_data(item_value)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 58, in represent_data
    node = self.yaml_representers[None](self, data)
  File "/home/ayagoz/miniconda3/envs/dvc/lib/python3.8/site-packages/yaml/representer.py", line 231, in represent_undefined
    raise RepresenterError("cannot represent an object", data)
yaml.representer.RepresenterError: ('cannot represent an object', <FlatterDict id=139695677648848 {}>")

Are there any examples with Pytorch models? Or can you describe whether the module must have methods predict and predict_proba to run fast API? https://example-mlem-get-started-app.herokuapp.com/docs#

They are automatically generated from appropriate model methods.
Some examples can be found in tests, but they might not be very clear :(
https://github.com/iterative/mlem/blob/ee994a025ab36ce9bb98b4c7960368289c9afe87/tests/contrib/test_torch.py#L127
I will take a look at your example and try to fix it though

Ok I see now what is going on. You try to save state with mlem, and state is a dict which mlem assumes as data type, not model type. So I guess we dont support saving pytorch models as state dict :(
Can you explain why this approach may be more preferable than just save optimized model directly?

Btw, with fix above saving and loading as dict does work

But you still wont be able to deploy it as only MlemModel can be deployed, not MlemData

Ok I see now what is going on. You try to save state with mlem, and state is a dict which mlem assumes as data type, not model type. So I guess we dont support saving pytorch models as state dict :( Can you explain why this approach may be more preferable than just save optimized model directly?

Yes, sure. You need it when you randomly stopped training, so you would like to start with the same optimizer state. Most optimisers have a training parameter. So, if you want to continue exactly from the same point, you need the optimizer's state too.

I think my use case is similar so I will post it here instead of a new issue.
I have the following MRE
import mlem
import torch
# pip install yolov5
from yolov5 import train, load

train.run(imgsz=640, data='coco128.yaml', epochs=1)
model = load('runs/train/exp/weights/best.pt')
data = torch.randn(1, 3, 640, 640)
mlem.api.save(model, 'best', sample_data=data)

and this gives me
Traceback (most recent call last):
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 34, in get_object_metadata
    return MlemData.from_data(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/objects.py", line 677, in from_data
    data_type = DataType.create(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/data_type.py", line 75, in create
    return DataAnalyzer.analyze(obj, is_dynamic=is_dynamic, **kwargs).bind(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/hooks.py", line 107, in analyze
    return cls._find_hook(obj).process(obj, **kwargs)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/hooks.py", line 135, in _find_hook
    raise HookNotFound(
mlem.core.errors.HookNotFound: No suitable DataHook for object of type "AutoShape". Registered hooks: [<class 'mlem.core.data_type.PrimitiveType'>, <class 'mlem.core.data_type.OrderedCollectionHook'>, <class 'mlem.core.data_type.DictTypeHook'>, <class 'mlem.contrib.numpy.NumpyNumberType'>, <class 'mlem.contrib.numpy.NumpyNdarrayType'>, <class 'mlem.contrib.torch.TorchTensorDataType'>, <class 'mlem.contrib.pandas.SeriesType'>, <class 'mlem.contrib.pandas.DataFrameType'>]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/warley/dev/tcc-ocr-demo/mlem_yolov5_example.py", line 9, in <module>
    mlem.api.save(model, 'best', sample_data=data)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 96, in save
    meta = get_object_metadata(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 38, in get_object_metadata
    return MlemModel.from_obj(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/objects.py", line 617, in from_obj
    requirements=mt.get_requirements().expanded,
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/contrib/torch.py", line 188, in get_requirements
    return super().get_requirements() + InstallableRequirement.from_module(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/model.py", line 310, in get_requirements
    ) + get_object_requirements(self.model)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 587, in get_object_requirements
    a.dump(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/dill/_dill.py", line 620, in dump
    StockPickler.dump(self, obj)
  File "/usr/lib/python3.10/pickle.py", line 487, in dump
    self.save(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 556, in save
    self.add_requirement(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  [Previous line repeated 1 more time]
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 550, in add_requirement
    self.add_requirement(parent_package)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 542, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 539, in add_requirement
    for local_req in get_local_module_reqs(module):
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 310, in get_local_module_reqs
    tree = ast.parse(inspect.getsource(mod))
  File "/usr/lib/python3.10/inspect.py", line 1147, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/lib/python3.10/inspect.py", line 1129, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/lib/python3.10/inspect.py", line 958, in findsource
    raise OSError('could not get source code')
OSError: could not get source code

Any tips on how to proceed? Please tell me if you need more info. Thanks!

🐶 MLEM Version: 0.2.8

Can you check using MLEM from main branch?

@mike0sv, sure.
🐶 MLEM Version: 0.2.9.dev9+g86105ee

Unfortunately, it didn't change much
Traceback (most recent call last):
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 33, in get_object_metadata
    return MlemData.from_data(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/objects.py", line 668, in from_data
    data_type = DataType.create(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/data_type.py", line 75, in create
    return DataAnalyzer.analyze(obj, is_dynamic=is_dynamic, **kwargs).bind(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/hooks.py", line 107, in analyze
    return cls._find_hook(obj).process(obj, **kwargs)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/hooks.py", line 135, in _find_hook
    raise HookNotFound(
mlem.core.errors.HookNotFound: No suitable DataHook for object of type "AutoShape". Registered hooks: [<class 'mlem.core.data_type.PrimitiveType'>, <class 'mlem.core.data_type.OrderedCollectionHook'>, <class 'mlem.core.data_type.DictTypeHook'>, <class 'mlem.contrib.numpy.NumpyNumberType'>, <class 'mlem.contrib.numpy.NumpyNdarrayType'>, <class 'mlem.contrib.torch.TorchTensorDataType'>, <class 'mlem.contrib.pandas.SeriesType'>, <class 'mlem.contrib.pandas.DataFrameType'>]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/warley/dev/tcc-ocr-demo/mlem_yolov5_example.py", line 8, in <module>
    mlem.api.save(model, 'best', sample_data=data)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 73, in save
    meta = get_object_metadata(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/metadata.py", line 38, in get_object_metadata
    return MlemModel.from_obj(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/objects.py", line 612, in from_obj
    requirements=mt.get_requirements().expanded,
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/contrib/torch.py", line 194, in get_requirements
    return super().get_requirements() + InstallableRequirement.from_module(
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/core/model.py", line 310, in get_requirements
    ) + get_object_requirements(self.model)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 598, in get_object_requirements
    a.dump(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/dill/_dill.py", line 620, in dump
    StockPickler.dump(self, obj)
  File "/usr/lib/python3.10/pickle.py", line 487, in dump
    self.save(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 567, in save
    self.add_requirement(obj)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 551, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 551, in add_requirement
    self.add_requirement(local_req)
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 551, in add_requirement
    self.add_requirement(local_req)
  [Previous line repeated 2 more times]
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 548, in add_requirement
    for local_req in get_local_module_reqs(module):
  File "/home/warley/.virtualenvs/tcc-ocr-demo/lib/python3.10/site-packages/mlem/utils/module.py", line 310, in get_local_module_reqs
    tree = ast.parse(inspect.getsource(mod))
  File "/usr/lib/python3.10/inspect.py", line 1147, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/lib/python3.10/inspect.py", line 1129, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/lib/python3.10/inspect.py", line 958, in findsource
    raise OSError('could not get source code')
OSError: could not get source code

Hmm, "works on my machine" TM. Can you please also try #397 branch?
Btw my env:
torch==1.12.1
yolov5==6.2.2

Can you share yours?

Actually, try #453 with MLEM_DEBUG=true env. It should print out the module that gives the trouble

It all got merged into main, so please re-install from it :)
Sorry for the noise and expect a new comment with "now it's in 0.3.0 release, try with pip install -U mlem now" soon :)

@mike0sv, I upgraded to v0.3.0 and now it works! Thank you for your help!

Closing since it was fixed!


Issue with conda install -c menpo opencv3=3.1.0

With Windows 7 , after the condo install -c menpo opencv3=3.1.0 step,
I get UnsatisfiableError: The following specifications were found to be in conflict:

opencv3 3.1.0* -> python 2.7*
python 3.6*

conda info opencv3=3.1.0 returns
NoPackagesFoundError: Package missing in current win-64 channels:

opencv3 3.1.0*

Using anaconda search -t conda opencv3, the menpo/opencv3 version 3.2.0 should have a win-64 version available. but changing the top statement to use opencv3=3.2.0 but that doesnt seem to work either. Does anyone have some insight on how to solve this issue I'm having with the included instructions?

Check the forum thread:
https://discussions.udacity.com/t/unable-to-setup-opencv-on-windows/217368/5

the same error:

and I cannot access the above forum link....
I tried many mirror, is hard to setup opencv lib....

wait for new miror to setup the opencv, i almost tried every mirror by "anaconda search -t conda opencv" , all is failed...

@asimay , I had the same issues as you did. but I got successful installation using channel https://anaconda.org/conda-forge/opencv.
OR,  use ' conda install -c conda-forge opencv=3.2.0 ' command;
my conda version is 4.2.13.

Thanks for pointing out the right channel 'conda-forge'. I have been searching for this as the official Anaconda site points to a channel 'menpo' where the package is missing!

Thank you. conda forge worked!

Using conda-forge works for me too. Thanks!

Looks like this was solved with conda-forge above; closing.

Opencv3 from conda-forge works like charm. Thanks!


Add a component to make cleaning configurable

In many examples and pipelines, one can see code like this:
cleaning_levels = {
    'LSTCam': (5, 3, 2),
    'CHEC': (10, 4, 2),
}

levels = cleaning_levels[camera.cam_id]
tailcuts_clean(camera, image, picture_thresh=levels[0], boundary_threshold=levels[1])

I tried to make a Component that should make this configurable via traitlets

I think its a nice starting point, but in the end we have many per-telescope-type configuration parameters we need to pass to the pipeline, not just the tailcuts. For example, the charge extraction algorithm to use.
It would be nicer to have a single class to handle the per-telescope configuration for all Components. It could contain the defaults for each telescope type, and the ability to read a config file within which one can specify the configuration per telescope type.

There was a previous implementation of this (not in ctapipe, but in the external pipeline code), but I like this approach better.
We should think to the future when all configurable objects will be specified in a YAML file, so something like this could be configured like:
  GeometryImageCleaner:
    _default_:
      algorithm: 'TailCutsImageCleaner'
      picture_threshold: 10.0
      boundary_threshold: 5.0
    ASTRICam:
      algorithm: 'WaveletImageCleaner'
      noise_threshold: 3.0

   EnergyImageCleaner:
       ...

Remember also that some image cleaning functions needs some extra input, like the time gradients, etc.

By the way this pattern (of passing in a dict of type and parameters) is something we can apply to all per-telescope algorithms.

Another comment: the ability to set a default in the config is quite useful (see my example above), especially if we have to do per-tel_id configurations, or have lots of telescope types. Then one only has to configure the special cases.
A future development would be to allow one to specify configuratoin in more complex ways such as ranges of tel_ids.
All this points to the need for a parent class that handles per-telescope configuration for all per-telescope algorithms, so perhaps we could take out some of this code from this ImageCleaner class, and make a PerTelescopeComponent class, such that we can do the configuration in common.  e.g.
class ImageCleaner(PerTelescopeComponent):
     ...

class ChargeExtractor(PerTelescopeComponent):
    ...
class GainSelector(PerTelescopeComponent):

I like this PR a lot, it reminded me of an idea I had some time ago ... sorry for the long wall of text, but I'd like to hear your opinion on that.
First some "observations"
1.)  we put algorithms into functions if possible ✓
2.) we use Components to configure these functions, this PR is an example for such a component ✓
So in a sense, the "meat" of ctapipe is not the components but the functions, the components are just "necessary evil" which is needed to get things nicely working together, using config, logging, provenance and such.
Now the "idea" or question or whatever...:
Wouldn't it be nice if the "bloat ware" (Components) would be as small as possible? I was wondering if we could maybe (certainly not today but some time later) avoid writing components like ImageCleaning but instead of actually writing them, just having them constructed from some kind of "description" similar to collections.namedtuple.
So in my dream we would say something like this:
ImageCleaning = make_configurable_component_from_functions(
    options=[tailcuts_clean, fact_image_cleaning]
)

And that's all, make_configurable_component_from_functions() would basically inspect the functions for their common interface (in this case geom, image is common) and the rest would be pushed into kwargs just like you did in this PR.
Now... I know ... writing such a make_configurable_component_from_functions might be a waste of time if in the end we only create two or three Components from a list of functions. So I do not propose to write such a thing today, but maybe we want to keep this in the back of our minds? I would also not propose to write such a make_...() function today since according to some agile design principles, one should rather first write a couple of these components and use them and only much later observe that they have something in common and refactor the code in order to get rid of them in an independent refactoring PR.

We should collect some of these nice ideas eg in #851

Just as another use-case, here is an example of what is used in Julien's pipeline for configuring 2 cleaning types (tailcuts + wavelet) for 2 different image cleaners (reco + energy) as a yaml file.
cleaning_reco:  # note that there are more than one image cleaner defined, this is just the reco one
  tail:
   thresholds:  # picture, boundary
    - LSTCam: [6, 3]
    - NectarCam: [6, 3]
   keep_isolated_pixels: False
   min_number_picture_neighbors: 2

  wave:
   # Directory to write temporary files
   #tmp_files_directory: '/dev/shm/'
   tmp_files_directory: './'
   options:
    LSTCam:
     type_of_filtering: 'hard_filtering'
     filter_thresholds: [3, 0.2]
     last_scale_treatment: 'drop'
     kill_isolated_pixels: True
     detect_only_positive_structures: False
     clusters_threshold: 0
    NectarCam:  # TBC
     type_of_filtering: 'hard_filtering'
     filter_thresholds: [3, 0.2]
     last_scale_treatment: 'drop'
     kill_isolated_pixels: True
     detect_only_positive_structures: False
     clusters_threshold: 0

cleaning_energy:
 ...

Obviously this doesn't fit directly in our traitlets scheme, but it's not too bad. You could imagine defining the 2 cleaners with classes:
class RecoImageCleaner(ImageCleaner):
    pass
class EnergyImageCleaner(ImageCleaner):
    pass

Then they are individually configurable via traitlets.config.

What is the status of this PR? Is it still being worked on? I think it's still a really needed to have this functionality soon, so the question is: there were a lot of discussions - can we come up with a final design, or accept the one proposed here? It doesn't have to be perfect, but is a nice first example of how we can configure complex multi-implementation/multi-telescope algorithms.

Unfortunately, I will have to cut ctapipe developement short for now (there is a PHD thesis to be written),
but maybe @LukasNickel can have a look, he is working on cleaning anyway in the moment.

Ok, thanks for the info (and yes your PhD is more important!)  We can discuss this elsewhere then.  There is also 2 other implementations that I know of of an ImageCleaner class... in protopipe and PyWI.  Neither are ideal, though, so a nice simple one is needed.

I'm going to close this for now, since I've made an implementation that will be PR'd shortly, so we can continue on that PR.    In that version, I implemented a TelescopeParameter trait type that allows one to specify default values, per-telescope type values, and per-telescope-ID values (and mix an match them).  These get translated all to per-telescope-ID values later, and then are applied.

Sounds good!


Demo/support bot

Created a demo usecase for a twitter (or other platforms) support bot, which responds to customer issues and creates support tickets depending on the nature of the issue

https://github.com/monkeypatch/monkeypatch.py/issues/40


should fixes #1284 (KinematicBody .move() crash)

I could reproduce the crash described in #1284 only with 32bits versions of godot.
The test scene contains a Plane collision shape, and a kinematicsbody with a Sphere collision shape.
The crash occurs into CollisionSolverSW::solve_distance_plane() on line 299 when p_shape_A is a PlaneShapeSW object and when p_shape_B is a MotionShapeSW object, because int support_count; is not initialized by default, and because MotionShapeSW::get_supports() does not change support_count once passed as referenced parameter, and if the default value of support_count is greater than the length of supports[16].
I don't know if it is the good way to fix it because i'm not skilled ennough with the physics server inner working, but this fix prevents the crash and the test-scene seems to work correctly.

wow nice find


首次展示 TIMUIKitChat 时报错

第一次推出 TIMUIKitChat 后, 页面空白并不断报错, 这时返回上级页面, 重新推出 TIMUIKitChat, 页面显示正常, 无报错
目前在 iOS 设备上稳定复现, 在 Android 手机上昨天还可以复现, 今天就无法复现了

因为在 Android 手机上同样的代码无法稳定复现, 我并不怀疑自己的集成方式有误
错误日志:
flutter: ✅ 腾讯云 IM 登录成功
TIM: 2023-08-02 10:49:13.819 E 732-172456      |-group_list_fetcher.cpp:85               HandleJoinedGroupListResponse           |error_code:11000|error_message:community group not open|offset:0|count:500
TIM: 2023-08-02 10:49:13.819 E 732-172456      |-group_list_provider.cpp:58              HandleJoinedCommunityGroupList          |error_code:11000|error_message:community group not open
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during performLayout():
'package:flutter/src/rendering/box.dart': Failed assertion: line 321 pos 12: 'width > 0.0': is not
true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

The relevant error-causing widget was:
  TIMUIKitChat TIMUIKitChat:file:///Users/wangce/Documents/repo/tbay/lib/pages/chat.dart:49:12

When the exception was thrown, this was the stack:
#2      BoxConstraints.constrainSizeAndAttemptToPreserveAspectRatio (package:flutter/src/rendering/box.dart:321:12)
#3      RenderFittedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:2777:30)
#4      RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#5      RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#6      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#7      RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3751:13)
#8      RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#9      RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#10     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:297:14)
#11     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#12     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#13     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#14     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#15     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#16     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#17     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#18     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#19     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#20     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1449:11)
#21     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#22     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#23     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#24     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:580:43)
#25     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:607:12)
#26     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#27     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#28     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:297:14)
#29     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#30     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#31     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:315:14)
#32     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#33     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#34     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
#35     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#36     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#37     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#38     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#39     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#40     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#41     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#42     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#43     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#44     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#45     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#46     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#47     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#48     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#49     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#50     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:808:43)
#51     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#52     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#53     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#54     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:297:14)
#55     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#56     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#57     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#58     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:808:43)
#59     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#60     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#61     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#62     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#63     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:808:43)
#64     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#65     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#66     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#67     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#69     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#70     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#71     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:808:43)
#72     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#73     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#74     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#75     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#76     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#77     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#78     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#79     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#80     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#81     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#82     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#83     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#84     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#85     RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:868:45)
#86     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#87     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#88     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#89     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
#90     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#91     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#92     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
#93     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#94     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#95     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:315:14)
#96     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#97     RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#98     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#99     RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#100    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#101    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#102    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#103    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#104    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#105    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#106    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#107    RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:491:13)
#108    RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:241:19)
#109    RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:283:12)
#110    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#111    RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:139:12)
#112    RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:361:11)
#113    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#114    RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:534:13)
#115    RenderShrinkWrappingViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1882:12)
#116    RenderShrinkWrappingViewport.performLayout (package:flutter/src/rendering/viewport.dart:1833:20)
#117    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#118    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#119    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#120    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#121    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#122    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#123    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#124    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#125    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#126    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#127    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#128    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#129    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#130    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#131    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#132    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#133    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#134    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#135    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#136    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#137    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#138    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#139    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#140    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#141    RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:554:11)
#142    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#143    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#144    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#145    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#146    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#147    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#148    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#149    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#150    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#151    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#152    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#153    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#154    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#155    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#156    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#157    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#158    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#159    ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#160    RenderStack._computeSize (package:flutter/src/rendering/stack.dart:580:43)
#161    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:607:12)
#162    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#163    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#164    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#165    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#166    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#167    RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:438:14)
#168    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#169    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#170    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#171    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#172    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#173    ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#174    RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:868:45)
#175    RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
#176    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#177    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#178    ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#179    RenderStack._computeSize (package:flutter/src/rendering/stack.dart:580:43)
#180    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:607:12)
#181    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#182    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#183    MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
#184    _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1056:7)
#185    MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:235:7)
#186    RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403:14)
#187    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#188    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#189    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#190    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#191    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#192    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#193    _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1449:11)
#194    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#195    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#196    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#197    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#198    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#199    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#200    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#201    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#202    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#203    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#204    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#205    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#206    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#207    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#208    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#209    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#210    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#211    ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
#212    RenderStack._computeSize (package:flutter/src/rendering/stack.dart:580:43)
#213    RenderStack.performLayout (package:flutter/src/rendering/stack.dart:607:12)
#214    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#215    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#216    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#217    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#218    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#219    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#220    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#221    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#222    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#223    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#224    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#225    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#226    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#227    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#228    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#229    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#230    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#231    RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3749:14)
#232    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#233    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#234    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
#235    RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
#236    RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
#237    _RenderTheaterMixin.performLayout (package:flutter/src/widgets/overlay.dart:832:15)
#238    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2234:7)
#239    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1016:18)
#240    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:492:19)
#241    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:905:13)
#242    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
#243    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#244    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#245    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
#246    _invoke (dart:ui/hooks.dart:142:13)
#247    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
#248    _drawFrame (dart:ui/hooks.dart:112:31)
(elided 2 frames from class _AssertionError)

The following RenderObject was being processed when the exception was fired: RenderFittedBox#e2f8e relayoutBoundary=up52 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
  creator: FittedBox ← KeyedSubtree-[GlobalKey#7a500] ← _EffectiveTickerMode ← TickerMode ← Offstage ←
    SizedBox ← Hero ← Listener ← _GestureSemantics ← RawGestureDetector ← GestureDetector ← ClipRRect
    ← ⋯
  parentData: <none> (can use size)
  constraints: BoxConstraints(0.0<=w<=157.4, 0.0<=h<=256.0)
  size: MISSING
  fit: contain
  alignment: Alignment.center
  textDirection: ltr
This RenderObject had the following descendants (showing up to depth 5):
    child: RenderSemanticsAnnotations#20743 relayoutBoundary=up53 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
      child: RenderImage#34502 relayoutBoundary=up54 NEEDS-PAINT
════════════════════════════════════════════════════════════════════════════════════════════════════
Another exception was thrown: RenderBox was not laid out: RenderFittedBox#e2f8e relayoutBoundary=up52 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderOffstage#88c44 relayoutBoundary=up51 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#7b993 relayoutBoundary=up50 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#efa1f relayoutBoundary=up49 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#a686c relayoutBoundary=up48 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderClipRRect#48499 relayoutBoundary=up47 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderStack#2e15e relayoutBoundary=up46 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#b04f8 relayoutBoundary=up45 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3b2c9 relayoutBoundary=up44 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#15106 relayoutBoundary=up43 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#c0e62 relayoutBoundary=up42 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#69391 relayoutBoundary=up41 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#3de57 relayoutBoundary=up40 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#0b54c relayoutBoundary=up39 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#8d588 relayoutBoundary=up38 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#400bf relayoutBoundary=up37 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#f0089 relayoutBoundary=up36 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#393d5 relayoutBoundary=up35 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#1034c relayoutBoundary=up34 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#2edbc relayoutBoundary=up33 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#016c5 relayoutBoundary=up32 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#ee78a relayoutBoundary=up31 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#f15b2 relayoutBoundary=up30 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#a1bfe relayoutBoundary=up29 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#3f6f2 relayoutBoundary=up28 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#f009f relayoutBoundary=up27 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3c4bf relayoutBoundary=up26 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#84efd relayoutBoundary=up25 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#c7918 relayoutBoundary=up24 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 546 pos 12: 'child.hasSize': is not true.
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: RenderBox was not laid out: RenderShrinkWrappingViewport#853ee relayoutBoundary=up20 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#29a59 relayoutBoundary=up19 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsAnnotations#50372 relayoutBoundary=up18 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#512e9 relayoutBoundary=up17 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#45b60 relayoutBoundary=up16 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#8e1ec relayoutBoundary=up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: _RenderScrollSemantics#f56fe relayoutBoundary=up14 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#72549 relayoutBoundary=up13 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderCustomPaint#f3eae relayoutBoundary=up12 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#67467 relayoutBoundary=up11 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#e2e05 relayoutBoundary=up10 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#5edac relayoutBoundary=up9 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#de1d1 relayoutBoundary=up8 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderStack#d00a9 relayoutBoundary=up6 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: 'package:flutter/src/rendering/shifted_box.dart': Failed assertion: line 348 pos 12: 'child!.hasSize': is not true.

flutter: unhandled element filter; Picture key: Svg loader
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#b04f8 relayoutBoundary=up45 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3b2c9 relayoutBoundary=up44 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPadding#15106 relayoutBoundary=up43 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#c0e62 relayoutBoundary=up42 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#69391 relayoutBoundary=up41 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#3de57 relayoutBoundary=up40 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#0b54c relayoutBoundary=up39 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderFlex#8d588 relayoutBoundary=up38 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#400bf relayoutBoundary=up37 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderFlex#f0089 relayoutBoundary=up36 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderFlex#393d5 relayoutBoundary=up35 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPadding#1034c relayoutBoundary=up34 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderFlex#2edbc relayoutBoundary=up33 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#016c5 relayoutBoundary=up32 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#ee78a relayoutBoundary=up31 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#f15b2 relayoutBoundary=up30 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderFlex#a1bfe relayoutBoundary=up29 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPadding#3f6f2 relayoutBoundary=up28 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPadding#f009f relayoutBoundary=up27 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3c4bf relayoutBoundary=up26 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#84efd relayoutBoundary=up25 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#c7918 relayoutBoundary=up24 NEEDS-PAINT
Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 546 pos 12: 'child.hasSize': is not true.
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: RenderBox was not laid out: RenderShrinkWrappingViewport#853ee relayoutBoundary=up20 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#29a59 relayoutBoundary=up19 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsAnnotations#50372 relayoutBoundary=up18 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#512e9 relayoutBoundary=up17 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#45b60 relayoutBoundary=up16 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#8e1ec relayoutBoundary=up15 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: _RenderScrollSemantics#f56fe relayoutBoundary=up14 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#72549 relayoutBoundary=up13 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderCustomPaint#f3eae relayoutBoundary=up12 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#67467 relayoutBoundary=up11 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#e2e05 relayoutBoundary=up10 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#5edac relayoutBoundary=up9 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#de1d1 relayoutBoundary=up8 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderStack#d00a9 relayoutBoundary=up6 NEEDS-PAINT
Another exception was thrown: 'package:flutter/src/rendering/shifted_box.dart': Failed assertion: line 348 pos 12: 'child!.hasSize': is not true.
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: Exception: Invalid image data
Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2318 pos 12: '!_debugDoingThisLayout': is not true.
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3b2c9 relayoutBoundary=up44 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#15106 relayoutBoundary=up43 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#c0e62 relayoutBoundary=up42 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#69391 relayoutBoundary=up41 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#3de57 relayoutBoundary=up40 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#0b54c relayoutBoundary=up39 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#8d588 relayoutBoundary=up38 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderConstrainedBox#400bf relayoutBoundary=up37 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#f0089 relayoutBoundary=up36 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#393d5 relayoutBoundary=up35 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#1034c relayoutBoundary=up34 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#2edbc relayoutBoundary=up33 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#016c5 relayoutBoundary=up32 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#ee78a relayoutBoundary=up31 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#f15b2 relayoutBoundary=up30 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderFlex#a1bfe relayoutBoundary=up29 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#3f6f2 relayoutBoundary=up28 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderPadding#f009f relayoutBoundary=up27 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: _RenderLayoutBuilder#3c4bf relayoutBoundary=up26 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderDecoratedBox#84efd relayoutBoundary=up25 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#c7918 relayoutBoundary=up24 NEEDS-PAINT
Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 546 pos 12: 'child.hasSize': is not true.
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: Null check operator used on a null value
Another exception was thrown: RenderBox was not laid out: RenderShrinkWrappingViewport#853ee relayoutBoundary=up20 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#29a59 relayoutBoundary=up19 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsAnnotations#50372 relayoutBoundary=up18 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#512e9 relayoutBoundary=up17 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#45b60 relayoutBoundary=up16 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#8e1ec relayoutBoundary=up15 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: _RenderScrollSemantics#f56fe relayoutBoundary=up14 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#72549 relayoutBoundary=up13 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderCustomPaint#f3eae relayoutBoundary=up12 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderMouseRegion#67467 relayoutBoundary=up11 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#e2e05 relayoutBoundary=up10 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#5edac relayoutBoundary=up9 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderPointerListener#de1d1 relayoutBoundary=up8 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderStack#d00a9 relayoutBoundary=up6 NEEDS-PAINT
Another exception was thrown: 'package:flutter/src/rendering/shifted_box.dart': Failed assertion: line 348 pos 12: 'child!.hasSize': is not true.
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#b5357 relayoutBoundary=up7 NEEDS-PAINT
...
...
之后控制台就一直输出上面这句话

tencent_cloud_chat_uikit: ^2.1.3+1 # https://pub.dev/packages/tencent_cloud_chat_uikit
flutter doctor --verbose
[✓] Flutter (Channel stable, 3.10.6, on macOS 13.5 22G74 darwin-arm64, locale en-CN)
    • Flutter version 3.10.6 on channel stable at /Users/wangce/Documents/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f468f3366c (3 weeks ago), 2023-07-12 15:19:05 -0700
    • Engine revision cdbeda788a
    • Dart version 3.0.6
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /Users/wangce/Library/Android/sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.80.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.70.0

[✓] Proxy Configuration
    • HTTP_PROXY is set
    • NO_PROXY is localhost,<IP_ADDRESS>,::1
    • NO_PROXY contains localhost
    • NO_PROXY contains <IP_ADDRESS>
    • NO_PROXY contains ::1

[✓] Connected device (4 available)
    • SM A3360 (mobile)       • RFCTA2392CL               • android-arm64  • Android 13 (API 33)
    • iPhone 11 tbay (mobile) • 00008030-000E4D0811B9802E • ios            • iOS 16.5.1 20F75
    • macOS (desktop)         • macos                     • darwin-arm64   • macOS 13.5 22G74 darwin-arm64
    • Chrome (web)            • chrome                    • web-javascript • Google Chrome 115.0.5790.114

[✓] Network resources
    • All expected network resources are available.

• No issues found!

问题收到，我们分析下

+1

此问题已解决, 关闭 issue


Windows - spawn sidecar

What does this PR do?
A brief description of the change being made with this pull request.
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
How to test the change?
Describe here in detail how the change can be validated.

This got merged in separate PR. closing


Fix appearance in IE 9

I had the styles working well in IE 9 (which cannot use flexbox) until a short while ago, when something apparently broke it.

@fritz-c No sure if IE 9 support is really necessary given decading IE 9 usage. Lack if flexbox support makes this quite complex.

Technically, IE 9 has extended support until April 2017. It's because Vista extended support ends then, and IE 9 is the latest version you can get on that. I even have that date set on my personal calendar (Unofficial Start of Flexbox Day).
I'm not aiming to make it work perfectly, but I actually had the positioning working pretty well before I put in the flexbox stuff. It shouldn't take much to get it back to that state again.

Anyone have insight into what was the last version in which IE9 still worked?
Unfortunately my team still has to support it so, +1 for fixing it in IE9.

@topher515 I got the basic appearance working on it with v0.1.4, but in my tests (on a remote machine) the performance was less than spectacular, and the landing pad (the blue / red area displayed when hovering) wasn't displaying for some IE reason. Usability-wise, I don't think anything's broken beyond use. It's just not great.

You can add support using flexibility polyfill

@enniel Thank you for the suggestion. However, as the end of support for IE 9 is only a couple months from now, and I haven't had too many requests concerning it, I think I'll be leaving the IE 9 compatibility as-is.


Vulkan: Added START_ANIMATIONS import setting

GearVRF DCO signed off by: Nola Donato<EMAIL_ADDRESS>

Vulkan port of  #1193


Animated Hamburger Menu

Hey @arpit456jain
I've made a prototype of the animated Hamburger menu
I want to make contribution in it please assign this task to me
Tech Stack which I'm using is :
HTML
CSS
JavaScript
https://user-images.githubusercontent.com/56119252/157238898-2f9cdcc5-414e-4b3e-afa9-e356d749ede3.mp4

I think you have tagged wrong people in the issue description.

Oops I taught you guys are mentors, my bad!

We are the mentors but some other folks were tagged afaik. You can always confirm from repo readme file if you have any confusion :)


trigEngine = 'ecma' consumes an extra character before the trigger

The snippet s({ trig = 'hi', trigEngine = 'ecma', wordTrig = false }, t('hello')) consumes exactly one extra character before the 'hi' if present

hi<tab> -> hello
hhi<tab> -> hello
hhhi<tab> -> hhello

I checked that the consumed character is part of the trigger by defining
s(
   { trig = 'hi', trigEngine = 'ecma', wordTrig = false },
   f(function (_, snip)
      return 'hello:' .. snip.trigger
   end)
)

This behaves as

hi<tab> -> hello:hi
hhi<tab> -> hello:hhi
hhhi<tab> -> hhello:hhi

Changing the trigEngine to 'pattern' works as expected in all cases.

Changing return line_to_cursor:sub(match.begin_ind - 1), match.groups to return line_to_cursor:sub(match.begin_ind), match.groups on line 54 in luasnip.nodes.util.trig_engines makes things work as expected.
Was there any reason for the - 1 or is it just a mistake?

hard problem #4
fixed with a658ae2
Thanks for the report!


Store relevance scores

Relevance scores of the last iteration of the model are now stored in state file.
The state already contained a table 'last_probabilities' which could store the relevance scores, but this was not actually used to store anything. The reason was that QueryStrategy.query only returned the ranking, and not the relevance scores underlying the ranking (assuming relevance scores are even used).
I added a return_classifier_scores argument to QueryStrategy.query. By default this is set to False so that the default behaviour of the query strategy class is still the same as before. During review, the relevance scores are requested and stored in the state file. I also updated the documentation with an example of how to get the last ranking and relevance scores.
Some remarks:

It might be a good idea to rename the table 'last_probabilities' to 'last_relevance_scores', but I don't think it is worth making any breaking changes over this. It should be possible to do this without breaking changes, since currently the table is unused, but this requires a bit more thought. @J535D165 any ideas?
The reason that saving the relevance scores was somewhat complicated is that we have separate QueryStrategy and Classifier classes. This separation is a little bit arbitrary, they are both part of a model that uses a feature matrix to produce a ranking. When you are writing code in the Review classes, it would make more sense to have one Model class that gives you the ranking. Under the hood this model class could then have subcomponents Model.classifier, Model.balance_strategy, etc. This would make the review classes and entrypoints a lot simpler I think.

Merci!!!


Need spec text for new V6 feature "empty array for params parameter"

See https://github.com/dotnet/csharplang/blob/master/proposals/csharp-6.0/empty-params-array.md
Can someone write up this new spec text?

Assigning this one to Eric as Neal already has overload resolution - I anticipate this being easy enough to understand without having been in the team when it was implemented, but please shout if that's not the case.

Don't forget to add empty array API; see #5

Discussion: we won't refer to Array.Empty, and we'll leave the interning as implementation-specific.


SPPC is asking reminders mails sharing based on the position.

Describe the bug
Many of our clients are requesting that initial reminders/email/sms should go to the department head (say accounts/manager etc)
And if the matter is still pending, then the Escalated REMINDER should go to the Director.

already provided solution to @vinpahilwani

QB has parameter saying 'Company User Relation: Position', but that parameter only helps us to filter the project, that parameter cant be used to decide whom to share a mail?
So, we might require an option to choose whom to share a mail while adding an action. @mitulpanch


Update data-privacy.md

As per CELA Guidance from Jim Sfekas, page was updated to removed previously necessary customer consent language and replace with language around the data storage location of Microsoft Threat Protection data.

@JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks.

@mjcaparas - PR has been copy edited and is ready for final review.
Thank you.
cc: @kenwith

Hello All. What can be done to push this through today?

I did not do this to my phone y'all altered my data so it's more like y'all
are threatening my security because I cannot update my phone
On Mon, May 4, 2020, 8:57 AM Tyler Conn<EMAIL_ADDRESS>wrote:

Hello All. What can be done to push this through today?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/microsoft-365-docs/pull/1795#issuecomment-623479832,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL7QJ6DOI4XCA3LXTICJR53RP3CUFANCNFSM4MWWBDAA
.


SKImage.FromEncodeData(...).Subset(...).Encode(...) encodes the entire image instead of the subset

Hi,
when creating an image from encoded data, Subset()ting it and then saving the result, the original image is encoded instead of the subset. If the image is created from an SKBitmap instead, this issue doesn't happen.
using SkiaSharp;
using System.IO;

class Program {
    // pick your favorite png file.
    const string InputPath = @"input.png";

    static void Main(string[] args) {
        SKImage image = LoadBroken();
        // or: SKImage image = LoadCorrectly();

        // save the right half
        using (var rightHalf = image.Subset(new SKRectI(image.Width / 2, 0, image.Width, image.Height)))
        using (var rightData = rightHalf.Encode())
        using (var outputStream = File.OpenWrite("output.png"))
            rightData.SaveTo(outputStream);
    }

    static SKImage LoadBroken() {
        using (var stream = File.OpenRead(InputPath))
        using (var data = SKData.Create(stream))
            return SKImage.FromEncodedData(data);
    }

    static SKImage LoadCorrectly() {
        using (var stream = File.OpenRead(InputPath))
        using (var bitmap = SKBitmap.Decode(stream))
            return SKImage.FromBitmap(bitmap);
    }
}

Expected output: The right half of input.png is saved to output.png.
Actual output: The entirety of input.png is saved instead.
Version: SkiaSharp 1.60.0
Environment: .NET Core 2.0 on Windows 10 version 1709
If the call to LoadBroken() is replaced with LoadCorrectly() the issue doesn't happen.

This appears to be a bug in skia:
https://fiddle.skia.org/c/46c321af4c4bd87ab77a17d2c75f41f9
I opened a bug there:
https://bugs.chromium.org/p/skia/issues/detail?id=7752

A workaround is to use Encode(SKEncodedImageFormat.Png, 100).
The current logic makes a mistake of thinking that if there was a source data, then just return it. When you take a subset, the data is passed around but not flagged as a subset. This means that Encode just returns the old data. The parameters force a re-encode.
The benefit of not always re-encoding is that if the image is unchanged (and it is often the case) then no need to do the work. Not sure if this is really a benefit though... When you call encode, it is usually pretty quick and often you are prepared for it to take longer. Just passing the data back is nice, but has issues like this...

This was fixed in https://github.com/google/skia/commit/cd04356804df66ce3546c3e9b61cee71c612e3d2
I will bring this back down to our version.


Danalock V3-BTZE - device included ok, but not working and no configuration options

Checklist:

[x ] My problem is not within Home Assistant or the ZWave JS integration. Or: a Home Assistant developer has told me to come here.
[x ] My problem is not within ZWaveJS2MQTT. Or: a ZWaveJS2MQTT developer has told me to come here.
[x ] I have checked the troubleshooting section and my problem is not described there.
[x ] I have read the changelog and my problem was not mentioned there.

Describe the bug
https://devices.zwave-js.io/?jumpTo=0x010e:0x0009:0x0001:0.0
Migrated this device from Fibaro to Home assistant. Reset the device and included to HA. Tried same procedure three times. The issue is that the device is not controllable from HA, and the config option on the device is not shown.
Device information
Danalock V3-BTZE, firmware version 0.17.5
Latest ID after several exclude/include runs: 97
Did you change anything?

[ ] Yes: (please describe)
[x ] No

Did this use to work before?

[x ] Don't know, this is a new device to HA, but worked fine in fibaro
[ ] No, it never worked anywhere
[ ] Yes, in: (specify application with versions)

How are you using node-zwave-js

[ ] zwavejs2mqtt (latest) docker image
[ ] zwavejs2mqtt (dev) docker image
[ ] zwavejs2mqtt Manual Docker build

node-zwave-js branch:
zwavejs2mqtt branch:

[ ] ioBroker.zwave2 adapter
[x ] HomeAssistant version 2021.6.3
[ ] Pkg
[ ] Manual Docker build

node-zwave-js branch:
zwavejs2mqtt branch:

[ ] node-red-contrib-zwave-js

Module version (double click node):

[ ] Manually built (as described in the docs)
[ ] Other:

To Reproduce
Steps to reproduce the behavior:

Go to '...
zwave_js_dump.zip

'
2. Click on '...'
3. Scroll down to '...'
4. See error
Additional context
Add any other context about the problem here.
Logfile:

        "isSecure": false,

zwave-js thinks the lock isn't included securely, so most functionality just won't work. Without seeing a driver log of the inclusion or a re-interview I cannot tell why that is though. Possible reasons:

You have no network key configured
You didn't include the lock securely
There was a timeout during secure inclusion
The device wasn't reset correctly, so it still uses the old network key

Thanx for the suggestions. I will try them out sunday when i get back home. You can close this issue


docs/bootc-install: Give more guidance on root= and rootflags=

We need to change Anaconda and bootc-image-builder to stop generating /etc/fstab for this reason.

Is there a workaround to avoid the remount service from failing?

No, unfortunately.
I commented in https://bugzilla.redhat.com/show_bug.cgi?id=2332319#c1 which should cover the Anaconda case you hit. We can link that as a known bug until Anaconda is updated.
The change that would be by far the easiest/biggest impact would be to change the systemd fstab generator to handle this but I've hesitated to raise it there as I think conceptually it's more that the fstab is wrong.

I commented in https://bugzilla.redhat.com/show_bug.cgi?id=2332319#c1 which should cover the Anaconda case you hit. We can link that as a known bug until Anaconda is updated.

Love that!


Remove usage of CMAKE_MAKE_PROGRAM as it slows down parallel build

Current build process for external mkl-dnn tries to speed up compilation by invoking just part of the Make rules bt doing BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} mkldnn But that effectively disables parallel build. This PR remove the explicit BUILD_COMMAND and enables parallel build. Now more work is done but in parallel and the build time is faster.

To be clear, this has nothing really do with CMAKE_MAKE_PROGRAM because what you really want to do is pass arguments along. Also, if I recall correctly, Chase's original change didn't help with build time because the 'install' rule will build everything anyway.

@jmenon It does. On Mac it does not have any impact but on BDW or SKX Ubuntu 16.04
you get something like "make[6]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule."


module 'tangram' has no attribute 'pp_adatas'

For some reason, there does not appear to be the pp_adatas function anymore.

@ziqlu0722 could you please look into this?

Hi @NingWang1729! Could I know how did you install tangram and what version do you use?

Hi @ziqlu0722!
I used !pip install tangram-sc on the collab tutorial, and pip install tangram-sc on a linux machine.
The tangram version on the linux environment is version 1.0.2

Hi @NingWang1729, I cannot explain how I missed your reply! Actually it doesn't complain about missing pp_adatas function when I try it on google colab or on my linux machine. I close this for now but feel free to reopen it if you still have issue. Thank you!

tg.pp_adatas(adata_sc, adata_st, genes=markers)
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'tangram' has no attribute 'pp_adatas'

tangram version 1.04; installed:        pip install tangram-sc

Did you maybe also pip installed tangram (and tangram-sc)?
If this is the case you can try: pip uninstall tangram.

Even I am facing the same issue,  tangram does not seem to have 'pp_adatas' function .
Is there any way to correct the issue?

The original issue I encountered was due to a file named tangram.py being present and imported rather than the tangram library. Hope this helps.


Fix conditional expressions in all places

When there is expr1 ? ident : expr2, parser needs to termination without treating ident: as a qualified identifier.
Currently this scenario works. However, this middle-expr can be many other things as well such as check ident, <T> ident, etc. So we need to fix this for any expression that can ends with a n identifier.
Some of the issues were fixed in https://github.com/ballerina-platform/ballerina-lang/pull/24279/commits/63c5f08e8bfb1264361cf96f78769034492de40d. But need to find and fix remaining ones.

As discussed on Slack, the following fails atm.
public function main() {
    json j = {a: 1, b: "str"};
    string s = j.a is string ? <string> j.a : "";
}

Fails with
error: .::test.bal:4:45: missing colon token
error: .::test.bal:4:47: invalid token ':'

Had to add parentheses around <string> j.a to get this working.
public function main() {
    json j = {a: 1, b: "str"};
    string s = j.a is string ? (<string> j.a) : "";
}


refactor(@angular/ssr): remove duplicate code and streamline functionality

This commit cleans up duplicate code left from the previous implementations of process, serve, and render. Additionally, prerender serve now exclusively handles HEAD and GET requests, aligning with updated handling requirements. The private renderStatic method has been removed in favor of the handle method for improved maintainability.

The changes were merged into the following branches: main, 19.0.x


⚠ Node - sg-67539fc1.yalaso.top has degraded performance

In 530c7a7, Node - sg-67539fc1.yalaso.top (http://sg-67539fc1.yalaso.top/api/v1/ping) experienced degraded performance:

HTTP code: 200
Response time: 2510 ms

Resolved: Node - sg-67539fc1.yalaso.top performance has improved in 4d1072f.


Fix formatting

In some cases, the newlines made from the renderer can mess up the way the HTML is displayed in a browser:

hello

The above example will underline the newline at the end of the anchor body, while the following example does not.
hello

I either need to remove formatting altogether, or figure out a way in which I can have human-readable HTML while also displaying it properly in the browser.
For now, if this is an issue, you can either use this branch to remove newlines, or add CSS as described here

Fixed https://github.com/garlic0x1/hiccl/pull/2
hiccl no longer tries to do any kind of pretty printing, I think it's not worth the complexity or performance hit of checking if a tag should be block or inline.


Missing alt attribute in img tags

What happened?
The alt attribute is missing from many img tags. The alt attribute provides alternative information for an image if a user for some reason cannot view it (because of a slow connection, an error in the src attribute, or if the user uses a screen reader).
How can we reproduce this bug?
The expected behaviour is to add proper alt attribute to all img tags present in this project for user experience.

i would like to work on this issue.

Please assign me this issue, I can work on this issue under GSSOC'23.

Sure @Avinash905 , make sure you check all pages

Ok