Skip to content

Implementation of ID Code import functionality#226

Draft
sababak wants to merge 3 commits intomasterfrom
pr-EDMMMX-13662-id-python-code
Draft

Implementation of ID Code import functionality#226
sababak wants to merge 3 commits intomasterfrom
pr-EDMMMX-13662-id-python-code

Conversation

@sababak
Copy link
Collaborator

@sababak sababak commented Feb 5, 2026

Summary

This PR introduces Python code file functionality for SAS Intelligent Decisioning, it include ID code format validation, file import capabilities, and automated dependency detection.

New Features

Main methods

  • write_id_code_file() method: Uploads a python code file to Viya file service, optionally validate code formatting, create an ID Code file linked to uploaded file
  • validate_id_code() method: Validates Python code against SAS Intelligent Decisioning requirements

Code Validation System

  • validate_id_code() method: Validates Python code against SAS Intelligent Decisioning requirements
  • validate_code parameter: Optional boolean to disable validation (default: True)
  • Syntax validation: Automatic Python syntax checking
  • Structure validation: Ensures required execute function and proper docstrings

File Import Capabilities

  • Code support: Accepts pathlib.Path objects, file path strings, or code passed in as a string
  • Automatic file reading: Reads content from .py files when paths provided
  • Path resolution: Detects file paths vs. code strings
  • Error handling: Graceful handling of invalid paths

📋 Docstring Validation

  • Output validation: Ensures 'Output:' docstring matches return statements
  • Dependency validation: Validates 'DependentPackages:' docstring
  • Variable consistency: Matches output docstring variables with actual returns (ensures that docstring and all return statement all contain the same amount of variables)

🔍 Dependency Detection

  • Import analysis: Parses Python AST to detect imported packages
  • Standard library filtering: Excludes Python built-in modules
  • Package mapping: Handles import-to-install name conversions

Signed-off-by: Samuel Babak <samuel.babak@sas.com>
Signed-off-by: Samuel Babak <samuel.babak@sas.com>
Signed-off-by: Samuel Babak <samuel.babak@sas.com>
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.

1 participant