cpu: Add override to TraceCPU init function

This introduces a fix that caused the clang compiler tests to fail here: https://github.com/gem5/gem5/actions/runs/6195015407
Change-Id: I48c61539f497976c038c6e8e379d00285e1c39c7

This change is marked as a draft because in testing I have found that if I build gem5 until I run into the error found in the compiler tests, then make the change here, and then rerun the build, it builds successfully.  However, if I make the change first, then attempt to build gem5, I run into different issues seen below.  I am curious if these issues are reproducible for others, or just something I'm encountering.  In addition, I believe this error was introduced by change #302 , so I was wondering if @giactra had any insight on it.
 [ TRACING]  -> ALL/debug/VirtIOMMIO.hh
In file included from build/ALL/proto/inst_dep_record.pb.cc:4:
build/ALL/proto/inst_dep_record.pb.h:17:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
 ^
build/ALL/proto/inst_dep_record.pb.h:18:2: error: incompatible with your Protocol Buffer headers.  Please
#error incompatible with your Protocol Buffer headers.  Please
 ^
build/ALL/proto/inst_dep_record.pb.h:19:2: error: regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
 ^
 [     CXX] ALL/python/gem5/components/processors/simple_switchable_processor.py.cc -> .pyo
 [ TRACING]  -> ALL/debug/VIOConsole.cc
 [EMBED PY] src/python/gem5_default_config.py -> ALL/python/gem5_default_config.py.cc
 [     CXX] ALL/python/gem5_default_config.py.cc -> .pyo
build/ALL/proto/inst_dep_record.pb.h:155:56: error: only virtual member functions can be marked 'final'
      ::google::protobuf::io::CodedInputStream* input) final;
                                                       ^~~~~
build/ALL/proto/inst_dep_record.pb.h:157:64: error: only virtual member functions can be marked 'final'
      ::google::protobuf::io::CodedOutputStream* output) const final;
                                                               ^~~~~
build/ALL/proto/inst_dep_record.pb.h:159:68: error: only virtual member functions can be marked 'final'
      bool deterministic, ::google::protobuf::uint8* target) const final;
                                                                   ^~~~~
build/ALL/proto/inst_dep_record.pb.h:232:33: error: no type named 'InternalMetadataWithArena' in namespace 'google::protobuf::internal'
  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
build/ALL/proto/inst_dep_record.pb.h:310:56: error: only virtual member functions can be marked 'final'
      ::google::protobuf::io::CodedInputStream* input) final;
                                                       ^~~~~
build/ALL/proto/inst_dep_record.pb.h:312:64: error: only virtual member functions can be marked 'final'
      ::google::protobuf::io::CodedOutputStream* output) const final;
                                                               ^~~~~
build/ALL/proto/inst_dep_record.pb.h:314:68: error: only virtual member functions can be marked 'final'
      bool deterministic, ::google::protobuf::uint8* target) const final;
                                                                   ^~~~~
build/ALL/proto/inst_dep_record.pb.h:487:33: error: no type named 'InternalMetadataWithArena' in namespace 'google::protobuf::internal'
  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
build/ALL/proto/inst_dep_record.pb.h:616:16: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  tick_freq_ = GOOGLE_ULONGLONG(0);
               ^
build/ALL/proto/inst_dep_record.pb.h:668:14: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  seq_num_ = GOOGLE_ULONGLONG(0);
             ^
build/ALL/proto/inst_dep_record.pb.h:717:13: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  p_addr_ = GOOGLE_ULONGLONG(0);
            ^
build/ALL/proto/inst_dep_record.pb.h:819:17: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  comp_delay_ = GOOGLE_ULONGLONG(0);
                ^
build/ALL/proto/inst_dep_record.pb.h:897:9: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  pc_ = GOOGLE_ULONGLONG(0);
        ^
build/ALL/proto/inst_dep_record.pb.h:921:13: error: use of undeclared identifier 'GOOGLE_ULONGLONG'
  v_addr_ = GOOGLE_ULONGLONG(0);
            ^
build/ALL/proto/inst_dep_record.pb.cc:11:10: fatal error: 'google/protobuf/wire_format_lite_inl.h' file not found
#include <google/protobuf/wire_format_lite_inl.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 errors generated.
scons: *** [build/ALL/proto/inst_dep_record.pb.o] Error 1
scons: building terminated because of errors.

build/ALL/proto/inst_dep_record.pb.h:18:2: error: incompatible with your Protocol Buffer headers.  Please

Hi, it seems to me this is the problem. I honestly don't think the issue is related to my PR, as I didn't change any protobuf representation. Are you by chance building gem5 in different environments? It could be you start building with a protobuf version, generating stubs with protoc, and then maybe building with a different one? Did you try to make a clean build?
(rm -rf build)

build/ALL/proto/inst_dep_record.pb.h:18:2: error: incompatible with your Protocol Buffer headers.  Please

Hi, it seems to me this is the problem. I honestly don't think the issue is related to my PR, as I didn't change any protobuf representation. Are you by chance building gem5 in different environments? It could be you start building with a protobuf version, generating stubs with protoc, and then maybe building with a different one? Did you try to make a clean build? (rm -rf build)

I double checked removing the build and that seemed to fix the problem, so I'll move this into review! I was confused since I was using the same docker image both times so nothing should've changed between the runs other than marking the function as override, but a clean build directory fixed it so the change should be good.  Thank you!!


Support for RL workloads

After receiving request from multiple I'm creating this issue to track the progress on the support for RL workloads within FFCV.
The main current need right now is:

Allow sharing of data between multiple samples (as a given training sample is usually characterized as a subset of a sequence shared among multiple other samples).

It seems that it should be possible to do that with a custom field but I'm currently coming up with an example and tests to make sure that this use case is fully supported.
I could use some volunteers to update the documentation though

Here is an example I made using FFCV custom fields where there is a piece of data (episode) that is shared between multiple samples. I hope it helps some people out there.
A collapsible section with markdown

Dataset Code to import
import numpy as np
from ffcv import Loader
from ffcv.writer import DatasetWriter
from ffcv.fields import NDArrayField, FloatField
from ffcv.fields.decoders import NDArrayDecoder, FloatDecoder
from ffcv.transforms import ToTensor
from ffcv.pipeline.operation import Operation

# Mock Dataset
class DemoDataset:

    def __init__(self, num_episodes, num_samples_per_episode,
                 frame_dim=(4, 4),
                 frames_before=2,
                 frames_after=1):
        self.data = np.random.randn(num_episodes, num_samples_per_episode, *frame_dim)
        self.frames_before = frames_before
        self.frames_after = frames_after
        self.num_episodes = num_episodes
        self.shape = frame_dim
        self.valid_samples_per_episode = self.data.shape[1] - self.frames_before - self.frames_after
        self.frames_per_sample = frames_before + frames_after + 1

    def __len__(self):
        return self.valid_samples_per_episode * self.num_episodes

    def __getitem__(self, ix):
        frame_ix = ix % self.valid_samples_per_episode
        episode_ix = ix // self.valid_samples_per_episode
        episode = self.data[episode_ix]
        frame_ix += self.frames_before
        frame_start = frame_ix
        frame_end = frame_ix + self.frames_before + self.frames_after + 1

        return ((frame_start, frame_end, episode_ix, episode),)

# We instantiate the dataset
dataset = DemoDataset(10, 15, frames_after=2)

The code for the custom Field
from typing import Callable, TYPE_CHECKING, Tuple, Type
import json
from dataclasses import replace

import numpy as np

from ffcv.fields.base import Field, ARG_TYPE
from ffcv.pipeline.operation import Operation
from ffcv.pipeline.state import State
from ffcv.pipeline.compiler import Compiler
from ffcv.pipeline.allocation_query import AllocationQuery
from ffcv.libffcv import memcpy

if TYPE_CHECKING:
    from ..memory_managers.base import MemoryManager

NDArrayArgsType = np.dtype([
    ('shape', '<u8', 32),  # 32 is the max number of dimensions for numpy
    ('type_length', '<u8'),  # length of the dtype description
    ('frames_per_sample', '<u8'),
])

RecordType = np.dtype([
    ('episode_ptr', '<u8'),  # We store the address of the content of the episode
    ('frame_start', '<u4'),  # This is where the sequence start in the episode
    ('frame_end', '<u4'),  # This is where the sequence ends in the episode
])

class CustomFieldDecoder(Operation):
    def declare_state_and_memory(self, previous_state: State) -> Tuple[State, AllocationQuery]:
        my_shape = (self.field.frames_per_sample, *self.field.shape)
        return (replace(previous_state, jit_mode=True, shape=my_shape, dtype=self.field.dtype),
                AllocationQuery(shape=my_shape, dtype=self.field.dtype))

    def generate_code(self) -> Callable:

        mem_read = self.memory_read
        my_range = Compiler.get_iterator()
        my_memcpy = Compiler.compile(memcpy)
        s = self.field.shape
        d = self.field.dtype

        def decode(batch_indices, dest, metadata, storage_state):
            for i in my_range(len(batch_indices)):
                bix = batch_indices[i]
                met = metadata[bix]
                data = mem_read(met['episode_ptr'], storage_state)
                frame_start, frame_end = met['frame_start'], met['frame_end']
                original_data = data.view(d).reshape(-1, *s)
                sl = original_data[frame_start:frame_end]
                dest[bix] = sl
                # my_memcpy(data, dest[bix].view(np.uint8))

            ix = batch_indices[0]

            return dest

        return decode

class MyCustomField(Field):
    def __init__(self, frames_per_sample, dtype:np.dtype, shape:Tuple[int, ...]):
        self.episodes_stored = dict()  # We remember which episodes have been stored
        self.dtype = dtype
        self.shape = shape
        self.frames_per_sample = frames_per_sample
        self.element_size = dtype.itemsize * np.prod(shape)

    @property
    def metadata_type(self) -> np.dtype:
        return RecordType

    @staticmethod
    def from_binary(binary: ARG_TYPE) -> Field:
        header_size = NDArrayArgsType.itemsize
        header = binary[:header_size].view(NDArrayArgsType)[0]
        type_length = header['type_length']
        type_data = binary[header_size:][:type_length].tobytes().decode('ascii')
        type_desc = json.loads(type_data)
        type_desc = [tuple(x) for x in type_desc]
        assert len(type_desc) == 1
        dtype = np.dtype(type_desc)['f0']
        shape = list(header['shape'])
        while shape[-1] == 0:
            shape.pop()

        return MyCustomField(header['frames_per_sample'], dtype, tuple(shape))

    def to_binary(self) -> ARG_TYPE:
        result = np.zeros(1, dtype=ARG_TYPE)[0]
        header = np.zeros(1, dtype=NDArrayArgsType)
        s = np.array(self.shape).astype('<u8')
        header['shape'][0][:len(s)] = s
        header['frames_per_sample'] = self.frames_per_sample
        encoded_type = json.dumps(self.dtype.descr)
        encoded_type = np.frombuffer(encoded_type.encode('ascii'), dtype='<u1')
        header['type_length'][0] = len(encoded_type)
        to_write = np.concatenate([header.view('<u1'), encoded_type])
        result[0][:to_write.shape[0]] = to_write
        return result

    def encode(self, destination, field, malloc):
        frame_start, frame_end, episode_ix, episode_content = field

        # We check if we already stored the content of that episode in the dataset
        if episode_ix in self.episodes_stored:
            addr = self.episodes_stored[episode_ix]
            _, _ = malloc(0) # Dirty hack required for now
        else:  # We need to allocate memory to store it and store it there
            addr, region = malloc(episode_content.itemsize * episode_content.size)
            region[:] = episode_content.ravel().view('<u1')
            self.episodes_stored[episode_ix] = addr

        destination['episode_ptr'] = addr
        destination['frame_start'] = frame_start
        destination['frame_end'] = frame_end

    def get_decoder_class(self):
        return CustomFieldDecoder

And usage:
test = DatasetWriter('/tmp/test.beton', {
    'sequence': MyCustomField(dataset.frames_per_sample, np.dtype('float64'), dataset.shape)
}, num_workers=1)
test.from_indexed_dataset(dataset)
loader = Loader('/tmp/test.beton', custom_fields={
    'sequence': MyCustomField
}, batch_size=5)

Warning: It only really works with num_workers=1 and when using os_cache=False it will only work if either a sample allocate memory for all fields or for None. It will fail if one field is skipped but not another.

If this kind of thing is useful I could make the necessary changes to the writer to allow for multiple workers and support QUASI_RANDOM

Hi, this script seems to not quite work in its current form, it throws an error:
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/home/ubuntu/miniconda3/envs/ffcv/lib/python3.9/threading.py", line 973, in _bootstrap_inner
    self.run()
  File "/home/ubuntu/miniconda3/envs/ffcv/lib/python3.9/site-packages/ffcv/loader/epoch_iterator.py", line 80, in run
    result = self.run_pipeline(b_ix, ixes, slot, events[slot])
  File "/home/ubuntu/miniconda3/envs/ffcv/lib/python3.9/site-packages/ffcv/loader/epoch_iterator.py", line 134, in run_pipeline
    result = code(*args)
ValueError: cannot assign slice from input of different size

I've been trying to debug it but no luck so far.

I'll try to debug that now but I'll answer your general questions first.

to_binary and from binary are there to encode per_file settings that apply to a given field. In this example we are storing the shape of the individual frames. When the dataset is loaded this is then read and used to reshape the data appropriately. Without it there would be no way to distinguish between datasets with a 4x4 or a 2x8 frame. Storing it on a sample basis would mean a lot of wasted space. In general each Field has 1024bytes to store whatever they feel like and they will be able to decode these bytes however they want when the dataset is loaded
Decode is implemented in its own class because for a given Field there might be different strategies to decode it. For example, with images, when they all have different resolution you could do pick a RandomCrop or a CenterCrop or Resize them. One could say that this choice can be encoded with the mechanism described above but it would mean that one has to regenerate a dataset if they want to change the strategy. It is therefore more flexible for a Field to declare a base class that all decoders have to inherit to declare that they are compatible with a given field and are able to decode it.

Everything should be fixed @jacobmanifold . I was simply writing the result in bix instead of i which was incorrect and out of bounds most of the time.

Thank you! I think you still have a small bug in decode where my_memcpy(data, dest[i].view(np.uint8)) should be my_memcpy(sl, dest[i].view(np.uint8)).
Running this code now, it doesn't crash, but seems to still be an issue where datapoints are improperly loaded. To see this, I modified the dataset to load all-1s instead of all-random, and some points seem to get loaded as very small numbers instead.
Here's the script I'm currently running:

Code
import numpy as np
from ffcv import Loader
from ffcv.writer import DatasetWriter
from ffcv.fields import NDArrayField, FloatField
from ffcv.fields.decoders import NDArrayDecoder, FloatDecoder
from ffcv.transforms import ToTensor
from ffcv.pipeline.operation import Operation

# Mock Dataset
class DemoDataset:

    def __init__(self, num_episodes, num_samples_per_episode,
                 frame_dim=(4, 4),
                 frames_before=2,
                 frames_after=1):
        self.data = np.ones([num_episodes, num_samples_per_episode, *frame_dim])
        self.frames_before = frames_before
        self.frames_after = frames_after
        self.num_episodes = num_episodes
        self.shape = frame_dim
        self.valid_samples_per_episode = self.data.shape[1] - self.frames_before - self.frames_after
        self.frames_per_sample = frames_before + frames_after + 1

    def __len__(self):
        return self.valid_samples_per_episode * self.num_episodes

    def __getitem__(self, ix):
        episode_ix = ix // self.valid_samples_per_episode
        frame_ix = ix % self.valid_samples_per_episode
        episode = self.data[episode_ix]
        frame_start = frame_ix
        frame_end = frame_ix + self.frames_before + 1 + self.frames_after
        return ((frame_start, frame_end, episode_ix, episode),)

from typing import Callable, TYPE_CHECKING, Tuple, Type
import json
from dataclasses import replace

import numpy as np

from ffcv.fields.base import Field, ARG_TYPE
from ffcv.pipeline.operation import Operation
from ffcv.pipeline.state import State
from ffcv.pipeline.compiler import Compiler
from ffcv.pipeline.allocation_query import AllocationQuery
from ffcv.libffcv import memcpy
from ffcv.loader import OrderOption

if TYPE_CHECKING:
    from ..memory_managers.base import MemoryManager

NDArrayArgsType = np.dtype([
    ('shape', '<u8', 32),  # 32 is the max number of dimensions for numpy
    ('type_length', '<u8'),  # length of the dtype description
    ('frames_per_sample', '<u8'),
])

RecordType = np.dtype([
    ('episode_ptr', '<u8'),  # We store the address of the content of the episode
    ('frame_start', '<u4'),  # This is where the sequence start in the episode
    ('frame_end', '<u4'),  # This is where the sequence ends in the episode
])

from typing import Callable, TYPE_CHECKING, Tuple, Type
import json
from dataclasses import replace

import numpy as np

from ffcv.fields.base import Field, ARG_TYPE
from ffcv.pipeline.operation import Operation
from ffcv.pipeline.state import State
from ffcv.pipeline.compiler import Compiler
from ffcv.pipeline.allocation_query import AllocationQuery
from ffcv.libffcv import memcpy

if TYPE_CHECKING:
    from ..memory_managers.base import MemoryManager

NDArrayArgsType = np.dtype([
    ('shape', '<u8', 32),  # 32 is the max number of dimensions for numpy
    ('type_length', '<u8'),  # length of the dtype description
    ('frames_per_sample', '<u8'),
])

RecordType = np.dtype([
    ('episode_ptr', '<u8'),  # We store the address of the content of the episode
    ('frame_start', '<u4'),  # This is where the sequence start in the episode
    ('frame_end', '<u4'),  # This is where the sequence ends in the episode
])

class CustomFieldDecoder(Operation):
    def declare_state_and_memory(self, previous_state: State) -> Tuple[State, AllocationQuery]:
        my_shape = (self.field.frames_per_sample, *self.field.shape)
        return (replace(previous_state, jit_mode=True, shape=my_shape, dtype=self.field.dtype),
                AllocationQuery(shape=my_shape, dtype=self.field.dtype))

    def generate_code(self) -> Callable:
        mem_read = self.memory_read
        my_range = Compiler.get_iterator()
        my_memcpy = Compiler.compile(memcpy)
        s = self.field.shape
        d = self.field.dtype

        def decode(batch_indices, dest, metadata, storage_state):
            for i in my_range(len(batch_indices)):
                bix = batch_indices[i]
                met = metadata[bix]
                data = mem_read(met['episode_ptr'], storage_state)
                frame_start, frame_end = met['frame_start'], met['frame_end']
                original_data = data.view(d).reshape(-1, *s)
                sl = original_data[frame_start:frame_end]
                my_memcpy(sl, dest[i].view(np.uint8))

            ix = batch_indices[0]
            return dest

        return decode

class MyCustomField(Field):
    def __init__(self, frames_per_sample, dtype: np.dtype, shape: Tuple[int, ...]):
        self.episodes_stored = dict()  # We remember which episodes have been stored
        self.dtype = dtype
        self.shape = shape
        self.frames_per_sample = frames_per_sample
        self.element_size = dtype.itemsize * np.prod(shape)

    @property
    def metadata_type(self) -> np.dtype:
        return RecordType

    @staticmethod
    def from_binary(binary: ARG_TYPE) -> Field:
        header_size = NDArrayArgsType.itemsize
        header = binary[:header_size].view(NDArrayArgsType)[0]
        type_length = header['type_length']
        type_data = binary[header_size:][:type_length].tobytes().decode('ascii')
        type_desc = json.loads(type_data)
        type_desc = [tuple(x) for x in type_desc]
        assert len(type_desc) == 1
        dtype = np.dtype(type_desc)['f0']
        shape = list(header['shape'])
        while shape[-1] == 0:
            shape.pop()

        return MyCustomField(header['frames_per_sample'], dtype, tuple(shape))

    def to_binary(self) -> ARG_TYPE:
        result = np.zeros(1, dtype=ARG_TYPE)[0]
        header = np.zeros(1, dtype=NDArrayArgsType)
        s = np.array(self.shape).astype('<u8')
        header['shape'][0][:len(s)] = s
        header['frames_per_sample'] = self.frames_per_sample
        encoded_type = json.dumps(self.dtype.descr)
        encoded_type = np.frombuffer(encoded_type.encode('ascii'), dtype='<u1')
        header['type_length'][0] = len(encoded_type)
        to_write = np.concatenate([header.view('<u1'), encoded_type])
        result[0][:to_write.shape[0]] = to_write
        return result

    def encode(self, destination, field, malloc):
        frame_start, frame_end, episode_ix, episode_content = field

        # We check if we already stored the content of that episode in the dataset
        if episode_ix in self.episodes_stored:
            addr = self.episodes_stored[episode_ix]
            _, _ = malloc(0)  # Dirty hack required for now
        else:  # We need to allocate memory to store it and store it there
            addr, region = malloc(episode_content.itemsize * episode_content.size)
            region[:] = episode_content.ravel().view('<u1')
            self.episodes_stored[episode_ix] = addr

        destination['episode_ptr'] = addr
        destination['frame_start'] = frame_start
        destination['frame_end'] = frame_end

    def get_decoder_class(self):
        return CustomFieldDecoder

dataset = DemoDataset(10, 15, frames_after=2)

test = DatasetWriter('/tmp/test.beton', {
    'sequence': MyCustomField(dataset.frames_per_sample, np.dtype('float64'), dataset.shape)
}, num_workers=1)
test.from_indexed_dataset(dataset)

loader = Loader('/tmp/test.beton', custom_fields={
    'sequence': MyCustomField
}, batch_size=12, os_cache=False, order=OrderOption.SEQUENTIAL)

for item in loader: print(item[0][:,0,0,0].tolist())

And the output:
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.8504618152133806e-307, 2.2022581597627517e-308]
[2.1935664976514946e-308, 2.1935664976514946e-308, 2.1935664976514946e-308, 2.1935664976514946e-308, 2.209863455298968e-308, 2.204431116099213e-308, 2.208776997146854e-308, 2.195739388728061e-308, 2.19573938872806e-308, 2.195739388728061e-308, 2.19573938872806e-308, 2.195739388728061e-308]
[2.204431116101237e-308, 1.4528842266508651e-303, 1.965409477558363e-308, 2.195739451314053e-308, 2.195739451314052e-308, 2.195739451314053e-308, 2.195739451314052e-308, 2.195739451314053e-308, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.195739455001471e-308, 2.195739455001471e-308, 2.195739455001471e-308, 2.1924800657793804e-308, 2.204431116101237e-308]
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 2.209863455298968e-308, 2.204431116099213e-308, 2.208776997146854e-308, 2.195739388728061e-308, 2.19573938872806e-308, 2.195739388728061e-308, 2.19573938872806e-308, 2.195739388728061e-308]
[2.204431116101237e-308, 1.4528842266508651e-303, 1.965409477558363e-308, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

Hi there,
I have been giving this a bit of thought, and wanted to propose an alternative way of achieving this. Please let me know if this sounds like a sound approach:

Dump the dataset "as usual" (ie no sequence involved) where each datapoint may contain several fields for observation, reward, action, etc.
For each field type, create a decoder variant that accepts an offset. By this I mean replace https://github.com/libffcv/ffcv/blob/bfd9b3d85e31360fada2ecf63bea5602e4774ba3/ffcv/fields/ndarray.py#L37 with sample_id = indices[ix] + offset where offset is a parameter of the class.
Finally, use the new branch new_codegen to create several pipelines for the same field, something like:

pipelines={
     "obs0": PipelineSpec(source="obs", transforms=[NDArrayDecoderWithOffset(0), ToTensor()]),
     "obs1": PipelineSpec(source="obs", transforms=[NDArrayDecoderWithOffset(1), ToTensor()]),
     "rew0": PipelineSpec(source="reward", transforms=[FloatDecoderWithOffset(0), ToTensor()]),
     "rew1": PipelineSpec(source="reward", transforms=[FloatDecoderWithOffset(1), ToTensor()]),
}

One caveat is that the user must provide a list of ids to the Loader to avoid out-of-bounds access. This can be done by providing a SequenceLoader that takes care of this.

How does that sound? Is it safe to modify the sample_id like that (provided that we avoid out of bounds access)? I have tried some initial prototypes that seemed to be giving the correct result.
One thing I haven't really figured out yet is related to data augmentation. If we apply random augmentations, for example random cropping, then most likely we want the exact same transform applied to all the observations. Is there a way to achieve that? One way I can think of is to stack the observations that need to be together, then apply augmentations directly to the stack. Something like "stacked_obs": PipelineSpec(source=["obs0", "obs1"], transforms=[torch.stack()]) However, AFAICT currently PipelineSpec doesn't accept several sources.
Let me know what you think
Best


[stdlib] non-mutating range subscript setter on UnsafeMutableBufferPointer

In an apparent oversight (?), the setter for UnsafeMutableBufferPointer subscript(bounds: Range<Int>) isn't marked as nonmutating. Given that UnsafeMutableRawBufferPointer's equivalent is nonmutating, here is a non-mutating implementation.
I believe this shouldn't require swift-evolution involvement, but if this gets merged some  new "un-mutated var" warnings may appear.

SR-3782 mentions this. Someone mentioned working on it months ago, but there did not appear to be a pull request.

Regarding tests: I had assumed that when the tests passed it had been covered.
However, this is covered in validation-tests, but not in the regular tests. UnsafeRawBufferPointer has a test suite under tests/stdlib; it could be adapted for UnsafeBufferPointer, or this would remain covered during validation only. What's the recommendation?

UnsafeRawBufferPointer has a separate set of tests that cover behavior specific to that type, like non-Collection APIs and debug bounds checks. Unlike the validation test, they are not meant to be exhaustive. UnsafeBufferPointer could probably have the same thing if you think it's useful. I don't have a strong opinion.

I just realized, the setter should account for the fact that a mutation of self doesn't need to actually be written back, because reference semantics mean it's already happened.
i.e.:
someUnsafeBuffer[subrange].sort()

will generate first a call to get, then sort the slice, then write the sorted slice back via set. But when the type has reference semantics, the write-back is unnecessary, because the mutation has already happened on the underlying data, via the slice. So the non mutating set should check the identity of the buffer pointer to check for this scenario.

Is the pointer identity not checked by the builtin function called by assign(from:count:)?

UnsafeMutableBufferPointer and UnsafeMutableRawBufferPointer both need a non-mutating public subscript<R: RangeExpression>(r: R). Is that an evolution topic?

Is the pointer identity not checked by the builtin function called by assign(from:count:)?
Possibly somewhere in the runtime or libc. The point is, we don't even want to make that series of runtime calls. Checking in the else case of assign seems reasonable to me. Maybe that should also be in the doc comment since we want to make that assumption when called from UnsafeMutableBufferPointer.

👍

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - b4bc6d3a2e0cbbb0ad91ab3ce46a002768fd16f4

Build failed
Swift Test OS X Platform
Git Sha - b4bc6d3a2e0cbbb0ad91ab3ce46a002768fd16f4

The CollectionType validation test is expecting a particular crash message in withUnsafeMutableBufferPointer for the debug precondition
_debugPrecondition(bounds.count == newValue.count)
I'm not sure whether to just copy/paste the message or change the expectation...

The addition of debug messages seems fine to me.

Upon looking at it again, the validation tests that failed are called "subscript(_: Range)/defaultImplementation". They currently work by modifying an array through withUnsafeMutableBufferPointer in order to get a non-range-replaceable MutableCollection, but they're not testing the default implementation (_writeBackMutableSlice) anymore. I'm looking for a different MutableCollection they could call through.

Squashed commits. Do we want fewer still?

Either way, 1 commit or 4 commits, is fine with me.

OK then; to my eye it seems ready to merge.

@swift-ci please test

@swift-ci please test

Build failed
Swift Test Linux Platform
Git Sha - b0f66f835c08d8e009973ac7937d6235779c4c94

@swift-ci please test source compatibility

Build failed
Swift Test OS X Platform
Git Sha - b0f66f835c08d8e009973ac7937d6235779c4c94

@swift-ci please smoke test compiler performance

Build comment file:
Summary for master smoketest
No regressions above thresholds

Debug

debug brief
debug detailed

Release

release brief
release detailed

Debug

debug brief

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (2)

name
old
new
delta
delta_pct

LLVM.NumLLVMBytesOutput
23,285,028
23,285,020
-8
-0.0%

time.swift-driver.wall
30.9s
30.8s
-77.2ms
-0.25%

debug detailed

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (23)

name
old
new
delta
delta_pct

AST.NumImportedExternalDefinitions
47,780
47,780
0
0.0%

AST.NumLoadedModules
6,369
6,369
0
0.0%

AST.NumTotalClangImportedEntities
133,186
133,186
0
0.0%

AST.NumUsedConformances
2,713
2,713
0
0.0%

IRModule.NumIRBasicBlocks
65,495
65,495
0
0.0%

IRModule.NumIRFunctions
32,935
32,935
0
0.0%

IRModule.NumIRGlobals
36,442
36,442
0
0.0%

IRModule.NumIRInsts
702,158
702,158
0
0.0%

IRModule.NumIRValueSymbols
59,725
59,725
0
0.0%

LLVM.NumLLVMBytesOutput
23,285,028
23,285,020
-8
-0.0%

SILModule.NumSILGenFunctions
14,638
14,638
0
0.0%

SILModule.NumSILOptFunctions
25,709
25,707
-2
-0.01%

Sema.NumConformancesDeserialized
114,967
114,967
0
0.0%

Sema.NumConstraintScopes
416,017
416,017
0
0.0%

Sema.NumDeclsDeserialized
906,521
906,521
0
0.0%

Sema.NumDeclsValidated
28,449
28,449
0
0.0%

Sema.NumFunctionsTypechecked
27,343
27,343
0
0.0%

Sema.NumGenericSignatureBuilders
36,829
36,829
0
0.0%

Sema.NumLazyGenericEnvironments
185,054
185,054
0
0.0%

Sema.NumLazyGenericEnvironmentsLoaded
18,665
18,665
0
0.0%

Sema.NumLazyIterableDeclContexts
152,672
152,672
0
0.0%

Sema.NumTypesDeserialized
967,524
967,486
-38
-0.0%

Sema.NumTypesValidated
97,068
97,068
0
0.0%

Release

release brief

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (2)

name
old
new
delta
delta_pct

LLVM.NumLLVMBytesOutput
28,803,372
28,803,372
0
0.0%

time.swift-driver.wall
66.8s
66.8s
-24.5ms
-0.04%

release detailed

Regressed (0)

name
old
new
delta
delta_pct

Improved (0)

name
old
new
delta
delta_pct

Unchanged (delta < 1.0% or delta < 100.0ms) (23)

name
old
new
delta
delta_pct

AST.NumImportedExternalDefinitions
7,421
7,421
0
0.0%

AST.NumLoadedModules
227
227
0
0.0%

AST.NumTotalClangImportedEntities
22,601
22,601
0
0.0%

AST.NumUsedConformances
2,719
2,719
0
0.0%

IRModule.NumIRBasicBlocks
61,475
61,475
0
0.0%

IRModule.NumIRFunctions
26,597
26,597
0
0.0%

IRModule.NumIRGlobals
34,113
34,113
0
0.0%

IRModule.NumIRInsts
581,886
581,886
0
0.0%

IRModule.NumIRValueSymbols
54,292
54,292
0
0.0%

LLVM.NumLLVMBytesOutput
28,803,372
28,803,372
0
0.0%

SILModule.NumSILGenFunctions
10,842
10,842
0
0.0%

SILModule.NumSILOptFunctions
19,650
19,655
5
0.03%

Sema.NumConformancesDeserialized
68,558
68,558
0
0.0%

Sema.NumConstraintScopes
395,763
395,763
0
0.0%

Sema.NumDeclsDeserialized
133,769
133,769
0
0.0%

Sema.NumDeclsValidated
17,632
17,632
0
0.0%

Sema.NumFunctionsTypechecked
7,471
7,471
0
0.0%

Sema.NumGenericSignatureBuilders
4,540
4,540
0
0.0%

Sema.NumLazyGenericEnvironments
23,679
23,679
0
0.0%

Sema.NumLazyGenericEnvironmentsLoaded
2,660
2,660
0
0.0%

Sema.NumLazyIterableDeclContexts
12,645
12,645
0
0.0%

Sema.NumTypesDeserialized
157,620
157,601
-19
-0.01%

Sema.NumTypesValidated
31,082
31,082
0
0.0%

@swift-ci please test

@atrick Sorry to bother, but is this PR waiting on something else I'm not aware of?

@glessard It looks like I was the first to give this a thumbs up but was waiting for @airspeedswift review. @lorentey, you last ran a successful test here, do you want to retest and merge?

@swift-ci please test and merge

Thanks


working test suite with specified metadata structure

That's working well for me @soundstripe, thanks :+1:


Terminal is broken

VSCode Version: From source commit 6fba7f3
OS Version: Windows

Steps to Reproduce:

Open VS Code using code.bat
Try to open a terminal using View -> Integrated Terminal

You get:
[19504:0127/090725:INFO:CONSOLE(84)] "No option with key "useFlowControl": Error: No option with key "useFlowControl"
    at Terminal.getOption (P:\mseng\VSCode\vscode\node_modules\xterm\lib\xterm.js:208:15)
    at TerminalInstance._setFlowControl (file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalInstance.js:498:44)
    at TerminalInstance.updateConfig (file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalInstance.js:491:18)
    at TerminalInstance.attachToElement (file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalInstance.js:186:18)
    at new TerminalInstance (file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalInstance.js:54:22)
    at create (file:///P:/mseng/VSCode/vscode/out/vs/base/common/types.js:163:14)
    at InstantiationService._createInstance (file:///P:/mseng/VSCode/vscode/out/vs/platform/instantiation/common/instantiationService.js:142:43)
    at InstantiationService.createInstance (file:///P:/mseng/VSCode/vscode/out/vs/platform/instantiation/common/instantiationService.js:70:29)
    at TerminalService.createInstance (file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalService.js:78:63)
    at file:///P:/mseng/VSCode/vscode/out/vs/workbench/parts/terminal/electron-browser/terminalPanel.js:72:48", source: file:///P:/mseng/VSCode/vscode/out/vs/workbench/services/message/browser/messageService.js (84)

Fixed after npm install.


[FEATURE] arm64 support

Is your feature request related to a problem? Please describe.
Please provide arm64 support for Harvester, once all of the related dependencies have been built for that platform.
Describe the solution you'd like
#30 removes a build of Harvester for arm64, because Kubevirt is missing arm64 support
based on https://github.com/kubevirt/kubevirt/pull/3415 PR that has not yet landed.
Describe alternatives you've considered
No good alternatives.
Additional context
Happy to take a proposal through @worksonarm if test infra is needed.

thanks for the info and we will consider bringing back the arm64 support when this feature is officially supported by the kubevirt.

@guangbochen our main issue in kubevirt right now for supporting this is actually having ARM64 machines for building and CI. If rancher depends on it, maybe you can start a thread on the kubevirt-dev mailing list and see what we can do about this?

@rmohr @guangbochen
In https://github.com/WorksOnArm/cluster/issues/203 the @worksonarm project provided an Ampere system for kubevirt for building and CI on arm64 - perhaps the project could leverage that existing resource or ask for additional equipment as needed.

Kubevirt has now an ARM64 build as the above Kubevirt issue (kubevirt/kubevirt#3415 is now merged. Do we have any timeline for this support in Harvester?

KubeVirt ARM64 support is not completed yet. See the tracking issue at: https://github.com/kubevirt/kubevirt/issues/3558

From the tracking issue:  nightly developer releases of kubevirt are available at https://kubevirt.io/user-guide/operations/installation/#experimental-arm64-developer-builds.

Hello, does the current harvester 1.0 version support installation and deployment under the CPU of arm64 architecture?
I checked the current official documents, only the x86 architecture is supported, is there any plan for the arm64 architecture?

thanks for the info and we will consider bringing back the multi-arch support when it is available on the kubevir side.

Hello, both kubevirt and longhorn have supported arm64 architecture and can be deployed. Can harvester support deployment on servers with arm64 architecture?

Hello, both kubevirt and longhorn have supported arm64 architecture and can be deployed. Can harvester support deployment on servers with arm64 architecture?

Harvester uses Ranchers RKE2 which does not support ARM64 yet. There are a couple of issues open related to ARM64 support: rke2#817 (yasker linked this one above as well). Ultimately the main blocker seems to be a go lang issue related to boringcrypto not supporting ARM64.

Combine harvester with RKE2 is not a good idea... :)

Looks like The main blocker "Support BoringCrypto ARM64" for Go-lang is pending in go.dev/cl/423362 branch

Looks like The main blocker "Support BoringCrypto ARM64" for Go-lang is almost done and it is pending in go.dev/cl/423362 branch

Is anyone else following this issue now？

Harvester is dependent on rke2 and rke2 arm64 support is under development.

Any updates on this ?

Also wondering, now that RKE2 seems ready

move to 1.4.0 per the roadmap

pulling this back into 1.3.0 but this is pending confirmation of something in the build

Testing scope should be running e2e automation on ARM machines

e2e automation will fail because we fix images to use x86-based.

Tested v1.3.0-rc4 ISO installation work as expected.

Test Information

Environment: MegaRAC SP-X 2 nodes
Harvester Version: v1.3.0-rc4
ui-source Option: Auto

Test Fails
Storage Network
Unable to setup storage-network

Host Info
Host's details showing Hardware-based virtualization is disabled or not supported.

VM migration
Unable to trigger migration by UI or API

But we can still trigger migration via virtctl command tool

Add E2E test reports: test_result.zip
Not Tested (by automation)

Host power cycle related test cases (the cluster have only 2 nodes)
RKE1/RKE2 (automation bugs)
Update VM machine types (automation bug)

Other fails described in https://github.com/harvester/harvester/issues/371#issuecomment-1992017605, the part of migration had been resolved and be tested by automation.
Now we would need to know whether #5351 will be included in v1.3.0 and we will need to re-test the part of storage network, otherwise we can close this issue and document it in release note.

Close as this feature has been applied.
There still have some minor bugs would be track in other issues.
test_result_head.zip
Test Information

Environment: MegaRAC SP-X 2 nodes
Harvester Version: v1.3-2c8332b7-head
ui-source Option: Auto

Verify Steps

Install Harvester with any nodes
Perform automation tests and do smoke test manually


docs: add Roadmap

EngRes: please feel free to push edits directly to this branch; this is a collaboratively-edited document.

Follow-up PR:

https://github.com/ipfs/pomegranate/pull/8


File-breaking error in VS Code editor

I've twice now encountered a file-breaking error with VS Code. The only extensions I have installed are "Live Server (Five Server)" and the XML one. Since I installed the former extension some weeks ago but the bug has only occurred in the recent days, I can't say whether it has to do anything with it, i. e. with its live status, or not.
The issue is: for the second time now, a file I had been working on in VS Code has broken so fully that it not only can't be executed or opened/edited but it can't even be deleted anymore (it seems I'd need to fully format my USB drive if I wanted to delete those two files). So far it has always happened when I left my pc for a few minutes, not even enough for it to enter idle mode, leaving the file open in VS Code. It happened both with a js file and with an html one. When I returned, I couldn't save or execute it anymore – luckily, it was still possible to save everything under a new name, leaving me with the un-deletable old file separately.
Google is quite silent about this specific bug so I thought I'd ask here.

Does this issue occur when all extensions are disabled?: Yes/No (not sure)

VS Code Version: 1.91.1
OS Version: Windows 11 Education

Steps to Reproduce:

(probably, not sure yet) leave a file open in editor for too long

Steps to reproduce reliably?


Release 0.12.0

https://github.com/jowilf/starlette-admin/milestone/2

Can you add #377 to this release? I updated it for actions and migrated to the latest state.

Can you add https://github.com/jowilf/starlette-admin/pull/377 to this release? I updated it for actions and migrated to the latest state.

Done, Thank you


Binaries not being built?

Build step using houseabsolute/actions-rust-cross@v0 completes successfully, but only empty build deps examples and incremental folders are generated in the working directory
Did the binaries escape somewhere else?
Example run: https://github.com/deltasiege/godot-rapier-3d/actions/runs/9044423295/job/24853052477
EDIT: Running the same command locally as reported in the example run yields the binaries as expected
cross +stable build --locked --release --target i686-unknown-linux-gnu
...
ls target\i686-unknown-linux-gnu\release\

drwxr-xr-x 1 loki 197121       0 May 12 01:22 ./
drwxr-xr-x 1 loki 197121       0 May 12 01:20 ../
-rw-r--r-- 1 loki 197121       0 May 12 01:20 .cargo-lock
drwxr-xr-x 1 loki 197121       0 May 12 01:20 .fingerprint/
drwxr-xr-x 1 loki 197121       0 May 12 01:20 build/
drwxr-xr-x 1 loki 197121       0 May 12 01:22 deps/
drwxr-xr-x 1 loki 197121       0 May 12 01:20 examples/
drwxr-xr-x 1 loki 197121       0 May 12 01:20 incremental/
-rw-r--r-- 1 loki 197121    1155 May 12 01:22 libgodot_rapier_3d.d
-rw-r--r-- 2 loki<PHONE_NUMBER>240 May 12 01:22 libgodot_rapier_3d.so

Workflow:
# https://github.com/marketplace/actions/build-rust-projects-with-cross
# https://github.com/houseabsolute/precious/blob/master/.github/workflows/ci.yml
name: Release binaries

on:
  workflow_dispatch:
  push:
    paths:
      - "addons/godot-rapier-3d/rust/**"
    tags:
      - "[0-9]+.[0-9]+.[0-9]+" # Regex for a version number such as 0.2.1

defaults:
  run:
    working-directory: addons/godot-rapier-3d/rust

jobs:
  release:
    name: Release - ${{ matrix.release_for }}
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        include:
          - release_for: linux-x32-gnu
            os: ubuntu-latest
            target: i686-unknown-linux-gnu
            bin: godot_rapier_3d.linux.release.x86_32.so
            archive: linux-gnu-x86_32.tar.gz

          # - release_for: macos-x64-darwin
          #   os: macos-latest
          #   target: x86_64-apple-darwin
          #   bin: godot_rapier_3d.macos.release.framework
          #   archive: macos-darwin-x86_64.tar.gz

          # - release_for: windows-x64-gnu
          #   os: windows-latest
          #   target: x86_64-pc-windows-gnu
          #   bin: godot_rapier_3d.windows.release.x86_64.dll
          #   archive: windows-gnu-x86_64.zip

    steps:
      - uses: actions/checkout@v4
      - name: Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}
      - name: Determine version
        shell: bash
        run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
      - name: Build binary
        uses: houseabsolute/actions-rust-cross@v0
        with:
          command: build
          target: ${{ matrix.target }}
          args: "--locked --release"
          strip: true
          working-directory: "addons/godot-rapier-3d/rust"
      - name: List target dir
        shell: bash
        run: |
          ls -la ./target/release
          echo ---
          ls -la ./
          echo ---
          ls -la ../
          echo ---
          ls -la ../../
          echo ---
          ls -la ../../../
          echo ---
          ls -la ../../../../
      - name: Package as archive
        shell: bash
        run: |
          cd target/${{ matrix.target }}/release
          if [[ "${{ matrix.os }}" == "windows-latest" ]]; then
            7z a ../../../godot_rapier_3d-${{ env.VERSION }}-${{ matrix.archive }} ${{ matrix.bin }}
          else
            tar czvf ../../../godot_rapier_3d-${{ env.VERSION }}-${{ matrix.archive }} ${{ matrix.bin }}
          fi
          cd -
      - name: Publish release artifacts
        uses: actions/upload-artifact@v4
        with:
          name: godot_rapier_3d-${{ matrix.os_name }}
          path: "godot_rapier_3d-*"
      - name: Release
        uses: softprops/action-gh-release@v2
        with:
          draft: true
          files: "godot_rapier_3d-*"
          body_path: CHANGES.md

I forked your project and tested this. I think you're just looking for the wrong filename. It seems like it exists at ./target/release/i686-unknown-linux-gnu/release/libgodot_rapier_3d.so.
See https://github.com/autarch/godot-rapier-3d/actions/runs/9048355270/job/24861309109 for the CI run.

Thanks v. much for looking into it. I suspect you're right, but I ended up going with a different workflow so I can't confirm, will close


kannada.js

its a indian  regional kannada language

@yogishp Thanks for this contribution! It'll be added shortly

Hello @yogishp,
The Kannada language is now available as of version 1.7.0 - Thanks again for adding it!
https://franciscohodge.com/projects/simple-keyboard/demo-showcase/languages/kannada/
Regards,
Francisco Hodge


OpenZwave /dev/serial/by-id issue

Hi, i try to set my aeonzwave stick with topic address and get this error:
Failed to save addon configuration, not a valid value for dictionary value @ data['options']. Got {'device': '/dev/serial/by-id/myaeonstick,  'network_key': None}
have you try to do that? thanks

You have to set a network_key. Set it to an empty string when you don't want to have it, e.g., network_key: "".


Replace std::map with std::unordered_map.

This pulls the std::map -> std::unordered_map change from Bitcoin. The benefit is that unordered map is almost always faster in all aspects, plus it makes the code a bit more readable.
Remaining

[x] Sync from 0 (ongoing)
[ ] Ensure that there are no collisions due to only using 64bit keys

That 64 bit hash requires a test or research. Is it just a hash for hash table implementation and then the hash table handles collisions by comparing full key or is the 64 bit key directly used as key to the map?

Seems to be the former:
// Key
Type of the key values. Each element in an unordered_map is uniquely identified by its key value.
Aliased as member type unordered_map::key_type.

// Hash
The unordered_map object uses the hash values returned by this function to organize its elements internally, speeding up the process of locating individual elements.

http://www.cplusplus.com/reference/unordered_map/unordered_map/
I will verify this just to be sure.

look forward to testing this one. good work.

Test program with same hash for different keys:
#include <iostream>
#include <unordered_map>
#include <string>

struct hasher {
   size_t operator()(const std::string& key) const { return 0; }
};

int main(int argc, char** argv) {
   std::unordered_map<std::string, int, hasher> map;
   map["first"]  = 1;
   map["second"] = 2;
   std::cout << "First="    << map["first"] <<
                ", second=" << map["second"] <<
                ", size=" << map.size() << std::endl;

   return 0;
}

$ ./apa
First=1, second=2, size=2

Updated with some benchmarks. If everyone is ok with a little more RAM usage I think we should include this in the version after the current mandatory.


Set the height of bottom sheet or adapt it to content

Hi,
Great package but could you tell me if you plan to improve display by making the bottom sheet with adaptive height to content or at least being able to set the height to a specific height?

Hey, created a PR for that
https://github.com/Daniel-Ioannou/flutter_country_picker/pull/73

Released in v2.0.13


graphviz: 2.47.2 -> 2.47.3

Motivation for this change
This notably fixes https://forum.graphviz.org/t/assert-sz-2-in-convertsptoroute/689/4 which I was experiencing via (with a reproducing DOT file, I included it below):
dot -Goverlap=prism -Gsplines=ortho bonk.dot -T svg > bonk.svg

I confirmed this fixes the issue.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Reproduction of bug
REPRO
digraph {
    0 [ label = "Extension", shape = "cylinder"]
    1 [ label = "enum custom_types::generic_enum::SomeValue", penwidth = 0, style = "filled", fillcolor = "#C9A7C8", weight = 5, shape = "oval"]
    2 [ label = "type custom_types::hstore_clone::RustStore", penwidth = 0, style = "filled", fillcolor = "#AE9BBD", weight = 5, shape = "oval"]
    3 [ label = "type custom_types::fixed_size::FixedF32Array", penwidth = 0, style = "filled", fillcolor = "#AE9BBD", weight = 5, shape = "oval"]
    4 [ label = "type custom_types::complex::Animals", penwidth = 0, style = "filled", fillcolor = "#AE9BBD", weight = 5, shape = "oval"]
    5 [ label = "fn custom_types::generic_enum::get_some_value_name", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    6 [ label = "interal type alloc::string::String", shape = "plain"]
    7 [ label = "fn custom_types::hstore_clone::rstore_table", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    8 [ label = "fn custom_types::hstore_clone::rstore_size", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    9 [ label = "interal type i64", shape = "plain"]
    10 [ label = "fn custom_types::hstore_clone::rstore_remove", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    11 [ label = "fn custom_types::hstore_clone::rstore_get", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    12 [ label = "interal type core::option::Option<alloc::string::String>", shape = "plain"]
    13 [ label = "fn custom_types::hstore_clone::rstore_put", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    14 [ label = "fn custom_types::hstore_clone::rstore", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    15 [ label = "fn custom_types::hstore_clone::ruststore_out", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    16 [ label = "interal type &std::ffi::c_str::CStr", shape = "plain"]
    17 [ label = "fn custom_types::hstore_clone::ruststore_in", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    18 [ label = "fn custom_types::fixed_size::fixedf32array_add", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    19 [ label = "fn custom_types::fixed_size::fixedf32array_distance", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    20 [ label = "interal type f64", shape = "plain"]
    21 [ label = "fn custom_types::fixed_size::fixedf32array_out", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    22 [ label = "fn custom_types::fixed_size::fixedf32array_in", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    23 [ label = "fn custom_types::complex::add_animal", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    24 [ label = "interal type i32", shape = "plain"]
    25 [ label = "fn custom_types::complex::make_animals", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    26 [ label = "interal type pgx::datum::array::Array<alloc::string::String>", shape = "plain"]
    27 [ label = "interal type pgx::datum::array::Array<i32>", shape = "plain"]
    28 [ label = "fn custom_types::complex::known_animals", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    29 [ label = "fn custom_types::complex::animals_out", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    30 [ label = "fn custom_types::complex::animals_in", penwidth = 0, style = "filled", fillcolor = "#ADC7C6", weight = 4, shape = "box"]
    0 -> 1 [ color = "gray"]
    0 -> 2 [ color = "gray"]
    0 -> 3 [ color = "gray"]
    0 -> 4 [ color = "gray"]
    0 -> 23 [ color = "gray"]
    4 -> 23 [ color = "black"]
    6 -> 23 [ color = "black"]
    24 -> 23 [ color = "black"]
    4 -> 23 [ dir = "back", color = "black"]
    0 -> 28 [ color = "gray"]
    4 -> 28 [ dir = "back", color = "black"]
    0 -> 13 [ color = "gray"]
    2 -> 13 [ color = "black"]
    6 -> 13 [ color = "black"]
    6 -> 13 [ color = "black"]
    2 -> 13 [ dir = "back", color = "black"]
    0 -> 15 [ color = "gray"]
    2 -> 15 [ color = "black"]
    16 -> 15 [ color = "black"]
    0 -> 30 [ color = "gray"]
    16 -> 30 [ color = "black"]
    4 -> 30 [ dir = "back", color = "black"]
    0 -> 21 [ color = "gray"]
    3 -> 21 [ color = "black"]
    16 -> 21 [ color = "black"]
    0 -> 17 [ color = "gray"]
    16 -> 17 [ color = "black"]
    2 -> 17 [ dir = "back", color = "black"]
    0 -> 18 [ color = "gray"]
    3 -> 18 [ color = "black"]
    3 -> 18 [ color = "black"]
    3 -> 18 [ dir = "back", color = "black"]
    0 -> 14 [ color = "gray"]
    6 -> 14 [ color = "black"]
    6 -> 14 [ color = "black"]
    2 -> 14 [ dir = "back", color = "black"]
    0 -> 11 [ color = "gray"]
    2 -> 11 [ color = "black"]
    6 -> 11 [ color = "black"]
    12 -> 11 [ color = "black"]
    0 -> 29 [ color = "gray"]
    4 -> 29 [ color = "black"]
    16 -> 29 [ color = "black"]
    0 -> 22 [ color = "gray"]
    16 -> 22 [ color = "black"]
    3 -> 22 [ dir = "back", color = "black"]
    0 -> 25 [ color = "gray"]
    26 -> 25 [ color = "black"]
    27 -> 25 [ color = "black"]
    4 -> 25 [ dir = "back", color = "black"]
    0 -> 19 [ color = "gray"]
    3 -> 19 [ color = "black"]
    3 -> 19 [ color = "black"]
    20 -> 19 [ color = "black"]
    0 -> 8 [ color = "gray"]
    2 -> 8 [ color = "black"]
    9 -> 8 [ color = "black"]
    0 -> 7 [ color = "gray"]
    2 -> 7 [ color = "black"]
    6 -> 7 [ color = "black"]
    6 -> 7 [ color = "black"]
    0 -> 10 [ color = "gray"]
    2 -> 10 [ color = "black"]
    6 -> 10 [ color = "black"]
    2 -> 10 [ dir = "back", color = "black"]
    0 -> 5 [ color = "gray"]
    1 -> 5 [ color = "black"]
    6 -> 5 [ color = "black"]
}

The commit message should be updated s/42/47/g.
This should target staging branch due to amount of rebuilds.
Otherwise changes look okay:

We do not use Python 2 and the Python package is something else.
We do not use Perl (at least explicitly).

Ack, sorry about the commit message! Fixed now.

Result of nixpkgs-review pr 129560 at abe30177 run on x86_64-linux 1

79 packages marked as broken and skipped:

adoptopenjdk-hotspot-bin-13
adoptopenjdk-hotspot-bin-14
adoptopenjdk-jre-hotspot-bin-13
adoptopenjdk-jre-hotspot-bin-14
adoptopenjdk-jre-openj9-bin-13
adoptopenjdk-jre-openj9-bin-14
adoptopenjdk-openj9-bin-13
adoptopenjdk-openj9-bin-14
airtame
blastem
cassandra_2_1
cassandra_2_2
clickshare-csc1
curaByDagoma
cura_stable
displaycal
dvd-slideshow
electron_3
electron_4
electron_5
epsxe
ffmpeg_2
ffmpeg_2_8
ffmpeg_3
ffmpeg_3_4
gnash
gnuradio3_7
gnuradio3_7Packages.ais
gnuradio3_7Packages.gnuradio
gnuradio3_7Packages.gsm
gnuradio3_7Packages.limesdr
gnuradio3_7Packages.nacl
gnuradio3_7Packages.osmosdr
gnuradio3_7Packages.rds
googleearth-pro
grass
hadoop
hadoop_2_7
hadoop_2_8
hadoop_2_9
impressive
invoice2data
jboss
keyfinder
libav
libav_0_8
libav_11
libav_12
libgroove
linuxPackages_hardkernel_4_14.akvcam
linuxPackages_hardkernel_4_14.virtualbox
linuxPackages_hardkernel_latest.akvcam
linuxPackages_hardkernel_latest.virtualbox
loxodo
metamorphose2
natron
obinskit
odpdown
openrw
opentsdb
oven-media-engine
pcsxr
pdfdiff
pig
plover.stable
ring-daemon
scyther
spark
stepmania
termplay
torchat
tvheadend
twinkle
unicap
vdrPlugins.markad
vdrPlugins.vaapidevice
vdrPlugins.xineliboutput
winpdb
xpdf

1 package failed to build:

worldofgoo

6511 packages skipped due to time constraints:

AusweisApp2
DisnixWebService
MIDIVisualizer
OSCAR
R
SDL2_gfx
SDL2_net
SDL_gpu
Sylk
_1oom
...

101 packages built successfully:

SDL2
SDL2_image
SDL2_mixer
SDL2_ttf
adoptopenjdk-bin (adoptopenjdk-hotspot-bin-11 ,openjdk11-bootstrap)
openjdk16-bootstrap (adoptopenjdk-hotspot-bin-15)
openjdk8-bootstrap (adoptopenjdk-hotspot-bin-8)
chromaprint
cinnamon.bulky
ffmpeg (ffmpeg_4)
fheroes2
gnome.gnome-session-ctl
gtk3 (gnome.gtk ,gtk3-x11)
gnome.zenity
gssdp
gst_all_1.gst-libav
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-ugly
gupnp
gupnp-igd
kodelife
libcanberra (libcanberra_kde)
libcanberra-gtk3
libdbusmenu-gtk3
liberation_ttf (liberation_ttf_v2)
libnice
libva
libva-minimal
libxkbcommon (libxkbcommon_8)
nice-dcv-client
openconnect (openconnect_gnutls)
osu-lazer
pantheon.elementary-icon-theme
python38Packages.factory_boy
python38Packages.flask
python38Packages.flask-limiter
python38Packages.flask-restful
python38Packages.flask_sqlalchemy
python38Packages.google-auth
python38Packages.google-auth-httplib2
python38Packages.google-auth-oauthlib
python38Packages.httpbin
python38Packages.httplib2
python38Packages.httpretty
python38Packages.imageio-ffmpeg
python38Packages.ipython
python38Packages.jupyter_client
python38Packages.jupyter_core
python38Packages.matplotlib
python38Packages.matplotlib-inline
python38Packages.nbformat
python38Packages.oauth2client
python38Packages.pytest-httpbin
python38Packages.pytest-randomly
python38Packages.pytest-regressions
python38Packages.pytest-vcr
python38Packages.python-dotenv
python38Packages.vcrpy
python39Packages.factory_boy
python39Packages.flask
python39Packages.flask-limiter
python39Packages.flask-restful
python39Packages.flask_sqlalchemy
python39Packages.fonttools
python39Packages.fsspec
python39Packages.google-auth
python39Packages.google-auth-oauthlib
python39Packages.gst-python
python39Packages.httpbin
python39Packages.httplib2
python39Packages.imageio-ffmpeg
python39Packages.ipython
python39Packages.jupyter_client
python39Packages.jupyter_core
python39Packages.matplotlib
python39Packages.matplotlib-inline
python39Packages.nbformat
python39Packages.oauth2client
python39Packages.pytest-httpbin
python39Packages.pytest-randomly
python39Packages.pytest-vcr
python39Packages.python-dotenv
python39Packages.vcrpy
qrencode
signumone-ks
smpeg2
songrec
stoken
tonelib-gfx
tuna
upwork
vulkan-loader
wayland-protocols
wayland-scanner
wlrctl
wrapGAppsHook
xdotool
xfce.xfce4-dev-tools (xfce.xfce4_dev_tools)
xine-lib
xkbvalidate
xsnow

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.


chore: fix golang ci lint error

Describe what this PR does / why we need it

ignore has no field or method error from typecheck linter
replace deprecated linter to suggested replaced linter

Does this pull request fix one issue?

Describe how you did it
Describe how to verify it
Special notes for reviews

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Files
Coverage Δ

utils/archive/compress.go
16.31% <0.00%> (ø)

:loudspeaker: Thoughts on this report? Let us know!.


Fix typo in assemblyscript-api.mdx

The type of values should be V, not T.

Hi @benface, thank you for the approval. Looks like I need approvals for the workflows as well?

@ljiatu – No need to run this small content change through CI, I'll just merge. :) Thank you!


Empty plots produced

I think this is due to a mismatch of input data somehow -- e.g. samples in the biom table don't relate to the metadata file, or features in the biom table don't relate to the taxonomy file, or ranks in the ordination file don't relate to features.
I'm experiencing this with the Byrd skin data when thrown into Q2, and in other cases. I'll try to figure out what's behind this.

It looks like the ordination file for the nonworking case (which you can look at by just unzipping the relevant qza and looking in data/ordination.txt) just has three features? which seem to correspond to the headers of the beta.csv file (intercept, c(timepoint, treatment('F'))[T.B], ...).
Whereas the working ordination file has 609 features and 184 samples.
Actually... it looks like features and samples were swapped around in the nonworking ordination file. The "samples" are all just taxa names in the same sorta style as in beta.csv.
In the process of generating the nonworking ordination file, I ran qiime songbird multinomial then qiime songbird regression-biplot. I remember that QIIME 2 complained about the ordination file, actually --
There was an issue with loading the file /Users/mfedarko/skin-metagenome/data/byrd_metadata.txt as metadata:

  Found unrecognized ID column name 'Sample_ID' while searching for header. The first column name in the header defines the ID column, and must be one of these values:

  Case-insensitive: 'feature id', 'feature-id', 'featureid', 'id', 'sample id', 'sample-id', 'sampleid'

  Case-sensitive: '#OTU ID', '#OTUID', '#Sample ID', '#SampleID', 'sample_name'

  There may be more errors present in the metadata file. To get a full report, sample/feature metadata files can be validated with Keemei: https://keemei.qiime2.org

  Find details on QIIME 2 metadata requirements here: https://docs.qiime2.org/2018.11/tutorials/metadata/

And q2-emperor didn't like it even when I adjusted the metadata file to use an accepted sample-id column name:
Plugin error from emperor:

  None of the sample identifiers match between the metadata and the coordinates. Verify that you are using metadata and coordinates corresponding to the same dataset.

So this is probably an error with the metadata somehow. I'll try to get it fixed ASAP.

After a few days of working on this + conversations with Jamie, I'm like 99% sure this will be resolved when #51 is (it's a problem with handling inputs from songbird).
However, I'm leaving it open for now just in case it isn't for some reason.

Yeah, the Byrd data works in rrv now. Closing.


Unable to add labels in bar chart

How can I do this?

 Which label?

Hi,
Label for each bar that describe it.
Thanks,
Omri
On Thu, Nov 21, 2019 at 6:52 PM Andras Samu<EMAIL_ADDRESS>wrote:

[image: Screenshot 2019-11-21 at 17 51 18]
https://user-images.githubusercontent.com/2826764/69358766-ae24ff80-0c87-11ea-9ffb-658f7b8c50a0.png
Which label?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/AppPear/ChartView/issues/18?email_source=notifications&email_token=AAKSNHGZRAELV2BGC7K4BADQU24FVA5CNFSM4JPVEAQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEE247OQ#issuecomment-557174714,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKSNHH53LDL2IBPSW22KPTQU24FVANCNFSM4JPVEAQA
.

Label for each bar that describe it.

Would also need some kind of X/Y Legend like date and value

I just wanted to add that I'd also love to see this. Specially, labels for each X value, but ideally also some Y axis labels like you have for the line chart!

Check out 1.4.6


Introduce ThemeManager

to make themes configurable in the console application
TODO: After @wouterj introduces installable packages, themes should register themselves
resolves #291

@jaapio rebased, please have a look

@jaapio changed theme registration, please have another look

Thanks for this improvement!


Fix security vulnerabilities

Can find them by running yarn audit or go here: https://github.com/cognitedata/cognitesdk-js/network/alerts

fixed some of them https://github.com/cognitedata/cognitesdk-js/pull/233
but not everything, explained in pr

Moved to JIRA

Moved to JIRA


[Suggestion] Add group setting for resource groups

OS: Windows
Build Version: 20200310.1
Repro Steps:

Make sure there are some existing resource groups.
Check the grouping mode.

Actual:
All existing resource groups are grouped in alphabetical order.
Suggestion:
Add group setting then the users can change the grouping mode.

This issue has become stale and is at risk of being closed. The community has 60 days to upvote the issue. If it receives 5 upvotes we will keep it open and take another look. If not, we will close it. To learn more about how we handle issues, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this issue has received less than 5 community upvotes and we closed it. Still a big Thank You to you for taking the time to create it! To learn more about how we handle issues, please see our documentation.
Happy Coding!


fix: display entity evaluation

Fixes https://github.com/botfront/botfront/issues/682
:: https://app.asana.com/0/1000996379802102/1188526462487337/f

Unfortunately, I wasn't able to fix the tooltip.


Separate fixed misc fee sections

Let's look at this method with the same name as an association together and see what's going on.


[Extensibility Enhancement] Codeunit 2846 "Post Inventory Cost to G/L" - Add TableNo property and expose in event

Hi,
This is a very simple codeunit that standard uses to schedule when the "Automatic cost posting" is not active.
Would be posible to add the TableNo and an event?
codeunit 2846 "Post Inventory Cost to G/L"
{
// ---> New property
    TableNo = "Job Queue Entry";
// ---> New property

    trigger OnRun()
    begin
        PostInvToGL.InitializeRequest(PostMethod::"per Entry", '', true);
        PostInvToGL.UseRequestPage(false);
// ---> New event with Rec and PostInvToGL
        PostInvToGL.Run();
    end;

    var
        PostInvToGL: Report "Post Inventory Cost to G/L";
        PostMethod: Option "per Posting Group","per Entry";
}

Thanks

Please explain why do you need TableNo and what is event defenition?

Please explain why do you need TableNo and what is event definition?

Hi. Since the codeunit is intended to use as queue, we thought it was great to be able to access to the queue record and get the parameter string to make personalizations. The event was to be able to make that personalizations.
However, this ticket  has 1 year. We already created a custom codeunit to solve that.
Thanks.


Add an option to make ChainShape two-sided

In #607, ChainShape was made one-sided. This behavior is not really backward compatible with previous versions of Box2D. I wonder if it may be possible to add a feature to have a two-sided ChainShape.
The documentation only says that if you need a two sided chain, you can "create a bunch of two-sided edge shapes". Would it be possible to automate this process in ChainShape? Currently, what I'm doing is create a first chain, reverse the points and create a second chain, but I feel it's not really a good solution.

It is not backwards compatible. This was unavoidable because smooth collision does not work with two-sided collision. If you want two-sided collision you have to give up smoothness. If you still want two-sided collision use edge shapes: https://github.com/erincatto/box2d/blob/47b1bfa13338c9322c77b70c9058b236d02fd046/include/box2d/b2_edge_shape.h#L43
Using back-to-back one-sided collision has undefined behavior and will not be automated.


Cannot find module "@ms/sp-telemetry" on SPFx unittest

I am writing unit test for SPFx web part. when i run gulp test command i am getting the following error "Cannot find module "@ms/sp-telemetry"". i am using '@microsoft/sp-http' in the react component.
I have the following versions
"dependencies": {
"@microsoft/decorators": "^1.5.0",
"@microsoft/sp-application-base": "^1.5.0",
"@microsoft/sp-client-preview": "^1.5.0",
"@microsoft/sp-core-library": "^1.5.0",
"@microsoft/sp-http": "^1.5.0",
"@microsoft/sp-lodash-subset": "^1.5.0",
"@microsoft/sp-office-ui-fabric-core": "~1.4.1",
"@microsoft/sp-webpart-base": "^1.5.0",
"devDependencies": {
"@microsoft/sp-build-web": "^1.5.0",
"@microsoft/sp-module-interfaces": "^1.5.0",
"@microsoft/sp-webpart-workbench": "^1.5.0",
"@types/chai": ">=3.4.34 <3.6.0",
"@types/enzyme": "^2.8.12",
"@types/mocha": ">=2.2.33 <2.6.0",
"@types/sinon": "^1.16.36",
Please do let me know if any additional information required.
Thanks,

Unfortunately not enough information for repro. We would need to understand used versions, what unit test framework is used etc. Closing as not actionable for our side.

I am writing unit test for SPFx web part. when i run gulp test command i am getting the following error "Cannot find module """. i am using '' in the react component.
I have the following versions
"dependencies": {
"": "^1.5.0",
"": "^1.5.0",
"": "^1.5.0",
"": "^1.5.0",
"": "^1.5.0",
"": "^1.5.0",
"": "~1.4.1",
"": "^1.5.0",
"devDependencies": {
"": "^1.5.0",
"": "^1.5.0",
"": "^1.5.0",
"": ">=3.4.34 <3.6.0",
"": "^2.8.12",
"": ">=2.2.33 <2.6.0",
"": "^1.16.36",
Please do let me know if any additional information required.

basically same problem as this. Still not fixed after nearly a year. https://github.com/SharePoint/sp-dev-docs/issues/526


[BOT PR] to update dependencies of istio

This PR will be merged automatically once checks are successful.
none

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
Assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-unit-tests

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-unit-tests

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e-envoyv2-v1alpha3

prow/istio-pilot-e2e.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-unit-tests

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e-envoyv2-v1alpha3

prow/istio-pilot-e2e.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e

prow/e2e-bookInfoTests-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@istio-testing: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-unit-tests

prow/istio-pilot-e2e-envoyv2-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e-envoyv2-v1alpha3

prow/istio-pilot-e2e.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test istio-pilot-e2e

prow/e2e-bookInfoTests-v1alpha3.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test e2e-bookInfo-envoyv2-v1alpha3

prow/e2e-bookInfoTests.sh
6326f83cba61fa58e5d4d0e47443902c54dff1ab
link
/test e2e-bookInfo

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Restrict which types are allowed to be embedded in xml.

This commit changes the "Implicitly converted X to it's string, representation"
runtime warnings into a compiler error. A clean compiler error message should
appear when invalid types are inserted into xml literals. Example:
test/scala/mhtml/XXX.scala:10: Cannot embed value of type 'A' into an xml literal. Allowed types are:
[error] Base types:
[error]   - String (tip: you can use A.toString)
[error]   - Int
[error]   - xml.Node
[error]   - List[xml.Node], Seq[xml.Node] and other Iterable containers.
[error] Event handlers:
[error]   - () => Unit
[error]   - T => Unit, where T can be any type.
[error] Monadic-html:
[error]   - mhtml.Rx[T] or mhtml.Var[T], where T is a type that can be embedded into an xml literal. For example, a String or Seq[xml.Node].
[error]     def entity = <div>{new A}</div>

This change eliminates the need for implicit conversions to xml.Node in the
mhtml package object.
The scala-xml-light project is merged into the monadic-html repo, in order to
include mhtml.Rx as part of the xml api.

Any suggestions on the implicitNotFound message? It's a bit verbose for my taste, but tries to be friendly and helpful.

Whoops, closing this in favor of existing PR #27


yakyak does not start

Hi guys.
from some days, yakyak did not start.
When i try to launch it from the terminal, the system return me this error
$ yakyak
Starting Yakyak v<IP_ADDRESS>...
  using hangupsjs v1.4.0-beta

[9714:0827/113104.510406:FATAL:gpu_data_manager_impl_private.cc(445)] GPU process isn't usable. Goodbye

I use debian testing (12).
I tried to uninstall and reinstall yakyak without result.

JFYI: after several attempts it manage to start.

It's related to electron 11.  I have to do yakyak --no-sandbox currently.


Set an Team to Aleeva integration is not saved

Hi,
Set an Team to Aleeva integration is not saved, and all aleeva integrations stay with "No team" configuration.
So PlenBot send dps report to all aleeva integration and so to all channels :/
Issue linked : https://github.com/HardstuckGuild/PlenBotLogUploader/issues/6

Fixed in 34b6d72cac9e20caa8768cc87e1bd1a523611fa8


[Bug] [CI] CI doesn't have permissions to push to kuberay dockerhub

Search before asking

[X] I searched the issues and found no similar issues.

KubeRay Component
ci
What happened + What you expected to happen
All image push jobs in the CI are failing due to a permissions issue.
Reproduction script
https://github.com/ray-project/kuberay/actions/runs/3654066685/jobs/6174159064
Anything else
I first noticed this last night (December 8)
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

@DmitriGekhtman Seems this job is recently added. https://github.com/ray-project/kuberay/blob/master/.github/workflows/image-release.yaml#L63
What's the secret configured there?

/cc @DmitriGekhtman

This is the latest ci job with docker login https://github.com/ray-project/kuberay/actions/runs/3661359804/jobs/6189495597

BTW, we are using free docker account, team size and download quota are very limited. Let's see if we can find sponsorship and we can upgrade to an enterprise account.

Let's see if we can find sponsorship and we can upgrade to an enterprise account.

cc @pcmoritz? :)


ESP SPI Master with two devices on one bus does not work (IDFGH-2652)

INSTRUCTIONS
Before submitting a new issue, please follow the checklist and try to find the answer.

[+] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[+] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[+] I have searched the issue tracker for a similar issue and not found a similar issue.

Environment

Development Kit:      [ESP32-DevKitC]
Kit version (DevKitC): [v1]
Module or chip used:  [ESP32-WROOM-32]
IDF version (run git describe --tags to find it): 3.3.1
Build System:         [idf.py]
Compiler version (run xtensa-esp32-elf-gcc --version to find it): 5.2.0
Operating System:     [Windows]
(Windows only) environment type: [ESP Command Prompt].
Using an IDE?: [Yes] VSCode
Power Supply:         [USB]

Problem Description
I connected two devices to the SPI port. AS3933 and CC1101. If I initiate AS3933, communication works correctly.
After adding the second CC1101 device, there is no communication with AS3933.
After physical disconnection, CC1101 still has no communication.
Code to reproduce this issue
void app_main()
{
	uint8_t test;
	as3933_create();
	as3933_read_byte(5, &test)
    ESP_LOGD(TAG, "RFID Init %s", test == 0x96 ? "OK" : "Fail");
	cc1101_create();
	as3933_read_byte(5, &test) //return 0!!
    ESP_LOGD(TAG, "RFID Init %s", test == 0x96 ? "OK" : "Fail");
}

static spi_device_handle_t as3933;
esp_err_t as3933_create()
{
    esp_err_t error = ESP_OK;

    spi_bus_config_t buscfg = {
        .miso_io_num = GPIO_NUM_19,
        .mosi_io_num = GPIO_NUM_23,
        .sclk_io_num = GPIO_NUM_18,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1};

    spi_device_interface_config_t devcfg = {
        .clock_speed_hz = SPI_MASTER_FREQ_8M,
        .mode = 1,                                    //SPI mode 1
        .spics_io_num = GPIO_NUM_5,                   //CS pin
        .flags = SPI_DEVICE_POSITIVE_CS,
        .queue_size = 1, //We want to be able to queue 7 transactions at a time
        .command_bits = 8};

    //Initialize the SPI bus
    error = spi_bus_initialize(VSPI_HOST, &buscfg, 0);
    error = spi_bus_add_device(VSPI_HOST, &devcfg, &as3933);
    return error;
}

esp_err_t as3933_read_byte(uint8_t addr, uint8_t *byte) {
    esp_err_t error = ESP_OK;
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.length = 8;
    t.cmd = addr | 0x40;
    t.rx_buffer = byte;

    error = spi_device_polling_transmit(as3933, &t);
    return error;
}

static spi_device_handle_t cc1101_handle;
esp_err_t cc1101_create() {
      esp_err_t error = ESP_OK;
      spi_device_interface_config_t devcfg = {
          .clock_speed_hz = SPI_MASTER_FREQ_8M,
          .mode = 3,                                    //SPI mode 1
          .spics_io_num = GPIO_NUM_15,                   //CS pin
          .queue_size = 1,                              //We want to be able to queue 7 transactions at a time
          .command_bits = 8};

      error = spi_bus_add_device(VSPI_HOST, &devcfg, &cc1101_handle);
      return error;
}

Debug Logs
D (348) AS3933_HAL: as3933_create
D (418) spi: SPI3 use iomux pins.
D (428) spi_master: eff: 2000, limit: 80000k(/0), 0 dummy, -1 delay
D (438) spi_master: SPI3: New device added to CS0, effective clock: 2000kHz
D (438) AS3933_HAL: as3933_cmd?[0m
D (448) spi_master: SPI device changed from 3 to 0?[0m
D (458) AS3933_HAL: as3933_read_byte
D (468) app_main: RFID Init OK
D (2468) CC1101_HAL: cc1101_create
D (2468) spi_master: eff: 2000, limit: 80000k(/0), 0 dummy, -1 delay
D (2468) spi_master: SPI3: New device added to CS1, effective clock: 2000kHz
D (2478) AS3933_HAL: as3933_read_byte
D (2488) app_main: RFID Init Fail

Could this maybe be related to my issue #4641? I still haven't heard anything back from that one. Although with your code, both devices seem to be full-duplex.

I changed the order of adding the device and it works correctly.
First, I add a device with a low-cs level.

Up

Solution in this threat https://github.com/espressif/esp-idf/issues/4641

In master is this same problem
https://github.com/espressif/esp-idf/blob/625bd5eb1806809ff3cc010ee20d1f750aa778a1/components/soc/src/esp32/include/hal/spi_ll.h#L294

Your issue is resolved by commit 27a6f266, check this issue when it's sync to master. Thanks~

Interesting. I'm having an issue which I can't tell if it's related, but it seems to be in some degree through the use of polling transactions. I get a LoadProhibited crash right when I'm adding a second device to VSPI bus, and the addr2line output points exactly to this line with discriminator 2. Similar to your case, it does seems to be something related to when the all but the first device are added to the spi bus, as I'm also adding the 2nd device after I started using the first one.
@Icarus113 do you have any idea about this being related to OP's issue?


Add csv_scenarios:load rake task

Creates a new scenario for each csv file in config/csv_scenarios
Run with rake csv_scenarios:load
Area code currently hardcoded

I'm not so keen on having to commit the CSV files to the repo; even after deletion Git will retain a copy.
@jorisberkhout Can you clarify why this is needed? If they're scenarios to be kept long-term, we could instead add them as presets. If you just want to add them as a one-off, I think we'd be better adding a CSV import option to the ETEngine new scenario form.

Good point, @antw. I got a request from somebody who likes to create multiple scenarios at once (for now 12) without having to set all the sliders by hand. I discussed with @dennisschoenmakers and offered this person an Excel sheet where he could fill out the settings of all relevant sliders for all his scenarios at once. From this sheet, I created the 12 CSV files in the pull request (@twilkinson573 modified them slightly).
I had never seen the new scenario form :blush:, but that is exactly what where looking for. I think it is best if @twilkinson573 and myself create the YML files from the CSV files and use the new scenario from.
I suggest you close this pull request. Thanks for the suggestion!


Fix APEX download URL

Per https://github.com/oracle/vagrant-boxes/issues/157#issue-515984304

URL update


Create aktocollege.txt

URL: https://akto.gr/
IT- related course: https://akto.gr/studies/course/ptyxio-bachelor-in-game-design/
Screenshot of aktocollege.gr redirecting to akto.gr:

@Vrachno Pull request merged. Thank you!


API for constructing stateless ViewStore

I find that I occasionally need to use WithViewStore only for the purpose of being able to send actions, without ever accessing any state on the view store directly (generally this happens when I introduce some more local store somewhere down the tree, with a ForEachStore or an IfLetStore). For example, if I'm rendering a table section with some list elements, I might do something like this:
WithViewStore(self.store) { viewStore in
    Section(header: Text("Header Text")) {
    ForEachStore(self.store.scope(state: \.books.elements, action: ReadingListAction.rowInteraction)) { bookStore in
            WithViewStore(bookStore) { bookViewStore in
                BookRow(title: bookViewStore.title)
                    .onAppear { viewStore.send(.rowAppeared(bookViewStore.id)) }
                    .onDisappear { viewStore.send(.rowDisappeared(bookViewStore.id)) }
            }
        }
    }
}

In this case, I want the rowAppeared and rowDisappeared actions to be sent to the top-level reducer, so I need the global viewStore, however I never need to touch any of its state directly.
This works fine, however I'm now re-rendering the entire section every time any of my rows are updated, which is unnecessary. What I actually want is to have the top-level viewStore ignore any state changes and just provide an outlet to send actions.
In these cases, it seems like the correct thing to do is to scope the store down to an empty state struct. Doing so is a bit cumbersome, so I've been using a custom helper:
public extension Store {
    struct Stateless: Equatable {}
    func stateless() -> Store<Stateless, Action> {
        return self.scope(state: { _ in Stateless() })
    }
}

There's a handful of different ways this could be expressed in the API (a WithStatelessViewStore helper might be better, because I see no other purpose for a stateless store other than to feed a ViewStore). Maybe the problem I'm trying to solve is a code smell and I should just refactor my actions or views to avoid the need for this altogether; either way, curious to hear thoughts.

WithViewStore can take a closure to remove duplicates, you could maybe make it so it always return true? Even creating a WithStatelessViewStore wrapper that does this for you.
This is a hacky solution, so don’t take it too seriously, I just wanted to share my two cents.

@LK Thanks for starting this discussion! This is definitely a common enough problem that it would be nice to have a dedicated helper to solve it. We just haven't quite figured out the name that feels "right" yet.
@Odrakir Yup! You can create a stateless store by erasing its state to Void:
store.scope(state: { _ in () }, removeDuplicates: ==) { … }

// When "SE-0283: Tuples conform to Equatable, Comparable, and Hashable" lands:
store.scope(state: { _ in () }) { … }

Neither of these solutions are great, though, so we're down to workshop things a bit.

Some designs @mbrandonw and I have previously discussed:

Introduce module-level noState and noAction transform functions:
let sendOnlyStore = store.scope(state: noState)
let readOnlyStore = store.scope(action: noAction)

Pro: reuse existing methods.
Con: introduce new module-level functions, which are slightly less discoverable and can feel "wrong" to some folks.

Introduce methods that bundle up this behavior:
let sendOnlyStore = store.withoutState()
// or `.withoutState(action: { .localAction($0) })`
let readOnlyStore = store.withoutActions()
// or `.withoutActions(state: { $0.localState })`

Are there better names? ignoring{State,Action}?

I would definitely vote for 2. The first alternative doesn't read particularly well, even when putting aside other concerns.
As for the name, ignoringX could definitely work. Or to match reducer.optional, this could be a computed variable named something along the lines of store.stateless and store.actionless (just spitballing here).

I've opened https://github.com/pointfreeco/swift-composable-architecture/pull/45 to play around with the property-based API and it's feeling nice! We'll leave discussion open around naming for a bit, but I think stateless and actionless are definitely top contenders!

Thanks for the speedy PR @stephencelis! Having thought about it a bit more, I'm starting to like ignoringState() or something along those lines more, because a stateless store seems like a bit of an oxymoron — what good is a store without any state, what we're really doing is just ignoring the state. I would agree that a global transform function seems unnecessary here, so I like the way you have the API structured in #45.
I also like the WithViewStore extension, seems cleaner than what how I had originally implemented it.

Implemented in #45


Documentation:  Admiral/Legal approved platform for recorded videos: training, conference presentations

Please select a category the issue is focused on?
User Guides, I have a new documentation idea! Yay!
Let us know where something needs a refresh or put your idea here!
Instead of having a live demo at GSK on how to create ADAE (following the example in the article "Creating an OCCDS ADaM"), I am working on creating a training video for new users which does not mention me, anyone else, Roche, GSK  (except for whatever is already there on CRAN, e.g. authors, contributors, etc.).
I am hoping that we can create a series of such training videos and have them available to the general public. In order to make these videos available, we need a platform: a YouTube channel? a Slack channel? We need someone with some experience with this to evaluate which platform would be best (there may be size and cost constraints) and set up the platform.
We would also need to ensure that there is not any company-specific branding, etc. and get Legal to give their approval. Since these specific series of videos would be nothing more than what is already publicly available on GitHub, I expect the approval would be straight-forward.

@mstackhouse @skalappu @rossfarrugia
I think it's fine - as long as the videos do not contain anything corporate or proprietary. I saw a video @esimms999-gsk created on ADAE creation and it seemed sterilized enough that I think there is no issue.

Thanks for the input! I'll look to get something set up for this soon and will share it out

YouTube channel now available: https://www.youtube.com/channel/UCxQFEv8HNqM01DXzdQLCy6Q
Reminder @thomas-neitmann or @bms63 to add this link to our README please and then it would be fine to close this issue.

thanks @bms63 - we can close this one then as you made a new issue


Temperature: Output board status

The temperature now outputs a 32-bit status code (hex) at the end of each data transmission every 10Hz. The 16 MSB bit are defined by the status library (part of systemInfo.c/.h). The temperature board specific status code is located at the 16 LSB bits and are defined as follows:

15 (MSB)
...
9
8
7
6
5
4
3
2
1
0 (LSB)

x
...
ADS_5 MSB
ADS_5 LSB
ADS_4 MSB
ADS_4 LSB
ADS_3 MSB
ADS_3 LSB
ADS_2 MSB
ADS_2 LSB
ADS_1 MSB
ADS_1 LSB

There are 5 ADS1120 chips responsible for measuring 2 ports each. If the board has connection issues with one of these ADS1120 chips it is reported in the status code shown above as well as setting the generic error bit.
NOTE: While implementing the status codes it became apparent that the library for the ADS1120 control has several functions that look like they will fail if the ADS1120 chip is malfunctioning, but actually only checks whether the MCU is able to create a SPI transfer. Hence, an update should be made to that library which will make the status code more precise. It has been put in the backlog in this ticket.

@freddyrios & @LarsWithCA mentioned you on this project so you can see how we intend to interface with the status library. Feel free to review as well.

Looks good, minor details.
Something I missed in the original review of the status library was about persistent bits: #10. I made an issue.

Made a reply for the ticket. :=)

Don't see any problems while testing. All functions seem to do what they're supposed to


Performance Testing

The current testing just covers basic functionality, but it would be a good to add some tests that stress the pool with various combinations of parameters and measure the performance. Additionally, the current default pool size and connection limit were something I chose because they seemed reasonable, but it would better to find defaults based on empirical testing.

Currently, my plan is to create a bench sub-module that will spin up an axum server with various endpoints for various redis operations. Then use Apache Bench or a similar tool to measure requests per seconds while doing some performance and heap profiling using valgrind (https://valgrind.org/docs/manual/cl-manual.html and https://valgrind.org/docs/manual/ms-manual.html)

I mean it sounds good though for this type of testing we only really need to know how well it handles 1000 vs 1000 connections with a few different settings and a overall Speed ratio of how long it takes to do 1000 requests.

I actually didn't realize that cargo had a built-in benchmarking functionality till I looked it up earlier. I agree, and think it would make sense to implement some benchmarks that use raw redis requests + connections before moving on to more complex tests/profiling.

let me know when this is completed.

Will do. Still have to make some better visualizations for the benchmark data, just haven't gotten around to it yet.


chore: prepare for v0.11.0 release

With #9 and #11 done, now we are almost ready for v0.11.0 release.
Since this will be a new major release, I would like to clean up the API and remove anything that will be confusing.
@jonhoo Can you help me with this, by looking at the public APIs exposed by openssh-sftp-client and see if there is anything you would like to remove or add?

Released openssh-sftp-error v0.1.0, openssh-sftp-client-lowlevel v0.1.0

Released openssh-sftp-client v0.11.0-rc.1

openssh-sftp-client v0.11.0-rc.2 is released

openssh-sftp-client v0.11.0-rc.3 is released!

Given that we're still 0.x I think it's okay to do the release and then iterate based on feedback. Manual inspection is only going to get us so far :)

@jonhoo openssh-sftp-client 0.11.0 has released!


Support for .NET 4.5

Seems that the latest nuget package forces the .NET Standard libraries as a dependency. Any plans of adding a .NET 4.5 dependency branch or creating a legacy package that supports .NET 4.5?

I've updated the NuGet package now (3.0.4) so it supports 4.5, as .NET Standard only support 4.5.1 onwards
Let me know if there are any problems


LU decomposition

Use dgestr #6

This works well for fortran order, but does not for C order matrices.

I use LAPACKE interface in LU while other routines uses fortran one.


Unexpected error: Bound type variable not found

Got the following error when trying to make wf.fst build again:
Unexpected error; please file a bug report, ideally with a minimized version of the source program that triggered the error.
Failure("Bound type variable not found: aa")

Saving this for later study.

hitting an error
$ fstar --universes bug274.fst
D:\Sources\FStar\examples\bug-reports\bug274.fst(4,11-4,13) : Error
Inconsistent implicit argument annotation on argument aa#53

This does not occur with universes. Closing.


Adding types

What kind of change does this PR introduce?
This exposes more type definitions that are required for proper plugin development using Typescript.
Did you add tests for your changes?
There are no existing type tests. Added the types and ran the fix script as directed.
Does this PR introduce a breaking change?
Np, there are no type changes, just adding to the final export. The fix script changed the actual definition file. My edit was only to lib/index.js
What needs to be documented once your changes are merged?
Nothing. Typescript is self documentation.

Can you accept CLA?

Can you accept CLA?

I would be happy to. I'm looking for a link to accept it.

Weird that checks failed now.
6 files have unexpected coverage changes not visible in diff
Something is amiss with the codecov. Only 2 files were changed and that was exposing more types.
Seems odd that code coverage would drop in anyway.

Ignore this

Any chance to see this reviewed and merged?

This PR is broken and I can't modify it. Closing in favor of https://github.com/webpack/webpack/pull/14855