Production-grade implementations demonstrating Featuresmith SDK pipelines, automated CI/CD quality gates, and custom rule design.
This script illustrates loading a CSV dataset, executing deterministic audits targeting a leakage column, handling rule findings, and writing serialized reports to disk.
import jsonimport featuresmith as fsdef run_featuresmith_pipeline(data_path: str, target: str): # 1. Load data safely into Dataset layer print(f"Loading data from {data_path}...") dataset = fs.load(data_path) # 2. Run data audit checks (load → profile → rules evaluation) print("Running rule audit...") result = fs.analyze( dataset, target_column=target, rule_config={ "quality.missing_value_threshold": {"threshold": 10.0}, "statistical.high_correlation": {"threshold": 0.85} } ) # 3. Handle rules results print(f"Audit completed. Findings: {len(result.findings)}") for finding in result.findings: print(f"[{finding.severity.upper()}] Column: {finding.column_name}") print(f" Issue : {finding.title}") print(f" Detail : {finding.description}") # 4. Serialize result to dictionary/JSON report_dict = result.to_dict() with open("report.json", "w") as f: json.dump(report_dict, f, indent=2, default=str)if __name__ == "__main__": run_featuresmith_pipeline("customers.csv", target="churn")Integrate the Featuresmith CLI into your GitHub Actions workflow. Exit code 1 gates the build on critical quality or leakage violations, and uploads the generated text reports.
# .github/workflows/data-quality-gate.ymlname: Data Quality Gateon: push: branches: [ main ] schedule: - cron: '0 0 * * *' # Run daily auditsjobs: audit: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install featuresmith-core featuresmith-cli - name: Audit dataset quality run: | # Gate CI build: if critical rule violations exist, exit code 1 fails step featuresmith analyze data/incoming_leads.csv --target converted --severity critical --output audit_report.txt - name: Upload audit report if: always() uses: actions/upload-artifact@v4 with: name: data-audit-report path: audit_report.txtExtend the BaseRule abstraction to create your own deterministic validation checks. This example detects numeric columns with zero standard deviation.
from featuresmith.core.profile_result import ProfileResultfrom featuresmith.rules.base import BaseRulefrom featuresmith.core.rule_finding import RuleFindingclass ZeroVarianceRule(BaseRule): """Detect numeric columns with zero standard deviation.""" @property def id(self) -> str: return "statistical.zero_variance" @property def name(self) -> str: return "Zero Variance Columns" @property def description(self) -> str: return "Flags numeric columns with no observed variance." @property def category(self) -> str: return "statistical" @property def severity(self) -> str: return "warning" @property def enabled_by_default(self) -> bool: return True def evaluate(self, profile: ProfileResult) -> list[RuleFinding]: findings: list[RuleFinding] = [] for col_name, numeric_profile in profile.numeric_profiles.items(): if numeric_profile.std_dev == 0.0: findings.append( RuleFinding( rule_id=self.id, rule_name=self.name, category=self.category, severity=self.severity, column_name=col_name, title="Zero Variance Detected", description=f"Column '{col_name}' has standard deviation of 0.0 (no variance).", evidence={"std_dev": numeric_profile.std_dev} ) ) return findingsRun the downloader utility in the root workspace to fetch and prepare these datasets programmatically:
Source: scikit-learn (load_iris)
Canonical clean machine learning dataset containing no missing values or outliers. Serves as a perfect baseline.
Source: OpenML (titanic)
Messy historical log containing missing ages and duplicate tickets. Triggers missing value threshold rules.
Source: scikit-learn (fetch_california_housing)
Continuous spatial housing metrics with extreme values. Triggers numeric outlier detection and correlation rules.
Source: OpenML (Telco-Customer-Churn)
IBM subscriber records containing synthetic correlation columns. Triggers critical target leakage validations.
Source: Synthetic Simulation (Superstore)
Transactional orders with datetime strings and empty fields. Triggers constant and fully empty column rules.
Step-by-step interactive notebooks located in examples/notebooks/:
Learn how to install Featuresmith, load datasets from CSV or DataFrame, run profiling, and view audit summaries.
01_getting_started.ipynbDeep dive into continuous numeric summaries, categorical value distributions, datetime spans, and Pearson correlation matrices.
02_exploring_datasets.ipynbInspect validation findings, customize rule parameters (e.g. missingness ratios), gate specific check rules, and isolate exceptions.
03_understanding_rule_findings.ipynbSet up pre-modeling filters to automatically detect and prune target leakage features before passing variables to estimators.
04_data_science_workflows.ipynbReview Featuresmith's loading, profiling, and rule engine benchmarks.