how to convert a dict generator into a huggingface dataset.

Link
No response
Description
Hey there, I have used seqio to get a well distributed mixture of samples from multiple dataset. However the resultant output from seqio is a python generator dict, which I cannot produce back into huggingface dataset.
The generator contains all the samples needed for training the model but I cannot convert it into a huggingface dataset.
The code looks like this:
for ex in seqio_data:
print(ex[“text”])

I need to convert the seqio_data (generator) into huggingface dataset.
the complete seqio code goes here:
import functools

import seqio
import tensorflow as tf
import t5.data
from datasets import load_dataset
from t5.data import postprocessors
from t5.data import preprocessors
from t5.evaluation import metrics
from seqio import FunctionDataSource, utils

TaskRegistry = seqio.TaskRegistry

def gen_dataset(split, shuffle=False, seed=None, column="text", dataset_params=None):
    dataset = load_dataset(**dataset_params)
    if shuffle:
        if seed:
            dataset = dataset.shuffle(seed=seed)
        else:
            dataset = dataset.shuffle()
    while True:
        for item in dataset[str(split)]:
            yield item[column]

def dataset_fn(split, shuffle_files, seed=None, dataset_params=None):
    return tf.data.Dataset.from_generator(
        functools.partial(gen_dataset, split, shuffle_files, seed, dataset_params=dataset_params),
        output_signature=tf.TensorSpec(shape=(), dtype=tf.string, name=dataset_name)
    )

@utils.map_over_dataset
def target_to_key(x, key_map, target_key):
    """Assign the value from the dataset to target_key in key_map"""
    return {**key_map, target_key: x}

dataset_name = 'oscar-corpus/OSCAR-2109'
subset= 'mr'
dataset_params = {"path": dataset_name, "language":subset, "use_auth_token":True}
dataset_shapes = None

TaskRegistry.add(
    "oscar_marathi_corpus",
    source=seqio.FunctionDataSource(
        dataset_fn=functools.partial(dataset_fn, dataset_params=dataset_params),
        splits=("train", "validation"),
        caching_permitted=False,
        num_input_examples=dataset_shapes,
    ),
preprocessors=[
functools.partial(
target_to_key, key_map={
"targets": None,
}, target_key="targets")],
    output_features={"targets": seqio.Feature(vocabulary=seqio.PassThroughVocabulary, add_eos=False, dtype=tf.string, rank=0)},
    metric_fns=[]
)

dataset = seqio.get_mixture_or_task("oscar_marathi_corpus").get_dataset(
    sequence_length=None,
    split="train",
    shuffle=True,
    num_epochs=1,
    shard_info=seqio.ShardInfo(index=0, num_shards=10),
    use_cached=False,
    seed=42
)
for _, ex in zip(range(5), dataset):
     print(ex['targets'].numpy().decode())

Owner
No response

@albertvillanova @lhoestq , could you please help me on this issue.

Hi ! As mentioned on the forum, the simplest for now would be to define a dataset script which can contain your generator. But we can also explore adding something like ds = Dataset.from_iterable(seqio_dataset)

@lhoestq , hey i did as you instructed, but sadly i cannot get pass through the download_manager, as i dont have anything to download. i was skipping the  def _split_generators(self, dl_manager): function. but i cannot get around it. I get a NotImplementedError:
the following is my code for the same:
import datasets
import functools
import glob
from datasets import load_from_disk
import seqio
import tensorflow as tf
import t5.data
from datasets import load_dataset
from t5.data import postprocessors
from t5.data import preprocessors
from t5.evaluation import metrics
from seqio import FunctionDataSource, utils

TaskRegistry = seqio.TaskRegistry

data_path = glob.glob("/home/stephen/Desktop/MEGA_CORPUS/COMBINED_CORPUS/*", recursive=False)

def gen_dataset(split, shuffle=False, seed=None, column="text", dataset_path=None):
    dataset = load_from_disk(dataset_path)
    if shuffle:
        if seed:
            dataset = dataset.shuffle(seed=seed)
        else:
            dataset = dataset.shuffle()
    while True:
        for item in dataset[str(split)]:
            yield item[column]

def dataset_fn(split, shuffle_files, seed=None, dataset_path=None):
    return tf.data.Dataset.from_generator(
        functools.partial(gen_dataset, split, shuffle_files, seed, dataset_path=dataset_path),
        output_signature=tf.TensorSpec(shape=(), dtype=tf.string, name=dataset_path)
    )

@utils.map_over_dataset
def target_to_key(x, key_map, target_key):
    """Assign the value from the dataset to target_key in key_map"""
    return {**key_map, target_key: x}

_CITATION = "Not ready yet"
_DESCRIPTION = "a custom seqio based mixed samples on a given temperature value, that again returns a dataset in HF dataset format well samples on the Mixture temperature"
_HOMEPAGE = "ldcil.org"

class CustomSeqio(datasets.GeneratorBasedBuilder):

    def _info(self):
        return datasets.DatasetInfo(
            description=_DESCRIPTION,
            features=datasets.Features(
                {
                    "text": datasets.Value("string"),
                }
            ),
            homepage="https://ldcil.org",
            citation=_CITATION,)

def generate_examples(self):
    seqio_train_list = []
    for lang in data_path:
        dataset_name = lang.split("/")[-1]
        dataset_shapes = None

        TaskRegistry.add(
        str(dataset_name),
        source=seqio.FunctionDataSource(
            dataset_fn=functools.partial(dataset_fn, dataset_path=lang),
            splits=("train", "test"),
            caching_permitted=False,
            num_input_examples=dataset_shapes,
        ),
        preprocessors=[
        functools.partial(
        target_to_key, key_map={
        "targets": None,
        }, target_key="targets")],
            output_features={"targets": seqio.Feature(vocabulary=seqio.PassThroughVocabulary, add_eos=False, dtype=tf.string, rank=0)},
            metric_fns=[]
        )

        seqio_train_dataset = seqio.get_mixture_or_task(dataset_name).get_dataset(
        sequence_length=None,
        split="train",
        shuffle=True,
        num_epochs=1,
        shard_info=seqio.ShardInfo(index=0, num_shards=10),
        use_cached=False,
        seed=42)
        seqio_train_list.append(seqio_train_dataset)

    lang_name_list = []
    for lang in data_path:
        lang_name = lang.split("/")[-1]
        lang_name_list.append(lang_name)

    seqio_mixture = seqio.MixtureRegistry.add(
        "seqio_mixture",
        lang_name_list,
        default_rate=0.7)

    seqio_mixture_dataset = seqio.get_mixture_or_task("seqio_mixture").get_dataset(
    sequence_length=None,
    split="train",
    shuffle=True,
    num_epochs=1,
    shard_info=seqio.ShardInfo(index=0, num_shards=10),
    use_cached=False,
    seed=42)

    for id, ex in  enumerate(seqio_mixture_dataset):
        yield id, {"text": ex["targets"].numpy().decode()}

and i load it by:
seqio_mixture = load_dataset("seqio_loader")

@lhoestq , just to make things clear ...
the following is my original code, thats not in the HF dataset loading script:
import functools
import seqio
import tensorflow as tf
import t5.data
from datasets import load_from_disk
from t5.data import postprocessors
from t5.data import preprocessors
from t5.evaluation import metrics
from seqio import FunctionDataSource, utils
import glob

TaskRegistry = seqio.TaskRegistry

def gen_dataset(split, shuffle=False, seed=None, column="text", dataset_path=None):
    dataset = load_from_disk(dataset_path)
    if shuffle:
        if seed:
            dataset = dataset.shuffle(seed=seed)
        else:
            dataset = dataset.shuffle()
    while True:
        for item in dataset[str(split)]:
            yield item[column]

def dataset_fn(split, shuffle_files, seed=None, dataset_path=None):
    return tf.data.Dataset.from_generator(
        functools.partial(gen_dataset, split, shuffle_files, seed, dataset_path=dataset_path),
        output_signature=tf.TensorSpec(shape=(), dtype=tf.string, name=dataset_path)
    )

@utils.map_over_dataset
def target_to_key(x, key_map, target_key):
    """Assign the value from the dataset to target_key in key_map"""
    return {**key_map, target_key: x}

data_path = glob.glob("/home/stephen/Desktop/MEGA_CORPUS/COMBINED_CORPUS/*", recursive=False)

seqio_train_list = []

for lang in data_path:
    dataset_name = lang.split("/")[-1]
    dataset_shapes = None

    TaskRegistry.add(
    str(dataset_name),
    source=seqio.FunctionDataSource(
        dataset_fn=functools.partial(dataset_fn, dataset_path=lang),
        splits=("train", "test"),
        caching_permitted=False,
        num_input_examples=dataset_shapes,
    ),
    preprocessors=[
    functools.partial(
    target_to_key, key_map={
    "targets": None,
    }, target_key="targets")],
        output_features={"targets": seqio.Feature(vocabulary=seqio.PassThroughVocabulary, add_eos=False, dtype=tf.string, rank=0)},
        metric_fns=[]
    )

    seqio_train_dataset = seqio.get_mixture_or_task(dataset_name).get_dataset(
    sequence_length=None,
    split="train",
    shuffle=True,
    num_epochs=1,
    shard_info=seqio.ShardInfo(index=0, num_shards=10),
    use_cached=False,
    seed=42)
    seqio_train_list.append(seqio_train_dataset)

lang_name_list = []
for lang in data_path:
    lang_name = lang.split("/")[-1]
    lang_name_list.append(lang_name)

seqio_mixture = seqio.MixtureRegistry.add(
  "seqio_mixture",
  lang_name_list,
  default_rate=0.7
)

seqio_mixture_dataset = seqio.get_mixture_or_task("seqio_mixture").get_dataset(
    sequence_length=None,
    split="train",
    shuffle=True,
    num_epochs=1,
    shard_info=seqio.ShardInfo(index=0, num_shards=10),
    use_cached=False,
    seed=42)

for _, ex in zip(range(15), seqio_mixture_dataset):
    print(ex["targets"].numpy().decode())

where the seqio_mixture_dataset is the generator that i wanted to be wrapped in HF dataset.
also additionally, could you please tell me how do i set the default_rate=0.7 args where seqio_mixture is defined to be made as a custom option in the HF load_dataset() method,
maybe like this:
seqio_mixture_dataset = datasets.load_dataset("seqio_loader",temperature=0.5)

I like the idea of having Dataset.from_iterable(iterable) in the API. The only problem is that we also want to make this part cachable, which is tricky if iterable is a generator.
Some resources on this issue:

https://github.com/uqfoundation/dill/issues/311
https://stackoverflow.com/questions/7180212/why-cant-generators-be-pickled
https://github.com/tonyroberts/generator_tools - python package for pickling generators; pickles bytecode, so it creates version-specific dumps

Maybe we can have Dataset.from_generator as TF and pickle the generator function (not the generator object itself) ?

@lhoestq, @mariosasko do you too have any examples where the dataset is a generator and needs to be wrapped into hf dataset ?

@lhoestq, following to my previous question ... what possibly could be done in this link1 link2 case? do you have any ideas?

@lhoestq +1 for the Dataset.from_generator idea.
Having thought about it, let's avoid adding Dataset.from_iterable to the API since dictionaries are technically iteralbles ("iterable" is a broad term in Python), and we already provide Dataset.from_dict. And for lists maybe we can add Dataset.from_list similar to pa.Table.from_pylist. WDYT?

I have a problem which I think is very similar: I would like to "stream" data to a HF Array (memory-mapped) Dataset, where the final size of the dataset is unknown, but could be much larger than what fits into memory.
What I want to end up with is an Array Dataset which I can open using Dataset.load_from_disk(dataset_path="somename") and use e.g. as the training set.
For this I would have thought there should be an API which allows me to open/create the dataset (and define the features etc), then write examples to the dataset, but I could not find a way to do this.
I tried doing this and it looks like it works, but it feels very hacky and I am not sure if this might fail to update some of the fields in the json files which may turn out to be important:
from datasets import Dataset, Features, ClassLabel, Sequence, Value
from datasets.arrow_writer import ArrowWriter
# 1) define the features
features = Features(dict(
    id=Value(dtype="string"),
    tokens=Sequence(feature=Value(dtype="string")),
    ner_tags=Sequence(feature=ClassLabel(names=['O', 'B-corporation', 'I-corporation', 'B-creative-work', 'I-creative-work', 'B-group', 'I-group', 'B-location', 'I-location', 'B-person', 'I-person', 'B-product', 'I-product'])),
))
# 2) create empty dataset for examples with these features and store to disk
empty = dict(
    id = [],
    tokens = [],
    ner_tags = [],
)
ds = Dataset.from_dict(empty, features=features)
ds.save_to_disk(dataset_path="debug_ds1")

# 3) directly write all the examples to the arrow dataset
with ArrowWriter(path="debug_ds1/dataset.arrow") as writer:
    writer.write(dict(id=0, tokens=["a", "b"], ner_tags=[0, 0]))
    writer.write(dict(id=1, tokens=["x", "y"], ner_tags=[1, 0]))
    writer.finalize()

ds2 = Dataset.load_from_disk(dataset_path="debug_ds1")
len(ds2)

Is there a cleaner/proper way to do this?
I like the sound of Dataset.from_iterable or Dataset.from_generator (should not from iterable be able to handle from generator too as all generators are iterables?) but how would I define the features for me examples there?

Hi @johann-petrak! You can pass the features directly to ArrowWriter's initializer like so ArrowWriter(..., features=features).
And the reason why I prefer Dataset.from_generator over Dataset.from_iterable is mentioned in one of my previous comments.

I'm also very interested in this functionality. Why in the previous example ArrowWriter doesn't create the file if it doesn't exist?!

@mariosasko so at the moment we still have to create a fake Dataset first and then use ArrowWriter to write an actual dataset? I'm using the latest version of datasets on pypi but my final file is always empty!

This works for me if I then (actually I also close the writer: writer.close())  open the Arrow file as a dataset using ds=Dataset.from_file(final_data_path) then ds.save_to_disk(somedir). The Dataset created that way contains the expected examples.

Oh thanks. That did the trick I believe. Shouldn't ArrowWriter have a context manager that does these operations?

You can just use Dataset.from_file to get your dataset, no need to do an extra save_to_disk somewhere else ;)

save_to_disk/load_from_disk is indeed more general, e.g. it supports datasets that consist in several files, and saves some extra info in a dataset_info.json file (description, citation, split sizes, etc.)
If you have one single file it's fine to simply do .from_file()


dattcore/dattreact/dattdocs: Create end-user license agreement (EULA)

...and require that people sign it before being able to use Datt.

This is no longer relevant, because the EULA is something that a product (like Yours) will display, not Datt itself.


Create wigym.txt

Wichterlovo gymnázium, Ostrava - Poruba
Wichterle grammar school, Ostrava - Poruba
wigym.cz
Hello can you please add my school?

@Fiilipes This domain is already added. I have to close the request as a duplicate to #14913. Thank you.


Malformed HTTP Request

Trying to get Docker-Machine to run on Ubuntu 14.04. Machine gets created just fine on VirtualBox
The env variables are set, I have a valid IP, TLS certs seem to be in place but docker commands fail when called directly (like docker ps or docker run) with the malformed error.
If I run docker $(machine config test) command, everything is just fine. I can ssh into the machine as well.
rajurs@rajurs:~$ machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
test   *        virtualbox   Running   tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ machine url
tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ machine config test
--tls --tlscacert=/home/rajurs/.docker/machine/machines/test/ca.pem --tlscert=/home/rajurs/.docker/machine/machines/test/cert.pem --tlskey=/home/rajurs/.docker/machine/machines/test/key.pem -H="tcp://<IP_ADDRESS>:2376"rajurs@rajurs:~$
rajurs@rajurs:~$
rajurs@rajurs:~$ machine env test
export DOCKER_TLS_VERIFY=yes
export DOCKER_CERT_PATH=/home/rajurs/.docker/machine/machines/test
export DOCKER_HOST=tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ eval "$(machine env test)"
rajurs@rajurs:~$ docker ps
2015/03/24 13:49:58 Get http://<IP_ADDRESS>:2376/v1.12/containers/json: malformed HTTP response "\x15\x03\x01\x00\x02\x02"
But this works!
rajurs@rajurs:~$ docker $(machine config test) ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
rajurs@rajurs:~$
Any ideas why the short form of docker commands are failing?

Thanks for reporting.  Can you try it with just eval $(docker-machine env test) -- no quotes?

Same issue. See below.
rajurs@rajurs:~$ eval $(machine env test)
rajurs@rajurs:~$ machine ls
NAME   ACTIVE   DRIVER       STATE     URL SWARM
test   *        virtualbox   Running   tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ docker ps
2015/03/24 15:58:24 Get
http://<IP_ADDRESS>:2376/v1.12/containers/json: malformed HTTP
response "\x15\x03\x01\x00\x02\x02"
rajurs@rajurs:~$ docker $(machine config test) ps
CONTAINER ID        IMAGE               COMMAND CREATED
STATUS              PORTS               NAMES
rajurs@rajurs:~$
On 03/24/2015  03:29 PM, Evan Hazlett wrote:

Thanks for reporting. Can you try it with just |eval $(docker-machine
env test)| -- no quotes?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/machine/issues/869#issuecomment-85719447.

hmm ok thanks -- could you run docker version as well?

@rajurs - It's a little odd that machine env test returns a DOCKER_CERT_PATH without double-quotes. Also, machine config test should have double-quotes surrounding each of the paths. Which version of docker-machine is this?

Being a Linux Noob, I don’t know why the quotes are not showing up!
I just checked the version for docker machine, I am running 0.1.0
Sent from Windows Mail
From: Dave Henderson
Sent: Tuesday, March 24, 2015 5:47 PM
To: docker/machine
Cc: Pradeep Rajurs
@rajurs - It's a little odd that machine env test returns a DOCKER_CERT_PATH without double-quotes. Also, machine config test should have double-quotes surrounding each of the paths. Which version of docker-machine is this?
—
Reply to this email directly or view it on GitHub.

Here is what is confusing to me…
When I remove the machines, (machine stop, rm etc) and then just use the docker installation on the Ubuntu box, docker version says its 1.5 (this is the docker installation from sudo apt-get install docker.io).
When a machine is running, docker version is returning Client Version 1.0.1
Rajurs
Sent from Windows Mail
From: Evan Hazlett
Sent: Tuesday, March 24, 2015 4:16 PM
To: docker/machine
Cc: Pradeep Rajurs
hmm ok thanks -- could you run docker version as well?
—
Reply to this email directly or view it on GitHub.

@rajurs - would you mind trying this out with the 0.2.0 release candidate? Download it from  https://github.com/docker/machine/releases/tag/v0.2.0-rc1
I thought you were using a more recent build, which is why I assumed there would be quotes :)

I downloaded the linux amd64 binary from the link below and ran machine
It still says it is version
VERSION:
0.1.0 (aeb89ff)
Is this the right version? Does not say its 0.2.0
On 03/24/2015 06:39 PM, Dave Henderson wrote:

@rajurs https://github.com/rajurs - would you mind trying this out
with the 0.2.0 release candidate? Download it from
https://github.com/docker/machine/releases/tag/v0.2.0-rc1
I thought you were using a more recent build, which is why I assumed
there would be quotes :)
—
Reply to this email directly or view it on GitHub
https://github.com/docker/machine/issues/869#issuecomment-85776492.

@rajurs yes there was a versioning issue but that is the correct SHA for the RC1.
Do you have any aliases or functions in your shell config that would be changing the Docker binary used?  Can you also run docker version so we can see what versions you are working with?
Thanks

Nope, its a clean machine with no aliases.
Even with version 0.2.0, machine is failing to list containers.
Here is what I did:
rajurs@rajurs:~$ machine create --driver virtualbox dev
INFO[0000] Creating SSH key...
INFO[0000] Creating VirtualBox VM...
INFO[0011] Starting VirtualBox VM...
INFO[0011] Waiting for VM to start...
INFO[0044] "dev" has been created and is now the active machine.
INFO[0044] To point your Docker client at it, run this in your shell:
eval "$(machine env dev)"
rajurs@rajurs:~$ machine ls
NAME   ACTIVE   DRIVER       STATE     URL SWARM
dev    *        virtualbox   Running   tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ machine env dev
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH="/home/rajurs/.docker/machine/machines/dev"
export DOCKER_HOST=tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ machine config dev
--tlsverify
--tlscacert="/home/rajurs/.docker/machine/machines/dev/ca.pem"
--tlscert="/home/rajurs/.docker/machine/machines/dev/cert.pem"
--tlskey="/home/rajurs/.docker/machine/machines/dev/key.pem"
-H=tcp://<IP_ADDRESS>:2376
rajurs@rajurs:~$ eval "$(machine env dev)"
rajurs@rajurs:~$ docker ps
2015/03/25 09:41:05 Get
http://<IP_ADDRESS>:2376/v1.12/containers/json: malformed HTTP
response "\x15\x03\x01\x00\x02\x02"
When I run docker version, this is what I get..
rajurs@rajurs:~$ docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
2015/03/25 09:41:29 Get http://<IP_ADDRESS>:2376/v1.12/version:
malformed HTTP response "\x15\x03\x01\x00\x02\x02"
On 03/25/2015 09:30 AM, Evan Hazlett wrote:

@rajurs https://github.com/rajurs yes there was a versioning issue
but that is the correct SHA for the RC1.
Do you have any aliases or functions in your shell config that would
be changing the Docker binary used? Can you also run |docker version|
so we can see what versions you are working with?
Thanks
—
Reply to this email directly or view it on GitHub
https://github.com/docker/machine/issues/869#issuecomment-86105846.

So it looks like you have an old version of the client as it cannot even get the Docker version.  Can you try updating your local client to 1.5?

Evan,
Installed newer versions of machine and docker. Things seem to be working as documented.
Thanks
Rajurs
Sent from Surface
From: Evan Hazlett
Sent: Wednesday, March 25, 2015 10:58 AM
To: docker/machine
Cc: 'Pradeep Rajurs'
So it looks like you have an old version of the client as it cannot even get the Docker version. Can you try updating your local client to 1.5?
—
Reply to this email directly or view it on GitHub.

@rajurs awesome!  thanks for reporting and letting us know it fixed it!


Mock-SAS v3.0: Not a good solution to add optional parameters in CBRSConf/cbsdc1.xml

In Mock-SAS v3.0 I found that some optional parameters are added to CBRSConf/cbsdc1.xml file, such as
cbsdCategory and airInterface.
This could make test engineer more confused. After the code changes in my previous four issues (issue <IP_ADDRESS>) , these parameters can be removed from CBRSConf file and added back to the folder of OptionalParams.

Mock-SAS code uploaded 1-September-2017 addresses this and has only a few parameters without ranges. Eventually Winnforum will need to give a well defined template to the cbsdc1.xml to be filled without ranges.


Add version parameter

Fixes #8

MacOS scan is an interesting flake. I researched and fixed it here b9adc66 (#7)
Therefore I suggest you can merge this, then we follow-up with my change that addresses it.
Or feel free to pick and adapt commits from that PR into yours.

MacOS scan is an interesting flake. I researched and fixed it here b9adc66 (#7)
Therefore I suggest you can merge this, then we follow-up with my change that addresses it.
Or feel free to pick and adapt commits from that PR into yours.

Oh thanks Misha! You have saved me a lot of time, I was about to start digging into that 😅


The event payload for battery_notes_battery_threshold does not set previous_battery_level to a float as expected.

System Health details
System Information

version
core-2024.2.4

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.1

os_name
Linux

os_version
6.1.73-haos-raspi

arch
aarch64

timezone
Europe/London

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

GitHub API Calls Remaining
5000

Installed Version
1.34.0

Stage
running

Available Repositories
1409

Downloaded Repositories
24

HACS Data
ok

Home Assistant Supervisor

host_os
Home Assistant OS 12.0

update_channel
stable

supervisor_version
supervisor-2024.02.1

agent_version
1.6.0

docker_version
24.0.7

disk_total
116.5 GB

disk_used
11.4 GB

healthy
true

supported
true

board
rpi4-64

supervisor_api
ok

version_api
ok

installed_addons
File editor (5.8.0), Samba share (12.3.0), Zigbee2MQTT (1.36.0-1), Nextcloud Backup (0.17.7), Advanced SSH & Web Terminal (17.1.1), Mosquitto broker (6.4.0), ESPHome (2024.2.1)

Dashboards

dashboards
2

resources
16

views
12

mode
storage

Recorder

oldest_recorder_run
26 February 2024 at 14:03

current_recorder_run
5 March 2024 at 14:46

estimated_db_size
687.79 MiB

database_engine
sqlite

database_version
3.44.2

Checklist

[X] I have added battery_notes: to my configuration.yaml and restarted.
[X] I have read the FAQ's.
[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of any previous issues..

Describe the issue
The event payload for battery_notes_battery_threshold does not set previous_battery_level to a float as expected.
this:
  entity_id: automation.notification_battery_wip
  state: 'on'
  attributes:
    id: '1709646966958'
    last_triggered: '2024-03-05T16:43:16.020291+00:00'
    mode: single
    current: 0
    friendly_name: 'Notification: Battery (WIP)'
  last_changed: '2024-03-05T16:23:14.862840+00:00'
  last_updated: '2024-03-05T16:43:16.072640+00:00'
  context:
    id: 01HR7QYY5KM8NGNP5026JRTP45
    parent_id: 01HR7QYY5FGK3VZ3QFJVFEABZ1
    user_id: null
trigger:
  id: Battery Above Threshold
  idx: '1'
  alias: Battery Above Threshold
  platform: event
  event:
    event_type: battery_notes_battery_threshold
    data:
      device_id: db3c9b28cd6098784634cbaf4d1ea39f
      device_name: James' Phone
      battery_low: false
      battery_type_and_quantity: Not replaceable
      battery_type: Not replaceable
      battery_quantity: 1
      battery_level: 31
      previous_battery_level: '29'
      reminder: false
    origin: LOCAL
    time_fired: '2024-03-05T16:44:39.876764+00:00'
    context:
      id: 01HR7R1G24CA2N2MXB5SY0RNTT
      parent_id: null
      user_id: null
  description: event 'battery_notes_battery_threshold'

Reproduction steps
Look at the payload of the battery_notes_battery_threshold event once it is fired.
Debug logs
No response
Diagnostics dump
No response

Good spot, I'll get that into the next release.

This is now fixed in beta 2.2.1

Confirmed fixed.


Script overrides host.json file contents of Function app

I noticed that when I run a release task 'API Management - Create or Update API on Azure Functions (v1)'
it overrides the contents of the host.json file of the Function App with {"swagger":{"enabled":true}}
I think this is the place where it overrides it. Is this correct?  If so, why does it replace the contents of the file and not append to it?

Hello,
The only thing this task does is to extract the swagger definition from the function app and for this, Swagger must be enabled. However:

Microsoft has completely changed the way swagger definitions are made available with Function Apps
The extension only works with the version 1 of Azure Functions which are quite old since we are currently at version 3.

I would strongly encourage you to deal with it differently.
Best Regards

Ok. I'm using AZ Functions v2 so I'll have to find another way.


the spell check

Please bump the chart version.

I just realized this PR changes two differnt charts. We appreciate your work but need separate PRs per charts. I'm thus closing this.

Closing as already fixed.


Ley GPT | Accurate Answers based on the Mexican Federal work Law

Project name
LGPT
Description
What is LGPT?
An AI chat application designed to demystify Mexican federal work law. Utilizing Azure AI Search for data indexing and retrieval, Azure App Services for hosting, and OpenAI's GPT-4 for natural language processing, the app offers clear, accessible interpretations of complex legal documents.
Data Sources:
Latest Mexican federal work law, ensuring accuracy and relevancy.
Who is this for?
The app is a valuable resource for every person in Mexico, from employees, human resources professionals, business owners, law students or legal advisors. It serves as an essential tool for understanding labor rights and responsibilities, promoting legal awareness, fairness, transparency, accountability and empowerment in the workplace.
This app stands as a vital aid in navigating the nuances of employment law in Mexico, making legal information accessible to all.
There are still things to do in this project like setting proper authentication, further improvements to be made to the chunking and some bugs that I will keep working on.
Language
Spanish
Project Repository URL
https://github.com/crissins/GPT-Leyes-al-instante
Deployed Endpoint URL
https://app-backend-xyeyppjazxxrc.azurewebsites.net/?fbclid=IwAR1jb1DlaSmbUwuGgiEhpZorx1R-GQF-GfI03RbxJEyBg2xN6QMXIqclAJ0
Project video
https://youtu.be/DNb0-8BzH8g
Team members
Cristopher Hugo Olivares Del Real
Showcase Consent
Yes

Should this be closed? I think we're leaving all the submissions open.

Should this be closed? I think we're leaving all the submissions open.

Good morning Pam sorry I did it by mistake

No worries! Great hack, love the idea of making law more accessible.

Thank you I just started learning python around 3 years ago and I never tough of the idea of creating such a solution but I did think from the first moment on making this since open ai announced the assistants API.


File Uploads topic enhancements and master issue

28K PV
Additional issues

[ ]  File Signature magic numbers #18012

It won't be possible to address one of the issues in the updates for https://github.com/aspnet/AspNetCore.Docs/issues/10214.
The following opportunities remain:
High Priority

[ ] Include using statements as comments in the in-text code examples and at the tops of methods/classes shown from the sample app.
[ ] There's no example for handling file chunking; for example to resume large file uploads when users are in remote areas with flaky Internet. See :point_right: https://github.com/aspnet/AspNetCore.Docs/issues/12285#issuecomment-541736994

Medium Priority

[ ] Apache/Nginx server limits configuration
[ ] The article doesn't mention the [FileExtensions] attribute, which can be used to restrict what files can be uploaded. #13905
[ ] Are these instructions Core 3.0 Web API Compatible? #15716

Low Priority

[ ] There's no example for Byte Range when downloading.
[ ] Can you provide an example of using JSON plus IFormFile? #18290
[ ] Q: What is the benefit of streaming? #18070
[ ]  Unity asset bundles not working #19235

Hold for future engineering work

[ ] Background queued file processing with QueueBackgroundWorkItem is on the backlog :point_right: https://github.com/aspnet/Extensions/issues/805

KEEP AN :eye: ON https://github.com/aspnet/AspNetCore/issues/2711

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9a5cfa38-0e6c-4346-dafc-84ea5c513fcf
Version Independent ID: c6787f0f-3e9a-6efb-0e6e-5ccb957d3f4a
Content: File uploads in ASP.NET Core
Content Source: aspnetcore/mvc/models/file-uploads.md
Product: aspnet-core
Technology: aspnetcore-mvc
GitHub Login: @ardalis
Microsoft Alias: riande

I am trying to make File Upload For Large Files work in my ASP.NET Core 3.0 Preview project. I followed the tutorial and I am running my project on localhost at the moment. After clicking on Upload button on the razor page, I get:
The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
Maybe the default VS template doesn't have all the necessary configuration in Startup.cs.
I saw that many developers reported this error before:
https://github.com/aspnet/JavaScriptServices/issues/1514
https://github.com/aspnet/AspNetCore/issues/5223
https://github.com/dotnet/core/issues/1803
It would be great if we the examples from github were updated, to have views with .razor extension and ASP.NET Core 3.0 structure:
WebApp.Client
WebApp.Server
WebApp.Shared
I saw the example https://github.com/aspnet/AspNetCore.Docs/blob/ad16f5e1da6c04fa4996ee67b513f2a90fa0d712/aspnetcore/mvc/models/file-uploads/sample/FileUploadSample/Views/Home/Index.cshtml
but I still don't know what is causing the above mentioned default page error.

Hello @nemtajo ... We don't have the staffing to work with projects. We only maintain documentation here. However, there are a large number of updates on a PR that's in review now. You could take a look at the updates on the PR to see if they would help you. https://github.com/aspnet/AspNetCore.Docs/pull/12344
Otherwise, we recommend talking to devs on a support forum, such as Stack Overflow, or a support chat, such as Slack or Gitter. If you find a real bug in the framework, then open an issue with engineering to report it.

Just noticed the "Master issue" that originally referenced the issue this came from got closed, glad that these are still being looked at/considered though. I haven't forgotten about it, and look forward to documentation enhancements covering uploads!

@nickalbrecht The last round went in today on https://github.com/aspnet/AspNetCore.Docs/pull/14770, and those updates are live now, which include a 3.0 sample.

Additional possible updates are being collected on ... https://github.com/aspnet/AspNetCore.Docs/issues/12285

Good to know. I do think it's important to get some sort of documentation for theses items, some more than others. So I just want to make sure they are not dropped as things not having a high enough ROI for time spent getting them going, or something like that.
Actually, most of theses were carried over multiple times from comment you'd put on https://github.com/aspnet/AspNetCore.Docs/issues/4777#issuecomment-357405456 after a conversation we had on Slack. Few more months, and by Jan 2020 we'll hit 2 years for this one ;-)
I saw an tweet by Fowler the other day about playing with HTTP/3, no idea what potential topics that would bring beyond the original question of chunking and HTTP/2. 😅 But it's obviously still early days for HTTP/3 anyway.

@pranavkm Would you help me prioritize the following (High, Medium, Low, or Hold)?

There's no example for handling file chunking; for example to resume large file uploads when users are in remote areas with flaky Internet.
HTTP/2 apparently doesn't support chunked transfer encoding ... it goes to DATA frames. Should DATA frames coverage be explained/demoed?
There's no example for Byte Range when downloading.
The article doesn't mention the [FileExtensions] attribute, which can be used to restrict what files can be uploaded. #13905

Sounds really useful. I'd put this at the top
2). @Tratcher, is this useful information for users to understand?
I'd put this at number 3
Pri 2.This would make sense to cover as part of the file uploads topic.

2. HTTP/2 apparently doesn't support chunked transfer encoding ... it goes to DATA frames. Should DATA frames coverage be explained/demoed?

Is there an existing chunked transfer encoding sample/explanation you're comparing this to? Chunked encoding and HTTP/2 data frames are wire level framing details, they end up having the same behavior. Any existing description could be generalized to cover both.

@Tratcher No, I'm merely asking about these at this point. Just need to know which items are candidates for enhancing the topic and what priority to apply to them. I understand your remark, so dropping that entry. Should a chunking approach/sample not ever be part of this topic (i.e., let blogs/forum post resources cover it)?

File chunking across multiple requests is a useful technique. Chunked encoding on a single request/response is a formatting detail unrelated the prior scenario. A sentence or two about using or excluding the Content-length header would be sufficient. E.g. Using a content-length header can make the message easier to inspect. When not using a content-length header the message format automatically falls back to transfer-encoding: chunked (or HTTP/2 data frames).

So based off of what you've mentioned regarding the difference between chunked uploads (just split into multiple upload operations), and chunked encoding, Which one is used in the StreamController for demonstrating streamed uploads in
https://github.com/aspnet/AspNetCore.Docs/blob/master/aspnetcore/mvc/models/file-uploads/samples/3.x/SampleApp/Controllers/StreamingController.cs
Is the behaviour of streaming an upload like that the same regardless of the protocol being HTTP/2 or 1.1? I only ask because at first glance it seems to be closer to the underlying details of the protocol than most file upload examples I've seen, and I want to make sure if HTTP/2 implementation details are truly irrelevant regardless of how someone tries to implement file uploading, or if at worst it becomes an edge case that is beyond the intended scope of the documentation and gets mentioned as a foot note saying as such, but that the reader may need to be aware of it if they are looking intend on going down that path.

Which one is used in the StreamController for demonstrating streamed uploads in

That shows a file upload on a single request. The request in that example could use Content-Length or Transfer-Encoding: chunked and the sample would behave the same.

Is the behaviour of streaming an upload like that the same regardless of the protocol being HTTP/2 or 1.1?

Yes. The wire formatting and some headers vary but the application visible behavior does not. E.g. the Transfer-Encoding: chunked header is not used in HTTP/2, but the results are the same.

FYI the default nginx upload limit is 1 MB.
To change this for every site in a nginx configuration, edit the nginx.conf and add a 'client_max_body_size' entry to the http section. To edit it per-site, put the entry in the appropriate location section.
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

I will try answer the question to (@YehudahA):

Q: What is the benefit of streaming? #18070

As the article says:

Any single buffered file exceeding 64 KB is moved from memory to a temp file on disk.

I think one of the benefits is that on high peaks of the applications the file storage will not run out of memory. To observe that the examples from (AspNetCore.Docs\aspnetcore\mvc\models\file-uploads\samples\3.x\SampleApp) can be used. The page BufferedSingleFileUploadDb works with single file and a breakpoint in OnPostUploadAsync() method will show the temporary location path.
Using Shift + F9 I've checked the FileUpload.FormFile -> ._baseStream -> TempFileName, it shows: "C:\Users\\AppData\Local\Temp\ASPNETCORE_f08899f8-b3eb-4410-924d-1f44a7b6cc37.tmp" . The file is really there (maybe it's compressed), but that mean if the logic hangs to process requests with large files and there is a lot of usage in the application, a problem with the storage may appear.
On the other side, the streaming approach (StreamedSingleFileUploadDb page) is not accessing the Request.Form.Files or (IFormFile) and thus it's not saved in the temp directory. If I put var files = this.Request.Form.Files; in the beginning of the method body, a temp file is created when the execution reaches the new line. In any other case the streaming approach doesn't make temp files.

I will try answer the question to (@YehudahA):

Q: What is the benefit of streaming? #18070

As the article says:

Any single buffered file exceeding 64 KB is moved from memory to a temp file on disk.

I think one of the benefits is that on high peaks of the applications the file storage will not run out of memory. To observe that the examples from (AspNetCore.Docs\aspnetcore\mvc\models\file-uploads\samples\3.x\SampleApp) can be used. The page BufferedSingleFileUploadDb works with single file and a breakpoint in OnPostUploadAsync() method will show the temporary location path.
Using Shift + F9 I've checked the FileUpload.FormFile -> ._baseStream -> TempFileName, it shows: "C:\Users\\AppData\Local\Temp\ASPNETCORE_f08899f8-b3eb-4410-924d-1f44a7b6cc37.tmp" . The file is really there (maybe it's compressed), but that mean if the logic hangs to process requests with large files and there is a lot of usage in the application, a problem with the storage may appear.
On the other side, the streaming approach (StreamedSingleFileUploadDb page) is not accessing the Request.Form.Files or (IFormFile) and thus it's not saved in the temp directory. If I put var files = this.Request.Form.Files; in the beginning of the method body, a temp file is created when the execution reaches the new line. In any other case the streaming approach doesn't make temp files.

In the sample apps the streamed files are processed by reading the stream in order to determine the file size. Is there still a benefit please?


Failing tests from deep field mutation

Hi @erikras, would you be able to confirm whether the behaviour in these tests is expected?
The 1st new test passes - fields.addresses[0].postalCode is a new object after fields.addresses[0].postalCode.onChange() is called. All good.
The 2nd fails - fields.addresses[0] is the same object. Perhaps this is expected behaviour?
The 3rd also fails - fields.addresses[0].postalCode isn't a new object when checked in component lifecycle methods before the subsequent render.
Apologies if this has been raised before. If the 3rd behaviour is a bug, any pointers to how I can help fix it would be appreciated. Thanks!

Updated the 3rd test to avoid failing if componentWillReceiveProps is called for some reason other than the tested field changing.
Don't know why it's passed on Travis - only a few of the tests have been run - not including the ones in this PR.

@stevoland I've been looking into this. I wrote a test in readField a little closer to the source of the bug. It's a tricky one.

Thanks @erikras, I'll have a look at that and see if I can help.

Here's my readField test.
 it('should mutate a changed array subvalue', () => {
    const fields = {};
    readField({
      foo: [
        {
          bar: {
            value: 'baz'
          }
        }
      ]
    }, 'foo[].bar', undefined, fields, {}, undefined, false, defaultProps);
    expectField({
      field: fields.foo[0].bar,
      name: 'foo[0].bar',
      value: 'baz',
      dirty: true,
      touched: false,
      visited: false,
      error: undefined,
      initialValue: undefined,
      readonly: false
    });
    const beforeFoo = fields.foo;
    const beforeBar = fields.foo[0].bar;
    readField({
      foo: [
        {
          bar: {
            value: 'baq'
          }
        }
      ]
    }, 'foo[].bar', undefined, fields, {}, undefined, false, defaultProps);
    expectField({
      field: fields.foo[0].bar,
      name: 'foo[0].bar',
      value: 'baq',
      dirty: true,
      touched: false,
      visited: false,
      error: undefined,
      initialValue: undefined,
      readonly: false
    });
    const afterFoo = fields.foo;
    const afterBar = fields.foo[0].bar;
    expect(beforeBar).toNotBe(afterBar);
    expect(beforeFoo).toNotBe(afterFoo);
  });

I'm gonna close this because it's part of the horrible fields mess that made me abandon that strategy when writing v6.

@erikras Should me close all prior v6 related issues since it won't get fixed?


Refactor to use cloud assembly

Previously this library walked the construct tree in-memory and called the internal _toCloudFormation() method each Cfn* construct has to get the CloudFormation resource fragment. This is both inefficient (because we call synth which internally does the same thing, and then we do it again), and potentially inaccurate (synth internally does a lot more than we do when we walk the construct tree).
This PR is a refactor (maybe closer to a rewrite) that switches to taking the output of app.synth() and processing the resulting CloudAssembly. The CloudAssembly has everything necessary to do the conversion and contains the fully resolved CloudFormation template (we don't have to worry about unresolved tokens!).
This also sets us up for future work like nested stacks, multiple stacks, and #153.
Note to reviewers. This is a pretty big refactor so I would recommend reviewing this instead as a restart rather than trying to figure out what the old code is doing.
Closes #18

Can you highlight the app.synth() call in the code? Appreciated. I'll do another review round tomorrow, familiarizing with this codebase.

This has been super helpful to deep dive in the codebase, thanks @corymhall ! I would like to complete a small tasks over the codebase to get even more familiar. Left you some non-binding low-level comments.


Can't rename any node with Godot 4 Beta15 under wayland session

Godot version
4.0 Beta15
System information
openSUSE Tumbleweed, Wayland session
Issue description
https://user-images.githubusercontent.com/110809639/214688115-ce2c8f95-3849-4ee5-b6be-f8e58dbd8036.mp4
It's not possible to rename any node while using wayland session under my linux distro. Using Godot 4 beta15. Tried changing keyboard layout and same result. If I swith to X11 session then it works. Also beta14 doesn't have this problem with wayland session.
Steps to reproduce
Literally try to rename any node under wayland session with beta15
Minimal reproduction project
n/a

Duplicate of https://github.com/godotengine/godot/issues/72012 (fixed in the latest master branch).

I test this on the master. #72012 is fixed, but I still cannot rename any node.

Related to #72012 (fixed in the latest master branch).
Can you test this on the latest master branch? See Compiling on Linux.

As suggested I compiled the engine from master[cc7aa72f01fdea5f93b0a618fcd12db55617beb0] but still can't rename any node under wayland session.

Is it only an issue with popups (e.g., rename / inspector properties), or with any input controls (e.g., script editor)?

Is it only an issue with popups (e.g., rename / inspector properties), or with any input controls (e.g., script editor)?

Script editor works, I can type in it. As for the node if i try with F2 shortcut for renaming or selecting it with right click and do rename on popup it selects the node but won't work. It completely ignores any input from keyboard. Can't delete the or rename the node's name.

I was not able to reproduce it with Gnome /Wayland session on PopOS 22.04.

I test this on the master. #72012 is fixed, but I still cannot rename any node.

May I ask what distro and what desktop environment do you use? (what did you use for test?)

I was not able to reproduce it with Gnome /Wayland session on PopOS 22.04.

Interesting. I'm currently using KDE Plasma with openSUSE. I will also try to see if the issue can be reproduced on Gnome/Wayland session with openSUSE.

May I ask what distro and what desktop environment do you use? (what did you use for test?)

I also use KDE Plasma on Ubuntu 22.04

It seems that the issue can't be reproduced on Gnome/Wayland with openSUSE. So this is a KDE Plasma/Wayland specific issue?

It's beta16 but it still happen, I'm using Arch on KDE Wayland and it still don't work

After compiling the engine multiple times I think I might have found the commit where this issue started appearing. It's daad4aed62bfa471421f960179f0ac0fd78e8040. Hope this is an useful information.

I also am having a similar issue.
I find that trying to rename a node (KDE Arch Wayland Session) doesn't work, and locks up various input until a random amount of time/interactions have passed. Usually by randomly clicking nodes my camera controls work again.

Losing focus and regaining focus on the main window seems to reliably fix the lockout.

So actually, the typable editor window is appearing sort of behind the main godot window.
If you shrink godot and move it, you can finish the input.
Kooha-2023-01-28-12-47-22.webm

CC @bruvzg

I am no expert with godot's source code, today is the first time looking at it, but I'll share incase it helps a more familar dev find the issue faster.
It looks like the sub-window/popup created with the text editor is not receiving focus when it is created. Key events aren't even logged if keys are pressed after double clicking.
Commenting out the following line in display_server_x11.cpp causes it to work correctly on my machine
valuemask |= CWOverrideRedirect | CWSaveUnder;
But I do not think this is necessarily the correct solution as it also makes the input flash black for a second.
I think some of the new checks in the various events checking if it is an input window added in the mentioned commit may just be preventing the window from getting focused correctly.
Once you hit that point, it may come down to differences in behaviors of individual WM at that point (mutter vs kwin for example) as to if the new window is focused since it isn't being explicitly made to focus? Not sure, just my current hypothesis.

I will also comment, that
window_set_ime_active is being called repeatedly from the
NOTIFICATION_DRAW event of the line_edit.cpp


require in bundled scripts

I've been looking into a better solution for the usage of require in bundled scripts and I've come up with the following plan:

Add all bundled modules as package loaders.
Remove the overridden require function and just use the standard one.

This should mean that the loading of any other modules (eg luasocket) will be unaffected by the bundling process.
There are two ways of directly including package loaders.

package.preload

package.preload["library.utils"] = package.preload["library.utils"] or function()
-- module contents...
end

package.searchers

table.insert(package.loaders, function(package_name)
-- return module wrapped in function from here
end)

By default, require looks for a package loader in the following order (according to package.searchers):

package.preload
package.path
package.cpath

That order can be changed by reordering the table or inserting a function earlier in the package.searchers table for loading bundled modules.
Let me know if you have any thoughts as to which option is better.
(Edited because I initially misread the manual)
Cc @rpatters1

I like the idea of not overriding the require statement. I am starting to build in a few more Lua C libraries into RGP Lua and you have to require them to use them.

luasocket was the OG case. You have to use require to access mime.core.
I started building inluaosutils in the last release. You have to use require to access it.
The next release will embed cjson, which will also need require.

To fool the bundler, I have provisionally added a library.require_embedded function. But I would be happy not to need it. Are there any downsides? Will all the scripts have to be modified to use preload instead of require?


Allow table groups to accept a closure

Description
Allow table groups to accept a closure:
return $table
    ->groups(function (Component $livewire) {
        return match ($livewire->activeTab) {
            'pending' => ['order_date'],
            'shipped' => ['shipping_date'],
            'delivered' => [
                  Group::make('delivered_date')->label('Delivered'),
             ],
        };
    })

Visual changes
Functional changes

[X] Code style has been fixed by running the composer cs command.
[X] Changes have been tested to not break existing functionality.
[X] Documentation is up-to-date.

Thanks!


[FAQ] Override default Kirbytext Image tag

Question
Override default Kibytext image tag
(image: myfile.jpg)

Answer
Overriding even just as an option might conflict with various other plugins.
Create a kirbytext:before hook and do a text replace if you really want this.
Or just use the srcset tag right from the start.
(srcset: myfile.jpg)
(srcset: myfile.jpg preset: breakpoints)
(srcset: myfile.jpg lazy: true)
(srcset: myfile.jpg preset: breakpoints lazy: true)

/site/config/config.php
return [
    'hooks' => [
        'kirbytags:before' => function ($text, $data, $options) {
            return str_replace('(image:', '(srcset:', $text);
        }
    ]
]

Perhaps just adding the explanation of how to use the before hook directly to the docs would be sufficient. 👍

will be (lazysrcset:  starting v3.0.0


Issue since 1.20.2

After updating to 1.20.2 it seems i cant open chests anymore without the game crashing.
Here is the code i get when it crashes:
The game crashed whilst rendering screen
Error: java.lang.NoSuchMethodError: 'void de.guntram.mcmod.easierchests.ExtendedGuiChest.method_25420(net.minecraft.class_332)'

I'm on vacation right now. Will look into this when I'm back but it'll take a while.

any news on this?

A version for 1.20.4 is out now, should probably work on 1.20.3 as well.


Vertical Collection when collection starts off screen

Closes #150
This simply creates a floor for the index of the lastVisible Component Index which was causing errors when the vertical collection originates off the screen.

@kylemellander are u actively using this in a large app? If so talk to @runspired - i know he's busy with a lot of things, maybe u can maintain/help this one for a bit if you understand and use it.
(just a friendly thought - runspired has awesome work all over github, more than he can maintain for sure)

I'm hacking this into our app with an initializer currently. It would be awesome to get this fixed.

@runspired can you merge this please?
I just debugged this in my app and wanted to send a pull request only to find out there is already one.
If you want to know what's going on: this break https://github.com/runspired/smoke-and-mirrors/blob/04a89de319948200ab996d6e126b70922716a139/addon/components/vertical-collection/component.js#L486 can be hit on the first iteration causing item to be null https://github.com/runspired/smoke-and-mirrors/blob/04a89de319948200ab996d6e126b70922716a139/addon/components/vertical-collection/component.js#L543

@ssendev actually, could you check if this is fixed by the new version of @html-next/vertical-collection? We've theorized that it is based on our understanding of the issue but would be nice to confirm

Unfortunately it dosn't work.
I removed smoke-and-mirors installed<EMAIL_ADDRESS>and replaced
<style>
  vertical-collection {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }
  my-component {
    width: 24rem;
    height: 31rem;
    margin: 1rem
  }
</style>
{{#vertical-collection
    content=items
    defaultHeight='32.875rem'
    containerSelector='.mdl-layout'
    invisibleBuffer=0
    visibleBuffer=1.5
  as |item| }}
    {{component myComponent item=item}}
{{/vertical-collection}}

with
{{#vertical-collection
    items
    minHeight='32.875rem'
    containerSelector='.mdl-layout'
  as |item| }}

which resulted in You called estimateElementHeight without an element setting minHeight to 526 which is the rem value in pixels resulted in item height must always be above minimum value. Item 1 measured: 0.  Setting minHeight to 0 results in targetValue must be greater than or equal to 0
Removing flex changes the error to item height must always be above minimum value. Item 0 measured: 496 which is the rem height in pixels. When setting minHeight to 496 the error disappears but items are being culled while they are still visible. Setting bufferSize=2 fixes that. But when scrolling very seldomly errors like item height must always be above minimum value. Item 28 measured: -3072 or TypeError: Cannot read property 'getBoundingClientRect' of undefined appear.
Not using the component helper and specifying a component directly don't seem to help either.

@ssendev thanks! I'm going to copy your response to an issue there to track it for 1.0. We should be bumping smoke-and-mirrors to use vertical-collection here in the next day or so :)

@ssendev we've added a test for this in 1.0.0-beta.5, it should be working! Let us know if not, we may need to do a more in-depth debugging session


Issue -    Error Fetching Result: TypeError: Failed

I have two PC's both more or less identical (same motherboard, CPU, RAM, etc. both connected to the same devices)
On one of them the script works just fine, on the other I get the issue  -  Error Fetching Result: TypeError: Failed.
I've tried uninstalled, restarted, re-installed REW on both PC's and the issue persists.  What/where else do I need to be looking at to work out whats going wrong on the problematic one ?
Thanks

Hy, try to move the forlder on PC floder like on desktop or downloads, not in cloud , dropbox. Mine worked after i moved it on desktop

Unpack the zip file and add the measurements

I'm working from a local D:\ drive in both cases - so that's not it.
Not entirely sure what you mean by unpacking the zip....it's imposssible to add the measurements without unpacking the zip (as far as I'm concerned) - so that's already happening too...
But thanks for the suggestions all the same!

Hi, you may have already found the solution, but I thought I would share what worked for me as I had the same issue today when trying this tool. Navigate to REW preferences, then the API tab, then click on Start Server. That fixed it for me, I also allowed REW to have full Windows firewall access, though I'm not sure if that played a part as well.

Thanks, but no - that's not it. The API is already started (because none of this works without that anyway).
Firewall won't be relevant as I (and most probably you too) are running this all from the one machine anyway.
I have upgraded from beta 21 to beta 23 of REW - but that's made no difference either.
The error itself suggests that the browser script simply can't see the REW API though - since the exact same thing works fine for me on another machine. So presumably something I've had on the machine previously is somehow affecting it.

Ah ok, no idea then. You could be right in regard to another app on that specific system or maybe even corrupted files. Well, I hope you find a solution.

Could be your firewall.
Sent from Gmail Mobile
On Wed 10. Apr 2024 at 15:03, ianfretwell @.***> wrote:

Thanks, but no - that's not it. The API is already started (because none
of this works without that anyway).
Firewall won't be relevant as I (and most probably you too) are running
this all from the one machine anyway.
I have upgraded from beta 21 to beta 23 of REW - but that's made no
difference either.
The error itself suggests that the browser script simply can't see the REW
API though - since the exact same thing works fine for me on another
machine. So presumably something I've had on the machine previously is
somehow affecting it.
—
Reply to this email directly, view it on GitHub
https://github.com/ObsessiveCompulsiveAudiophile/AudysseyOne/issues/5#issuecomment-2047365101,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACLH4TGO2LCGMCLZNZ2NME3Y4US7ZAVCNFSM6AAAAABE7FZI4SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBXGM3DKMJQGE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***
com>

Firewall's don't work 'internally' on a single machine...the traffic isn't moving between any zones that would be considered different.
I am beginning to think it might be the config within Chrome itself though - not had chance to try another browser to confirm that though.

I am running the latest version of REW on my MacBookPro
I have tried to use Firefox and Chrome.
I downloaded the files to my PC's downloads directory.
I am getting this error repeatedly.
I was unable to find a way to start the API Server.
I am on REW v5.31.1
I go to preferences and I don't see API tab. So I cannot start the API Server.
I am thinking of giving up Mac and Trying to use a windows PC next.
Let me know if anyone has a suggestion for me.

I installed the beta version for mac and I found api tab and I was able to start the api server.


hubot-auth integration

Would it be possible to integrate this group plugin with hubot-auth? One of the main draws for hubot-group-alias (despite the fact that I can't get it working completely) is that I can use my pre-existing auth roles as the group names.

Browsing through the code of hubot-auth, it looks like it should be possible - hubot-auth stores data in robot.brain, just like hubot-group does, so it should be fairly straightforward.
I don't have time to work on this right now, but pull requests are welcome!

I appreciate you taking a look and the quick reply. I haven't done any dev on hubot plugins, but I definitely intend to start. When I get to a place where I feel I can contribute a PR, if no one has picked it up by then, I'll look into it for sure!

closing due to inactivity


"No Fail" issue

When creating a room and selecting no fail mode to be off (or on), the room will have no fail mode enabled. It seems like that setting isn't changing no matter it's set it to.

Fixed in <IP_ADDRESS>!


[WIP] webpack

[x] make webpack run
[x] minify builds
[ ] figure out a finalized build flow

i think we should set up something similar to the docs builds for this. maybe @meew0 can work on that.

Could you add an option to omit version information from the target filename (i.e. always webpack/discord.js and webpack/discord.min.js), to make the Travis stuff more straightforward?


Travel Time does not show for total distance moved

From core, holding control will let you place waypoints when measuring but the travel time is only shown for the last segment. It would be very helpful if the total travel time can also be shown.

Oh yah, it should be on every waypoint... Will check that.

Wanted to report this as well. I did some more in depth testing yesterday and was confused at first, but I though another module might be at fault. Good to know that it's not an incompatibility.

Found the issue :) Fix will come tomorrow :)

And i think that there is also some kind of additional bug... The Ruler with waypoints works normally like that. Each waypoint shows the distance from the previous waypoint to the current. Except the last one shows also the complete distance in the [ ] brackets.
The travel times on the other hand dont have these complete distance behaviour... but i guess the last waypoint should also have this complete travel time in brackets... what do you think @SirMotte @PepijnMC

[...] but i guess the last waypoint should also have this complete travel time in brackets... [...]

That's what I would expect, yes.

Then we think the same... 👍 will add that to the fix.

On second thought, If we have a massive 0.75 | 0.75 | 0.75 [ 43 | 30 | 20 ] Textblock, I'd opt for only the total days shown instead. Another line on the other hand should work, but this starts to feel crowded already.

Fixed in 3.1.0 ... Have fun :)

On second thought, If we have a massive 0.75 | 0.75 | 0.75 [ 43 | 30 | 20 ] Textblock, I'd opt for only the total days shown instead. Another line on the other hand should work, but this starts to feel crowded already.

yaaaaah just read this :D it gets crowded for sure :D

Aaaaand i put in a toggle on 3.1.1 ;)

I can confirm, that everything is working perfectly and as advertised.

Always ;) I dont do false advertising :D  Have a great weekend you two.


Support for structured config

Hello!

Vote on this issue by adding a 👍 reaction
If you want to implement this feature, comment to let us know (we'll work with you on design, scheduling, etc.)

Issue details

Pulumi supports structured configuration which allows using config.GetObject. This is really a great feature to represent arrays as yaml array and represent the entire config as go struct.
Currently Stack object config field is of type map[string]string. Having support for yaml arrays and object will be helpful.
The value would assumedly come from any of the supported sources, mainly:

a literal YAML-encoded (or JSON-encoded) string
a Secret with a key containing a YAML-encoded string

Ideally this feature would be orthogonal to whether or not the value is Pulumi secret.
There may be need for a new configuration block to allow for non-secret structured configuration. Note that secretsRef defines Pulumi secrets from a secret or from a literal value, while non-secrets are simply typed as map[string]string.
Note that the Automation API recently added support for structured configuration: https://github.com/pulumi/pulumi/pull/12265
Examples
Some examples for discussion purposes.
These examples assume the following program:
interface Data {
    active: boolean;
    nums: number[];
}

let config = new pulumi.Config();
let data = config.requireObject<Data>("mydata");
console.log(`Active: ${data.active}`);

And intend to generate the following stack configuration:
# Generated: Pulumi.dev.config
config:
  proj:mydata:
    active: true
    nums:
    - 1
    - 2
    - 3

Using a YAML value from a Kubernetes Secret as a Pulumi secret:
apiVersion: v1
kind: Secret
metadata:
  name: example-secret
type: Opaque
stringData:
  data.yaml: |
    active: true
    nums:
    - 10
    - 20
    - 30
---
apiVersion: pulumi.com/v1
kind: Stack
metadata:
  name: example-1
spec:
  stack: example/proj/dev
  config:
    aws:region: us-east-2
  secretsRef:
    mydata:
      type: secret
      secret:
        name: example-secret
        key: data.yaml
        type: object
  ...

Using an inline YAML value as a Pulumi secret:
apiVersion: pulumi.com/v1
kind: Stack
metadata:
  name: example-1
spec:
  stack: example/proj/dev
  config:
    aws:region: us-east-2
  secretsRef:
    mydata:
      type: literal
      literal:
        jsonValue:
          active: true
          nums:
          - 10
          - 20
          - 30
  ...

Using inline YAML as a non-secret (via a hypothetical config2 block):
apiVersion: pulumi.com/v1
kind: Stack
metadata:
  name: example-1
spec:
  stack: example/proj/dev
  config:
    aws:region: us-east-2
  config2:
    mydata:
      jsonValue:
        active: true
        nums:
        - 10
        - 20
        - 30
  ...

Open Questions

Config values are currently typed as string as opposed to apiextensionsv1.JSON.  If we were to change the API to use JSON, then the values would be interpreted as JSON values (e.g. true would become a bool).  Is that an acceptable (breaking) change? Or should a jsonValue field be introduced?  Or should literals be string-encoded? Note that Program.spec.configuration.default is a JSON value (not encoded).
Should the API types use json.RawMessage rather than apiextensionsv1.JSON?  See Grafana and Tanzu for examples.

From what I can tell, this is really critical, as it blocks the ability to configure the AWS Provider to assume a role for deployment execution, since ProviderAssumeRole is an object. This limits use of the operator to IAM users with access keys created and appropriate roles attached.
My desired use case is to use a Service-Linked Role for the operator service account so the operator can assume roles, then define the role to use in the stack's config under aws:assumeRole provider option.

Looking the CRD spec, this option:

Using a YAML value from a Kubernetes Secret as a Pulumi secret:
apiVersion: v1
kind: Secret
metadata:
  name: example-secret
type: Opaque
stringData:
  data.yaml: |
    active: true
    nums:
    - 10
    - 20
    - 30
---
apiVersion: pulumi.com/v1
kind: Stack
metadata:
  name: example-1
spec:
  stack: example/proj/dev
  config:
    aws:region: us-east-2
  secretsRef:
    mydata:
      type: secret
      secret:
        name: example-secret
        key: data.yaml
        type: object
  ...

would work with the current implementation? (or now does it just support simple,non-structured values?)
About the jsonValue field, personally, it would sound strange to me because I would expect that a complex yaml object would be passed forward as an entire object anyway with no need to put an extra field saying that. but in order to doesn't break compatible looks acceptable. Maybe a value key, as in the structured project-level config could be an option?
Also, here we are thinking that would be great if we could inject values from a ConfigMap. Maybe something like that?

apiVersion: pulumi.com/v1
kind: Stack
metadata:
  name: example-1
spec:
  stack: example/proj/dev
  config:
    aws:region: us-east-2
  configsRef:
    mydata:
      name: my-config-map
      key: data.yaml
      type: object

This is a key functionality for me to elect Pulumi for new-gen platform engineering. I would need to configure the stack CR config parameters for my entire stack. I need to convert all my YAML style configurations to map[string][string].

@geowalrus4gh please I would love to hear your thoughts about the PR and my suggested implementation. It's a key feature for us as well 😅

Quick note - while reviewing #575 I confirmed that structured config is somewhat supported although it's not obvious and may not be a viable workaround for all scenarios (particularly secrets).
Config values retrieved with GetObject will deserialize themselves from JSON if they happen to be simple strings.
Stack CR:
config:
  project-name:object: '{"nums": [1, 2, 3]}'

index.ts
const cfg = new pulumi.Config();
export const obj = cfg.requireObject("object") as { nums: number[] };

console.log("object looks like:", obj);
console.log(`type is ${typeof obj}`);
console.log(`nums are ${obj.nums}`);

Output:
    object config looks like: { nums: [ 1, 2, 3 ] }
    type is object
    nums are 1,2,3

I'm still working through the PR but wanted to share in case it might be helpful to anyone currently blocked by this.


$feat: do task for 0.01 XDAI (xdai) :)

:)

I did this code $feat with this #307

I did this code  with this $feat #327


refactor(parser): improve example for byte_search! macro usage

It's more efficient when reading 2 bytes to use read2() than 2 x read() calls. Reflect that in example for using byte_search! macro.

"I'm on public holiday"


Remove version: NumeRe.NumeRe version <IP_ADDRESS>9

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://sourceforge.net/projects/numere/files/Stable Release/numere-win-v114.exe/download
Status Code: 200
(Automated message - build 897)

Close with reason: Package still available.;


Crawler.stop(true) not working as expected

What happened?
The crawler does not stop completely after using crawler.stop(), this causes memory leak, the fetch complete event keeps on firing even after using crawler.stop(true) [aborting in flight requests]
What should have happened?
The crawling must stop as soon as crawler.stop() function is called, with no more fetchComplete event being emitted. This problem seems more significant with higher concurrency.

@kbychkov Could you please advise us on this.

@braj1999, please, provide the code that demonstrates the behaviour.


Update play-test, routes-compiler to 2.8.7

Updates

com.typesafe.play:play-test
com.typesafe.play:routes-compiler

from 2.7.9 to 2.8.7.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.typesafe.play" } ]

labels: library-update, semver-minor

Superseded by #371.


Export/Import double skin cluster (all the way)

The ui needs to be updated to better represent mutli skin cluster streams


Password import no longer working in Edge 91

I enabled the #PasswordImport flag in edge://flags, restarted the browser but the Import option does not show up in the Profile > Passwords window when I click on "...". There is only an export options.
I tried resetting the profile, rebooting the machine, disabling and re-enabling the flag to no avail.
This issue does not reproduce in Chrome 91.

I can confirm the problem did not occur in Edge 90 after testing on the same machine.

Hi @fschlaef! Thanks for reporting, but unfortunately, this repo won't get the attention that this issue needs. Can you please use the send-feedback request tool for your bug?
Quoting from our readme:

Have a product bug?
If you're looking to file a product bug on Microsoft Edge and the bug is unique to Edge, please use the in-browser "Send Feedback" tool (Alt+Shift+i in Windows, or "..." > "Help and feedback"). If the bug reproduces in another Chromium-based browser, please file the issue upstream in the Chromium bug database. Thanks!


Improve loading configs

In the moment the custom required actions assume there exists an authenticator config object with the alias "sms-2fa".
Instead of loading the config by this predefined alias it should be loaded either from the database (with arbitrary alias) or loaded from keycloaks globale settings (see https://github.com/netzbegruenung/keycloak-2fa-sms-authenticator/pull/20#discussion_r906845454 and following)

It may be possible to set custom realm attributes with the kcadm.sh tool:
kcadm.sh create realms -f - << EOF
{ "realm": "demorealm", "enabled": true }
EOF

if that does not work, it would be possible to set this manually in the database in the realm_attribute table, which has the following columns: name, realm_id, value. As in:
INSERT INTO realm_attribute (realm_id, name, value) VALUES ('REALM_UUID', 'sms-2fa-default-api-provider', 'sms-2fa-foobar');

Each RequiredActionFactory and AuthenticatorFactory overrides this method:
@Override
    public void init(Config.Scope config) {

    }

Here it says, that this config is loaded from a file called keycloak_server.json, but I didn't tried this yet: https://github.com/keycloak/keycloak/blob/48266fa48fbd6ea4ec8d07df8e990850be6ba9a3/server-spi/src/main/java/org/keycloak/provider/ProviderFactory.java#L39

Passing configs to spi providers actually works like this:

Run keycloak and pass configs to CLI command e.g. `bin/kc.sh start-dev --spi-required-action-mobile_number_config-code-length="6" (https://www.keycloak.org/server/configuration-provider)
Read config from init(Config.Scope config)

Downside is, that we have many configs to pass.

Downside is, that we have many configs to pass.

I guess there must be a way to put everything into one config file? That would be a nice solution. Then we can remove the config from the single authentication flows. The current solution feels a bit hacky.


Compiling: Add more circuit transformer patterns

Problem: PointOptimizer is one of the main workhorses for writing an optimizer, but it can be hard to use as the semantics of the mutation pattern is not easy to understand.  The goal of this feature would be to better define the basic compiling and optimizing patterns to lead to the easier construction of compilation steps. This could potentially be aided by Subcircuit features, and the methods that are accessible are tied to the complexity of the mutation methods as described in Circuit construction.
Rough requirements:

Classify basic mutation patterns in optimizers
Pull out abstractions from these patterns and develop methods to create circuit transformers for these patterns
Migrate current optimizers to these new patterns

Another aspect of this is whether the compiler/transformer is topology aware or not, i.e whether it respects adjacency constraints for devices or not. For example cirq.ThreeQubitDiagonalGate._decompose_ checks for adjacency on the gridqubits, while for example cirq.three_qubit_matrix_to_operations is not. It would be great to have clarity around this dimension as well.

Closing in favour of more specific transformer related issues

New primitives have been added and current optimizers have been migrated to use the new primitives. Migration of optimizers in vendor packages is being tracked in another open issue, so I'll close this now.


Archaeology Sites in the Nether and possibly the End?

Ulraf dropped a maybe on a Tweet of this possibly being a thing when Archaeology arrives to MC

I have several ideas for this, like adding Excavation Endstone and reusing scrapped chisel item to excavate it, but this suggestion will likely to sit untouched for some time, because I think it's better to focus on other things for now.


序列化scala.collection.mutable.Map转Json不能实现，版本1.2.58

val del = Map("name" -> "bame" )     val jsonStr = JSON.toJSONString(del, SerializerFeature.PrettyFormat)     println(jsonStr)
输出：
{ 	"empty":false, 	"sizeMapDefined":false, 	"traversableAgain":true }

Use jsoniter-scala for that.
It is one of most efficient Scala parser which supports all kinds of Scala collections from the standard library and can be easy extended for custom one.

@plokhotnyuk  Thank you very much.I started with json4s, and then I learned that fastjson has very strong performance, much higher than json4s, so I started trying to use fastjson. So, is the jsoniter-scala you mentioned also a popular high-performance JSON format processing library?

@HenryBao91 I should have to put a disclaimer that I have contributed to jsoniter-scala a lot.
In my early Scala days 8 years ago I used json4s too, but now nobody cares to fix security issues for it.
The 1st version of jsoniter-scala was released ~1.5 year ago and now it gaining popularity attracting users by handy usage, safety, and performance.
Bellow are charts from the Maven Central statistics:

As far as I understand, fastjson mostly targeted on Java users and its maintainers can be interested to bring some performance tricks from jsoniter-scala to them. It can be faster parsing and serialization for floats and doubles primitives, BigInteger, BigDecimal, and java.time.* classes, etc.

@plokhotnyuk  I'm really honored to have your detailed answer. I'm not particularly familiar with Scala because I've only been in touch with Scala for a short time. I do find that many examples of fastjson applications on the Internet are on java. Finally, thank you very much for your valuable help.

val del = Map("name" -> "bame" ) val jsonStr = JSON.toJSONString(del, SerializerFeature.PrettyFormat) println(jsonStr)
输出：
{ "empty":false, "sizeMapDefined":false, "traversableAgain":true }

可以考虑一下转为java.util.map然后用parse，自己估算一下对性能的压力


[Enhancement] Overlay placement and size

Adjust overlay placement and size.
In the current version it is not possible to move where the overlay is and as such it is always covering the quests.
For some monitors being able to make the overlay bigger would also be an amazing option.

what are the light blue circles supoosed to be?


can i change the "tick" icon used by displaySelectionButtons ?

hi there, thanks for this component it's really great!
is it possible to swap out the round/blue tick icon, OR, perhaps use a feature already there to display our own button ? we need to let a user simply tap on a button on each image and give them a delete option (we'd show an 'are you sure' alert view when they tapped it).

just to update on this i saw that the image names are hard coded into module but i was able to fork and just change manually. ill try to refactor so it's an option to use alternate images and send pull request.


npm run init failed, [vite:svgr] Cannot read properties of undefined (reading 'transform')

[x] I'm sure this does not appear in the issue list of the repository

Basic Info

Package Name And Version<EMAIL_ADDRESS>Browser: chrome<IP_ADDRESS>

Extra info
[vite:svgr] Cannot read properties of undefined (reading 'transform')
file<EMAIL_ADDRESS>error during build:
TypeError: Cannot read properties of undefined (reading 'transform')
    at Object.transform (/workspaces/arco-design-vue/packages/arco-vue-docs-navbar/vite.config.ts:48:50)
    at async transform (/workspaces/arco-design-vue/node_modules/rollup/dist/shared/rollup.js:22042:16)
    at async ModuleLoader.addModuleSource (/workspaces/arco-design-vue/node_modules/rollup/dist/shared/rollup.js:22267:30)

固定 packages/arco-vue-docs-navbar/package.json  Vite  版本
"vite": "2.5.6"


The type "...." could not be loaded

Hi, after an update to the package, we noticed the following error in every audience that used the AudienceCriterion.
The error is:
UNRVLD.ODP.VisitorGroups.Criteria.AudienceCriterion, UNRVLD.ODP.VisitorGroups
and it appears on the audience UI in the CMS admin:

I have tracked this to a refactor in the class where the namespace has changed. I am not sure exactly when this change happened, but here's how the class looked like last year vs now:

and now:

I can fix this on production by running this script:
update dbo.tblSystemBigTable set String03 = 'UNRVLD.ODP.VisitorGroups.Criteria.Criterion.AudienceCriterion, UNRVLD.ODP.VisitorGroups'
where String03 = 'UNRVLD.ODP.VisitorGroups.Criteria.AudienceCriterion, UNRVLD.ODP.VisitorGroups'

I did a test with a custom criterion where I use the TypeGuid in the VisitorGroupCriterion attribute and it still broke after I renamed the class and changed the namespace so I don't think that would help in this case.
It would be good to have such changed called out in the release notes if possible.

Hi @MrCSharp22,
Apologies. I was aware of the breaking change and thought I had mentioned it in the release notes. Obviously, this wasn't the case. I will make an update.
Another approach is to delete the visitor groups and recreate them, that's what I did.

No problem @andrewmarkham. I thought it was best to put this on your radar.
For us it was a bit faster to apply the fix through SQL than re-configure the audiences.
I'll close this issue as I don't see a way to have an issue like this fixed through a library update.
Thanks :)


B 20204 int

B-20204
Summary
This story tackles a defect where a value being returned as cents was being formatted using a dollar->cents formatter. This task simply removes this formatter to show the correct value in cents to the tenth of a cent.
The value in question is the baseline rate difference, which is calculated by subtracting the calculated EIA diesel value from the baseline GHC Diesel fuel price (static $2.5 value).
See the screenshot section below for an example of a correctly calculated and formatted value, noting that the difference between $2.814 and $2.500 dollars is 31.4 cents.
Verification Steps for the Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Have the Agility acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

[ ] Has the branch been pulled in and checked out?
[ ] Have the BL acceptance criteria been met for this change?
[ ] Was the CircleCI build successful?
[ ] Has the code been reviewed from a standards and best practices point of view?

How to test
To avoid having to set up a great amount of test data for a relatively small change, follow the instructions below for local dev testing:

Access the office app as a TIO
Locate the payment request with move code ORGSIT
Click Review Weight first to resolve the weight being 2000 lbs and over the 110%, move it down to 1500 lbs then approve.
Then, you should be able to view the service items and approve until you reach fuel surcharge, or alternatively go back to the move and click "Show request details" under the payment request. Then, locate fuel surcharge, and expand the calculations.
Ensure that the baseline rate difference is formatted to display in cents, to the tenth of a cent. Ensure that the value is the result of $2.50 minus the calculated EIA Diesel value ($2.814 in the example below)

Frontend

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, Edge).
[ ] There are no new console errors in the browser devtools.
[ ] There are no new console errors in the test output.
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.
[ ] This change meets the standards for Section 508 compliance.

Screenshots

Warnings

:warning:
This PR does not include changes to unit tests, even though it affects app code.

  Generated by :no_entry_sign: dangerJS against 3b4f3f978cc61e78f5a7b207ddfa079a34d506b0


Super Staff Bros.: Add %Kayo

I also moved %Hugendugen's entry quote because it wasn't in the right
place and I changed the double quotes to single quotes.

and yes this is what he wanted, we talked on skype

You didn't test this, so how do you know it does what you think it does?

I actually did test it, but this is when i used move.onHit = function (target, source, move) separately instead of realizing that i could put it into the secondary by doing onHit: function (target, source, move), but then when i tried to put the move.onHit = into the secondary, i only deleted the move. and didn't replace the = with :.

Yes, you made a change and didn't test to see if your change did what it was intended to do.

Yeah i just forget to do things sometimes. :/

I tested the stuff and it works like it was intended to


cjxl lossless encoding of PNG much larger than input

Describe the bug
cjxl v0.3.7 and v0.5.0 output significantly larger JXL than (benign) input PNG.
To Reproduce
(img/data.png attached, is my own creation, and released under CC0: enjoy!)

% cwebp -v -lossless -m 6 -q 100 img/data.png -o img/data.png.web
% cjxl -v -s 9 -q 100 -E 3 -I 1 img/data.png img/data.png.jxl
8130 img/data.png
6820 img/data.png.webp
8642 img/data.png.jxl
(cjxl at v0.3.7, cwebp at 1.2.0)
-E 3 -I 1 at suggestion of @jonsneyers
With cjxl v0.5.0:
% cjxl -e 9 -g 3 -I 0 -P 0 --patches 0
JPEG XL encoder v0.5.0 [AVX2,SSE4]
Read 800x153 image, 32.2 MP/s
Encoding [VarDCT, d1.000, tortoise], 2 threads.
Failed to compress to VarDCT.
and:
% cjxl -v -e 9 -q 100 img/data.png
Compressed to 10485 bytes (0.685 bpp).
% cjxl -v -e 9 -q 100 -E 3 -I 1 img/data.png
Compressed to 13508 bytes (0.883 bpp).
Expected behavior
A JXL output file smaller than the input PNG.
Environment

OS: macOS: Darwin localhost 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64 x86_64
Compiler version: pre-built binaries from Homebrew.
CPU type: x86_64
cjxl/djxl version string: v0.3.7 and v0.5.0 [AVX2,SSE4]

Thanks for your thoughts!
Note that for my use case, above-the-fold hero images on a low-page-weight Web site, a common target is a 'small synthetic image', though note that the moment I am only looking at lossless.  Somewhat more than half such ATF heroes are JPEGs currently, but I will deal with them separately.
Given that compressors such as (say) DEFLATE cap the expansion that happens even on totally unsuitable input, I had simply assumed that except in very special cases that happen to suit a particular codec, I wouldn't see expansions beyond (say) a few % from a PNG under any circumstances, especially given PNG's somewhate verbose headers and thus minimum overheads!
Rgds
Damon

Here's another odd one where I'd expect JXL to do better:
10091 img/2021/20210221-EOallL.png
11605 img/2021/20210221-EOallL.png.jxl
 8554 img/2021/20210221-EOallL.png.webp

cjxl -v -q 100 -e 9 -E 3 -I 1 img/2021/20210221-EOallL.png
JPEG XL encoder v0.5.0 [AVX2,SSE4]
No output file specified.
Encoding will be performed, but the result will be discarded.
Read 1600x400 image, 37.3 MP/s
Encoding [Modular, lossless, tortoise], 2 threads.
Compressed to 11605 bytes (0.145 bpp).

Is that the right image? Your CLI output says 1600x400, but the attached image is 1280x480.

Thank you!  Fiddling with too many images!  Just for reference then, that other one is:
3711 img/2021/20210221-B1T.png
2681 img/2021/20210221-B1T.png.jxl
2546 img/2021/20210221-B1T.png.webp

Finding optimal combinations of flags per is currently a manual task.
We would have to wait for better heuristics.
cjxl img/2021/20210221-EOallL.png-s 9 -q 100 -I 0.907 --patches=0 -g 2 -P 2
-> 8002 bytes

Things to try for brute forcing optimal flags:

Group size -g: all sizes form 0 to 3 are worth trying as it's never certain whether small or large groups are best for any given image.
Predictor choice -P. Usually the normal heuristics are good, but sometimes "simple" predictors like 0, 1, 2 and 5 are better.
Patches: current patch heuristics aren't great, so often --patches=0, turning them off, is better.
-I meta adaptive trees has good defaults, but sometimes turning them off completely 0 or using the entire image 1 for learning is slightly better. For crushing, trying more values may also win you a few bytes.
-E 3 Small gains for colour images, no effect otherwise. Gives an encoding and decoding speed penalty.
Speed: -s 9, the slowest speed, is almost always best, but since the "fast" mode -s 3 works somewhat differently, it may worth trying it to catch some lucky exceptions.

Fab!  May I quote you on those suggestions?
And yes, it seems that the better heuristics are important.
I note that cwebp improved significantly from V0.5.2 to V1.2.0 in robustness of compression, which I suspect was in large part heuristics improvement.
Thanks again!

May I quote you on those suggestions?

They should be roughly correct, but the source of truth would ultimately be @jonsneyers who should know these parameters by heart, and also be able to tell what heuristics can be improved.

$ cjxl image.png whatevenisthis.jxl -q 100 --patches=0 -P 0 -e 9 -I 0.0000000000000001 -g 3
JPEG XL encoder v0.7.0 e8b073c [AVX2,SSE4,Scalar]
Read 800x153 image, 94.6 MP/s
Encoding [Modular, lossless, tortoise], 4 threads.
Compressed to 6889 bytes (0.450 bpp).
800 x 153, 0.55 MP/s [0.55, 0.55], 1 reps, 4 threads.

Can't seem to get anywhere near that with v0.5.0: very impressive!

This issue, together with the basically same issue https://github.com/libjxl/libjxl/issues/727 are, from my point of view the most pressing ones. Reason: Imagemagick and XnViewMP, maybe others too, use it as library to compress, and inherit the compression failure(s) as bug reports. Issue 727 has the feature of having a large set of pictures on the Dilbert website to test with to detect why it actually chooses bad compression setting, even with -e 8 and -e 9.
I don't know how many people are investing their free time here, I honor your work, I am happy that jpeg-xl is actually in a well usable state and really starts spreading now.

For these cases you have to take into account that the jxl encoder does not actually see the PNG, it only sees decoded pixels, at 24 bits per pixel. It compresses those to less than 1bpp, losslessly. It is not really fair to call this a "compression failure".
We can try to always be smaller than png, but it will be hard to do that for every possible image. At corpus level, jxl should beat png, but for any individual image, it can happen that the jxl encoder makes worse choices.
Issue #727 is interesting and investigating it could lead to encoder improvements in jxl, and it is in general interesting to find examples where png, gif or lossless webp are doing better than jxl. But it's more an opportunity to try to identify potential lossless encoder improvements, than really a bug (if you're talking about cases like a specific image being 0.7 bpp in jxl while the png is 0.5 bpp).
Closing this one since #727 is similar.


Code Optimization

Once everything else is looking good, go through, profile, optimize bottleneck, repeat until satisfied

Probably a good choice: Create a function loadValues() that takes an array of specifiers to load to prevent unnecessarily initializing a string stream and loading in player data every time a value needs to be loaded


[FEATURE]: Count comment line length

Is your feature request related to a problem? Please describe.
I can't visualise when a line of a comment is longer than 80 characters (excluding indentation). If it's longer, then the line will be split up when I format the document.
Describe the solution you'd like
It would be nice to have an option to enable a separate limit for comments without indentation.
Describe alternatives you've considered
I tried to set up rulers, but then I relealised that this is dependent on the indentation.
Additional context
Here's an example:
//<PHONE_NUMBER>4567890123456789012345678901234567890123456789012345678901234567890    0 characters left
public class Main {
    //<PHONE_NUMBER>4567890123456789012345678901234567890123456789012345678901234567890    0 characters left
}

On further inspection, this feature is too complicated.
I'm having issues myself implementing the detection.


Use crustache for templating

Fix up the fork a bit before full integration, and confirm license

what things to use for lambdas? do we just not support it, or do we try to jury-rig lua in?

This article: https://john.nachtimwald.com/2014/08/06/using-lua-as-a-templating-engine/ seems promising.

Need more features in the engine.

templating engine done (mostly)

Templating engine done.


Test serpent contract

removed serpent dependency.
serpent and ethereum-serpent should not be used together as dependencies because two serpent modules with different interfaces are available and it is not deterministic which is used on runtime.

ethereum-serpent is the right one
https://github.com/ethereum/serpent/blob/develop/setup.py#L13


Add support for LiveTV

When trying to watch live TV it fails with error: "Could not tune channel. Please check your tuner or antenna."
Example POST request seen on client once tuning is initiated.
https://loadbalancer-url/livetv/dvrs/72/channels/33/tune?X-Plex-Product=Plex%20Web&X-Plex-Version=4.30.2&X-Plex-Client-Identifier=CLIENTID&X-Plex-Platform=Chrome&X-Plex-Platform-Version=83.0&X-Plex-Sync-Version=2&X-Plex-Features=external-media%2Cindirect-media&X-Plex-Model=bundled&X-Plex-Device=Windows&X-Plex-Device-Name=Chrome&X-Plex-Device-Screen-Resolution=1920x979%2C1920x1080&X-Plex-Token=TOKEN&X-Plex-Language=en-GB&X-Plex-Session-Identifier=SESSION

I'm not entirely sure if Live TV is something Unicorn could support given that the transcoder would need access to the tuner. If it is a non-traditional (like xteve) or something it might be somewhat feasible if it's a traditional tuner it would need to be something all the transcoders could reach out to.

@Maxou44 You don't need an antenna. You can always spin up a make shift xTeve tuner and add a M3U file from the internet.
https://github.com/xteve-project/xTeVe
https://github.com/iptv-org/iptv


issues for small gas molecules

HCl, Cl2, O2, N2

is a bug on the web service side
xtbservice_1  | ValueError: zero-size array to reduction operation maximum which has no identity

is always the case for two-atom molecules

because of
        if mol is not None:
            bond_displacements = compile_all_bond_displacements(mol, atoms, ir)
            mask = np.zeros_like(bond_displacements)
            if linear:
                mask[:5, :] = 1
            else:
                mask[:6, :] = 1

fixed in https://github.com/cheminfo-py/xtbservice/commit/3683f28805a8d86b18ced81d323c910be2d20630