Application configuration from environment variables.
from ai_project.config import Settings, get_settings
settings = get_settings()
print(settings.app_env) # "development"
print(settings.log_level) # "INFO"Attributes:
app_env: str- Application environmentapp_debug: bool- Debug modelog_level: str- Logging leveldata_input_path: Path- Input directorydata_output_path: Path- Output directorydata_cache_enabled: bool- Enable cachingfeature_scaling_method: str- Scaling methodfeature_selection_threshold: float- Selection threshold
Get structured logger instance.
from ai_project.logger import get_logger
logger = get_logger(__name__)
logger.info("Processing started", file="data.csv")Configure logging system.
from ai_project.logger import configure_logging
configure_logging("DEBUG")Single data record with validation.
from ai_project.models import DataRecord
record = DataRecord(
id=1,
value=10.5,
label="test",
timestamp=datetime.now()
)Validators:
value >= 0- Non-negative valueslabel- Non-empty string
Result of data processing operation.
from ai_project.models import ProcessingResult
result = ProcessingResult(
success=True,
records_processed=100,
records_failed=0,
errors=[],
metadata={"duration": 1.5}
)Load and save data files.
from ai_project.processors.loader import DataLoader
# Load CSV
df = DataLoader.load_csv("data.csv")
# Load JSON
df = DataLoader.load_json("data.json")
# Save CSV
DataLoader.save_csv(df, "output.csv")Validate data against schema.
from ai_project.processors.validator import DataValidator
# Validate single record
record = DataValidator.validate_record({"id": 1, "value": 10.0, "label": "test"})
# Validate DataFrame
valid_records, errors = DataValidator.validate_dataframe(df)
# Validate schema
DataValidator.validate_schema(df, ["id", "value", "label"])Clean and preprocess data.
from ai_project.processors.cleaner import DataCleaner
# Remove duplicates
df = DataCleaner.remove_duplicates(df)
# Remove nulls
df = DataCleaner.remove_nulls(df)
# Normalize column
df = DataCleaner.normalize_numeric(df, "value", method="minmax")
# Full cleaning pipeline
df = DataCleaner.clean(df)Create and engineer features.
from ai_project.processors.feature_eng import FeatureEngineer
# Scale features
df = FeatureEngineer.scale_features(df, ["value"], method="standard")
# Select features
df_selected, cols = FeatureEngineer.select_features(df, threshold=0.8)
# Create interaction
df = FeatureEngineer.create_interaction_features(df, "id", "value")Orchestrate complete data pipeline.
from ai_project.core.pipeline import DataPipeline
from ai_project.core.models import PipelineConfig
config = PipelineConfig(
name="my_pipeline",
validate_data=True,
clean_data=True,
engineer_features=True,
scaling_method="standard"
)
pipeline = DataPipeline(config)
result = pipeline.execute("input.csv")
print(result.success) # True
print(result.records_processed) # 100
print(result.duration_seconds) # 1.23Configuration for pipeline execution.
from ai_project.core.models import PipelineConfig
config = PipelineConfig(
name="default",
validate_data=True,
clean_data=True,
engineer_features=False,
scaling_method="standard"
)Result of pipeline execution.
from ai_project.core.models import PipelineResult
result = PipelineResult(
success=True,
pipeline_name="my_pipeline",
records_processed=100,
records_failed=0,
duration_seconds=1.23,
errors=[],
metadata={"output_rows": 100}
)from ai_project.exceptions import (
AIProjectError,
ConfigurationError,
DataLoadError,
ValidationError,
ProcessingError,
PipelineError,
)
try:
df = DataLoader.load_csv("missing.csv")
except DataLoadError as e:
print(f"Failed to load: {e}")# Process data
ai-project process input.csv --output output.csv
# Validate data
ai-project validate input.csv
# Show info
ai-project info# Enable debug mode
ai-project process input.csv --debug
# Custom output
ai-project process input.csv --output custom.csv