RuntimeError: Triton Error [CUDA]: device kernel image is invalid

I'm encountering an error when running kernels on some machines.
It is very sensitive to the exact kernel code that's written. Even trivial changes such as trimming whitespace or adding/removing comments can change whether or not it occurs. In addition to the above message (given in title), there is a KeyError, which looks quite similar to #1512.
Min repro and detailed hardware & environment info are below.
Let me know if more details are required. Any help would be much appreciated!
Kernel Code
cast.py
import torch
import triton
import triton.language as tl

def cdiv(x: int, y: int):
	return (x + y - 1) // y

class TritonCast(torch.nn.Module):
	def forward(self, x):
		x, out, M, BLOCK_SIZE = _extract_meta_params(x)
		_triton_cast[(M,)](x, out, x.numel(), BLOCK_SIZE)
		return out

@triton.jit
def _triton_cast(x_ptr, out_ptr, n_elements, BLOCK_SIZE: tl.constexpr):
	pid = tl.program_id(axis=0)
	block_start = pid * BLOCK_SIZE
	offsets = block_start + tl.arange(0, BLOCK_SIZE)
	mask = offsets < n_elements
	y = tl.load(x_ptr + offsets, mask=mask)
	tl.store(out_ptr + offsets, y, mask=mask)

def _extract_meta_params(x):
	x = x.flatten()
	out = torch.empty_like(x, dtype=torch.int8)
	BLOCK_SIZE = 1024
	M = cdiv(x.numel(), BLOCK_SIZE)
	return x, out, M, BLOCK_SIZE

test.py
import torch
from unittests.ops.cast import TritonCast

FEAT_DIM = 1920

def test_kernel(bsz=1, seq_len=30):
	kernel = TritonCast().cuda().half()
	x = torch.randn((seq_len, bsz, FEAT_DIM), requires_grad=True, device="cuda", dtype=torch.float16)
	kernel(x)

if __name__ == "__main__":
	test_kernel()

Full Traceback
❯ python3 unittests/ops/test.py
Traceback (most recent call last):
  File "<string>", line 21, in _triton_cast
KeyError: ('2-.-0-.-0-1e8410f206c822547fb50e2ea86e45a6-d6252949da17ceb5f3a278a70250af13-3b85c7bef5f0a641282f3b73af50f599-14de7de5c4da5794c8ca14e7e41a122d-3498c340fd4b6ee7805fd54b882a04f5-e1f133f98d04093da2078dfc51c36b72-b26258bf01f839199e39d64851821f26-d7c06e3b46e708006c15224aac7a1378-f585402118c8a136948ce0a49cfe122c', (torch.float16, torch.int8, 'i32'), (1024,), (True, True, (True, False)))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "unittests/ops/test.py", line 12, in <module>
    test_kernel()
  File "unittests/ops/test.py", line 9, in test_kernel
    kernel(x)
  File "/venv/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/lawrencea/git/aladdin3/unittests/ops/cast.py", line 11, in forward
    _triton_cast[(M,)](x, out, x.numel(), BLOCK_SIZE)
  File "<string>", line 43, in _triton_cast
  File "/venv/lib/python3.8/site-packages/triton/compiler.py", line 1679, in __getattribute__
    self._init_handles()
  File "/venv/lib/python3.8/site-packages/triton/compiler.py", line 1672, in _init_handles
    mod, func, n_regs, n_spills = cuda_utils.load_binary(self.metadata["name"], self.asm["cubin"], self.shared, device)
RuntimeError: Triton Error [CUDA]: device kernel image is invalid

Environment

PyTorch 2.0.0a0+gitc263bd4
NVCC V11.6.124
CUDA Driver version 11.7
Triton 2.0.0

Hardware-Specifics
Whether this problem occurs on a specific device is very unpredictable. Even trivial changes, such as adding/removing comments or trimming whitespace can cause it to appear/disappear. I've seen it on:

NVIDIA GeForce RTX 2080 Ti
NVIDIA GeForce RTX 3090
NVIDIA A100-SXM4-40GB

For the specific code above, this error:

Occurs on NVIDIA GeForce RTX 2080 Ti
Doesn't occur on NVIDIA GeForce RTX 3090
Occurs on  NVIDIA A100-SXM4-40GB

Hi, I'm seeing this issue even after reinstalling triton just this morning with:
pip install -U --pre --force-reinstall triton

I see the problem on 2/3 of my GPUs:
RTX 6000 Ada: Error occurs
RTX A6000: Error occurs
Titan RTX: Code works
My code wraps torch.compile around one piece of the network I'm training.

Nightly wheels aren't back. You'll need to reinstall from source

I have encountered the same problem, how did you solve it?

I have encountered the same problem, how did you solve it?

I encountered the same error. In my case, I have a local Docker environment with CUDA 11.4 installed, and I installed the pytorch 2.2.0+cu118 library using pip. Here is part of the error log during runtime：
 File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl     return self._call_impl(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1520, in _call_impl     return forward_call(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/parallel/distributed.py", line 1523, in forward     else self._run_ddp_forward(*inputs, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/parallel/distributed.py", line 1359, in _run_ddp_forward     return self.module(*inputs, **kwargs)  # type: ignore[index]   File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl     return self._call_impl(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1520, in _call_impl     return forward_call(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/eval_frame.py", line 489, in _fn     return fn(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl     return self._call_impl(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1520, in _call_impl     return forward_call(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/eval_frame.py", line 652, in catch_errors     return hijacked_callback(frame, cache_entry, hooks, frame_state)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 727, in _convert_frame     result = inner_convert(frame, cache_entry, hooks, frame_state)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 383, in _convert_frame_assert     compiled_product = _compile(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 646, in _compile     guarded_code = compile_inner(code, one_graph, hooks, transform)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper     r = func(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 562, in compile_inner     out_code = transform_code_object(code, transform)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/bytecode_transformation.py", line 1033, in transform_code_object     transformations(instructions, code_options)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 151, in _fn     return fn(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/convert_frame.py", line 527, in transform     tracer.run()   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/symbolic_convert.py", line 2128, in run     super().run()   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/symbolic_convert.py", line 818, in run     and self.step()   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/symbolic_convert.py", line 781, in step     getattr(self, inst.opname)(inst)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/symbolic_convert.py", line 2243, in RETURN_VALUE     self.output.compile_subgraph(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/output_graph.py", line 945, in compile_subgraph     self.compile_and_call_fx_graph(tx, pass2.graph_output_vars(), root)   File "/usr/lib/python3.8/contextlib.py", line 75, in inner     return func(*args, **kwds)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/output_graph.py", line 1087, in compile_and_call_fx_graph     compiled_fn = self.call_user_compiler(gm)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper     r = func(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/output_graph.py", line 1159, in call_user_compiler     raise BackendCompilerFailed(self.compiler_fn, e).with_traceback(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/output_graph.py", line 1140, in call_user_compiler     compiled_fn = compiler_fn(gm, self.example_inputs())   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/backends/distributed.py", line 459, in compile_fn     submod_compiler.run(*example_inputs)   File "/usr/local/lib/python3.8/dist-packages/torch/fx/interpreter.py", line 138, in run     self.env[node] = self.run_node(node)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/backends/distributed.py", line 440, in run_node     compiled_submod_real = self.compile_submod(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/backends/distributed.py", line 382, in compile_submod     self.compiler(input_mod, args),   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/repro/after_dynamo.py", line 117, in debug_wrapper     compiled_gm = compiler_fn(gm, example_inputs)   File "/usr/local/lib/python3.8/dist-packages/torch/__init__.py", line 1662, in __call__     return compile_fx(model_, inputs_, config_patches=self.config)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 1168, in compile_fx     return aot_autograd(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/backends/common.py", line 55, in compiler_fn     cg = aot_module_simplified(gm, example_inputs, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/aot_autograd.py", line 887, in aot_module_simplified     compiled_fn = create_aot_dispatcher_function(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper     r = func(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/aot_autograd.py", line 600, in create_aot_dispatcher_function     compiled_fn = compiler_fn(flat_fn, fake_flat_args, aot_config, fw_metadata=fw_metadata)   File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py", line 425, in aot_wrapper_dedupe     return compiler_fn(flat_fn, leaf_flat_args, aot_config, fw_metadata=fw_metadata)   File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py", line 630, in aot_wrapper_synthetic_base     return compiler_fn(flat_fn, flat_args, aot_config, fw_metadata=fw_metadata)   File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/jit_compile_runtime_wrappers.py", line 295, in aot_dispatch_autograd     compiled_fw_func = aot_config.fw_compiler(fw_module, adjusted_flat_args)   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper     r = func(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 1100, in fw_compiler_base     return inner_compile(   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/repro/after_aot.py", line 83, in debug_wrapper     inner_compiled_fn = compiler_fn(gm, example_inputs)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/debug.py", line 305, in inner     return fn(*args, **kwargs)   File "/usr/lib/python3.8/contextlib.py", line 75, in inner     return func(*args, **kwds)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 320, in compile_fx_inner     compiled_graph = fx_codegen_and_compile(   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 550, in fx_codegen_and_compile     compiled_fn = graph.compile_to_fn()   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/graph.py", line 1116, in compile_to_fn     return self.compile_to_module().call   File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper     r = func(*args, **kwargs)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/graph.py", line 1070, in compile_to_module     mod = PyCodeCache.load_by_key_path(   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 1892, in load_by_key_path     exec(code, mod.__dict__, mod.__dict__)   File "/tmp/torchinductor_hadoop-perception/qw/cqwqiq3cpyyjdci7ohjub32wfio7swg4qpodckpyayneldgkgevh.py", line 1678, in <module>     async_compile.wait(globals())   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2471, in wait     scope[key] = result.result()   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2315, in result     kernel = self.kernel = _load_kernel(self.kernel_name, self.source_code)   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2291, in _load_kernel     kernel.precompile()   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/triton_heuristics.py", line 188, in precompile     compiled_binary, launcher = self._precompile_config(   File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/triton_heuristics.py", line 308, in _precompile_config     binary._init_handles()   File "/usr/local/lib/python3.8/dist-packages/triton/compiler/compiler.py", line 683, in _init_handles     mod, func, n_regs, n_spills = fn_load_binary(self.metadata["name"], self.asm[bin_path], self.shared, device) torch._dynamo.exc.BackendCompilerFailed: backend='compile_fn' raised: RuntimeError: Triton Error [CUDA]: device kernel image is invalid

I encountered the same error. In my case, I have a local Docker environment with CUDA 11.4 installed, and I installed the pytorch 2.2.0+cu118 library using pip. Here is part of the error log during runtime： File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/aot_autograd.py", line 887, in aot_module_simplified compiled_fn = create_aot_dispatcher_function( File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper r = func(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/aot_autograd.py", line 600, in create_aot_dispatcher_function compiled_fn = compiler_fn(flat_fn, fake_flat_args, aot_config, fw_metadata=fw_metadata) File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py", line 425, in aot_wrapper_dedupe return compiler_fn(flat_fn, leaf_flat_args, aot_config, fw_metadata=fw_metadata) File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py", line 630, in aot_wrapper_synthetic_base return compiler_fn(flat_fn, flat_args, aot_config, fw_metadata=fw_metadata) File "/usr/local/lib/python3.8/dist-packages/torch/_functorch/_aot_autograd/jit_compile_runtime_wrappers.py", line 295, in aot_dispatch_autograd compiled_fw_func = aot_config.fw_compiler(fw_module, adjusted_flat_args) File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper r = func(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 1100, in fw_compiler_base return inner_compile( File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/repro/after_aot.py", line 83, in debug_wrapper inner_compiled_fn = compiler_fn(gm, example_inputs) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/debug.py", line 305, in inner return fn(*args, **kwargs) File "/usr/lib/python3.8/contextlib.py", line 75, in inner return func(*args, **kwds) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 320, in compile_fx_inner compiled_graph = fx_codegen_and_compile( File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/compile_fx.py", line 550, in fx_codegen_and_compile compiled_fn = graph.compile_to_fn() File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/graph.py", line 1116, in compile_to_fn return self.compile_to_module().call File "/usr/local/lib/python3.8/dist-packages/torch/_dynamo/utils.py", line 244, in time_wrapper r = func(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/graph.py", line 1070, in compile_to_module mod = PyCodeCache.load_by_key_path( File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 1892, in load_by_key_path exec(code, mod.__dict__, mod.__dict__) File "/tmp/torchinductor_hadoop-perception/qw/cqwqiq3cpyyjdci7ohjub32wfio7swg4qpodckpyayneldgkgevh.py", line 1678, in <module> async_compile.wait(globals()) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2471, in wait scope[key] = result.result() File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2315, in result kernel = self.kernel = _load_kernel(self.kernel_name, self.source_code) File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/codecache.py", line 2291, in _load_kernel kernel.precompile() File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/triton_heuristics.py", line 188, in precompile compiled_binary, launcher = self._precompile_config( File "/usr/local/lib/python3.8/dist-packages/torch/_inductor/triton_heuristics.py", line 308, in _precompile_config binary._init_handles() File "/usr/local/lib/python3.8/dist-packages/triton/compiler/compiler.py", line 683, in _init_handles mod, func, n_regs, n_spills = fn_load_binary(self.metadata["name"], self.asm[bin_path], self.shared, device) torch._dynamo.exc.BackendCompilerFailed: backend='compile_fn' raised: RuntimeError: Triton Error [CUDA]: device kernel image is invalid

Hope this help.
https://github.com/openai/triton/issues/1955#issuecomment-1929908209

Thank you for your reply. It seems that the issue is caused by the incorrect version of CUDA used for compilation. I will check my own environment.  @xingjinglu

Lower down the version of triton may help


fix: update module syntax for zig 0.11.0

Hello! I've updated the module syntax for Zig v0.11.0.
This is in tandem with https://github.com/nektro/zig-time/pull/6
Hope these changes are okay.
And thank you for all the brilliant projects! :)

Actually does this need the optimize and target options passed? I'm not really that familiar with how the target and optimize info is propagated if not explicitly given

Thanks!


Unknown issue

Seems you have not setup accelerate config which is mentioned in readme

Im using it with Pinokio

Im using it with Pinokio

Not sure if pinokio also compatible with training/finetuning.
If you just want to do inference, use gradio_app.py and inference-cli.py

Im using it with Pinokio

Not sure if pinokio also compatible with training/finetuning.
If you just want to do inference, use gradio_app.py and inference-cli.py

Yes it is but something went wrong.

will close this issue, feel free to open if further questions~


Add barrel/pincushion correction support

This adds a --barrel-correction argument that takes a single floating point value which is used in a simple one-parameter image warping model to correct for barrel/pincushion distortion. The parameter is deliberately undocumented as the process for choosing its value is not yet well defined.

@jmuhlich what is your recommendation for values, I noticed that default is 0.
Should I try 1, 2, 4 ?


Add anoncreds upgrade via api endpoint

Have added an option to demo to upgrade in multi-tenant mode (non-multi-tenant mode currently requires restart --> see below). Also added an integration test for multi-tenant mode that does object creation and revocation stuff, upgrades, and then does it again with anoncreds.
Have added a decent amount of unit tests. Some harder to test stuff hasn't been covered.
Implementation:

Created an endpoint /anoncreds/wallet/upgrade in the wallet routes to trigger the upgrade. For safety it requires adding the wallet name as a parameter.
Added a upgrade singleton (set) to manage which wallets are being upgraded in the case of multiple subwallets at the same time.
Added a middleware that checks the singleton and blocks traffic for the particular wallet if upgrade is in progress.
Uses a DB record to persist an upgrade and restart upgrades in the case of an agent restart.
The upgrade is all or nothing with a single transaction. There is a retry mechanism.
For subwallets, you can currently upgrade to anoncreds even if the base wallet is askar. Might want to force them to upgrade the base wallet first. A multi-tenant base wallet only changes the storage type and profile which doesn't make much difference. The subwallet will change profile types on the fly. Doesn't require agent restart.
For standalone agent and mutitenant admin wallets the agent will shutdown after the upgrade, and then require the wallet-type config to be changed to askar-anoncreds. Maybe there's a more streamline way to do this but I think it could be another ticket if we want to do this.
For the upgrade of schema's and cred def's I wasn't able to find all the required anoncred data in the existing storage and resorted to getting it from the ledger. An example is the attrNames in schema. Not sure if this exists somewhere in storage I don't know about.

I don't think the upgrade should take very long for any agents or subwallets as the DB changes are just removing and replacing records.
I changed the txn_submit interface in anoncreds to take a BaseLedger instance. I was sometimes getting injection errors because the weak_ref was expired. Not really sure why?

Overall looks good.  I had one minor comment (a duplicate line of code I think) and we could use some docs (at a minimum just add the description of this PR to an .md doc somewhere)

I'm back and going to address the documentation in an additional ticket https://github.com/hyperledger/aries-cloudagent-python/issues/2875

Code looks good overall, I flagged a couple items that need to be looked at. Also wondering if it would make sense (and there is a way) to test a failed upgrade and how to recover from that?

I'm not sure of how I can force an upgrade to fail with the integration tests. I can look into making sure it's covered by unit tests.
My idea is to suggest using the wallet-type which you can get via the api to handle both endpoints when doing an upgrade. In that case if it fails then it will continue working as before. If it succeeds the controller can remove the old endpoints in a future release. This is basically how the integration test controller is implemented now. I think it will be clear once I finish the upgrade documentation.
Will address the other comments and make sure upgrade fail is covered by some type of test.

Code looks good overall, I flagged a couple items that need to be looked at. Also wondering if it would make sense (and there is a way) to test a failed upgrade and how to recover from that?

I'm not sure of how I can force an upgrade to fail with the integration tests. I can look into making sure it's covered by unit tests.
My idea is to suggest using the wallet-type which you can get via the api to handle both endpoints when doing an upgrade. In that case if it fails then it will continue working as before. If it succeeds the controller can remove the old endpoints in a future release. This is basically how the integration test controller is implemented now. I think it will be clear once I finish the upgrade documentation.
Will address the other comments and make sure upgrade fail is covered by some type of test.

Depending on effort, if it doesn't too much coordinating to handle a fail it would be useful. I was wondering situations such as corrupted records that would cause trouble (is it even possible?) or the service being terminated mid-way, specifically. likely easier to deal with in unit test than integration tests, I think 😅

Added a middleware that checks the singleton and blocks traffic for the particular wallet if upgrade is in progress.

Will this work in a scaled environment?  I.e. should a multi-instance environment scale down to a single instance before upgrading wallets?

I don't think the upgrade should take very long for any agents or subwallets as the DB changes are just removing and replacing records.

... as long as we're not updating records for individual credentials (OrgBook has millions of credentials in it's wallet)

As I understand it, the plan is that the controller is responsible for scaling down, the up and calling this endpoint before proceeding.  So the ACA-Py instance doesn’t have to scale down as that is impossible to manage. But the controller does.

As I understand it, the plan is that the controller is responsible for scaling down, then start back up and calling this endpoint during controller initialization before proceeding. So the ACA-Py instance doesn’t have to scale down as that is impossible to manage. But the controller does.

We need a document :-P  (I didn't notice when I approved the PR but went back and checked after @swcurran 's comment)  Doesn't need to be part of this PR but we will def need one.

I don't think the upgrade should take very long for any agents or subwallets as the DB changes are just removing and replacing records.

... as long as we're not updating records for individual credentials (OrgBook has millions of credentials in it's wallet)

Only the schema, cred_def and revocation objects are getting updated. The revocation objects could potentially take some time. I don't have much experience with this in heavy loads. The individual credentials aren't effected.

As I understand it, the plan is that the controller is responsible for scaling down, then start back up and calling this endpoint during controller initialization before proceeding. So the ACA-Py instance doesn’t have to scale down as that is impossible to manage. But the controller does.

We need a document :-P (I didn't notice when I approved the PR but went back and checked after @swcurran 's comment) Doesn't need to be part of this PR but we will def need one.

Yes. I'm still working on a detailed document with the upgrade process and the migration steps via https://github.com/hyperledger/aries-cloudagent-python/issues/2875. Should be ready soon.

I'm going to create a separate document for the design of this with some diagrams so it's clear and can be referenced in the future. It will be separate from the migration guide.

@ianco @swcurran I'm removing the in memory singleton part of this, and instead using the wallet(DB) value in the middleware. I hadn't considered the scaled up, multi instance use case correctly.
I've already made the changes and am testing. The down side is there will be a small performance hit I wanted to avoid.
I wanted to add a DB hook to maintain the in memory singleton mechanism between instances. But after researching it I can't see this done anywhere in the project and it looks like it would be a substantial effort to implement.

@ianco @swcurran I'm removing the in memory singleton part of this, and instead using the wallet(DB) value in the middleware. I hadn't considered the scaled up, multi instance use case correctly.
I've already made the changes and am testing. The down side is there will be a small performance hit I wanted to avoid.
I wanted to add a DB hook to maintain the in memory singleton mechanism between instances. But after researching it I can't see this done anywhere in the project and it looks like it would be a substantial effort to implement.

This update looks good, but I'm wondering also about the performance hit.  There is a possibility of using a redis cache (https://github.com/Indicio-tech/aries-acapy-cache-redis - not sure if this one has made it to the plug=ins repo) to keep the state in memory across instances (of course in that case aca-py would have to be configured with that plug-in).
Another option is to add an aca-py flag as to whether to do the "upgrade check" or not, so we can turn it on when we know the upgrade is potential, and then turn it off afterwards.
Of course the other option is to do no checks at all and rely totally on the controller to ramp down and make no requests during the upgrade.
@swcurran  your thoughts?

Also regarding the "upgrade check" do we need to check each time we process a received message as well?  I.e. if we receive a message and the respective wallet is in the middle of an upgrade should we just leave the message in the queue?

I'm going to close this PR and open a new PR to clean it up.


chore: upgrade axios to fix vulnerability

Description

vite-plugin-mkcert -> axios 1.6.2 -> follow-redirects 1.15.3 -> vulnerability CVE-2023-26159
This PR bumps Axios' version since it has released a patched version

What is the purpose of this pull request?

[ ] Bug fix
[ ] New Feature
[ ] Documentation update
[x] Other

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Pundit dealing with policies in certain views (or somehow associated with)

I like it in my views when actions are only visible after a pundit check.
Now the issue arises with an action on some data showing, that should not be actionable in that particular view (in my case an order that has been confirmed, should not allow a user to make edits to his or her address).
It would be nice and clean if pundit still would pick up on it and I would not have to clutter my view with some if-statement doing an extra check, effectively saying: You do not have rights when you are in this particular view to make this CRUD action.
Could I centralise this in Pundit? Would you recommend building a separate helper for Pundit for this, since Pundit is just POROs?
I understand you'd want Pundit to deal with the actual controller action dealing with the database, etc. but is there maybe a clever way of dealing with view management to?
Is it maybe an idea to add something in your documentation about this, like:
When concerned with certain policy in view, add this or that, here or there.
Ultimately I would like my Pundit <% if policy(@post).action? %> to also stop rendering when not in the right view.

I've done something similar in applications I've worked on. In my own experience, you can just make multiple policies for the same sets of data and choose the appropriate policy depending on the context.
In your case, you could make an additional policy to handle unconfirmed orders. IIRC Pundit already has hooks you can use to dynamically choose a policy for an object (see Manually Specifying Policy Classes in the README).

Unrelated to Pundit, but a way to achieve what you describe is by sparating actions/buttons/menus into its own partial/helper and do the checking there. Then just use the same partial/helper anywhere that resource is concerned.
I personally go with partials because I can:

open it via CMD + P in Sublime Text
I can specify full partial paths to make it unambiguous


Do we have server built file?

Something is not clear for me yet, Do we have server built file or not?
When I run the yarn build command it is obvious we will have all the client assets in the public folder and will serve them to the client, but what about server?
By my understanding by using yarn start command:

"start": "cross-env NODE_ENV=production ts-node --transpile-only --files .",

we will run this file:
// root index.ts file

// Allows you to pre-compile ES6 syntax
require('@babel/register')();

// Used by react-refresh
global.$RefreshReg$ = () => null;
global.$RefreshSig$$ = () => () => null;

// Global variables for server-side
global.__CLIENT__ = false;
global.__SERVER__ = true;
global.__DEV__ = process.env.NODE_ENV === 'development';

// Run assets require hooks
require('./tools/webpack/hooks')();
// Run server
require('./src/server');

it means for the last line require('./src/server'); we are using source code of server/index.ts and in this file in line 11 we have:
import ssr from './ssr';

it means it is source code not built version, even for production. I think there is another solution for production. we should build all the application and store it in just one huge file just for server. and tell the express go and read the server.js file that is built just for production level.
I have very simple configuration, you can check it. it uses exactly this way that I describe above. but my configuration doesn't have features like yours. really I like yours but is it possible to implement server built file?
The first and more important feature for a server.js build file is using powerful node process manager like pm2.

@wellyshen, Duo to this issue, I wanna change SSR render by new configuration, I will use webpack-hot-server-middleware to make the Webpack config as an Array, one for client and one for server, then in the production level, we will have server.js and it is built by my new config. it means for production we will have a fully node commonjs2 application and we won't use ssr.tsx and ts-node for production.
 Sorry man, I'm busying for some new libraries will back to this starter soon. I plan to build the SSR file when migrating to Webpack v5. Would you mind sharing your solution with me first?

@wellyshen, I know you're busy, me too, for now I'm very busy with a Silicon Valley project. but still I'm so eager to this starter, I mentioned my idea in the first post of this issue, here. Whenever you have time pull it and you can see in the production level we will have a commonjs2 file not reading from source.


Cripplingly slow in directories with many descendents

On my old Macbook Pro, searching for a simple name directly in the current directory is unusably slow if the current directory has a lot of descendents.
Example: I open fzf in my home dir and type dot. There is a folder in my home dir called dotfiles. Because fzf (seemingly) searches in alphabetical order, and searches through the whole directory tree of each directory before continuing with the next entry, it has to search 70000 files before it finally finds my dotfiles dir. It can take minutes.
This seems to be mostly because it's searching all the node_modules in all the projects in my code dir, and through every descendent of my AndroidStudioProjects dir, both of which alphabetically come before dotfiles.
I propose an optimization for a common use case: Add the direct descendents of the current directory to the list before iterating through every directory tree. This would make it almost instant.
(I would argue this should be the strategy throughout the tree actually. "Closer" descendents should always be added before "further" ones.)
I am using the fish shell but I've tried it from bash too; no difference. As would be expected because it's not a shell integration issue.

fzf does not implement directory traversal, it simply spawns find process with certain options for that when stdin is not fed.
Have you tried this? ag respects .gitignore and node_modules will not be listed as the directory is usually specified in .gitignore.

@junegunn, interesting. I have set it to use ag and it does indeed seem to run faster, however, now Ctrl-T doesn't include directories anymore.
Is there a solution? So far as I can see ag can't search for directory names, so I'm guessing not.

I wrote a simlle wrapper script that can be used to extend the output of ag.
https://github.com/junegunn/dotfiles/commit/6661555889bb9c02c0bd7fc24a3473e6688ef5cf

@junegunn, that's great! Only problem I see is that it doesn't include empty dirs. That would require a different approach. But it's really helpful nonetheless, thanks.
A few thoughts:

would it make sense to include that in fzf by default, or as an option?
maybe it would be good to have two shortcuts, one for directories (use whatever mechanism Alt+C uses) and one for files?
maybe fzf could automatically use ag if it is available?

Sorry for the false bug report. :-)
Off topic, but since I'm talking to you.... is there any reason the autocompletion (**) doesn't work in Fish? Is it just that nobody's written the code, or is there a reason it wouldn't work?
(I'm new to Fish, and honestly I'm seeing so many incompatibility issues I'm considering moving to ZSH, but I'm going to stick with it a few weeks and see how I feel then. Change is always hard and Fish has a lot of nice features...)

it doesn't include empty dirs

True, good point.
About your questions: No, I see fzf as a simple unix filter, just like grep, a tool you can build stuff with it, and I don't want to extend the scope of this repository any further. The more this repository tries to provide, the more time I'll be wasting dealing with someone else's issues. Some user may not have Ruby, some user may prefer pt over ag, some user may want to have caching mechanism, etc. I'll just leave it up to the users. Providing more key bindings for shells other than the ones that we have now is also not what I'm planning to do. Dealing with the endless issues of three different shells has been a big pain point for me as the maintainer of the project, especially considering that what I only use is bash. Users are encouraged to implement their own key bindings.

is there any reason the autocompletion (**) doesn't work in Fish? Is it just that nobody's written the code, or is there a reason it wouldn't work?

The former.


corral run should work if there is no bundle.json

Currently,
using corral run ponyc results in an error rather than the project being built.
To ease the transition to using corral, @rkallos and I believe that corral run should be able to run without a bundle.json being present.
@cquinn care to weigh in?

Oh, good point. The run command could be configured to ignore missing bundle.json files.


upgrade default postgresql image to spilo-13

Signed-off-by: Ziming Zhang<EMAIL_ADDRESS>

delay to release 1.3, because it is hard to in place upgrade from spilo 1.2 to spilo 1.3 now


[QUESTION]  VRAM Requirement ?

Interested to test to thought to ask about it

In our testing, the model requires over 30GB VRAM in its default configuration. However, you can significantly reduce the VRAM usage by using quantized models.  https://github.com/Yuanshi9815/OminiControl/issues/10#issuecomment-2500096064


NAMD crashes if L2Atomics are enabled with PAMI LRTS

Original author: Nikhil Jain
Original issue: https://charm.cs.illinois.edu/redmine/issues/58

No body.

Original date: 2013-03-06 21:57:07

Move already short description to title, so it doesn't look like a general dysfunction.

Original author: Nikhil Jain
Original date: 2013-03-06 22:15:37

This issue was resolved by updating the manner in which LrtsQueue are created. There was a race condition during Queue creation hat has been resolved.

Original date: 2013-03-06 23:25:07

May as well mark it for the release :-)


Presentation Compiler should not fail fast

Compiler version
All
Minimized code
Currently, when crash happens during completions calculation, no results are returned.
In my case, the failure happened in
scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
        dotty.tools.dotc.typer.Typer$.assertPositioned(Typer.scala:76)
        dotty.tools.dotc.typer.Typer.typed(Typer.scala:3636)
        dotty.tools.dotc.typer.Applications.extMethodApply(Applications.scala:2630)
        dotty.tools.dotc.typer.Applications.extMethodApply$(Applications.scala:434)
        dotty.tools.dotc.typer.Typer.extMethodApply(Typer.scala:145)
        dotty.tools.dotc.typer.Applications.tryApplyingExtensionMethod(Applications.scala:2675)
        dotty.tools.dotc.typer.Applications.tryApplyingExtensionMethod$(Applications.scala:434)
        dotty.tools.dotc.typer.Typer.tryApplyingExtensionMethod(Typer.scala:145)
   dotty.tools.dotc.interactive.Completion$Completer.tryApplyingReceiverToExtension$1(Completion.scala:561)

The crash was encountered during extension member's completion calculation, and all other results were discarded or not computed. This is not ideal, as sometimes crashes are not related strictly to presentation compiler implementation.
The correct output should be a list of completions without extension members (ideally only those that actually crashed)
Reproduction
I tried completing
List(1, 2, 3).map(_.@@)

in https://github.com/scala/scala3/blob/main/presentation-compiler/src/main/dotty/tools/pc/completions/NamedArgCompletions.scala
With a crash:
java.lang.AssertionError: assertion failed: position not set for dotty.tools.pc.utils.InteractiveEnrichments.companion(<empty>) # -1 of class dotty.tools.dotc.ast.Trees$Apply in <WORKSPACE>/presentation-compiler/src/main/dotty/tools/pc/completions/NamedArgCompletions.scala%

The crash above is not part of this issue, just a fact that presentation compiler should not fail fast.

cc @tgodzik @kasiaMarek

Would that just be a case of adding a try?


Adding a GET Interface to Inference Would Allow for Better Performance

The current specification does not allow for good use of Cache Control i.e., client side caching, which is inefficient in production environments. The specification should add a GET request for inference to allow better use of client side caching with Cache Control. Let me explain better.
If a user is querying a deterministic model the response from the endpoint should be the same each time until the model is retrained, at which time the model should get a new version. (For non deterministic models such as simulation the current interface is fine) The current implementation only has a HTTP POST for querying the model for inference. If a HTTP GET is used with proper Cache Control settings the load on the server can be decreased. Cache control allows the client to cache response and the server to control the cache settings. By having the server control the cache other systems such as experimentation can be used on the server side without worry that the client will get the wrong response. The RFC on Cache Control is probably better at explaining this than I am and is included below.
RFC on HTTP caching: here
Currently different implementations of this specification use a more inefficient server side caching. Although server side caching can reduce the load on the server, the network bandwidth and round trip delay on the POST request are not eliminated. A good production system should utilize both client side and server side caching to have optimal results.
Here is an example of an implementation that uses server side caching: here

Hi @fstakem, it's been months - I know, but can you give us some use-cases of models that are deterministic? The way I read what you're describing, it sounds like you should invoke the model after retraining, write the result to a file and store that file on a CDN. If your model is deterministic, there's no need to have an inference server running at all. I don't think this request is in scope for the open-inference-protocol.
NB: I'm not on the steering committee here, I'm just an interested user

Deterministic models are not uncommon or rare. They make up a large set of models used in machine learning. Some teams lean on stochastic models more; some teams lean on deterministic models more. A regression is an engineers bread and butter model and it is deterministic. So are many others.
Using a CDN or other edge based caching model only is relevant in the few cases a model is served directly to a client. Many models are served internally to organizations where this scenario is not relevant. Likewise precomputation is one strategy. It is also expensive and time consuming for larger state spaces.
I am not sure how following an RFC is out of scope for an internet based system. The IETF  is well regard even when the web development world ignores them.

I am not sure how following an RFC is out of scope for an internet based system. The IETF is well regard even when the web development world ignores them.

Apologies, I wasn't pointing at IETF - I know their importance very well. I was attempting to say that adding a get endpoint is what I think is out-of-scope.
I may have misunderstood what you meant by determinism there, but with regression models (or decision trees, classifiers, or alike), while sure the model is deterministic you still have to provide some form of input. If we were to add a GET endpoint to the protocol definition, we'd still need a way to provide input to the model. While yes, technically you can send a request body with any HTTP method (including a GET request) - it should not have any meaning for a GET request. If we were to handle a request body on a GET request, and incorporate it in the processing by parsing it on the server and changing your response based on its contents, then we would be are ignoring this recommendation in the HTTP/1.1 spec, section 4.3:

...if the request method does not include defined semantics for an entity-body, then the message-body SHOULD be ignored when handling the request.


Issue 2469/remove test sate

Purpose

How does the solution address the problem

Changes made

prnet cleaned-up successfully


Switch to GLM_FORCE_SWIZZLE from deprecated GLM_SWIZZLE

Recent versions of GLM (since 0.9.8, september 2016) now require the user to set GLM_FORCE_SWIZZLE to enable swizzling.

 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.


Removes hard-coded tasks

This PR removes the hard-coded tasks from the UI.
This gets rid of the Drupal-centric nature of the task list, but also requires that cluster managers/group admins/developers take control of their tasks by recreating the existing tasks via the custom task api.
This should not be merged straight in, but requires the following

[ ] Detailed and tested release notes on how to recreate the tasks
[ ] Ensure that global tasks are in the api (tasks unattached to specific groups/projects/envs) OR whether this is necessary

Can we remove all the task blocklist stuff with this also? It was only needed because we hardcoded the tasks to begin with.

@rocketeerbkw - yep! Good call, actually. Getting rid of the task blocklist (and the need to test it as a separate function) is one of the reasons I'm doing this right now.


Runtime error on casting types

Here is my code:
void main(){
  dynamic a = new LinkedHashSet<dynamic>();
  LinkedHashMap map =  a.cast<String>();
}

Dart version:
Dart VM version: 2.0.0-dev.60.0 (Mon Jun 4 22:09:13 2018 +0200) on "macos_x64"
When I try to run this code using pub run build_runner serve then I get a runtime error.
Type 'CastSet<dynamic, String>' is not a subtype of expected type 'LinkedHashMap<dynamic, dynamic>'.
This is because the method is in Set class and return CastSet instance

Oh, it seems a little wrong. Here is the code.
dynamic a = new LinkedHashSet<dynamic>();
LinkedHashSet map =  a.cast<String>();

We trying to migrate our development from Dartium to dartdevc. And in our product we have a lot of code like this:
// Generated code
  @override
  LinkedHashSet<Task> get subTasks => $persistStore.containsKey(#subTasks)
      ? $persistStore[#subTasks] as LinkedHashSet<Task>
      : ($object as TaskImpl).subTasks;

What is the best way to migrate this code? (We can't use Set instead of  LinkedHashSet because we have a lot of client code which depends on this)

And one more thing. Is it possible to configure the analyzer to show such errors?

So this?
// Generated code
  @override
  LinkedHashSet<Task> get subTasks => $persistStore.containsKey(#subTasks)
      ? new LinkedHashSet<Task>.from($persistStore[#subTasks] as Iterable)
      : ($object as TaskImpl).subTasks;

Question: $persistStore has instances of LinkedHashSet? Why are they not typed?

$persistStore is our cache. We store objects with the different types here, that's why we can't add types.

When do you add the LinkedHashSet<Task> to $persistStore? Does it have a generic type then? Could it?

This is a full example:
///
/// GENERATED CODE - DO NOT MODIFY BY HAND
///
  @override
  LinkedHashSet<Task> get subTasks => $persistStore.containsKey(#subTasks)
      ? $persistStore[#subTasks] as LinkedHashSet<Task>
      : ($object as TaskImpl).subTasks;

  @override
  set subTasks(LinkedHashSet<Task> value) {
    $persistStore[#subTasks] = value;
  }

We can not parameterize the method or class of the cache by its internal limitations related to the cache limitation

I see 3 problems here:

Perhaps we are doing something not optimal and we have to fix our application.
Analyzer and static type checking does not find such errors and they appear already in the browser (RuntimeError)
Dart programmers can not cast LinkedHasSet and maybe others classes from a standard  library by design

  @override
  set subTasks(LinkedHashSet<Task> value) {
    $persistStore[#subTasks] = value;
  }

Who calls this setter? Are they always providing a LinkedHashSet<Task>?

Yes. Code looks like this:
final subTasks = new LinkedHashSet<Task>.from(parentTask.subTasks);
final parent = getEditable();
parent.subTasks = subTasks();
keeper.applyChanges(parent);

// Generated code
  @override
  LinkedHashSet<Task> get subTasks => $persistStore.containsKey(#subTasks)
      ? new LinkedHashSet<Task>.from($persistStore[#subTasks] as Iterable)
      : ($object as TaskImpl).subTasks;

Did you try this? What happened?

@vsm @leafpetersen – RE issues w/ runtime errors, etc...

Did you try this? What happened?

It's hard to say now. I need time to check. There is a possibility that the performance will decrease and the order of the collection items will be lost.
I will check and write about the results later.

I don't understand how the code in https://github.com/dart-lang/sdk/issues/33386#issuecomment-395598633 relates to the code in https://github.com/dart-lang/sdk/issues/33386#issuecomment-395574715 .
The code in the first comment should never fail in the getter, assuming that the value returned from the getter is always a value injected via the setter (I don't know anything from that code about what happens in the ($object as TaskImpl).subTasks path).
I don't see anything having to do with .cast in that code snippet though, so I don't understand the relevance of the code in the second snippet.
With respect to https://github.com/dart-lang/sdk/issues/33386#issuecomment-395574715 , you really shouldn't be using LinkedHashSet as the type.  The type is Set, LinkedHashSet is just an implementation.  Unfortunately, we don't have a good way to express this in Dart.

cc @lrhn


Ubuntu 18.10 support

Is there any support for Ubuntu 18.10 (Cosmic Cuttlefish) in the near future? Kernel version 4.19

Please refer to displaylink-debian

I think we should split this into two questions:

is kernel 4.19 supported?
Yes, EVDI version 1.6.0 adds support for kernel 4.19 and 4.20.

is Ubuntu 18.10 suported?
This is not a question related to this repository, rather to DisplayLinkManager.
For this it is better to check displaylink home page or support page.


End users unlikely to type an "Em Dash" in BlockQuotes exercise as required by the solution

Commit fca73c066a67d1296bafae678b699c01aa26cd3a changed the solution for Blockquotes exercise to use Em Dash. Its unlikely that an end-user would type an Em Dash or an En Dash. This leads to a confusing error that is hard to decipher. Its also hard to generate an Em Dash in most text editors without a character map
Instructions simply state
"And add an original author to the quote right on the next line after this quote."
Likely user experience
So the user's first attempt will likely omit the dash. (Per instructions)
The diff will show a dash missing.
The user will attempt to correct and most likely type a simple Figure Dash.
This attempt which will fail with a diff that is hard to decipher.
For reference:
Em Dash : —
En Dash : –
Figure Dash: -

Will take a look at tomorrow. What do you think is best @denysdovhan?

@itzsaga em-dash isn't OK definitely, but simple minus-sign will produce a list item ¯_(ツ)_/¯

How about no newline? No hyphen/dash at all?

@wooorm this exercise is about _block_quotes, so I've aimed to show, that we can put a bunch of paragraphs under >.

Agreed, but then if we do:

To be, or not to be, that is the question. (William Shakespeare)

...or:

To be, or not to be, that is the question.
William Shakespeare

...it wouldn’t matter, right?

@schellingerhout fixed, and published asv1.4.2. Thanks for reporting!


Document the expected low performance of VideoPlayer on HTML5

See https://godotengine.org/qa/90673/webgl-export-is-unplayable-in-my-browser and many other questions scattered around the Internet.
We may want to go further and use WARN_PRINT_ONCE() in the VideoPlayer constructor in HTML5.

Thanks!

Thanks!

Cherry-picked for 3.2.4.

Cherry-picked for 3.2.4.


Icon request: Philips Hue

URL of the site or app (required): https://account.meethue.com
Logo resources for the icon (optional, but recommended): https://en.wikipedia.org/wiki/Philips_Hue#/media/File:Philips_hue_logo.png

I rather do icons for the main brand, if you don't mind that.
https://github.com/aegis-icons/aegis-icons/blob/master/PNG/Philips.png
https://github.com/aegis-icons/aegis-icons/blob/master/PNG/Variations/Philips alt.png


Code syntax highlighting for Markdown posts

...the current color scheme renders most variable names and libraries in white text, on a background that is very light-colored.  The result is unreadable.   Example: see "More code" in https://drscotthawley.github.io/devblog3/2020/02/20/sample-markdown-post.html.
It's the same highlighting scheme (Dracula) used for the notebooks, but for the notebooks the background is dark, so it's not a problem.
Can someone suggest how to either enforce a darker background for markdown posts, or suggest a different highlighting scheme (and how to install it) that will render well for both notebooks and markdown posts?

This has been fixed in the latest version of this repo.   See https://fastpages.fast.ai/2020/01/14/test-markdown-post.html

Ok, I see that in your version.  That looks good.
I would like to reproduce that! ;-)   In mine, after merge from upstream, I got a ton of conflicts in various control files I don't understand, which I've tried to resolve manually... but the result is that the code background is still colored lightly.    The assets/main.scss is identical to your new one, so... not sure. :shrug:   Will keep trying.

Got it. :+1:   Looks good. Thanks!

here is another bug with bash script. How to improve that? @hamelsmu

@zqfang this will be fixed by https://github.com/fastai/fastpages/pull/150


kubernetes properties don't show up

Following the instructions from https://quarkus.io/guides/kubernetes-resources, I can't get kubernetes.group to show up in application.properties completions.
I'm using this pom.xml:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.redhat.developer</groupId>
  <artifactId>tadaaa</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <properties>
    <surefire-plugin.version>2.22.0</surefire-plugin.version>
    <maven.compiler.target>1.8</maven.compiler.target>
    <quarkus.version>0.27.0</quarkus.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.parameters>true</maven.compiler.parameters>
    <compiler-plugin.version>3.8.1</compiler-plugin.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-bom</artifactId>
        <version>${quarkus.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-junit5</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-mongodb-panache</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-health</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-kubernetes</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-maven-plugin</artifactId>
        <version>${quarkus.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>build</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${compiler-plugin.version}</version>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <configuration>
          <systemProperties>
            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
          </systemProperties>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>native</id>
      <activation>
        <property>
          <name>native</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
                <configuration>
                  <systemProperties>
                    <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                  </systemProperties>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <properties>
        <quarkus.package.type>native</quarkus.package.type>
      </properties>
    </profile>
  </profiles>
</project>

I will defer to @iocanel who is the most qualified person to answer this :)

Thanks @iocanel for your great feedback!

Can we get vscode-quarkus use these objects?

Indeed it's the idea, introspect each fields from KubernetesConfig (and their extends class like BaseConfig) to generate kubernetes properties.
In short today we collect Quarkus properties by scanning all classes from classpath (and deployment JAR) which are annotated with @ConfigRoot and ConfigProperty. It seems Kubernetes extension doesn't use this mechanism.
The question is how to know that kubernetes properties must collect fields from KubernetesConfig ? My fear is to do that by hard coding this logic.
When pom.xml contains:
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-kubernetes</artifactId>
    </dependency>

We hard code the following process:

load quarkus-kubernetes-deployment in the classpath to load kubernetes-annotations which provides KubernetesConfig  class.
hard code the get of KubernetesConfig .
create properties by looping each fields from KubernetesConfig class (and their base class).

Let me explain more the idea:

KubernetesConfig which extends BaseConfig:

package io.dekorate.kubernetes.config;

import java.lang.String;
import io.dekorate.project.Project;
import io.dekorate.kubernetes.annotation.ImagePullPolicy;
import io.dekorate.kubernetes.annotation.ServiceType;
import java.lang.Object;
import java.util.Map;
import io.sundr.builder.annotations.Buildable;

@Buildable(builderPackage = "io.dekorate.deps.kubernetes.api.builder") public class KubernetesConfig extends BaseConfig{

    private io.dekorate.kubernetes.config.Container[] initContainers = new io.dekorate.kubernetes.config.Container[0];
    private int replicas = 1;

    public KubernetesConfig(){
    }
    public KubernetesConfig(Project project,Map<ConfigKey,Object> attributes,String group,String name,String version,io.dekorate.kubernetes.config.Label[] labels,io.dekorate.kubernetes.config.Annotation[] annotations,io.dekorate.kubernetes.config.Env[] envVars,String workingDir,String[] command,String[] arguments,String serviceAccount,String host,io.dekorate.kubernetes.config.Port[] ports,ServiceType serviceType,io.dekorate.kubernetes.config.PersistentVolumeClaimVolume[] pvcVolumes,io.dekorate.kubernetes.config.SecretVolume[] secretVolumes,io.dekorate.kubernetes.config.ConfigMapVolume[] configMapVolumes,io.dekorate.kubernetes.config.GitRepoVolume[] gitRepoVolumes,io.dekorate.kubernetes.config.AwsElasticBlockStoreVolume[] awsElasticBlockStoreVolumes,io.dekorate.kubernetes.config.AzureDiskVolume[] azureDiskVolumes,io.dekorate.kubernetes.config.AzureFileVolume[] azureFileVolumes,io.dekorate.kubernetes.config.Mount[] mounts,ImagePullPolicy imagePullPolicy,String[] imagePullSecrets,io.dekorate.kubernetes.config.Probe livenessProbe,io.dekorate.kubernetes.config.Probe readinessProbe,io.dekorate.kubernetes.config.Container[] sidecars,boolean expose,boolean autoDeployEnabled,io.dekorate.kubernetes.config.Container[] initContainers,int replicas){
            super(project, attributes, group, name, version, labels, annotations, envVars, workingDir, command, arguments, serviceAccount, host, ports, serviceType, pvcVolumes, secretVolumes, configMapVolumes, gitRepoVolumes, awsElasticBlockStoreVolumes, azureDiskVolumes, azureFileVolumes, mounts, imagePullPolicy, imagePullSecrets, livenessProbe, readinessProbe, sidecars, expose, autoDeployEnabled);
            this.initContainers = initContainers != null ? initContainers : new io.dekorate.kubernetes.config.Container[0];
            this.replicas = replicas;
    }

    public io.dekorate.kubernetes.config.Container[] getInitContainers(){
            return this.initContainers;
    }

    public int getReplicas(){
            return this.replicas;
    }
}

and  BaseConfig looks like:

package io.dekorate.kubernetes.config;

import java.lang.String;
import io.dekorate.project.Project;
import io.dekorate.kubernetes.annotation.ImagePullPolicy;
import io.dekorate.kubernetes.annotation.ServiceType;
import java.lang.Object;
import java.util.Map;
import io.sundr.builder.annotations.Buildable;

@Buildable(builderPackage = "io.dekorate.deps.kubernetes.api.builder") public class BaseConfig extends ApplicationConfiguration{

    private io.dekorate.kubernetes.config.Label[] labels = new io.dekorate.kubernetes.config.Label[0];
    private io.dekorate.kubernetes.config.Annotation[] annotations = new io.dekorate.kubernetes.config.Annotation[0];
    private io.dekorate.kubernetes.config.Env[] envVars = new io.dekorate.kubernetes.config.Env[0];
    private String workingDir = "";
    private String[] command = new java.lang.String[0];
    private String[] arguments = new java.lang.String[0];
    private String serviceAccount = "";
    private String host = "";
    private io.dekorate.kubernetes.config.Port[] ports = new io.dekorate.kubernetes.config.Port[0];
    private ServiceType serviceType = io.dekorate.kubernetes.annotation.ServiceType.ClusterIP;
    private io.dekorate.kubernetes.config.PersistentVolumeClaimVolume[] pvcVolumes = new io.dekorate.kubernetes.config.PersistentVolumeClaimVolume[0];
    private io.dekorate.kubernetes.config.SecretVolume[] secretVolumes = new io.dekorate.kubernetes.config.SecretVolume[0];
    private io.dekorate.kubernetes.config.ConfigMapVolume[] configMapVolumes = new io.dekorate.kubernetes.config.ConfigMapVolume[0];
    private io.dekorate.kubernetes.config.GitRepoVolume[] gitRepoVolumes = new io.dekorate.kubernetes.config.GitRepoVolume[0];
    private io.dekorate.kubernetes.config.AwsElasticBlockStoreVolume[] awsElasticBlockStoreVolumes = new io.dekorate.kubernetes.config.AwsElasticBlockStoreVolume[0];
    private io.dekorate.kubernetes.config.AzureDiskVolume[] azureDiskVolumes = new io.dekorate.kubernetes.config.AzureDiskVolume[0];
    private io.dekorate.kubernetes.config.AzureFileVolume[] azureFileVolumes = new io.dekorate.kubernetes.config.AzureFileVolume[0];
    private io.dekorate.kubernetes.config.Mount[] mounts = new io.dekorate.kubernetes.config.Mount[0];
    private ImagePullPolicy imagePullPolicy = io.dekorate.kubernetes.annotation.ImagePullPolicy.IfNotPresent;
    private String[] imagePullSecrets = new java.lang.String[0];
    private io.dekorate.kubernetes.config.Probe livenessProbe = null;
    private io.dekorate.kubernetes.config.Probe readinessProbe = null;
    private io.dekorate.kubernetes.config.Container[] sidecars = new io.dekorate.kubernetes.config.Container[0];
    private boolean expose = false;
    private boolean autoDeployEnabled = false;
...

and ApplicationConfiguration which extends BaseConfig looks like:

package io.dekorate.kubernetes.config;

import io.dekorate.Coordinates;
import io.dekorate.project.Project;
import io.sundr.builder.annotations.Buildable;

import java.util.Map;

@Buildable(builderPackage = "io.dekorate.deps.kubernetes.api.builder")
public class ApplicationConfiguration extends Configuration implements Coordinates {

  private String group;
  private String name;
  private String version;

With introspection of those classes, we could generate:

kubernetes.replicas (from KubernetesConfig)
kubernetes.labels[] (from BaseConfig)
kubernetes.group (from ApplicationConfiguration)

The question is how to know that we must collect fields from the Java class io.dekorate.kubernetes.config.KubernetesConfig with just pom dependency declaration:
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-kubernetes</artifactId>
    </dependency>

JDT Quarkus LS extension is able to load classes from quarkus-kubernetes-deployment (without declaring it in pom.xml) which provides KubernetesProcessor. After reading the code of this processor I suppose it's this class which load kubernetes properties. But there are no direct link to io.dekorate.kubernetes.config.KubernetesConfig.
My fear is that it uses introspection to load kubernetes properties by io.dekorate.Session in https://github.com/quarkusio/quarkus/blob/master/extensions/kubernetes/deployment/src/main/java/io/quarkus/kubernetes/deployment/KubernetesProcessor.java#L101
And in this case we have no way to know that we must instropect fields from KubernetesConfig.

What can we do to help?
Would it be of any use if we added a class inside the quarkus kubernetes extension, that lists all root configuration classes?

Another idea is to generate a descriptor with the format of your choice that returns the property names, similarly to how we generate the documentation tables (see https://quarkus.io/guides/kubernetes-resources).

Another idea is to generate a descriptor in the format of your choice

We already discussed about that in https://github.com/quarkusio/quarkus/issues/1655 but nothing was done, that's why we collect Quarkus properties by using annotations. IMHO I think we should:

have for each Quarkus extension a JSON file which provides all Quarkus properties. It will improve performances I think for collecting Quarkus properties from JAR.
collecting Quarkus properties by scanning source to collect properties from ConfigRoot and ConfigProperty annotations (like it is done today).

Here the JSON format that we use after collecting Quarkus properties: https://github.com/redhat-developer/quarkus-ls/blob/master/quarkus.ls/com.redhat.quarkus.ls/src/test/resources/com/redhat/quarkus/services/all-quarkus-properties.json
Here a sample:
{
			"propertyName": "quarkus.datasource.driver",
			"type": "java.util.Optional\u003cjava.lang.String\u003e",
			"docs": "The datasource driver class name",
			"extensionName": "quarkus-agroal",
			"location": "C:/Users/azerr/.m2/repository/io/quarkus/quarkus-agroal/0.21.1/quarkus-agroal-0.21.1.jar",
			"source": "io.quarkus.agroal.runtime.DataSourceBuildTimeConfig#driver",
			"required": false,
			"phase": 2
		}

location information could be omitted.
In other words if we have list of properties with name, source (we need that to manage go to definition), it should be very fantastic.
BUT even if we have this feature, I think we should develop specific code to manage the kubernetes.deployment.target=kubernetes, openshift
If I understand the documentation, it means that if we declare this property in application.properties, I should have completion for kubernetes.* and openshift*. properties.
It seems that you are opened to generate a descriptor, which is a cool news for vscode-quarkus, the question is. Is this descriptor will be generic and it should work for any Quarkus extensions or just for the kubernetes extension?

generic descriptor means that we must write a descriptor which exposes the properties according a condition (if I declare kubernetes.deployment.target=kubernetes, I must just have kubernetes.* properties)
not generic, it means that you could generate 2 descriptors for kubernetes and openshifht and in Quarkus LS side (vscode-quarkus), we hard code the condition.

@fbricon what do you think about that?

Can't the kubernetes extension use ConfigRoot and ConfigProperty annotations like the rest? That'd make the Quarkus ecosystem more consistent and would then work OOTB in vscode-quarkus

@angelozerr please open separate issue on your ideas for additional metadata that makes sense to have in extensions - we can definitely look at that. #1655 is done now ;)

Would it help if I provided a json descriptor with these information?

Would it help if I provided a json descriptor with these information?

Totally! Is there any chance that you will provide this feature?
If the answer is not, @fbricon I think we should support it by loading with hard coded the io.dekorate.kubernetes.config.KubernetesConfig class to introspect. We could do that in an Eclipse extension point to manage contribution of annotation to scan or class to load to get Quarkus properties.

@angelozerr i think we've said multiple times now we would like to add metadata approach for those plugins where the static introspection doesn't work well for you. But we aren't going to add a json structure as you suggested which has a lot of internal IDE needs.
Could we outline on  https://github.com/quarkusio/quarkus/issues/5229 the minimal set of data you think you need and we go from there ?

@angelozerr i think we've said multiple times now we would like to add metadata approach for those plugins where the static introspection doesn't work well for you. But we aren't going to add a json structure as you suggested which has a lot of internal IDE needs.

Sorry @maxandersen it was not clear for me, no it's very clear! thanks for the clarification!

Could we outline on quarkusio/quarkus#5229 the minimal set of data you think you need and we go from there ?

done in https://github.com/quarkusio/quarkus/issues/5229#issuecomment-556072590

@maxandersen @angelozerr: I spent some time today trying to generate the config classes that we need (pretty much replicate the dekorate config classes but with @ConfigRoot and @ConfigItem annotations).
One issue I am hitting is that it seems that when I do so, quarkus expects these properties prefixed with qurakus. while for the particular extension this is not the case (it has been decided that the properties won't be prefixed with quarkus. but with kubernetes., openshift. and so on.
This seems to be a similar case with some of the microprofile properties which are prefixed with mp.. How does vscode work with those properties?

This seems to be a similar case with some of the microprofile properties which are prefixed with mp.. How does vscode work with those properties?

We supports only quarkus properties. We would like to support microprofile properties, have you some documentation about mp prefix please ?
I'm refactoring our Quarkus properties collector to support microprofile, and I would like to support kubernetes., openshift prefix too.
The question is what is the rule to compute the proper prefix quarkus, mp, kuberntes, openshift ?

The question is what is the rule to compute the proper prefix quarkus, mp, kuberntes, openshift ?

Excellent question. @maxandersen any idea?

You mean in the quarkus-kubernetes extension ? then I don't know as it was made before I got around; but I can imagine its just that settings specific to kubernetes and openshift and thus not generic are put "outside" quarkus namespace.
@geoand in addition to @iocanel made most of the contributions to the extension ... I was hoping you would know ;)

I'll need to read the discussions here and get back to you :)

So here is the current Quarkus situation:
Almost all of the extensions use properties that are prefixed with quarkus. A few special cases like the Kubernetes extension and the smallrye reactive streams extensions use other prefixes that are entirely extension specific and there isn't a way for a tool to determine those prefixes currently.
From my perspective, I think that currently just hardcoding the exceptional prefixes for these extensions would be fine.

@iocanel @geoand as just suggested on https://github.com/quarkusio/quarkus/issues/5229#issuecomment-560306593 we might want to use something like springs config format as that seem to capture most we need .

@iocanel by waiting for Quarkus metada, I have started to support kubernetes, openshift properties.
Here a demo:

I'm using Spring Boot format, and here some example:

for kubernetes.name:

{
	"type": "java.lang.String",
	"sourceField": "name",
	"required": true,
	"phase": 0,
	"name": "kubernetes.name",
	"sourceType": "io.dekorate.kubernetes.config.ApplicationConfiguration"
}

for kubernetes.init-containers[*].image (I'm using [*] for syntax for index array:

{
	"type": "java.lang.String",
	"sourceField": "image",
	"required": true,
	"phase": 0,
	"name": "kubernetes.init-containers[*].image",
	"sourceType": "io.dekorate.kubernetes.config.Container"
}

To do that I'm introspecting each fields from the KubernetesConfig class.
The thing that I don't understand is about Docker https://quarkus.io/guides/kubernetes#docker. I think there is some bugs with table generation (for instance auto-push-enabled should be on property column).
The question is what is the proper property? For instance the doc says that kubernetes.docker-file is a property. KubernetesConfig doesn't provides this dockerFile field, but DockerBuildConfig provides it. My feeling is that we must instrospect too DockerBuildConfig which kubernetes prefix. But if I do that I will have another properties like kubernetes.auto-push-enabled, is it a valid property ?
Many thanks for your answer.

Looks awesome!
Properties found in DockerBuildConfig are meant to be prefixed with docker.

Looks awesome!

Glad it pleases you :)

Properties found in DockerBuildConfig are meant to be prefixed with docker.

I have generated properties by following this strategy.
But I don't understand where kubernetes.docker-file property comes from?
I understand that for docker.docker-file comes from the ImageConfiguration#dockerFile field (because DockerBuildConfig extends ImageConfiguration) but KubernetesConfig doesn't extend ImageConfiguration, so my question is how to generate kubernetes.docker-file property ?

@iocanel I wonder if it should be better to use https://github.com/dekorateio/dekorate/blob/master/annotations/kubernetes-annotations/src/main/java/io/dekorate/kubernetes/annotation/KubernetesApplication.java instead of generated class KubernetesConfig to generate properties.
Using KubernetesApplication will provide:

the documentation extract from Javadoc
the default value

What do you think about that?
The thing is that I don't understand is that you duplicate some fields in KubernetesApplication  (which generates KubernetesConfig class which extends BaseClass) and Base (which generates BaseConfig class) annotation, why KubernetesApplication  doesn't extends Base annotation?

AFAIK it's not possible one annotation to extend another.

Forger m'y commentés you are right.
But could you tell me if it should be a better Idea to use
KUbernetesApplication instead of kubernetesconfig class
Le sam. 21 déc. 2019 18:08, Ioannis Canellos<EMAIL_ADDRESS>a
écrit :

AFAIK it's not possible one annotation to extend another.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/redhat-developer/vscode-quarkus/issues/129?email_source=notifications&email_token=AAOXXM3UIEWKIECVIXJIZMDQZZER7A5CNFSM4JG2ADT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHO72SQ#issuecomment-568196426,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAOXXM53X3MBXIPBXE62XZLQZZER7ANCNFSM4JG2ADTQ
.

There shouldn't be much of a difference as the config is generated from the annotation. Both should work fine. The annotation has the benefit of being flat (no inherited fields).

fixed with https://github.com/redhat-developer/quarkus-ls/pull/170

Hi @iocanel, is it normal for the Quarkus Kubernetes deployment JAR to not have a dependency to s2i? If this is normal, which dependency can I add to the pom to have the s2i build annotation?

You shouldn't need any additional jar. If you configure open shift as the target platform s2i related resources will be created for you (image streams and build config).

@iocanel the kubernetes ans openshift properties are generated from the kubernetesapplication ans openshift application annotations comming from the dekorate jar. This dekorate jar is added in the classpath when you declare thé quarkus-kubernetes depency in your pom.xml. in this case WE load the quarkus-kubernes-deployment jar which have dependencies in his pom to kubernetes and openshift dekorate jars but there are no dependency to s2i dekorate annotation? Perhaps the quarkus-kubernetes-dependency should have a dependency to the s2i dekorate jar,no?

It's a transitive. openshift-annotations depends on s2i-annotations.
On Fri, Jan 3, 2020, 19:59 Angelo<EMAIL_ADDRESS>wrote:

@iocanel https://github.com/iocanel the kubernetes ans openshift
properties are generated from the kubernetesapplication ans openshift
application annotations comming from the dekorate jar. This dekorate jar is
added in the classpath when you declare thé quarkus-kubernetes depency in
your pom.xml. in this case WE load the quarkus-kubernes-deployment jar
which have dependencies in his pom to kubernetes and openshift dekorate
jars but there are no dependency to s2i dekorate annotation? Perhaps the
quarkus-kubernetes-dependency should have a dependency to the s2i dekorate
jar,no?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/redhat-developer/vscode-quarkus/issues/129?email_source=notifications&email_token=AADCEWEIITXLKIN33ANPFB3Q354GJA5CNFSM4JG2ADT2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEIBWRCI#issuecomment-570648713,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADCEWFK2PBY5OTJE5RGJNDQ354GJANCNFSM4JG2ADTQ
.

@iocanel thanks a lot for your answer. It was a bug on our side that I have tried to fix it in https://github.com/redhat-developer/quarkus-ls/pull/179

@xorye could you review it please?

Looks awesome!


Fixed issue regarding quotes in android xml files

After I check some of the possiblities of Android xml files I realized, that it's possible to create an entry which starts and ends with a quote.
If you do that it's no longer necessary to escape single quotes in between the quotes.
To fix that I overwrote the process_value method in the csv2android class and handle the quotes correctly.
I created an unittest to verify that functionality.

Coverage increased (+0.14%) to 88.21% when pulling cb399afa44ff2cb1505db36148ad39b467778a59 on Neoklosch:fix-52 into f98c502ed2c7962cb18b4882eaf43d9c679c9dc0 on netbe:master.

Coverage increased (+0.14%) to 88.21% when pulling 6b01d3e917326a25d2f975af05f0531461263e3c on Neoklosch:fix-52 into f98c502ed2c7962cb18b4882eaf43d9c679c9dc0 on netbe:master.

@Neoklosch could #76 be fixed by this PR?

hey @Neoklosch, will you have fix the @houndci comments of this PR any time soon?


Adding explicit package references to fix CG alerts

Description
Fixing two CG alerts that come from transitive package references:
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2135048
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2135049
Note: I don't know why it's showing Merq.Vsix.csproj as being edited when I'm only adding two lines to itach. If anyone knows how to fix this, please let me know.
PR Checklist

[x] Title is meaningful

[x] Work Item is linked

[x] Changes are described

Tests

[ ] Automated tests are added
OR

[x] N/A: Infrastructure
OR
[ ] Upcoming sprint Work Item:
OR
[ ] Test exception

I don't know why it's showing Merq.Vsix.csproj as being edited when I'm only adding two lines to it

Typically, it happens because you changed encoding of the file -- it may have been UTF-16, and you made it UTF-8, or other way around.


About training process and evaluation

Hi, thanks for the impressive work. When I was studying the work , I was confused about some issues about the work.

Did you use the "observation" annotation files (specifically "scene_obs" and "robot_obs") in CALVIN dataset during the training process? I see that the rgb images are directly encoded by the Vit and resampler,  the whole end-to-end process doesn't envolve the "observation" annotations. Did you use the "observation" info to finetune (or pretrain) the resampler?
When I used the weigth checkpoint_gripper_post_hist_1_aug_10_4_traj_cons_ws_12_mpt_dolly_3b_2.pth on HF to evaluate on CALVIN debug dataset,  I got all result 0.0%.  Any suggestions?
Also, did you use the "task" annotation (eg. in CALVIN: "turn_on_lightbulb") during the training?
Looking forward to your reply, thanks.

hello do you solve this problem 2.


@orta -> finish up logout stuff

this works!
fixes https://github.com/artsy/eigen/issues/263

no idea what the search view failures are but i don't think they have anything to do with this pr.

Looks good 👍

can't merge alas


now initializing the timestamp parameter in case it is not set manually

fixes #2914681, where the timestamp may become null

@legionth this modifies the public interface of ApiAction. Do you think that can become a problem?

I can't see where this PR touches the ApiAction. Could you point out the part, where this could be a problem?
As far as I can see this PR handles only internal methods and this shouldn't be a problem for end-users of this library.

You're right, it was the previous PR that modified the constructor of ApiAction.


limit actions per day

What would you like to be added:
it would be nice if we can specify the max number of follows/likes per day , and when that limit has been reached basically just quit the script
Why is this needed:
because IG has a daily limit per day that if we go overboard then account would get temp blocked, i know right now there is a way to specify repeat x-y minutes

Likely will be added with #32 which has an unknown ETA.

Are there any updates on this enhancement?

I also think that an option to limit the number of likes, for example, over a period of 24 hours would be really useful.


Fix mining issue with incorrect reward.

Miners use default block target to calculate block reward while verification code use calculated target value to verify this block,  this is the reason of the error during the mining. This pull requests fixes reward calculation for block generation.
Also I have added the Linux build fix in this PR,  tell me if it is wrong,  I'll add it in separate pull request.

Once this is merged successfully, please swap daemon running on testnet servers. Thanks.

Is it ready for merge?

https://github.com/qwertycoin-org/qwertycoin/blob/398e30a76a8494cab5afb8caf61ef82afd598f66/lib/CryptoNoteCore/Core.cpp#L699
How will this code interact with above implementation?

It is compatible,  but last commit in this PR is not required really, https://github.com/qwertycoin-org/qwertycoin-testnet/blob/131d186e449d7896d0b13945e74d4c8c41a583b2/lib/CryptoNoteCore/Core.cpp#L740 ,  this condition will not be fulfilled really due to the code you are pointed. I can remove the last commit if you think it is better.

Is it ready for merge?

Is this question addressed to me?) If yes,  I think it is ready,  don't see any new issues from my side.)

Yes I think it is ready and let's load the new daemon on testnet servers.


Add how to prononce kured

While it does not bother Daniel much, I have been asking for this for years, as it's been bothering me.
We finally decided in the last meeting for a way to say "kured".
This fixes it by documenting in the FAQ, as it is probably not worth putting on the front page anyway (we did not care for it in the last 4 years, it should not start now...)

Thanks for the approval @dholbach . It means a lot to me :)


Update dependencies for Senzing 3.8.0

See https://github.com/Senzing/senzing-tools/issues/137

Pull requests:

https://github.com/Senzing/go-sdk-abstract-factory/pull/125

Pull requests:

https://github.com/Senzing/go-sdk-abstract-factory/pull/127


WIP: add c bindings of lgraph api

Here are c api bindings for lgraph.
The implementation is really intuitive.

Every C++ class within lgraph_api namespace is ported to an opaque c struct struct lgraph_api_cxx_class_name_t.
All public constructors are ported to c functions with signature like lgraph_api_cxx_class_name_t* lgraph_api_cxx_class_name_create(param1, param2, ...)
All destructors are ported to c functions with signature like void lgraph_api_cxx_class_name_destroy(lgraph_api_cxx_class_name_t*)
All public methods are ported to c functions with signature like return_type lgraph_api_cxx_class_name_method_name(param1, param2, ...). If there are multiple overloaded variants, there should be like return_type lgraph_api_cxx_class_name_method_name_{by, with}_param1(param1, param2, ...)
C++ exceptions are ported to c string storing the error message returned from e.what()

 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.antkiller996 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Now, c biindings are packed  into lgraph_api target and src/c/c.cpp is moved to src/lgraph_api/c.cpp. @wangtao9


[BUG] Single Replica Node Down test cases fail

Describe the bug
The following Single Replica Node Down test cases:
Single Replica Node Down Deletion Policy do-nothing With RWO Volume Replica Locate On Volume Node
Single Replica Node Down Deletion Policy delete-deployment-pod With RWO Volume Replica Locate On Replica Node
Single Replica Node Down Deletion Policy delete-deployment-pod With RWO Volume Replica Locate On Volume Node
Single Replica Node Down Deletion Policy delete-both-statefulset-and-deployment-pod With RWO Volume Replica Locate On Replica Node
Single Replica Node Down Deletion Policy delete-both-statefulset-and-deployment-pod With RWO Volume Replica Locate On Volume Node

fail for the same reason as https://github.com/longhorn/longhorn/issues/9498:
KEYWORD volume_keywords . Wait For Volume Faulted ${volume_name}
Start / End / Elapsed: 	20241011 16:54:19.505 / 20241011 17:14:24.750 / 00:20:05.245
17:14:24.749 	FAIL 	AssertionError

KEYWORD volume_keywords . Wait For Volume Attaching ${volume_name}
Start / End / Elapsed: 	20241011 17:19:20.743 / 20241011 17:39:26.018 / 00:20:05.275
17:39:26.017 	FAIL 	AssertionError

https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1609/robot/report/log.html
Need to confirm if these failures are actual issues or the Wait For Volume Faulted and Wait For Volume Attaching steps should be removed.
To Reproduce
Run robot test case:
Single Replica Node Down Deletion Policy do-nothing With RWO Volume Replica Locate On Volume Node
Single Replica Node Down Deletion Policy delete-deployment-pod With RWO Volume Replica Locate On Replica Node
Single Replica Node Down Deletion Policy delete-deployment-pod With RWO Volume Replica Locate On Volume Node
Single Replica Node Down Deletion Policy delete-both-statefulset-and-deployment-pod With RWO Volume Replica Locate On Replica Node
Single Replica Node Down Deletion Policy delete-both-statefulset-and-deployment-pod With RWO Volume Replica Locate On Volume Node

Expected behavior

Support bundle for troubleshooting

Environment

Longhorn version: v1.7.2-rc1
Impacted volume (PV):
Installation method (e.g. Rancher Catalog App/Helm/Kubectl): kubectl
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: v1.30.0+k3s1

Number of control plane nodes in the cluster:
Number of worker nodes in the cluster:

Node config

OS type and version: sles 15-sp6
Kernel version:
CPU per node:
Memory per node:
Disk type (e.g. SSD/NVMe/HDD):
Network bandwidth between the nodes (Gbps):

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal):
Number of Longhorn volumes in the cluster:

Additional context

Workaround and Mitigation

cc @c3y1huang

Setting node down deletion policy: delete-deployment-pod and delete-both-statefulset-and-deployment-pod are not functioning as expected. The volume attachment is not being removed. Checking wether this is caused by https://github.com/longhorn/longhorn-manager/pull/3138.

Testing with the same image used for https://github.com/longhorn/longhorn-manager/pull/3201#issuecomment-2408581275:

https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1690/
https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1691/
https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1692/
https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1693/

Verification passed on master-head (longhorn-manager 56903ba). Test cases related to Single Replica Node Down passed: https://ci.longhorn.io/job/private/job/longhorn-e2e-test/1725/


Grafana Integration

Needs thought/specification. Plan is to do simple annotations of flag changes in v1.

v2 plans:

Look into Grafana alerts to attach to features in Flagsmith
Look into k6 to understand what integration options are available to us


[Reply] Add carousel card banner

Dark
Light

PR was approved in https://github.com/Renzo-Olivares/gallery/pull/36


Number function does not cover complex objects

Functions.Number only works if the argument is a built-in type. If it were passed object or map or list then something would go wrong.

Suggestions ...?
Sorry, it's late where I live. I will dive into all your TODOs more carefully on Saturday/Sunday, which are my days off from work ...
Feel free to provide me with pull requests for obvious things before that though if you'd like to :)

I see your point about being able to "transform" other "things" to numbers, for instance DateTime comes to mind, list could return Count, etc - But I believe this would possibly make the method very large. If you have some specific examples of things you simply "must have the possibility of creating numbers out of", feel free to provide a short list, and I'll consider it none the less ...
I'll leave this one open for others to jump in and "vote" for though ... :)


Create show view

Right now, only index view is supported for each model.
Create the show view.
In courses, this will show course description and all sections of the course.
In schools, this will show all departments in the school.
In departments, this will show all courses in the department.
In sections, this will link back to the course

All done!


Disable automatic dismiss

Would be nice to have an option to not auto dismiss for danger or warning conditions.

Just set the delay to 0.


chore(connlib): only refresh DNS for connections that are in use

With the current behavior after a connection stops being used it will trigger a refresh DNS after every 30 seconds forever.
This can be bad for a gateway that could be handling more than thousands of domain names.
This was prevented before by only setting slated_for_refresh when we see the first packet, this was deprecated in favor of checking times in the handle_timeout.
So the solution now is to check that the connection is being used currently before triggering any DNS refresh.

This was prevented before by only setting slated_for_refresh when we see the first packet, this was deprecated in favor of checking times in the handle_timeout.

I didn't realise I broke that in the refactoring :sweat_smile: Ups.

This was prevented before by only setting slated_for_refresh when we see the first packet, this was deprecated in favor of checking times in the handle_timeout.

I didn't realise I broke that in the refactoring 😅 Ups.

I mean, I didn't realize during my review neither!


Failed to delete azure network

Describe the bug

Steps to reproduce

Add template with source https://github.com/walrus-catalog-sandbox/terraform-azure-mysql.
Using the template to create a resource and don't specify the VPC id.
Delete the resource and the deletion result.

Result

Deleting resource failed because network deletion failed.

Expected behavior

Environment

Walrus version: main fa6e56aca10e61259243c938130c8e63dd19ba27
UI version: dev-4218197

Additional context
Add any other context about the problem here.

Environment

Walrus version: main 61fe2d23f46237867cf199c44a3275ee71b7805d
UI version: dev-38aab29

Test Result:
template version v0.1.3 :pass


Smp relnotes 2023 03 10 doc 2765

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ ] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Preview environment: https://hdh.pr.harness.io/pr-992

Preview environment: https://hdh.pr.harness.io/pr-992


Problems with xlsm file using ActiveX elements after saving

Description
We are using this library for copying data from source.xlsm file to destintation.xlsm file. The destintation.xlsm has some ActiveX Controls as well. After copying a cell value from source to destintation and saving it we opened it in Excel and it loses the ActiveX Control.
Instead it shows a shape with a macro connected/assigned to it.
A simple way to reproduce the same issue is the following
Steps to reproduce the issue:

Create a xlsm file with a ActiveX Control CommandButton
Douple click on it and add an event handler
Use excelize library and change any cell value and save it

Example files
Original Source file(before saving)
https://www.dropbox.com/s/9glskdk2dwyl8xr/before_ws.xlsm?dl=0
After saving (A1 cell is set to hello)
https://www.dropbox.com/s/zoor0m6cjl7q7p2/after_ws.xlsm?dl=0
Describe the results you received:
ActiveX Controls changed to a shape and ActiveXControls are getting lost
Describe the results you expected:
ActiveX controls still persist and are functional
Output of go version:
go1.12.6
Excelize version or commit ID:
da99334f
Mon Aug 19 16:52:14 2019
Environment details (OS, Microsoft Excel™ version, physical, etc.):
Windows 7 and OS

Hi @dennisfleischmann, the link of the example source file is the same as the saved file.

@Xuri Ah sorry. Done

Hi @dennisfleischmann, I have fixed it. Please try to upgrade the library with the master branch code.


Add username's file

change mobile number at<EMAIL_ADDRESS>my old mobile number was<PHONE_NUMBER>1....change to new number<PHONE_NUMBER>6


Write more unit tests for functions

This is separate from plotting tests...

This has been fixed by a flurry of commits, ending with 2c2d6bd.
Everything in penguins/dataset.py is now almost fully tested, except for the plotting code, which needs to be dealt with on another day. It's another issue (#11).


BUG: Borders missing after dropping components over it

Hi!
We have found this bug that is removing the border from columns when you drop components into it specifically over the border drawing even with the sorter indicating the right place. The strangest thing is that it only removes the border from the view. If you open the styles panel the values are still there and if you change anything it will re-render and it works again.  And if you open the export-code modal or check the view by inspecting the elements it still has the border attributes as mjml standards.
All of this was tested in the demo and only happens in the mjml editor.
Here is the expected behavior. The block dragged is being dropped in the center of the column and then added normally.
Screencast from 23-10-2023 11:38:36.webm
But here is the current behavior. The block is being dragged over the column but is dropped over the border itself. The sorter is still indicating the bottom of the column the way it was suppose to. In this case i added border-radius so it is possible to see that after the border disappears the radius is still there. Then I changed 1px in the border-width and the border comes back as it was.
Screencast from 23-10-2023 11:40:14.webm
I have put debuggers in every function of the core and column model and view to see what was being triggered. Checked sorter and canvas events to see if it was getting some target wrong and nothing. I'm current trying to pass over the entire drop component cycle from grapes but still with no success.
If someone has any ideas or directions for where to keep debugging in the grapes cycle from the moment it drag over, drop the component to the moment it is rendered i would appreciate the help.
Thanks.

Here is the culprit, not sure why but it was there from the beginning of the file... I'll remove it as I don't see any valid reason behind it.