Difference between TFLite and USB Accelerator

Hi,
I'm using Resnet18 from torchvision and doing inference on EdgeTPU.
In order to do so, I'm converting the model as following: Pytorch -> Onnx - > Keras -> TFLite -> EdgeTPU.
I compared the output of each step:
torch predictions vs onnxruntime predictions
max: 5.7220458984375e-06
std: 1.8011219253821764e-06
min: -7.331371307373047e-06
torch predictions vs keras predictions
max: 1.4781951904296875e-05
std: 4.7468447519349866e-06
min: -1.5974044799804688e-05
keras predictions vs tflite predictions
max: 0.8791558966040611
std: 0.27655993514495225
min: -0.8303738981485367
tflite predictions vs edge predictions
max: 0.484074205160141
std: 0.13129207757440303
min: -0.36305565387010574
As we can see there is a small difference between torch, onnx and keras .
There is a more significant difference between keras and tflite, but this can be explained by post training quantization.
Also, there is significant difference between tflite and EdgeTPU, which I don't understand.
Why EdgeTPU compiler creates a difference between tflite and EdgeTPU ?
Thank you in advance,
Denis
Code:
from pathlib import Path
import subprocess

import numpy as np

import torch
from torchvision.models import resnet18
from torchvision.datasets import CIFAR10
from torchvision import transforms

import onnx
import onnxruntime
from onnx2keras import onnx_to_keras

import tensorflow as tf
import tflite_runtime.interpreter as tflite

########################################################################################################################
# load cifar dataset
########################################################################################################################
test_transform = transforms.Compose([transforms.Scale(256),
                                     transforms.CenterCrop(224),
                                     transforms.ToTensor(),
                                     transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                                          std=[0.229, 0.224, 0.225])
                                     ])

test_set = CIFAR10('./data',
                   download=False,
                   train=False,
                   transform=test_transform)
test_loader = torch.utils.data.DataLoader(test_set,
                                          batch_size=1,
                                          shuffle=False,
                                          num_workers=0)

test_iterator = iter(test_loader)
test_img,  _ = test_iterator.next()

########################################################################################################################
# load resnet18 model
########################################################################################################################
model_type = "resnet18"

# load resnet 18 model
model = resnet18(pretrained=True)
model.eval()
with torch.no_grad():
    predictions = model(test_img)

########################################################################################################################
# convert torch to onnx and compare predictions to torch
########################################################################################################################
torch.onnx.export(model, test_img, f"{model_type}.onnx", input_names=['input'])

onnxruntime_session = onnxruntime.InferenceSession(f"{model_type}.onnx")
onnx_inputs = {onnxruntime_session.get_inputs()[0].name: test_img.numpy()}
onnx_predictions = onnxruntime_session.run(None, onnx_inputs)

print("torch predictions vs onnxruntime predictions")
print(f"max: {np.max(predictions.numpy() - onnx_predictions[0])}")
print(f"std: {np.std(predictions.numpy() - onnx_predictions[0])}")
print(f"min: {np.min(predictions.numpy() - onnx_predictions[0])}")

########################################################################################################################
# convert onnx to keras and compare predictions to torch
########################################################################################################################
onnx_model = onnx.load(f"{model_type}.onnx")
keras_model = onnx_to_keras(onnx_model=onnx_model,
                            input_names=['input'],
                            change_ordering=True,
                            verbose=False)
keras_model.save(f"{model_type}.h5")

keras_model = tf.keras.models.load_model(f"{model_type}.h5")
keras_predictions = keras_model.predict(test_img.numpy().transpose([0, 2, 3, 1]))

print("torch predictions vs keras predictions")
print(f"max: {np.max(predictions.numpy() - keras_predictions)}")
print(f"std: {np.std(predictions.numpy() - keras_predictions)}")
print(f"min: {np.min(predictions.numpy() - keras_predictions)}")

########################################################################################################################
# convert keras to tflite and compare predictions to torch
########################################################################################################################
converter_keras = tf.lite.TFLiteConverter.from_keras_model_file(f"{model_type}.h5")
converter_keras.optimizations = [tf.lite.Optimize.DEFAULT]
converter_keras.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter_keras.inference_input_type = tf.uint8
converter_keras.inference_output_type = tf.uint8

def representative_sspd_data_gen():
    for _ in range(100):
        img, label = test_iterator.next()
        yield [img.numpy().transpose([0, 2, 3, 1])]

converter_keras.representative_dataset = representative_sspd_data_gen
tflite_qunatized_model = converter_keras.convert()

with tf.io.gfile.GFile(str(f"{model_type}.tflite"), 'wb') as f:
    f.write(tflite_qunatized_model)

tflite_path = f"{model_type}.tflite"
tflite_quantized_interpreter = tflite.Interpreter(model_path=tflite_path)
tflite_quantized_interpreter.allocate_tensors()

input_details_tflite = tflite_quantized_interpreter.get_input_details()[0]
input_scale_tflite, input_zero_point_tflite = input_details_tflite["quantization"]
test_image_tflite = test_img.numpy().transpose([0, 2, 3, 1])
test_image_tflite = test_image_tflite / input_scale_tflite + input_zero_point_tflite
test_image_tflite = test_image_tflite.astype(input_details_tflite["dtype"])
tflite_quantized_interpreter.set_tensor(input_details_tflite['index'], test_image_tflite)

tflite_quantized_interpreter.invoke()

output_details_tflite = tflite_quantized_interpreter.get_output_details()[0]
output_tflite = tflite_quantized_interpreter.get_tensor(output_details_tflite['index'])
scale_tflite, zero_point_tflite = output_details_tflite['quantization']
output_tflite = float(scale_tflite) * (output_tflite.astype(np.float) - float(zero_point_tflite))

print("keras predictions vs tflite predictions")
print(f"max: {np.max(keras_predictions - output_tflite)}")
print(f"std: {np.std(keras_predictions - output_tflite)}")
print(f"min: {np.min(keras_predictions - output_tflite)}")

########################################################################################################################
# convert tflite to edge tpu and compare predictions to tflite
########################################################################################################################

print("compile to edge TPU")
outfile_wsl_path = "/mnt/" + Path(Path.cwd(), f"{model_type}.tflite").as_posix().lower().replace(":", "")

subprocess.call(["ubuntu1804.exe",
                 "run",
                 "edgetpu_compiler",
                 outfile_wsl_path,
                 "--show_operations"])

edge_tpu_path = f"{model_type}_edgetpu.tflite"
tflite_quantized_interpreter_edge = tflite.Interpreter(model_path=edge_tpu_path,
                                                       experimental_delegates=[tflite.load_delegate('edgetpu.dll')])
tflite_quantized_interpreter_edge.allocate_tensors()

input_details_edge = tflite_quantized_interpreter_edge.get_input_details()[0]
input_scale_edge, input_zero_point_edge = input_details_edge["quantization"]
test_image_edge = test_img.numpy().transpose([0, 2, 3, 1])
test_image_edge = test_image_edge / input_scale_edge + input_zero_point_edge
test_image_edge = test_image_edge.astype(input_details_edge["dtype"])
tflite_quantized_interpreter_edge.set_tensor(input_details_edge['index'], test_image_edge)

tflite_quantized_interpreter_edge.invoke()

output_details_edge = tflite_quantized_interpreter_edge.get_output_details()[0]
output_edge = tflite_quantized_interpreter_edge.get_tensor(output_details_edge['index'])
scale_edge, zero_point_edge = output_details_edge['quantization']
output_edge = float(scale_edge) * (output_edge.astype(np.float) - float(zero_point_edge))

print("tflite predictions vs edge predictions")
print(f"max: {np.max(output_tflite - output_edge)}")
print(f"std: {np.std(output_tflite - output_edge)}")
print(f"min: {np.min(output_tflite - output_edge)}")

Interesting, I'm not sure if we  ever tested this pipeline, there are a couple things I can think of here:

Model created from pytorch and then converts to keras -> tflite, I guess technically it's possible, but I imagine the implementation difference can play a role here.

This trick:

subprocess.call(["ubuntu1804.exe",
                 "run",
                 "edgetpu_compiler",
                 outfile_wsl_path,
                 "--show_operations"])

Again, I guess it's also technically do able, but I would definitely investigate this first. The executable was written and compiled specifically for linux, so I wouldn't trust having another variable in this big pipeline. If you don't mind paste the quantized tflite model here, I can try compiling it first on my side on an updated compiler before you evaluate it.

Could you please explain why implementation difference can play a role here ? I understand that there is a difference between PyTorch and TensorFlow, but once I moved to the TensorFlow EcoSystem, why the EdgeTPU compiler creates a difference between *.tflite and *_edge.tflite models ?

Though I attached a windows code, the difference between the models exists in Linux too.

Quantized tflite model attached resnet18.zip, it would be great if you could check it on your side, thank you !

@denissuh
To be clear, 1 is just my speculation, since the edgetpu architecture is fundamentally different than a normal CPU, the compiler should be aware of a normal tflite model, however your pipeline is much different than what we expected.
For 2, I compiled your model on my linux with a more updated compiler version, could you test this?
resnet18.tar.gz
Would you consider using our resnet50 implementation?

Hi,

My project has a more complicated pipeline, thus unfortunately I cannot use tf.keras.applications.ResNet50 at the moment.

Unfortunately, the difference between tflite and EdgeTPU still exists with the model that you've compiled.
I wondering if it can be a hardware issue. Is there a chance you could check the models with your USB Accelerator ?

Another related issue, I found that the layer that affects the most the difference between tflite and edge models is batch normalization. Specifically, when if I remove the batch normalization layer the std between tflite and edge outputs is 0.0023.
As far as I understand TFLite folds batch normalization into the conv layer. Are there any known constraints when using batch normalization ?

In general, are there any constraints (beside that the model should use only the operations that are supported by the Edge TPU) when building TensorFlow model for EdgeTPU ?
For example, is there some constraint for the numbers of filters should be power of 2 ? Is there some constraint for maximum image size ?

Thank you in advance,
Denis

Hi,

My project has a more complicated pipeline, thus unfortunately I cannot use tf.keras.applications.ResNet50 at the moment.

Unfortunately, the difference between tflite and EdgeTPU still exists with the model that you've compiled.
I wondering if it can be a hardware issue. Is there a chance you could check the models with your USB Accelerator ?

Another related issue, I found that the layer that affects the most the difference between tflite and edge models is batch normalization. Specifically, if I remove the batch normalization layer the std between tflite and edge outputs is 0.0023.
As far as I understand TFLite folds batch normalization into the conv layer. Are there any known constraints when using batch normalization ?

In general, are there any constraints (besides that the model should use only the operations that are supported by the Edge TPU) when building TensorFlow model for EdgeTPU ?
For example, is there some constraint for the numbers of filters should be power of 2 ? Is there some constraint for maximum image size ?

Thank you in advance,
Denis

Hello Denis,
There are no such constraints while building a model for edgetpu . I am attaching a new compiled model, could you check if predictions are still different with this model. Its interesting to know that Can you share us both .tflite models with and without batch norm ?
resnet18_edgetpu.tar.gz
Thanks


Add service & deployment definitions under src/main/yaml

(for better user-friendliness)

Thanks @haqer1

retest this please


#209 better drive switcher

PR Checklist:

[ ] Link to related issue
[ ] Add changelog entry linking to issue
[ ] Added tests (if needed)
[ ] (If new feature) added in description / readme

please rebase first on main, your PR contains many of the same changes

ok, good stuff! Switcher is definitely an improvement. But it's not done:

[ ] WebSocket shows disconnected on full page reload (add a test for this)
[ ] Some default drives (such as localhost) look a bit weird if they don't work. Perhaps we should hide these defaults if they are offline, or only show them if the user is in fact visiting from localhost (add a test for this)
[ ] The order of the list changes, the current one is always at the top. I think the order needs to be stable.
[ ] Maybe add the new button to the dropdown list?
[ ] If the user is not signed in, they should be told that they should, because then they can save their drives!
[ ] We need some sort of explanation on what a Drive is. This is also missing in the docs.

ok, good stuff! Switcher is definitely an improvement. But it's not done:

[ ]  WebSocket shows disconnected on full page reload (add a test for this)
[ ]  Some default drives (such as localhost) look a bit weird if they don't work. Perhaps we should hide these defaults if they are offline, or only show them if the user is in fact visiting from localhost (add a test for this)
[ ]  The order of the list changes, the current one is always at the top. I think the order needs to be stable.
[ ]  Maybe add the new button to the dropdown list?
[ ]  If the user is not signed in, they should be told that they should, because then they can save their drives!
[ ]  We need some sort of explanation on what a Drive is. This is also missing in the docs.
[ ]  The button consistency is off. The drive switcher button is round with a border, the SideBarItem buttons are rounded and filled with an overlay.
[ ]  The alignment of the rows is off. Top item has too much padding, text is not centrally aligned.

Localhost is only visible in development, localhost:5137 is just the origin so it would not look weird in production. The only case where a drive would look weird (eg, a red url) would be when a user manually adds a broken drive or other resource to their agents drives property.

The order of the list changes because it is a history of drives with a max of 5 drives. Maybe this can be better indicated by using a clock icon instead of the checkbox.

I don't think making a new drive will be that common of a use-case to have a dedicated option in the dropdown.

4 & 5) Good point

Damnit forgot to fix it again 😅

Oops


Remove inner snippets

Related to #1255 and #6923
Hide whitespace changes for easier diff

Closing and reopening to begin new build.


gsuite

DO NOT ASK FOR PHISHLETS.
DO NOT ASK FOR HELP CREATING PHISHLETS.
DO NOT ASK TO FIX PHISHLETS.
DO NOT ADVERTISE OR TRY TO SELL PHISHLETS.
EXPECT A BAN OTHERWISE. THANK YOU!
REPORT ONLY BUGS OR FEATURE SUGGESTIONS.

Gsuite phishlets does not capture mail/pass, only Cookies. what am i missing please advise.

What Gsuite Phishlets Are You Using?

it is because of the v3 upgrade by google.

@ssl-user-en can you share your google.yaml for study?

@Ineed2p247
username ok.
password and cookie not catch.
There was an error during the transport or processing of this request. Error code = 103, Path = /v3/signin/_/AccountsSignInUi/data/batchexecute

@globally0x What's the new regex to grab the password?

@globally0x What's the new regex to grab the password?

'null,[\"([^"]*)\",'

'null,[\"([^"]*)\",'
Test good in chrome windows.
It can not use to capture username & password in android.

Hello
Has it happened to you when using google phishlets that after adding users, password and receiving a second validation (code to the cell phone) after clicking on "next" it shows you this?

Estas usando la configuración predeterminada y ya esas no sirven, debes hacer los cambios y adecuarlas. Búscame en Telegram cryptopro99

@Ineed2p247 could you share full code of your phishlet pls also I'm getting "error on line 7"

@globally0x What's the new regex to grab the password?

'null,["([^"]*)",'

the main issue is it's not getting user n pass and this code shows an error during importation. Does anyone have the idea of the correct details for getting the user n pass?

@lhost25
credentials:
username:
key: 'f.req'
search: '"[null,\"([^"])\",'
type: 'post'
password:
key: 'f.req'
search: 'null,[\"([^"])\",'
type: 'post'

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

thanks sir for the details but i keeps getting this error message after those credentials

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

This is what I continue to get

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

 This is what I continue to get

What exactly do you want to achieve with the error message you getting?

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

 This is what I continue to get

What exactly do you want to achieve with the error message you getting?

 If I don't know and you know how to, why seek help here?
I will advise you to be specific so that people can help you. Your picture did not point out the help you need.
Human beings with their pride.

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

 This is what I continue to get

What exactly do you want to achieve with the error message you getting?

 If I don't know and you know how to, why seek help here?
I will advise you to be specific so that people can help you. Your picture did not point out the help you need.

 If I don't know and you know how to, why seek help here?
I will advise you to be specific so that people can help you. Your picture did not point out the help you need.
Human beings with their pride.
https://github.com/joemorning2

Seriously?you joined gith just yesterday and your first post would be to hide as some expert on evilginx or i guess you were here before with different i.d and got blocked.Before accusing me of being prideful learn first,since I showed you what the problem was you returned to your shell and hide isn't it?Give me a break and allow people with know how to contribute

Who has a working Google phishlet

@lhost25 credentials: username: key: 'f.req' search: '"[null,"([^"])",' type: 'post' password: key: 'f.req' search: 'null,["([^"])",' type: 'post'

This doesn't seem to work

@rhks yes it's not working

Thanks to y'all for the contribution , i have a working phishlet now, i will be closing my comment

Thanks to y'all for the contribution , i have a working phishlet now, i will be closing my comment

Please I can we also make it work presently is not capturing username but pass and cookies

Thanks to y'all for the contribution , i have a working phishlet now, i will be closing my comment

Do you mind sharing your working phishlet

Estas usando la configuración predeterminada y ya esas no sirven, debes hacer los cambios y adecuarlas. Búscame en Telegram cryptopro99

He is ripper. Don't trust him. He ask you 100$ then after he block you.

@rhks email<EMAIL_ADDRESS>

@rhks email<EMAIL_ADDRESS>

Hello everyone, I'm having a problem that I'm not understanding well what can happen.
I am using this version of phishets. Running the program in localhost mode works very well all three steps:
a) user
b) password
c) code by sms
d) cookie capture
The problem occurs when I run the program in real mode on a server. Although I go through the steps of users, password and code by sms; in the last accept it throws the following error:

Hello! If you were already able to resolve your doubts and achieve your goals, close the issue so that we know which ones are pending.
Thank you!


Gitlab build with code snippet and linenostart fails

With the latest version of the Relearn theme I ran into a strange problem that only happens in the Gitlab build of a Hugo project that uses the theme. The Gitlab setup is the easiest from the docs:
image: registry.gitlab.com/pages/hugo/hugo_extended:latest

variables:
  GIT_SUBMODULE_STRATEGY: recursive

pages:
  script:
    - hugo
  artifacts:
    paths:
      - public
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

In one template I have some code snippets that specify a starting line number
```yaml {linenos=inline,linenostart=50}
# FINAL BUILD
FROM ubuntu-nginx-php:3.0.2-fpm8.2 AS prod
...

When building this fails with an error

Error: error building site: "/builds/nyyoy3xx/0/xxx/content/dev/boilerplate/docker/_index.md:149:1": execute of template failed: template: _default/_markup/render-codeblock.html:1:4: executing "_default/_markup/render-codeblock.html" at <partial "shortcodes/highlight.html" (dict "page" .Page "attributes" .Attributes "content" .Inner "options" .Options "type" .Type)>: error calling partial: "/builds/nyyoy3xx/0/xxxx/themes/relearn/layouts/partials/shortcodes/highlight.html:83:15": execute of template failed: template: partials/shortcodes/highlight.html:83:15: executing "partials/shortcodes/highlight.html" at <highlight $content $type $params>: error calling highlight: invalid Highlight option: linenostart

I couldn't really understand what the problem was and had to remove the linenostart specification for this to work. It is still mentioned in the docs and I don't see a relevant change in the highligh shortcode partial that would create the issue.

I can't reproduce this. Without further information, your Hugo version might be outdated. The theme requires 0.112.4 at least.

Seems to be an issue with Hugo 0.121. Or some change I yet have to discover. It's also not working without the theme's shortcode implementation (stock Hugo).

Strange. I'll need to investigate. The plain Hugo new example works.

Until this is fixed you could stay with the 0.120.x releases.

Thank you, this works. I dug into the 0.121 release notes but didn't see anything that could be relevant. There are no recently closed bugs that seem to relate to this. There is an open bug since 2021 that says this could relate to the Chroma lexer or fallback lexer https://github.com/gohugoio/hugo/issues/8824

Correction, it does not run into an error but it also does not render the script block in 0.121. The element does not exist in the output; not even hidden, in its place there is no HTML code created. So, this has to be something that has existed longer and only now creates the error.

This is now fixed. Something must have changed internally in Hugo. I suspect it's the new Go version.


Ability to See Ladder for Traded Data

Hey @mberk , thanks a lot for this library. I am using that for personal project and quite curious to see is it possible to also visualize traded amounts?
I am adding one example as attached. We can see traded amounts and also graph which shows how last price traded is changing.

Thanks for the feedback. Did you know that individual runner books are automatically visualised as ladders, for example:
import betfairviz
betfairviz.EXAMPLE_RUNNER_BOOK

Although this doesn't show the graph. I can think about adding this. Any other feedback? I don't think this feature has been widely used so any comments you might have would be appreciated


Add header that's missing from the design

The designs include a 3rd header bar with broad categories in them (surveys, messages, etc) but it's not on the site yet.  This includes that bar and the logic required to show which one is active.

Codecov Report

Merging #47 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master     #47   +/-   ##
======================================
  Coverage    99.7%   99.7%
======================================
  Files          20      20
  Lines         337     337
======================================
  Hits          336     336
  Misses          1       1

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 7eb7158...89c6224. Read the comment docs.


As an admin I want to Manage Checkout

As an admin I want to manage Checkout settings so that I can manage Payments, Taxes, and Address Validation for my shop.
Checkout Detail Page Navigation - I want to navigate between separate tabs to manage Payments, Taxes, and Address Validation
Payments https://www.figma.com/file/vWot2cXXgjcsLpMq4SAX90/Kinetic?node-id=1275%3A18319

I want to Enable or Disable payment method plug ins using a toggle

Taxes https://www.figma.com/file/vWot2cXXgjcsLpMq4SAX90/Kinetic?node-id=1275%3A18359

I want to be able to designate a Primary Method and a Fallback Method for my tax plug ins

Address Validation
Main https://www.figma.com/file/vWot2cXXgjcsLpMq4SAX90/Kinetic?node-id=1275%3A18412
Edit https://www.figma.com/file/vWot2cXXgjcsLpMq4SAX90/Kinetic?node-id=1275%3A18452

I want to see a list of my address validation plug ins and be able to edit the countries in which those address validation plug ins are used.
I should not be able to use two different validation services in a single country
If I identify a specific country for a plug in, that should override any plug ins that are assigned globally

broken into individual tickets


Add tests for data transfer to test suites

Description
This pull request contains tests for data transfer via TLS as a stream (Testing of datagram transfer will be added in other PR).
Status
READY
Requires Backporting
NO
Migrations
NO
Additional comments
Any additional information that could be of interest
Todos

[ ] Tests
[ ] Changelog updated

Looks like this needs some CI fixes


Prediction showing incorrectly as "Admin"-sourced Annotation when Viewing all annotations a specific way

v1.0.1, mac 11.2.3, python 3.8.2
Annotation and Prediction, viewed via "View all annotations" option, with a filter applied, show just the prediction twice (one of the annotations, the one on the left, saying it's by Admin and an ID). If getting to labeling by just clicking a task instead of the Label button, expected behavior appears. Attached is a video of the bug. In the slack for label studio are the XML template and the data to reproduce this. I can't attach XML or JSON objects here.
https://user-images.githubusercontent.com/1494871/117245744-edee9100-ae00-11eb-8cf7-091aa101d834.mp4

Fixed since LS 1.1.


Changelog does not document removal of create: option for resource

While converging a node whose run list includes a recipe which runs the logrotate_app resource with the create: option, in version 1.9.2, it sets the correct mode/user/group. When a colleague tried converging, it downloaded v2.1.0. The logrotate file created had the incorrect mode/user/group (644/root/root instead of what was specified in create:).
I checked the cookbook and it seems that property has been removed from the resource definition. This is a breaking change that is not documented in the changelog or README. It would be helpful if it were.

My mistake, I was confused on what that option was doing.


tikzplotlib with matplotlib 3.8.* not working

When using matplotlib 3.8.* tikzplotlib is throwing an error when its getting imported.
common_texification got removed with matplotlib 3.8.0 and can therefore not be found: https://fossies.org/linux/matplotlib/doc/api/prev_api_changes/api_changes_3.8.0/removals.rst
Minimum (non)-working example:
from matplotlib import pyplot as plt
import tikzplotlib

Error:
Traceback (most recent call last):
File "/home/random/Bachelor/project/analyze.py", line 5, in
from src.analyzer import Analyzer
File "/home/random/Bachelor/project/src/analyzer.py", line 20, in
import tikzplotlib
File "/home/random/Bachelor/project/.venv/lib/python3.10/site-packages/tikzplotlib/init.py", line 5, in
from ._save import Flavors, get_tikz_code, save
File "/home/random/Bachelor/project/.venv/lib/python3.10/site-packages/tikzplotlib/_save.py", line 11, in
from . import _axes
File "/home/random/Bachelor/project/.venv/lib/python3.10/site-packages/tikzplotlib/_axes.py", line 3, in
from matplotlib.backends.backend_pgf import (
ImportError: cannot import name 'common_texification' from 'matplotlib.backends.backend_pgf' (/home/random/Bachelor/project/.venv/lib/python3.10/site-packages/matplotlib/backends/backend_pgf.py)

The search function would not show the the other issue pertaining to thsi problem: https://github.com/nschloe/tikzplotlib/issues/559


ddl2cpp: create table [if not exists]

Not terribly important, but I rather like having "if not exists" in the schema.
Sure one can sed that away - but that makes building uglier.
Some something like this? (sorry, not a proper pull request :-)
181a182
> ddlIfNotExists = Optional(Group(ddlWord("IF") + ddlWord("NOT") + ddlWord("EXISTS")).setResultsName("ifNotExists"))
183c184
< createTable = Group(ddlWord("CREATE") + ddlWord("TABLE") + ddlName.setResultsName("tableName") + "(" + Group(delimitedList(ddlColumn)).setResultsName("columns") + ")").setResultsName("create")
---
> createTable = Group(ddlWord("CREATE") + ddlWord("TABLE") + ddlIfNotExists + ddlName.setResultsName("tableName") + "(" + Group(delimitedList(ddlColumn)).setResultsName("columns") + ")").setResultsName("create")
217c218
< createTable = Group(ddlWord("CREATE") + ddlWord("TABLE") + ddlName.setResultsName("tableName") + "(" + Group(delimitedList(ddlColumn)).setResultsName("columns") + ")").setResultsName("create")
---
> createTable = Group(ddlWord("CREATE") + ddlWord("TABLE") + ddlIfNotExists + ddlName.setResultsName("tableName") + "(" + Group(delimitedList(ddlColumn)).setResultsName("columns") + ")").setResultsName("create")

This somehow flew under the radar...
Yes, that's probably a good idea. I'll look into it.

Added and pushed to develop.
Thanks!


test(client): fix invalid error instances when using $connect() or datasource override

This PR closes https://github.com/prisma/team-orm/issues/646.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Fix UI and backend paths with subpath

I'm not sure if this is an ideal fix for this, but it seems to work for me. If you have another idea just let me know.
Closes #1798
Closes #1773

Some links in js still have no rooturl, and this pr still doesn't solve the problem for me.

Can you give the exact issues? Were are links that do not work for you?

https://github.com/woodpecker-ci/woodpecker/issues/1798#issuecomment-1573191668

@Seryta I tried fixing them in 0ce8f1f. It's possible that I missed something, can you test again?

this is the latest situation: https://github.com/woodpecker-ci/woodpecker/issues/1798#issuecomment-1573233074

Are there any errors in the browser/JS console?

Oh, yes, the error is as follows:

There may also be a problem with another file, web/src/lib/api/index.ts
https://github.com/woodpecker-ci/woodpecker/blob/71d7a467f904eb83432227450693f1b66b6075dd/web/src/lib/api/index.ts#L290
https://github.com/woodpecker-ci/woodpecker/blob/71d7a467f904eb83432227450693f1b66b6075dd/web/src/lib/api/index.ts#L303

Can you try again with 75ef337?

Now the content can be displayed, but as I said above, there is a problem with /stream/events access, and /assets/logo-c3ebba12.svg or /assets/logo-c3ebba12.svg, etc., are still Links in index-da1e4087.js do not have root_url.
In addition, what is more serious is that when performing oauth2 authorization authentication, the link to jump is /authorize instead of /ci/authorize, and the link to jump after authorization is not /ci but /

I'm using gitea, and the authorization jump link is indeed example.com/ci/authorize, but it doesn't work, I'm not sure where the problem is

@Seryta Can you please check again with the latest commit. I tried to fix both streaming and redirecting, not sure if I found everything though.

@qwerty287 It's great, but there are still some problems with some pages. First, the login access is still /authorize instead of /ci/authorize, and secondly, /assets still has no root_path after logging in.

After manually modifying the url to access /ci/authorize, there is no problem with the link that jumps back after the authorization is successful.

Codecov Report
Patch and project coverage have no change.

Comparison is base (317bd24) 39.00% compared to head (8dcb729) 39.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1799   +/-   ##
=======================================
  Coverage   39.00%   39.00%
=======================================
  Files         166      166
  Lines       10346    10346
=======================================
  Hits         4035     4035
  Misses       6047     6047
  Partials      264      264

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@qwerty287 shall we squash the commits into a single one? it is kind of messy

@Seryta I looked again for usages without root path, can you try again with the latest commit? I'm really sorry to bother you for testing this.

Sorry, I just saw it today, I tested it, and the problem mentioned above still exists.

Automatically access /authorize instead of /ci/authorize when logging in for authorization
After manually accessing /ci/authorize, there is a problem with accessing the following links:

https://example.com/ci/assets/logo.svg?url, 404
https://example.com/assets/Repos-2587f056.js, 404
https://example.com/assets/ListItem.vue_vue_type_script_setup_true_lang-dc8e4876.js, 404
https://example.com/assets/Scaffold.vue_vue_type_script_setup_true_lang-4e0e2911.js, 404
https://example.com/assets/FluidContainer.vue_vue_type_script_setup_true_lang-df900462.js, 404
https://example.com/assets/useRepoSearch-2903cf6a.js, 404

@liyimeng pulls are squash-merged anyway ...

@liyimeng pulls are squash-merged anyway ...

do you mean it will squashed at merge automatically, cool !

For fronted part that needs to support subpaths I compile in vite with base path <BASE_PATH> and than on app startup replace it with configured value in all static files.

html:
<img class="w-48 h-48" src="../assets/logo.svg?url">

login screen is still a white page :/

just as an idea ... instead of this "catch-all" aproach ... what if we just introduce a "basePath" that is "" by default ... and can be changed so it will reflect this automatically ... and on the UI site we can use relative paths instead of absulte ... that should solve it ?

Unfortunately, this is not possible because of Vite's compiling system which assumes that you use a prefix that is set at compile time. I didn't see any option to change this.

Usually I use something like {{BASEPATH}} in vite and then either with shell script in nginx docker image or with go code if embedded in binary replace it with actual subpath or / on start in index.html and .js/.css files.

Unpopular opinion: Remove any support for subpath deployments, as this always leads to problems. What are the benefits? Nowadays you can get certificates for free, and subdomains are not charged for in most cases either.

To counter that, I'm very eager to see this working because I personally use Tailscale Funnel to expose some services to the internet. Tailscale Funnel only exposes a single subdomain for a machine, and so everything has to be routed with subpaths. Other services I use handle this fine (e.g Gitea/Forgejo, n8n etc) and not supporting it is how I ended up opting for Gitea Actions instead. I can guarantee you I'm not the only one in this sort of position (and heck, maybe it's just for aesthetic purposes, but regardless, I believe that is it something that should & can work).


Escape angle brackets wrapping place holders

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thanks for fixing those brackets! You'll see the change go live this morning.

(ref. Appendix H: show hidden placeholders (ref fa23beb) ) #5017


New: Query features with Arcade expression

Description
This PR implements Query features with Arcade expression in Display information category.
Branch: URL_TO_BRANCH
Linked Issue(s)

common-samples/issues/#3611

@mhdostal Hi Mark, please review this since Ting's on vacation. Thanks!

Sometimes when I consecutively identify the features, the evaluation doesn't end. No output in console either. Do you also see this? If so we may need to file an API bug.

I made some changes and haven't been able to reproduce this the last few times I tested the sample. Please let me know if anyone else continues to see this behavior.

Thanks @sbaskaran! I made some changes and responded to some of your comments.

As Gela changed the data, let's use the new data in this sample: 539d93de54c7422f88f69bfac2aebf7d

The AGSArcadeEvaluator.evaluate(withProfileVariables:completion:) method doesn't call back which results in the issue mentioned above. Shall we add a test in iOS SDK to consecutively tap on a same police beat, say 25 times, to see if it hangs?

Hi @mhdostal @philium can we get your input about testing this in the SDK?

The AGSArcadeEvaluator.evaluate(withProfileVariables:completion:) method doesn't call back which results in the issue mentioned above. Shall we add a test in iOS SDK to consecutively tap on a same police beat, say 25 times, to see if it hangs?

Hi @mhdostal @philium can we get your input about testing this in the SDK?

@vquach2404 If you can create a stand-alone bit of code which reproduces the problem, that would be best.  Then create an issue in the runtime/cocoa repo.

@vquach2404 If you can create a stand-alone bit of code which reproduces the problem, that would be best. Then create an issue in the runtime/cocoa repo.

Created at cocoa/issues/11185

After discussion with Ting, we've concluded that the bug is not due to an error in the sample. There's not much we can do to fix the issue so we'll be moving on with this PR and putting it into verification.

I see that there is an open issue for the identify getting hung, but for me rather than randomly or eventually, it is happening with every second identify.

That's quite unexpected... cannot repro at my end. Though I'm getting similar hang-rate, approx. once in 5 evaluations.

If it is that bad should we be merging it now?

I'm hoping it could get resolved before U15, so I feel we can proceed because it's not a samples problem. I'd like to hear others thoughts though.

I see that there is an open issue for the identify getting hung, but for me rather than randomly or eventually, it is happening with every second identify. If it is that bad should we be merging it now?

@saratchandrakarumuri @yo1995  Thanks for your input! I just spoke to Trevor about this. We'll put this PR on pause for now until we discuss this during healthcheck on Friday. We're still aiming to get this sample in for U15 but hopefully this can be resolved before we merge the sample.

Thanks for your help everyone!


⚠ Empornium has degraded performance

In 8d996e6, Empornium ($EMP) experienced degraded performance:

HTTP code: 502
Response time: 1354 ms

Resolved: Empornium performance has improved in 1745b1b after 13 minutes.


⚠ GitLab Server has degraded performance

In 0913c68, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 13495 ms

Resolved: GitLab Server performance has improved in 61199aa.


Something wrong with the metadata

Could you help me? When I run the clip-retrieval and the metadata shows containing folders name and files name after run reorder-embeddings example-key --metadata-folder ./img_emb_test/metadata, how can I save the metadata without containing folders name?

Looks like you don't have any file called {000000}.tar
Maybe you mean 000000.tar or {000000..000005}.tar ?


Support both TS and React

Hi, we recently use DOCZ to render our compony's React components document and I know that if I add typescript: true to doczrc.js, DOCZ would be enabled to render tsx componets' MDX correctly, but it will not be able to compile React component written with .js postfix.
(Our React components have both components with .js and .tsx.)
Can you support this kind of request? Thank you!

Are you sure this does not work? I just tried this and it seems to work.
Here is my doczrc.js:
export default {
  indexHtml: './src/components/misc/DoczIndex.html',
  typescript: true,
}

In my project, I have both, ".js" components and ".tsx" components and both are documented in "*.mdx" files. When I run yarn docz:dev everything seems to work fine.

when set typescript : true ,the Props dosen't render , with .js and .tsx


Add ponder extension to the curated list

https://github.com/scaffold-eth/create-eth-extensions/pull/12 was merged.

oh damn, again, wrong base


Fix bugs on *nix (Linux in particular)

With these changes, all of the Sockets tests except those that are (a) platform-specific, or (b) excluded due to differences in dual-stack semantics are passing on Linux.

@CIPop PTAL at the Windows + test changes; @stephentoub PTAL at the cross-plat changes.

I should point out that the performance tests don't yet run, as they contain Windows-specific code. I'm working on fixing this at the moment.

I'm going to close this PR and split it into multiple PRs: one for the tests, one or two for some of the more significant *nix changes, and one for the multiple-connect change. The lattermost may have to wait until the PRs for the earlier *nix changes are merged, as it builds upon them.


Volume not rendering after render settings or viewport shading modified

The world volume isn't rendering after render settings or viewport shading has been modified. To see the volume I have to update the world volume settings
Blender 2.92
LuxCore 2.5
https://user-images.githubusercontent.com/43151199/118545518-ffb42a80-b756-11eb-9164-470d1ddfd4f8.mp4
https://user-images.githubusercontent.com/43151199/118545525-004cc100-b757-11eb-8f7a-f6c7c7f9d99d.mp4

Can you post a test scene ? I'm not sure to understand the problem.

I just made a scene and was able to replicate the problem. But after saving and reopening the same scene I was unable to replicate the issue.
I tested it again with a new scene and the bug is there but not after saving and reopening the scene. This might make it difficult to share a repro scene.

hopefully this screen capture helps. I noticed changing selection in the viewport is enough to get the volume to render again.
Basically if i change a render setting the volume is no longer rendered in the viewport. If modify the volume or change my selection in the viewport the volume will "come back" and render. I would expect the volume to always be rendering as I change render settings
https://user-images.githubusercontent.com/43151199/119226549-f84fa100-bb09-11eb-8414-237b6183bbb5.mp4


[BUG]: [sol-dev | when the status is undelivered and when we click on that, the "Delivery status and details" pop up screen appears ]

Describe the bug
when the status is undelivered and when we click on that, the "Delivery status and details" pop up screen appears (court staff role)
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
https://jam.dev/c/ecbf3c21-18dd-4cc0-bef8-a5a17d9b5555
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Tested, working fine in uat
Attaching jam video for reference: https://jam.dev/c/f4ffc284-6233-4f7c-add5-0eaa16e3f0b3


Inform about the number of results return by a query in the editor

I think it would be useful to have information about the number of rows return by any query in the editor.
I don't know about the internals, and probably being naive here, but if you have the results of the query in something like a ResultSet, you could include the ResultSet element's count in the response, along with the results.

There has been no activity on this issue for more several months. We are closing it. If you think this still needs to be addressed please open a new issue.


Which version of ally which version of social API supported

We use ally version 2.0.4 with adonisjs 4.1
Recently, Facebook sends an alert about Graph API v3.2 at the end of life. We need to migrate to the next API version but in ally documentation which version supported is not specified.

Feel free to create a PR for the changes in the legacy branch

Closing since no response from the issue reporter and not actionable as well


Could not find directory in config for gatk

Running bcbio on the same cluster as before, and the base recalibration step dies with the following:

[2016-03-24T09:40Z] Assigned coverage as 'genome' with 89.8% genome coverage and 0.0% offtarget coverage
[2016-03-24T09:40Z] Recalibrating ['', 'HCC1143_NORMAL'] with GATK
Traceback (most recent call last):
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/tool/bin/bcbio_nextgen.py", line 226, in
    main(**kwargs)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/tool/bin/bcbio_nextgen.py", line 43, in main
    run_main(**kwargs)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 39, in run_main
    fc_dir, run_info_yaml)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 82, in _run_toplevel
    for xs in pipeline(config, run_info_yaml, parallel, dirs, samples):
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 130, in variant2pipeline
    samples = run_parallel("postprocess_alignment", samples)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/distributed/multi.py", line 28, in run_parallel
    return run_multicore(fn, items, config, parallel=parallel)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/distributed/multi.py", line 86, in run_multicore
    for data in joblib.Parallel(parallel["num_jobs"])(joblib.delayed(fn)(x) for x in items):
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 804, in __call__
    while self.dispatch_one_batch(iterator):
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 662, in dispatch_one_batch
    self._dispatch(tasks)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 570, in _dispatch
    job = ImmediateComputeBatch(batch)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 183, in __init__
    self.results = batch()
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 72, in __call__
    return [func(*args, **kwargs) for func, args, kwargs in self.items]
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/utils.py", line 51, in wrapper
    return apply(f, *args, **kwargs)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/distributed/multitasks.py", line 55, in postprocess_alignment
    return sample.postprocess_alignment(*args)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/sample.py", line 194, in postprocess_alignment
    data = _recal_no_markduplicates(data)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/sample.py", line 200, in _recal_no_markduplicates
    data = recalibrate.prep_recal(data)[0][0]
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/variation/recalibrate.py", line 41, in prep_recal
    broad_runner = broad.runner_from_config(config)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/broad/__init__.py", line 411, in runner_from_config
    config_utils.get_program(program, config, "dir"),
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/config_utils.py", line 186, in get_program
    return _get_program_dir(name, pconfig)
  File "/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/data/anaconda/lib/python2.7/site-packages/bcbio/pipeline/config_utils.py", line 237, in _get_program_dir
    raise ValueError("Could not find directory in config for %s" % name)
ValueError: Could not find directory in config for gatk

GATK is installed with the --toolplus option, is in my path, but still not found somehow.

[esebesty@node012 ~/scratch/bcbio_run/single-pair-cineca/work]$ which gatk-framework
/pico/home/userexternal/esebesty/work/bcbio-20160314/bcbio/tool/bin/gatk-framework

Endre;
Sorry for the problems and confusion with GATK. gatk-framework is the free tools in GATK that we package up to make them easier to use, so is separate from the custom installed GATK you need here with the academic-only tools like recalibration.
Practically, the GATK install you need happens through --toolpus, so something has apparently gone wrong there so that bcbio can't find the GATK jar. The jar should be present in:
/path/to/bcbio/toolplus/gatk

and the specification of this directory in:
/path/to/bcbio/galaxy/bcbio_system.yaml

Do those look correct? If not, re-running with --toolplus might be a good approach. Happy to help debug more if this doesn't resolve it.

Yes, these seem to be correct. GenomeAnalysisTK.jar is in

/pico/work/try16_EMUTPRED/bcbio-20160314/bcbio/data/toolplus/gatk/3.4-46-gbc02625

and this path is present in the yaml file.

Turns out my yaml config was wrong. I used

bcbio_nextgen.py resources.yaml samples.yaml -t local -n 8

and in the resources.yaml file I only had

resources:
  default:
    cores: 8

but this lead to all other config options being empty, so GATK was not found. I guess I need to specify everything myself in the resources.yaml file or modify the bcbio_system.yaml file.

Endre;
Thanks for following up on this and identifying the underlying problem. That's exactly right, if you use a different resources.yaml file is don't add to the system configuration but uses that instead. If you want to change certain parameters for a run you can add a resources block into your sample YAML file:
https://bcbio-nextgen.readthedocs.org/en/latest/contents/configuration.html#sample-or-run-specific-resources
Hope this gets things running cleanly for you.


Bad completion ranking when VS Code re-ranks client-side

Noticed while looking at https://github.com/microsoft/vscode/issues/178049:

Here I have typed "center". What I really want is "CrossAxisAlignment.center", but without https://github.com/microsoft/vscode/issues/127516 I understand this will never be at the top.
However, there are a number of items that are appearing above it that just don't seem like better text matches, such as:

combineKeyEventResults - this doesn't even include "center" (only two letters are highlighted)
CustomElementRegistry - this contains the characters from center, but since some are uppercase and my query is lowercase, this does not seem like a better choice than something that contains the literal string "center" in lowercase

In the first case, combineKeyEventResults gets a rank of -5, but the one I want a rank of -12:

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!

That's fair, but shouldn't there also be some bias for exact substring matches over letters being spread throughout the word (not even matching the caps)?
I understand changing the ranking is always risky, but this feels like quite a bad experience for completions with prefixes (enums and import aliases) where the user might want to just type the last segment of a multi-segment identifier.


Automated Package Upgrade

:tada: This PR is included in version 12.4.63 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[Android] builds will likely break on RN 0.75 / Expo 52

Hi,
Just letting the maintainers of this library know that the enableJetifier option will be removed from upstream React Native / Expo:
https://github.com/facebook/react-native/commit/14ccf6bc9c40a51e913bb89a67b114f035bf77cd
https://github.com/expo/expo/commit/3774717917aeb37e66bc53902abd73fefaa867a7#diff-c1abe9eea32a8e683dbea2f18a322cc0b8c5a4ce1a8da1719c6a9ddf29f79e3fL28
Because the enableJetifier option is removed, the following lines:
https://github.com/dooboolab-community/react-native-iap/blob/561586988df9bf9b282f7fca410d2c4eb25cf587/android/build.gradle#L171-L174
Resolves in a bare Expo SDK 51 app as the following:
+--- project :react-native-iap
|    +--- com.android.support:support-annotations:28.0.0
|    +--- com.android.support:customtabs:28.0.0

Which results in the following error:
> Task :app:processDebugMainManifest FAILED
/home/expo/workingdir/build/android/app/src/debug/AndroidManifest.xml:28:18-86 Error:
   Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.12.0] AndroidManifest.xml:28:18-86
   is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
   Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:6:5-162 to override.

For context, earlier this week I had run in to this issue after Expo deployed an update to their bare native template that included the removal of enableJetifier, but it was later reverted because of the above build issue mentioned here: https://github.com/expo/expo/issues/30725

@jamsch FYI, I tried to remove the line "supportLibVersion" in android/build.gradle, that can fix the build broken

@leaguefun I ran into the same problem on RN 0.75.2 and removing the supportLibVersion really fixed the build. However, it seems to be something important, can we just get rid of it?

Same error
Maybe someone has information about supportLibVersion filed??

diff --git a/android/build.gradle b/android/build.gradle
index e4a79ccdf9ea72bf44f82fccdeb2162a06266109..db64cfcf212c09756fcf26aea8077282592f7f86 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -169,22 +169,17 @@ dependencies {

   amazonImplementation  "com.amazon.device:amazon-appstore-sdk:$amazonSdkVersion"

-  if (supportLibVersion && androidXVersion == null) {
-    implementation "com.android.support:support-annotations:$supportLibVersion"
-    implementation "com.android.support:customtabs:$supportLibVersion"
-  } else {
-    def defaultAndroidXVersion = "1.2.0"
+  def defaultAndroidXVersion = "1.2.0"

-    if (androidXVersion == null) {
-      androidXVersion = defaultAndroidXVersion
-    }
+  if (androidXVersion == null) {
+    androidXVersion = defaultAndroidXVersion
+  }

-    def annotationVersion = androidXAnnotation ? androidXAnnotation : androidXVersion
-    def browserVersion = androidXBrowser ? androidXBrowser : androidXVersion
+  def annotationVersion = androidXAnnotation ? androidXAnnotation : androidXVersion
+  def browserVersion = androidXBrowser ? androidXBrowser : androidXVersion

-    implementation "androidx.annotation:annotation:$annotationVersion"
-    implementation "androidx.browser:browser:$browserVersion"
-  }
+  implementation "androidx.annotation:annotation:$annotationVersion"
+  implementation "androidx.browser:browser:$browserVersion"
 }

 if (isNewArchitectureEnabled()) {
diff --git a/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt b/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt
index c1bc5afdea0d61629c630b73c6cb08f25eaf49a1..ffaa969311e17e725bdc1133665245cdc05da22f 100644
--- a/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt
+++ b/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt
@@ -37,7 +37,7 @@ fun Promise.safeReject(
     throwable: Throwable?,
 ) {
     try {
-        this.reject(code, message, throwable)
+        this.reject(code ?: "", message, throwable)
     } catch (oce: ObjectAlreadyConsumedException) {
         Log.d(TAG, "Already consumed ${oce.message}")
     }

I create this patches, this can fix the build error when use expo 52 & reactNative 0.76

I'm testing the SDK 52.0.0-preview.12 and RN 0.76.1 and can confirm that the Android build is broken
[RUN_GRADLEW] /private/var/folders/5p/v8tzckhs3958w1zth99dtlbc0000gp/T/eas-build-local-nodejs/95e05321-767b-41ec-8305-0834978db28c/build/packages/munity-app/android/app/src/main/AndroidManifest.xml:28:18-86 Error:
[RUN_GRADLEW] 	Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.13.1] AndroidManifest.xml:28:18-86
[RUN_GRADLEW] 	is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
[RUN_GRADLEW] 	Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:27:3-55:17 to override.

...

[RUN_GRADLEW] FAILURE: Build completed with 2 failures.
[RUN_GRADLEW] 1: Task failed with an exception.
[RUN_GRADLEW] -----------
[RUN_GRADLEW] * What went wrong:
[RUN_GRADLEW] Execution failed for task ':app:processReleaseMainManifest'.
[RUN_GRADLEW] > Manifest merger failed with multiple errors, see logs
[RUN_GRADLEW] * Try:
[RUN_GRADLEW] > Run with --stacktrace
[RUN_GRADLEW] option to get the stack trace.
[RUN_GRADLEW] > Run with --info or --debug option to get more log output.
[RUN_GRADLEW] > Run with --scan to get full insights.
[RUN_GRADLEW] > Get more help at https://help.gradle.org.
[RUN_GRADLEW] ==============================================================================
[RUN_GRADLEW] 2: Task failed with an exception.
[RUN_GRADLEW] -----------
[RUN_GRADLEW] * What went wrong:
[RUN_GRADLEW] Execution failed for task ':app:mergeReleaseResources'.
[RUN_GRADLEW] > A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
[RUN_GRADLEW]    > Resource compilation failed (Failed to compile values resource file /private/var/folders/5p/v8tzckhs3958w1zth99dtlbc0000gp/T/eas-build-local-nodejs/95e05321-767b-41ec-8305-0834978db28c/build/packages/munity-app/android/app/build/intermediates/incremental/release/mergeReleaseResources/merged.dir/values/values.xml. Cause: java.lang.IllegalStateException: Can not add resource (com.android.aaptcompiler.ParsedResource@60d70919) to table.). Check logs for more details.
[RUN_GRADLEW] * Try:
[RUN_GRADLEW] > Run with --stacktrace option to get the stack trace.
[RUN_GRADLEW] > Run with --info or --debug option to get more log output.
[RUN_GRADLEW] > Run with --scan to get full insights.
[RUN_GRADLEW] > Get more help at https://help.gradle.org.
[RUN_GRADLEW] ==============================================================================
[RUN_GRADLEW] BUILD FAILED in 8m 57s

Should be fixed on latest version

@jamsch Where/how is this issue addressed? Currently, the latest is of react-native-iap is 12.15.7 (which I'm using) , but I'm receiving the error mentioned above.
Here's the simplest way I reproduced the issue:
npx<EMAIL_ADDRESS>StickerSmash
cd StickerSmash
npx expo prebuild --platform android
# confirmed everything works by running `npx expo run:android`
npx expo install react-native-iap
npx expo prebuild --platform android
# checked node_modules/react-native-iap/package.json lists<EMAIL_ADDRESS>npx expo run:android
# fails with error you mentioned in the issue description

@benawad I can see how that would work. The project can clearly depend on either androidx or support library - if it's working for you at all, I would not expect any issue. That change you referenced will be at the expense of compatibility (anyone that still depends on the support lib).
The check you're deleting in favour of an explicit dependency is assuming the support lib when supportLibVersion is defined (and androidx version is not set), but the expo config plugin always adds that definition. I expect the necessary patch will be either:

to make the addition conditional based on a plugin config arg
remove it entirely, and rely on the referenced property: https://github.com/hyochan/react-native-iap/blob/22ac087568762c5921b112b1147d509b9f962a4b/android/build.gradle#L153

react-native 0.76.2 react-native-iap ^12.15.2

Updating to 12.15.7 did not solve this problem. Why is the issue closed before it is actually solved?

Has this issue been resolved? I have been unable to find the cause, and I am in urgent need to debug the Android payment function.

solved:
react-native-iap/android/build.gradle

def supportLibVersion = getExtOrDefault("supportLibVersion")
#maybe useful

android/gradle.properties
android.enableJetifier=true
prebuild, clean gradlew & cache
DONE

I had exactly the same problem.
The problem was with the react-native-iap library.
Since I didn't use it in my project, I uninstalled it.
I had it installed for future integration but for now I will look for another option.
RN: 0.76.3
Expo: 52.0.11

solved:
react-native-iap/android/build.gradle remove def supportLibVersion = getExtOrDefault("supportLibVersion") #maybe useful
android/gradle.properties android.enableJetifier=true
prebuild, clean gradlew & cache
-------UPDATE Correction, it has not been resolved yet, it can only run on the simulator, and using EAS cannot package it. The Expo official team has not yet responded.

Same problem. Any updates?
Thanks

Still happening with:
"expo": "^52.0.11",
"react-native": "0.76.3",
"react-native-iap": "^12.15.7",

I am facing the same problem, and now I am really stucked to update my app 😞 ... I just tried to downgrade to Expo version to SDK 51 and other problems appears, both on iOS and android.
Is there any update on this?

Workaround for building Expo apps with EAS
Add postinstall.js file to root dir
const fs = require('fs')
const path = require('path')

const gradleFilePath = path.join(
  __dirname,
  '..',
  'node_modules',
  'react-native-iap',
  'android',
  'build.gradle',
)

try {
  let gradleFileContent = fs.readFileSync(gradleFilePath, 'utf8')
  const lineToReplace =
    'def supportLibVersion = getExtOrDefault("supportLibVersion")'

  if (gradleFileContent.includes(lineToReplace)) {
    gradleFileContent = gradleFileContent.replace(
      lineToReplace,
      'def supportLibVersion = false',
    )

    fs.writeFileSync(gradleFilePath, gradleFileContent, 'utf8')
    console.log('Line removed from build.gradle successfully.')
  } else {
    console.log('Line not found in build.gradle.')
  }
} catch (error) {
  console.error('Failed to modify build.gradle:', error)
}

Add post-script to package.json
{
  ...
  "scripts": {
    ...
    "postinstall": "node my-gradle-plugin/index.js"
  },
  ...
}

Run eas build ... command

Thank you @WhidRubeld for providing the postinstall.js workaround! I tried your solution, but I encountered the following error when running it during the build:
$ node postinstall.js Failed to modify build.gradle: Error: ENOENT: no such file or directory, open '/home/expo/workingdir/node_modules/react-native-iap/android/build.gradle'
It seems the issue was related to the script using __dirname to construct the path, but during the build, the working directory was actually /home/expo/workingdir/build. This caused the script to fail because it was looking in the wrong location for the build.gradle file.
To fix this, I updated the script to use process.cwd() instead of __dirname to dynamically determine the current working directory. Here’s the updated script:
const fs = require('fs');
const path = require('path');

// Use process.cwd() to dynamically get the working directory
const workingDir = process.cwd();

const gradleFilePath = path.join(
    workingDir,
    'node_modules',
    'react-native-iap',
    'android',
    'build.gradle'
);

if (!fs.existsSync(gradleFilePath)) {
    console.error('Gradle file does not exist at:', gradleFilePath);
    process.exit(0); // Exit gracefully if the file doesn't exist
}

try {
    let gradleFileContent = fs.readFileSync(gradleFilePath, 'utf8');
    const lineToReplace =
        'def supportLibVersion = getExtOrDefault("supportLibVersion")';

    if (gradleFileContent.includes(lineToReplace)) {
        gradleFileContent = gradleFileContent.replace(
            lineToReplace,
            'def supportLibVersion = false'
        );

        fs.writeFileSync(gradleFilePath, gradleFileContent, 'utf8');
        console.log('Line removed from build.gradle successfully.');
    } else {
        console.log('Line not found in build.gradle.');
    }
} catch (error) {
    console.error('Failed to modify build.gradle:', error);
}

After making this change, the script worked as expected during the build process. Thank you again for the starting point, it really helped! I hope this updated version can assist others who might encounter a similar issue with the working directory.

I could solve this problem with jetifier
install jetifier
yarn add jetifier

and enable it in gradle.properties
android.enableJetifier=true

then run
npx jetify

What it does is it replaces all com.android.support dependencies to android. Don't ask me why
after that I could run
./gradlew app:assembleDebug --debug

and starn the app in emulator

Two ways to make android app able to run:

define  android.enableJetifier=true in gradle.properties
comment out supportLibVersion = xxx in build.gradle

Unfortunately, my project is using expo 52 and create android project from nothing every time when build. There's no way to config these two files.
I hope this issue can be fixed soon without updating android project manually each time.

I have the same issue, see https://github.com/expo/expo/issues/30725
This seems to be pretty urgent as it's incompatible with the latest Expo updates.

still having it :((
"expo": "^52.0.19", "react-native": "0.76.5", "react-native-iap": "^12.15.7",

Thank you @WhidRubeld for providing the postinstall.js workaround! I tried your solution, but I encountered the following error when running it during the build:
$ node postinstall.js Failed to modify build.gradle: Error: ENOENT: no such file or directory, open '/home/expo/workingdir/node_modules/react-native-iap/android/build.gradle'
It seems the issue was related to the script using __dirname to construct the path, but during the build, the working directory was actually /home/expo/workingdir/build. This caused the script to fail because it was looking in the wrong location for the build.gradle file.
To fix this, I updated the script to use process.cwd() instead of __dirname to dynamically determine the current working directory. Here’s the updated script:
const fs = require('fs');
const path = require('path');

// Use process.cwd() to dynamically get the working directory
const workingDir = process.cwd();

const gradleFilePath = path.join(
    workingDir,
    'node_modules',
    'react-native-iap',
    'android',
    'build.gradle'
);

if (!fs.existsSync(gradleFilePath)) {
    console.error('Gradle file does not exist at:', gradleFilePath);
    process.exit(0); // Exit gracefully if the file doesn't exist
}

try {
    let gradleFileContent = fs.readFileSync(gradleFilePath, 'utf8');
    const lineToReplace =
        'def supportLibVersion = getExtOrDefault("supportLibVersion")';

    if (gradleFileContent.includes(lineToReplace)) {
        gradleFileContent = gradleFileContent.replace(
            lineToReplace,
            'def supportLibVersion = false'
        );

        fs.writeFileSync(gradleFilePath, gradleFileContent, 'utf8');
        console.log('Line removed from build.gradle successfully.');
    } else {
        console.log('Line not found in build.gradle.');
    }
} catch (error) {
    console.error('Failed to modify build.gradle:', error);
}

After making this change, the script worked as expected during the build process. Thank you again for the starting point, it really helped! I hope this updated version can assist others who might encounter a similar issue with the working directory.

Anybody got this workaround to work with going through EAS? I tried both WhidRubeld and  otmancra workarounds to no avail. Removing the line "supportLibVersion" in android/build.gradle works but only locally.

Anybody got this workaround to work with going through EAS? I tried both WhidRubeld and otmancra workarounds to no avail. Removing the line "supportLibVersion" in android/build.gradle works but only locally.

Maybe you are doing a production build. In this case you will have to connect the script like this in package.json.
{
  "scripts": {
     "eas-build-post-install": "node postinstall.js"
  }
}

https://docs.expo.dev/build-reference/npm-hooks/

this #2904 can fix this


Support Business Metadata / Managed Attributes

The Bulk Upload excel should support managed attributes / business metadata.

This is done!  I have no idea why I've left this one sitting open so long?


bug(MatTabs): Inkbar has incorrect position and flickers inside MatDialog

Reproduction
I have not been able to reproduce this in a stackblitz, so I hope that some screenshots are enough.
When the content of the tabs is wider than the tabs, the ink bar is off and flickers when animating from one tab to another. Calling realigInkBar from the debugger realigns, but I haven't found a place in my code where I can get that effect. And it would not remove the flickering. The flickering appears as if the ink bar animates to the correct position, but then gets readjusted to be off.

When the number of tabs overflows the width of the content (ie. pagination shows), there's no flicker and the ink bar is positioned correctly.

Environment

Angular: 9.1.0
CDK/Material: 9.2.4
Browser(s): Chrome 83
Operating System (e.g. Windows, macOS, Ubuntu): macOS

A little more details: I appears that the ink bar is only badly positioned when the mat-align-tabs property is different from default (start) - it's center in my case.

Closing this issue since there is no Stackblitz to reproduce and this issue refers to the legacy tabs, which no longer exist.


Deploying Spark fails with insufficient max JVM memory

I was testing a simple developer setup for pipelines:
cd ~/gits
git clone https://github.com/google/fhir-data-pipes.git
cd fhir-data-pipes/
chmod a+rx docker/dwh
cd docker/
docker network create cloudbuild
docker-compose  -f hapi-compose.yml up  --force-recreate -d
curl -H "Content-Type: application/json; charset=utf-8"   'http://localhost:8091/fhir/Patient' -v
cd ..
python3 -m venv venv
venv/bin/pip install -r ./synthea-hiv/uploader/requirements.txt
venv/bin/python3 synthea-hiv/uploader/main.py HAPI   http://localhost:8091/fhir --input_dir   ./synthea-hiv/sample_data_small/

This finished with some errors which I ignored: https://paste.googleplex.com/5983969268465664
docker-compose -f docker/compose-controller-spark-sql-single.yaml up --force-recreate
Finished with error due to JVM max memory: https://paste.googleplex.com/4827520718864384
Fixed by editing docker/.env
JAVA_OPTS=-Xms10g -Xmx10g
Should we make this change permanent?

Yes this is a known issue but we prefer not to increase the default memory significantly. To see the reasoning, please take a look at where JAVA_OPTS is set here and the comments above it. So I am guessing that you are running this on a machine with a lot of cores (how many?). We cannot change JVM memory configuration in the controller code but we can check in advance and fail early if we know that the big number of threads is going to fail the pipeline later on.
Another option is to limit the number of threads dynamically, i.e., even if numThreads is set to use all cores (e.g., here) we can override it and set it to a smaller number where the provided memory is enough. That way the pipeline won't fail but may suffer performance-wise; @chandrashekar-s WDYT about this capping change?

Yes this is a known issue but we prefer not to increase the default memory significantly. To see the reasoning, please take a look at where JAVA_OPTS is set here and the comments above it. So I am guessing that you are running this on a machine with a lot of cores (how many?). We cannot change JVM memory configuration in the controller code but we can check in advance and fail early if we know that the big number of threads is going to fail the pipeline later on.
Another option is to limit the number of threads dynamically, i.e., even if numThreads is set to use all cores (e.g., here) we can override it and set it to a smaller number where the provided memory is enough. That way the pipeline won't fail but may suffer performance-wise; @chandrashekar-s WDYT about this capping change?

This is a good idea to dynamically set the number of cores, if the configured memory is insufficient and when the numThreads is set to use all cores (or say optimum value). This way we don't fail the application, but we should warn the user about the same in the logs.


Your requirements could not be resolved to an installable set of packages.

how to fix this?
Problem 1
- Installation request for alchemyguy/youtube-laravel-api v<IP_ADDRESS> -> satisfiable by alchemyguy/youtube-laravel-api[v<IP_ADDRESS>].
- Conclusion: remove laravel/framework v8.5.0
- Conclusion: don't install laravel/framework v8.5.0
- alchemyguy/youtube-laravel-api v<IP_ADDRESS> requires illuminate/support ~5.1 -> satisfiable by illuminate/support[5.1.x-dev, 5.2.x-dev, 5.3.x-dev, 5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.1
.1, v5.1.13, v5.1.16, v5.1.2, v5.1.20, v5.1.22, v5.1.25, v5.1.28, v5.1.30, v5.1.31, v5.1.41, v5.1.6, v5.1.8, v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5.2.37, v5.2.43, v5.2.45, v5.2.6,
v5.2.7, v5.3.0, v5.3.16, v5.3.23, v5.3.4, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5
.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.3
2, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7
.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.
8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
- don't install illuminate/support 5.5.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.16|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.17|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.2|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.33|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.34|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.35|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.36|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.37|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.39|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.40|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.41|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.43|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.5.44|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.6.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.1|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.10|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.11|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.12|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.13|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.14|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.15|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.16|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.17|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.19|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.2|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.20|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.21|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.22|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.23|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.24|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.25|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.26|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.27|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.29|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.3|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.30|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.31|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.32|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.33|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.34|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.35|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.36|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.37|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.38|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.39|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.4|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.5|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.6|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.7|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.8|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.6.9|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.7.17|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.7.18|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.7.19|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.7.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.1|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.10|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.11|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.15|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.2|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.20|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.21|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.22|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.23|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.26|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.27|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.3|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.4|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.5|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.6|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.7|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.8|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.7.9|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.8.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.11|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.12|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.14|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.15|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.17|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.18|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.19|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.2|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.20|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.22|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.24|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.27|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.29|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.3|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.30|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.31|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.32|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.33|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.34|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.35|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.36|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.4|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.8|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.8.9|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.1.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.2.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.3.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support 5.4.x-dev|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.1|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.13|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.16|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.2|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.20|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.22|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.25|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.30|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.31|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.41|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.6|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.1.8|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.19|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.21|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.24|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.25|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.26|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.27|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.28|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.31|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.32|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.37|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.43|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.45|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.6|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.2.7|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.3.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.3.16|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.3.23|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.3.4|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.0|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.13|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.17|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.19|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.27|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.36|don't install laravel/framework v8.5.0
- don't install illuminate/support v5.4.9|don't install laravel/framework v8.5.0
- Installation request for laravel/framework v8.5.0 -> satisfiable by laravel/framework[v8.5.0].
Installation failed, reverting ./composer.json to its original content.

@cryptommer  this is fixed in v1.0.1


Terminal don't allow to have multiple codes in one ANSI escape code

Expected behavior
as per spec you can use code like this "\x1b[38;5;2;48;5;3mxxxx\x1b[m" (two 8-bit colors - background and foreground) which should print green text on yellow background, it should work the same as for "\x1b[34;45mxxx\x1b[m"
Actual behavior
terminal is printing yellow text because second color overwrite first one (variable is not reset after setting first color.
Steps to reproduce
execute in demo that have unix formatting included:
term.insert("\x1b[38;5;2;48;5;3mxxxx\x1b[m");

version 1.22.0 released


Added multi group editor dialog, issue 13997

Started and almost finished before the end of GDCon :D
This adds a new button under the Groups tab:

When clicked brings up the following dialog:

The left list contains the groups in the current scene. It allows you to add, delete or rename.
The centre list contains nodes not in the current  group.
The right list contains nodes in the current group.
The buttons in between allow you to move the nodes in or out of the currently selected group.
For nodes that cannot be edited (i.e Groups were defined in another scene) they appear greyed out and cannot be modified.
closes #13997

Hey, what's the state on this?

this is interesting.. i would add:

Node icons to nodes
Maybe a way to save group name presets project-wide

Updated to show Node Icons.

Maybe a way to save group name presets project-wide

I'm not too sure how to add this currently, would rather send it in a separate PR.

Thanks, looks great :)


Remove unused broken GetTypecode to allow building with GCC 8

This template function is unused (not in any public headers and not called from within clSPARSE), and has always been non-instantiable (and hence unusable) as char[4] to char& is an invalid conversion.
Older GCC didn't notice as we never try (instantiating a class template only instantiates those member functions that are used), but in GCC 8 its existence is an error:
/build/clsparse-<IP_ADDRESS>/src/library/io/mm-reader.cpp: In member function 'char& MatrixMarketReader::GetTypecode()':
/build/clsparse-<IP_ADDRESS>/src/library/io/mm-reader.cpp:123:16: error: invalid conversion from 'char*' to 'char' [-fpermissive]
return Typecode;
^~~~~~~~
/build/clsparse-<IP_ADDRESS>/src/library/io/mm-reader.cpp:123:16: error: cannot bind rvalue '(char)((char*)(&((MatrixMarketReader*)this)->MatrixMarketReader::Typecode))' to 'char&'
An alternative to removal is to change the char & to char *.  Both options build in Debian (gcc 8.2, clsparse <IP_ADDRESS>, where this problem was previously reported), but have not been built in develop or tested anywhere.

The Appveyor log looks like a missing dependency before it even got to my change - given the long period without commits, does it now also fail on unmodified develop?
Scanning dependencies of target OpenCL
[  3%] Building C object CMakeFiles/OpenCL.dir/icd.c.obj
icd.c
c:\projects\clsparse-otonj\bin\opencl\icd.h(53) : fatal error C1083: Cannot open include file: 'CL/cl.h': No such file or directory
NMAKE : fatal error U1077: 'C:\PROGRA~2\MICROS~3.0\VC\bin\amd64\cl.exe' : return code '0x2'
Stop.


Adjust vscode interval for sending codelens and codeAction messages

Asked this on Stack Overflow:
https://stackoverflow.com/questions/50009481/adjust-vscode-interval-for-sending-codelens-and-codeaction-messages/50018723
Right now it seems that textDocument/codeLens and textDocument/codeAction messages come in a bit too frequently causing perf losses in the LSP extension I work on.
Is there any way to increase the interval between these messages sent to the language server?

No, these things are currently not configurable and I also don't know if it would be a good idea if they were. Usually, pending requests should be canceled before sending another one. @tylerl0706 Can you confirm that cancelation happens. Also, where exactly is your performance issue? Having both features enabled usually means that your language service has a lot more work to do but that isn't bad per se. Is it that you have trouble prioritising other work, e.g IntelliSense or validation?

Cancelation is something I'm working on. We never implemented it because a lot of the extension is synchronous due to PowerShell's "weirdness" of handling 1 command at a time. (for context: The PowerShell language server maintains a PowerShell runspace which is where intellisense, code lens, etc, come from)
because of that synchronous bit, I am worried about prioritizing. Intellisense takes forever at times because PowerShell is still processing other messages before it.
I almost wish there was some meetup at Microsoft where all the language server maintainers could share knowledge.

We never implemented it because a lot of the extension is synchronous due to PowerShell's "weirdness" of handling 1 command at a time. (for context: The PowerShell language server maintains a PowerShell runspa

The TypeScript server has a similar challenge because it runs on single-threaded nodejs. I believe they  try to unblock things like diagnostics by re-scheduling themselves. Unsure if your environment supports that but you could artificially delay some low-prio operations by delaying them.

Interesting. Do you happen to know any of those that work on the Typescript server? I'd love to chat with them.

Try reaching out to @mhegazy for more details about how TS Server handles this,


Decryption error on CentOS 7, Version <IP_ADDRESS>

Morning!
Using version <IP_ADDRESS>.
I started noticing some decryption issues a few days ago. I am not sure how long it has been going on unfortunately. After hours of testing my own system, I removed the Test Encrypted Key and password from the application, and put it into just a basic test app that would run through and decrypt the Master Key about 50 times.
The encrypted key does decrypt, and has decrypted flawlessly for nearly a year. I have never noticed an issue before. If this is truly a bug, it should not matter which TEST encrypted key someone uses, which is why I didn't include mine. I'm adding the simple log (bottom) created when running the test.
The test was run on CentOS 7 and on Windows 10. It never fails on Windows 10, whereas CentOS 7 experienced 15 Failed attempts and 35 successes. This fact led me to believe I was doing something wrong and so did a lot of debugging and testing. Which may still be the case, but I figured I would throw this out there just in case.
Errors are included.
To Decrypt:
`BitcoinEncryptedSecret encrypted_master_key =   BitcoinEncryptedSecret.Create(encrypted_key, NBitcoin.Network.TestNet);
BitcoinSecret clear_master_key = encrypted_master_key.GetSecret(test_password_one);`
To Encrypt:
`Mnemonic mnemo = new Mnemonic(Wordlist.English, WordCount.Twelve);
ExtKey masterKey = mnemo.DeriveExtKey(test_password_one);
BitcoinSecret clear_master_private_key = masterKey.PrivateKey.GetWif(NBitcoin.Network.TestNet);
BitcoinEncryptedSecret encrypted_master_private_key = clear_master_private_key.Encrypt(test_password_one);`
log.txt

Please @viperp12 don't forget to share here if this problem can be reproduced with .net core.

Update again. There was some issues on the stack size for Scrypt. Might be unrelated though.
Closing for inactivity, if you test new version and it still don't work please reopen this.


Test watching broken

Run:
npm run test:server:watch

Tests pass just fine. Modify a file and task will fail with:
error: uncaughtException: Path must be a string. Received undefined date=Fri Aug 11 2017 11:39:20 GMT+0300 (EEST), pid=5690, uid=501, gid=20, cwd=/Users/mikael/Documents/Projects/TrustRoots/mean, execPath=/usr/local/bin/node, version=v6.9.5, argv=[/usr/local/bin/node, /mean/node_modules/.bin/gulp, test:server:watch], rss=118480896, heapTotal=106631168, heapUsed=84892280, loadavg=[3.04443359375, 2.39013671875, 2.18408203125], uptime=1201347
TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.basename (path.js:1355:5)
    at Function.exports.changed (/mean/node_modules/gulp-refresh/index.js:129:33)
    at EventEmitter.<anonymous> (/mean/gulpfile.js:116:21)
    at emitOne (events.js:96:13)
    at EventEmitter.emit (events.js:188:7)
    at Gaze.<anonymous> (/mean/node_modules/glob-watcher/index.js:17:11)
    at emitTwo (events.js:106:13)
    at Gaze.emit (events.js:191:7)
    at Gaze.emit (/mean/node_modules/gaze/lib/gaze.js:129:32)
    at /mean/node_modules/gaze/lib/gaze.js:415:16
    at StatWatcher._pollers.(anonymous function) (/mean/node_modules/gaze/lib/gaze.js:326:7)
    at emitTwo (events.js:106:13)
    at StatWatcher.emit (events.js:191:7)
    at StatWatcher._handle.onchange (fs.js:1487:10)

Hi, I fixed this problem in my project. Will do a PR here, hopefully tomorrow

@gbatz You're the best!! <3

Basically an exception was thrown by the path module, because it was being invoked by gulp-refresh plugin with no parameter, line 116: plugins.refresh.changed()