RaggedTensor are converted to Tensors inside exported signature.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): no
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: no
TensorFlow installed from (source or binary): no
TensorFlow version (use command below): 2.0.1
Python version: 3.7.3
Bazel version (if compiling from source): -
GCC/Compiler version (if compiling from source): -
CUDA/cuDNN version: -
GPU model and memory: -

Describe the current behavior
As properly documented, it is currently possible to pass a possibly nested sequence of tf.TensorSpec objects as a tf.function input_signature argument.
However, if one attempts to pass a tf.RaggedTensorSpec inside an input_signature sequence, everything still works, but the RaggedTensorSpec gets converted in its "dense" values + row_splits form.
Describe the expected behavior
I would expect that if one specifies a tf.RaggedTensorSpec element inside the input_signature sequence it should either be exported as a tf.RaggedTensorSpec, or raise an error.
Of course the firs option sounds more desiderable, since it's pretty common to have ragged input sequences. In this case tf.RaggedTensorSpec would be also lacking of a name argument, but this is easier to solve.
Standalone code to reproduce the issue
Colab Notebook
import tensorflow as tf

class SomeModule(tf.Module):

  @tf.function(input_signature=[
    tf.RaggedTensorSpec(shape=[None, None], dtype=tf.string)
  ])
  def return_ragged_inputs(self, inputs: tf.RaggedTensor):
    return inputs

ragged_inputs = tf.ragged.constant([["foo"], ["bar"], ["foo", "bar"]], dtype=tf.string)

some_module = SomeModule()
return_ragged_inputs_result = some_module.return_ragged_inputs(ragged_inputs)
print(f"ragged_inputs => {ragged_inputs}\n")
print("We can use the method with ragged inputs:")
print(f"return_ragged_inputs => {return_ragged_inputs_result}\n")
print("Saving some_module...")
tf.saved_model.save(some_module, export_dir="foobar")
some_module = tf.saved_model.load("foobar")
print(f"\nWe can pass and return ragged inputs even by saving and reloading the module, if we use it 'eagerly':")
print(some_module.return_ragged_inputs(ragged_inputs))
print("\nBut the graph signature tell us that our exported signature expects tf.Tensor values instead:")
exported_model_graph_inputs = some_module.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY].inputs
exported_model_graph_outputs = some_module.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY].outputs
print(f"Expected inputs  : {exported_model_graph_inputs}")
print(f"Expected outputs : {exported_model_graph_outputs}")
print("\nThis means we couldn't use the method as we would expect in (e.g.) TensorFlow Serving.")

Other info / logs
This issue follows up #37049 , as suggested by @gowthamkpr .

Was able to reproduce this error. Please find the gist here.

I believe this is due to RaggedTensor not being a first-class type inside GraphDef - internally, it is represented as a CompositeTensor, which in turn is lowered to a list of Tensor, by tf.nest.flatten(expand_composites=True) when the function is compiled.
When loading a saved model, that lowering becomes visible.
As a workaround, you should be able to build inputs compatible with the loaded model by flattening the ragged tensor: tf.nest.flatten(ragged_inputs, expand_composites=True).
I think we can eventually handle them correctly inside SavedModel, by placing the necessary type spec into the graph metadata and reconstructing it upon import, but I'll let @k-w-w and @edloper give more expert insights.
Nit: in the colab, did you mean the last two lines to be "exported", not "expected"?

So, @stefanondisponibile is expecting it to be a ragged tensor but its not the case as seen in the gist.

@gowthamkpr yes, for what I've seen so far, and as explained by @mdanatg this difference between Ragged and normal Tensors pops up when the function gets converted to a Graph. I can't do it in Colab, but if you tried to load that servable with tf serving you would see you would have to pass two different dense Tensors in place of the Ragged Tensor.
@mdanatg thanks for the explanation! I am currently working around this by actually passing two dense Tensors at inference time, one with the values and the other with the splits, and building them up inside the function itself via tf.RaggedTensor.from_row_splits. So those last two lines were as "expected", since I was expecting to pass RaggedTensors to the served model, but I end up passing dense ones, building the RaggedTensor inside the function.

Loaded model signatures currently flatten any structured input into a flat list of tensors.  This is true for RaggedTensor, but also for nested structure, such as a dictionary of tensors.  E.g., if we define a module whose function takes and returns a dict of tensors, then the model signature inputs & outputs are currently flat lists of tensors:
class SomeModule(tf.Module):

  @tf.function(input_signature=[{'foo': tf.TensorSpec(None, tf.int32),
                                 'bar': tf.TensorSpec(None, tf.string)}
  ])
  def return_dict(self, inputs):
    return inputs

some_module = SomeModule()
tf.saved_model.save(some_module, export_dir="foobar2")
some_module = tf.saved_model.load("foobar2")
print(some_module.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY].inputs)
# prints: [<tf.Tensor 'inputs:0' shape=<unknown> dtype=string>, <tf.Tensor 'inputs_1:0' shape=<unknown> dtype=int32>]
print( some_module.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY].outputs)
# prints: [<tf.Tensor 'Identity:0' shape=<unknown> dtype=string>, <tf.Tensor 'Identity_1:0' shape=<unknown> dtype=int32>]

Hopefully we can improve on this, but the problem is a general issue with any structured inputs & outputs, and is not specific to ragged tensors.

@stefanondisponibile
Please let us know if this is still an issue.

Hey @Saduf2019 , sorry for not having replied yet! I would say that yes, this still is an issue, but as @edloper kindly explained is not specific to ragged tensors, moreover there are workarounds/better-ways for tackling this, so I'll close this specific issue. Thanks for you help!

I'm having a similar issue, my model input is a RaggedTensor (1000, None, None) connected to an LSTM layer.
The model is working as expected and when calling predict I get the predictions.
input = tf.ragged.constant([[
                            [-0.9984272718429565, -0.9422321319580078, -0.27657580375671387, -3.185823678970337, -0.6360141634941101, -1.6579184532165527, -1.9000954627990723, -0.49169546365737915, -0.6758883595466614, -0.6677696704864502, -0.532067060470581],
                            [-0.9984272718429565, -0.9421600103378296, 2.2048349380493164, -1.273996114730835, -0.6360141634941101, -1.5917999744415283, 0.6147914528846741, -0.49169546365737915, -0.6673409938812256, -0.6583622694015503, -0.5273991227149963],
                            [-0.9984272718429565, -0.942145586013794, 2.48842453956604, -1.6836735010147095, -0.6360141634941101, -1.5785763263702393, -1.900200605392456, -0.49169546365737915, -0.6656315326690674, -0.6583622694015503, -0.5273991227149963]
]])
model.predict(input)

array([[0.5138151 , 0.3277698 , 0.26122513]], dtype=float32)

When saving the model the input is split into args_0and args_0_1.
MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['__saved_model_init_op']:
  The given SavedModel SignatureDef contains the following input(s):
  The given SavedModel SignatureDef contains the following output(s):
    outputs['__saved_model_init_op'] tensor_info:
        dtype: DT_INVALID
        shape: unknown_rank
        name: NoOp
  Method name is:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['args_0'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 11)
        name: serving_default_args_0:0
    inputs['args_0_1'] tensor_info:
        dtype: DT_INT64
        shape: (-1)
        name: serving_default_args_0_1:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['dense_2'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 3)
        name: StatefulPartitionedCall:0
  Method name is: tensorflow/serving/predict
WARNING: Logging before flag parsing goes to stderr.
W0124 13:38:49.266864<PHONE_NUMBER>03296 deprecation.py:506] From /usr/local/lib/python2.7/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py:1786: calling __init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.

Defined Functions:
  Function Name: '__call__'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: True
        Argument #3
          DType: NoneType
          Value: None
    Option #2
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: False
        Argument #3
          DType: NoneType
          Value: None

  Function Name: '_default_save_signature'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)

  Function Name: 'call_and_return_all_conditional_losses'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: True
        Argument #3
          DType: NoneType
          Value: None
    Option #2
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: False
        Argument #3
          DType: NoneType
          Value: None

I tried to use tf.nest.flatten as follows:
input = tf.ragged.constant([[
                            [-0.9984272718429565, -0.9422321319580078, -0.27657580375671387, -3.185823678970337, -0.6360141634941101, -1.6579184532165527, -1.9000954627990723, -0.49169546365737915, -0.6758883595466614, -0.6677696704864502, -0.532067060470581],
                            [-0.9984272718429565, -0.9421600103378296, 2.2048349380493164, -1.273996114730835, -0.6360141634941101, -1.5917999744415283, 0.6147914528846741, -0.49169546365737915, -0.6673409938812256, -0.6583622694015503, -0.5273991227149963],
                            [-0.9984272718429565, -0.942145586013794, 2.48842453956604, -1.6836735010147095, -0.6360141634941101, -1.5785763263702393, -1.900200605392456, -0.49169546365737915, -0.6656315326690674, -0.6583622694015503, -0.5273991227149963]
]])

inputs = tf.nest.flatten(input, expand_composites=True)

and got a list of 3 tensors:
[<tf.Tensor: shape=(33,), dtype=float32, numpy=
 array([-0.9984273 , -0.94223213, -0.2765758 , -3.1858237 , -0.63601416,
        -1.6579185 , -1.9000955 , -0.49169546, -0.67588836, -0.6677697 ,
        -0.53206706, -0.9984273 , -0.94216   ,  2.204835  , -1.2739961 ,
        -0.63601416, -1.5918    ,  0.61479145, -0.49169546, -0.667341  ,
        -0.65836227, -0.5273991 , -0.9984273 , -0.9421456 ,  2.4884245 ,
        -1.6836735 , -0.63601416, -1.5785763 , -1.9002006 , -0.49169546,
        -0.66563153, -0.65836227, -0.5273991 ], dtype=float32)>,
 <tf.Tensor: shape=(2,), dtype=int64, numpy=array([0, 3])>,
 <tf.Tensor: shape=(4,), dtype=int64, numpy=array([ 0, 11, 22, 33])>]

I tried calling tensorflow serving like so:
import json
import requests
headers = {"content-type": "application/json"}
data = json.dumps({"instances":[
                                  {
                                      "args_0":np.array(inputs[0]).tolist(),
                                      "args_0_1":np.array(inputs[2]).tolist()
                                  }
                               ]
                   })

json_response = requests.post('http://localhost:8501/v1/models/fashion_model:predict', data=data, headers=headers)
predictions = json.loads(json_response.text)

But got the following error:
{'error': 'Matrix size-incompatible: In[0]: [0,33], In[1]: [11,64]\n\t [[{{node sequential_1/first_lstm/lstm_cell/MatMul}}]]'}
What am I missing?

I'm having a similar issue, my model input is a RaggedTensor (1000, None, None) connected to an LSTM layer.
The model is working as expected and when calling predict I get the predictions.
input = tf.ragged.constant([[
                            [-0.9984272718429565, -0.9422321319580078, -0.27657580375671387, -3.185823678970337, -0.6360141634941101, -1.6579184532165527, -1.9000954627990723, -0.49169546365737915, -0.6758883595466614, -0.6677696704864502, -0.532067060470581],
                            [-0.9984272718429565, -0.9421600103378296, 2.2048349380493164, -1.273996114730835, -0.6360141634941101, -1.5917999744415283, 0.6147914528846741, -0.49169546365737915, -0.6673409938812256, -0.6583622694015503, -0.5273991227149963],
                            [-0.9984272718429565, -0.942145586013794, 2.48842453956604, -1.6836735010147095, -0.6360141634941101, -1.5785763263702393, -1.900200605392456, -0.49169546365737915, -0.6656315326690674, -0.6583622694015503, -0.5273991227149963]
]])
model.predict(input)

array([[0.5138151 , 0.3277698 , 0.26122513]], dtype=float32)

When saving the model the input is split into args_0and args_0_1.
MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['__saved_model_init_op']:
  The given SavedModel SignatureDef contains the following input(s):
  The given SavedModel SignatureDef contains the following output(s):
    outputs['__saved_model_init_op'] tensor_info:
        dtype: DT_INVALID
        shape: unknown_rank
        name: NoOp
  Method name is:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['args_0'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 11)
        name: serving_default_args_0:0
    inputs['args_0_1'] tensor_info:
        dtype: DT_INT64
        shape: (-1)
        name: serving_default_args_0_1:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['dense_2'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 3)
        name: StatefulPartitionedCall:0
  Method name is: tensorflow/serving/predict
WARNING: Logging before flag parsing goes to stderr.
W0124 13:38:49.266864<PHONE_NUMBER>03296 deprecation.py:506] From /usr/local/lib/python2.7/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py:1786: calling __init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.

Defined Functions:
  Function Name: '__call__'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: True
        Argument #3
          DType: NoneType
          Value: None
    Option #2
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: False
        Argument #3
          DType: NoneType
          Value: None

  Function Name: '_default_save_signature'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)

  Function Name: 'call_and_return_all_conditional_losses'
    Option #1
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: True
        Argument #3
          DType: NoneType
          Value: None
    Option #2
      Callable with:
        Argument #1
          DType: RaggedTensorSpec
          Value: RaggedTensorSpec(TensorShape([None, None, 11]), tf.float32, 1, tf.int64)
        Argument #2
          DType: bool
          Value: False
        Argument #3
          DType: NoneType
          Value: None

I tried to use tf.nest.flatten as follows:
input = tf.ragged.constant([[
                            [-0.9984272718429565, -0.9422321319580078, -0.27657580375671387, -3.185823678970337, -0.6360141634941101, -1.6579184532165527, -1.9000954627990723, -0.49169546365737915, -0.6758883595466614, -0.6677696704864502, -0.532067060470581],
                            [-0.9984272718429565, -0.9421600103378296, 2.2048349380493164, -1.273996114730835, -0.6360141634941101, -1.5917999744415283, 0.6147914528846741, -0.49169546365737915, -0.6673409938812256, -0.6583622694015503, -0.5273991227149963],
                            [-0.9984272718429565, -0.942145586013794, 2.48842453956604, -1.6836735010147095, -0.6360141634941101, -1.5785763263702393, -1.900200605392456, -0.49169546365737915, -0.6656315326690674, -0.6583622694015503, -0.5273991227149963]
]])

inputs = tf.nest.flatten(input, expand_composites=True)

and got a list of 3 tensors:
[<tf.Tensor: shape=(33,), dtype=float32, numpy=
 array([-0.9984273 , -0.94223213, -0.2765758 , -3.1858237 , -0.63601416,
        -1.6579185 , -1.9000955 , -0.49169546, -0.67588836, -0.6677697 ,
        -0.53206706, -0.9984273 , -0.94216   ,  2.204835  , -1.2739961 ,
        -0.63601416, -1.5918    ,  0.61479145, -0.49169546, -0.667341  ,
        -0.65836227, -0.5273991 , -0.9984273 , -0.9421456 ,  2.4884245 ,
        -1.6836735 , -0.63601416, -1.5785763 , -1.9002006 , -0.49169546,
        -0.66563153, -0.65836227, -0.5273991 ], dtype=float32)>,
 <tf.Tensor: shape=(2,), dtype=int64, numpy=array([0, 3])>,
 <tf.Tensor: shape=(4,), dtype=int64, numpy=array([ 0, 11, 22, 33])>]

I tried calling tensorflow serving like so:
import json
import requests
headers = {"content-type": "application/json"}
data = json.dumps({"instances":[
                                  {
                                      "args_0":np.array(inputs[0]).tolist(),
                                      "args_0_1":np.array(inputs[2]).tolist()
                                  }
                               ]
                   })

json_response = requests.post('http://localhost:8501/v1/models/fashion_model:predict', data=data, headers=headers)
predictions = json.loads(json_response.text)

But got the following error:
{'error': 'Matrix size-incompatible: In[0]: [0,33], In[1]: [11,64]\n\t [[{{node sequential_1/first_lstm/lstm_cell/MatMul}}]]'}
What am I missing?


Investigate US_SSN match

#US_SSN
ID: 61
A SSN may not be correctly detected

This is a duplicate of #70


Link issues

Some links which are incorrect. (also for http://trivelop.de/ as I could not find a repo for the web site)

page
where
incorrect link
problem/correct link

main page
bottom
Blog
links to imprint

http://trivelop.de/
right
Fork on GitHub
links to your profile

http://trivelop.de/imprint/
Twitter links
https://github.com/rrrene
link to your GitHub profile

Thx for all the bug reports! i will do my best to fix them during the coming week! :+1:


Unexpected results when launching an app with custom scheme through app.launch()

Problem description
Currently, when launching an app through app.launch(), the target app activity will open in the task of the app calling app.launch() and any existing tasks of the target will not be brought to the foreground.  Explicitly setting android:allowTaskReparenting="true" of the target app does not have any effect, although this does not seem needed when the app is being launched through the browser (see https://github.com/eclipsesource/tabris-js/issues/1915). It seems that there is a disparity in the mechanism to launch a Tabris.js app from the browser and by using the app.launch() API.
When using the native startActivity() with Intent.FLAG_ACTIVITY_NEW_TASK instead of Tabris.js' app.launch() API, the activity will be launched in a new task/existing tasks will be brought to the foreground and their activities' onNewIntent will be called, similarly to the behavior of following a link in the browser:
[1]
    val intent = Intent(Intent.ACTION_VIEW)
    intent.data = Uri.parse(url)
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
    startActivity(scope.context, intent, null);

Expected behavior
app.launch() should behave as closely as possible to the browser when handling custom schemes of Android apps:

the activity is opened in a new task instead of the calling task.
if a task exists with the target activity already, its activity is brought to the foreground and the onNewIntent method of the activity is called.
This is conceptually analogous to the behavior on iOS as well.

Does it make sense to generally use [1] for custom schemes? How does it differ from the current method implemented by app.launch()?
Environment

Tabris.js version: 3.4
OS: Android

The behavior could indeed be improved. Using the the FLAG_ACTIVITY_NEW_TASK is more in line with the expected behavior of "going to a different app" to view the content. We will updated accordingly.

Configuring launchMode to singleTask may also be a viable alternative:
  <preference name="AndroidLaunchMode" value="singleTask"/>

We will close this issue for now and open a new one with a feature request to make the launch behavior configurable. Either launch in the same task stack or into a new one.


Proposal: Docker Plugins

Proposal for plugins to provide hooks into the Docker engine and extend engine behavior.
Notes as discussed with @BrianBland @shykes @crosbymichael

Sorry, I'm gonna close this as we have ongoing initiatives and this PR seems to be stalled (cc @lukemarsden @aluzzardi @shykes).


Cannot read property 'split' of undefined occurred in deserializing the responseBody

I am getting an error while deserializing response. modelProps[key].serializedName is undefined. Is this supposed to be happening?

I found the solution. You need to make following changes in lib\serializer.ts file

Can you check-in the changes, so I can take the new build?

Please ensure you have the latest preview of autorest.typescript and ms-rest-js.
Also would be helpful to know if you have additionalProperties: true anywhere in your swagger, as that's a pending feature.

I am on version 0.21.406. Is it fixed in latest preview? I don't have access to api code but generated json does have additionalProperties attribute

Unlikely to have changed in the latest preview. :)
Please feel free to open the PR, I'm sure it'll be useful. I will try and use it to implement Azure/autorest.typescript#232

Pull request submitted : #214

Published in<EMAIL_ADDRESS>Thanks again.


OS in "App Center Test Devices" should list the OS not just the version

[Enter feedback here]

OS in "App Center Test Devices" should list the OS not just the version
E.g. "Android 4.2.2" instead of "4.2.2".
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f0c64c24-c463-0383-84ca-35465cd40f47
Version Independent ID: 391d0c7a-f6e5-3269-c616-e83266050331
Content: Devices Available - Visual Studio App Center
Content Source: docs/test-cloud/devices.md
Service: vs-appcenter
Sub-service: app-center-test
GitHub Login: @Priskorn
Microsoft Alias: miprisk

Hi @charlesroddie We added a (Android/iOS) selector to the "App Center Test Devices" page.
Thanks for reaching out.
https://docs.microsoft.com/en-us/appcenter/test-cloud/devices/ios
cc: @Oddj0b


⚠ Bofrost.de has degraded performance

In ffb2a42, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1269 ms

Resolved: Bofrost.de performance has improved in dc5a4b1.


ungoogled-chromium: 81.0.4044.138-1 -> 84.0.4147.89-1

Motivation for this change
This updates ungoogled-chromium. This change was created by manually copying the regular chromium expressions and applying a small diff to support the ungoogled patchset.
Performed a cursory test and everything looks good, except for a slight icon/font rendering issue that also appears in the upstream chromium package.
Includes a possible fix for https://github.com/Eloston/ungoogled-chromium/issues/1050 - renames the nix store path with a suffix of ungoogled-chromium instead of chromium, to hopefully allow the nix-env updater to work properly.
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

cc @danielfullmer

Built and briefly tested youtube/twitch and webgl.

@squalus I just noticed that #91430 was ready but sadly never got merged. Feel free to ping/mention me on your ungoogled-chromium PRs then I can merge them after @danielfullmer tested them (thanks for that) ;)


Minor "Edit" menu tweak in the "Default User Settings" list sidebar

Issue Type: Feature Request
hello.. (:
this may simply be a result of my current combination of "User Settings", however, after adding the following:
    "files.autoSave": "onWindowChange",

I continued making changes to settings which, naturally, kept the file in a "dirty" state as instructed. but when I use the "Edit" (icon) > "Replace In Settings" sidebar menu, I get a popup stating:

Unable to write into user settings because the file is dirty. Please save the user settings file first and then try again.

but at this point here, for the action of replacing the "User Settings" version of a targeted setting, could you make it update the in-editor copy, instead of writing directly to file?
here's a gist of my current settings.json file, in case you need it.
VS Code version: Code 1.24.1 (24f62626b222e9a8313213fb64b10d741a326288, 2018-06-13T17:51:32.889Z)
OS version: Windows_NT x64 10.0.17134

If I understand correctly, you have changed your settings file and did not save it and then you used edit action to update a different setting? Is that correct?

that's correct @sandy081, after saving my settings.json the "Replace in Settings" option copied the relevant setting across to my settings file with no issue.
just to clarify: each of these settings are behaving exactly as expected, so this is not a bug... I just feel like the "Replace in Settings" option should update the settings value in the open editor, rather than updating the contents of the physical file. :)

You mean udpate without saving the file?

yup, exactly. :)

May I know what is your reasoning behind not saving the file?

there's no special reason for it, that was just a side effect of using "files.autoSave": "onWindowChange", but I set that option in order to make changes in multiple files, then simply alt+tab to my browser and have all files save automatically.

Current behaviour is expected so closing this.

I'm confused... I didn't log a bug report with current behaviour that was unexpected, I logged a feature request to talk about the viability of changing the current behaviour.

 :(

@ZaLiTHkA Sorry for not being clear. I did not close it for being expected behaviour but also because there is no valid use case to support it. I am sorry that we do not add features just for no reason. I hope you understand.
Thanks

to be honest, I don't really understand. I think it's safer all-round to update the contents of a file that's currently loaded in the editor, rather than directly on disk, especially when the menu item that carries out the action is only visible once the file (in this case, settings.json) has been opened. you were focusing on how I discovered this behaviour, rather than the behaviour itself, as though whatever steps I took were the core of the matter.
but either way, all I can do is ask, which I did. so I guess that's that.


ask

Type
documentation

Description

Enhanced the documentation related to asking questions about images in PRs, including clarifying the context and improving the guide for obtaining direct image links.
Updated the README.md to correct the link description for image query documentation.

Changes walkthrough
Relevant filesDocumentation

README.mdUpdate Image Query Documentation Link in README

README.md

Updated the link description for asking questions about images.

+1/-1

ask.mdEnhance Documentation for Image Queries

docs/docs/tools/ask.md
Clarified the context usage for image queries in pull requests.  Added instructions for obtaining a direct link to an image on GitHub.  Improved the step-by-step guide for asking questions about images.

+9/-7

✨ PR-Agent usage:
Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

/review auto_approve


Some decals do not rendered on mobile renderer

Tested versions
4.2.1 / f8a2a9193662b2e8c1d04d65e647399dee94f31e
System information
Windows 11, GTX 4080
Issue description
Some decals do not render at all on Mobile renderer:

while its correct on Forward+:

Steps to reproduce
Create several decals and try to use them in mobile renderer.
Minimal reproduction project (MRP)
DecalTest.zip

For posterity: 8 decal is the intended limit for the mobile vulkan renderer https://docs.godotengine.org/en/stable/classes/class_decal.html


Duplicate scalar columns (or custom index) in Pandas DF with flatten=True

In my case, my tree contains runNumber and eventNumber columns that I would like to use as an index, but these columns are NaN for subentry != 0.

My thinking on the was that anyone could use Pandas's fillna in the forward direction. Alternatively, I could call that function just before returning the DataFrame, but this provides more information to the user.

That would cause issues if you have multiple jagged-array columns with different lengths. I was suggesting duplicating only the scalar columns.

That is doable. I'll use fillna per column because in the arrays function, I know which columns are scalar. It does lose information, but that information is available in the original TTree object as the branch.interpretation (asdtype vs asjagged).

In uproot 3.2.9, scalar columns get duplicated down, but jagged columns of different lengths do not.

Turns out there's a problem. The integer columns have turned into floats.

That's something that Pandas does when it consolidates Numpy arrays internally. I don't know how to control it— I add columns to the DataFrame and it sometimes converts them. Do you know the mechanism behind that? It seems like something they really to be hidden/transparent.

It's probably because you used NaN which is only available with floats.

That makes sense. However, I didn't put NaN in myself: that's what Pandas does when you merge a dataset into one with a larger index— namely the one with nonzero subentries. That's intrinsic to the process. I suppose I could afterward determine if any fillna'ed scalar columns used to be integers and change them back...


fix(resources): Create bo_punct_position.csv

Opening punctuations are appended at the left end of sentences (i.e. ༈→བཀྲ་ཤིས་ཤོག)
Closing punctuations are appended at the right end of sentences (i.e. བཀྲ་ཤིས་ཤོག←།).
Spaces are always grouped with punctuation characters (i.e. ༈ →བཀྲ་ཤིས་ཤོག)
Groups of punctuation characters containing one or more opening punctuation are treated as opening punctuation. (i.e. ༄༅། །→བཀྲ་ཤིས་ཤོག)
Groups of punctuation characters NOT containing one or more opening punctuation are treated as closing punctuation. (i.e. བཀྲ་ཤིས་ཤོག←། །།)

KNOWN LIMITATION: there are exceptions to the above punctuation group rules such as ། ༈ ། which contains both opening (༈) and closing (།) punctuation characters but needs to be handled by split into ། ། and ༈ , respectively a closing and an opening puntuation group. However these cases are not very common and are ignored for now.

just for reference, I have some code from a few years ago that handles punctuation: https://github.com/buda-base/git-to-dbs/blob/master/src/main/java/io/bdrc/gittodbs/TibetanStringChunker.java


Scheduled CI daily builds have been failing since the 14th of March

Hi,
I was investigating why our builds for integration with turbodbc where failing on Apache Arrow and have noticed that the turbodbc CI has been failing since the 14th of March:
https://github.com/blue-yonder/turbodbc/actions/runs/1979076318
Our Apache Arrow ticket can be found here:
https://issues.apache.org/jira/browse/ARROW-15997
You can see here the error from the build on turbodbc CI:
               +build | FAILED: cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o
              +build | /opt/conda/envs/turbodbc-dev/bin/x86_64-conda-linux-gnu-c++  -I/src/cpp/turbodbc/Library -I/src/cpp/turbodbc/../cpp_odbc/Library -I/src/cpp/turbodbc/Test -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /opt/conda/envs/turbodbc-dev/include -Wall -Wextra -g -O0 -pedantic -fprofile-arcs -ftest-coverage   -std=c++11 -MD -MT cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o -MF cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o.d -o cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o -c /src/cpp/turbodbc/Test/tests/field_translator_test.cpp
              +build | In file included from /opt/conda/envs/turbodbc-dev/include/boost/type_index/stl_type_index.hpp:32,
              +build |                  from /opt/conda/envs/turbodbc-dev/include/boost/type_index.hpp:29,
              +build |                  from /opt/conda/envs/turbodbc-dev/include/boost/variant/variant.hpp:21,
              +build |                  from /src/cpp/turbodbc/Library/turbodbc/field.h:3,
              +build |                  from /src/cpp/turbodbc/Library/turbodbc/field_translator.h:3,
              +build |                  from /src/cpp/turbodbc/Test/tests/field_translator_test.cpp:1:
              +build | /opt/conda/envs/turbodbc-dev/include/boost/optional/optional.hpp: In instantiation of 'std::basic_ostream<_CharT, _Traits>& boost::operator<<(std::basic_ostream<_CharT, _Traits>&, const boost::optional_detail::optional_tag&) [with CharType = char; CharTrait = std::char_traits<char>]':
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:215:9:   required from 'static void testing::internal::internal_stream_operator_without_lexical_name_lookup::StreamPrinter::PrintValue(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; <template-parameter-1-2> = void; <template-parameter-1-3> = std::basic_ostream<char>&; std::ostream = std::basic_ostream<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:312:22:   required from 'void testing::internal::PrintWithFallback(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:441:30:   required from 'void testing::internal::PrintTo(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:691:12:   required from 'static void testing::internal::UniversalPrinter<T>::Print(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:980:30:   required from 'void testing::internal::UniversalPrint(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:865:19:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:334:36:   required from 'static std::string testing::internal::FormatForComparison<ToPrint, OtherOperand>::Format(const ToPrint&) [with ToPrint = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; OtherOperand = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::string = std::__cxx11::basic_string<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:415:45:   required from 'std::string testing::internal::FormatForComparisonFailureMessage(const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::opt
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:415:45:   required from 'std::string testing::internal::FormatForComparisonFailureMessage(const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::string = std::__cxx11::basic_string<char>]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1527:53:   required from 'testing::AssertionResult testing::internal::CmpHelperEQFailure(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1549:28:   required from 'testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >]'
              +build | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1564:23:   required from 'static testing::AssertionResult testing::internal::EqHelper::Compare(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; typename std::enable_if<((! std::is_integral<_Tp>::value) || (! std::is_pointer<_Dp>::value))>::type* <anonymous> = 0]'
              +build | /src/cpp/turbodbc/Test/tests/field_translator_test.cpp:31:2:   required from here
              +build | /opt/conda/envs/turbodbc-dev/include/boost/optional/optional.hpp:1596:3: error: static assertion failed: If you want to output boost::optional, include header <boost/optional/optional_io.hpp>
              +build |  1596 |   BOOST_STATIC_ASSERT_MSG(sizeof(CharType) == 0, "If you want to output boost::optional, include header <boost/optional/optional_io.hpp>");
              +build |       |   ^~~~~~~~~~~~~~~~~~~~~~~
              +build | [104/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translators/boolean_translator_test.cpp.o
              +build | [105/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translators/date_translator_test.cpp.o
              +build | ninja: build stopped: subcommand failed.
              +build | Command /bin/sh -c 'bash -ic " cmake -DBOOST_ROOT=\${CONDA_PREFIX} -DBUILD_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=./dist  -DPYTHON_EXECUTABLE=\$(which python) -GNinja .. && ninja && cmake --build . --target install && cd dist && python setup.py sdist "' failed with exit code 1
              +build |
              +build | ERROR: Command exited with non-zero code: RUN bash -ic " cmake -DBOOST_ROOT=\${CONDA_PREFIX} -DBUILD_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=./dist  -DPYTHON_EXECUTABLE=\$(which python) -GNinja .. && ninja && cmake --build . --target install && cd dist && python setup.py sdist "
Repeating the output of the command that caused the failure
================================ FAILURE [main] ================================
              +build *failed* | ARROW_VERSION_RULE=>=1,<2 CONDA_EXTRA= NUMPY_VERSION_RULE=>=1.20.0 PYTHON_VERSION=3.8.12
              +build *failed* | ERROR: Command exited with non-zero code: RUN bash -ic " cmake -DBOOST_ROOT=\${CONDA_PREFIX} -DBUILD_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=./dist  -DPYTHON_EXECUTABLE=\$(which python) -GNinja .. && ninja && cmake --build . --target install && cd dist && python setup.py sdist "
              +build *failed* | --> RUN bash -ic " cmake -DBOOST_ROOT=\${CONDA_PREFIX} -DBUILD_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=./dist  -DPYTHON_EXECUTABLE=\$(which python) -GNinja .. && ninja && cmake --build . --target install && cd dist && python setup.py sdist "
Error: exit code: 1
              +build *failed* | bash: cannot set terminal process group (1): Inappropriate ioctl for device
              +build *failed* | bash: no job control in this shell
              +build *failed* | -- The CXX compiler identification is GNU 10.3.0
              +build *failed* | -- Detecting CXX compiler ABI info
              +build *failed* | -- Detecting CXX compiler ABI info - done
              +build *failed* | -- Check for working CXX compiler: /opt/conda/envs/turbodbc-dev/bin/x86_64-conda-linux-gnu-c++ - skipped
              +build *failed* | -- Detecting CXX compile features
              +build *failed* | -- Detecting CXX compile features - done
              +build *failed* | -- Build type: Debug
              +build *failed* | -- pybind11 v2.9.1
              +build *failed* | -- Found PythonInterp: /opt/conda/envs/turbodbc-dev/bin/python (found version "3.8.12")
              +build *failed* | -- Found PythonLibs: /opt/conda/envs/turbodbc-dev/lib/libpython3.8.so
              +build *failed* | -- Performing Test HAS_FLTO
              +build *failed* | -- Performing Test HAS_FLTO - Success
              +build *failed* | -- Found GTest: /opt/conda/envs/turbodbc-dev/lib/libgtest.so
              +build *failed* | -- Found Boost: /opt/conda/envs/turbodbc-dev/include (found version "1.77.0") found components: locale
              +build *failed* | -- Detecting unixODBC library
              +build *failed* | --   Found header files at: /opt/conda/envs/turbodbc-dev/include
              +build *failed* | --   Found library at: /opt/conda/envs/turbodbc-dev/lib/libodbc.so
              +build *failed* | -- Found Boost: /opt/conda/envs/turbodbc-dev/include (found version "1.77.0") found components: system date_time locale
              +build *failed* | -- Detecting unixODBC library
              +build *failed* | --   Found header files at: /opt/conda/envs/turbodbc-dev/include
              +build *failed* | --   Found library at: /opt/conda/envs/turbodbc-dev/lib/libodbc.so
              +build *failed* | -- Found Boost: /opt/conda/envs/turbodbc-dev/include (found version "1.77.0") found components: system
              +build *failed* | -- Detecting unixODBC library
              +build *failed* | --   Found header files at: /opt/conda/envs/turbodbc-dev/include
              +build *failed* | --   Found library at: /opt/conda/envs/turbodbc-dev/lib/libodbc.so
              +build *failed* | -- Detecting unixODBC library
              +build *failed* | --   Found header files at: /opt/conda/envs/turbodbc-dev/include
              +build *failed* | --   Found library at: /opt/conda/envs/turbodbc-dev/lib/libodbc.so
              +build *failed* | CMake Warning (dev) at /opt/conda/envs/turbodbc-dev/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
              +build *failed* |   The package name passed to `find_package_handle_standard_args` (PkgConfig)
              +build *failed* |   does not match the name of the calling package (Arrow).  This can lead to
              +build *failed* |   problems in calling code that expects `find_package` result variables
              +build *failed* |   (e.g., `_FOUND`) to follow a certain pattern.
              +build *failed* | Call Stack (most recent call first):
              +build *failed* |   /opt/conda/envs/turbodbc-dev/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
              +build *failed* |   cmake_scripts/FindArrow.cmake:26 (include)
              +build *failed* |   cpp/CMakeLists.txt:6 (find_package)
              +build *failed* | This warning is for project developers.  Use -Wno-dev to suppress it.

              +build *failed* | -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
              +build *failed* | -- Found /opt/conda/envs/turbodbc-dev/lib/libarrow.so in /opt/conda/envs/turbodbc-dev/lib
              +build *failed* | -- Found the Arrow core library: /opt/conda/envs/turbodbc-dev/lib/libarrow.so
              +build *failed* | -- Found the Arrow Python library: /opt/conda/envs/turbodbc-dev/lib/libarrow_python.so
              +build *failed* | -- Detecting unixODBC library
              +build *failed* | --   Found header files at: /opt/conda/envs/turbodbc-dev/include
              +build *failed* | --   Found library at: /opt/conda/envs/turbodbc-dev/lib/libodbc.so
              +build *failed* | CMake Warning (dev) at /opt/conda/envs/turbodbc-dev/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
              +build *failed* |   The package name passed to `find_package_handle_standard_args` (PkgConfig)
              +build *failed* |   does not match the name of the calling package (Arrow).  This can lead to
              +build *failed* |   problems in calling code that expects `find_package` result variables
              +build *failed* |   (e.g., `_FOUND`) to follow a certain pattern.
              +build *failed* | Call Stack (most recent call first):
              +build *failed* |   /opt/conda/envs/turbodbc-dev/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
              +build *failed* |   cmake_scripts/FindArrow.cmake:26 (include)
              +build *failed* |   cpp/turbodbc_arrow/CMakeLists.txt:12 (find_package)
              +build *failed* | This warning is for project developers.  Use -Wno-dev to suppress it.

              +build *failed* | -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
              +build *failed* | -- Found /opt/conda/envs/turbodbc-dev/lib/libarrow.so in /opt/conda/envs/turbodbc-dev/lib
              +build *failed* | -- Found the Arrow core library: /opt/conda/envs/turbodbc-dev/lib/libarrow.so
              +build *failed* | -- Found the Arrow Python library: /opt/conda/envs/turbodbc-dev/lib/libarrow_python.so
              +build *failed* | -- Configuring done
              +build *failed* | CMake Warning (dev) at cpp/cpp_odbc/Test/CMakeLists.txt:9 (add_dependencies):
              +build *failed* |   Policy CMP0046 is not set: Error on non-existent dependency in
              +build *failed* |   add_dependencies.  Run "cmake --help-policy CMP0046" for policy details.
              +build *failed* |   Use the cmake_policy command to set the policy and suppress this warning.

              +build *failed* |   The dependency target "googletest_build" of target "cpp_odbc_test" does not
              +build *failed* |   exist.
              +build *failed* | This warning is for project developers.  Use -Wno-dev to suppress it.

              +build *failed* | CMake Warning (dev) at cpp/turbodbc/Test/CMakeLists.txt:10 (add_dependencies):
              +build *failed* |   Policy CMP0046 is not set: Error on non-existent dependency in
              +build *failed* |   add_dependencies.  Run "cmake --help-policy CMP0046" for policy details.
              +build *failed* |   Use the cmake_policy command to set the policy and suppress this warning.

              +build *failed* |   The dependency target "googletest_build" of target "turbodbc_test" does not
              +build *failed* |   exist.
              +build *failed* | This warning is for project developers.  Use -Wno-dev to suppress it.

              +build *failed* | CMake Warning (dev) at cpp/turbodbc_arrow/Test/CMakeLists.txt:11 (add_dependencies):
              +build *failed* |   Policy CMP0046 is not set: Error on non-existent dependency in
              +build *failed* |   add_dependencies.  Run "cmake --help-policy CMP0046" for policy details.
              +build *failed* |   Use the cmake_policy command to set the policy and suppress this warning.

              +build *failed* |   The dependency target "googletest_build" of target "turbodbc_arrow_test"
              +build *failed* |   does not exist.
              +build *failed* | This warning is for project developers.  Use -Wno-dev to suppress it.

              +build *failed* | -- Generating done
              +build *failed* | -- Build files have been written to: /src/build
              +build *failed* | [1/155] Forcing refreshing of the CMake configuration. This allows to use globbing safely.
              +build *failed* | [2/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/connection.cpp.o
              +build *failed* | [3/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/cpp_odbc.cpp.o
              +build *failed* | [4/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/column_description.cpp.o
              +build *failed* | [5/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level1/api.cpp.o
              +build *failed* | [6/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level1/level1.cpp.o
              +build *failed* | [7/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level1/unixodbc_backend.cpp.o
              +build *failed* | [8/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/environment.cpp.o
              +build *failed* | [9/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/error.cpp.o
              +build *failed* | [10/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/handles.cpp.o
              +build *failed* | [11/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/api.cpp.o
              +build *failed* | [12/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level1/unixodbc_backend_debug.cpp.o
              +build *failed* | [13/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/input_string_buffer.cpp.o
              +build *failed* | [14/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/input_u16string_buffer.cpp.o
              +build *failed* | [15/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/string_buffer.cpp.o
              +build *failed* | [16/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/level2.cpp.o
              +build *failed* | [17/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level3/level3.cpp.o
              +build *failed* | [18/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/u16string_buffer.cpp.o
              +build *failed* | [19/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level2/level1_connector.cpp.o
              +build *failed* | [20/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level3/raii_connection.cpp.o
              +build *failed* | [21/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level3/raii_environment.cpp.o
              +build *failed* | [22/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/level3/raii_statement.cpp.o
              +build *failed* | [23/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/multi_value_buffer.cpp.o
              +build *failed* | [24/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/make_environment.cpp.o
              +build *failed* | [25/155] Building CXX object cpp/cpp_odbc/Library/CMakeFiles/cpp_odbc.dir/src/statement.cpp.o
              +build *failed* | [26/155] Linking CXX shared library cpp/cpp_odbc/Library/libcpp_odbc.so
              +build *failed* | [27/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/description_test.cpp.o
              +build *failed* | [28/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/column_description_test.cpp.o
              +build *failed* | [29/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/cpp_odbc_test/level1_mock_api.cpp.o
              +build *failed* | [30/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/cpp_odbc_test/level2_mock_api.cpp.o
              +build *failed* | [31/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/credentials_test.cpp.o
              +build *failed* | [32/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/error_test.cpp.o
              +build *failed* | [33/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/environment_test.cpp.o
              +build *failed* | [34/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/connection_test.cpp.o
              +build *failed* | [35/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/diagnostic_record_test.cpp.o
              +build *failed* | [36/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/fixed_length_string_buffer_test.cpp.o
              +build *failed* | [37/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/handles_test.cpp.o
              +build *failed* | [38/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/input_string_buffer_test.cpp.o
              +build *failed* | [39/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/input_u16string_buffer_test.cpp.o
              +build *failed* | [40/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level1/api_test.cpp.o
              +build *failed* | [41/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/string_buffer_test.cpp.o
              +build *failed* | [42/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/api_test.cpp.o
              +build *failed* | [43/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/u16string_buffer_test.cpp.o
              +build *failed* | [44/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level3/raii_environment_test.cpp.o
              +build *failed* | [45/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level3/raii_connection_test.cpp.o
              +build *failed* | [46/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/make_environment_test.cpp.o
              +build *failed* | [47/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/multi_value_buffer_test.cpp.o
              +build *failed* | [48/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level3/raii_statement_test.cpp.o
              +build *failed* | [49/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/level2/level1_connector_test.cpp.o
              +build *failed* | [50/155] Building CXX object cpp/cpp_odbc/Test/CMakeFiles/cpp_odbc_test.dir/tests/statement_test.cpp.o
              +build *failed* | [51/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/buffer_size.cpp.o
              +build *failed* | [52/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/column.cpp.o
              +build *failed* | [53/155] Building CXX object cpp/turbodbc_numpy/Library/CMakeFiles/turbodbc_numpy_support.dir/src/make_numpy_array.cpp.o
              +build *failed* | [54/155] Linking CXX executable cpp/cpp_odbc/Test/cpp_odbc_test
              +build *failed* | [55/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/configuration.cpp.o
              +build *failed* | [56/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/command.cpp.o
              +build *failed* | [57/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/connect.cpp.o
              +build *failed* | [58/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/connection.cpp.o
              +build *failed* | [59/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/description.cpp.o
              +build *failed* | [60/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/cursor.cpp.o
              +build *failed* | [61/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/boolean_description.cpp.o
              +build *failed* | [62/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/date_description.cpp.o
              +build *failed* | [63/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/floating_point_description.cpp.o
              +build *failed* | [64/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/integer_description.cpp.o
              +build *failed* | [65/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/string_description.cpp.o
              +build *failed* | [66/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/errors.cpp.o
              +build *failed* | [67/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/timestamp_description.cpp.o
              +build *failed* | [68/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/descriptions/unicode_description.cpp.o
              +build *failed* | [69/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translator.cpp.o
              +build *failed* | [70/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/boolean_translator.cpp.o
              +build *failed* | [71/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/date_translator.cpp.o
              +build *failed* | [72/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/float64_translator.cpp.o
              +build *failed* | [73/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/int64_translator.cpp.o
              +build *failed* | [74/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/string_translator.cpp.o
              +build *failed* | [75/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/field_translators/timestamp_translator.cpp.o
              +build *failed* | [76/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/make_description.cpp.o
              +build *failed* | [77/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/make_field_translator.cpp.o
              +build *failed* | [78/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/parameter.cpp.o
              +build *failed* | [79/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/parameter_sets/bound_parameter_set.cpp.o
              +build *failed* | [80/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/parameter_sets/field_parameter_set.cpp.o
              +build *failed* | [81/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/parameter_sets/set_field.cpp.o
              +build *failed* | [82/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/result_sets/bound_result_set.cpp.o
              +build *failed* | [83/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/result_sets/result_set.cpp.o
              +build *failed* | [84/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/result_sets/row_based_result_set.cpp.o
              +build *failed* | [85/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/string_helpers.cpp.o
              +build *failed* | [86/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/time_helpers.cpp.o
              +build *failed* | [87/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/result_sets/field_result_set.cpp.o
              +build *failed* | [88/155] Building CXX object cpp/turbodbc/Library/CMakeFiles/turbodbc.dir/src/result_sets/double_buffered_result_set.cpp.o
              +build *failed* | [89/155] Linking CXX shared library cpp/turbodbc/Library/libturbodbc.so
              +build *failed* | [90/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/buffer_size_test.cpp.o
              +build *failed* | [91/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/column_test.cpp.o
              +build *failed* | [92/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/command_test.cpp.o
              +build *failed* | [93/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/configuration_test.cpp.o
              +build *failed* | [94/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/boolean_description_test.cpp.o
              +build *failed* | [95/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/connection_test.cpp.o
              +build *failed* | [96/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/date_description_test.cpp.o
              +build *failed* | [97/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/floating_point_description_test.cpp.o
              +build *failed* | [98/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/integer_description_test.cpp.o
              +build *failed* | [99/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/string_description_test.cpp.o
              +build *failed* | [100/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/timestamp_description_test.cpp.o
              +build *failed* | [101/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/errors_test.cpp.o
              +build *failed* | [102/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/descriptions/unicode_description_test.cpp.o
              +build *failed* | [103/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o
              +build *failed* | FAILED: cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o
              +build *failed* | /opt/conda/envs/turbodbc-dev/bin/x86_64-conda-linux-gnu-c++  -I/src/cpp/turbodbc/Library -I/src/cpp/turbodbc/../cpp_odbc/Library -I/src/cpp/turbodbc/Test -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /opt/conda/envs/turbodbc-dev/include -Wall -Wextra -g -O0 -pedantic -fprofile-arcs -ftest-coverage   -std=c++11 -MD -MT cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o -MF cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o.d -o cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translator_test.cpp.o -c /src/cpp/turbodbc/Test/tests/field_translator_test.cpp
              +build *failed* | In file included from /opt/conda/envs/turbodbc-dev/include/boost/type_index/stl_type_index.hpp:32,
              +build *failed* |                  from /opt/conda/envs/turbodbc-dev/include/boost/type_index.hpp:29,
              +build *failed* |                  from /opt/conda/envs/turbodbc-dev/include/boost/variant/variant.hpp:21,
              +build *failed* |                  from /src/cpp/turbodbc/Library/turbodbc/field.h:3,
              +build *failed* |                  from /src/cpp/turbodbc/Library/turbodbc/field_translator.h:3,
              +build *failed* |                  from /src/cpp/turbodbc/Test/tests/field_translator_test.cpp:1:
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/boost/optional/optional.hpp: In instantiation of 'std::basic_ostream<_CharT, _Traits>& boost::operator<<(std::basic_ostream<_CharT, _Traits>&, const boost::optional_detail::optional_tag&) [with CharType = char; CharTrait = std::char_traits<char>]':
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:215:9:   required from 'static void testing::internal::internal_stream_operator_without_lexical_name_lookup::StreamPrinter::PrintValue(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; <template-parameter-1-2> = void; <template-parameter-1-3> = std::basic_ostream<char>&; std::ostream = std::basic_ostream<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:312:22:   required from 'void testing::internal::PrintWithFallback(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:441:30:   required from 'void testing::internal::PrintTo(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:691:12:   required from 'static void testing::internal::UniversalPrinter<T>::Print(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:980:30:   required from 'void testing::internal::UniversalPrint(const T&, std::ostream*) [with T = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::ostream = std::basic_ostream<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:865:19:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:334:36:   required from 'static std::string testing::internal::FormatForComparison<ToPrint, OtherOperand>::Format(const ToPrint&) [with ToPrint = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; OtherOperand = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::string = std::__cxx11::basic_string<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest-printers.h:415:45:   required from 'std::string testing::internal::FormatForComparisonFailureMessage(const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; std::string = std::__cxx11::basic_string<char>]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1527:53:   required from 'testing::AssertionResult testing::internal::CmpHelperEQFailure(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1549:28:   required from 'testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >]'
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/gtest/gtest.h:1564:23:   required from 'static testing::AssertionResult testing::internal::EqHelper::Compare(const char*, const char*, const T1&, const T2&) [with T1 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; T2 = boost::optional<boost::variant<long int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, double, boost::gregorian::date, boost::posix_time::ptime> >; typename std::enable_if<((! std::is_integral<_Tp>::value) || (! std::is_pointer<_Dp>::value))>::type* <anonymous> = 0]'
              +build *failed* | /src/cpp/turbodbc/Test/tests/field_translator_test.cpp:31:2:   required from here
              +build *failed* | /opt/conda/envs/turbodbc-dev/include/boost/optional/optional.hpp:1596:3: error: static assertion failed: If you want to output boost::optional, include header <boost/optional/optional_io.hpp>
              +build *failed* |  1596 |   BOOST_STATIC_ASSERT_MSG(sizeof(CharType) == 0, "If you want to output boost::optional, include header <boost/optional/optional_io.hpp>");
              +build *failed* |       |   ^~~~~~~~~~~~~~~~~~~~~~~
              +build *failed* | [104/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translators/boolean_translator_test.cpp.o
              +build *failed* | [105/155] Building CXX object cpp/turbodbc/Test/CMakeFiles/turbodbc_test.dir/tests/field_translators/date_translator_test.cpp.o
              +build *failed* | ninja: build stopped: subcommand failed.
              +build *failed* | Command /bin/sh -c 'bash -ic " cmake -DBOOST_ROOT=\${CONDA_PREFIX} -DBUILD_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=./dist  -DPYTHON_EXECUTABLE=\$(which python) -GNinja .. && ninja && cmake --build . --target install && cd dist && python setup.py sdist "' failed with exit code 1

@raulcd thanks. It broke because of a boost release. I don't know c++ but followed the error message and adding the header solved the issue: https://github.com/blue-yonder/turbodbc/pull/356


Add plotting n/n

What does this PR do?
Fixes #1406
Final PR for plotting (for now). Adds:

documentation page + examples
plot method to MetricCollection + test
smaller fixes to other metrics

Before submitting

[ ] Was this discussed/agreed via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.

Did you have fun?
Make sure you had fun coding 🙃

@Borda, @justusschock plots should be dynamically created now :)


add degradation models benchmarks

Description
Added benchmarks for degradation models for SPM and DFN (build, simulate, solve) for each model option by adding model values and model as params.
Also, what should I name them?
Fixes # (issue)
Type of change
Please add a line in the relevant section of CHANGELOG.md to document the change (include PR #) - note reverse order of PR #s. If necessary, also add to the list of breaking changes.

[ ] New feature (non-breaking change which adds functionality)
[ ] Optimization (back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)

Key checklist:

[ ] No style issues: $ flake8
[ ] All tests pass: $ python run-tests.py --unit
[ ] The documentation builds: $ cd docs and then $ make clean; make html

You can run all three at once, using $ python run-tests.py --quick.
Further checks:

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added that prove fix is effective or that feature works

You should name them based on the option e.g. TimeBuildModelLossActiveMaterial

how long does it take to run now?

15 minutes


Bug: Firefox crashes when making .svg from a spectrum

@hamed-musallam Please check that ClipboardItem exists on the browser and show a message 'Your browser does not support this feature, please use Google Chorme' if not available.
Strange on Firefox it is behind flags since version 63 (we are at 72) but even activating those flags does not work. https://developer.mozilla.org/en-US/docs/Web/API/Clipboard

@lpatiny
i tested this feature at the latest firefox version and there are no problems, but yes we have to show a message if the browser does not support this feature.


Problems reading DMX depending on packet size

I've got a couple of different DMX controllers, and only one of them work with this library when I attemp to read from it. I've used the sniffer code from https://github.com/someweisguy/esp_dmx to look at what's happening, and I can see a few differences.
With the board not working, I see this in the DMX Sniffer output:
Start Code: 0x00, Size: 13, Slot 1: 0x98, Break: -1us, MAB: -1us Packet: 20.00ms
With the board that is working, I see this:
Start Code: 0x00, Size: 33, Slot 1: 0xFF, Break: -1us, MAB: -1us Packet: 9.52ms
The data written is size of the packet, the slot (DMX channel) and the packet duration in ms. I suspect the main reason why the boards are not working in this library is because of their different packet size?
The DMX Sniffer code is here: https://github.com/someweisguy/esp_dmx/tree/release/v2.0/examples/DMXSniffer

Hi @mansj ,
This will be due to the default value of
#define DMX_MIN_SLOTS 24
This requires a minimum of 24 slots/channels.

Thanks for the response @jatatech - I tried defining #define DMX_MIN_SLOTS 12, since my controller has 12 DMX channels, but there is no difference. Am I missing something here, would I need to put this definition somewhere else than at the top of my code?

Confirmed, when I change the `DMX_MIN_SLOTS´ value to 12 in the source code (LXESP32DMX.h) it works as it should. Thanks for the help @jatatech !


Install Turtles + UI in single click

Transferred to capi-ui-extension - other UI extensions also can trigger an operator installation via helm 🤔


Added underline Hover Effect on navbar items

I have Added Underline Effect on the items of Navbar

@MonalikaPatnaik , mam kindly have a look on my PR, and please merge it

Pls don't make a PR until the issue is assigned to you!
Thank you so much!


Update Invoke AST.

Addresses #387.
Removes ControlEntry and just uses control types directly.

Thanks @sgpthomas !


Update volumes.md

This pr marks in-tree GCP PD plugin as deprecated.
closes #32902

IMO it would be good to integrate the changes of #32910 (this PR) and #32911 into one single PR (and even one single commit), because they are adding the same shortcode line to 2 sections in one single file.


[GOBBLIN-807] Added TimingEventBuilder and deprecated TimingEvent

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[ ] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-XXX] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-807

Description

[ ] Here are some details about my PR, including screenshots (if applicable):

Added TimingEventBuilder that extends the GobblinEventBuilder to standardize creating and submitting GobblinTrackingEvents
Deprecated TimingEvent

Tests

[ ] My PR adds the following unit tests OR does not need testing for this extremely good reason:
Tested locally in FARO by creating timing events for Nuage API calls

Commits

[ ] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

@htran1 @ibuenros Can you take a look.


12 hour setting on clock but not on forecasts

8<------------------------ BUG REPORT -----------------------------------------
Expected behavior
Clock on top shows AM/PM with IS_STYLE_12HR setting set to true. Currently the clock shows 6:15pm. Under clock is current conditions. Under current conditions is the forecast scrolling right to left. Under the forecast is the moon information with rise and set times.
Actual behavior
The times for the forecast currently show 8:00 and 20:00 rather than 8am and 8pm. Moon rise and set times show 06:00 and 19:00 rather than 6:00am and 7:00pm.
Test code
Provide a Minimal, Complete, and Verifiable example which will reproduce the problem.
// pick one from https://github.com/esp8266/Arduino/blob/master/cores/esp8266/TZ.h
#define TIMEZONE TZ_America_New_York

// values in metric or imperial system?
const boolean IS_METRIC = false;

// Change for 12 Hour/ 24 hour style clock
bool IS_STYLE_12HR = true;

Weather Station Color version
Master code branch.
Hardware
2.8" TFT touch display with ESP8266 D1 pro
WeMos D1 Mini ESP8266 WIFI Module Board Pro 16M
240x320 2.8" SPI TFT LCD Touch Panel Serial Port Module With PBC ILI9341 2.8 Inch SPI Serial White LED Display
8<------------------------ END BUG REPORT -------------------------------------

I created a fix for this and made a draft pull request "Time period" with proposed changes please check it out

PR#128 seems to have fixed this issue. Thanks!
While we are here discussing units do you know which line controls the decimal precision of the temperature display in current and forecasts? I would prefer 65F to the 65.1F that it currently shows.

do you know which line controls the decimal precision of the temperature display in current and forecasts?

https://github.com/ThingPulse/esp8266-weather-station-color/blob/master/esp8266-weather-station-color.ino -> search for "temp"


Fix #8901 UI : Show bot user roles on bot detail page

Fixes #8901
Describe your changes :

I worked on issue #8901

Type of change :

[x] Improvement
[x] New feature

Frontend Preview (Screenshots) :

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I have commented on my code, particularly in hard-to-understand areas.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers
@open-metadata/ui

@chirag-madlani, All comments are addressed.


IndexError: list index out of range (maybe MacBook-specific problem)

Hello,
I am on a MacBook Pro and using the latest Version 4.5 of TSH.
When I try running TSH.sh from Terminal, I get an IndexError: list index out of range from line 285 of src/TSHThumbnailSettingsWidget.py, and the program does not run. I tried running the program on MacBook Air and got the same error message.
This is the error message I got:
% ./TSH.sh
Countries file updated
found thumbnail settings ! {'display_phase': True, 'use_team_names': False, 'use_sponsors': True, 'flip_p1': False, 'flip_p2': False, 'open_explorer': True, 'main_icon_path': './assets/icons/icon.png', 'separator': {'width': 5, 'color': '#18181b'}, 'thumbnail_type': './assets/thumbnail_base/thumbnail_types/type_a.json', 'foreground_path': './assets/thumbnail_base/thumbnail_types/type_a/foreground.svg', 'background_path': './assets/thumbnail_base/thumbnail_types/type_a/background.svg', 'side_icon_list': ['', ''], 'font_list': [{'name': 'Open Sans', 'type': 'Bold Italic', 'fontPath': 'Bold Italic'}, {'name': 'Open Sans', 'type': 'Bold Italic', 'fontPath': 'Bold Italic'}], 'font_color': ['#FFFFFF', '#FFFFFF'], 'font_outline_color': ['#000000', '#000000'], 'font_outline_enabled': [True, True]}
Traceback (most recent call last):
  File "/Users/jinchan/Downloads/TournamentStreamHelper-4.5/main.py", line 4, in <module>
    import src
  File "/Users/jinchan/Downloads/TournamentStreamHelper-4.5/src/__init__.py", line 1, in <module>
    from .TournamentStreamHelper import *
  File "/Users/jinchan/Downloads/TournamentStreamHelper-4.5/src/TournamentStreamHelper.py", line 775, in <module>
    window = Window()
  File "/Users/jinchan/Downloads/TournamentStreamHelper-4.5/src/TournamentStreamHelper.py", line 132, in __init__
    thumbnailSetting = TSHThumbnailSettingsWidget()
  File "/Users/jinchan/Downloads/TournamentStreamHelper-4.5/src/TSHThumbnailSettingsWidget.py", line 285, in __init__
    font_opensans_bold = QFontDatabase.applicationFontFamilies(font_id)[0]
IndexError: list index out of range

When I comment out lines 285-289, the program runs successfully. I am not exactly sure what this does to the program though.

This might be a MacBook-specific problem. Just wanted to let you know. Thanks!

Hi, thanks for pointing this out! It seems that this is old code, related to how fonts were being used before recent changes. I'll update the code removing them.


follow IRI ISSinPlace.digest() implementation

i implemented the same unit test in iri, will have a different patch later
to prove my point.
On Fri, Mar 8, 2019, 12:32 AM Thibault Martinez<EMAIL_ADDRESS>wrote:

@thibault-martinez commented on this pull request.
In common/sign/v1/tests/test_iss_kerl.c
https://github.com/iotaledger/entangled/pull/931#discussion_r263699924:

@@ -77,6 +79,41 @@ void test_key(trit_t *s, trit_t *k, size_t l, Kerl *c) {
"CFOYUCXLHLSUBAEYOTAWUNRPJFA9TSJNLBFLMZQASPTVCMTFBOQQRGGQ9MRZCJWYGBORJZQWVS"
"BLVKBVW"

+#define EXP_DIGEST                                                             \

"DQMAVYJTIIQUCDHRIZAPYKFCFBTHNDAMHLYEEIEBSR9REQBBVUQOSDWFSGPTZFNQQTVMQPVUDH" \
"DTEZVSW"

MayI ask where you found this example ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/iotaledger/entangled/pull/931#pullrequestreview-212183070,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEvLbrAyV5ViC8g6820_cu9yO8UBmr_ks5vUiABgaJpZM4biV4w
.

that is why i raised this issue, the change is to match what IRI has
implemented.
On Mon, Mar 11, 2019, 5:30 AM Thibault Martinez<EMAIL_ADDRESS>wrote:

@thibault-martinez commented on this pull request.
In common/sign/v1/iss.c.inc
https://github.com/iotaledger/entangled/pull/931#discussion_r264209259:

@@ -106,13 +106,14 @@ int _ISS_PREFIX(sig_digest)(trit_t *const dig, trit_t const *const hash,
HASH_STATE *const state) {
size_t i, j;
trit_t *sig_start = sig, *sig_end = &sig[sig_len];

for (i = 0; sig < sig_end; i++, sig = &sig[HASH_LENGTH_TRIT]) {
for (j = 0; j < (HASH_TRYTE_VAL(hash, i) - TRYTE_VALUE_MIN); j++) {

for (i = 0, sig = sig_start; sig < sig_end; i++, sig = &sig[HASH_LENGTH_TRIT]) {
for (j = (hash[i] - TRYTE_VALUE_MIN); j-- > 0;) {

It's not. It doesn't make sense to do hash[i] - TRYTE_VALUE_MIN if
hash[i] is a trit. It would mean doing {-1, 0, 1} - (-13), which is not
what we want.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/iotaledger/entangled/pull/931#discussion_r264209259,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEvLYKYdgewf1XhuU-43-DidqJN-HM3ks5vVkyBgaJpZM4biV4w
.

Closing this PR because it originated from another issue (#960) that is now fixed.
Also, ISS tests have been added since.
Thanks anyway !


feat: optimize re-render of selector middleware

Codecov Report
Attention: 37 lines in your changes are missing coverage. Please review.

Comparison is base (b7a401f) 6.16% compared to head (6868f01) 6.13%.
Report is 79 commits behind head on main.

Files
Patch %
Lines

packages/renderer/src/draw/circle.ts
0.00%
15 Missing and 2 partials :warning:

packages/util/src/lib/time.ts
11.11%
6 Missing and 2 partials :warning:

packages/core/src/middleware/selector/index.ts
0.00%
3 Missing and 3 partials :warning:

packages/renderer/src/draw/group.ts
0.00%
3 Missing and 1 partial :warning:

packages/renderer/src/draw/box.ts
0.00%
2 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff            @@
##            main    #269      +/-   ##
========================================
- Coverage   6.16%   6.13%   -0.03%
========================================
  Files         77      77
  Lines       4415    4433      +18
  Branches     873     879       +6
========================================
  Hits         272     272
- Misses      3299    3311      +12
- Partials     844     850       +6

Flag
Coverage Δ

unittests
6.13% <2.63%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

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


btf: Do not use <linux/types.h> for resolving tracepoint defs

Passing --btf should mean bpftrace does not use system headers at all.
The only exception should be if the user manually does an #include.
To that end, this patch has TracepointFormatParser use the existing
BTF infrastructure to resolve basic types we used to get from
<linux/types.h> instead of doing header inclusions.
This is particularly important in container environments where kernel
headers may not be installed.

Checklist

[x] Language changes are updated in docs/reference_guide.md
[x] User-visible and non-trivial changes updated in CHANGELOG.md

makes sense and looks good


Focusing input tag on rendering and make it keep

Use 'autoFocus' -> Focus on input while rendering
https://developer.mozilla.org/ja/docs/Web/API/HTMLSelectElement/autofocus
keeping focus: https://hatolabo.com/programming/react-focus-fixed
ref = {String} is legacy


Why is it necessary to publish node_modules for SSR?

It used to be unnecessary with webpack-based setup.
Can you please describe why exactly it is necessary now?
Thanks

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

ID: c047bdd1-1464-4398-92c6-65ab88093525
Version Independent ID: 1ea83a29-79de-272f-fea0-fb6b3ea1a444
Content: Use the Angular project template with ASP.NET Core
Content Source: aspnetcore/spa/angular.md
Product: aspnet-core
GitHub Login: @SteveSandersonMS
Microsoft Alias: scaddie

It's a known issue in newer versions of Angular: https://github.com/angular/angular-cli/issues/8616