Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions .github/workflows/python-sample-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir 01-get-started --save-report --report-name 01-get-started
cd scripts && uv run python -m sample_validation --subdir 01-get-started --save-report --report-name 01-get-started

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-01-get-started
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-02-agents:
name: Validate 02-agents
Expand All @@ -66,8 +66,8 @@ jobs:
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
# OpenAI configuration
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI_CHAT_MODEL_NAME }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI_REASONING_MODEL_NAME }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
# Observability
ENABLE_INSTRUMENTATION: "true"
defaults:
Expand All @@ -86,14 +86,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir 02-agents --save-report --report-name 02-agents
cd scripts && uv run python -m sample_validation --subdir 02-agents --save-report --report-name 02-agents

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-02-agents
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-03-workflows:
name: Validate 03-workflows
Expand Down Expand Up @@ -123,14 +123,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir 03-workflows --save-report --report-name 03-workflows
cd scripts && uv run python -m sample_validation --subdir 03-workflows --save-report --report-name 03-workflows

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-03-workflows
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-04-hosting:
name: Validate 04-hosting
Expand Down Expand Up @@ -162,14 +162,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir 04-hosting --save-report --report-name 04-hosting
cd scripts && uv run python -m sample_validation --subdir 04-hosting --save-report --report-name 04-hosting

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-04-hosting
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-05-end-to-end:
name: Validate 05-end-to-end
Expand Down Expand Up @@ -206,14 +206,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir 05-end-to-end --save-report --report-name 05-end-to-end
cd scripts && uv run python -m sample_validation --subdir 05-end-to-end --save-report --report-name 05-end-to-end

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-05-end-to-end
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-autogen-migration:
name: Validate autogen-migration
Expand All @@ -228,8 +228,8 @@ jobs:
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__CHATDEPLOYMENTNAME }}
# OpenAI configuration
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI_CHAT_MODEL_NAME }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI_REASONING_MODEL_NAME }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
defaults:
run:
working-directory: python
Expand All @@ -246,14 +246,14 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir autogen-migration --save-report --report-name autogen-migration
cd scripts && uv run python -m sample_validation --subdir autogen-migration --save-report --report-name autogen-migration

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-autogen-migration
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/

validate-semantic-kernel-migration:
name: Validate semantic-kernel-migration
Expand All @@ -269,8 +269,8 @@ jobs:
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME: ${{ vars.AZUREOPENAI__RESPONSESDEPLOYMENTNAME }}
# OpenAI configuration
OPENAI_API_KEY: ${{ secrets.OPENAI__APIKEY }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI_CHAT_MODEL_ID }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI_RESPONSES_MODEL_ID }}
OPENAI_CHAT_MODEL_ID: ${{ vars.OPENAI__CHATMODELID }}
OPENAI_RESPONSES_MODEL_ID: ${{ vars.OPENAI__RESPONSESMODELID }}
# Copilot Studio
COPILOTSTUDIOAGENT__ENVIRONMENTID: ${{ secrets.COPILOTSTUDIOAGENT__ENVIRONMENTID }}
COPILOTSTUDIOAGENT__SCHEMANAME: ${{ secrets.COPILOTSTUDIOAGENT__SCHEMANAME }}
Expand All @@ -292,11 +292,11 @@ jobs:

- name: Run sample validation
run: |
cd samples && uv run python -m _sample_validation --subdir semantic-kernel-migration --save-report --report-name semantic-kernel-migration
cd scripts && uv run python -m sample_validation --subdir semantic-kernel-migration --save-report --report-name semantic-kernel-migration

- name: Upload validation report
uses: actions/upload-artifact@v4
if: always()
with:
name: validation-report-semantic-kernel-migration
path: python/samples/_sample_validation/reports/
path: python/scripts/sample_validation/reports/
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ An AI-powered workflow system for validating Python samples by discovering them,
## File Structure

```
samples/
├── _sample_validation/
scripts/
├── sample_validation/
│ ├── __init__.py # Package exports
│ ├── README.md # This file
│ ├── models.py # Data classes
Expand Down Expand Up @@ -97,19 +97,19 @@ No required environment variables. Optional:

```bash
# Validate all samples
uv run python -m _sample_validation
uv run python -m sample_validation

# Validate specific subdirectory
uv run python -m _sample_validation --subdir 03-workflows
uv run python -m sample_validation --subdir 03-workflows

# Save reports to files
uv run python -m _sample_validation --save-report --output-dir ./reports
uv run python -m sample_validation --save-report --output-dir ./reports
```

### Configuration Options

```bash
uv run python -m _sample_validation [OPTIONS]
uv run python -m sample_validation [OPTIONS]

Options:
--subdir TEXT Subdirectory to validate (relative to samples/)
Expand All @@ -122,13 +122,13 @@ Options:

```bash
# Quick validation of a small directory
uv run python -m _sample_validation --subdir 03-workflows/_start-here
uv run python -m sample_validation --subdir 03-workflows/_start-here

# Limit parallel workers for large sample sets
uv run python -m _sample_validation --subdir 02-agents --max-parallel-workers 8
uv run python -m sample_validation --subdir 02-agents --max-parallel-workers 8

# Save report artifacts
uv run python -m _sample_validation --save-report
uv run python -m sample_validation --save-report
```

## How It Works
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
4. Generating a validation report

Usage:
uv run python -m _sample_validation
uv run python -m _sample_validation --subdir 01-get-started
uv run python -m sample_validation
uv run python -m sample_validation --subdir 01-get-started
"""

from _sample_validation.models import Report, RunResult, SampleInfo
from _sample_validation.workflow import create_validation_workflow
from sample_validation.models import Report, RunResult, SampleInfo
from sample_validation.workflow import create_validation_workflow

__all__ = [
"SampleInfo",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
4. Generates a validation report
Usage:
uv run python -m _sample_validation
uv run python -m _sample_validation --subdir 03-workflows
uv run python -m _sample_validation --output-dir ./reports
uv run python -m sample_validation
uv run python -m sample_validation --subdir 03-workflows
uv run python -m sample_validation --output-dir ./reports
"""

import argparse
Expand All @@ -25,9 +25,9 @@
# Add the samples directory to the path for imports
sys.path.insert(0, str(Path(__file__).parent.parent))

from _sample_validation.models import Report
from _sample_validation.report import save_report
from _sample_validation.workflow import ValidationConfig, create_validation_workflow
from sample_validation.models import Report
from sample_validation.report import save_report
from sample_validation.workflow import ValidationConfig, create_validation_workflow


def parse_arguments() -> argparse.Namespace:
Expand All @@ -37,9 +37,9 @@ def parse_arguments() -> argparse.Namespace:
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
uv run python -m _sample_validation # Validate all samples
uv run python -m _sample_validation --subdir 03-workflows # Validate only workflows
uv run python -m _sample_validation --output-dir ./reports # Save reports to custom dir
uv run python -m sample_validation # Validate all samples
uv run python -m sample_validation --subdir 03-workflows # Validate only workflows
uv run python -m sample_validation --output-dir ./reports # Save reports to custom dir
""",
)

Expand All @@ -52,8 +52,8 @@ def parse_arguments() -> argparse.Namespace:
parser.add_argument(
"--output-dir",
type=str,
default="./_sample_validation/reports",
help="Directory to save validation reports (default: ./_sample_validation/reports)",
default="./sample_validation/reports",
help="Directory to save validation reports (default: ./sample_validation/reports)",
)

parser.add_argument(
Expand Down Expand Up @@ -83,8 +83,10 @@ async def main() -> int:
args = parse_arguments()

# Determine paths
samples_dir = Path(__file__).parent.parent
python_root = samples_dir.parent
# Script is at python/scripts/sample_validation/__main__.py
# python_root is python/, samples_dir is python/samples/
python_root = Path(__file__).parent.parent.parent
samples_dir = python_root / "samples"

print("=" * 80)
print("SAMPLE VALIDATION WORKFLOW")
Expand All @@ -93,7 +95,9 @@ async def main() -> int:
print(f"Python root: {python_root}")

if os.environ.get("GITHUB_COPILOT_MODEL"):
print(f"Using GitHub Copilot model override: {os.environ['GITHUB_COPILOT_MODEL']}")
print(
f"Using GitHub Copilot model override: {os.environ['GITHUB_COPILOT_MODEL']}"
)

# Create validation config
config = ValidationConfig(
Expand Down
Loading