Delete an element in circular linked list

I want to work on this issue in cpp

@sukritidawar Yes you may start working on this issue, make sure to follow all the points mentioned in contribution guide and make a PR once done.

Hi, @amritansh22 Can I work on this issue ?

@sukritidawar Yes you may start working on this issue, make sure to follow all the points mentioned in contribution guide and make a PR once done.

Hey, once it was assigned to me, I was working on this, and was about to make a pr...but since someone else submitted the pr, you closed this issue...it shouldn't be like this I think, if this would be the case, then there won't be the need to comment also...right? I mean why did you even assign me the issue in the first place also?

Hi @sukritidawar, He didn't assign you this issue. He said you can go ahead and do it. Since there was no one assigned on this issue that's why I also did it. It doesn't mean that you cannot create a PR, go ahead and please do it. I saw you commented on multiple issues, so I thought you won't mind if I do anyone since it is my first time also.

@sukritidawar One more thing, He didn't close the issue, if you look carefully the issue is still open. I was the one who closed the PR because it won't be counted for Hacktoberfest if done before 1st oct.

Hi @sukritidawar, He didn't assign you this issue. He said you can go ahead and do it. Since there was no one assigned on this issue that's why I also did it. It doesn't mean that you cannot create a PR, go ahead and please do it. I saw you commented on multiple issues, so I thought you won't mind if I do anyone since it is my first time also.

Well, if I had commented on the issue first, and the author had written that yes I can go ahead with it, I think that you should've considered this in account....Regarding the prs, if you and I are working on the same issue and in the same language, then I think that only one pr would be merged, right?

@sukritidawar First of all apologies. Secondly, try to understand the situation here generally we assigning issues to someone, then they make a PR. But here when I assign an issue to someone they completely vanish and the issue becomes stale. So to avoid this I stopped assigning issues. Now in this also I thought that would be no longer interested, s I merged @ankitksh81 PR.

@sukritidawar What you can do to avoid further problems is to make your own issues.

@amritansh22 did you merged my PR ?
But I closed it right?

@sukritidawar First of all apologies. Secondly, try to understand the situation here generally we assigning issues to someone, then they make a PR. But here when I assign an issue to someone they completely vanish and the issue becomes stale. So to avoid this I stopped assigning issues. Now in this also I thought that would be no longer interested, s I merged @ankitksh81 PR.

She had two issues, If she doesn't want to give chance to others then it's alright she can go ahead and do it.

@ankitksh81 No your PR isn't merged because you yourself closed it, that's why this issue is still open

@sukritidawar First of all apologies. Secondly, try to understand the situation here generally we assigning issues to someone, then they make a PR. But here when I assign an issue to someone they completely vanish and the issue becomes stale. So to avoid this I stopped assigning issues. Now in this also I thought that would be no longer interested, s I merged @ankitksh81 PR.
I understand that completely, but I think that not everyone vanishes after being assigned, and since you had labelled hacktober fest, so I was also waiting for October 1st to make a pr....Just a suggestion, please assign the issue from next time to avoid any confusions and misconceptions, since two of my issues were closed like this only.Thanks.

See this issue: He asked me assign and 3 days have passed
https://github.com/amritansh22/Data-Structures-and-Algorithms-in-cpp/issues/17

@sukritidawar Since you want to take part in Octoberbest. I would recommend you to open 5 issues now and assign them to you. On 1st October you may create a PR for all of them.

@sukritidawar First of all apologies. Secondly, try to understand the situation here generally we assigning issues to someone, then they make a PR. But here when I assign an issue to someone they completely vanish and the issue becomes stale. So to avoid this I stopped assigning issues. Now in this also I thought that would be no longer interested, s I merged @ankitksh81 PR.

She commented on two issues, If she doesn't want to give chance to others then it's alright she can go ahead and do it.

See, to be very clear, I don't have any problem with you working on the issue. Please go ahead and work on it. I never said that I don't want to give a chance to others. I was just saying so that there won't be any confusion and misconceptions in the future. I'm sorry if you felt that I didn't want to give others a chance, but generally on github I've seen all this happening very smoothly, and this was the first time I had seen something like this, so I thought to clear the doubts.

@amritansh22 it's upto you, you can assign the issue to who ever you want. I'm just saying that she already have an issue which she doing. But if she want's to do both then I don't have a problem.

@sukritidawar First of all apologies. Secondly, try to understand the situation here generally we assigning issues to someone, then they make a PR. But here when I assign an issue to someone they completely vanish and the issue becomes stale. So to avoid this I stopped assigning issues. Now in this also I thought that would be no longer interested, s I merged @ankitksh81 PR.

She commented on two issues, If she doesn't want to give chance to others then it's alright she can go ahead and do it.

See, to be very clear, I don't have any problem with you working on the issue. Please go ahead and work on it. I never said that I don't want to give a chance to others. I was just saying so that there won't be any confusion and misconceptions in the future. I'm sorry if you felt that I didn't want to give others a chance, but generally on github I've seen all this happening very smoothly, and this was the first time I had seen something like this, so I thought to clear the doubts.

yeah same for me, it's my first time so since I saw no one assigned that's why I did it. I coded it for more than 2 hrs last night. I hope you understand. But again you can work on it. I don't mind. I will create a new issue and do that as @amritansh22 suggested.

@ankitksh81 @sukritidawar Apologies to both of you. To avoid this problem to others, from now forth I would assign every issue someone. Now I am going to create few issues, you may to work upon them and I would assign them to you.

May  I work on this issue

@piyush9311, already working on it. Sorry.


Support complex domains (e.g., circle in the complex plane)

The original idea was to support this by identifying R^2 with C. This way, any 2D domain can be used as a subset of the complex plane. As a matter of fact, this is currently working, but it is not user-friendly yet and it does result in a very strange object (a unit disk with an affine map to set the radius, and an embedding map for identifying with the plane).
Of course, for popular domains such as circles and, say, Bernstein ellipses, there could be a special-purpose type as well with a straightforward implementation.

I think that would be confusing, and one should only support conversion:
in(d::Domain{T}, x) where T = in(d, convert(T, x))

This would throw an error if T is SVector{2,Float64} and x isa Complex128.
I would rewrite the circle code to support non-SVector types via:
struct UnitSphere{N,T} <: Domain{T}
end

const Circle{T} = UnitSphere{2,T}
const Sphere{T} = UnitBall{3,T}
circle(::Type{T} = Float64) where {T} = Circle{SVector{2,T}}()

Then a complex-valued unit circle could be represented as Circle{Complex128}(), or a Vector{Float64} unit circle could be represented as Circle{Vector{Float64}}().

Sorry, calling convert doesn't work: one wants to actually do the following:
function in(x, d::Domain)
   T = promote_type(typeof(x), eltype(d))
   T == Any && return false
   in(convert(T, x), convert(Domain{T}, d))
end

so that we can do in(1+im , Interval()) without throwing an error.

PS I'm going to just make the changes I want to make in the branch approxfun-support, and we can discuss whether they are good ideas in a pull request

I think this makes sense: change it to

const UnitCircle{T} = UnitHyperSphere{SVector{2,T}}
const UnitSphere{T} = UnitHyperSphere{SVector{3,T}}
const ComplexUnitCircle{T} = UnitHyperSphere{Complex{T}}

Here the definition of UnitHyperSphere{T} is x in T such that norm(x) = 1.

Old issue but still relevant. With the current generic definitions of balls and spheres, I'm adding:
const ComplexUnitCircle{T} = FixedUnitSphere{Complex{T}}
const ComplexUnitDisk{T,C} = FixedUnitBall{Complex{T},C}

ComplexUnitCircle() = ComplexUnitCircle{Float64}()
ComplexUnitDisk() = ComplexUnitDisk{Float64}()
ComplexUnitDisk{Float64}() = ComplexUnitDisk{Float64,:closed}()

The open complex unit disk can be made, if one is so inclined, using ComplexUnitDisk{Float64,:open}.


WhisperGateIsOpen

Minor Modification

powershell_windows_defender_exclusion_commands.yml
suspicious_process_file_path.yml
windows_defender_exclusion_registry_entry.yml
executables_or_script_creation_in_suspicious_path.yml
add_or_set_windows_defender_exclusion.yml
attempt_to_stop_security_service.yml
wscript_or_cscript_suspicious_child_process.yml
process_deleting_its_process_file_path.yml
high_file_deletion_frequency.yml

Analytic story WhisperGate
stories/whispergate.yml
process macro

process_ping.yml

new detection

suspicious_process_with_discord_dns_query.yml
ping_sleep_batch_command.yml
powershell_remove_windows_defender_directory.yml
excessive_file_deletion_in_windefender_folder.yml

Added source

This PR was created by Automated Detection Testing Service :robot:
Tested detections:
Suspicious Process With Discord DNS Query :white_check_mark:

diskUsage: 303104
runDuration: 3.094s
scanCount: 2367

This PR was created by Automated Detection Testing Service :robot:
Tested detections:
Powershell Remove Windows Defender Directory :white_check_mark:

diskUsage: 172032
runDuration: 1.425s
scanCount: 97

This PR was created by Automated Detection Testing Service :robot:
Tested detections:
Ping Sleep Batch Command :white_check_mark:

diskUsage: 552960
runDuration: 4.025s
scanCount: 4


Generated code does not match the documentation how to use it

Hi, same problem as #1155 cannot find at all how to initialize my client according to documentation:
Describe the issue or request
In the docs you can read how to Initializing Your Client.
const string endpoint = "http://localhost:3000"; var client = new PetsClient(endpoint);
But when I generate the code my client constructor looks totally different:
public MyRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint = null)
This constructor seems pointless to me as it doesn't require an Uri but forces instead to provide some other parameters. I'm not sure if that's the case because the documentation is outdated or because I missing an option.
Describe your ideas for solutions
Please update the documentation how to generate a client which can be instantiated like shown in the documentation. Or provide an example how to use this constructor.
info
In my case, I ran:
>autorest --csharp --namespace="XXX.BL.Clients.XXX" --input-file="http://localhost:5001/swagger/v1/swagger.json" --output-folder="../XXX.BL.Clients.XXX/Client"

AutoRest code generation utility [cli version: 3.4.0; node: v14.15.1]
(C) 2018 Microsoft Corporation.
https://aka.ms/autorest
NOTE: AutoRest core version selected from configuration: ~3.1.0.
   Loading AutoRest core      'C:\Users\XXX\.autorest\@autorestcore@3.1.3\nodemodules\@autorest\core\dist' (3.1.3)
INFORMATION: > Loading AutoRest extension '@autorest/csharp' (latest->3.0.0-beta.20210929.1)
INFORMATION: > Loading AutoRest extension '@autorest/modelerfour' (4.21.1->4.21.1)
WARNING (PreCheck/CheckDuplicateSchemas): Checking for duplicate schemas, this could take a (long) while.  Run with --verbose for more detail.
WARNING (UnkownSecurityScheme): Security scheme Bearer is unknown and will not be processed. Only supported types are AADToken,AzureKey,Anonymous
WARNING (Modeler/MissingType): The schema 'components·g6kt5c·schemas·microsoft-aspnetcore-mvc-problemdetails·additionalproperties' has no type or format information whatsoever. Location:
   http://localhost:5001/swagger/v1/swagger.json#/components/schemas/components·g6kt5c·schemas·microsoft-aspnetcore-mvc-problemdetails·additionalproperties

   [5.32 s] Generation Complete

I got:
internal partial class XXXXAPIRestClient
    {
        private Uri endpoint;
        private ClientDiagnostics _clientDiagnostics;
        private HttpPipeline _pipeline;

        /// <summary> Initializes a new instance of XXXXAPIRestClient. </summary>
        /// <param name="clientDiagnostics"> The handler for diagnostic messaging in the client. </param>
        /// <param name="pipeline"> The HTTP pipeline for sending and receiving REST requests and responses. </param>
        /// <param name="endpoint"> server parameter. </param>
        public XXXXAPIRestClient(ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Uri endpoint = null)
        {
            this.endpoint = endpoint ?? new Uri("https://localhost:57566");
            _clientDiagnostics = clientDiagnostics;
            _pipeline = pipeline;
        }
        ///....
   }

No Idea whatsoever how to instantiate this. Documentation does not help at all.

I had similar issues (I'm not a .NET dev whatsoever!), and after a bit of fiddling this is what I ended up with for our API, the example below uploads a filestream via a multipart request. The config I'm using:
package-name: Affinda.API
namespace: Affinda.API
output-folder: "./generated/csharp/AffindaAPI/AffindaAPI"
description: Affinda API client for C#
add-credential: true
security: AADToken  # https://github.com/Azure/autorest.csharp/blob/feature/v3/docs/protocol_method_client.md
use-extension:
  # To allow use outside of the azure-sdk-net repo, see:
  # https://github.com/Azure/autorest.csharp/blob/feature/v3/readme.md#use-outside-of-the-azure-sdk-net-repo
  "@autorest/csharp": "3.0.0-beta.20210901.1"
library-name: AffindaAPI
skip-csproj: true  # We want to use the customised one in ./extra/csharp
public-clients: true

directive:
  #  Because the csharp engine has problems with 'url' formatted strings

  - from: openapi-document
    where: $.components.schemas.UrlToProcess
    debug: true
    transform: >-
      $["format"] = "uri";

#  - from: openapi-document
#    where: $.components.schemas.File
#    debug: true
#    transform: >-
#      $["format"] = "file";

using System;
using System.IO;
using Affinda.API;
using Affinda.API.Models;

...

string resumePath = "PATH_TO_RESUME";
using (FileStream fs = File.OpenRead(resumePath))
{
    var credential = new AffindaTokenCredential("REPLACE_TOKEN");
    var client = new AffindaAPIClient(credential);
    var resume = client.CreateResume(file: fs);
}

including a .csproj file: https://github.com/affinda/affinda-dotnet/tree/main/SampleProgram
Hopefully this helps, what I did

Hopefully this helps! What I did was call the client in the IDE (I used Rider) and step through the code line by line in the debugger to figure out what was being called/passed to what :) Good luck!

I did try your recipe, and it looks promising. However, the client is still generated as internal and there is an error in the constructor (new Uri(HostOptions.Httpxxx) fails to compile). Still looking.


Update new version to bower please

Can you update the 0.3.0 version to bower please?

I can't get it to work with bower either. I think the problem is the author didn't git-tag the 0.3.0 version.

Was anybody able to get this to inject? I can only add it to my bower folder but not inject into my index.html

I forked and created a tag on this. In bower its call ng-password-meter-2017 the inject only inserts the js file but that all i needed.


Feature request: Improve Data Storage by Using MySQL Database

Current Situation:

Logging is currently done in local files.
Pubtator API requests are performed externally.
Some data (e.g., HELP, FAQ, Startpage content) is stored in JSON objects and not in the database.

Problems:

Slow performance due to local file handling and external API requests.
Potential for issues with data retrieval and management.

Proposed Solution:
Create new tables in the MySQL database to handle the following:

Logging: Store log entries currently saved in local files.
Pubtator API Requests: Cache responses to reduce external API calls.
JSON Storage: Save and load JSON objects for dynamic content (HELP, FAQ, Startpage, etc.).

Database Table Design:

Logging Table:
CREATE TABLE `logging` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `timestamp` DATETIME NOT NULL,
  `address` VARCHAR(255) NOT NULL,
  `agent` TEXT,
  `host` VARCHAR(255),
  `request_method` VARCHAR(10),
  `path` TEXT,
  `query` TEXT,
  `post` TEXT,
  `status` INT,
  `duration` FLOAT,
  `file` VARCHAR(255),
  `modified` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Pubtator API Cache Table:
 CREATE TABLE `pubtator_cache` (
   `id` INT AUTO_INCREMENT PRIMARY KEY,
   `query` TEXT NOT NULL,
   `page` INT NOT NULL,
   `response` JSON NOT NULL,
   `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
 );

JSON Storage Table:
   CREATE TABLE `json_storage` (
     `id` INT AUTO_INCREMENT PRIMARY KEY,
     `name` VARCHAR(255) NOT NULL,
     `json_data` JSON NOT NULL,
     `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
   );

Tables:
Pubtator API Cache Table:

Table Name: pubtator_cache
Columns:

cache_id: INT AUTO_INCREMENT PRIMARY KEY
query: VARCHAR(255) NOT NULL
pmid: VARCHAR(50) NOT NULL
response: TEXT NOT NULL
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP

Logging Table:

Table Name: logs
Columns:

log_id: INT AUTO_INCREMENT PRIMARY KEY
timestamp: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
level: VARCHAR(50)
message: TEXT

JSON Data Table:

Table Name: json_data
Columns:

data_id: INT AUTO_INCREMENT PRIMARY KEY
page: VARCHAR(255) NOT NULL
json_content: JSON
created_at: TIMESTAMP DEFAULT CURRENT_TIMESTAMP

Tasks:
Design Database Tables:

Create table structures for logging, Pubtator API responses, and JSON storage.
Write Creation Scripts: Follow current script style for table creation.
Integrate with Existing Functionality: Modify existing functionality to use the new database tables.
Migrate Existing Data: Develop scripts to migrate current log files and Pubtator responses to the new database tables.
Implement Data Access Methods:  Update the code to read from and write to the new database tables.
Testing: Thoroughly test the new functionality to ensure data integrity and performance improvements.

Expected Benefits:

Improved performance and reliability.
Centralized data storage for easier management and backup.
Reduced dependency on external API calls.

relates to #57

reöates to #48

Completed Tasks:

Added Three New Scripts for Database Integration:

15_Rcommands_sysndd_db_logging_table.R: Script to create and manage the logging table in MySQL.
16_Rcommands_sysndd_db_pubtator_cache_table.R: Script to handle the PubTator cache table for efficient data retrieval and storage.
17_Rcommands_sysndd_db_json_storage_table.R: Script for managing JSON storage tables in the MySQL database.

Updated API Logging Functions:

Enhanced the API to log messages directly to the MySQL database.
Modified the start_sysndd_api.R script to include new logging functions and integrate with the MySQL database.


Don't target arm64/arm64e for the back-deployed Concurrency dylib for…

… watchOS
Addresses rdar://101389307

@swift-ci please test

@swift-ci please built toolchain

@swift-ci please test Windows

@swift-ci please build toolchain

Windows toolchain job hit
Unmapped value while cloning?

UNREACHABLE executed at C:\Users\swift-ci\jenkins\workspace\swift-PR-build-toolchain-windows\swift\include\swift/SIL/SILCloner.h:527!

That seems a known issue not related to this PR (e.g. https://ci-external.swift.org/job/oss-swift-windows-toolchain-x86_64-vs2019/1795/)


[Hardware][CPU] compressed-tensor INT8 W8A8 AZP support

This PR added the compressed-tensor INT8 W8A8 AZP support and re-enable the compressed-tensor tests in CPU CI.
This PR also move the oneDNN build procedure to the CMake script to achieve out-of-box usage.

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Adding or changing kernels
Each custom kernel needs a schema and one or more implementations to be registered with PyTorch.

Make sure custom ops are registered following PyTorch guidelines: Custom C++ and CUDA Operators and The Custom Operators Manual
Custom operations that return Tensors require meta-functions. Meta-functions should be implemented and registered in python so that dynamic dims can be handled automatically. See above documents for a description of meta-functions.
Use torch.libary.opcheck() to test the function registration and meta-function for any registered ops.  See tests/kernels for examples.
When changing the C++ signature of an existing op, the schema must be updated to reflect the changes.
If a new custom type is needed, see the following document: Custom Class Support in PT2.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

Hi @mgoin , please help to review this PR, thanks :)

Hi @mgoin @ProExpertProg , thanks for your helpful comments, I have fixed them all. Do you have any further comment?

Hi @mgoin , please help to merge this as I rebased it for passing CUDA tests, thanks :)

This seems to break the vLLM CPU docker image.  I upgraded to from 0.6.3 to 0.6.4 and started getting this error:
INFO 11-17 02:41:24 logger.py:37] Received request cmpl-d4613cb5f8e649c9b0e394953626555f-0: prompt: 'How are you?', params: SamplingParams(n=1, presence_penalty=0.0, frequency_penalty=0.0, repetition_penalty=1.0, temperature=1.0, top_p=1.0, top_k=-1, min_p=0.0, seed=None, stop=[], stop_token_ids=[], bad_words=[], include_stop_str_in_output=False, ignore_eos=False, max_tokens=50, min_tokens=0, logprobs=None, prompt_logprobs=None, skip_special_tokens=True, spaces_between_special_tokens=True, truncate_prompt_tokens=None, guided_decoding=None), prompt_token_ids: [2, 6179, 32, 47, 116], lora_request: None, prompt_adapter_request: None.
++ echo '--- Describe Model Pods ---'
++ kubectl describe pod -l app=model
INFO 11-17 02:41:24 async_llm_engine.py:208] Added request cmpl-d4613cb5f8e649c9b0e394953626555f-0.
ERROR 11-17 02:41:24 multiproc_worker_utils.py:116] Worker VllmWorkerProcess pid 29 died, exit code: 1
INFO 11-17 02:41:24 multiproc_worker_utils.py:120] Killing local vLLM worker processes
ERROR 11-17 02:41:24 async_llm_engine.py:65] Engine background task failed
ERROR 11-17 02:41:24 async_llm_engine.py:65] Traceback (most recent call last):
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 55, in _log_task_completion
ERROR 11-17 02:41:24 async_llm_engine.py:65]     return_value = task.result()
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 872, in run_engine_loop
ERROR 11-17 02:41:24 async_llm_engine.py:65]     result = task.result()
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 795, in engine_step
ERROR 11-17 02:41:24 async_llm_engine.py:65]     request_outputs = await self.engine.step_async(virtual_engine)
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 347, in step_async
ERROR 11-17 02:41:24 async_llm_engine.py:65]     outputs = await self.model_executor.execute_model_async(
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/executor/cpu_executor.py", line 308, in execute_model_async
ERROR 11-17 02:41:24 async_llm_engine.py:65]     output = await make_async(self.execute_model
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/lib/python3.10/concurrent/futures/thread.py", line 58, in run
ERROR 11-17 02:41:24 async_llm_engine.py:65]     result = self.fn(*self.args, **self.kwargs)
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/executor/cpu_executor.py", line 220, in execute_model
ERROR 11-17 02:41:24 async_llm_engine.py:65]     output = self.driver_method_invoker(self.driver_worker,
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/executor/cpu_executor.py", line 377, in _async_driver_method_invoker
ERROR 11-17 02:41:24 async_llm_engine.py:65]     return driver.execute_method(method, *args, **kwargs).get()
ERROR 11-17 02:41:24 async_llm_engine.py:65]   File "/usr/local/lib/python3.10/dist-packages/vllm/executor/multiproc_worker_utils.py", line 54, in get
ERROR 11-17 02:41:24 async_llm_engine.py:65]     raise self.result.exception
ERROR 11-17 02:41:24 async_llm_engine.py:65] ChildProcessError: worker died
Unable to get JIT kernel for brgemm. Params: M=5, N=5, K=64, str_a=1, str_b=1, brgemm_type=1, beta=0, a_trans=0, unroll_hint=1, lda=2304, ldb=5, ldc=5, config=0, b_vnni=02024-11-17 02:41:24,642 - __init__.py - asyncio - ERROR - Exception in callback functools.partial(<function _log_task_completion at 0x7f83813afd90>, error_callback=<bound method AsyncLLMEngine._error_callback of

The unable to get JIT kernel for brgemm may be the most relevant part?

One notable change was that previously this variable ONEDNN_ENABLE_JIT_PROFILING set to on and this PR turns it off.
Since my error message says JIT in it that's why I thought it may be related. Note I have no understanding of the code. So this may not be relevant at all.

@samos123 Looks like the W8A8 unit tests are normal on the main branch.
Can you provide your service setup command and your CPU information? I will try to reproduce it.
And you can set a env ONEDNN_VERBOSE=all to get more detail oneDNN log.

You can reproduce the issue like this:
docker run --rm -d --name vllm -p 8000:8000 -e VLLM_WORKER_MULTIPROC_METHOD=spawn -e ONEDNN_VERBOSE=all substratusai/vllm:v0.6.4.post1-cpu --model facebook/opt-125m --disable-frontend-multiprocessing

curl -v --fail-with-body --show-error http://localhost:8000/v1/completions -H 'Content-Type: application/json' -d '{
  "model": "facebook/opt-125m",
  "prompt": "San Francisco is a",
  "max_tokens": 7,
  "temperature": 0
}'

Let me know if you need any more details. I will add the env variable

@samos123 I didn't reproduce the problem on my platform.
Can you try to run examples/offline_inference.py? The multi-process of serving mode might make the oneDNN log invisible.

using offline_inference shows the same logs:
INFO 11-19 15:39:11 selector.py:221] Cannot use _Backend.FLASH_ATTN backend on CPU.
INFO 11-19 15:39:11 selector.py:156] Using Torch SDPA backend.
INFO 11-19 15:39:12 weight_utils.py:243] Using model weights format ['*.bin']
Loading pt checkpoint shards:   0% Completed | 0/1 [00:00<?, ?it/s]
/usr/local/lib/python3.10/dist-packages/vllm/model_executor/model_loader/weight_utils.py:425: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  state = torch.load(bin_file, map_location="cpu")
Loading pt checkpoint shards: 100% Completed | 1/1 [00:00<00:00,  3.08it/s]
Loading pt checkpoint shards: 100% Completed | 1/1 [00:00<00:00,  3.08it/s]

INFO 11-19 15:39:12 cpu_executor.py:205] # CPU blocks: 7281
Processed prompts:   0%|              | 0/4 [00:00<?, ?it/s, est. speed input: 0.00 toks/s, output: 0.00 toks/s]
Unable to get JIT kernel for brgemm. Params: M=6, N=6, K=64, str_a=1, str_b=1, brgemm_type=1, beta=0, a_trans=0, unroll_hint=1, lda=2304, ldb=6, ldc=6, config=0, b_vnni=0

Note this happens for me on both Github actions and on local machine. So not sure if it's platform specific. I'm leaning towards something in my docker build is different.
Do you try with using docker build and run? I did notice that vLLM has a test case that would have caught this issue so likely something wrong downstream.

Seems previously we always build and included oneDNN but after this PR this only happens if AVX512_FOUND is set. Is this expected?

@samos123 the oneDNN included in the CMake script is used for building compressed-tensor W8A8 kernels. You are using a normal opt-125m model so they are not related. In fact pytorch binary also links oneDNN statically, so you are using this oneDNN actually.
looks like your offline_inference output didn't contain oneDNN logs, please check whether ONEDNN_VERBOSE=all is set.
My tests are also inside a docker container, both serving mode and offline inference mode work normally on my platform.

I did have ONEDNN_VERBOSE=all set when using offline_inference. I suspect oneDNN isn't correctly included when the place that's building the docker image does not have AVX512_FOUND but does have AVX2_FOUND.
I have been doing various tests using Github actions here: https://github.com/substratusai/vllm-docker/pull/40
Let me try on my AMD Ryzen laptop.

I can reproduce this with vllm main branch. So I filed a bug here: https://github.com/vllm-project/vllm/issues/10478
Not sure if it's related to this PR or not, but this was the main thing that stood out when comparing v0.6.3 and v0.6.4.


The Future of the Data Engineer / Barr Moses @ Towards Data Science Blog

URL: https://towardsdatascience.com/the-future-of-the-data-engineer-4dcfa53800ab
Review (1-2 sentences): Feels like a bit of a heart-to-heart. Do you (data engineer) feel yourself as worst seat at the table?

Published in Digest #14


feat: uxc tables improvements

Description
Changes proposed in this pull request:

Protected resource icon is clickable and opens a popover instead of the tooltip on hover interaction
Protected resource icon in the table is now right next to the name instead of in a separate column
removed spacing after last table item
ClusterList: entire row is now navigateable, removed UI5link from name cell
text in TableRows can now be selected without executing the onClick
adjusted tests

Related issue(s)
#3011

Definition of done

[x] The PR's title starts with one of the following prefixes:

feat: A new feature
fix: A bug fix
docs: Documentation only changes
refactor: A code change that neither fixes a bug nor adds a feature
test: Adding tests
chore: Maintainance changes to the build process or auxiliary tools, libraries, workflows, etc.

[x] Related issues are linked. To link internal trackers, use the issue IDs like backlog#4567
[x] Explain clearly why you created the PR and what changes it introduces
[ ] All necessary steps are delivered, for example, tests, documentation, merging

/test pull-busola-web-build


Implement YAML support for cli input data

This commit implements support for cli input data to be in YAML format.
Fixes: https://github.com/seedwing-io/seedwing-policy/issues/79

Landed in 907e26b412426dcd4d6228c96cc6826fa68297ee.


Update documentation

Update the documentation as per this issue https://github.com/aromalanil/react-rhino/issues/1
Suggestions are welcome :confetti_ball:
Thanks

Hey @aromalanil
Let me know your feedback. We can do some changes too.

The suggestions are perfectly great. Will work on them. Btw, I haven't used markdown that much. I wish you success in you exams ! 😃

Hey @aromalanil
I made the changes per the suggestions we had. I also added License type at the bottom :smile: Let me know if there are other enhancements we can add.
Thanks!

@naftalimurgor Thanks for the changes. Just a few more small corrections and this will be merged.

Installation should come just before why section.
There should only be 3 steps in the getting started section. Others can be added as separate heading under usage section with same hierarchy as Getting started

@aromalanil
Great! I'll make the changes to the mentioned sections.

LGTM 🌷
Congrats @naftalimurgor on your first merge to React Rhino

LGTM 🌷
Congrats @naftalimurgor on your first merge to React Rhino


[Feature request] Improve runtime for contains_behavior for PolyhedralIoContractCompound

Checking whether a behavior satisfies a contract compound takes a significant amount of time, in the case that this behavior is not contained in the contract. Attached is a test where the runtime can be checked for a big polyhedral contract compound in "test_contract.json" and the matching behavior dictionary "test_behavior.json". The test is in "test_evaluate_behavior.py". Loading the contract from the file takes a significant amount of time as well.
To check the runtime of the merge that resulted in that contract the individual contracts are in "test_merge_contracts.json".
test_behavior.json
test_contract.json
test_merge_contracts.json
test_contains_behavior.py.zip

Thanks @jgraeb!
Per your subsequent findings about the size of these contracts after merging, do we still have to address this issue?


chore: Fix cargo deny failed checks and de-duplicate crates using workspace shared dependency

Fix cargo deny failed checks by adding BSD Clause 2 to supported licences (we already support  BSD Clause 3 which is an extension of 2)
De-duplicate crates using workspace shared dependencies
Update rust toolchain version to 1.74 due to clap-lexer MSRV requirements
Correct whitespace/trailing new lines

This should resolve the failed CI checks across all the PRs currently

cc @mxpv / @jsturtevant


HeroicGamesLauncher v2.4.3 is outdated

Checklist

[x] Checked the nixpkgs master branch

[x] Checked the nixpkgs pull requests

Project name
nix search name: heroic

current version: 2.4.3
desired version: 2.5.0
Notify maintainers

maintainers: @aidalgol
Note for maintainers
Please tag this issue in your PR.

Looks like they've changed the build system so I need to do more than just bump the tag in the fetcher.

Updated and rebased against recent master.


Update to vst 2.14

If @uncomputable has the time, it would be helpful to validate the non-nix build instructions still work; however it isn't critical.

I will check the non-nix build.

opam update might need to be run for the latest Coq version to be recognized. (Still running the rest)

rebased


Add Pull Request template

I open this PR as suggestion and discussion about what should be our guidelines for Pull Requests
The purpose of this template is to provide the author with a clearer set of instructions on the necessary steps to follow in order to create a proper pull request. As a result, the review process will be streamlined and more effective.

I'm not sure if this helps at all, my experience is:

At the moment, we don't even force good commits. So, IMHO, we're far away from writing good PR descriptions.
The templates, in my experience, only help to have a placeholder that no one uses.

I'm not sure if this helps at all, my experience is:

At the moment, we don't even force good commits. So, IMHO, we're far away from writing good PR descriptions.
The templates, in my experience, only help to have a placeholder that no one uses.

I think this is a good thing to start with
And this is our responsibility as a group to enforce this (if we think it may help)

I would take this and put it as the start of CONTRIBUTING.md and consider making this template bit more concise.
Doesn't have to be in this PR because it is a good improvement from what we have now.

I'm not sure if this helps at all, my experience is:

At the moment, we don't even force good commits. So, IMHO, we're far away from writing good PR descriptions.
The templates, in my experience, only help to have a placeholder that no one uses.

I think this is a good thing to start with And this is our responsibility as a group to enforce this (if we think it may help)

I'm not sure if this helps at all, my experience is:

At the moment, we don't even force good commits. So, IMHO, we're far away from writing good PR descriptions.
The templates, in my experience, only help to have a placeholder that no one uses.

I think this is a good thing to start with And this is our responsibility as a group to enforce this (if we think it may help)

in time if this is just a burden we can narrow this down

@nirarg since you suggested it and there's some debate around it - can you take revisit this with the team in say 2 weeks, 1 month from now?

/lgtm
not yet approving to allow others to add their comments.


[Feature]: Request to cache and load text embeddings for RAG (if not already provided).

Hi, I'm looking for a way to cache either the KnowledgeBank Object, or the Text Embeddings Produced when we load some data into embedding format to be ready for RAG.
Describe the solution you'd like
I've tried to find the embeddings but not sure where they are being produced at, hence unable to save them.
Also, it seems like the default example only loads from some files, instead of the produced embeddings themselves.
I've tried pickle and dill the entire knowledge base, but some private attributes are not copied over.
This is very helpful for quick code iterations when building the LLM agents, when the data is the same throughout.
Thanks for such a useful library!

@ZiTao-Li @rayrayraykk @xieyxclack Please check this issue.
BTW, AgentScope supports to cache text embeddings in https://github.com/modelscope/agentscope/blob/main/src/agentscope/manager/_file.py#L286 , do we need to integrate this feature into RAG module?

Hi, I'm looking for a way to cache either the KnowledgeBank Object, or the Text Embeddings Produced when we load some data into embedding format to be ready for RAG.
Describe the solution you'd like I've tried to find the embeddings but not sure where they are being produced at, hence unable to save them. Also, it seems like the default example only loads from some files, instead of the produced embeddings themselves. I've tried pickle and dill the entire knowledge base, but some private attributes are not copied over.
This is very helpful for quick code iterations when building the LLM agents, when the data is the same throughout.
Thanks for such a useful library!

Since the RAG module in AgentScope is built with Llama-index, so the embedding storage follows the format of the Llama-index by calling the persist methods. The default path of the embedding is ./runs/{knowledge_id}/default__vector_store.json.
BTW, KnowledgeBank is more like a dispatcher and Knowledge(e.g., LlamaIndexKnowledge) is the one for embedding generation/retrieval.


Downloaded models do not appear in voice models (Inference first tab)

Installed Applio 3.0.7 in Windows 10, I downloaded some models form AI Hispano Discord site, the downloads were successful, hit update in first tab but the Voice models menu is still empty, already restarted Applio several times. Index file is also empty.

Press refresh button and check if the model contains any file


Break.com video download algorithm not working properly

Hi Guys,
I have been wanting to download a few videos from break.com but I am running into some issues. The downloaded video is a  version of  the thumbnail.mp4. In other words it is just a video of thumbnails of the actual video with bit rate 0. Could you please correct and have youtube-dl download the high(864) or highest(2240) quality bit rate of the video. Those versions of bit rates are available, check api results (json format): http://api.breakmedia.com/Application/Page/Get?siteName=Break&appName=Iphone with Articles&uri=feed/iPhone_Featured&version=2
Youtube-dl is downloading:

http://video1.break.com/dnet/media/038/830/2830038/this-guy-only-dates-women-with-gaping-holes-for-nostrils-here-s-why-thumbnail.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1BCDA23

Youtube-dl should download bitrate 496(Always available):

http://video1.break.com/dnet/media/038/830/2830038/this-guy-only-dates-women-with-gaping-holes-for-nostrils-here-s-why-496_kbps.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1BCDA23

Or Download bitrate 864 (great - Sometimes available):

http://video1.break.com/dnet/media/038/830/2830038/this-guy-only-dates-women-with-gaping-holes-for-nostrils-here-s-why-864_kbps.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1BCDA23

Or Download bitrate 2240 (best - Sometimes available):

http://video1.break.com/dnet/media/038/830/2830038/this-guy-only-dates-women-with-gaping-holes-for-nostrils-here-s-why-2240_kbps.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1BCDA23

Test run:
youtube-dl -v -o "/media/%(title)s.mp4" "http://www.break.com/video/did-this-dude-falcon-punch-his-buddy-2829644"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', '-o', '/media/%(title)s.mp4', 'http://www.break.com/video/did-this-dude-falcon-punch-his-buddy-2829644']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.6 - Linux-3.13.0-35-generic-x86_64-with-Ubuntu-14.04-trusty
[debug] exe versions: ffmpeg git-2014-12-27-d4fd3f2, ffprobe git-2014-12-27-d4fd3f2
[debug] Proxy map: {}
[Break] 2829644: Downloading webpage
[debug] Invoking downloader on u'http://video1.break.com/dnet/media/644/829/2829644/when-friends-fight-friends-thumbnail.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A976F8B90542?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A976F8B90542'
[download] Destination: /media/sf_linux_sandbox/Did This Dude Falcon Punch His Buddy.mp4
[download] 100% of 788.54KiB in 00:13
root@bullseye2346:~# youtube-dl -v -o "/media/%(title)s.mp4" "http://www.break.com/video/why-date-girls-with-big-nostrils-2830038"
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', '-o', '/media/%(title)s.mp4', 'http://www.break.com/video/why-date-girls-with-big-nostrils-2830038']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 2.7.6 - Linux-3.13.0-35-generic-x86_64-with-Ubuntu-14.04-trusty
[debug] exe versions: ffmpeg git-2014-12-27-d4fd3f2, ffprobe git-2014-12-27-d4fd3f2
[debug] Proxy map: {}
[Break] 2830038: Downloading webpage
[debug] Invoking downloader on u'http://video1.break.com/dnet/media/038/830/2830038/this-guy-only-dates-women-with-gaping-holes-for-nostrils-here-s-why-thumbnail.mp4?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1B8EB9F?1B608EE7AFCE3765E176F3C6FBB98002B3D18C64572F2307D769AE70A971F1B8EB9F'
[download] Destination: /media/sf_linux_sandbox/This Guy Only Dates Women With Gaping Holes For Nostrils. Here's Why!.mp4
[download] 100% of 208.75KiB in 00:04

Will be fixed in the next version. Thanks for the report.

Thank you!


Resize gives out of memory when there is still free memory

It seems when resizing large Tensors out of memory errors occur relatively quickly. The example below is rather superficial, but extends to varying sequence lengths and batch sizes in RNNs when implemented with resize. Since resize does not provide any guarantee for the contents it should be able to allocate the needed memory (up to about n=8 in the example below).
1
7868/8104 Mbytes
2
6844/8104 Mbytes
3
5820/8104 Mbytes
4
4796/8104 Mbytes
5
3772/8104 Mbytes
THCudaCheck FAIL file=/tmp/luarocks_cutorch-scm-1-1120/cutorch/lib/THC/generic/THCStorage.cu line=65 error=2 : out of memory

require 'cutorch'
local a = torch.Tensor(1):cuda()
for n=1,100 do
   print(n)
   cutorch.synchronize()
   local freeMemory, totalMemory = cutorch.getMemoryUsage()
   print(string.format("%d/%d Mbytes", freeMemory/1024/1024, totalMemory/1024/1024))
   a:resize(1024, 262144, n)
end

This is not a new issue, I have checked with a version from about 9 months ago.

@JoostvDoorn can you try adding a:resize(1) before calling a:resize(1024, 262144, n) ?

@pavanky That doesn't work, but a:storage():resize(1) does work.

Just to elaborate: this issue occurs in different modules for example in cudnn LSTM, where reserve is a really large Tensor. Uncommenting model:clearState() will reset the storage every iteration and allow usage of all memory.
require 'cutorch'
require 'cudnn'
local model = cudnn.LSTM(1024, 1024, 10)
for n=1,100 do
   -- model:clearState()
   local input = torch.Tensor(30,50*n,1024):cuda()
   cutorch.synchronize()
   local freeMemory, totalMemory = cutorch.getMemoryUsage()
   print(string.format("%d: %d/%d Mbytes", n, freeMemory/1024/1024, totalMemory/1024/1024))
   model:forward(input)
end


Sort object alphabetically by keys

A lot of times, I want to have an object sorted alphabetically by keys just to help me read it better. Specifically, this applies to package.json and manifest.json files. I wonder if it would be too hard to implement an option that does that as part of this package?

This is already available as the sort_keys setting, i.e. if you edit your PrettyJSON.sublime-settings to include
{
    "sort_keys" : true
}

you get this behaviour. :)
It's a plugin-level setting, so in case you don't want the same behaviour every time you'll have to edit it back and forth between uses. Making it available as an additional command could be nice, although I guess most users are fine with having it turned on/off globally.

thank you @lime
i also recently added new menu item "Pretty JSON: Format and Sort JSON" which bypass checking of config sort_keys and force sorting just for that command

do i need to restart after setting sort_key to true? i do not see any change in the order of the sort_key value update

@lime
That built-in feature of ST doesn't work for nested objects! Only for flat single level objects.
Since almost always objects are nested the feature almost always break your code.

very nice for the diff of imported json files. Before I used this option the diff would be pretty much the entire file.


Localizations "check for update"

I think that the app need an update engine. In this way, the app check automatically for a new version from github.

Definitely, I will add Sparkle for those who won't use brew.
Thanks for the submission!


Allow nodes to be started ready for remote smeshing

Motivation
This changes the node startup in a way to allow a node to receive a remote PoST service connection.
Changes

if --smeshing-start is provided, but no --smeshing-coinbase the node will panic during startup

if both are provided node operates in supervised mode (smapp usecase)
if the provided coinbase is not valid the node will also panic during startup

if --smeshing-coinbase is provided, but not --smeshing-start the node will be prepared to accept connections from remote PoST services

this additionally requires the following config parameters to be set to actually work (TODO: verify those during startup?)

grpc-tls-listener
grpc-tls-ca-cert
grpc-tls-cert
grpc-tls-key

if neither --smeshing-start nor --smeshing-coinbase are provided the node can still be instructed to start (and stop) the supervised PoST mode via GRPC (required for system tests - coinbase is passed as argument and verified by node)
if --smeshing-coinbase is not defined, but the TLS listener is set up correctly, remote connections should succeed but the node will not start smeshing (i.e. register at PoET, generate PoST proofs, publish ATXs, etc.)

Test Plan
TODO: add system tests with remote post service
TODO

[x] Explain motivation or link existing issue(s)
[x] Test changes and document test plan
[x] Update documentation as needed
[ ] Update changelog as needed

bors try

bors merge

bors merge

bors merge

bors merge


Add ExtendsClass

Add Extendsclass website (Online developer tools) in Developer Tools paragraphe.

Please resolve conflicts.


🐛 Fix running in dev mode

I had some difficulty running Blablaland Desktop in dev mode with npm run start; the plugin wasn't loading. This PR fixes this issue.

It is using electronIsDev to figure out from where to load the plugin.
const pluginPath = electronIsDev
  ? path.join("plugins", process.platform, process.arch, pluginName)
  : path.join(process.resourcesPath, "plugins", pluginName);

Tested:

[ ] Windows (Dev)
[x] Windows (Prod)
[x] Linux (Dev)
[x] Linux (Prod)
[ ] MacOS (Dev)
[x] MacOS (Prod)

I'm going to merge this PR but keeping in head the dev mode doesn't works and I doubt that electronjs team's will provide a patch (https://github.com/electron/electron/issues/32144)


Create a way to make a chain of Muxs in a less verbose way

The implementation for Mux maps to a SystemVerilog ternary operator (? :).  Chaining together a bunch of ternary operators in SystemVerilog is a common pattern, but requires nested Muxs and lots of parentheses in ROHD.  A module that supports chained mux behavior would be nice.

It would also be nice if there's a way to construct a Mux without needing to access the output explicitly.  Maybe as simple as a mux function that gets the output.


Bug in Chapter 7 Fragment Rotation

With the fix code from the section "Rotating the device breaks the app", there's still a rotation bug.
Put a few items in the back stack, rotate the device twice, then go through the back stack. Everything is defaulting to the 0 index item.
The problem is Fragment.onCreateView() only gets called for the visible fragment. So when you rotate it the second time, the hidden fragments don't have the proper value to write to the bundle, and end up writing 0.
I moved the code to retrieve the value from the saved Bundle to onCreate(), which gets called for the hidden and visible fragments, and it functions properly.

This is now fixed. The code was also wrong in the chapter 8 version of the workout bug. You can see the fix in this commit:
014e30afabb6dfa9590371c577d44c7d90ed6348
There is a reprint due of the book in January. The code will be updated for chapters 7/8 and will be available in the paperback and ebook versions at that time.
Thanks once again for spotting this :-) Hopefully it didn’t spoil your enjoyment of the book too much.

This is now fixed. The code was also wrong in the chapter 8 version of the workout bug. You can see the fix in this commit:
014e30afabb6dfa9590371c577d44c7d90ed6348
There is a reprint due of the book in January. The code will be updated for chapters 7/8 and will be available in the paperback and ebook versions at that time.
Thanks once again for spotting this :-) Hopefully it didn’t spoil your enjoyment of the book too much.

Why did you move the fragment transaction to the else branch?


Inject spring beans in changelogs

I am building a changelog that needs some external information to remap data.
I'd like to inject a Bean from the application context to retrieve this informaton, but if I follow the instructions at https://www.mongock.io/injecting-custom-dependencies-to-changesets the application fails to start:
Error in method [...] Wrong parameter[BeanClass]
What am I doing wrong? Is it because my bean is not a Repository?

Hello @santam85 ,
Is this issue still on going or it's already resolved? If so, can you tell me what you did? It could be useful for other users.
Thanks

The issue is still present, even after adding the annotation you suggested to the changelog parameter. I can work around it by instantiating a new bean, but that's not ideal.
RestTemplate is not an interface, it is indeed the Spring RestTemplate as you guessed. I'd like to be able to use standard Spring dependency injection within Changelogs.

"You'd like to be able to use standard Spring dependency injection within the ChangeLogs", no. You HAVE to be able 😄
So don't worry, I will take a look at it and see what it's going on. If It's not something you are doing done, which would probably mean the documentation is not right and clear enough, it's a bug. I will try to tell you something by tomorrow.

Hello @santam85 ,
sorry for the delay, we have been busy on other highly priority tasks.
We have tried to reproduce your issue, in the example apps, but it works fin. Please take a look spring-data-3 example project, this line specifically.
Feel free to play around to try to reproduce the issue.
We are using Mongock 4.3.7(latest release)

hello @santam85 ,
we like to keep the issues list as clean as possible. Can you tell me if this is still relevant?
Cheers

I tried exactly like in your example, but no luck. I'll try to create a minimal reproduction example.

OKk, please , try to reproduce it and share it with me, so I can figure out what exactly is going on. and fix your issue 😃

@santam85  have you been able to reproduce it?

I was able to figure out what was happening: that error is shown also if no bean is found. I recommend a more explicit error in that case (or perhaps let Spring throw on the missing bean somehow?)

Cool. Thanks for the suggestion, I think it's the right approach.

I am currently battling this issue. please help

@Tripleo001 , this wasn't really a issue, but a wrong use and the error feedback wasn't clear to know what needed to chage.
Can you provide the error trace, so we can help?


[BUG] Game - chat clears when new message arrives

Platform

[x] Website player
[ ] Launcher
[ ] Server

Describe the bug

When sending the message via the ingame chat, any message sent causes the previous ones to clear
Expected behavior

Sending the message in chat does not clear the chat
Steps To Reproduce

Start the match and send more than one message
Screenshots

Resolved in Ruffle


Conflict with bootstrap.css

There will be a left margin/padding on the slide image when there is a bootstrap.css in the html.

You probably have something wrong with bootstrap grid markup. Glide styles includes only nessesary declarations, there isn't margin or padding in it.


SHAP not equal to exact Shapley Value for ONLY two binary features?

Hi Scott,
I was testing XGBoost SHAP on a simple data. (Only 2 dummy variables, Target is binary classification). Could NOT match SHAP value with exact Shapley Value. Can you shed some lights where the inconsistency came from?

What the data looks like (Value to explain: -0.36088, feature1 = 0 AND feature2 = 1)
feature1	feature2	frequency 	log_odds
0	        0	         30,427 	    -0.33656
0	        1	         16,513 	    -0.36088
1	        0	         1,170 	    0.01878
1	        1	         477 	    -0.19547

Base Value
E(f(x)) = Average model output = Total log_odds / Total Frequency = (30427*(-0.33656) + 16513*(-0.36088) + 1170*(0.01878) + 477*(-0.19547)) / (30427 + 16513 + 1170 + 477) = -0.3349

Predicted Value
f(x) = f(feature1 = 0 AND feature2 = 1) = -0.36088

Shapley Value for {feature2 = 1}:
Sequence 1 - {} ==> {feature2 = 1}: S = {} (Subset), N = 2 (# of all features), |S| = 0, |S|! = 1, apply Shapley Value formula
(|S|!(N-|S|-1)!/N!)(v(s+{feature2=1})-v(s)) = ((1!(2-0-1)!)/2!)( E(f(z)|{feature2=1}) - Base Value)
= 1/2*( (Total log_odds of {feature2 = 1} / Total Frequency) - Base Value)
= 1/2*( (16513*(-0.3609)+477*(-0.1955)) / (16513+477) - (-0.3349) )
= 1/2*( (-0.35624) - (-0.3349) ) = -0.01066
Sequence 2 - {feature1 = 0} ==> {feature1 = 0 AND feature2 = 1}: S = {feature1 = 0} (Subset), N = 2 (# of all features), |S| = 1, |S|! = 1, apply Shapley Value formula
(|S|!(N-|S|-1)!/N!)(v(s+{feature2=1})-v(s)) = ((1!(2-1-1)!)/2!)( f(x) - E(f(z)|{feature1=0}) )
= 1/2*( f(x) - (Total log_odds of {feature1 = 0} / Total Frequency))
= 1/2*( (-0.36088) - (30427*(-0.3366)+16513*(-0.3609)) / (30427+16513) )
= 1/2*( (-0.36088) - (-0.34512) ) = -0.0079
So Shapley Value for {feature2 = 1} is: -0.01066+(-0.0079) = -0.01854
However this is slightly different from output form SHAP package (-0.0181). I followed the standard Shapley Value formula. What is causing the difference? Any insights or response would be appreciated! Thanks in advance!
Best Regards,
Wei

I don't see an obvious problem with how you were doing it. but if you post a runnable example that compares how you are doing it and how that differs from TreeExplainer I can take a look.

Thanks Scott! I will post a runnable example later. Also quick question - Could it be cause TreeExplainer did some approximation rather than calculate the exact Shapley Value? But I do see your default option is "approximate = False"...
def shap_values(self, X, y=None, tree_limit=None, approximate=False):

Scott, Below is a runnable exmpale. Thanks in advance! Really appreciate your help!
#################  Part I  ###################################
import xgboost
import shap
import numpy as np
import pandas as pd
import math
from xgboost import XGBClassifier
load JS visualization code to notebook
shap.initjs()
prepare training data
X, y = shap.datasets.adult()
create a dummy variable from Age
X['ind_age30'] = np.where(X['Age'] >= 30, 1, 0)
create a simple training data with ONLY 2 dummy variables
X1 = X[['Sex', 'ind_age30']]
check dummy variables distribution
print(X1['Sex'].value_counts())
print(X1['ind_age30'].value_counts())
train XGBoost model
params = {'n_estimators': 1, 'max_depth': 2, 'learning_rate': 0.01}
xgb = XGBClassifier(**params).fit(X1, y)
explain the model's predictions using SHAP values
explainer = shap.TreeExplainer(xgb)
shap_values = explainer.shap_values(X1)
visualize the first prediction's explanation
shap.force_plot(explainer.expected_value, shap_values[0,:], X1.iloc[0,:])
#################  Part II  ###################################
get probability
y_pred = xgb.predict_proba(X1)
calculate log odds in training data
X1['prob'] = y_pred[:,1]
X1['odds'] = np.log(X1['prob']/(1-X1['prob']))
base value or global mean (log odds) matches
print("base value from SHAP: {}".format(explainer.expected_value))
print("Global model mean: {}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value from SHAP: 0.00 f(x) matches
output value for first record (log odds)
print("log odds for observation No. 1: {}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
global mean/base value: E(f(z))
print("Global Mean E(f(z)): {0}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value for first record (log odds)
print("Value for Obs No. 1 f(x): {0}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
Conditional Expectation E(f(z)|{Sex=1}): -0.007767
(X1[X1['Sex']==1].groupby(['Sex'])['odds'].mean().reset_index())
Conditional Expectation E(f(z)|{ind_age30=1}): -0.007165
X1[X1['ind_age30']==1].groupby(['ind_age30'])['odds'].mean().reset_index()
Calculate Shapley Value of Sex = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{Sex=1}) - E(f(z)))*1/2
print("Sex = 1 - sequence 1: {}".format((-0.007767 - (-0.010360810455412144))*1/2))
Sequence 2: f(x) - E(f(z)|{ind_age30=1})
print("Sex = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007165))*1/2))
print("Shapley Value of Sex = 1 for observation No. 1: {}".format(0.001296905227706072+0.0014012049602375302))
Calculate Shapley Value of ind_age30 = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{ind_age30=1}) - E(f(z)))*1/2
print("ind_age30 = 1 - sequence 1: {}".format((-0.007165 - (-0.010360810455412144))*1/2))
Sequence 2: (f(x) - E(f(z)|{Sex=1}))*1/2
print("ind_age30 = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007767))*1/2))
print("Shapley Value of ind_age30 = 1 for observation No. 1: {}".format(0.0015979052277060716+0.0017022049602375298))
SHAP value for the first record from SHAP: array([0.00246863, 0.0035299 ], dtype=float32)
print("Shapley Value calculated by SHAP: {}".format(shap_values[0,:]))
print("Shapley Value for observation No. 1: [{0},{1}]".format(0.00269811, 0.00330011))

Hi Scott, below is a runnable example. The difference is not large. Let me know what you think. Thanks a lot for your help!
-----------------------  Part I  --------------------------------------
import xgboost
import shap
import numpy as np
import pandas as pd
import math
from xgboost import XGBClassifier
load JS visualization code to notebook
shap.initjs()
prepare training data
X, y = shap.datasets.adult()
create a dummy variable from Age
X['ind_age30'] = np.where(X['Age'] >= 30, 1, 0)
create a simple training data with ONLY 2 dummy variables
X1 = X[['Sex', 'ind_age30']]
check dummy variables distribution
print(X1['Sex'].value_counts())
print(X1['ind_age30'].value_counts())
train XGBoost model
params = {'n_estimators': 1, 'max_depth': 2, 'learning_rate': 0.01}
xgb = XGBClassifier(**params).fit(X1, y)
explain the model's predictions using SHAP values
explainer = shap.TreeExplainer(xgb)
shap_values = explainer.shap_values(X1)
visualize the first prediction's explanation
shap.force_plot(explainer.expected_value, shap_values[0,:], X1.iloc[0,:])
-----------------------  Part II  --------------------------------------
get probability
y_pred = xgb.predict_proba(X1)
calculate log odds in training data
X1['prob'] = y_pred[:,1]
X1['odds'] = np.log(X1['prob']/(1-X1['prob']))
base value or global mean (log odds) matches
print("base value from SHAP: {}".format(explainer.expected_value))
print("Global model mean: {}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value from SHAP: 0.00 f(x) matches
output value for first record (log odds)
print("log odds for observation No. 1: {}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
global mean/base value: E(f(z))
print("Global Mean E(f(z)): {0}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value for first record (log odds)
print("Value for Obs No. 1 f(x): {0}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
Conditional Expectation E(f(z)|{Sex=1}): -0.007767
(X1[X1['Sex']==1].groupby(['Sex'])['odds'].mean().reset_index())
Conditional Expectation E(f(z)|{ind_age30=1}): -0.007165
X1[X1['ind_age30']==1].groupby(['ind_age30'])['odds'].mean().reset_index()
Calculate Shapley Value of Sex = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{Sex=1}) - E(f(z)))*1/2
print("Sex = 1 - sequence 1: {}".format((-0.007767 - (-0.010360810455412144))*1/2))
Sequence 2: f(x) - E(f(z)|{ind_age30=1})
print("Sex = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007165))*1/2))
print("Shapley Value of Sex = 1 for observation No. 1: {}".format(0.001296905227706072+0.0014012049602375302))
Calculate Shapley Value of ind_age30 = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{ind_age30=1}) - E(f(z)))*1/2
print("ind_age30 = 1 - sequence 1: {}".format((-0.007165 - (-0.010360810455412144))*1/2))
Sequence 2: (f(x) - E(f(z)|{Sex=1}))*1/2
print("ind_age30 = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007767))*1/2))
print("Shapley Value of ind_age30 = 1 for observation No. 1: {}".format(0.0015979052277060716+0.0017022049602375298))
SHAP value for the first record from SHAP: array([0.00246863, 0.0035299 ], dtype=float32)
print("Shapley Value calculated by SHAP: {}".format(shap_values[0,:]))
print("Shapley Value for observation No. 1: [{0},{1}]".format(0.00269811, 0.00330011))

Scott, below is a runnable example. Thanks a lot for your help!! Appreciate it!
-------------------------------  Part I  -------------------------------------------------
import xgboost
import shap
import numpy as np
import pandas as pd
import math
from xgboost import XGBClassifier
load JS visualization code to notebook
shap.initjs()
prepare training data
X, y = shap.datasets.adult()
create a dummy variable from Age
X['ind_age30'] = np.where(X['Age'] >= 30, 1, 0)
create a simple training data with ONLY 2 dummy variables
X1 = X[['Sex', 'ind_age30']]
check dummy variables distribution
print(X1['Sex'].value_counts())
print(X1['ind_age30'].value_counts())
train XGBoost model
params = {'n_estimators': 1, 'max_depth': 2, 'learning_rate': 0.01}
xgb = XGBClassifier(**params).fit(X1, y)
explain the model's predictions using SHAP values
explainer = shap.TreeExplainer(xgb)
shap_values = explainer.shap_values(X1)
visualize the first prediction's explanation
shap.force_plot(explainer.expected_value, shap_values[0,:], X1.iloc[0,:])
-------------------------------  Part II  -------------------------------------------------
get probability
y_pred = xgb.predict_proba(X1)
calculate log odds in training data
X1['prob'] = y_pred[:,1]
X1['odds'] = np.log(X1['prob']/(1-X1['prob']))
base value or global mean (log odds) matches
print("base value from SHAP: {}".format(explainer.expected_value))
print("Global model mean: {}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value from SHAP: 0.00 f(x) matches
output value for first record (log odds)
print("log odds for observation No. 1: {}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
global mean/base value: E(f(z))
print("Global Mean E(f(z)): {0}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value for first record (log odds)
print("Value for Obs No. 1 f(x): {0}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
Conditional Expectation E(f(z)|{Sex=1}): -0.007767
(X1[X1['Sex']==1].groupby(['Sex'])['odds'].mean().reset_index())
Conditional Expectation E(f(z)|{ind_age30=1}): -0.007165
X1[X1['ind_age30']==1].groupby(['ind_age30'])['odds'].mean().reset_index()
Calculate Shapley Value of Sex = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{Sex=1}) - E(f(z)))*1/2
print("Sex = 1 - sequence 1: {}".format((-0.007767 - (-0.010360810455412144))*1/2))
Sequence 2: f(x) - E(f(z)|{ind_age30=1})
print("Sex = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007165))*1/2))
print("Shapley Value of Sex = 1 for observation No. 1: {}".format(0.001296905227706072+0.0014012049602375302))
Calculate Shapley Value of ind_age30 = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{ind_age30=1}) - E(f(z)))*1/2
print("ind_age30 = 1 - sequence 1: {}".format((-0.007165 - (-0.010360810455412144))*1/2))
Sequence 2: (f(x) - E(f(z)|{Sex=1}))*1/2
print("ind_age30 = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007767))*1/2))
print("Shapley Value of ind_age30 = 1 for observation No. 1: {}".format(0.0015979052277060716+0.0017022049602375298))
SHAP value for the first record from SHAP: array([0.00246863, 0.0035299 ], dtype=float32)
print("Shapley Value calculated by SHAP: {}".format(shap_values[0,:]))
print("Shapley Value for observation No. 1: [{0},{1}]".format(0.00269811, 0.00330011))

Scott, below is a runnable example. The difference is NOT big. Let me know what you think. Thanks a lot! Appreciate your help!
Shapley Value calculated by SHAP: [0.00246863 0.0035299 ]
Shapley Value for observation No. 1: [0.00269811,0.00330011]
------------------------------  Part I  --------------------------------------------
import xgboost
import shap
import numpy as np
import pandas as pd
import math
from xgboost import XGBClassifier
load JS visualization code to notebook
shap.initjs()
prepare training data
X, y = shap.datasets.adult()
create a dummy variable from Age
X['ind_age30'] = np.where(X['Age'] >= 30, 1, 0)
create a simple training data with ONLY 2 dummy variables
X1 = X[['Sex', 'ind_age30']]
check dummy variables distribution
print(X1['Sex'].value_counts())
print(X1['ind_age30'].value_counts())
train XGBoost model
params = {'n_estimators': 1, 'max_depth': 2, 'learning_rate': 0.01}
xgb = XGBClassifier(**params).fit(X1, y)
explain the model's predictions using SHAP values
explainer = shap.TreeExplainer(xgb)
shap_values = explainer.shap_values(X1)
visualize the first prediction's explanation
shap.force_plot(explainer.expected_value, shap_values[0,:], X1.iloc[0,:])
------------------------------  Part II  --------------------------------------------
get probability
y_pred = xgb.predict_proba(X1)
calculate log odds in training data
X1['prob'] = y_pred[:,1]
X1['odds'] = np.log(X1['prob']/(1-X1['prob']))
base value or global mean (log odds) matches
print("base value from SHAP: {}".format(explainer.expected_value))
print("Global model mean: {}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value from SHAP: 0.00 f(x) matches
output value for first record (log odds)
print("log odds for observation No. 1: {}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
global mean/base value: E(f(z))
print("Global Mean E(f(z)): {0}".format(np.log(np.average(y_pred[:,1])/(1-np.average(y_pred[:,1])))))
output value for first record (log odds)
print("Value for Obs No. 1 f(x): {0}".format(np.log(y_pred[0,1]/(1-y_pred[0,1]))))
Conditional Expectation E(f(z)|{Sex=1}): -0.007767
(X1[X1['Sex']==1].groupby(['Sex'])['odds'].mean().reset_index())
Conditional Expectation E(f(z)|{ind_age30=1}): -0.007165
X1[X1['ind_age30']==1].groupby(['ind_age30'])['odds'].mean().reset_index()
Calculate Shapley Value of Sex = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{Sex=1}) - E(f(z)))*1/2
print("Sex = 1 - sequence 1: {}".format((-0.007767 - (-0.010360810455412144))*1/2))
Sequence 2: f(x) - E(f(z)|{ind_age30=1})
print("Sex = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007165))*1/2))
print("Shapley Value of Sex = 1 for observation No. 1: {}".format(0.001296905227706072+0.0014012049602375302))
Calculate Shapley Value of ind_age30 = 1 for observation No. 1
Two possible sequences:
1. {} => {Sex = 1} => {Sex = 1, ind_age30 = 1}
2. {} => {ind_age30 = 1} => {ind_age30 = 1, Sex = 1}
Sequence 1: (E(f(z)|{ind_age30=1}) - E(f(z)))*1/2
print("ind_age30 = 1 - sequence 1: {}".format((-0.007165 - (-0.010360810455412144))*1/2))
Sequence 2: (f(x) - E(f(z)|{Sex=1}))*1/2
print("ind_age30 = 1 - sequence 2: {}".format((-0.00436259007952494 - (-0.007767))*1/2))
print("Shapley Value of ind_age30 = 1 for observation No. 1: {}".format(0.0015979052277060716+0.0017022049602375298))
SHAP value for the first record from SHAP: array([0.00246863, 0.0035299 ], dtype=float32)
print("Shapley Value calculated by SHAP: {}".format(shap_values[0,:]))
print("Shapley Value for observation No. 1: [{0},{1}]".format(0.00269811, 0.00330011))

I think it is because XGBoost weights calculates the cover of nodes based on the sum of the hessians. For linear regression that is the same as just counting samples, but not for logistic regression. In your example check out: print(xgb.get_booster().get_dump(with_stats=True)[0])

I tried the calculation with cover, the results are almost the same with using frequency -
Shapley Value calculated by SHAP: [0.00246863, 0.0035299]
Shapley Value calculated with frequency for observation No. 1: [0.00269811, 0.00330011]
Shapley Value calculated with cover for observation No. 1: [0.00269864, 0.003299886]

Check out the brute force implementation I just added and see if you can use that to find the issue: https://github.com/slundberg/shap/blob/04e7e35bde07484243a783fee5f0c32d4d41571e/tests/explainers/test_tree.py#L72-L127

Thanks Scott! Will let you know if I found the reason!
On a side note, for any given record, is it safe to claim that (XGBoost Tree): SHAP of any subset of features = sum of SHAP value of each feature? E.g. I have a record {A=1, B=1, C=1}, SHAP({A=1, B=1}) = SHAP({A=1})+SHAP({B=1}), no matter if feature A and feature B are correlated or not, right? Use an extreme case, if SHAP({A=1})+SHAP({B=1})=0, that means {A=1,B=1} has 0 contribution to the model output, right? Thanks for your time!
Best,
Wei

Scott,
I figured out why the two numbers do not match (Between my calculation and brute force code). Its caused by the conditional expectation calculation ( R(node_ind): ). Let me create some codes to show you. Maybe I will send you an email first.
Best,
Wei

Scott,
I sent you an email regarding this issue. Let me know what you think when you have a chance....
Best,
Wei

I think the issue you are seeing is because TreeExplainer approximates conditional expectations by traversing a tree and following both branches when a split depends on a feature we are not conditioning on. When input features are not independent then this process is not exactly the same as a full conditional expectation. In other words, Tree SHAP ignores feature dependencies except for features on the ancestor path of a node. This is actually nice, since it prevents credit from getting spread between two features that are correlated but only one is used by the model. It also ensures we only follow valid proportions down the tree since everything matches the training data distribution. Note that without directly providing the original dataset and then building a joint model we cannot exactly compute conditional expectations with feature dependence.


Move through recent search terms in Vim

I became quite used to nagivating through my recent search terms when I used CtrlP + Ack/Ag. Is this possible in FZF as well?
Thanks!

No, fzf does not externally store the history of search terms. I'd never really thought about the idea, but I can see how it can be useful in some cases. I'll consider adding the feature in the future releases. We'll have to rebind the keys to make it available then since ctrl-p and ctrl-n are already synonyms to down and up.
fzf --bind ctrl-n:next-history,ctrl-p:previous-history --history ~/.fzf.history

Ah I see, so fzf is really lightweight on the Vim side and handles input etc itself? As a heavy Vim user it would be perfect to be able to remap keys via Vim configuration, but I guess that is not an option, right?

Maybe I'm stating the obvious again but you know fzf is not a native vim plugin but a command-line program that happens to ship with a simple vim wrapper. You can set up $FZF_DEFAULT_OPTS in your vimrc, but I don't see why one would do that, when one can put it in bashrc or zshrc and consistently use it on your shell and on vim running on it.

I see, thanks for your explanation!

I just added --history HISTORY_FILE_PATH option. See the commit message for the details. It will be available on 0.9.14, or you can just build the binary from the source. Thanks for your suggestion!

@junegunn thank you! :heart:

Is it possible to cycle through history with Alt-N, Alt-P in order to keep current Ctrl-N Ctrl-P bindings?

@lompy Have you tried --bind alt-n:next-history,alt-p:previous-history?

Yes, should've tried before ask. Thanks!

Actually no. With this setting a'm losing Ctrl-N Ctrl-P bindings to select match, as they also get bind to history cycling. A'm using Ubuntu with gnome-terminal.

Hmm, you're right. You have to "re"-override the keys:
--bind alt-n:next-history,alt-p:previous-history,ctrl-n:down,ctrl-p:up

Yes, tried rebind too. Didn't work for me.

Works for me.

Ok. I will try to figure out what messes with key bindings in my setup.


Make SpinViewer test working on some browser.

Description
SpinViewer.html does not work on following browser.

No Action on Android 2.3
console error on IE9

Fixed


Add stackage to IHaskell build

Sets up the IHaskell build to use a fixed snapshot of package
versions, verified as working (currently being used in the IHaskell
master branch).
Switch to lts-2.22
This is the last snapshot built for GHC-7.8.4

@parente Did it work?

Sorry, but I didn't get a chance to test it again today. For the time being, we pinned the the singletons release to <IP_ADDRESS> to get the new docker-demo-images build done. I'll move this change over to a separate PR against the main repo once the current one goes (or you can if you'd like). It'll help prevent future build problems.

Sure :+1:.


"UnicodeDecodeError" during Pip install on certain Environments

Just wanted to bring this issue up - on certain environments, it seems that running "pip install nocodb" failes with an error that looks something like:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 2436: character maps to <undefined>
Tracing it back, it seems the issue has to do with this line in setup.py lacking deliberate encoding:
long_description=open('README.md').read(),
I was able to resolve the issue by simply specifying UTF-8 encoding like so:
long_description=open('README.md', encoding='utf-8').read(),
And the pip install worked fine. Just wanted to let you know!

Thank you, @xlea99, for this tip!
Here, I am completing the answer for beginners (as I am):

Download the zip file.
Unpack it.
In the setup.py file, perform the modification as described above, then save it.
If you want to install python-nocodb on your C: drive:
4.1. Open a terminal and navigate to the directory: cd C:\nocodb\python-nocodb-master
4.2. Install the package using pip: pip install .


Update build scan plugin to 1.13.1

I think we also need to update the version here: https://github.com/gradle/gradle/blob/850cd9b5412b44694551d99c5f3c0122812511dc/buildSrc/subprojects/profiling/profiling.gradle.kts#L10

And this should probably be removed: https://github.com/gradle/gradle/blob/263845859b94f5ec28e50a6a89349e5e643ffdbd/buildSrc/build.gradle.kts#L114

I adapted the pull request and will incorporate the gradle/buildSrc/subprojects/profiling/profiling.gradle.kts update into our release process. Thanks for the review!

I made some changes on release so we don't use a snapshot version for the build scan plugin anymore there: https://github.com/gradle/gradle/pull/5005
As soon as this is merged to master, I guess this PR will need to be re-adjusted. For example, changing gradle/init-scripts/build-scan.init.gradle.kts will not be necessary any more.

Wanted to merge it during the commit freeze but then this got out of sight. Merging it now. Thanks @blindpirate for the ping!

Thanks @guylabs !


Laurel: Watch wadifa360.online

Laurel requests the watch of the watch_keyword wadifa360\.online. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

wadifa360\.online has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Jeff Schaller in Charcoal HQ


Allow deleting error from field in types

Looks like this isn't needed anymore, the current setFieldError uses string | undefined.


[DeviantART] Prompt to stop ripping when files have been already downloaded

It would be nice if there is an option to RIP only newly added (but not already downloaded) images in a user's favorites.
One way to do that is to stop ripping if a threshold of already downloaded files have been reached instead of continuing to request the files all the way till the end :)

Someone actually had the exactly same idea as I did, but I were too afraid to publish it.
A threshold of 3 existing downloads should be good enough IMO.
If we're adding a prompt, it should have a time out in case the user left RipMe to do its job unattended, and if that time out reaches zero, stop ripping the address and move on to the next one.

Or have a threshold and have the "stop ripping" behavior be the default, with a checkbox to force re-ripping the entire set, ignoring the re-rip detection threshold. No prompt necessary.

^ Yeah, sounds better.

I've got an idea:

have an option in the settings to toggle stopping when an already downloaded item is met
if step 1 is enabled, begin downloading like normal and keep going until an already downloaded item is met, at which point check the page if there are anything left to download by cross-referencing the links with the existing files. If not, go to the next rip.

The point is there shouldn't be anything left to get when the rest of the page is already downloaded.

Agree with the algorithm, but it only works for sites where new content is added to the start of the feed we rip from, and no new content is added in the middle.
Something to consider here: this wouldn't necessarily work the same way on all sites. Imgur albums could have new images added to the middle. Some websites add new content at the end (you'd start a re-rip, and visit all of the oldest content before getting to the new content -- consider a comic website like xkcd where a rip could start at comic 1. Some sites may not have a concept of "start from the end" because you start from the first page and work your way forward until there's nothing left (sites which let you search by tag).
At a minimum, this needs to be opt-out (or opt-in) per-ripper. It only makes sense sometimes.

^ Yes, not an universal solution. I know DeviantArt, Inkbunny and FurAffinity work this way (on DA the order in the folder can be changed manually afterwards), and Tumblr probly doesn't have any other options than oldest first AFAIS.

It would be nice if there is an option to RIP only newly added (but not already downloaded) images in a user's favorites.

This can be achieved on any site by clicking the "Remember URL history" check box in the configure menu. It will make ripme remember and skip any already downloaded image URLs


Clean up PCB directory

What has to be done
pcb directory of repo needs to be cleaned up of junk artifacts and obsolete design files. Some directories can be renamed to be more easily understood.
How do you know it has to be done
Plenty of dead weight in the pcb dir. It is confusing to look at and therefore will be hard to maintain.
Don't forget

[x] Put the issue in a milestone
[x] Assign it to one of the projects
[x] Add appropriate labels
[x] Mention dependent/blocked issues if any

This ticket was in the "Done" column in Hardware. Moved it to the same column after changing repositories.

This ticket was in the "Done" column in Hardware. Moved it to the same column after changing repositories.


Authorization

Support a key based authorization.
Some ideas to work through:

Should it use the same rubygems.org key?
If not, should there be a command like gemstash push gem, which uses its own key?
Should we direct user to specify a separate key manually?
Maybe gemstash push gem is an alias for gem push, but uses a separate key file and passes it directly to gem command?
Should key be protected on server?
How to authorize on the server? gemstash authorize key?
gem yank doesn't seem to work with a remote host... maybe support gemstash yank gem -v version?

What kind of authorizations should we support?
Are we talking about read only or also writing permissions?
I'm not sure if I want gemstash (the man in the middle) to handle my auth keys with write permissions to some server

My thoughts here are purely for private gems, I don't think it makes sense to push to an upstream through gemstash.

I've added a key based authorization mechanism. A new key can be created via gemstash authorize and the new key can be used to push with.


[DSEP-191] Recompiles libraries for Ubuntu 20.04

Description
When fx_plan_stack/stack_builder.sh is run on Ubuntu 21.10, the resulting compiled libraries are incompatible with older versions owing to the newest version of clib6 being unavailable. This PR simply recompiles the libraries necessary for flexsea to work on Ubuntu 20.04.
Changes

DSEP-191

Test Plan

Run the demo scripts on Windows, linux, and raspbian.

Expected Results

All demos run as expected.

Requirements
Edit the list accordingly.

[ ] Tested on Windows.
[x] Tested on Linux.
[ ] Tested on RPi.
[x] Connected ActPack and runs scripts.

@jcoughlin11  I pushed some updates and fixed the issue with ubuntu. Please test on your end
I also, fixed a security issue with pillow 8 and pushed to pypi

@Sotilrac Looks good! The demos run for me, so I think this can be merged


Llava / Prismatic with LoRA

Great work! One quick question: in the paper you've reproduced the results from Llava. Additionally, for the Prismatic models experiments, you are fine-tuning the whole LM. I'm wondering did you try using LoRA in the LM for the Llava experiments as well as for the Prismatic models experiments? More specifically, why did you opt for the fine-tuning the entire LM instead of training LoRA modules?
Additionally, have you stored any training logs; e.g., weights & biases?
Thanks!

Hi @gorjanradevski,
The weights and training logs are released by the authors in huggingface (https://huggingface.co/TRI-ML/prismatic-vlms/tree/main)
As for LoRA, I tried a simple implementation with SigLIP + Phi-2 + LoRA here (https://github.com/NMS05/Prismatic-SigLIP-Phi2-LoRA-VLM).
Thanks,

Hi, @NMS05. Thanks for your great implementation, which helps me a lot.

Awesome implementation @NMS05! Would love to add first-class LoRA support to this repo - would you be willing to contribute a PR?

Hi @NMS05, I would like to know if you have evaluated the finetuned model. I download and evaluate my_phi2_siglip_model via https://github.com/TRI-ML/vlm-evaluation. But the results are pretty bad. Or is there something wrong in eval repo? @siddk. Could you please double-check https://github.com/NMS05/Prismatic-SigLIP-Phi2-LoRA-VLM#model-weights and share your evaluation results? Thanks a lot.

vqa-v2
gqa
vizwiz
text-vqa-ocr
text-vqa

phi2_siglip_lora (slim eval set)
6.950
3.520
0.290
0.283
0.068

Hmm so the evaluation code was able to fully reproduce the paper results for all existing models (as of last week); not sure if there's something different that needs to be changed for Phi-2 models (e.g., tokenization/generation parameters).
I'll try to take a look when I can (or might just try training a Phi-2 model). But would be great if @NMS05 could weigh in on their results!

Hi @zeyuanyin,
After I trained the SigLIP-Phi2(LoRA) model, I only did qualitative analysis using this notebook. Despite training on a large dataset, I observed that object hallucinations were presistent both for VQA and captioning tasks. Not sure where things went wrong, since the "finetune" loss curve looks smooth. Will try to improve things in the next iteration.
I initially evaluated the finetuned model using prismatic-eval repo for vqa-v2-slim. For a vast majority of the questions the model doesnot produce any answer leading to very low performance. Not sure if there is a mismatch between prompts for train and eval.

Thanks,


fix: useIntersection not updating state on fast scroll

Description
useIntersection doesn't update on fast scroll as observer returns multiple entries in that case and only the last item in the array of observer entries contains the latest state.
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as before)

Checklist

[x] Read the Contributing Guide
[x] Perform a code self-review
[x] Comment the code, particularly in hard-to-understand areas
[ ] Add documentation
[ ] Add hook's story at Storybook
[ ] Cover changes with tests
[ ] Ensure the test suite passes (yarn test)
[ ] Provide 100% tests coverage
[x] Make sure code lints (yarn lint). Fix it with yarn lint:fix in case of failure.
[x] Make sure types are fine (yarn lint:types).

ping

ping

👍


Snapshot retention test framework changes

All framework adjustments needed for the snapshot retention test as well as some updates to how we handle constants across the framework and in rancher tests.
https://github.com/rancher/qa-tasks/issues/895

psa; there are some conflicts to resolve too, when you have time.

Fixed the merge conflicts

Finished rebasing this PR.


Breadcrumb Component

Hi, I would like to create a BreadCrumb Component like https://getbootstrap.com/docs/5.1/components/breadcrumb/ with a customizable divider.

Is it still being worked on? Can I work on it?


[Bug]: The prompt for successful task creation needs to be optimized

ODC version
ODC 4.2.3
OB version

What happened?

The export task is created successfully, and the prompt text is: Export successful. In fact, the task still needs approval
What did you expect to happen?
The task is created successfully, and the prompt text is: The task is created successfully.
How can we reproduce it (as minimally and precisely as possible)?
Create a task.
Anything else we need to know?
No response
Cloud
No response

Fixed In Commit 7ea7f1ae8cf0ea19b645384cbbd8a08939da390e
------
咏和
Fri Mar 8 09:45:18 2024 +0800

pass


Upload to Maven Central Repository

It's seems that we may need to upload our artifact to Maven Central is better idea.
https://twitter.com/JakeWharton/status/1004745103292944384
Because if this tweet actually happens, Android default project would not contain jcenter() in build.gradle. We can still upload the artifact to jcenter, thou.
What do you think?

Umm, it's unofficial tweet and I'm not a huge fun of Maven Central actually(as it requires cumbersome procedure)🤔
Let's see what would happen after the incident, thx for heads up!


Fix build: get_current_dir_name() is a GNU extension

So add a replacemenet function.
Signed-off-by: Thiago Macieira<EMAIL_ADDRESS>

OK, I'm merging this patch so the next guy working on this task may provide HAVE_UNIX definition.
Thank you


Fix memory issue

Right now, the chatbot only remembers the first conversation context you ask it. After clearing chat history, it should reset to 0 context.

Fixed with recent commit 'Quality of life adjustments'


ORC-758: Avoid seeking and decompressing of compressed stream

What changes were proposed in this pull request?
If the seek on a compressed stream is already satisfied by the current decompression then avoid seeking and decompressing the same block again.
Why are the changes needed?
Seeks performed within the same compression block avoid the costs of decompression.
How was this patch tested?
Modified an existing test to verify that the compressed buffer changes only when the seek is needed and not in other cases.
Additionally all of the existing tests pass.

Hey @pavibhai can you please check the remaining comments?


Omkar0114

resolves #713

I updated link and removed extra spaces

@Omkar0114 please can you resolve the conflicts in the data.json, and also please do the changes explained by @Panquesito7. If you need any help feel free to ask. Thank you


Emit a warning when trying to set a non-existing config key

Motivation
Silently ignoring a non-existing config key in falco.yaml can hide problems and mislead users. A simple typo can make Falco completely ignore the value, which may be hard to spot.
For example:
stdout_output:
  enabled: false

vs.
stduot_output:
  enabled: true

(N.B. the typo in stduot_output)
Currently, Falco silently ignores the latter case.
Feature
Falco should emit a warning when the user sets a non-existent config key.
Alternatives
An alternative can be to emit an error and stop the Falco execution. Would this alternative be better? :thinking:
On the other hand, a simple warning could help spot misconfiguration when upgrading to a new version without blocking the deployment.

Additional context
This idea came up while reviewing this PR https://github.com/falcosecurity/falco/pull/2413

hey @leogr , i want to contribute on this issue, can you guide me to what changes required and how can i proceed in this. Thanks

Hey @h4l0gen
Great! :star_struck:
I haven't looked into code details, but I guess that we should look for the existence of an option while parsing the YAML here :point_down:
https://github.com/falcosecurity/falco/blob/master/userspace/falco/configuration.cpp#L186
An alternative approach would be to create a YAML schema and validate the file before loading it (I wonder if it is worth keeping this approach).
@jasondellaluce any suggestion in this regard?
@h4l0gen let me know if this is ok for you. In case you plan to work on this, please /assign this issue to yourself, thank you!

hey @leogr ,
it would be really great if you assign me this issue. am starting looking on code details and soon come up with required changes.

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

/remove-lifecycle stale

I'd like to prioritize this tentatively for
/milestone 0.39.0


Limit indenting of textarea contents to the comment field only

The current behavior conflicts with OctoEdit, and it's a bit of a pain.
There is still discussion in #195 about whether we should have this feature in the extension at all. Since that discussion may take a bit, would be nice to get this in for now.

👍

@sindresorhus @hkdobrev @paulmolluzzo Any problems with me merging this in?

@DrewML what textareas does this exclude?

Right now, the hidden one used by CodeMirror inside OctoEdit.

I'm ok with this. @DrewML Can you add a comment inline about why it's there? So we don't remove it by mistake.

I'm ok with this. @DrewML Can you add a comment inline about why it's there? So we don't remove it by mistake.

Yeah, I'll add it tonight and then merge this in.