Skip to content

fix: Catch errors when calling pixels from Python#787

Merged
ryanweiler92 merged 4 commits intodevfrom
694-pythonbe-catch-errors-when-calling-pixels-from-python
May 7, 2025
Merged

fix: Catch errors when calling pixels from Python#787
ryanweiler92 merged 4 commits intodevfrom
694-pythonbe-catch-errors-when-calling-pixels-from-python

Conversation

@samarthKharote
Copy link
Copy Markdown
Contributor

@samarthKharote samarthKharote commented May 7, 2025

Description

This PR fixes an issue of operationType, so now, when we run a reactor that does not exist, it returns operationType as "ERROR". not "CODE_EXECUTION".

Changes Made

-Made changes in Java class before sending the result.
-In NativePySocketClient.Class detected pixel operation as error in JSON, so evaluated "ERROR" presence via JMESPath expression and threw IllegalArgumentException on getting error.
-JMESPath library is used for JMESPath expression and Jackson is used to parse pixel output JSON.

How to Test

  1. Create a drag and drop app and run Python pixel calls in the notebook cells.
  2. Mention reactor that does not exist and press Run All.
    Bad pixel call example to test-
from semoss import Insight
insight = Insight()
insight.run_pixel(pixel="vLLM ( engine = [ '4801422a-5c62-421e-a00c-05c6a9e15de8' ] , command = [ '<encode>What is the capital of Connecticut</encode>' ] )", insight_id = '${i}')
  1. In network tab, the response is visible with the given operationType.

Notes

@samarthKharote samarthKharote linked an issue May 7, 2025 that may be closed by this pull request
@github-actions
Copy link
Copy Markdown

github-actions bot commented May 7, 2025

@CodiumAI-Agent /describe

@QodoAI-Agent
Copy link
Copy Markdown

Title

fix: Catch errors when calling pixels from Python


User description

Description

Changes Made

How to Test

  1. Steps to reproduce/test the behavior
  2. Expected outcomes

Notes


PR Type

Bug fix


Description

  • Detect pixel operation errors in JSON

  • Add Jackson and JMESPath parsing

  • Throw exception on error operations


Changes walkthrough 📝

Relevant files
Error handling
NativePySocketClient.java
Add JSON error detection for pixels                                           

src/prerna/tcp/client/NativePySocketClient.java

  • Imported Jackson and JMESPath libraries
  • Parsed pixel output JSON with ObjectMapper
  • Evaluated ERROR presence via JMESPath expression
  • Threw IllegalArgumentException on errors
  • +20/-1   

    Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • @github-actions
    Copy link
    Copy Markdown

    github-actions bot commented May 7, 2025

    @CodiumAI-Agent /review

    @github-actions
    Copy link
    Copy Markdown

    github-actions bot commented May 7, 2025

    @CodiumAI-Agent /improve

    @QodoAI-Agent
    Copy link
    Copy Markdown

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Duplicate JSON parsing

    The code parses the same output twice using Jackson and Gson, which may impact performance and increase memory usage; consider reusing the parsed JsonNode or converting it directly into a JsonElement to avoid redundant work.

    String jsonOutputString = new String(output.toByteArray(),"UTF-8");
    ObjectMapper mapper = new ObjectMapper();
    JsonNode jsonNode = mapper.readTree(jsonOutputString);
    
    //JMESPath to check for any ERROR in operationType
    JmesPath<JsonNode> jmespath = new JacksonRuntime();
    Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > `0`");
    JsonNode result = expression.search(jsonNode);
    
    if(result.asBoolean()) {
    	throw new IllegalArgumentException("Pixel execution returned ERROR operationType");
    }
    
    JsonElement json = JsonParser.parseString(jsonOutputString);
    Null-safety for JMESPath query

    The JMESPath expression assumes the pixelReturn array exists and contains objects with operationType; if the JSON structure differs or the field is missing, this could throw runtime errors. Add checks to validate the JSON structure before executing the query.

    JsonNode jsonNode = mapper.readTree(jsonOutputString);
    
    //JMESPath to check for any ERROR in operationType
    JmesPath<JsonNode> jmespath = new JacksonRuntime();
    Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > `0`");
    JsonNode result = expression.search(jsonNode);

    @QodoAI-Agent
    Copy link
    Copy Markdown

    QodoAI-Agent commented May 7, 2025

    PR Code Suggestions ✨

    Latest suggestions up to bc2f71e

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Validate pixelReturn presence

    Guard against a missing pixelReturn field before running the JMESPath expression to
    avoid a runtime error. Check jsonNode.has("pixelReturn") and handle the missing case
    explicitly.

    src/prerna/tcp/client/NativePySocketClient.java [359-363]

    +if (!jsonNode.has("pixelReturn")) {
    +    throw new IllegalStateException("Missing pixelReturn field in JSON output");
    +}
     JsonNode result = expression.search(jsonNode);
    -if(result.asBoolean()) {
    -    throw new IllegalArgumentException("Pixel execution returned ERROR operationType");
    +if (result.asBoolean()) {
    +    throw new IllegalArgumentException("Pixel execution returned ERROR operationType: " + result.toString());
     }
    Suggestion importance[1-10]: 7

    __

    Why: Explicitly checking for a missing pixelReturn field prevents potential runtime errors and improves robustness by handling invalid JSON responses early.

    Medium
    General
    Extract parsers to static fields

    Instantiate and compile the JSON/JMESPath processors once as static finals to avoid
    recreating them on every call. Move the ObjectMapper, JacksonRuntime, and compiled
    Expression to class‐level constants and reference them here.

    src/prerna/tcp/client/NativePySocketClient.java [353-359]

    -ObjectMapper mapper = new ObjectMapper();
    -JsonNode jsonNode = mapper.readTree(jsonOutputString);
    -JmesPath<JsonNode> jmespath = new JacksonRuntime();
    -Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > `0`");
    -JsonNode result = expression.search(jsonNode);
    +JsonNode jsonNode = MAPPER.readTree(jsonOutputString);
    +JsonNode result = ERROR_EXPR.search(jsonNode);
    Suggestion importance[1-10]: 6

    __

    Why: Moving ObjectMapper, JacksonRuntime, and the compiled Expression to static fields avoids expensive re-instantiation on every invocation and improves performance.

    Low
    Use StandardCharsets.UTF_8

    Use the StandardCharsets.UTF_8 constant to avoid relying on the charset name string
    and eliminate potential UnsupportedEncodingException.

    src/prerna/tcp/client/NativePySocketClient.java [352]

    -String jsonOutputString = new String(output.toByteArray(),"UTF-8");
    +String jsonOutputString = new String(output.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
    Suggestion importance[1-10]: 4

    __

    Why: Using StandardCharsets.UTF_8 is a minor improvement that eliminates the need to specify a charset name string and avoids possible UnsupportedEncodingException.

    Low
    Add error details to exception

    Include the actual error details in the exception message to aid debugging. Append
    result.toString() so the thrown exception carries the failing operation details.

    src/prerna/tcp/client/NativePySocketClient.java [361-363]

    -if(result.asBoolean()) {
    -    throw new IllegalArgumentException("Pixel execution returned ERROR operationType");
    +if (result.asBoolean()) {
    +    throw new IllegalArgumentException("Pixel execution returned ERROR operationType: " + result.toString());
     }
    Suggestion importance[1-10]: 4

    __

    Why: Appending result.toString() to the IllegalArgumentException message provides additional context for debugging but is a relatively small enhancement.

    Low

    Previous suggestions

    Suggestions up to commit bc2f71e
    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Fix JMESPath numeric literal syntax

    Correct the JMESPath numeric literal by removing backticks to ensure proper parsing
    of the comparison.

    src/prerna/tcp/client/NativePySocketClient.java [358]

    -Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > `0`");
    +Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > 0");
    Suggestion importance[1-10]: 9

    __

    Why: Backticks around the number in the JMESPath expression are invalid and will break the comparison; removing them ensures proper numeric literal parsing.

    High
    General
    Reuse JSON and JMESPath instances

    Move the ObjectMapper, JmesPath, and compiled Expression to static final fields to
    avoid repeated instantiation and JMESPath compilation on each invocation.

    src/prerna/tcp/client/NativePySocketClient.java [353-359]

    -ObjectMapper mapper = new ObjectMapper();
    -JmesPath<JsonNode> jmespath = new JacksonRuntime();
    -Expression<JsonNode> expression = jmespath.compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > `0`");
    -JsonNode result = expression.search(jsonNode);
    +// class-level fields
    +private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
    +private static final Expression<JsonNode> PIXEL_ERROR_EXPR =
    +    new JacksonRuntime().compile("length(pixelReturn[?contains(operationType, 'ERROR')]) > 0");
     
    +// inside method
    +JsonNode jsonNode = JSON_MAPPER.readTree(jsonOutputString);
    +JsonNode result = PIXEL_ERROR_EXPR.search(jsonNode);
    +
    Suggestion importance[1-10]: 6

    __

    Why: Using static final fields for ObjectMapper and the compiled JMESPath Expression avoids repeated instantiation and compilation, improving performance and memory usage.

    Low
    Eliminate redundant JSON parsing

    Use the already parsed JsonNode instead of reparsing with JsonParser to avoid
    redundant parsing and mixing JSON libraries.

    src/prerna/tcp/client/NativePySocketClient.java [365-366]

    -JsonElement json = JsonParser.parseString(jsonOutputString);
    -finalPs.payload = new Object[] {json};
    +finalPs.payload = new Object[] {jsonNode};
    Suggestion importance[1-10]: 5

    __

    Why: The code reparses the same JSON string with JsonParser even though a JsonNode is already available, which is inefficient and mixes Jackson and Gson libraries unnecessarily.

    Low

    @ryanweiler92
    Copy link
    Copy Markdown
    Collaborator

    @samarthKharote Can you please add a description and how to test your changes to the PR description?

    @ryanweiler92 ryanweiler92 removed the request for review from ppatel9703 May 7, 2025 14:32
    @samarthKharote
    Copy link
    Copy Markdown
    Contributor Author

    @ryanweiler92 I added the description and how to test part in the PR

    @ryanweiler92 ryanweiler92 merged commit 71cf818 into dev May 7, 2025
    3 checks passed
    @ryanweiler92 ryanweiler92 deleted the 694-pythonbe-catch-errors-when-calling-pixels-from-python branch May 7, 2025 19:49
    @github-actions
    Copy link
    Copy Markdown

    github-actions bot commented May 7, 2025

    @CodiumAI-Agent /update_changelog

    @QodoAI-Agent
    Copy link
    Copy Markdown

    Changelog updates: 🔄

    2025-05-07 [*][https://github.com//pull/787]

    Fixed

    • Catch errors in Python pixel calls and report operationType as “ERROR” instead of “CODE_EXECUTION”

    to commit the new content to the CHANGELOG.md file, please type:
    '/update_changelog --pr_update_changelog.push_changelog_changes=true'

    manamittal added a commit that referenced this pull request May 20, 2025
    * fix(python): handle eval when it is a single line execution but there is string input with space (#756)
    
    * Update Dockerfile.tomcat (#757)
    
    * fix: tomcat builder setting env var
    
    * fix: updating tomcat to 9.0.104
    
    * Update Dockerfile.ubuntu22.04
    
    * Update Dockerfile.ubuntu22.04
    
    * Update Dockerfile.ubuntu22.04
    
    * feat: creating KubernetesModelScaler class (#763)
    
    * Update Dockerfile.ubuntu22.04
    
    * feat: adding ability to attach a file to a vector db source (#736)
    
    * Added AttachSourceToVectorDbReactor for uploading pdf file to an existing csv file and modified VectorFileDownloadReactor
    
    * fix: proper return for the download and matching the reactor name
    
    * fix: error for downloading single file vs multiple; error for copyToDirectory instead of copyFile
    
    * chore: renaming so reactor matches VectorFileDownload
    
    ---------
    
    Co-authored-by: Maher Khalil <themaherkhalil@gmail.com>
    
    * Update Dockerfile.ubuntu22.04
    
    * Update ubuntu2204.yml
    
    * Update ubuntu2204.yml
    
    * Update ubuntu2204_cuda.yml
    
    * Update Dockerfile.nvidia.cuda.12.5.1.ubuntu22.04
    
    * Update ubuntu2204_cuda.yml
    
    * Update ubuntu2204.yml
    
    * feat: exposing tools calling through models (#764)
    
    * 587 unit test for prernadsutil (#654)
    
    * test(unit): unit tests for the prerna.util.ds package
    
    * test(unit): unit tests for the prerna.util.ds.flatfile package
    
    * test(unit): removed reflections, added paraquet tests
    
    * test(unit): unit tests for the prerna.util.ds package
    
    * test(unit): unit tests for the prerna.util.ds.flatfile package
    
    * test(unit): removed reflections, added paraquet tests
    
    * Update ubuntu2204.yml
    
    * Update ubuntu2204.yml
    
    * Update ubuntu2204.yml
    
    * fix: update pipeline docker buildx version
    
    * fix: ignore buildx
    
    * fix: adjusting pipeline for cuda
    
    * feat: switching dynamic sas to default false (#766)
    
    * fix: changes to account for version 2.0.0 of pyjarowinkler (#769)
    
    * chore: using 'Py' instead of 'py' to be consistent (#770)
    
    * feat: full ast parsing of code to return evaluation of the last expression (#771)
    
    * Python Deterministic Token Trimming for Message Truncation (#765)
    
    * feat: deterministic-token-trimming
    
    * feat: modifying logic such that system prompt is second to last message for truncation
    
    ---------
    
    Co-authored-by: Maher Khalil <themaherkhalil@gmail.com>
    
    * fix: added date added column to enginepermission table (#768)
    
    * fix: add docker-in-docker container to run on sef-hosted runner (#773)
    
    Co-authored-by: Raul Esquivel <resmas.work@gmail.com>
    
    * fix: properly passing in the parameters from kwargs/smss into model limits calculation (#774)
    
    * fix: removing legacy param from arguments (#777)
    
    * fix: Fix docker cache build issue (#778)
    
    * adding no cache
    
    * adding no cache
    
    * feat: Adding Semantic Text Splitting & Token Text Splitting (#720)
    
    * [696] - build - Add chonky semantic text splitting - Added the function for chonky semantic text splitting and integrated with existing flow.
    
    * [696] - build - Add chonky semantic text splitting - Updated the code
    
    * [696] - build - Add chonky semantic text splitting - Updated the code comments
    
    * feat: adding reactor support through java
    
    * feat: updating pyproject.toml with chonky package
    
    * feat: check for default chunking method in smss
    
    * [696] - feat - Add chonku semantic text splitting - Resolved the conflicts
    
    * [696] - feat - Add chonky semantic text splitting - Organized the code.
    
    * feat: adding chunking by tokens and setting as default
    
    * updating comments on chunking strategies
    
    ---------
    
    Co-authored-by: Weiler, Ryan <ryanweiler92@gmail.com>
    Co-authored-by: kunal0137 <kunal0137@gmail.com>
    
    * feat: allowing for tools message in full prompt (#780)
    
    * UPDATE ::: Add docker in docker Dockerfiler (#784)
    
    * add docker in docker Dockerfile
    
    * Update Dockerfile.dind
    
    Remove python and tomcat arguments from Dockerfile
    
    * fix: remove-paddle-ocr (#786)
    
    * [#595] test(unit): adds unit test for prerna.engine.impl.model.kserve
    
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * feat: Tag semoss image (#789)
    
    * adding changes for non-release docker build
    
    * adding non-release build logic to cuda-semoss builder
    
    * updating push branches
    
    * fix: branch names on docker builds
    
    * fix: branch names on docker builds cuda
    
    * fix: adding push condition - change to pyproject toml file; adding event input vars to env vars (#790)
    
    * fix: python builder toml file change (#792)
    
    * fix: Catch errors when calling pixels from Python (#787)
    
    Co-authored-by: Weiler, Ryan <ryanweiler92@gmail.com>
    
    * Creating db links between engines and default apps (#693)
    
    * create db links between engine and default app
    
    * Rename column APPID to TOOL_APP
    
    * feat: add database_tool_app to getUserEngineList
    
    ---------
    
    Co-authored-by: Weiler, Ryan <ryanweiler92@gmail.com>
    
    * Adding sort options to the myengines reactor (#479)
    
    * added sort feature to MyEnginesReactor and genericized reactor imports
    
    * formatting
    
    * overloading method
    
    * validate sortList
    
    ---------
    
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * feat: cleaning up unused imports in MyEngine reactor (#793)
    
    * feat: Create Enum projectTemplate and update CreateAppFromTemplateReactor to accept existing appID for cloning applications (#621)
    
    Co-authored-by: kunal0137 <kunal0137@gmail.com>
    
    * Update GetEngineUsageReactor.java (#417)
    
    Co-authored-by: Maher Khalil <themaherkhalil@gmail.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * Issue 596: Adds Unit Tests for prerna/engine/impl/model/responses and workers (#727)
    
    * [#596] test(unit): adds unit tests
    
    * fix: implements ai-agents suggestions
    
    ---------
    
    Co-authored-by: Jeff Vitunac <jvitunac@gmail.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * 609 implement native blob storage for azure gcp and aws (#674)
    
    * Initial commit : implementation for azure blob storage
    
    * added dependency for azure in pom.xml
    
    * update logic to fetch the metadata from list details
    
    * changed functionality from listing containers to listing files within a selected container
    
    * initial commit for google cloud storage implementation
    
    * added field contant in enum class and removed unused method
    
    * add methods to parse comma-separated local and cloud paths
    
    * add methods to parse comma-separated local and cloud paths
    
    * implementation for aws s3 bucket
    
    * normalize container prefix path
    
    * merged all: implementation for azure, aws and gcp
    
    * refactor(storage): replace manual path normalization with normalizePath from Utility class
    
    ---------
    
    Co-authored-by: pvijayaraghavareddy <pvijayaraghavareddy@WORKSPA-6QV71G7.us.deloitte.com>
    Co-authored-by: Parth <parthpatel3@deloitte.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * Get Node Pool Information for Remote Models (#806)
    
    * 590 unit test for prernaengineimpl (#808)
    
    * test(unit): update to filesystems hijacking for testing files
    
    * test: start of unit tests for abstract database engine
    
    * test(unit): added unit test for prerna.engine.impl
    
    * test(unit): finsihed tests for prerna.engine.impl
    
    * test(unit): adding back unused assignment
    
    ---------
    
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * Creating WordCountTokenizer Class (#802)
    
    * feat: creating word count tokenizer class && falling back to word count tokenizer if tiktok fails
    
    * feat: updating comment
    
    * feat: setting default chunking method as recursive (#810)
    
    * Unit tests fixes and Unit test Class file location updates (#812)
    
    * test(unit): moved tests to correct packages
    
    * test(unit): fixed a couple of unit tests
    
    * VectorDatabaseQueryReactor: output divider value for word doc chunks always 1 (#804)
    
    * Code implementation for #733
    
    * feat: Added code to resolve Divider page issue
    
    * Console output replaced by LOGGERs as per review comments
    
    * feat: replaced Console with Loggers
    
    ---------
    
    Co-authored-by: Varaham <katchabi50@gmail.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * GetCurrentUserReactor (#818)
    
    Adding GetCurrentUserReactor to return user info including if user is an admin.
    
    * Python User Class (#819)
    
    * fix: trimming properties read from smss; fix: logging commands before executing (#821)
    
    * Updating getNodePoolsInfo() to parse and return zk info and models active actual (#822)
    
    * feat: update get node pool information for zk info and models active actual
    
    * feat: get remote model configs
    
    * Add unit tests for package prerna\engine\impl\vector (#728)
    
    * Create ChromaVectorDatabaseEngineUnitTests.java
    
    * completed tests for ChromaVectorDatabaseEngine class
    
    * [#604] test(unit): Created ChromaVectorDatabaseEngine unit tests
    
    * [604] tests(unit) : Completed test cases for ChromaVectorDatabaseEngine; update File operations to nio operations in ChromaVectorDatabaseEngine.java
    
    * [#604] tests(unit): added unit tests for all vector database engines and util classes in the prerna\engine\impl\vector package
    
    * [604] test(unit): replaced creating file paths with string literals with java.nio Paths.resolve/Paths.get methods
    
    ---------
    
    Co-authored-by: Maher Khalil <themaherkhalil@gmail.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * feat: adding to the return of getenginemetadata (#813)
    
    * feat: adding to the return of getenginemetadata
    
    * fix: removing throws
    
    ---------
    
    Co-authored-by: Arash Afghahi <48933336+AAfghahi@users.noreply.github.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    
    * 718 create a single reactor to search both engines and apps (#794)
    
    * feat(engineProject): Initial commit
    
    * chore: 718 create a single reactor to search both engines and apps
    
    * chore: 718 create a single reactor to search both engines and apps
    
    ---------
    
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    Co-authored-by: Vijayaraghavareddy <pvijayaraghavareddy@deloitte.com>
    
    * feat: update openai wrapper to handle multiple images (#832)
    
    * feat: adding user room map (#840)
    
    * feat: hiding side menu bar for non admins (#833)
    
    * Side menu changes
    
    * Review Comments fixed
    
    * Flag is renamed in  Constants.java
    
    * Review Comment fixed in Utility.java
    
    * fix: cleaning up defaults and comments
    
    ---------
    
    Co-authored-by: kunal0137 <kunal0137@gmail.com>
    
    ---------
    
    Co-authored-by: Maher Khalil <themaherkhalil@gmail.com>
    Co-authored-by: kunal0137 <kunal0137@gmail.com>
    Co-authored-by: Ryan Weiler <ryanweiler92@gmail.com>
    Co-authored-by: ManjariYadav2310 <manjayadav@deloitte.com>
    Co-authored-by: dpartika <dpartika@deloitte.com>
    Co-authored-by: Raul Esquivel <resmas.work@gmail.com>
    Co-authored-by: Pasupathi Muniyappan <pasupathi.muniyappan@kanini.com>
    Co-authored-by: resmas-tx <131498457+resmas-tx@users.noreply.github.com>
    Co-authored-by: AndrewRodddd <62724891+AndrewRodddd@users.noreply.github.com>
    Co-authored-by: radkalyan <107957324+radkalyan@users.noreply.github.com>
    Co-authored-by: samarthKharote <samarth.kharote@kanini.com>
    Co-authored-by: Shubham Mahure <shubham.mahure@kanini.com>
    Co-authored-by: rithvik-doshi <81876806+rithvik-doshi@users.noreply.github.com>
    Co-authored-by: Mogillapalli Manoj kumar <86736340+Khumar23@users.noreply.github.com>
    Co-authored-by: Jeff Vitunac <jvitunac@gmail.com>
    Co-authored-by: pvijayaraghavareddy <pvijayaraghavareddy@WORKSPA-6QV71G7.us.deloitte.com>
    Co-authored-by: Parth <parthpatel3@deloitte.com>
    Co-authored-by: KT Space <119169984+Varaham@users.noreply.github.com>
    Co-authored-by: Varaham <katchabi50@gmail.com>
    Co-authored-by: ericgonzal8 <ericgonzalez8@deloitte.com>
    Co-authored-by: Arash Afghahi <48933336+AAfghahi@users.noreply.github.com>
    Co-authored-by: Vijayaraghavareddy <pvijayaraghavareddy@deloitte.com>
    Co-authored-by: ammb-123 <ammb@deloitte.com>
    @samarthKharote samarthKharote self-assigned this Jul 1, 2025
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    None yet

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    [PYTHON][BE] Catch errors when calling pixels from Python

    4 participants