Prefetch to GPU: prefetch_to_device does not do anything (from_generator), tf.data.Dataset API unclear

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 20.04
TensorFlow installed from (source or binary): Official 2.4-nightly docker (version 2.4.0-dev20201005)
TensorFlow version (use command below): Official 2.4-nightly docker (version 2.4.0-dev20201005)
Python version: 3.6.9
CUDA/cuDNN version: CUDA: 11.1, cuDNN: 8.0.2
GPU model and memory: Nvidia GTX 1080 Ti, 11170MiB

The API concerning moving CPU to GPU with prefetching extremely unclear using tf.data.Dataset. The function 'prefetch_to_device' simply does not work, even though it was stated that it should be fixed by TF 2.3 or TF 2.4 in the following issue:
issue 35563
In order to show the behavior, I have written a standalone test that goes over four options:

0: only use 'prefetch_to_device'
1: Use 'copy_to_device'
2: Use 'copy_to_device' and prefetch
3: Use 'copy_to_device' and 'prefetch_to_device'

I would expect options 0, 2, and 3 to be almost identical. However, only option 2 does actually the indented behavior. (Option 1 does not do prefetching, so in that sense it also does what it is intended for).
I am also not even 100% sure if option 2 is optimal. It does seem that the other GPU ops are blocked during the MemCpy. It could be that it only looks as if it is covered. But I do not have the expertise to judge this case. In terms of timings I did notice that option 2 was the fastest:
Option prefetch_gpu
data/logs/pa_20201009-082628_prefetch_gpu
Time lapsed= 0:00:01.177912

Option copy
data/logs/pa_20201009-082628_copy
Time lapsed= 0:00:00.916617

Option copy_prefetch
data/logs/pa_20201009-082628_copy_prefetch
Time lapsed= 0:00:00.831833

Option copy_prefetch_gpu
data/logs/pa_20201009-082628_copy_prefetch_gpu
Time lapsed= 0:00:00.926764

Standalone code to reproduce the issue
import os
import datetime
from tqdm import tqdm

import numpy as np

import tensorflow as tf
print('TF version', tf.__version__)

@tf.function
def do_stuff(wmat, tf_var):

    A = tf.matmul(wmat + 1, tf.transpose(wmat))
    error = tf.reduce_mean(tf_var)
    return error, A

exp_uuid = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")

n_batches = 20

weights = [None] * n_batches
for i in range(n_batches):
    weights[i] = tf.constant(np.random.rand(2000,10000), dtype=tf.float32)

def gen():
    for i in weights:
        yield i

option_names = ['prefetch_gpu', 'copy', 'copy_prefetch', 'copy_prefetch_gpu']
for option in range(4):

    dataset = tf.data.Dataset.from_generator(gen, output_types=(tf.float32))

    if option == 0:
        ## Option 1: prefetch_gpu
        #
        ## output:
        ##          weights device /job:localhost/replica:0/task:0/device:CPU:0
        ##          weights device after identity /job:localhost/replica:0/task:0/device:GPU:0

        gpu_transform = tf.data.experimental.prefetch_to_device('/gpu:0')
        dataset.apply(gpu_transform)

    elif option == 1:
        ## Option 1: only copy
        #
        ## output:
        ##          weights device /job:localhost/replica:0/task:0/device:GPU:0
        dataset = dataset.apply(tf.data.experimental.copy_to_device("/gpu:0"))

    elif option == 2:
        ## Option 2: copy + prefetch
        ## as suggested in https://github.com/tensorflow/tensorflow/issues/35563#issuecomment-602160568
        #
        ## output:
        ##          weights device /job:localhost/replica:0/task:0/device:GPU:0

        dataset = dataset.apply(tf.data.experimental.copy_to_device("/gpu:0"))
        with tf.device("/gpu:0"):
            dataset = dataset.prefetch(1)

    elif option == 3:
        ## Option 3: copy + prefetch_gpu
        #
        ## output:
        ##          weights device /job:localhost/replica:0/task:0/device:GPU:0
        dataset = dataset.apply(tf.data.experimental.copy_to_device("/gpu:0"))
        gpu_transform = tf.data.experimental.prefetch_to_device('/gpu:0')
        dataset.apply(gpu_transform)

    tf_var = tf.Variable(np.zeros(3))
    adam = tf.keras.optimizers.Adam(1e-4)
    logpath = os.path.join('data', 'logs', 'pa_' + exp_uuid + '_' + option_names[option])

    tf.profiler.experimental.start(logpath)
    start = datetime.datetime.now()
    for b, wmat in tqdm(enumerate(dataset)):
        with tf.GradientTape() as tape:

            if b == 0:
                print('\n weights device', wmat.device)
                print('')

            if option == 0:
                wmat = tf.identity(wmat, 'move_to_gpu')
                if b == 0:
                    print('weights device after identity', wmat.device)
                    print('')

            # Do some calculations
            result = do_stuff(wmat, tf_var)

        grads = tape.gradient(result[0], [tf_var])
        adam.apply_gradients(zip(grads, [tf_var]))
    stop = datetime.datetime.now()
    tf.profiler.experimental.stop()

    print(f'\nOption {option_names[option]}')
    print(logpath)
    print('Time lapsed=', stop - start)

Option 0: prefetch_to_device

Option 1: copy_to_device

Option 2: copy_to_device + prefetch

Option 3: copy_to_device + prefetch_to_device

Files:
pa_20201009-082628_prefetch_gpu.zip
pa_20201009-082628_copy.zip
pa_20201009-082628_copy_prefetch.zip
pa_20201009-082628_copy_prefetch_gpu.zip

Note that this originated from an initial stack overflow question:
https://stackoverflow.com/questions/64142435/tensorflow-how-to-prefetch-data-on-the-gpu-from-cpu-tf-data-dataset-from-gener/64239650#64239650

I ran the code on nightly please find the gist here.

@rubenverhack Sorry for the slow response. This looks like a typo, instead of dataset.apply(gpu_transform) it should be dataset = dataset.apply(gpu_transform). Dataset transformations are functional, creating new datasets instead of modifying their source dataset.

@aaudiber Thank you for taking the time to review this. It's true that that was a mistake in this example. I can confirm that option 4 (prefetch_to_device) is as fast as option 3 (copy to device + prefetch).

However, I do still see a noticeable time that the GPU is performing nothing else than MemcpyH2D. I am not sure if I'm reading this correctly, but why would that be the case?

However, I do still see a noticeable time that the GPU is performing nothing else than MemcpyH2D. I am not sure if I'm reading this correctly, but why would that be the case?

Same to me. After using dataset = dataset.apply(tf.data.experimental.prefetch_to_device(device='/gpu:0', buffer_size=16)), it is faster than dataset = dataset.prefetch(buffer_size=16).
But there is still noticeable time spent on cudaMemcpyH2D. Please see here for more details.
Maybe prefetch_to_device does not really prefetch?

Same problem to me, i notice that gpu stop training the model when transferring data, and it would transfer data when computing.

TLDR: prefetch_to_device works as expected, when the data produced by the input pipeline is allocated in pinned host memory.
I have recently investigated this issue.
First, to compare copy_to_device and prefetch_to_device performance, I have modified the original repro as follows:
def main(argv):
  del argv

  @tf.function
  def do_stuff(wmat, tf_var):
    result = tf.matmul(wmat + 1, tf.transpose(wmat))
    error = tf.reduce_mean(tf_var)
    return error, result

  n_batches = 100
  weights = [None] * n_batches
  for i in range(n_batches):
    weights[i] = tf.constant(np.random.rand(2000, 10000), dtype=tf.float32)

  def gen():
    for weight in weights:
      yield weight

  option_names = [
      'prefetch_to_device', 'copy_to_device', 'copy_to_device_and_prefetch'
  ]
  dataset = tf.data.Dataset.from_generator(gen, output_types=(tf.float32))

  if FLAGS.option == 0:
    dataset = dataset.apply(tf.data.experimental.copy_to_device('/gpu:0'))

  if FLAGS.option == 1:
    dataset = dataset.apply(tf.data.experimental.prefetch_to_device('/gpu:0'))

  tf_var = tf.Variable(np.zeros(3))
  adam = tf.keras.optimizers.Adam(1e-4)

  for _, wmat in tqdm(enumerate(dataset)):
    with tf.GradientTape() as tape:
      result = do_stuff(wmat, tf_var)
      grads = tape.gradient(result[0], [tf_var])
      adam.apply_gradients(zip(grads, [tf_var]))

Using this program I have collected the following traces:
copy_to_device

prefetch_to_device

While a single step of the prefetch_to_device version of the program is slightly faster (based on the trace view measurement as opposed to TF profiler overview, which might not be correctly detecting "steps" for this program) -- 54.9ms vs 62.6ms -- the trace also shows that the data copy seems to be delayed by something.
Next, I investigated whether making sure that the input pipeline produces data that is allocated in pinned host memory, resolves the issue.
Currently, tf.data only allocates pinned host memory for input pipelines that use the map().batch() pattern. Therefore, I needed to modify the program as follows:
def main(argv):
  del argv

  @tf.function
  def do_stuff(wmat, tf_var):
    result = tf.matmul(wmat + 1, tf.transpose(wmat))
    error = tf.reduce_mean(tf_var)
    return error, result

  option_names = [
      'copy_to_device', 'prefetch_to_device', 'copy_to_device_and_prefetch'
  ]

  dataset = tf.data.Dataset.range(1024 * 100)
  dataset = dataset.map(
      lambda _: tf.random.uniform([10000]),
      num_parallel_calls=tf.data.AUTOTUNE)
  dataset = dataset.batch(batch_size=1024)

  if FLAGS.option == 0:
    dataset = dataset.apply(tf.data.experimental.copy_to_device('/gpu:0'))

  if FLAGS.option == 1:
    dataset = dataset.apply(tf.data.experimental.prefetch_to_device('/gpu:0'))

  tf_var = tf.Variable(np.zeros(3))
  adam = tf.keras.optimizers.Adam(1e-4)

  for _, wmat in tqdm(enumerate(dataset)):
    with tf.GradientTape() as tape:
      result = do_stuff(wmat, tf_var)
      grads = tape.gradient(result[0], [tf_var])
      adam.apply_gradients(zip(grads, [tf_var]))

These changes end up resolving the issue:
copy_to_device

prefetch_to_device

TLDR: prefetch_to_device works as expected, when the data produced by the input pipeline is allocated in pinned host memory.

So the conclusion is:
prefetch_to_device actually works, but it needs be to used with map().batch() to get better performance?

Currently, tf.data only allocates pinned host memory for input pipelines that use the map().batch() pattern.

And where can I get such information? From TensorFlow source code?

prefetch_to_device works when the data produced by the input pipeline is allocated in pinned host memory. map().batch() is currently the option to achieve this through tf.data. This is not documented anywhere and is a subtle implementation detail: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/data/experimental/map_and_batch_dataset_op.cc#L517
I plan to investigate whether there is any downside to making all tf.data allocations use pinned host memory and if not, make this available more broadly. Note that this might not address the issue for input pipelines that do not allocate memory through tf.data. For instance, the example in the original description of this issue performs the memory allocation outside of tf.data.

prefetch_to_device works when the data produced by the input pipeline is allocated in pinned host memory. map().batch() is currently the option to achieve this through tf.data. This is not documented anywhere and is a subtle implementation detail: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/data/experimental/map_and_batch_dataset_op.cc#L517
I plan to investigate whether there is any downside to making all tf.data allocations use pinned host memory and if not, make this available more broadly. Note that this might not address the issue for input pipelines that do not allocate memory through tf.data. For instance, the example in the original description of this issue performs the memory allocation outside of tf.data.

batch().map() is faster(2X) than map().batch(), because the former is parallel decode, we need batch().map() support pinned host memory .

@jsimsa i see that you were able to get the tracer to show prefetching (memcpy overlap with gpu compute)
but did you see an actual improvement in training speed?
ds = tf.data.Dataset.range(2**13)
ds = ds.map(
  lambda _: np.random.randint(0, 10, (4096)).astype(np.float32),
  num_parallel_calls=tf.data.AUTOTUNE)

ds = ds.batch(batch_size=4096).cache().repeat(-1)
pf_ds = ds.prefetch(16)
gpu_pf_ds = ds.apply(tf.data.experimental.prefetch_to_device('/gpu:0', buffer_size=16))

def time_ds(ds, ramp_steps=100, steps=200):
  @tf.function
  def _step(wmat, tf_var):
    with tf.device('/gpu:0'):
      result = tf.matmul(wmat + 1, tf.transpose(wmat))
      error = tf.reduce_mean(tf_var)
      return error, result

  tf_var = tf.Variable(np.zeros(3))
  adam = tf.keras.optimizers.Adam(1e-4)

  assert steps > ramp_steps
  for i, elem in enumerate(ds):
    if i == ramp_steps:
      t = time.time()
    if i == steps:
      print(time.time() - t)
      break
    with tf.GradientTape() as tape:
      result = _step(elem, tf_var)
      grads = tape.gradient(result[0], [tf_var])
      adam.apply_gradients(zip(grads, [tf_var]))

time_ds(ds)
time_ds(pf_ds)
time_ds(gpu_pf_ds)
all 3 show roughly 8 seconds per 100 steps on colab GPU

prefetch_to_device works when the data produced by the input pipeline is allocated in pinned host memory. map().batch() is currently the option to achieve this through tf.data. This is not documented anywhere and is a subtle implementation detail: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/data/experimental/map_and_batch_dataset_op.cc#L517
I plan to investigate whether there is any downside to making all tf.data allocations use pinned host memory and if not, make this available more broadly. Note that this might not address the issue for input pipelines that do not allocate memory through tf.data. For instance, the example in the original description of this issue performs the memory allocation outside of tf.data.

Any better solutions?

I'm running a siamese network on Kaggle, using a tf Dataset (prefetching in the final step of dataset).
I'm noticing that GPU is not being used at all.
I also tried to run the same notebook on Google Colab, and seems that GPU is not being used.
Anyone running in the same issue?

I'm running a siamese network on Kaggle, using a tf Dataset (prefetching in the final step of dataset). I'm noticing that GPU is not being used at all. I also tried to run the same notebook on Google Colab, and seems that GPU is not being used. Anyone running in the same issue?

Hi, What do you mean by "GPU is not being used"?

I'm running a siamese network on Kaggle, using a tf Dataset (prefetching in the final step of dataset). I'm noticing that GPU is not being used at all. I also tried to run the same notebook on Google Colab, and seems that GPU is not being used. Anyone running in the same issue?

Hi, What do you mean by "GPU is not being used"?

I mean that the GPU memory isn't being modified (always 0%).
I don't know what's hapenning.

@jsimsa
I tried to run the code example that you provided but still prefetch_to_device did not work optimally in all the scenarios that I tried. Can you please advise?
All the examples below are with TF 2.5.

When running the example as-is on a T4 GPU it worked as expected.

When running the example on a T4 GPU but commenting-out the gradients computation (that is, commenting out the lines grads = tape.gradient(result[0], [tf_var]) and adam.apply_gradients(zip(grads, [tf_var])) in order to simulate inference without training), the calls to MemCpy did not happen in parallel to the computation in MatMul as can be seen in the following image:

The same problem occurred when running the example as-is on an RTX 3090 GPU:

Files:
tf_example_prefetch_t4_no_gradients.zip

@jsimsa Any further progress using pinned memory as default for tf.data. Thank you.

@kushanam is working towards a solution

@kushanam @jsimsa Can we please get an update on this issue. As a hack I do something like this to force pinned memory which improves epoch times 10-20%:
def noop(x):
    return x
options = tf.data.Options()
options.experimental_optimization.noop_elimination = False
# HACK: Needed to force pinned memory
# https://github.com/tensorflow/tensorflow/issues/43905
dataset = dataset.map(noop, num_parallel_calls=tf.data.AUTOTUNE)
dataset = dataset.batch(batch_size, drop_remainder=True)

That being said MemcpyH2D is still a big bottleneck and using a fraction of a total pcie bandwidth as reported by other users. The MemcpyH2D slowness becomes particularly problematic and accounts for 10-30% of overhead when input tensors are relatively large with respect to device compute. Increased priority to profile / optimize this will be much appreciated.

Any update?


[Feature] Configure logging

It must be possible to disable logging.
Name of the variable might be MPD_ENABLE_LOGGING, which should default to yes

Available in 2022-12-17


Indonesian subtitle

Describe your suggested feature
Can you please add Bahasa Indonesia (ind) in the online subtitle search?
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.

sure

added check https://github.com/Zenda-Cross/vega-app/releases/tag/v2.4.7


Add Text feature

I would like to add this feature of adding texts on to the Tshirt. Please assign this issue to me under GSSOC'23.

Good , lets do it

Just complete your work , mentor will embed the GSSOC level , dont worry for that


Change Label text

I'm trying to change text of already displayed Label. So far I found that only setting Label _text attribute and then calling update(None) works as there is no method to set Label text. Am I missing something or things are supposed to work this way?

No - you're not missing anything.  The Label class is effectively read only, having no API to change _text.  Why do you need your label to change dynamically?
I imagine the reason you need to call update() is that there isnothing else going on and so asciimatics doesn't need know it needs redraw the screen. Calling force_update() is the way you're supposed to handle these situations.

It sounds like you're trying to do some sort of status bar.  If so, the recommended way is to use a disabled Text or TextBox widget as described in http://asciimatics.readthedocs.io/en/latest/widgets.html#disabling-widgets.


chore: go-demo-6 to 1.0.406

chore: Promote go-demo-6 to version 1.0.406

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

Needs approval from an approver in each of these files:

OWNERS

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


feature request: soundgasm.net source

why? Soundgasm.net is an audio sharing platform used by https://reddit.com/r/gonewildaudio & r/vanillaaudio & many more
example of soundgasm https://soundgasm.net/u/not_your_habibTEA/My-Power-is-Out-Can-I-Come-In

Well, that's certainly a request.
I'll have a look to see what I can do

Implemented in version 1.4.0


Dashboard

Great job on the dashboard! Will this be a component too? Meaning we can add the component and enter the Github repo name?

We don't plan to make a component out of it but you can easily use your own repo by editing the GitHubService.


BXMSPROD-944 github action build chain

https://issues.redhat.com/browse/BXMSPROD-944
Many thanks for submitting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[ ] You have read the contributors guide
[ ] Pull Request title is properly formatted: KOGITO-XYZ Subject
[ ] Pull Request title contains the target branch if not targeting master: [0.9.x] KOGITO-XYZ Subject
[ ] Pull Request contains link to the JIRA issue
[ ] Pull Request contains link to any dependent or related Pull Request
[ ] Pull Request contains description of the issue
[ ] Pull Request does not include fixes for issues other than the main ticket

I would propose to add build-command-upstream: "mvn clean install -DskipTests" in order to just build the project without executing tests

tests are failing due to Connection refused: /<IP_ADDRESS>:32783

replaced by https://github.com/kiegroup/kogito-runtimes/pull/712


Use an automatic fake data generator on tests

Summary
Currently we are generating our test data manually per test. It would be nice to integrate a tool to generate this fake data to favor tests robustness. Faker seems a good candidate for this.
Acceptance criteria

An automatic tool should be added as development-time dependency only.
Current and further test classes should use this tool instead of manually generate test/fake data.

Tracking under #31 for now


[Silabs] Endpoint Queue Filter implementation.

WORK IN PROGRESS.

Old WIP draft PR with merge conflicts. Assuming stale and closing.


Add support for SVG to image referece in SVG encoded as a data URI (SVG data loader)

In the file from the asciidoctor-pdf repo
lib/asciidoctor/pdf/ext/prawn-svg/loaders/data.rb it was advised to remove the
regex
REGEXP = %r(\Adata:image/(?:png|jpe?g);base64(?:;[a-z0-9]+)*,)i
restriction now that prawn-svg supports SVG image references in SVG
Regex from prawn:
REGEXP = %r{\Adata:image/(png|jpeg|svg\+xml);base64(;[a-z0-9]+)*,}i

This is related to prawn-svg upgrade in 2.3.14.


suddenly unresponsive: I2C issues

I have what appears to be an an electronic issue, but this does not make much sense. So I am hoping I am missing something obvious —although I have not done all obvious tests.
I soldered headers on a new pico and placed it on a new rgb keypad, it worked through the first example but then after a few other tests it is unresponsive colour-wise (it's bricked) because it returns*:
File "/lib/pmk/platform/rgbkeypadbase.py", line 22, in __init__
RuntimeError: No pull up found on SDA or SCL; check your wiring

This is the same result one gets if it's not slotted in.
These are the tests I did, which if I fail to get it to work hopefully may help others. So I'll write this as much of a walkthough as I can be bothered doing.
Tests done
*) Print output is seen in Mu editor's Serial or in PyCharm w/ MicroPython plugin and COM assigned. In the former there's a picture of a chip in the bottom left, which when unplugged has a red x on it.
Okay. The issue may be:

pico: code
pico: physical fault
keypad: physical fault

Unfortunately, I don't have a second pico to swap in, so I cannot rule out 2.
Code?
I have nuked the pico's flash a few times and tried both 7.3.3 and 8.0.6 uf2 firmwares and reinstalled the correct libraries for the version I have.
Pico fault?
As the pico is naked, I assumed I blew the power management chip (or fuse I believe for a pico?), which at least with regular Raspberries is very easy (3.3V-5V shorting) —down the line I might add a thin layer of neutral-cure silicone to the top of the pins.
So I simply tested the pins with a multimeter with hook leads and everything is fine (3.3V).
import busio, board, digitalio, time

for pin in (board.GP3, board.GP4, board.GP5, board.GP17, board.GP18, board.GP19):
    print(pin)
    test = digitalio.DigitalInOut(pin)
    test.direction = digitalio.Direction.OUTPUT
    test.value = 1
    time.sleep(5)
    test.value = 0

I have done plenty of soldering before, so it's not a poor quality soldering.
keypad fault?
Now, scanning for I2C on GP4 and GP5 powered by GP3, gives an I2C at address 0x20 sometimes.
import board, busio, digitalio
import time

# ## 3.3V
powered = digitalio.DigitalInOut(board.GP3)
powered.direction = digitalio.Direction.OUTPUT
powered.value = 1

# ## init the I2C bus.
# in other Pis it's `i2c = board.I2C()`
# This is circuit-python stuff, `bus = SMBus(1)` is the other way
i2c = busio.I2C(scl=board.GP5, sda=board.GP4)

while not i2c.try_lock():
    pass
print("I2C addresses found:", [hex(i) for i in i2c.scan()])
powered.value = 0
print('complete')

Occasional different errors
In the above test I recently started getting when doing i2c.scan() or keybow = PMK(Hardware()) a TimeoutError: Clock stretch too long error occurs (i.e. something is glitching).
While other times (after a wiggle) keybow = PMK(Hardware()) is fine, but keybow.update() raises the error:
File "/lib/pmk/platform/switches/tca9555.py", line 19, in switch_state
OSError: [Errno 19] No such device

This makes me suspect it's a hardware issue. I should test a different I2C device (eg. BME280). But for now, I'll buy a new Pico and see if anyone else has had this issue.

I switched picos and it worked: Things made in Yorkshire (i.e. Pimoroni keypad) outperform things made in Cambridge (pi foundation HQ).
(Okay, the Pico is made in Japan and when I tried my old pico it started working again... but 🤫 )


bootstrap_sass dependency cannot be filled

when running pub get:
Resolving dependencies...
Package bootstrap_sass has no versions that match 4.0.0-alpha.3+5 derived from:
- ng_bootstrap 0.4.6 depends on version 4.0.0-alpha.3+5

The dependencies section of my pubspec.yaml:
dependencies:
  angular2: 2.2.0
  browser: any
  dart_to_js_script_rewriter: any
  js: any
  ace: any
  ng_bootstrap: 0.4.6
  jsonx: any
  fff: any
  sass: any

Because it depends on an alpha version, do I need to enable that in pub somewhere? If so, this should be included in the install instructions or the bootstrap_sass version should be bumped to non-alpha.
It's been a while since I updated the dependencies on this project, updating from angular2 2.0.0-beta.20, so there may be some issue there as well.

Yes sorry I haven't released that version

version v0.5.0 of bootstrap_sass has been release, this issue should be solved now


Renaming 'matchOn' for Query to 'where'

First of a number of name changes

The only name change I would bundle in with this is maybe rename whereRelatedByValue to relatedByValue or something similar so you dont have where.x = whereRelatedByValue(y)

Will be renaming matchOn in ManagedSet and will be renaming where* to something else... have a few more things to change to better figure out what to name it


Edit page error handling is broken

Issue 1: Edit page doesn't show errors
Issue 2: When accessing Edit page for a package that doesn't exist 500 is returned.
Issue 3: When accessing Edit page for a package that is not yours, 500 is returned.

We should find a way to unit/functional test this so it doesn't happen again--it would be very bad if somebody didn't know what was wrong with their package on upload/edit.


Read Me Documentation

The read me is very brief and may not be enough for many users.

Yes! Please add a proper documentation or enhance the Readme.


skore.Project should expose ML features (e.g. CrossValidationReporter, etc.) directly

Currently, the pattern expected in skore is:
# %%
import skore

my_project = skore.create("my_project", working_dir="/tmp")

# %%
from sklearn import datasets, linear_model
X, y = datasets.load_diabetes(return_X_y=True)
lasso = linear_model.Lasso()

# %%
from skore import CrossValidationReporter
reporter = CrossValidationReporter(lasso, X, y, cv=3)

# %%
my_project.put("reporter", reporter)

We should find a way that the reported is available via my_project directly without the need to use .put. It would unlock three user features:

A user does not need to know about the put method if the idea is to provide a report via our UI. A user that goes with our skore-UI would probably expect that it just work out of the box. We should still allow the current pattern for advanced user that want to craft their own report.
It is particularly relevant with the "Activity Feed": with some changes, the internal cross-validation computation could leverage a generator and the "Activity Feed" could start to report live activities as the generator is consumed. Currently the .put force for all results to be available to start exploring the cross-validation results. Async reporting allows to for instance break the processing if we observe that the first fold iterations go side ways. It is a gain of time. In the future, the callback API of scikit-learn would make it even easier to implement this feature.
The previous item also open the door for a nicer progress bar reporting via the generator consumption.

Interesting idea; from a programming view I feel like Project is well scoped: it's a cache where you can put and get, and as a bonus it's somewhat aware of the kinds of objects being put. As such, giving it the responsibility of exposing ML features feels a bit weird to me.

We should find a way that the reported is available via my_project directly without the need to use .put.

I agree. The vision is to store all artifacts produced by the user, irrespective of using put or not.
In this discussion, @GaelVaroquaux suggest that items should be qualified as much as possible so that the user can make relationships, filter them, search them.
Therefore put is just a way to give a name to an item, that is, refine the knowledge on an item.
Also, see my comment here where I suggest that it would be nice to remove the need to manage a project.

it's a cache

It is not a cache.


Rename Distributed to HighAvailability in IronicSpec

Closes: #56

/approve
Could you update the bug tag in the PR description so that github recognizes it? It has to be "Fixes: #..." or "Closes: #..."

/lgtm


AsyncStorageModule.java: uses or overrides a deprecated API. Recompile with -Xlint:deprecation for details.

Hi, I am using current version of async-storage:1.6.3 and react-native:0.61.4 but I got a error after install the package.
Error: AsyncStorageModule.java: uses or overrides a deprecated API. Recompile with -Xlint:deprecation for details.

Didn't work for me, but it looked like this comment solved this problem for some people.
You can try this, or if you scroll up on the comments, someone tried to clean Gradle and/or re-install Android Studio with the SDKs.
As for me, I found a solution which worked, but I still don't know how or why. I went to the build.gradle on Project Level, and added a specific kotlinVersion to it, like this:
buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
        kotlinVersion="1.3.41"
    }
...

Can you check if you MainActivity.java on line 19 is with correct Override annotation:
@Override
Mine was without @

@ricaragao then it's not an annotation

@harleenarora
Can you provide the full error code/message?

Hi, I have already solved this issue using multiDexEnabled true

@harleenarora Great, closing the issue then 👍

I'm also still experiencing this issue.
Enabling multiDexEnabled did not help.
See my cross post : here


Use .nil? for nil check

Currently the metadata nil check uses value == nil, unfortunately this causes issues with time fields and the time comparator with an exception:
[2017-11-15T23:01:51,491][FATAL][logstash.runner          ] An unexpected error occurred! {:error=>#<NoMethodError: undefined method `time' for nil:NilClass>, :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/timestamp.rb:13:in `<=>'", "org/jruby/RubyComparable.java:150:in `=='", "/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-output-gelf-3.1.4/lib/logstash/outputs/gelf.rb:146:in `block in receive'", "org/jruby/RubyHash.java:1343:in `each'", "/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-output-gelf-3.1.4/lib/logstash/outputs/gelf.rb:145:in `receive'", "/usr/share/logstash/logstash-core/lib/logstash/outputs/base.rb:92:in `block in multi_receive'", "org/jruby/RubyArray.java:1734:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/outputs/base.rb:92:in `multi_receive'", "/usr/share/logstash/logstash-core/lib/logstash/output_delegator_strategies/legacy.rb:22:in `multi_receive'", "/usr/share/logstash/logstash-core/lib/logstash/output_delegator.rb:49:in `multi_receive'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:538:in `block in output_batch'", "org/jruby/RubyHash.java:1343:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:536:in `output_batch'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:481:in `worker_loop'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:439:in `block in start_workers'"]}

This modifies the code so the nil check is not an equality check but rather a Ruby nil? check

I've signed the CLA but Github hasn't reflected it (https://www.elastic.co/contributor-agreement?license=icla). Is there any step I need to take before it takes effect?

@jakelandis You seem to be the approver of PRs here, mind taking a look at this when you have a chance. I believe the bug is still present in the current versions

@cwurm Hey :) Or somebody else, please merge this :)
Thanks a lot!


MONDO:0003954 Angiokeratoma of Fordyce & MONDO:0020597 [Merge]

Mondo term (ID and Label)
Angiokeratoma of Fordyce MONDO:0003954
Reason for deprecation
sources in Mondo seem to use these as synonyms (leading to Mondo treating one as a syn of the other)
Term to be merged with
Angiokeratoma of scrotum   MONDO:0020597
Your nano-attribution (ORCID)
If you don't have an ORCID, you can sign up for one here

The definition of 'Angiokeratoma of Fordyce' MONDO:0003954 in Mondo is an angiokeratoma that is located on the scrotum or vulva. PMID: 36193055 states the lesions are more common in males, but can occur in females. Thus, I do not think that the terms Angiokeratoma of Fordyce MONDO:0003954 and Angiokeratoma of scrotum MONDO:0020597 are synonyms. I think Angiokeratoma of scrotum MONDO:0020597 should remain a child of Angiokeratoma of Fordyce MONDO:0003954, but maybe the synonyms need to be revised?

@kanems @katiermullen
Fordyce-type angiokeratoma of scrotum is a narrow synonym for 'angiokeratoma of Fordyce', so I think it's okay.
I removed the obsoletion candidate tag from 'angiokeratoma of scrotum'


can't open a dropdown with the keyboard

Step to reproduce
It can be reproduced on the docs site.

Navigate to any dropdown example
Hold the tab key until it focuses on a dropdown
Press the enter key to activate the dropdown

It would open and be closed immediately. I think it's because the button also bubbles a click event so that it got toggled twice. One in click handler and another in a keydown handler. Seems like a preventDefault can fix this. I can open a PR for this if you like to.

Thank you for raising this issue – PR would be appreciated.


refactor: encapsulate some globals 4

Continuing https://github.com/D-Programming-Language/dmd/pull/5067

Auto-merge toggled on


Add a note on the weight of thresholds

I think the new note is better worded. The old note probably needs to be removed.

@peledins : Thanks for your contribution! The author, @rothja, has been notified to review your proposed change.

@peledins Hello. Sorry for the delay as I was out of the office recently. Could you give me some background on the technical details of the note. Did you find this out from testing, from Microsoft, or from other parts of the documentation? Thank you!


Allow cheating on runs

Hello!
I found this project from a (not directly) related video posted on Hacker news and thought it was really neat and funny, great job!

I noticed that this game blocks "cheating" by disabling Ctrl+F. I wish there was an option to disable this for Wikiplebs like me who has yet to learn how to sniff out the correct sections and such.
This block can be circumvented anyways by opening "find in page" from the menu on most browsers so the block feels kind of arbitrary anyways IMO.
I don't write React so I thought I'd just drop this here as a suggestion.

I agree i would like the option to toggle the ability to use ctrl+f when playing. I have played other wiki games which allow ctrl+f, and considering that using ctrl+f is actually how most people would use wikipedia effectively, i do not consider that to be "cheating." I would like to play with ctrl+f turned on, to get an idea of who out of my group of friends is more effective at searching wikipedia, not who is more effective at scanning articles with your eyes for the link you already expect to be on that page.

added a setting


string “NULL” in Query will treated as nil in STD router StructReq

What version of Go and system type/arch are you using?

go version go1.22.0 linux/amd64
What version of GoFrame are you using?

v2.7.0
Can this bug be re-produced with the latest release?
YES
What did you do?

define a STD router REQ
type NULLStringReq struct {
	g.Meta    `path:"/test" method:"get"  summary:"STRING NULL TESTER"`
	ES []string `json:"es"  v:"required" `
}

test with this REQs

[x] GET /test?es[]=NULL result in NULLStringReq.ES = []string{"NULL"}
[x] GET /test?es=1 result in NULLStringReq.ES = []string{"1"}
[ ] GET /test?es=NULL result in NULLStringReq.ES = nil

What did you expect to see?

[x] GET /test?es=NULL result in NULLStringReq.ES = []string{"NULL"}

just like  GET /test?es=1  or like the raw method,which is correct
What did you see instead?

@gqcn 底层调用了gconv.Strings()方法，如果参数是string的话，会调用json.Valid方法，然后传的null值字符串，会返回一个nil

if  employees=NULL  is not working
employees=1  should not work too
Personally, I think this is a BUG


Add clientWidth option

Add an option to use page width rather than container width when calculating the target size. This helps for when the target is to be displayed full-screen.

Sorry, pushed to wrong remote.


The readStream method wait while object full download

How I can get the real stream, which can read while it downloading?

I understand: need write my own implementation, with executionAsync and the SaveAs option.

I believe you can do this by settings $options to ['@http' => ['stream' => true]]

I solved my problem with that code
$stream = fopen('php://output', 'w');
$adapter = $filesystem->getAdapter();

$options = [
    'Bucket' => $adapter->getBucket(),
    'Key' => $adapter->applyPathPrefix($filepath),
    'SaveAs' => $stream,
];

$s3Client = $adapter->getClient();
$command = $s3Client->getCommand('getObject', $options);
return $s3Client->execute($command);


ADD: Compare Country Death Trajectories

Amazing work

@pratapvardhan I think that a death rate would be more informative
of deaths / population for each country
Is that something you can reasonably do to edit the charts?

I guess the main problem would be you need population from somewhere and then we need to join in back onto this data, which will take maintenance.  but worth it?


GROOVY-10993: Add CycloneDX SBOM files

This creates and publishes the cyclonedx sbom files but there are essentially empty ones for groovy-all, groovy-bom and groovy-binary. I don't know if that is a bug or feature. I.e. I don't know whether security scanning tools follow the transitive dependencies and merged to sbom data. If not we might have to do some aggregation like we do for groovy-all docs.

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

Project coverage is 68.6274%. Comparing base (6cd477b) to head (13cf8ea).
Report is 97 commits behind head on master.

Additional details and impacted files

@@                Coverage Diff                 @@
##               master      #2092        +/-   ##
==================================================
+ Coverage     68.5957%   68.6274%   +0.0318%
- Complexity      29233      29327        +94
==================================================
  Files            1426       1426
  Lines          113494     113628       +134
  Branches        19548      19601        +53
==================================================
+ Hits            77852      77980       +128
  Misses          29088      29088
- Partials         6554       6560         +6

see 36 files with indirect coverage changes

Merged. Thanks.


How to keep the toolbar (search, filter etc.) after I select rows?

How to keep the toolbar (search, filter etc.) after I select rows?  I want to be able to search when I select rows.
I also want to be able to remove the delete button and replace it with my own buttons. I understand that I need to do it with;
customToolbarSelect: (selectedRows, displayData, setSelectedRows) => void
But I don't understand the parameters. Can you give me an example about this function please? Thank you.
Edit: One more question. How can I download only the data which I filtered out and displayed on the screen?

For keeping the toolbar visible when an item is selected, see the "selectToolbarPlacement" option. You either want to set this to "none" or "above".

But I don't understand the parameters. Can you give me an example about this function please? Thank you.

https://github.com/gregnb/mui-datatables/blob/master/examples/customize-toolbar/index.js
Though that particular example doesn't use the parameters. Here's what they mean though:

selectedRows: An array of the selected rows.
displayData: Current display data for the table.
setSelectedRows: Allows you to set the selected rows. See: https://github.com/gregnb/mui-datatables/blob/master/src/components/TableToolbarSelect.js#L49

Edit: One more question. How can I download only the data which I filtered out and displayed on the screen?

See the "downloadOptions" option. You want to set the "useDisplayedRowsOnly" and "useDisplayedColumnsOnly" options of it's "filterOptions". Ex:
downloadOptions: {
  filterOptions: {
    useDisplayedRowsOnly: true,
    useDisplayedColumnsOnly: true,
  }
}


undefined function Alfred.Robot.send/2

Hi
I have followed the intro and created Alfred.Robot and I'm trying to get the bot to send messages from an OTP app.
Even though I can locate the bot using Hedwig.whereis("alfred"), it keeps crashing with the following error:
20:50:32.849 [error] Process #PID<0.183.0> raised an exception
** (UndefinedFunctionError) undefined function Alfred.Robot.send/2
    (combover) AlfredRobot.send(#PID<0.161.0>, %Hedwig.Message{matches: nil, private: %{}, ref: nil, robot: nil, room: "myroom", text: "https://twitter.com/statuses/737733017519706112", type: "message", user: %{}})
    (elixir) lib/stream.ex:454: anonymous fn/4 in Stream.map/2
    (elixir) lib/stream.ex:1101: Stream.do_resource/5
    (elixir) lib/stream.ex:1247: Enumerable.Stream.do_each/4
    (elixir) lib/stream.ex:494: Stream.run/1

I'm not sure what I am missing??
The send function should be defined?

After further investigation, it does not appear this is due to the fact that I'm using the console adapter.
The same error appears when using the Hedwig Slack adapter too:
17:04:03.332 [error] Process #PID<0.245.0> raised an exception
** (UndefinedFunctionError) undefined function Hedwigslack.Robot.send/2
    (hedwigslack) Hedwigslack.Robot.send(#PID<0.205.0>, %Hedwig.Message{matches: nil, private: %{}, ref: nil, robot: #PID<0.205.0>, room: "", text: "test text", type: "message", user: %Hedwig.User{id: nil, name: nil}})
    (elixir) lib/stream.ex:454: anonymous fn/4 in Stream.map/2
    (elixir) lib/stream.ex:1101: Stream.do_resource/5
    (elixir) lib/stream.ex:1247: Enumerable.Stream.do_each/4
    (elixir) lib/stream.ex:494: Stream.run/1

Hi there @cheeyeo, you're looking for Hedwig.Robot.send/2. It takes the pid of the robot and a %Hedwig.Message{}.
Hope that helps.


fix: avoid stack overflow when loading bracket guides for large files

This PR fixes #133923
a.push(...b) will push all items of b onto call stack, if b is too large, this can cause stack overflow.
However, loading bracket info for large files can still be terribly slow.

Argh, I was wondering why the stack overflow would happen there.

I wonder why b is so large though. The amount of bracket pairs should be limited by the viewport/minimap size. I should investigate why the minimap is requesting these decorations anyway.

I didn't dig that deep, now I added a log for b's length and for my file its 130871.
My file is an iife and @alexdima's repro is with a large json file. Both files have a left bracket at start and corresponding right bracket at end. I wonder if it's not possible to find the right bracket without calculating all brackets in between?

I wonder if it's not possible to find the right bracket without calculating all brackets in between?

getAllDecorations is only called when disposing the method to clear some minimap cache. We really don't need to fetch all bracket pair colorization decorations here.
When rendering, only brackets that intersect with the viewport are fetched which are much less.


How to make a full video with original background from the generated bbox face images

Hey - I am able to reproduce results from the paper, great work!
I am currently looking into generating a full video with the original background. Faceverse crops the video to the face to train Styleavatar and now I am looking to attach the generated face images back onto original video. Any ideas or suggestions to do this would be greatly appreciated

Please refer to the Line 157~162 of data_reader.py. You can modify the crop_size (or remove them) to change the range of outimg. And you can save the parameters self.crop_center[1] - self.half_length ... to put the cropped images back using these parameters.

You can also add the background of the border part to the input images to make the transition at the border less abrupt.

Like using images like this as input


Empty series and slice mask functions column rather than row first

Hi!
I noticed when working with uneven MRI volumes that the order of rows and columns is not consistent throughout. In most parts of the repo the order is correctly row-major, but for creating empty series and slice masks the order is reversed to column-major. Is this intentional and if so why?
def create_empty_series_mask(series_data):
    ref_dicom_image = series_data[0]
    mask_dims = (
        int(ref_dicom_image.Columns),
        int(ref_dicom_image.Rows),
        len(series_data),
    )
    mask = np.zeros(mask_dims).astype(bool)
    return mask

def create_empty_slice_mask(series_slice):
    mask_dims = (int(series_slice.Columns), int(series_slice.Rows))
    mask = np.zeros(mask_dims).astype(bool)
    return mask

Would be happy to send a PR changing these methods to row-major as well.
Thanks!

Hello @nieag,
Thanks for your message. I can't think of any reason why the order should be reversed for those two functions... it is possible that this is a bug. As far as I know, numpy also stores its data row-major by default. Perhaps we've missed this since working with CT data, slice size always have 512 x 512 dimensions so rows == columns...?
I'd say it's a bug and needs fix. Could you please open up a PR? It'd be really important  if you could test it with non-square slice dimensions so that we can see that the current implementation is buggy, and the PR would fix it. I'd be very happy to review this PR.
Thank you so much for your contributions and for using the tool!
Best regards,
Pedro

Hey,
Sorry, this got dropped a bit during holidays. I'll see if I can put together a test case and PR with the proposed fix!
Thanks!


ConversationMemoryBuffer gives errors or wrong inferences during the conversation

Describe the bug and how to reproduce it
When giving long answers or after a great number of messages' exchanges, the LLM model memory buffer goes in error as the token number is too big for the context window
Expected behavior
The LLM model should remember the content of the conversation and answer correctly

While the problem of the ConversationMemoryBuffer are related to the fact that it's not the very best way to retain a state between different messages. We should probably find some alternatives or a way of using it without its downsides.


change json inplace

Hi,
I am trying to implement function to get json, change some part of it and return the changed json.
I thought that its easy.. just parse the json, cast it with AsObject AsArray etc.. change the values inside and then call Stringify on root JSONValue..
But then I found out that the AsObject/AsArray functions are returing const reference which cannot be changed.
I thought that I will use JSONValue::Child() for that but I am not sure if it would work for ::Child(wchar_t*) because there is some const_iterator used..
Is there any way how to achieve inplace change of json easily?
Maybe I overlook/misunderstood something.. sorry for dumb question opening issue..
Also regarding the Child() methods .. why do you not overload subscript [] operator?
Maybe in that way we could just check whats inside JSONValue and go on with [] which would make things easier.. now I have to do the casts all the time which makes it harder to read..
Thanks for your work, I am glad that I do not have to do json stuff myself.. and also your lib compiles on Win XP SP1 which is (sadly) requirement for me :D

I changed the const_iterator to iterator in Child and added, now its sort of inplace.. I have to use JSONValue * everywhere and use only Child() to access "nested" structures.
bool JSONValue::SetNumber(double number)
{
    if (!IsNumber()) {
        return false;
    }
    number_value = number;
    return true;
}

I hope that I am not reinventing the wheel.. but it works for me..

I have similar issue, I need to add key-value to "JSONObject".
Then I issued a few time "new JSONValue", and a consequence I have memory leakage :-)
When I try to delete the origital jsonvalue pointer, it deletes also memory which is still needed.
I have both variants:
const JSONObject &JSONValue::AsObject() const
{
	return (*object_value);
}

JSONObject &JSONValue::AsObject()
{
	return (*object_value);
}

and your SetNumber function alikes.

@karelv have you got an example of what you're trying to do?
Running the following through valgrind gives no memory leaks...
int main(int arc, char ** argv) {
  JSONObject obj;

  obj[L"foo"] = new JSONValue(L"bar");
  obj[L"pi"] = new JSONValue(3.141);

  JSONValue *json = new JSONValue(obj);
  std::wcout << json->Stringify() << std::endl;

  delete json;
  return 0;
}


Error in Connect your client-side web part to SharePoint (Hello World part 2)

Category

[ ] Question
[ ] Typo
[X] Bug
[ ] Additional article idea

Expected or Desired Behavior
Article Url: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/connect-to-sharepoint
Connect your client-side web part to SharePoint (Hello World part 2) ---- Fetch the list data
Observed Behavior
I have followed all the step and I have successfully implement the HelloWorldWebpart.
But when I am trying to fetch list date I am getting the blow error.
private _getMockListData(): Promise {
return MockHttpClient.get()
.then((data: ISPList[]) => {
var listData: ISPLists = { value: data };
return listData;
}) as Promise;
}
Error:
Argument of type '(data: ISPList[]) => ISPLists' is not assignable to parameter of type '(value: ISPList[]) => ISPLists | PromiseLike'.
Types of parameters 'data' and 'value' are incompatible.
Type 'import("/Users/AC/Desktop/Projects/SPFX/helloworld-webpart/src/webparts/helloWorld/HelloWorldWebPart").ISPList[]' is not assignable to type 'import("/Users/AC/Desktop/Projects/SPFX/helloworld-webpart/node_modules/@microsoft/sp-page-context/dist/index-internal").ISPList[]'.
Type 'ISPList' is missing the following properties from type 'ISPList': id, permissions, serverRelativeUrl, titlets(2345)
Steps to Reproduce
Follow the steps into the article

Are you able to share your solution? I went through the tutorial on that page for both the mock data and retrieving SharePoint List data, and it is successful for me.
It looks like it is trying to use the ISPList interface from the internal Microsoft node module, instead of the interface being used in the tutorial.


 When I try to do a source ~/.zshrc I get the following error:
(eval):2: defining function based on alias `fuck'
(eval):2: parse error near `()'

The error is caused by eval "$(thefuck --alias)" line in the file. Note: When I for example open a new tab in the terminal after updating the config zsh initializes normally without errors.

 What is the output of thefuck --alias?  I found what was causing the error. Below that in the config I had this alias fuck="fuck -y" And that was causing the problem 🙄 My bad.

 I renamed to issue to properly address the problem. And just to confirm the solution is:
eval $(thefuck --alias)
alias fuck="__fuck -y"

Thanks so much for helping out with this one!


fix markdown syntax

I'm sorry...
I mistaked a bit about ISSUE_TEMPLATE.md's markdown syntax so I fixed.
Please check this Pull Request.

@chrisbra
If you don't need this pull request, feel free to close it. 🙇

ping🙇 @chrisbra

thanks, forgot about this one.

Thank you for your confirmation while busy.


fix(build): provide both .mjs and .js

In this PR we offer both a .mjs as well as a js build, this so that we can put mjs in the export-maps so we can adhere to strict node resolution for all node-versions which need mjs to show them that we are using import/export. The reason for also supplying a js here is because tamagui uses dist/esm in the module property. This will make it so that older webpack/.. versions can still automatically pick what they can resolve according to their configuration.
Resolves https://github.com/tamagui/tamagui/issues/619
CC @tazsingh

@natew @tamagui/core/reactNativeTypes should probably get a .mjs extension in the export paths as well:
https://github.com/tamagui/tamagui/blob/master/packages/core/package.json#L62


Template inclusions

Consolidate Common Property settings into templates/includes for each role.

@cricket007 high level looks nice, have you tried it out yourself yet? I think that's the safest course here because reviewing is looking for typos essentially. I can give it a test if you haven't done it yet.

I tested out only a broker so far, but I can do a more thorough test now that my Vagrant setup is working as expected

@cotedm All working as expected   ✅


Epic: Exchange Module

Summary
Build an x/exchange module to facilitate the buying and selling of assets.
Problem Definition
Currently, exchanges of assets can only be done with either a smart contract or the groups module.
Each of those has downsides, though. Notably, the assets are sent to an intermediary account while waiting for finalization/clearing/settlement.
Proposal
Create an x/exchange module that utilizes in-place holds and allows owners to put their assets up for sale, and for buyers to express desire to buy.
The module will allow creation of markets that are responsible for match making (among other things). Users can then submit asks and bids using their assets, which are placed in hold until settled or cancelled.
The markets will be able to collect order submission fees and settlement fees, and the exchange (blockchain) will receive a small cut of that.
Sub-tasks

[x] #1698
[ ] #1699
[ ] #1700
[ ] #1701
[ ] #1702
[ ] #1703

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

Closed since this shipped with v1.17.0, even though there's still some stuff to add later.


send-link-to-chat on mobile

(unlike what I thought before, we already have FloatingPicker on mobile, so just use that)

@buoyad ready for another look thanks!


FlowFuse 2.0 release blog post

Description
The FlowFuse 2.0 Blog Announcement. I aimed to write the article short and understandably for those not familiar with FlowFuse, as one of the main reasons for the 2.0 release is also LeadGen.
Related Issue(s)

Checklist

[ ] I have read the contribution guidelines
[ ] I have considered the performance impact of these changes
[ ] Suitable unit/system level tests have been added and they pass
[ ] Documentation has been updated

@MarianRaphael Merge when this is deployed to prod! :)


Using docker binary from host through volume

When running from docker - there is ability to use host docker binary if we set it via host volume. For example:
$ docker run -v $(which docker):/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes --dry-run

Looks different, but it allows to feel free which docker version is used on host and no need to keep builds for last n docker versions.

Yeah different version builds are unneccesary anyway,  the current 1.4.1 works for all others. I should probably update the documentation and include your solution as well.


CRUD for schema keys

add ability to update schemas and individual schema keys.

asked for by @StarostinV and Constantin

needs #17 to work


Add upload --destination option

Add the --destination option to dds put so that the end user can specify which remote existing or new folder the items should be placed in during upload.

Moving to Jira.


Completely get rid of protobuf

When the guestlib and TensorFlow link against two different versions of libprotobuf, the guestlib loaded by a TensorFlow program will fail to initialize.
A recent PR #61 removes the depedency of protobuf completely. But due to the time limit, I didn't get to remove deprecated files.

Reminder: also update the dependency installation script.

Reminder: also update the dependency installation script.


[New Feature]: Implement CSV data module for Ballerina

Description
Implement CSV data module for Ballerina
Describe your problem(s)
No response
Describe your solution(s)
No response
Related area
-> Compilation
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response

Closing due to https://github.com/ballerina-platform/ballerina-library/issues/6225


Upgrade sles-15 build from 15.1 -> 15.3

Description
This should fix the sles-15 build/test errors. 15.1 and 15.2 are EOL (and 15.3 goes EOL soon as well).
Related issue
b/255956977
How has this been tested?
Tested all 3p apps locally for sles15.
Checklist:

Unit tests

[x] Unit tests do not apply.
[ ] Unit tests have been added/modified and passed for this PR.

Integration tests

[ ] Integration tests do not apply.
[x] Integration tests have been added/modified and passed for this PR.

Documentation

[x] This PR introduces no user visible changes.
[ ] This PR introduces user visible changes and the corresponding documentation change has been made.

Minor version bump

[x] This PR introduces no new features.
[ ] This PR introduces new features, and there is a separate PR to bump the minor version since the last release already.
[ ] This PR bumps the version.

Test passed except Windows which isn't affected by this PR; merging.


Changing the source of gh pages to FOSSASIA summit

Changing the source of gh-pages from OSCAL back to FOSSASIA Summit.

For testing purposes of oscal, it was changed to oscal end point. Any reasons for changing back to this @geekyd @Princu7.

@aayusharora
@mariobehling Suggested that we should only use FOSSASIA Summit for the gh-pages. Also the auto deployment was not working after the change of the source for gh-pages.

Where is it suggested @geekyd. Can you please relate this to that issue.

@aayusharora Please check the chat on gitter.

@aayusharora You have changed the source without any info or issue. That is why it is changed back.


fix to finds duplicate between non overlapping rules

c.f. https://github.com/ros/rosdistro/pull/15800#issuecomment-323850356
it appears to be throwing errors about mercurial being multiply defined:

mercurial is multiply defined in
    file:///home/travis/build/ros/rosdistro/rosdep/python.yaml and
    file:///home/travis/build/ros/rosdistro/rosdep/base.yaml

use _load_view_dependeencies to avoid merging views
add more debug view when multiply defined

Thanks @k-okada for the quick fix!
This fixes the issue when there is an non overlapping entry in different files.
It seems that this still doesnt check the osx-homebrew.yaml file, does it ?
I tried adding
mercurial:
  osx:
    pip:
      packages: [mercurial]

to osx-homebrew.yaml and the test passed. It should be flagged as a duplicate of the same entry in python.yaml right?

ok, added osx check
--
◉ Kei Okada
2017-08-22 20:16 GMT+09:00 Mikael Arguedas<EMAIL_ADDRESS>
Thanks @k-okada https://github.com/k-okada for the quick fix!
This fixes the issue when there is an non overlapping entry in different
files.
It seems that this still doesnt check the osx-homebrew.yaml file, does it
?
I tried adding
mercurial:
osx:
pip:
packages: [mercurial]
to osx-homebrew.yaml and the test passed. It should be flagged as a
duplicate of the same entry in python.yaml right?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ros/rosdistro/pull/15805#issuecomment-323996087, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAeG3K6-Vm5g_C0KE0VOuZpDqzgCtRwQks5sariWgaJpZM4O-cem
.

@ros/rosdistro-maintainers can someone review this please?

@k-okada Thanks for the fix.
Replaced by #15812.


How to get viewmat from c2w and intrinsic?

I'm currently trying to implement 3D rendering using this library, but I'm confused about how to set the viewmat. I have the c2w matrix and the intrinsic matrix . According to the official documentation, I initially thought that taking the inverse of c2w would give me the viewmat. However, the calculation method here does not directly involve taking the inverse of c2w. Can you provide a more detailed example to explain the process of calculating viewmat?
https://github.com/Harr7y/nerfstudio/blob/37948b360b108f8e30b2122d8eab220bf1443965/nerfstudio/models/splatfacto.py#L682

@baoachun the view matrix is the world to camera (w2c) transform. So if you have a c2w you can invert this to obtain a w2c. The method linked above is actually the same as taking the inverse of a 3x4 camera matrix. Note the c2w has both the rotation and translation component appended, which is the convention often used. So it is not correct to call torch.linalg.inv(c2w). Here the inverse is computed manually: the transpose of the SO(3) rotation matrix component is taken probably for speed and numerical efficiency reasons (instead of calling inv(c2w[:3,;3)). The inverse of the translation component also follows from math.

@maturk Hi, thank you for your reply. However, I'm now encountering another issue. The original 3DGS can converge, but it fails to converge when using gsplat. I saved the rendering results and found that they are all black. I suspect that the input parameters are not set correctly. Could you please help me check if the following settings are correct?
3DGS
class MiniCam:
    def __init__(self, c2w, intrinsic, height, width):
        # c2w (pose) should be in NeRF convention.
        self.width = width
        self.height = height
        self.FoVx = 2 * math.atan2(width, 2 * intrinsic[0, 0].item() * width)
        self.FoVy = 2 * math.atan2(height, 2 * intrinsic[1, 1].item() * height)
        self.znear = 0.01
        self.zfar = 100.0

        R = c2w[:3, :3]
        T = c2w[:3, 3]
        R_inv = R.T
        T_inv = -R_inv @ T
        w2c = torch.eye(4, device=R.device, dtype=R.dtype)
        w2c[:3, :3] = R_inv
        w2c[:3, 3] = T_inv

        self.world_view_transform = w2c.transpose(0, 1)
        proj_matrix = getProjectionMatrix(self.znear, self.zfar, self.FoVx, self.FoVy)
        self.projection_matrix = proj_matrix.transpose(0, 1).to(c2w)
        self.full_proj_transform = self.world_view_transform @ self.projection_matrix
        self.camera_center = c2w[:3, 3]

def getProjectionMatrix(znear, zfar, fovx, fovy):
    tanHalfFovY = math.tan((fovy * 0.5))
    tanHalfFovX = math.tan((fovx * 0.5))

    P = torch.zeros(4, 4)
    z_sign = 1.0
    P[0, 0] = 1 / tanHalfFovX
    P[1, 1] = 1 / tanHalfFovY
    P[3, 2] = z_sign
    P[2, 2] = z_sign * zfar / (zfar - znear)
    P[2, 3] = -(zfar * znear) / (zfar - znear)
    return P

gsplat
class MiniCamera():
    def __init__(self, c2w, intrinsic, height, width):
        self.fx = intrinsic[0, 0].item() * width
        self.fy = intrinsic[1, 1].item() * height
        self.cx = intrinsic[0, 2].item() * width
        self.cy = intrinsic[1, 2].item() * height
        self.height = height
        self.width = width

        R = c2w[:3, :3]
        T = c2w[:3, 3]
        R_inv = R.T
        T_inv = -R_inv @ T
        viewmat = torch.eye(4, device=R.device, dtype=R.dtype)
        viewmat[:3, :3] = R_inv
        viewmat[:3, 3] = T_inv
        self.viewmat = viewmat

def gsplat_render(camera, points, rgb, opacity, scale, rotation, background):
    block_width = 16
    proj_params = {'means3d': points,
                   'scales': scale,
                   'glob_scale': 1.0,
                   'quats': rotation,
                   'viewmat': camera.viewmat,
                   'fx': camera.fx,
                   'fy': camera.fy,
                   'cx': camera.cx,
                   'cy': camera.cy,
                   'img_height': int(camera.height),
                   'img_width': int(camera.width),
                   'block_width': block_width}

    xys, depths, radii, conics, _, num_tiles_hit, _ = project_gaussians(**proj_params)
    ras_params = {'xys': xys,
                  'depths': depths,
                  'radii': radii,
                  'conics': conics,
                  'num_tiles_hit': num_tiles_hit,
                  'colors': rgb,
                  'opacity': opacity,
                  'img_height': int(camera.height),
                  'img_width': int(camera.width),
                  'block_width': block_width,
                  'background': background}
    image = rasterize_gaussians(**ras_params)[..., :3]
    return image.permute(2, 0, 1)

@baoachun given the same .ply file do you have the same rendering results from 3dgs and gsplat? IIRC, 3DGS does exponential activation on scales while gsplat does not (by default), axis convention might also differ

@ivanpuhachov The two methods are identical in all settings except for the rendering method. I suspect there might be an issue with the camera parameter settings, so I'd like to know how to obtain the relevant input parameters for gsplat from the c2w and intrinsic matrices.

I meet the similiar problem  probably. I've checked my input model on another gaussian splatting implement and got the expected rendering result. But when I try on gsplat, it returns blank image with only bg color.
I check the returns of project_gaussians and find that conics are extremely small value, maybe caused the gaussian be unexpectedly culled.
I upload some code in my repository to compare the result between gsplat and my temporary implement. My installed gsplat version is 0.1.11.
my code
Appreciation for your attention!

I meet the similiar problem probably. I've checked my input model on another gaussian splatting implement and got the expected rendering result. But when I try on gsplat, it returns blank image with only bg color.
I check the returns of project_gaussians and find that conics are extremely small value, maybe caused the gaussian be unexpectedly culled.
I upload some code in my repository to compare the result between gsplat and my temporary implement. My installed gsplat version is 0.1.11. my code
Appreciation for your attention!

I've run your code and I have a few comments:

your gaussian appears to be outside of view frustum and gsplat skips the computations
It seems you are missing projection matrix to transform camera coordinates to ND (see https://arxiv.org/abs/2312.02121, (1) and (2) ), replace your intrinsic
conic are the inverse of sigma, computed in image pixel space

After these fixes the code gsplat and your manual check output the same values

I meet the similiar problem probably. I've checked my input model on another gaussian splatting implement and got the expected rendering result. But when I try on gsplat, it returns blank image with only bg color.
I check the returns of project_gaussians and find that conics are extremely small value, maybe caused the gaussian be unexpectedly culled.
I upload some code in my repository to compare the result between gsplat and my temporary implement. My installed gsplat version is 0.1.11. my code
Appreciation for your attention!

I've run your code and I have a few comments:

your gaussian appears to be outside of view frustum and gsplat skips the computations
It seems you are missing projection matrix to transform camera coordinates to ND (see https://arxiv.org/abs/2312.02121, (1) and (2) ), replace your intrinsic
conic are the inverse of sigma, computed in image pixel space

After these fixes the code gsplat and your manual check output the same values

I fix my code and find that in my pre-trained model no gaussian is inside the view frustum. Maybe it's because of my incorrect data loading.
Thanks for your comments!

@ivanpuhachov Hello, based on the discussion above, I've realized that my model also suffers from the issue of having no Gaussian points within the current view. How can I debug this situation? Is there a way to visualize the view under the current camera parameters? Thank you.

Hi there, don't know if this is still relevant.
I struggled with a similar issue. I am trying to use gsplat on the Blender synthetic datasets that have been used for nerf (https://github.com/bmild/nerf?tab=readme-ov-file).
The datasets comes with cam2world matrices and I was trying (and failing) with converting them to valid view matrices for gsplat.
What ended up helping was the following transformation to the cam2world matrices:
import numpy as np

def invert_matrix(c2w):
    conv_mat = np.array([
        [1, 0, 0, 0],
        [0, -1, 0, 0],
        [0, 0, -1, 0],
        [0, 0, 0, 1],
    ])
    conv = np.dot(c2w, conv_mat)
    return np.linalg.inv(conv)

I have no idea why this works... It's probably because of differing conventions regarding the coordinate systems.
I get the intrinsics matrix the following way:
def compute_intrinsics_matrix(focal_length, width, height):
    return torch.tensor(
        [
            [focal_length, 0, width / 2],
            [0, focal_length, height / 2],
            [0, 0, 1],
        ]
    )

Hope this helps someone :)
For the entire dataloader please refer to the following gist

@PaulErpen
Hi, I obtained the view matrix by flipping the y and z axes of the c2w matrix from the OpenCV coordinate system and then taking the inverse. While debugging, I found that all Gaussian points were outside the frustum. Removing the axis flipping corrected this, leading me to conclude that gsplat's camera convention is the same as OpenCV's convention.


[nrf noup] kconfig: reduce downstream patch

Source the file 'Kconfig.mcuboot' from sdk-nrf to reduce the amount
of downstream patches in boot/zephyr/Kconfig.
Ref: NCSDK-11177
Signed-off-by: Håkon Øye Amundsen<EMAIL_ADDRESS>

Nice! What about adding names to choices we had modified so it will be possible to move downstream patches nrf?

I didn't know that this was possible, I will try to do that.

@nvlsianpu I added names to the choices as you suggested, so now there should be no dowstream patches for this file.


feat: feeds endpoint

This PR implements the /feeds endpoints. See https://docs.ethswarm.org/api/#tag/Feed
However since at the moment there is no endpoint to update a feed, the functionality (and the tests) are quite limited. There is another PR coming with higher level feed functionality. It's more complex because it uses SOCs for uploading the correct feed updates.

About the tests, maybe we can just post a hardcoded value in the tests for the feeds? So really just string or array of bytes representing the feed updates and then retrieving it.


Added fix for dolf

Thanks a lot @Jijnyasa for contributing! Closing this as we've already fixed #20 in PR #22.


datatables.net-select-bs5 not working

Hello,
I am using this package it's work grate. but one issue is that when click on table row it's not selected and backgroup color not changed.
I am installed all dependent package but still issue is there. so please guide me how solve this issue.
Thank you in advance

@prashantsimejiya-siya See point 2 here https://github.com/niiknow/vue-datatables-net#responsive  The select-checkbox plugin does not work because the code was written for jQuery and not for vue.  Therefore, we only import the css and implement the code into Vue (no need to import select checkbox javascript code itself.)
As a result, select checkbox feature is simplied/built-in.  Set the select-checkbox property of the component value to any number greater than -1  https://github.com/niiknow/vue-datatables-net/blob/master/src/VdtnetTable.vue#L164


feat(client): add fromAccountId32 on FixedSizeBinary

Unfortunately, some of the XCM metadata definitions point to the type-definition for a generic [u8; 32] type, rather than routing it via the AccountId32 type... Because of that, the typings expect a FixedSizeBinary<32>. Since converting an ss58-address into a FixedSizeBinary is something that probably most users won't know how to easily do, I thought about adding this new static method to alleviate the issue.
Before:
XcmV3Junction.AccountId32({
  network: undefined,
  id: FixedSizeBinary.fromBytes(AccountId().enc(dest)),
})

After:
XcmV3Junction.AccountId32({
  network: undefined,
  id: FixedSizeBinary.fromAccountId32(dest),
})

I'm a bit on the fence with this one. In my opinion FixedSizeBinary has to be agnostic to its inner content. I think it might be better to export a small helper to encode an address into a FixedSizeBinary.

Please take into account 2 things:

The types of this static function will prevent the user from using it, unless the field expects a FixedSizeBinary<32>. So, you can only use it when you are certain that the input is 32 bytes. Therefore, the FixedSizeBinary is still agnostic about its inner content... The FixedSizeBinary only cares about receiving 32 bytes, and it knows that an SS58 address has 32 bytes, so when expecting 32 bytes, and only when it's expecting 32 bytes, it lets you import them from an account. It still is agnostic about its content. It only cares about the bytes and the length. Just like when creating the Binary from text, it's agnostic of the text, the same applies here.

When a developer is editing a field that suffers from the problem that I stated above, the IDE is telling the developer that they must provide a FixedSizeBinary<32>. So, intuitively the developer would expect to find a static helper function inside the FixedSizeBinary class that will assist them. Just like they have 3 other helpers that assist them for importing text, hexadecimals and/or a Uint8Array.  There is no way in hell that a developer will guess that there is an esoteric "encodeAccountId32" function that they must import from "polkadot-api" that does this.

I much rather the solution that I'm proposing, TBH.

Sounds good; I agree, especially with that DX. LGTM 👍🏻


Add exception URLs for Google and Office365 sign in

+1

+1, seems like we upgrade gradle every PR


Limit Clinic Selection to clinics that accept NAF for some PTs

Thanks for creating an issue! Please fill out this form so we can be sure to have all the information we need, and to minimize back and forth.

What are we trying to do?
We now have great data stored on clinics, and we want to reveal it to the CMs. Add a selector below 'Clinic details > Clinic Name' that says "Only show clinics that accept NAF funding". If the CM checks this box, limit the list to clinics that accept NAF.

The file in question here is app/patients/views/_abortion_information, and the clinic source is in app/helpers/patients_helper.rb#clinic_options.
The possible rub here is that if a clinic is selected, we don't want it to disappear. We might be able to do that with some jquery and data attributes, something like:

all select options have a data attribute like data-naf=true or data-naf=false - the selected clinic has data-selected=true
the 'show only NAF clinics' toggle removes or disables selection of anything with data-naf=false in the option that doesn't also have data-selected=true.

That's just an off the top of my head possibility, though. Taker's choice on how to handle.
JS heavy, so tagging frontend. Put it in the space underneath the select bar.


Don't use for...of on table children.

We can't assume children is an array, as it is a single
element when only one child is passed.
Fixes #1531, #1972, #2058 and removes need for a Symbol
polyfill.

Thanks a lot @STRML :+1: :+1:


Parsing failure when last list item lacks preceding checkbox

If a day ends with a list item that is not preceded with a checkbox parsing the plan file fails:
$ alas --stats test.md
Plan can not be parsed: last parsed line is line 9.

Here is a minimal example reproducing the problem:
# My Plan

## Inbox

## 2022-07-28, Thursday

- [ ] Develop photos
- [X] Pay bills
- Met with Mike and Molly

Whereas if the line is somewhere in between parsing works.
# My Plan

## Inbox

## 2022-07-28, Thursday

- Met with Mike and Molly
- [ ] Develop photos
- [X] Pay bills

Thanks for the bug report.
I implemented the plan parser to expect events (- Met with Mike and Molly) to be before tasks (- [ ] Develop photos). However, I see now that this is not clearly defined in the documentation - https://www.hackberry.dev/alas-format/.
So, there are two ways to approach this:

Update the documentation so that it clearly states that events have to be before tasks.
Update the parser to allow events and tasks to be mixed.

I'm leaning toward 1. I feel that that's simpler and it makes the plan "cleaner".
I can consider implementing 2, if there's a good reason to mix events and tasks. Do you have an example where 2 would be more desirable?

Update the documentation so that it clearly states that events have to be before tasks.

This sounds reasonable. Any other restrictions to be aware, for example has everything to be in a single list?

Found this unexpected behavior when adding a subitem to a list:
# My Plan

## Inbox

## 2022-07-28, Thursday

- Met with Mike and Molly
  - THIS LINE CAN NOT BE PARSED
- [ ] Develop photos
- [X] Pay bills

This sounds reasonable.

OK. I'll update the documentation.

Any other restrictions to be aware, for example has everything to be in a single list?

What do you mean by "single list"? Thanks.

Found this unexpected behavior when adding a subitem to a list...

I believe that events can only have a title now. But, I have to check. I think it's reasonable for an event to have a body. So I'll probably create a separate feature request for this.

I released a new version (https://github.com/hackberrydev/alas/releases/tag/v1.4) that supports body for events.
I also updated documentation.
I believe that this resolves the issue. Let me know if this is incorrect.
Thanks again for reporting it!


Work nicely with the artifact generated by the shade plugin

I'm packaging my app using the Maven shade plugin to create an uber jar.  I can't seem to find a way to achieve this, is this scenario covered? If not I think it would be a nice to have.
Thanks

Do you have an example project what you have tried to far?

I wanted to use it in https://github.com/torakiki/pdfsam where the https://github.com/torakiki/pdfsam/tree/master/pdfsam-community module is the one where the deliverable is created. I ended up using the maven-resources-plugin with filtering on a .bat and .sh template scripts. I don't have any non working configuration example though... what I tried is to create bundle with the same structure I create now (uber jar, scripts, config, etc), and, if I recall, the issue was that in every test I did, all the dependencies and the uber jar were included.

Dear maintainers,
Looking to do the same - I've used appassembler for years and it's great. Rather than create a new issue I'd thought I'd bump this once despite it's age.
As mentioned in the above, I'm using Shade and Proguard to obfuscate all project modules into one jar; however, the stumbling point is the produced classpath includes to the dependencies that were not obfuscated (the dependencies that contain the same class files bundled into the shaded, obfuscated JAR file). It can be fixed easily by removing the referenced JARs from the classpath but this breaks the automation process.
I have a sample project - and over 150 open tabs looking for a solution for this - so before adding this information, is this possible with the appassembler plugin?
Have used Maven and many plugins for over a decade so perhaps am going code-blind over a solution for this so apologies if this is well-documented somewhere - I've just not found it!
One other thing - what I am looking for might not even be a 'feature' of this project - in which case, I'd be more than willing to contribute to the project if required. Thanks in advance.

+1, I have had this issue as well. There should be a configuration option like  or something to support this.
However, there is a pretty easy workaround which is to run the plugin with a flat style repo, a wildcard classpath, and then run the clean plugin after the packaging:
<plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-clean-plugin</artifactId>         <version>3.1.0</version>         <executions>           <execution>             <id>clean-repo</id>             <phase>package</phase>             <goals>               <goal>clean</goal>             </goals>             <configuration>               <excludeDefaultDirectories>true</excludeDefaultDirectories>               <filesets>                 <fileset>                   <directory>${path.to.your.repo}</directory>                   <includes>                     <include>*.jar</include>                   </includes>                   <excludes>                     <exclude>${project.artifactId}*</exclude>                   </excludes>                 </fileset>               </filesets>             </configuration>           </execution>         </executions>       </plugin>


wordSeparators doesn't work as expected

monaco-editor version: 0.10.1
Browser: Safari
OS: macOS
When I pass in a wordSeparators param into monaco.editor.create() I expect those separators to be used to separate words, but it appears that for things that use getWordAtPosition() (which is a lot of things) those separators aren't taken into account and the default separators are always used, because there's no way for the parameter to createWordRegExp() to actually get passed in (the only place it's used it's given no param).
This feels like a bug to me. Additionally I'm surprised that setting the separators is an option on the editor and not the language definition but there could be some context that I'm missing.

wordSeparators are currently used for word navigation mostly (double click or ctrl + arrows).
IModel.getWordAtPosition() uses the word pattern as defined by the mode(language) currently associated with the model.
The wordPattern is something each language defines in language configurations.
e.g. https://github.com/Microsoft/monaco-languages/blob/3c5417b252692cba96cf06fe14eb95c53a848715/src/java.ts#L13

Thanks for the response! I'm not sure I follow though. When I use the Monaco Playground custom language exampe and add this code:
monaco.languages.setLanguageConfiguration('mySpecialLanguage', {
    // Allow square brackets to be part of a word.
    wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\{\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
})

double-clicking on [notice] still doesn't highlight the square brackets as I'd expect. This matches what I saw in the code, where as I mentioned earlier it looks like createWordRegExp() in wordHelper.ts compiles the RegExp that actually controls this behavior, and yet it's hardcoded to only use USUAL_WORD_SEPARATORS regardless of the language configuration because no allowInWords argument is ever passed in. (All of the behavior I'm talking about is in wordHelper.ts.)
Does that make sense?

@JacobEvelyn There are two distinct "word definitions".

1. One used for double clicking and word navigation (ctrl+arrows)
monaco.editor.create(..., { wordSeparators: '`~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?' })
or
editorInstance.updateOptions({ wordSeparators: '`~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?' })

2. One defined by the language associated to the current buffer
This one is used in more places (in code) than the previous one.
monaco.languages.setLanguageConfiguration('mySpecialLanguage', {
    // Allow square brackets to be part of a word.
    wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\{\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
})

Notice here how [ or ] are not in the regex, so the cursor word highlights [ and ] too:

Please change 1., or 2., or both to your liking.
P.S. It might seem very weird that there are two of them. I agree, initially we had only 2., but soon found that VS Code users want to navigate words according to their word separators list and not according to what makes necessarily an identifier in the language they are editing.

Ah, I see, thanks! I was missing the fact that wordHelper.ts exports DEFAULT_WORD_REGEXP but DEFAULT_WORD_REGEXP can be overridden by passing those in.


Add support for typeahead multiple datasets

Add support for twitter Typeahed multiple datasets.

@gboyreau we are discussing this in #251.


ClientException

Client error: POST https://www.googleapis.com/oauth2/v4/token resulted in a 400 Bad Request response:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}

Hi @Khalid12345678 ,
I'm closing this issue since the error is self explanatory and it's nothing about the package itself.


optimize: code optimization and style adjustments

Description (what this PR does)

bugfix
code optimization
style adjustments

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: hsluoyz:x: maratrixxYou have signed the CLA already but the status is still pending? Let us recheck it.


Implement Google Signup Feature in React

I want to enhance Dev-G user experience by providing the option for users to sign up using their Google accounts. This issue will cover the implementation of the Google signup feature in React application.
Tasks:

Integration with Google OAuth: Implement OAuth authentication with Google to allow users to sign up using their Google accounts.

User Interface Changes: Update the signup page to include the option for users to sign up with Google.

Error Handling: Implement appropriate error handling for cases such as account already exists, network errors, etc.

Acceptance Criteria:

Users can sign up using their Google accounts.

The signup process seamlessly integrates with the existing authentication flow.

Proper error messages are displayed to users in case of failures

I would like to do this task as I have previously done a task like this in one of my projects. Please assign this task to me under GGSOC 2024

Hi @ashutoshgithubs , i have already started yesterday itself on this issue. I have connected with you regarding to missed files as well. Can you please assign it to me under GSSOC'24.
Thanks

I have implemented OAuth authentication before in one of my projects, so I believe I can make this as well. Please assign it to me under GSSOC'24.

Hello @Yaswanthtoga @anuni03,
You both should start working on this feature..

Hello, Why did you unassign this issue. I am interested in it and i was working on this issue

@anuni03 Due to some issue at my end, I had unassigned. Now its okay. You can start working on this issue.

@anuni03 any work progress on this issue??

@anuni03 any work progress on this issue??

Hey @anuni03 , can you please respond with your progress??

@anuni03 any work progress on this issue??

Hey @anuni03 , can you please respond with your progress??

As you are not active, So you are unassigned from this task.

@ashutoshgithubs sir, if it's possible, can you assign this to me under GSSOC'24 ? I know certain web development skills and I have integrated Google authentication on one of my earlier projects. So, I can work on this.


Maven compatible - java 1.8 upgrade

Fixed maven compatibility issue i.e moved source files to src/main
example files to package com.zerodhatech.sample
upgraded pom config to enable java 1.8
deleted kiteconnect folder ( deps are auto fetched from maven central )

Good work


Improve names for nested properties

Nested properties should include the name of the containing map.
Example:
author{
 name: ""
}

use AUTHOR_NAME insead of NAME

currently not an issue since nested lists are mapped as JSON


Footer text: source code version

Make sure it stays "Pterois source code version"
... And point to the engine repository
and shows a commit number, but also tags/releases if available

That's indeed a good idea. Notice that now it is a broken link, as expected after creating a new repo with the old name, early-alert-webapp.

Thanks @damianooldoni. All fixed now!


Try-with-resources should be used since the new syntax is more readable.

I've adjusted the format and committed it.


NotInMaps false positive

We started using the plugin a few days ago, but shortly after implementation, we encountered erratic failures in our unit test suite. One test, responsible for validating scene references across our prefabs, began exhibiting inconsistent behavior.
Our test looks like this:
            if (scene.State == SceneReferenceState.Unsafe)
            {
                Debug.LogError($"There's a problem with the scene settings. Reason: '{scene.UnsafeReason}'");
            }

So while all works well in editor, turns out that the unit tests running on a remote self-hosted linux machine fail sometimes.
Investigating a bit, it seems that the SceneDataMap was sometimes not generated by the time the test was trying to run, thus failing with "NotInMaps" message.
We added this to make sure the maps were generated before running any tests, and it seems to be working fine now.
        [SetUp]
        public void SetUpTests()
        {
            SceneDataMapsGenerator.Run(false);
        }

However, we're left wondering if this behavior is expected or if others have encountered similar challenges when running tests through GitHub Actions.

It could be caused by github actions running unity with -batchmode flag.
(side note: Its infuriating that unity's batchmode initializes things in different order to editor enviroment... )
@ivan-coder .  You could test locally on your computer running the unit tests in batchmode to check if same error pops up.
Btw, have you tried [OneTimeSetup] instead for your workaround?  It seems like regenerating the maps on [SetUp] would be overkill.

I think @Ale1 is right. In my previous job we have encountered situations where the build hooks were not executed when the editor is run in batchmode. We instead ran our builds without batchmode and manually called editor quit in the code after we are done.
In this case, since the map generator runs in a pre-build hook, it might not be running in batchmode.

That being said, what you did in the setup method is correct. So you can continue using it also.

I am unable to reproduce the issue in question. Please give me more details about your setup like your Unity version, your Eflatun.SceneReference version, how you run the tests, etc. I am closing the issue until then.


[BEAM-105] We may attempt to remove an inactive window from the active window set.

Ken noticed was closed due to a spurious commit message in the spark runner commit. Sigh.

Nice catch! I think this was the one responsible: https://github.com/tomwhite/incubator-beam/commit/06e611a7516ef2fc61d43b1edd7aa6a7c3caf194
Sorry..

@kennknowles  PTAL

LGTM. Merging in.

This time for real!


Add startup/shutdown checks for HelixServerStarter

Optional startup checks:

Service status check (ON by default)
Optional shutdown checks:
Query check (drains and finishes existing queries, ON by default)
Resource check (wait for all resources OFFLINE, OFF by default)

BACKWARD-INCOMPATIBLE:
The following config keys are removed or replaced, but the default
behavior should be desired:

pinot.server.starter.enableSegmentsLoadingCheck
pinot.server.starter.timeoutInSeconds
pinot.server.instance.enable.shutdown.delay
pinot.server.instance.starter.maxShutdownWaitTime
pinot.server.instance.starter.checkIntervalTime

Codecov Report

Merging #4222 into master will increase coverage by 0.1%.
The diff coverage is 23.62%.

@@             Coverage Diff             @@
##             master    #4222     +/-   ##
===========================================
+ Coverage     67.15%   67.25%   +0.1%
  Complexity       20       20
===========================================
  Files          1036     1036
  Lines         51536    51491     -45
  Branches       7220     7220
===========================================
+ Hits          34607    34629     +22
+ Misses        14557    14498     -59
+ Partials       2372     2364      -8

Impacted Files
Coverage Δ
Complexity Δ

...org/apache/pinot/common/utils/CommonConstants.java
34.78% <ø> (ø)
0 <0> (ø)
:arrow_down:

...pinot/server/starter/helix/HelixServerStarter.java
46.9% <23.62%> (-8.08%)
0 <0> (ø)

...er/validation/BrokerResourceValidationManager.java
25% <0%> (-56.25%)
0% <0%> (ø)

...he/pinot/core/query/pruner/ValidSegmentPruner.java
57.14% <0%> (-28.58%)
0% <0%> (ø)

...lix/EmptyBrokerOnlineOfflineStateModelFactory.java
86.66% <0%> (-13.34%)
0% <0%> (ø)

...impl/dictionary/FloatOffHeapMutableDictionary.java
78.18% <0%> (-12.73%)
0% <0%> (ø)

...elix/core/relocation/RealtimeSegmentRelocator.java
73.62% <0%> (-8.8%)
0% <0%> (ø)

.../apache/pinot/common/config/RealtimeTagConfig.java
93.33% <0%> (-6.67%)
0% <0%> (ø)

...e/impl/dictionary/LongOnHeapMutableDictionary.java
88.88% <0%> (-6.67%)
0% <0%> (ø)

...impl/dictionary/DoubleOnHeapMutableDictionary.java
75.55% <0%> (-6.67%)
0% <0%> (ø)

... and 28 more

Continue to review full report at Codecov.

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

@sunithabeeram Updated the PR description for the behavior changes.

Just remembered one thing that might be good to keep in mind: the reason a shutdown resource check was added was to handle the case of ZK/Helix slowness where the broker's EV was lagging. At the time, @kishoreg had suggested that waiting at shutdown time is better as its a stronger guarantee than at startup (if Broker's view is lagging, it may continue to - esp if the instance-config update processing is lagging).
This change flips the argument somewhat. We'll still need a startup wait because of the latency issues noted. We might have to keep a closer on the following deployments as we now have the resource offline check turned off.

Just remembered one thing that might be good to keep in mind: the reason a shutdown resource check was added was to handle the case of ZK/Helix slowness where the broker's EV was lagging. At the time, @kishoreg had suggested that waiting at shutdown time is better as its a stronger guarantee than at startup (if Broker's view is lagging, it may continue to - esp if the instance-config update processing is lagging).
This change flips the argument somewhat. We'll still need a startup wait because of the latency issues noted. We might have to keep a closer on the following deployments as we now have the resource offline check turned off.

Both shutdown/startup check needs to wait for controller to pickup the current state changes and put them into external view, thus shutdown check won't give stronger guarantee. I'll monitor the following deployments and see if we need to tune the default behavior (that's why I keep everything configurable)

Does it make sense to return a 'shutting down' code from the server when it gets a broker request? The broker can then stop sending more requests to the server.

@mcvsubbu That's possible, but server also need to send a 'startting up' to broker in order to get new requests. Right now we rely on the 'shutDownInProgress' flag in the instance config.

@Jackie-Jiang  we don't need to implement the 'starting up' part at all. When the broker sends a query to the server, it can do one of:

send query response (either partial or complete)
send a boolean flag (or, an exception, not sure) saying it is shutting down. The broker can record this as if the server went off from externalview
timeout

On startup, the broker can use the same logic as checking the EV  change. Of course, we will need to account for the conditions where EV change can happen due to some other server (maybe broker should check instance config for 'isShuttingDown' before including a new server in the routing table).

@mcvsubbu In ideal case, broker should get the "isShuttingDown" change immediately. If that is not the case, we can implement your proposal, but there will be plenty of corner cases we need to handle.


Continuation of @jschuelller's 5.12.4 PR.

Checklist

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

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

@jschueller and @mingwandroid please let me know when O should try to build these locally for the upload.

@isuruf, your commit fails:
cp: ../licenses/LICENSE.FDL: No such file or directory

Sure, I think so too.


Add height tiles to isometric example

The isometric example only allows for flat tiles at the moment. I have a fix ready for the renderer but am still working on placing the correct tiles. For this I have to look into how the tile atlas works so I can place the correct adjacent tiles. This may make the example a lot more complicated.

Cannot comment on the linked fix, but I just wanted to say that I have just encountered this issue in my project. I think this is a requirement for most isometric games, for now I have to abandon bevy_ecs_tilemap unfortunately :( Also related to #44

This should be fixed now. There are some bugs with Iso tilemaps that have height but they are being worked out.


Switch to jbuilder

switch to jbuilder
depend on io-page-unix
prepare to release 0.2.1

I've switched travis on.