Observed since 20 Oct, 19:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Evaluate Azure Data Factory submissions from JSON/ZIP/folder inputs with comprehensive AI-driven grading and professional reporting.
A Python package for evaluating Azure Data Factory (ADF) submissions with comprehensive AI-driven grading.
Provides accurate, fair assessment of ADF implementations including architecture, design quality, error handling, and best practices.
evaluate_adf() method and professional reportingpip install ADFMentor
from ADFMentor import ADFMentor
mentor = ADFMentor(api_key="your-api-key", model_name="gemini-2.0-flash-exp")
result = mentor.evaluate_adf(
submission_path="path/to/submission.zip",
question="Grade this ADF assignment"
)
print(f"Score: {result['score']}/100")
print(f"Feedback:\n{result['feedback']}")
print(f"Metadata:\n{result['metadata_report']}")
custom_rubric = """
Evaluate focus on: error handling, parameterization,
security practices, and performance optimization.
Score 0-100 with detailed feedback.
"""
result_custom = mentor.evaluate_adf(
submission_path="path/to/submission.zip",
prompt=custom_rubric,
question="Assess ADF quality"
)
result_fast = mentor.evaluate_adf(
submission_path="path/to/submission.zip",
use_rule_based=True
)
.env.example to .env:
cp .env.example .env
.env and add your API key:
GEMINI_API_KEY=your_actual_key_here
.env to git (already protected in .gitignore)Test files automatically load from .env.
.json - ARM templates or repo-export JSON files.zip - ADF export packages (may include .txt notes).txt - Optional written explanations (AI grading only)The system uses Gemini AI (default: gemini-2.0-flash-exp) for comprehensive evaluation including:
Full ADF JSON documents (sanitized for obvious credential-like secrets)
Metadata summary for faster navigation and cross-checking
Optional companion .txt notes included alongside the JSON artifacts
Architecture & Design: Pipeline organization, activity flow, component relationships
Error Handling: Exception handling, retry logic, resilience patterns
Parameterization: Runtime flexibility, hardcoded values, reusability
Best Practices: Naming conventions, schema definitions, performance, security
Completeness: All required components, connections, configurations
Code Quality: JSON structure, documentation, clarity
Returns: Score (0-100) + detailed feedback with specific improvements.
Safe ZIP extraction with:
Define custom prompts for specialized evaluations:
from ADFMentor import ADFMentor
import os
mentor = ADFMentor(api_key=os.getenv("GEMINI_API_KEY"))
custom_prompts = {
"pipeline": """Evaluate pipeline logic correctness (40 pts), activity selection (30 pts),
performance optimization (20 pts), and completeness (10 pts).
Provide concise feedback.""",
"architecture": """Evaluate architecture design (40 pts), error handling (30 pts),
security practices (20 pts), and documentation (10 pts).
Provide concise feedback."""
}
result = mentor.evaluate_adf(
submission_path="submission.zip",
prompt=custom_prompts["pipeline"],
question="Evaluate the pipeline"
)
Default AI grading works without custom prompts (recommended).
ADFMentor/
__init__.py
ADFMentorInternal/
core.py
models/
gemini.py
utils/
adf_validator.py
adf_processor.py
adf_evaluator.py
ADFMentor(api_key, model_name="gemini-2.0-flash-exp")evaluate_adf(submission_path, prompt=None, question=None)Returns:
{
"score": 0,
"feedback": "...",
"metadata_report": "..."
}
.txt submissions, provide prompt to enable AI grading.zip/folder submissions, .txt files are treated as optional companion notesMIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.2 | 11 Mar 2026 | 2 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:653e5fa86afa92d0a05fbd45b9054e02f90307dd01e85242524df29ceafe1c01