LocalLLM Trelis/Llama-2-7b-chat-hf-function-calling-v2 loaded via LM Studio is not working with MemGPT

Describe the bug
Basically when
To Reproduce
Steps to reproduce the behavior:

Open LMStudio
Download model
Visit fourth menu item (local interface server)
Select model on top
Click on Start Server
As an assertion using the example client request should give a valid response
Visit memgpt cloned github repo
Execute python main.py --no_verify
Legacy CLI ? select Yes
Use most recent config ? select No
Which model to use ? Select default gpt-4
Select default "sam" persona
select default "basic" (Chad) user
Would you like to preload anything in archival memory ? Select No
Hit enter to begin
Get in terminal the error described and shown below

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Additional context
export OPENAI_API_BASE=http://<IP_ADDRESS>:5050
export BACKEND_TYPE=lmstudio

How did you install MemGPT?
From source with git clone git@github.com:cpacker/MemGPT.git and pip install -r requirements.txt
Your setup (please complete the following information)

Macbook Pro M2
Where you're trying to run MemGPT from Terminal
Your python version (run python --version): 3.11.4
Your current git commit (run git describe --tags): 0.1.15-36-g54e5aef

Local LLM details
If you are trying to run MemGPT with local LLMs, please provide the following information:

Model: https://huggingface.co/Trelis/Llama-2-7b-chat-hf-function-calling-v2.  Yes (if I understand the question)
The full output (or as much as possible) of where the LLM is failing:

Hit enter to begin (will request first MemGPT message)

Warning: no wrapper specified for local LLM, using the default wrapper
step() failed
user_message = None
error = Failed to decode JSON from LLM output:
{"Hello!  I'm so excited to help y..."
}

Failed to decode JSON from LLM output:
{"Hello!  I'm so excited to help y..."
}
An exception ocurred when running agent.step():
Traceback (most recent call last):
  File "/Users/gp/Desktop/MemGPT/memgpt/local_llm/llm_chat_completion_wrappers/airoboros.py", line 392, in output_to_chat_completion_response
    function_json_output = json.loads(raw_llm_output)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 2 column 1 (char 99)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/Desktop/MemGPT/memgpt/local_llm/llm_chat_completion_wrappers/airoboros.py", line 395, in output_to_chat_completion_response
    function_json_output = json.loads(raw_llm_output + "\n}")
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 2 column 1 (char 99)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/Desktop/MemGPT/memgpt/main.py", line 544, in run_agent_loop
    new_messages, user_message, skip_next_user_input = await process_agent_step(user_message, no_verify)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/main.py", line 520, in process_agent_step
    new_messages, heartbeat_request, function_failed, token_warning = await memgpt_agent.step(
                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/agent.py", line 1084, in step
    raise e
  File "/Users/gp/Desktop/MemGPT/memgpt/agent.py", line 1029, in step
    response = await get_ai_reply_async(model=self.model, message_sequence=input_message_sequence, functions=self.functions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/agent.py", line 160, in get_ai_reply_async
    raise e
  File "/Users/gp/Desktop/MemGPT/memgpt/agent.py", line 141, in get_ai_reply_async
    response = await acreate(
               ^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/openai_tools.py", line 115, in wrapper
    raise e
  File "/Users/gp/Desktop/MemGPT/memgpt/openai_tools.py", line 95, in wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/openai_tools.py", line 124, in acompletions_with_backoff
    return get_chat_completion(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/local_llm/chat_completion_proxy.py", line 62, in get_chat_completion
    chat_completion_result = llm_wrapper.output_to_chat_completion_response(result)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/Desktop/MemGPT/memgpt/local_llm/llm_chat_completion_wrappers/airoboros.py", line 397, in output_to_chat_completion_response
    raise Exception(f"Failed to decode JSON from LLM output:\n{raw_llm_output}")
Exception: Failed to decode JSON from LLM output:
{"Hello!  I'm so excited to help y..."
}

? Retry agent.step()? (Y/n)

Running main.py always causes an error, they havent' fixed it yet. However I have a workaround for this:
https://www.youtube.com/watch?v=zHtFuQiqhIo
Here's the bat file, make sure to change the file directories to where your python and venv folder will be:
@echo off
:: Define the paths to Python and the venv
set PYTHON_EXECUTABLE=C:\Users\ADMIN\AppData\Local\Programs\Python\Python310\python.exe
set VENV_DIR=D:\AI\ChatBots\MemGPT_Setup\venv
:: Create the virtual environment
"%PYTHON_EXECUTABLE%" -m venv "%VENV_DIR%"
:: Check if the virtual environment creation was successful
if %errorlevel% neq 0 (
echo An error occurred while creating the virtual environment. Press any key to exit.
pause >nul
exit /b %errorlevel%
)
:: Activate the virtual environment
call "%VENV_DIR%\Scripts\activate"
:: Install pymemgpt using pip
pip install pymemgpt
pip install transformers
pip install torch
:: Check if the installation was successful
if %errorlevel% neq 0 (
echo An error occurred while installing pymemgpt. Press any key to exit.
pause >nul
exit /b %errorlevel%
)
set OPENAI_API_BASE=http://localhost:1234
set BACKEND_TYPE=lmstudio
cls
:: Run memgpt (replace this with your specific memgpt command)
memgpt run --no_verify
:: Check if memgpt encountered an error
if %errorlevel% neq 0 (
echo An error occurred while running memgpt. Press any key to exit.
pause >nul
exit /b %errorlevel%
)
:: Deactivate the virtual environment
deactivate
:: Pause to allow the user to review the output
echo Press any key to exit.
pause >nul

This also reduces the error when generating an output from LM Studio. It's not perfect as there are times you have to retry to get the correct format of the model response but for me it only happens 9 every 10 proper responses.

@ProjCRys the bug is described for MacOS.
Either way translating your steps for Macos and trying them in terminal I eventually still ended up with this error in output of memgpt:
Warning: no wrapper specified for local LLM, using the default wrapper (you can remove this warning by specifying the wrapper with --model)
step() failed
user_message = None
error = Failed to parse JSON from local LLM response - error: Failed to decode JSON from LLM output:
{Hey, thanks for login! How can I assist you today? :D
### Inner Monologue: w00t! First time user! 🚀
} - error
JSONDecodeError.__init__() missing 2 required positional arguments: 'doc' and 'pos'
Failed to parse JSON from local LLM response - error: Failed to decode JSON from LLM output:
{Hey, thanks for login! How can I assist you today? :D
### Inner Monologue: w00t! First time user! 🚀
} - error
JSONDecodeError.__init__() missing 2 required positional arguments: 'doc' and 'pos'
An exception ocurred when running agent.step():
Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/json_parser.py", line 53, in clean_json
    data = json.loads(raw_llm_output)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/json_parser.py", line 56, in clean_json
    data = json.loads(raw_llm_output + "}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/json_parser.py", line 18, in extract_first_json
    return json.loads(string[start_index : i + 1])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/llm_chat_completion_wrappers/airoboros.py", line 397, in output_to_chat_completion_response
    function_json_output = clean_json(raw_llm_output)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/json_parser.py", line 59, in clean_json
    data = extract_first_json(raw_llm_output + "}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/json_parser.py", line 20, in extract_first_json
    raise json.JSONDecodeError(f"Matched closing bracket, but decode failed with error: {str(e)}")
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: JSONDecodeError.__init__() missing 2 required positional arguments: 'doc' and 'pos'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/chat_completion_proxy.py", line 81, in get_chat_completion
    chat_completion_result = llm_wrapper.output_to_chat_completion_response(result)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/llm_chat_completion_wrappers/airoboros.py", line 399, in output_to_chat_completion_response
    raise Exception(f"Failed to decode JSON from LLM output:\n{raw_llm_output} - error\n{str(e)}")
Exception: Failed to decode JSON from LLM output:
{Hey, thanks for login! How can I assist you today? :D
### Inner Monologue: w00t! First time user! 🚀
} - error
JSONDecodeError.__init__() missing 2 required positional arguments: 'doc' and 'pos'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/main.py", line 544, in run_agent_loop
    new_messages, user_message, skip_next_user_input = await process_agent_step(user_message, no_verify)
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/main.py", line 520, in process_agent_step
    new_messages, heartbeat_request, function_failed, token_warning = await memgpt_agent.step(
                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/agent.py", line 1114, in step
    raise e
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/agent.py", line 1059, in step
    response = await get_ai_reply_async(model=self.model, message_sequence=input_message_sequence, functions=self.functions)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/agent.py", line 163, in get_ai_reply_async
    raise e
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/agent.py", line 144, in get_ai_reply_async
    response = await acreate(
               ^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/openai_tools.py", line 115, in wrapper
    raise e
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/openai_tools.py", line 95, in wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/openai_tools.py", line 124, in acompletions_with_backoff
    return get_chat_completion(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/gp/anaconda3/lib/python3.11/site-packages/memgpt/local_llm/chat_completion_proxy.py", line 85, in get_chat_completion
    raise LocalLLMError(f"Failed to parse JSON from local LLM response - error: {str(e)}")
memgpt.errors.LocalLLMError: Failed to parse JSON from local LLM response - error: Failed to decode JSON from LLM output:
{Hey, thanks for login! How can I assist you today? :D
### Inner Monologue: w00t! First time user! 🚀
} - error
JSONDecodeError.__init__() missing 2 required positional arguments: 'doc' and 'pos'

Oh it think it must be the preprompt from the LM Studio preset.
This is what I did so that LM Studio would consistently give the correct format for memgpt response
https://m.youtube.com/watch?v=zHtFuQiqhIo&t=22s

@ProjCRys the workaround that you suggested is not useful unfortunately as memgpt is constantly changing these days. It seems that regarding the configuration we have taken a step back as it can be seen from the setup and the error below:
memgpt configure

but upon execution of memgpt run

So this is still a valid bug that is not fixed, or need a better step by step help/manual to make it work

@pligor can you use set the default embedding endpoint to "local" instead?
Also, does your endpoint support embeddings?

Could you also share whats in your '~/.memgt/config` file (with any keys removed)

@ProjCRys the workaround that you suggested is not useful unfortunately as memgpt is constantly changing these days. It seems that regarding the configuration we have taken a step back as it can be seen from the setup and the error below: memgpt configure  but upon execution of memgpt run
So this is still a valid bug that is not fixed, or need a better step by step help/manual to make it work

I made some updates on how I ran MemGPT. Instead of creating a vemv with 'memgpt run' I changed the bat file to this. Still using this and it's still working fine.
(change the directories where you want to place them.)
@echo off
setlocal
REM Define the paths
set VENV_PATH=D:\AI\ChatBots\MemGPT_Setup\venv
set MEMGPT_PATH=D:\AI\ChatBots\MemGPT_Setup\MemGPT
set PYTHON_PATH=C:\Users\ADMIN\AppData\Local\Programs\Python\Python310\python.exe
REM Create the virtual environment
"%PYTHON_PATH%" -m venv "%VENV_PATH%"
if errorlevel 1 (
echo Error: Unable to create the virtual environment. Press any key to exit.
pause >nul
exit /b
)
REM Activate the virtual environment
call "%VENV_PATH%\Scripts\activate"
if errorlevel 1 (
echo Error: Unable to activate the virtual environment. Press any key to exit.
pause >nul
exit /b
)
REM Install required dependencies from the correct directory
pip install -r "%MEMGPT_PATH%\requirements-local.txt"
set OPENAI_API_BASE=http://localhost:1234
set BACKEND_TYPE=lmstudio
if errorlevel 1 (
echo Error: Failed to install dependencies. Press any key to exit.
pause >nul
exit /b
)
REM Run the 'python -m memgpt' command
python MemGPT/main.py
if errorlevel 1 (
echo Error: 'python -m memgpt' encountered an error. Press any key to exit.
pause >nul
exit /b
)
REM Deactivate the virtual environment
deactivate
REM Wait for the user to press any key before exiting
pause >nul

Thanks @ProjCRys but your solution is out of scope as this defect is referring to MacOS and not Windows, no .bat files here.
@sarahwooders perhaps LMStudio cannot be used at all ? From this link it seems that LMStudio lacks supporting Grammar https://memgpt.readthedocs.io/en/latest/local_llm/
One can start experimenting when has at least something running.
Could you develop in the page above a longer step-by-step guide for dummies ?
There are lots of open questions of what to select in steps of memgpt configure and memgpt run to have a safe first run and then one can take from there to experiment with other options and other models.

LM Studio still does not have grammar support atm, however the JSON parsers should be more robust than they were a few weeks ago so you may have better luck.
Success of MemGPT will depend highly on how good the LLM is at generated structured outputs (eg JSON). Currently dolphin 2.2.1 and openhermes 2.5 are our recommendations for local/open LLMs. Check the #model-chat page on Discord for other notes on models we / the community have tested.


Readme modification

Closing - need to create new branch so as not to pick up other changes from this branch.


[Automation] Generate Fluent Lite from Swagger relay#package-2017-04

[Automation] Generate Fluent Lite from Swagger relay#package-2017-04

/azp run java - relay - ci

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure.resourcemanager:azure-resourcemanager-relay

need uuid-as-string setting


KAFKA-13509: Support max timestamp in GetOffsetShell

More detailed description of your change
Support max timestamp in GetOffsetShell which we added in KIP-734.
Summary of testing strategy (including rationale)
test locally:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server localhost:9092 --topic topic1 --time -1
topic1:0:10000
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server localhost:9092 --topic topic1 --time -2
topic1:0:0
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server localhost:9092 --topic topic1 --time -3
topic1:0:9979

cc @dajac @thomaskwscott .🤝

ping @dajac

Thank you for your review @dajac, call for a second review.

@dajac Thank you for your reply, I rewrote listPartitionInfos and related code according to your suggestion, PTAL again.

@showuon @dajac Please take a look again.

The latest commit rebased on the trunk and add support earliest, latest and max-timestamp for --time. I also test them locally:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell ---bootstrap-server localhost:9092 --topic cdp-event-collect --time max-timestamp
cdp-event-collect:0:9866

bin/kafka-run-class.sh kafka.tools.GetOffsetShell ---bootstrap-server localhost:9092 --topic cdp-event-collect --time latest
cdp-event-collect:0:10000

bin/kafka-run-class.sh kafka.tools.GetOffsetShell ---bootstrap-server localhost:9092 --topic cdp-event-collect --time earliest
cdp-event-collect:0:0

ping @dajac @showuon to have a look.

@dengziming , are we trying to get this feature into v3.2.0? If so, I'll take a look tomorrow again. Thanks.

@showuon Thank you, we have already added this KIP to the release plan of V3.2.0 since we have worked on this for a long time and a consensus will soon be reached.

Thank you @showuon , PTAL again.

@dajac @jolshan , do you want to have another look for this PR to make it into v3.2.0?

Thank you @dajac for your efforts, I reworded the error message according to your suggestions, PTAL.

The build looks good here. I am not sure why github still shows it in progress. It might be due to the outage that they had today.

@dajac @showuon @jolshan Thank you for your patience. 🤝

@dengziming I just say this failure which seems related to changes that we have done here. Could you take a look please?

Could you take a look please?
Sure, I will check it soon.

@dajac It seems this test no longer fails in new PRs, it's a rare error and can't reproduce anywhere, I will notice it in the future.


Certain folder ownerships were lost when using ciel load-os

When I was using ciel load-os to load my own rootfs tarball that contains folders with the ownership of root:blah where blah is some regular user's home group, the extracted folder would incorrectly have the ownership of root:root. But if I manually tar xf then the ownership would be correct. See the example below:
root@kagami /var/lib/ciel # ciel load-os https://archmips.local.suzushi.ro/dist/arch-mipsr6-20210721-rootfs.txz
info: Downloading base OS tarball...
ciel load-os   16.30s user 1.78s system 94% cpu 19.196 total
root@kagami /var/lib/ciel # ls -l .ciel/container/dist/var/cache
总用量 0
drwx------ 2 root root 23  7月 21 21:21 ldconfig
drwxrwxr-x 2 root root  6  7月 21 21:21 makepkg
drwxr-xr-x 3 root root 17  7月 21 21:21 pacman
drwx------ 2 root root  6  7月 21 21:21 private
root@kagami /var/lib/ciel # rm -rf .ciel/container/dist/*
zsh: sure you want to delete all 19 files in /var/lib/ciel/.ciel/container/dist [yn]? y
root@kagami /var/lib/ciel # tar xf arch-mipsr6-20210721-rootfs.txz -C .ciel/container/dist
tar xf arch-mipsr6-20210721-rootfs.txz -C .ciel/container/dist  15.27s user 1.71s system 132% cpu 12.780 total
root@kagami /var/lib/ciel # ls -l .ciel/container/dist/var/cache
总用量 0
drwx------ 2 root root      23  7月 21 20:02 ldconfig
drwxrwxr-x 2 root hachiroku  6  7月 14 20:25 makepkg
drwxr-xr-x 3 root root      17  6月 15 01:31 pacman
drwx------ 2 root root       6  6月 15 01:31 private

Note that the var/cache/makepkg folder has ownership of root:root if extracted with ciel load-os, but the correct ownership should be root:hachiroku as shown in the result created with manual tar xf.

Fixed in https://github.com/alexcrichton/tar-rs/commit/c3e2cb848afea5954f485f593668e69e0106513e.
Upstream has not made a new tag yet.

tar-rs is released, closing...


Error rendering preview for block "Value cannot be null. (Parameter 'name')"

After succesfull install and build i get the following error when viewing a page in the backoffice, with a block grid item

Error rendering preview for block
System.ArgumentNullException: Value cannot be null. (Parameter 'name')
   at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride)
   at Umbraco.Community.BlockPreview.Services.BackOfficePreviewService.SetCulture(String culture)
   at Umbraco.Community.BlockPreview.Services.BackOfficeGridPreviewService.GetMarkupForBlock(BlockValue blockValue, ControllerContext controllerContext, String culture)
   at Umbraco.Community.BlockPreview.Controllers.BlockPreviewApiController.PreviewMarkup(BlockValue data, Int32 pageId, Boolean isGrid, String culture)

I have set the custom view as described

I have set a culture as well (as a desperate attempt :))

I believe this may be the same issue raised in #18, I'll be reviewing that PR this week and hopefully making a new 1.3.0 release

Me too, it's gonna be awesome :) #H5YR to rickbutterfield for a great package

Thanks for confirming, aiming to release 1.3.0 just before Codegarden!

Hi @rickbutterfield, do you have an estimated release date for 1.3.0 please :)

@tony-gledhill @karltynan @claushingebjerg v1.3.0 has just been released on NuGet! 🎉

Wonderful news - thank you so much for your time and effort on this! 😃  #h5yr


Allowlist and denylist when uploading a folder

Fix https://github.com/huggingface/huggingface_hub/issues/982 and https://github.com/huggingface/huggingface_hub/issues/836.
Implements a filter_repo_objects helper to filter objects based on their path and a allowlist/denylist, using fnmatch. Used in snapshot_download and upload_folder. Use of allow_regex/ignore_regex is now deprecated in favor of allow_patterns/ignore_patterns. Backward compatibility is planned until version 0.12.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Thanks for the review @LysandreJik. I made the small changes in https://github.com/huggingface/huggingface_hub/pull/994/commits/420f6078079bebd4132f26bd471af2e8fbb2794f and will merge once CI is happy.


Improve hosting of sonoff-ota.aelius.com

More reliable
Better internet connection
Doesn't cost me lots of money
Comes with a dedicated IPv4 address
Doesn't mind that I don't own dl.itead.cn

Question: why not simply « leech » the firmware from the source: http://ota.tasmota.com/tasmota/release-9.5.0/tasmota-lite.bin ?
I know there is no sha256 next to the file but we could ask for Tasmota team to add them?

I’m reading this article https://cgomesu.com/blog/ota-tasmota-sonoff/ and I see this note:
The webserver has a few peculiar requirements (e.g., needs to accept the Ranges header, run in http instead of https) that does not allow us to point to Tasmota’s OTA website, Github releases, or any other official source of the Tasmota firmware binary

I'll try using the npm package http-server to quickly host the firmware locally...

I have just updated DNS, so that sonoff-ota.aelius.com now points to aristides.aelius.com.
This is a new dedicated virtual machine, hosted by VMHaus.
It has been configured using an ansible playbook:
https://github.com/njh/sonoff-ota-flash-cli/tree/main/website/ansible
Everything should behave as before (and hopefully better!), but let me know if there are any issues.
It is only costing me $3 per month, but any small donations to help with the running costs, would be appreciated:

What's the download alternative for this link:
(http://sonoff-ota.aelius.com/tasmota-latest-lite.bin)
?
I followed this procedure from Windows 11 but doesn't work anymore:
(https://lindevs.com/flash-the-tasmota-firmware-on-sonoff-minir2-switch/#write-comment)

The VMHaus pre-pay account has run out of money - so the server has been taken offline.
I have not received any donations to keep the VM running - I will probably move the service back to my home server when I get a chance.

Thanks!

The VMHaus pre-pay account has run out of money - so the server has been taken offline.
I have not received any donations to keep the VM running - I will probably move the service back to my home server when I get a chance.

Just donated your yearly cost

Wow! Thank you so much @4-ev3r! Very kind!
I have transferred the money over to VMHaus and the server has sprung back to life! 🎉
(I was slightly concerned that I would have to rebuild it)

Meanwhile already flashed four of my mini's. Thanks

Meanwhile already flashed four of my mini's. Thanks

Thanks too, 4-ev3r  !

@njh how do we keep the server up?

I don't have access to my PayPal today but I will take a look tonight and send some more money over to the hosting company. I will see if I can see what is wrong with the Donate button too.
The email address I use for PayPal is<EMAIL_ADDRESS>

When the donate button is back up can you also give the value you need to keep the server running for another year.

I tried setting up a local web server using python but was getting some errors, however I followed this guide and managed to flash them locally https://cgomesu.com/blog/ota-tasmota-sonoff/

I have topped up the hosting account: the server is back online again.
I have created a new donation link:

Donated you the $36 for another year

Donated you the $36 for another year

❤  Thank you so much for your generosity @4-ev3r!
I was hoping that lots of people would pay a small amount, rather than one person pay for the whole thing!
I have just transferred the money over to the VMHaus hosting account.
With the money I paid yesterday, we should have another 18 months of hosting now 👍


Add option to update all tokens to the latest global royalty info upon migration

no longer needed with native mirgation support as contract addresses don't change!


User should be able to evaluate all plans side-by-side

We are not moving the Cody Manage and onboarding from dotcom to SSC. This is already solved in the current version.


Add unit tests

Should consider resolving #19 first before tackling this one.

Changing scope to be just unit tests, not sure coverage badge is worth it at this moment.


Getting more done in GitHub with ZenHub

Hola! @ryanwischkaemper has created a ZenHub account for the TypeStrong organization. ZenHub is the leading team collaboration and project management solution built for GitHub.

How do I use ZenHub?
To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.
What can ZenHub do?
ZenHub adds a series of enhancements directly inside the GitHub UI:

Real-time, customizable task boards for GitHub issues;
Burndown charts, estimates, and velocity tracking based on GitHub Milestones;
Personal to-do lists and task prioritization;
“+1” button for GitHub issues and comments;
Drag-and-drop file sharing;
Time-saving shortcuts like a quick repo switcher.

Add ZenHub to GitHub
Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @ryanwischkaemper.

Thanks guys. I've used it in the past and would happily recommend it to anyone (especially love your support performance :bow:). However not enough active devs or code churn on this project ... so wishlist :rose:

@basarat I just saw this post, and I'm kind of surprised it's here. I'm very certain I did not create this issue on my own. I do have the Zenhub Chrome extension installed though...maybe it was a misclick or something. Feel free to close this issue as I did not intend to open it.

I thought you worked for Zenhub 🌹 :)


ExpansionPanelDetail content should not be focusable when ExpansionPanel is collapsed

Today when an ExpansionPanel is collapsed the content is still focusable by tabbing which leads to a poorly accessible UX.

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔
Content of ExpansionPanelDetail should not be focusable when the ExpansionPanel is collapsed.
Current Behavior 😯
Today when an ExpansionPanel is collapsed the content is still focusable by pressing keyboard "tab" key.
Examples 🌈
This can be reproduced on the ExpansionPanel demo https://codesandbox.io/s/l39qxq4pxz where tabbing focuses the panel content like chips and link and button.
Context 🔦
The current behavior does not promote good accessibility by default.
Managing focus could be done by custom code outside the library but that can become cumbersome. And most developer would probably not think of this or not have time to do it (The fact that it's not done in the demo page is a good example of that).

The current behavior does not promote good accessibility by default.

Fully agree. We fixed this already in #14465 which is in a working state since<EMAIL_ADDRESS>https://codesandbox.io/s/3vy63w7kzp

Nice, so it's a duplicate of #12632.

Excellent news I'll close this one then.


nested-bmi example does not update BMI in IE

From @arlair on October 12, 2015 19:12
I could not get the BMI examples on the following page to update by moving the sliders using Windows 8.1 IE 11 (auto updated) or Windows Surface RT IE:
http://cycle.js.org/basic-examples.html
The BMI value always stays at 24.
Chrome and Firefox work as expected.
I did not notice any console errors. I have the same issue with a local copy taken from this repository.
Copied from original issue: cyclejs/cycle-examples#2

From @arlair on October 13, 2015 15:13
I found that if I change the following line from listening for 'click' instead of 'input' it will now work in IE.
let newValue$ = DOM.select(.labeled-slider${name} .slider).events('click')

From @arlair on October 13, 2015 16:7
This is a known IE bug that doesn't look like being fixed:
https://connect.microsoft.com/IE/feedback/details/856998/input-type-range-oninput-missing-onchange-wrong
I can confirm 'input' events fire on Windows 10 with the Edge browser.
Work arounds such as this seem to be required for IE:
http://stackoverflow.com/questions/28118849/range-slider-input-event-not-firing-in-ie-10

From @arlair on October 13, 2015 17:3
'change' works in IE, but gives different behaviour because it updates as the slider moves. Chrome and Firefox only fire 'change' on release.

Ok, I figured we're not going to solve this in Cycle DOM. IE10 currently (July 2016) represents 0.41% of global browser usage, and Microsoft assumes it is actually a bug from their part. We won't build Cycle DOM as a "compatibility layer" that makes all browsers behave the same, so this needs to be solved in application code.
One option is using a user agent driver to read the current browser, and then either use domSource.events('change') or domSource.events('input').


✨[FEATURE] Audio Book Management

🌟 Feature Overview
Describe the feature or enhancement you would like to see.
Integrating audiobook management into your Python-based voice assistant can greatly enhance its functionality and user experience
🤔 Why this feature?
Explain why this feature would be helpful and the problems it solves.
Integrating audiobook management into your Python-based voice assistant can greatly enhance its functionality and user experience
📋 Expected Behavior
What do you expect from this feature? Provide detailed information on how it should work.
🖼 Example/Mockups
If applicable, add examples or mockups that illustrate how the feature should look or behave.
📝 Additional Details
Add any other details or suggestions.

@suryanshsk assign to me


feat: support HMR for class components

Fixes #136
Fixes #199
Closes #200
I merged ideas from @n9 in #200 and @marlo22 in fix-react-refresh-plugin
I will port the fix to the Babel plugin once merged to fix oldest issue in the React plugins!

Yes exactly!
But he support is more limited, the component will restart from scratch everytime.
Because of that the react refresh transformation don't output special code and the current condition was not working for files with only class components.
Because I stopped worked with class components since 2019 I didn't took time to test it 😬


Revert volume to snapshot failures

ISSUE TYPE

Bug Report
Improvement Request
Enhancement Request

COMPONENT NAME
Storage

CLOUDSTACK VERSION
4.16.1 and main

CONFIGURATION
Set snapshot.backup.to.secondary to true
OS / ENVIRONMENT
Tested KVM on NFS storage
SUMMARY
Revert volume to snapshot after migrating a volume to another storage fails with error:
2022-04-05 14:52:25,411 ERROR [c.c.a.ApiAsyncJobDispatcher] (API-Job-Executor-12:ctx-e7abb0ff job-48) (logid:8178b033) Unexpected exception while executing org.apache.cloudstack.api.command.user.snapshot.RevertSnapshotCmd
com.cloud.utils.exception.CloudRuntimeException: Cannot find an entry for snapshot 1 on primary storage pools
	at org.apache.cloudstack.storage.snapshot.SnapshotServiceImpl.revertSnapshot(SnapshotServiceImpl.java:433)
	at org.apache.cloudstack.storage.snapshot.DefaultSnapshotStrategy.revertSnapshot(DefaultSnapshotStrategy.java:393)
	at com.cloud.storage.snapshot.SnapshotManagerImpl.revertSnapshot(SnapshotManagerImpl.java:330)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
	at com.sun.proxy.$Proxy218.revertSnapshot(Unknown Source)
	at org.apache.cloudstack.api.command.user.snapshot.RevertSnapshotCmd.execute(RevertSnapshotCmd.java:101)
	at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:156)
	at com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:108)

STEPS TO REPRODUCE
- Take volume snapshots
- Migrate VM with volume / migrate volume / reinstall VM
- Try revert volume to snapshot

EXPECTED RESULTS
Revert succeeds

ACTUAL RESULTS
Failure (logs above)

@slavkap @weizhouapache this might be related to #5433 and should find a solution for both issues

@nvazquez, this can also be hit when migrating a volume to another storage.

Thanks @slavkap I've updated the description

@slavkap @Pearl1594 opening this for discussion: since https://github.com/apache/cloudstack/pull/1740 snapshots on primary storage are cleaned up after migration. Internally a new volume DB record is created after the volume is migrated and the old one is destroyed, along with snapshots and that seems to cause the issue (for the reinstall VM case I think that is also the case).
As an example, before the volume migration:
MariaDB [cloud]> select id, store_id, store_role, snapshot_id, state, volume_id from snapshot_store_ref where snapshot_id = 5;
+----+----------+------------+-------------+-------+-----------+
| id | store_id | store_role | snapshot_id | state | volume_id |
+----+----------+------------+-------------+-------+-----------+
|  9 |        1 | Primary    |           5 | Ready |        13 |
| 10 |        1 | Image      |           5 | Ready |        13 |
+----+----------+------------+-------------+-------+-----------+
2 rows in set (0.00 sec)

After volume migration:
MariaDB [cloud]> select id, store_id, store_role, snapshot_id, state, volume_id from snapshot_store_ref where snapshot_id = 5;
+----+----------+------------+-------------+-------+-----------+
| id | store_id | store_role | snapshot_id | state | volume_id |
+----+----------+------------+-------------+-------+-----------+
| 10 |        1 | Image      |           5 | Ready |        14 |
+----+----------+------------+-------------+-------+-----------+
1 rows in set (0.00 sec)

As discussed offline @slavkap proposed the storage driver checks if the references on snapshot_store_ref should be deleted for Primary role - @Pearl1594 what do you think?

I think that makes sense @nvazquez @slavkap

Ping @weizhouapache @DaanHoogland @rohityadavcloud @andrijapanicsb what's your take on the approach to be taken for solving this issue?

Moved to the next milestone

Thanks @weizhouapache - this would need further investigation for different storage and also considering stock qemu and qemu-ev packages on KVM

Merged in https://github.com/apache/cloudstack/pull/6527


feat: switch over to @verto/lib

Amazing work @johnletey! I'll test this tomorrow as soon as I get the chance 👍


Fixed NativeEngine render target assignment

Native engine is currently not assingning the new texture passed in bindFrameBuffer to its _currentRenderTarget. This will result in NaN values for camera's projection matrix since it uses the engine.getRenderWidth() and engine.getRenderHeight() and those values will be zero.
Storing _currentRenderTarget fixes the problem.

@Popov72 , updated PR with changes.


"item" subcommand causes autocomplete to fail

CommandAPI version: 6.2.0
Minecraft version: 1.17.1
What I did:
Created the following configuration (pardon the kotlin):
        CommandAPICommand("test")
            .withArguments(
                itemArgument(items)
            )
            .executesPlayer(PlayerCommandExecutor { player, args ->
                val item = args[0] as Material
                println("RAN TEST with $item")
            })
            .register()
        CommandAPICommand("test2")
            .withSubcommand(
                CommandAPICommand("item")
                    .withArguments(
                        itemArgument(items)
                    )
                    .executesPlayer(PlayerCommandExecutor { player, args ->
                        val item = args[0] as Material
                        println("RAN TEST2 with $item")
                    })
            )
            .register()

Actual result:
The autocomplete for test2 fails to render anything (or even be called, I tried printlns).
What should have happened:
Should behave just like the first command.

The custom argument is here:
fun itemArgument(items: Set<Material>, nodeName: String = "item"): Argument =
    CustomArgument(nodeName) { name ->
        val material = Material.getMaterial(name)
        if (material != null && items.contains(material)) material
        else throw CustomArgument.CustomArgumentException(CustomArgument.MessageBuilder("That item does not exist"))
    }.replaceSuggestions {
        // This part never gets called for the second test case
        items
            .map(Material::name)
            .toTypedArray()
    }

@toddharrison You've got conflicting node names. In the second test command (test2), you've got a subcommand called item and then you've got an itemArgument with node name item. Commands can't have two nodes with the same name in it.
With suitable node names, I can confirm this issue doesn't exist.


Load and play media from start time

Is there a way to pass a starting position flag to the load command to have the media start at a certain position?

It should be possible with a small change to the API. The start time is set https://github.com/vishen/go-chromecast/blob/master/application/application.go#L760, so we could pass the start time through from https://github.com/vishen/go-chromecast/blob/master/cmd/load.go#L67 to https://github.com/vishen/go-chromecast/blob/master/application/application.go#L720 and add a new cli argument for the start time.
I am currently away and I don't have a chromecast to test this on. Feel free to send a PR, otherwise I can take a look when I get back home with a chromecast.

OK, I will take a look at implementing this. Thanks!


fix - adding trace when role service is loading

Description
adding trace when role service is loading to investigate issues when calling from init-service
Changes

[ARTS-#] - some description

Checklist:

[x] Branch name follows convention (feature/arts-#-short-name OR fix/arts-#-short-name)
[x ] I have included a short-meaningful title, description and changes for this PR

can't merge it, API tests fail all the time

can't merge it, API tests fail all the time

@guybartal API tests are passing now.


Test/maintenance 19 dec 2024

Checklist

[ ] JIRA - <link>
[ ] Proper tests implemented
[ ] Screenshots added.

Proposed solution
Explain how does this PR solves the problem stated in JIRA ticket.
You can also enumerate different alternatives considered while approaching this task.
Testing
Describe here, how the new implementation can be tested.
Provide link or briefly describe User Acceptance Criteria/Tests that need to be met
Screenshots
Attach screenshots here if implementation involves some UI changes

Allure Report
allure-report-publisher generated test report!

processReports: ✅ test report for b5c6201b

passed
failed
skipped
flaky
total
result

Total
33
0
4
0
37
✅


ArgumentError

hi, sorry to bother you, but i don't know anything about ruby.
It gives me this error:
C:\Users\M\Downloads\punks.starter-master>ruby no1/generate.rb
pixelart/0.2.2 on Ruby 3.0.2 (2021-07-07) [x64-mingw32] in (C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/pixelart-0.2.2)
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/parser_std.rb:116:in `parse': wrong number of arguments (given 2, expected 1) (ArgumentError)
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:172:in `each'
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:203:in `to_a'
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:203:in `read'
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:54:in `block in read'
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:33:in `open'
        from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/csvreader-1.2.4/lib/csvreader/reader_hash.rb:49:in `read'
        from C:/Users/M/Downloads/punks.starter-master/generate.rb:8:in `read_csv'
        from no1/generate.rb:10:in `<main>'

Please, post your support questions to https://old.reddit.com/r/CryptoPunksDev/.  I try my best to help out.


test(twig): added local cypress setup

A part of #947.
This PR adds the basic setup for running tests against the twig base theme container locally.
Current issues

The base theme copies index.css directly from the styles packages while not declaring the styles package as an explicit dependency. It should be changed to copy index.css from the twig package. Previously, the twig package was not exporting the correct CSS file with all the styles for the components. I fixed that in this PR.  (Raised https://github.com/international-labour-organization/ilo_base_theme/issues/11 to resolve)
The base theme image has caching enabled and the cache needs to be manually cleared whenever the twig components are changed for those changes to be visible on the theme site. We should probably disable the cache in the image since the image will only be used for development purposes. (Raised https://github.com/international-labour-organization/ilo_base_theme/issues/10 to resolve)
The twig package needs to be built manually for those changes to appear on the theme site. If this proves to be an annoyance, we can attempt to implement a "watching build" that continuously builds the changes made to the project. But this would require some development effort.

This PR is ready to merge.


Notify delegate when interaction is complete

Few changes here:

Modified onChange callback parameters:
from onChange(component, value) to onChange(event, value, component)

Added onChangeComplete callback. It gets called once after completing a change. For example, if you drag a slider and change the value from 5 to 10, onChangeComplete gets called once when you release your drag (on the other hand, onChange callback gets called 5 times during the course of the drag and is responsible for updating model value).

<InputRange
  maxValue={20}
  minValue={0}
  value={this.state.value}
  onChange={this.handleValueChange.bind(this)}
  onChangeComplete={this.handleValueChangeComplete.bind(this)}
/>

This is great; much cleaner than my PR, and solves my problem nicely.  The only comment I have is that maybe the order of the arguments is a bit weird.
Why not keep onChange's argument order the same, with event as the third argument?
By changing the order and putting event first, you've made this a breaking change for people using 0.5.0 (and it doesn't really need to be).

Thanks for your input @astalwick. Regarding the param ordering, I just thought it'd be good to keep the interface consistent with other event handlers in React. (for example: <input type="text" value={this.state.value} onChange={this.handleChange}>). Not entirely necessary though... But it seems like it is the convention (maybe?) when you set up an event-driven callback in a custom component? Anyway, I agree, the down-side is that it'd be a breaking change. But I'm okay with that. What's your thought?

Ok, I took out the changes to onChange for now.


convert "epoch time" to date format

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[x] support request

Current behavior
Looking for help to convert "epoch time" value to a date format based on locale.
Expected behavior
I have seen a mention in #1367 on using template: utcDate, bit it is not clear to me on how to use it.
Minimal reproduction of the problem with instructions
What is the motivation / use case for changing the behavior?
enables us to display date based on local settings
Please tell us about your environment:

Angular version: 7.0.X

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
Chrome and Firefox

Language: [all | TypeScript X.X | ES6/7 | ES5]
all

Node (for AoT issues): node --version =
v10.15

could you elaborate more about your use-case,
do you want to parse the date before assigning it to the model or just for displaying purpose?

@aitboudad
Thanks for the prompt response.
In mongodb we save the date in "epoch/unix time" format eg:<PHONE_NUMBER>902
we would like to be displayed in the Angular 7.x UI as "YYYY-MM-DD HH:MM:SS"
The format of Date in the UI should be adaptable to the users local preference (US / UK etc...)
Appreciate the help.

template allows only displaying static content, to take account of model change pass it throughout expression property or use a custom field type.

Custom field type with date pipe: https://stackblitz.com/edit/angular-w4nbpd-brxnxq
Simple template: https://stackblitz.com/edit/angular-w4nbpd
Template with expression property: https://stackblitz.com/edit/angular-w4nbpd-jak85f

@aitboudad. thank you for the pointers.
https://stackblitz.com/edit/angular-w4nbpd solves my need for the time being,

I was able to use "Parsers" to transform dateTime to unix, but there are no "formatters" yet, so how to transform unix timestamp to dateTime ?

Or simple time picker, where I want to transform seconds value into time and back:
I can easily parse date from ion datepicker to seconds
const parsedDate = new Date(date);     return  (parsedDate.getHours() * 60 * 60) + (parsedDate.getMinutes() * 60) + parsedDate.getSeconds();
And it will correctly save it in seconds to my model, but now when I need to display seconds as date
I cannot just pass formatting function to selected compoment

@rdev-software formatters not supported yet due to https://github.com/angular/angular/issues/3009.


Consider adding Jenkins usage example to K8s plugin repo

Hello all,
I'm trying to wrap my head around how I might use podman within a container in a Jenkins pipeline using the Jenkins kubernetes-plugin to build and push an image. Is there a pre-built libpod image for this use case? Does the podman "abstraction" over buildah change this comparison overview in regards to CICD? Might it be possible to submit a PR of an example Jenkinsfile using podman and related best practices? I don't want to rely on public cloud providers always having a running docker daemon on host machines.
A bit of background: I've played with both img and Kaniko to build images on Jenkins but have run into a number of issues with both tools (caching, volume permissions, root/privilege issues, Jenkins JNLP timeouts, Kaniko doesn't support separate build and push steps, etc) and I am hoping to get podman working instead.
Thank you.

Specifically for building, you should find little to no difference between Podman and Buildah. podman build is actually executing the same code as buildah bud - the only difference are different default arguments for a few CLI flags. If you're only looking at building, buildah and podman should be identical, so the comparison overview for buildah should also apply here. The main difference in podman is adding the ability to run and manage containers based on those images.
As such, if you're only building, you might have better luck at the Buildah repo - a few of the Buildah maintainers do browse here, but you'll probably find better answers at the main repo.

@marshallford You can use either one in a container depending on your use case. You can also increase/decrease the security you need.
For building a container in a locked down container you would be better off with buildah.
You could use buildah bud --isolation chroot -f Dockerfile .

@rhatdan Is there a community image for podman or buildah similar to gcr.io/kaniko-project/executor, r.j3ss.co/img, or docker.io/dind?

Not yet.

@TomSweeneyRedHat Have you had a chance to look at this?

Not yet

@TomSweeneyRedHat curious if you have any updates regarding a community image.

@marshallford Any chance you want to take this on?

Im interested in the community image, as well - would like to see this land!

@hulkish I've started to work on an image under my own org (for now). It is a bit heavy and has an old version of runc but feel free to take a look or submit a PR. Thanks.
https://hub.docker.com/r/marshallford/podman
https://github.com/marshallford/podman

@marshallford thanks!

still need this?

https://quay.io/user/podman
https://quay.io/user/buildah
Would be the suggested images to use to satisfy this need.  @marshallford if I am incorrect, please reopen this PR,


BUG: Alignment Issue

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
Hey @dakshsinghrathore
I came across your website, and found this Let's Get Started Button has been a little bugged, would take care of it for you. If you can assign me the issue!

Best Regards,
Shera Bhai
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a SWOC24 contributor
[X] I want to work on this issue

Hey @sherabhai Already fixing it in #102


Kubesphere in version 3.2 uses external Jenkins (version 2.320). Which configuration file of kubesphere needs to be modified?

Now I want to use kubesphere 3.2 connects external Jenkins. I follow the connection tutorial（ https://cloud.tencent.com/developer/article/1779145 ）Jenkins has been set up well.
Now i need to configure the of kubesphere: do I need to modify kubesphere config or Devops config? Or do both configurations need to be modified?
Now kubesphere config is configured as follows: is my configuration correct?
Do i need to modify the  devopsserviceaddress and endpoint, enable?
Note: http://<IP_ADDRESS>:8080 This is the external Jenkins address
devops:
devopsServiceAddress: devops-apiserver. kubesphere-devops-system:9090
enable: false
endpoint: http://devops-apiserver.kubesphere-devops-system:9090
host: http://<IP_ADDRESS>:8080/
maxConnections: 100
password: 1133c93065ca0e6948c4455edec15b7525
username: liuhuining

thanks very much!

My problem is that pipelines cannot be created in kubesphere.   The status of these pipelines is always < waiting >, and cannot be synchronized to external Jenkins:

I suspect that there is an error in the configuration of kubesphere config or Devops config. Please take a look. Should i need to configure both config?

Hi @tengxunchao ,please be aware of ConfigMap devops-config introduced since KubeSphere 3.2.0.

Hi @tengxunchao ,please be aware of ConfigMap devops-config introduced since KubeSphere 3.2.0.

Do you have a link to the official documentation for the introduction of Devops-Config?

/kind support

Do you have a link to the official documentation for the introduction of Devops-Config?

https://kubesphere.com.cn/docs/devops-user-guide/how-to-use/jenkins-setting/

Do you have a link to the official documentation for the introduction of Devops-Config?

https://kubesphere.com.cn/docs/devops-user-guide/how-to-use/jenkins-setting/

Do I need to adjust the configuration of casC?
The link you sent didn't include an introduction to Devops-Config

Do you have a link to the official documentation for the introduction of Devops-Config?

Currently, we don't have a document about it. But it has the same structure as kubesphere-config, and it is part of that.

Do you have a link to the official documentation for the introduction of Devops-Config?

Currently, we don't have a document about it. But it has the same structure as kubesphere-config, and it is part of that.

Connect external Jenkins, should  i need to change kubesphere-config?
Or  just   change Devops -config?

Do you have a link to the official documentation for the introduction of Devops-Config?

Currently, we don't have a document about it. But it has the same structure as kubesphere-config, and it is part of that.

For version 3.2 kubesphere, is there a document explaining how to connect external Jenkins?
What configuration items need to be modified?
In version 3.1, all i  need to do is change kubesphere-config,
However, devops-config was introduced in 3.2. Now I don't know how to configure it. Please help me!

Do you have a link to the official documentation for the introduction of Devops-Config?

Currently, we don't have a document about it. But it has the same structure as kubesphere-config, and it is part of that.

@LinuxSuRen
The account and password configured in kubesphre config and Devops config in 3.2.1 can only be the account and password of admin. If other accounts are configured, they will also be converted to or regarded as the password of admin. Is that true?
Can the password configured in Devops config only be the password of admin?

The default behavior is to override the token. But you can change it with the following command flag:
--override-jenkins-token=false
https://github.com/kubesphere/ks-devops/blob/56aeda5423c825a41027792503d0cdee2bfe4ceb/cmd/tools/jwt/app/jwt_root.go#L40

The default behavior is to override the token. But you can change it with the following command flag:
--override-jenkins-token=false
https://github.com/kubesphere/ks-devops/blob/56aeda5423c825a41027792503d0cdee2bfe4ceb/cmd/tools/jwt/app/jwt_root.go#L40

Is the usage like this? Add configuration in yaml of Devops config?

jwt is a tool command.
See also the following references:

https://github.com/kubesphere-sigs/ks-devops-helm-chart/blob/50549eccada6a48ca4d7ffa8631546c75c9bd023/charts/ks-devops/templates/deployment-controller.yaml#L38
https://github.com/kubesphere-sigs/ks-devops-helm-chart/blob/50549eccada6a48ca4d7ffa8631546c75c9bd023/charts/ks-devops/templates/deployment-apiserver.yaml#L49

jwt is a tool command.
See also the following references:

https://github.com/kubesphere-sigs/ks-devops-helm-chart/blob/50549eccada6a48ca4d7ffa8631546c75c9bd023/charts/ks-devops/templates/deployment-controller.yaml#L38
https://github.com/kubesphere-sigs/ks-devops-helm-chart/blob/50549eccada6a48ca4d7ffa8631546c75c9bd023/charts/ks-devops/templates/deployment-apiserver.yaml#L49

thank you

hi @tengxunchao , have you resolved this issue?

hi @tengxunchao , have you resolved this issue?

There is no "override-Jenkins-token" configuration in version 3.2.1, right?
What I need to do is recompile and package with the latest code( with "override-Jenkins-token" configuration), and then in deployment - apiserver yaml, deployment-controller. Configure "override-Jenkins-token" in yaml.  Am I right?

You don't need to do it by yourself. We have nighly built images.
See also https://github.com/kubesphere/ks-devops/pkgs/container/devops-tools

You don't need to do it by yourself. We have nighly built images.
See also https://github.com/kubesphere/ks-devops/pkgs/container/devops-tools

with this image?    ghcr.io/kubesphere/devops-tools:nightly-20220112

I configured the image, restarted the Devops apiserver and Devops controller, and still couldn't synchronize with a non admin account.
the result is :

The configuration is as follows:
devops-controller configuration:

devops-apiserver configuration:


feature: offline usage

Will refactor code to allow offline usage.

Hi @frank-dspeed,
can you explain in detail what this issue is about? Offline usage should already work when the cache of verdaccio is filled. Same applies to the clients (yarn and npm).

Related https://stackoverflow.com/a/59485999/308341

i found also others reporting that this don't works i want that it works thats why i will investigate,....

Related:
https://github.com/verdaccio/verdaccio/issues/1566
https://github.com/verdaccio/verdaccio/issues/1633

It worked before (in v3) using cache: true(which should be the default.

IMHO this is a critical feature for Verdaccio and it is simply not usable for my work without it. Unfortunately Nexus and Artifactory are too expensive for most projects and I always prefer FOSS. If there is anything I can do to help with this please let me know. I spent several days trying to get Verdaccio to work in "Offline Mode" and was unsuccessful.
Related: (the recent testing I did using https://www.npmjs.com/package/npm-offline-packager together with Verdaccio:
#1566

@nrydevopswatch at present i am reverse engineering the http calls via patched node_modules that do all kind of logging. it will take time to identify the places that are affacted but i found at last some already.

We just may have to bisect this, only tarballs are not stored and db not filled.
The offline feature (uplink cache) should already work.
I saw in your screenshot that you have tarballs @juanpicado. Not sure why it does not work on my side. How can we bisect this the best way?

git checkout v4.x, git bisect start | bad | good are the only things that we need here.

It works fine if you have internet connection but when you disconnect completely from public internet there are several parts of the process that try to go out and contact npmjs public. This occurred no matter what settings I tried in the config.
I was using Google Cloud instances Ubuntu and Centos (tried both) and I created a firewall rule to block all public (WAN) traffic but still allow communication between my Verdaccio server and the server I was running the Node sample web code on. I hope this is helpful; but the same effect can be achieved by disconnecting your system from the WAN locally.

As already mentioned it is a regression bug on our side. It worked with previous releases.
Closing as duplicate. Let's discuss this in the other issues.

Also related: https://github.com/verdaccio/verdaccio/issues/1157
I think there is still a bug.

@DanielRuf Does this mean that "offline mode" won't be a working feature in Verdaccio anytime in the near future? If it is a bug, then can't the bug be fixed? I really appreciate you guys looking into this. Happy New Year! ;-)

@nrydevopswatch verdaccio already works offline. There is just a reintroduced bug that prevents storing the tarballs in the latest version. We will check this. One issue is sufficient to track this.
Please let's keep the discussion at one place.
https://github.com/verdaccio/verdaccio/issues/1634#issuecomment-569422989
This issue is just marked and closed as duplicate.

@DanielRuf Okay, sounds great! Thank you again and I will follow #1634 (comment)


Refactoring class to add send event APIs for each event

As discussed offline with @hixie. We should really refactor the class so that each event we have defined in the enums.dart file has its own sendEvent api instead of allowing clients of this package invoking sendEvent on their own.
By doing this, we can standardize what we expect to see in the eventData map object. This allows us to audit all of the event apis and what data is included by each client of this tool

[x] I’ve reviewed the contributor guide and applied the relevant portions to this PR.

Contribution guidelines:

See our contributor guide for general expectations for PRs.
Larger or significant changes should be discussed in an issue before creating a PR.
Contributions to our repos should follow the Dart style guide and use dart format.
Most changes should add an entry to the changelog and may need to rev the pubspec package version.
Changes to packages require corresponding tests.

Note that many Dart repos have a weekly cadence for reviewing PRs - please allow for some latency before initial review feedback.

It isn't clear to me how much is being gained by splitting AnalyticsImplNoEvents and AnalyticsImpl. What's the motivation for that choice?

This has not been finalized yet, I just put together a quick example that shows the events in a separate file to make it easier to see all the APIs separate from the existing logic in analytics.dart. The class setups will definitely need to change if we decide to continue with individual apis for each DashEvent

Ok, thanks. It also occurs to me that if we go this way you'll probably want to remove Analytics.sendEvent and make sendEvent only be available on AnalyticsImplNoEvents, but doing that isn't necessary to show what these new send methods might look like.

Ok, thanks. It also occurs to me that if we go this way you'll probably want to remove Analytics.sendEvent and make sendEvent only be available on AnalyticsImplNoEvents, but doing that isn't necessary to show what these new send methods might look like.

I think I may ditch the separate file for all the events, it adds a lot of complexity for not that much value add. Instead, I will just define each of the APIs for each DashEvent within analytics.dart. I will probably create some documentation for each analytics.send... API that can be published linked to from the README instead.  Thoughts?

I think I may ditch the separate file for all the events, it adds a lot of complexity for not that much value add.

I don't see much value either, other than, perhaps, from the perspective of an auditor trying to understand which pieces to audit.

I will probably create some documentation for each analytics.send... API that can be published linked to from the README instead.

(Not quite sure how to parse that. Some commas might have helped.) Yes, we'll need documentation from the send method's author (which I presume will typically not be you) for use by developers of the author's package, and, most importantly, for authors of other tools to know not to use that API.

While I don't disagree with the goal of being able to audit the data being collected, I want to point out the impedance this will introduce when developing new analytics (or updating existing analytics, though I suppose you could argue that in the latter case the impedance is actually a positive outcome).

While it's not the primary goal, the friction here is actually a secondary goal of this design. We don't want it to be very easy to add analytics. We want to make sure that we are very carefully considering everything we collect.
That said, I think the workflow you've described is significantly more complicated than I would expect, even for today's design (before this PR). I would expect the workflow to be:

Use a dependency override to make the local version of the SDK depend on the local version of the analytics package.
Iterate on the design, changing both in parallel. Finish the implementations.
Push a PR to update the analytics package with the new API (and autopublish the new package).
Push a PR to roll the analytics package into the SDK and update the SDK to use the new API.

It also means that if clients implement their own subclasses of Analytics

Can you elaborate on the need for subclasses of Analytics in this world? I would expect to end up with no subclasses of Analytics and for the API in the analytics package to be final, to guarantee that anyone using the package cannot send any events that aren't defined in the package.

I would expect the workflow to be:

Use a dependency override to make the local version of the SDK depend on the local version of the analytics package.

I'm not entirely sure how we would do that given the structure of the DEPS file. It might be possible to use a file path rather than a git revision SHA, but I don't know offhand how to do that.

Can you elaborate on the need for subclasses of Analytics in this world?

I can't claim that we need a subclass because I'm sure we can work around the restriction if necessary.
In the analysis server we can only collect analytics when it is being used by a client that is capable of displaying the opt-out message to the user. In order to avoid having to test for this condition in multiple places, we have created a subclass that will always behave as if the user has opted out. We use an instance of that class when we will never be able to send analytics. It's a convenient implementation strategy.

Use a dependency override to make the local version of the SDK depend on the local version of the analytics package.

I'm not entirely sure how we would do that given the structure of the DEPS file. It might be possible to use a file path rather than a git revision SHA, but I don't know offhand how to do that.

Making this possible seems like a P0 for doing development across multiple trees. If it's not easy to do, I would literally recommend dropping everything and making that work until it's easy to do. The difference in development velocity when you can develop across all relevant repos at once vs when you cannot is so high that however long it takes to make it possible it will surely pay for itself in a matter of days of normal development.

In the analysis server we can only collect analytics when it is being used by a client that is capable of displaying the opt-out message to the user. In order to avoid having to test for this condition in multiple places, we have created a subclass that will always behave as if the user has opted out. We use an instance of that class when we will never be able to send analytics. It's a convenient implementation strategy.

That makes sense. It seems like a feature that the analysis package should just offer out of the box. Indeed I would expect this to be automatic. If you cannot confirm to the analytics package that you have presented the latest message to the user, or if the package cannot confirm that the user has not opted out, the package should just drop all analytics events on the floor.

Thank you both for the discussion on this issue but I will be moving forward with this refactor in the issue below and will close this one. Feel free to continue discussions here if needed

https://github.com/dart-lang/tools/pull/114

I'm not entirely sure how we would do that given the structure of the DEPS file.

Just to follow-up, I talked to the infra team and the suggestion is to hand edit sdk/.dart_tool/package_config.json to point to the local checkout of unified_analytics. Running gclient sync will overwrite those changes, but that ought to be the only issue with it. I haven't tested the suggestion yet, but it seems reasonable.


Uploaded pictures are smaler than my screenshot

Hi Jomo, and thanks for your script. I'm facing an issue: the uploaded pictures are smaller than on my disk. I created an ID and secret:
imgur_acct_key="7e4************"
imgur_secret="bf4837df901cda****************************"
upload process works, but then img is smaller than the original that is on my disk. Any help?

Do you mean dimensions or file size? Can you provide some specific details and/or an example image?

 My default imgur url chrome setting was set as 70%. I simply re-set it at 100%...
Sometimes you know....


KAFKA-5516: Formatting verifiable producer/consumer output in a similar fashion

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk8-scala2.12/5689/
Test FAILed (JDK 8 and Scala 2.12).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk7-scala2.11/5703/
Test FAILed (JDK 7 and Scala 2.11).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk7-scala2.11/5704/
Test PASSed (JDK 7 and Scala 2.11).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk8-scala2.12/5690/
Test PASSed (JDK 8 and Scala 2.12).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk7-scala2.11/5712/
Test PASSed (JDK 7 and Scala 2.11).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk8-scala2.12/5698/
Test PASSed (JDK 8 and Scala 2.12).

@ewencp as I said before I introduced the POJO in the VerifiableProducer in order to be more consistent with the VerifiableConsumer. In the current version they are completely different : while VerifiableConsumer has POJOs (see ConsumerEvent), VerifiableProducer doesn't. So the idea to add ProducerEvent and at same time fixing the output to be similar. In my understanding for what you are saying we should remove the POJOs from the VerifiableConsumer as well. Is that right ? Having these two applications much more similar is better than having two completely different implementations. Wdyt ?

@ppatierno Heh, those classes look like they were written by two different people because they were written by two different people :) I didn't review the VerifiableConsumer code, otherwise I might have noted the relative verbosity of the POJO approach when pretty much every class is used only once.
I'm fine with getting things consistent, with either solution. The increase in LOC is just very noticeable when you see it in patch/PR form.

@ewencp in general it's better to follow one direction so having more consistent code. It's the reason why I decided to use the POJO for the VerifiableProducer. So is this PR acceptable ? :)

Hmm, I tried running some tests and kafkatest.tests.core.transactions_test.TransactionsTest.test_transactions.failure_mode=clean_bounce.bounce_target=brokers seems to be consistently hanging. Will need to look into why this change would have affected that test.

@ewencp I found and fixed the problem ! Enabling the debug on the test, I got the verifiable producer stucked so I tried to launch the console application using the same parameters as the test (i.e. topic, properties, ...). The problem was the "retries" which is 50 in the test (using a properties file) and it was overridden by 0 because I revert the order of applying properties from config file with properties from command line. With "retries" equals 0 I got this exception :
Exception in thread "main" org.apache.kafka.common.KafkaException: Failed to construct kafka producer 	at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:416) 	at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:301) 	at org.apache.kafka.tools.VerifiableProducer.createFromArgs(VerifiableProducer.java:204) 	at org.apache.kafka.tools.VerifiableProducer.main(VerifiableProducer.java:455) Caused by: org.apache.kafka.common.config.ConfigException: Must set retries to non-zero when using the idempotent producer. 	at org.apache.kafka.clients.producer.KafkaProducer.configureRetries(KafkaProducer.java:467) 	at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:359)
Now I have fixed that, recovering the right order.
The only concern is that there were no evidence of this exception during the test.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk7-scala2.11/6351/
Test PASSed (JDK 7 and Scala 2.11).

Did you mean to commit the debug logs?

@ijuma what do you mean sorry ?

@ppatierno take a look at the pull request diff, it adds 11k lines due to some debug files that were added.

@ijuma sorry my fault when I did git add and commit. I'm going to delete them immediately ! Sorry !

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk7-scala2.11/6567/
Test PASSed (JDK 7 and Scala 2.11).

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/kafka-pr-jdk8-scala2.12/6552/
Test PASSed (JDK 8 and Scala 2.12).


Reexport createBullBoard, BullAdapter and BullMQAdapter in server adapters

It would be nice if @bull-board/express and the other server adapters would export createBullBoard, BullAdapter and BullMQAdapter from the @bull-board/api package.
This would come with the benefit to manage a little less dependencies.
The hello world example then could look like this:
const express = require('express');
const Queue = require('bull');
const QueueMQ = require('bullmq');
- const { createBullBoard } = require('@bull-board/api');
- const { BullAdapter } = require('@bull-board/api/bullAdapter');
- const { BullMQAdapter } = require('@bull-board/api/bullMQAdapter');
- const { ExpressAdapter } = require('@bull-board/express');
+ const { ExpressAdapter, createBullBoard, BullAdapter, BullMQAdapter } = require('@bull-board/express');

const someQueue = new Queue('someQueueName', {
  redis: { port: 6379, host: '<IP_ADDRESS>', password: 'foobared' },
}); // if you have a special connection to redis.
const someOtherQueue = new Queue('someOtherQueueName');
const queueMQ = new QueueMQ('queueMQName');

const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');

const { addQueue, removeQueue, setQueues, replaceQueues } = createBullBoard({
  queues: [new BullAdapter(someQueue), new BullAdapter(someOtherQueue), new BullMQAdapter(queueMQ)],
  serverAdapter: serverAdapter,
});

const app = express();

app.use('/admin/queues', serverAdapter.getRouter());

// other configurations of your server

app.listen(3000, () => {
  console.log('Running on 3000...');
  console.log('For the UI, open http://localhost:3000/admin/queues');
  console.log('Make sure Redis is running on port 6379 by default');
});

Hi @mmachatschek I've thought about this once, but decided that it is better to be explicit, serverAdapter comes from the server adapter nothing more.
In addition, the hello world example is not a real world example, since you probably won't use 2 type of queues (bull & bullMQ).
So the code is minimal as,
const express = require('express');
const Queue = require('bull');
const QueueMQ = require('bullmq');
const { createBullBoard } = require('@bull-board/api');
- const { BullAdapter } = require('@bull-board/api/bullAdapter');
const { BullMQAdapter } = require('@bull-board/api/bullMQAdapter');
const { ExpressAdapter } = require('@bull-board/express');

- const someQueue = new Queue('someQueueName', {
-   redis: { port: 6379, host: '<IP_ADDRESS>', password: 'foobared' },
- }); // if you have a special connection to redis.
- const someOtherQueue = new Queue('someOtherQueueName');
const queueMQ = new QueueMQ('queueMQName');

const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/admin/queues');

const { addQueue, removeQueue, setQueues, replaceQueues } = createBullBoard({
  queues: [
-    new BullAdapter(someQueue),
-    new BullAdapter(someOtherQueue),
     new BullMQAdapter(queueMQ)],
  serverAdapter: serverAdapter,
});

const app = express();

app.use('/admin/queues', serverAdapter.getRouter());

// other configurations of your server

app.listen(3000, () => {
  console.log('Running on 3000...');
  console.log('For the UI, open http://localhost:3000/admin/queues');
  console.log('Make sure Redis is running on port 6379 by default');
});

The problem with this is that every change in API should be done in all of the adapters... this makes the code highly coupled.

Isn't it already coupled? The adapters already depend on a specific version of the api package, exporting them via the server adapter would make sense to ensure the correct version of the underlying functions is used on the client code. Current implementations would not be affected by the change.

What is the issue of installing both of the packages?

There is no immediate issue here, the suggested solution makes it more maintainable and ensures that the server adapter gehts the correct data from the api package.
Future me wants to avoid a mistake of upgrading one of the bullboard depencencies without the other one and raise issue that possible don't exist if the correct version would be used.

Thanks for the PR.
It released in v4.8.0

Thanks for the super fast response time 🚀


Adding a Success toast when a user Saves the EDA Settings

Critical Changes
Changes

We've added visual notification of a successful save of EDA Settings.

Issues Closed
New Metadata
Custom Label: stgSuccess
Custom Label: stgSaveSettings
Deleted Metadata
Testing Notes

Open EDA Settings
Click Edit
Make changes (doesn't matter, you actually don't have to do that even)
Click Save

One more minor change, then feel free to move onward @lifewithryan

I also updated the release notes to include the new labels.


Remove side-effects in HelpCommand

Currently HelpCommand is launching a side-effect in run method (printing in the console the help). This PR fixes it and throw the effect to the next layer, who will catch it and treat the effect properly. Effects should be handled on the main method inside exit(withError:) or let to the user decided how to manage them
This change will let us write something like:
enum ParsableCommandError: Error {
    case general(String)
}

extension ParsableCommand {
    func parse(_ arguments: [String]? = nil) -> Result<ParsableCommand, ParsableCommandError> {
        do {
            let command = try Self.parseAsRoot(arguments)
            try command.run()
            return .success(command)
        } catch {
            let info = Self.fullMessage(for: error)
            return .failure(.general(info))
        }
    }
}

In the end, delegate the responsibility about when executing the effects and how handling

I have tested it using ParsableCommand with subcommands and without them. It works properly in both cases.

Checklist

[x] I've added at least one test that validates that my change is working, if appropriate
[x] I've followed the code style of the rest of the project
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary

@natecook1000 please, we are working on a migration in our lib nef and we need this change. Could you review it? Thanks

Thanks @miguelangel-dev — I'm going to merge this change. The thing we're missing for full manual handling of errors is a way to determine whether an error is really an "error", since you'd want to treat a validation error separately from a help request. I'll fill that hole in a follow-up PR before version 0.0.3.

See #79 for the WIP new method — any feedback you have would be great!

I'm going to merge this change. The thing we're missing for full manual handling of errors is a way to determine whether an error is really an "error", since you'd want to treat a validation error separately from a help request. I'll fill that hole in a follow-up PR before version 0.0.3.

It sounds good. Thanks for the info, I will keep an eye in the #79


#22: dev deps

@rultor merge

@rultor merge

@yegor256 Done! FYI, the full log is here (took me 3min)


chore(cra-rxjs-styled-components): Updated kit dependencies

This PR updates all the dependencies for the cra-rxjs-styled-components kit

The failing netlify builds are fine don't worry about them. The cra-rxjs just needed a rebuild with a cache clear and the next12 deploy requires another one of my prs to be merged in


[Bug] Wrong test data path

Search before asking

[X] I searched the issues and found no similar issues.

Component
KFP workflows
What happened + What you expected to happen
After moving the transform code into ray subdirectory PR #143 , the test data path in the kind/hack/populate_minio.sh is wrong
Reproduction script
run make setup and see the results of data population
Anything else
No response
OS
MacOS (limited support)
Python
3.10.x
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

was fixed by #149


docs(chips): Update OVERVIEW.md with more info.

Update the Chips overview with additional information and context.

Add section regarding disabled chips
Note (select) and (deselect) outputs
Add hint about <md-basic-chip>
Fix a few typos

LGTM


Action creators vs actions in when clauses

Currently, when clauses contain actions. However, if there is an error in action creator (depends on how complex action creators you use), all tests fail. Since this library attempts at integration testing, we should probably include action creators. There are two syntax variants:

generator function: when('query is set', () => setQuery('Bridgeburners'));
spread: when('query is set', setQuery, 'Bridgeburners')
The advantage of using generator function is you can apply several actions at once. The question is whether you should. If we agree on one action per when clause, spread syntax seems more natural.

I have decided for the spread operator since I like it a bit better (from redux-saga). There is even a way of applying multiple actions (use Array.isArray()).


Is Log.e better than Log.i ?

try {                 Log.d(TAG, "WindowManager's addView(view, params) has been hooked.");                 base.addView(view, params);             } catch (BadTokenException e) {                 Log.i(TAG, e.getMessage());                 if (badTokenListener != null) {                     badTokenListener.onBadTokenCaught(toast);                 }             }
I found this in SafeToastContext.java , but is that Log.e better than Log.i ?
Not a big deal, but make me feel better.
Or you have other purposes about this? PLZ let me know, Thanks

The exception is known and caught now, so it should not log a error but information.

If you would improve it to be a error log you could use the listener to log by yourself.
The use of error usually indicates that this exception is unexpected, but it is clear that this exception is now known to us.

Errors can cause panic. Since we've already held it, we should not use it.


Updating kube burner version

Description
Need to update the kube-burner verison to include proxy settings for private clusters

Can one of the admins verify this patch?


feat: add a complete docker compose file for apibara integration, with mongodb

Feature Request
Describe the Feature Request
presently, in the feat/apibara_integration branch, we start a DNA indexer plugged into the starknet node that locally runs (katana)
let's add two more parts in the architecture:

the kakarot rpc apibara indexer https://github.com/kkrt-labs/kakarot-indexer
a mongodb local instance

Can this be closed @Eikix ?


Bootstrap validation language

This change is

Good job!

Reviewed 18 of 21 files at r1, 1 of 1 files at r2, 3 of 3 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved.

validator/script.go, line 36 at r3 (raw file):

	// ErrLoadingPlugin is the error returned in case the plugin could not be loaded
	ErrLoadingPlugin = "Error while loading validation script for process %s and type %s"

I'm not sure it is necessary to put errors with formatting as const because we cannot check if returned error is equal to this string.

validator/script.go, line 87 at r3 (raw file):

	}

	// here we ignore the error since there is no way we cannot read the file if the plugin has be loaded successfully

nit: "has been loaded"

validator/testdata/byzantine_validator.go, line 26 at r3 (raw file):

// Init validates the transition towards the "init" state
func Init(storeReader store.SegmentReader, l *cs.Link) error {
	return errors.New("error")

:boom:

Comments from Reviewable

Reviewed 21 of 21 files at r1, 1 of 1 files at r2.
Review status: all files reviewed at latest revision, 2 unresolved discussions.

cmd/dummytmpop/main.go, line 47 at r2 (raw file):

		Commit:  commit,
		Version: version,
		ValidationCfg: &validator.Config{

Since there are two distinct flags for validation and many stores (all TM variations) support validations, I think it's worth extracting that to a separate file, just like what was done for monitoring.
This way you would just call validation.RegisterFlags() in init() and validation.ConfigurationFromFlags() in main() and there would be less duplication all over the stores.

tmpop/state.go, line 64 at r2 (raw file):

	}

	state.governance, err = validator.NewGovernanceManager(ctx, a, config.ValidationCfg)

nit: since the package name is already "config", I think this should be called "Validation" instead of "ValidationCfg"

validator/configloader.go, line 168 at r2 (raw file):

		if val.Script != nil {
			schemaValidator, err := newScriptValidator(baseConfig, val.Script, pluginsPath)

nit: scriptValidator (not schemaValidator)

validator/script.go, line 87 at r2 (raw file):

	}

	// here we ignore the error since there is no way we cannot read the file if the plugin has be loaded successfully

nit: has been

validator/script.go, line 96 at r2 (raw file):

}

func (sv scriptValidator) Hash() (*types.Bytes32, error) {

I think this ends up being unused.
Currently the multi-validator's Hash() method hashes the validator array, not the hashes they produce.
We need to change the multi-validator to concatenate the hashes of all subvalidators and then hash that.
Adding unit tests on the hash produced by multivalidator.Hash() would be quite useful to catch these issues.

validator/script.go, line 111 at r2 (raw file):

}

func (sv scriptValidator) ShouldValidate(link *cs.Link) bool {

Is it a coincidence that "sv" is your initials?

validator/script.go, line 36 at r3 (raw file):
Previously, alexppxela (Alexandre Thibault) wrote…
I'm not sure it is necessary to put errors with formatting as const because we cannot check if returned error is equal to this string.

I agree, I'm not a big fan of that because anytime we change this we have to change the tests...

validator/validator.go, line 29 at r2 (raw file):

	DefaultFilename = "/data/validation/rules.json"

	// DefaultPluginsDirectory is the default filename for the file with the rules of validation

nit: copy-pasted comment

validator/validator_test.go, line 15 at r2 (raw file):

// limitations under the License.

package validator_test

Do you really have no way of keeping these black-box tests? It's a code smell that you have to do that ;) (testing privates/internals is bad practice)

validator/validator_test.go, line 43 at r2 (raw file):

const (
	// AlicePrivateKey  = "-----BEGIN ED25519 PRIVATE KEY-----\nBEC0TyVE2Y7+OgPHcSAAIAjUHCVA68swAp235LkQZBIrZnUfW/lss95djRXjIeX+\nezH5bdbVe7s4wbPJRBiej+it\n-----END ED25519 PRIVATE KEY-----\n"

Why is this commented out?

Comments from Reviewable

Review status: all files reviewed at latest revision, 11 unresolved discussions.

validator/script.go, line 111 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
Is it a coincidence that "sv" is your initials?

I spotter it but @simonvadee has already named SchemaValidator as "sv" :)

Comments from Reviewable

Reviewed 18 of 21 files at r1, 1 of 1 files at r2, 3 of 3 files at r3.
Review status: all files reviewed at latest revision, 11 unresolved discussions.

cs/cstesting/cstesting.go, line 33 at r3 (raw file):

// CreateLink creates a minimal link.
func CreateLink(process, linkType, mapID, prevLinkHash string, tags []string, priority float64) *cs.Link {

a builder with nice defaults would probably be better here. it can wait a next PR though

Comments from Reviewable

Review status: all files reviewed at latest revision, 11 unresolved discussions.

cmd/dummytmpop/main.go, line 47 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
Since there are two distinct flags for validation and many stores (all TM variations) support validations, I think it's worth extracting that to a separate file, just like what was done for monitoring.
This way you would just call validation.RegisterFlags() in init() and validation.ConfigurationFromFlags() in main() and there would be less duplication all over the stores.

Good point ! I'll address this in my next commit

cs/cstesting/cstesting.go, line 33 at r3 (raw file):
Previously, such (Adrien Montfort) wrote…
a builder with nice defaults would probably be better here. it can wait a next PR though

Good point ! I created a card

tmpop/state.go, line 64 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
nit: since the package name is already "config", I think this should be called "Validation" instead of "ValidationCfg"

agreed :). Done.

validator/configloader.go, line 168 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
nit: scriptValidator (not schemaValidator)

Done.

validator/script.go, line 87 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
nit: has been

Done.

validator/script.go, line 96 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
I think this ends up being unused.
Currently the multi-validator's Hash() method hashes the validator array, not the hashes they produce.
We need to change the multi-validator to concatenate the hashes of all subvalidators and then hash that.
Adding unit tests on the hash produced by multivalidator.Hash() would be quite useful to catch these issues.

+1000, will fix that

validator/script.go, line 111 at r2 (raw file):
Previously, alexppxela (Alexandre Thibault) wrote…
I spotter it but @simonvadee has already named SchemaValidator as "sv" :)

schemaValidator, scriptValidator, signatureValidator, it's all part of my plan !

validator/script.go, line 36 at r3 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
I agree, I'm not a big fan of that because anytime we change this we have to change the tests...

I hesitated but found it was a better option, I'd be interested in discussing that tomorrow.

validator/script.go, line 87 at r3 (raw file):
Previously, alexppxela (Alexandre Thibault) wrote…
nit: "has been loaded"

Done.

validator/validator.go, line 29 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
nit: copy-pasted comment

Done.

validator/validator_test.go, line 15 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
 It's a code smell that you have to do that ;) (testing privates/internals is bad practice)

I thought it was a legacy issue and I don't really understand what you're saying.. let's get back to this ! (and btw I'm offended when you say that my code smells)

validator/validator_test.go, line 43 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
Why is this commented out?

no reason. Done.

Comments from Reviewable

Review status: 13 of 25 files reviewed at latest revision, 5 unresolved discussions, some commit checks pending.

cmd/dummytmpop/main.go, line 47 at r2 (raw file):
Previously, simonvadee (Simon Vadée) wrote…
Good point ! I'll address this in my next commit

Done.

validator/script.go, line 96 at r2 (raw file):
Previously, simonvadee (Simon Vadée) wrote…
+1000, will fix that

Done.

validator/script.go, line 36 at r3 (raw file):
Previously, alexppxela (Alexandre Thibault) wrote…
As ErrLoadingPlugin is used several times (here and in tests), it is maybe best to keep it as const.n

I kept it in the end ! Done.

validator/util_test.go, line 22 at r4 (raw file):
Previously, alexppxela (Alexandre Thibault) wrote…
nit: why private keys use double quote and public backquote?

good question : public keys are inserted in the JSON literal strings, hence they need the \n unescaped (carriage returns are not handled in JSON). On the other hand, when parsing a private key, we need an escaped \n.

validator/validator_test.go, line 15 at r2 (raw file):
Previously, t-bast (Bastien Teinturier) wrote…
Haha :)
I think that tests should be in a package packagename_test as much as possible so that it cannot use the private data of the package.
This way tests tend to break less often when people refactor/change the internal code in the package.

Done.

Comments from Reviewable

Reviewed 12 of 12 files at r5.
Review status: all files reviewed at latest revision, 5 unresolved discussions.

Comments from Reviewable


New version: GBIF v0.2.3

Registering package: GBIF
Repository: https://github.com/EcoJulia/GBIF.jl
Created by: @tpoisot
Version: v0.2.3
Commit: 84d4bab59770e121de60089f366e7f75ee9f883a
Reviewed by: @tpoisot
Reference: https://github.com/EcoJulia/GBIF.jl/commit/84d4bab59770e121de60089f366e7f75ee9f883a#commitcomment-39242192

The Travis build seems to fail because it was unable to install MbedTLS, which worked for me using Github actions. What's the protocol to fix this here?

Same for me :( #14933