Skip to main content

dataprof/
lib.rs

1//! High-performance data profiling and quality assessment.
2//!
3//! The `dataprof` crate is the user-facing facade for profiling CSV, JSON,
4//! JSONL, Parquet, database, DataFrame, and Arrow sources. Implementation
5//! details live in the workspace crates under `crates/`; this package keeps the
6//! public API compact and oriented around [`Profiler`].
7//!
8//! # Quick Start
9//!
10//! ```no_run
11//! use dataprof::Profiler;
12//!
13//! let report = Profiler::new().analyze_file("data.csv")?;
14//! println!("Rows: {}", report.execution.rows_processed);
15//! println!("Quality: {:?}", report.quality_score());
16//! # Ok::<(), dataprof::DataProfilerError>(())
17//! ```
18
19mod profiler;
20
21pub use profiler::{
22    EngineType, Profiler, ProfilerConfig, quick_quality_check, quick_quality_check_source,
23};
24
25pub use dataprof_core::{
26    AnalysisOptions, BooleanStats, ChunkSize, ColumnProfile, ColumnSchema, ColumnStats,
27    CountMethod, DataFrameLibrary, DataProfilerError, DataSource, DataType, DateTimeStats,
28    ExecutionMetadata, FileFormat, FrequencyItem, IsoQualityConfig, KeyColumnSource,
29    KeyUniquenessUnits, LexicalClass, Locale, MetricPack, NULL_MARKERS, NullTokenSet, NumericStats,
30    OutlierUnits, ParquetMetadata, Pattern, PatternCategory, PatternMatchCount, ProgressEvent,
31    ProgressSink, QualityDimension, QualityScoreWeights, Quartiles, QueryEngine, RangeRuleCount,
32    RecoveryEvent, RecoveryKind, RowCountEstimate, SamplingStrategy, SchemaResult,
33    SemanticHintBinding, SemanticHintKind, SemanticHints, ShapeMomentEstimator, SlashDateOrder,
34    StopCondition, StopEvaluator, StructureColumnSummary, StructureReport, TextLengthUnit,
35    TextStats, TruncationReason, TypeHomogeneity, validate_unique_column_names,
36};
37pub use dataprof_csv::{CsvParserConfig, analyze_csv_file, analyze_csv_from_reader};
38pub use dataprof_json::{
39    JsonErrorPolicy, JsonFormat, JsonParserConfig, analyze_json_file,
40    analyze_json_file_with_options, analyze_json_from_reader,
41};
42pub use dataprof_metrics::{
43    AccuracyMetrics, CompletenessMetrics, ConsistencyMetrics, MetricConfidence, MetricsCalculator,
44    PatternMetadata, PrecisionMetrics, QualityAssessment, QualityMetrics, QualityScores,
45    ScoreBounds, ScoreInterval, TimelinessMetrics, UniquenessMetrics, ValidityMetrics,
46    analyze_column, analyze_column_fast, analyze_column_with_analysis_options,
47    calculate_datetime_stats, calculate_numeric_stats, calculate_text_stats,
48    classify_lexical_forms, detect_patterns, infer_type, is_null_like_token, lexical_class,
49    list_patterns,
50};
51#[cfg(feature = "parquet-async")]
52pub use dataprof_parquet::{HttpParquetReader, analyze_parquet_async_http};
53#[cfg(feature = "parquet")]
54pub use dataprof_parquet::{
55    ParquetConfig, analyze_parquet_bytes, analyze_parquet_bytes_with_options,
56    analyze_parquet_with_config, analyze_parquet_with_options, analyze_parquet_with_quality,
57    analyze_parquet_with_quality_dims, is_parquet_file,
58};
59pub use dataprof_partial::{analyze_structure, infer_schema, quick_row_count};
60pub use dataprof_runtime::{
61    AnalysisSettings, BaselineComparison, BaselineReading, Check, CheckBounds, CheckCode,
62    CheckStatus, ColumnSelection, DEFAULT_MIXED_TYPES_PERCENTAGE, DEFAULT_NULL_HEAVY_PERCENTAGE,
63    Diagnostic, DiagnosticCode, Evidence, EvidenceGap, EvidenceValue, Expectation, Finding,
64    FindingCode, FindingPolicy, FindingPolicyError, FindingsResult, GateResult, MetricSemantics,
65    MetricValue, NotEvaluated, NotEvaluatedReason, PatternLocale, PolicyError, PolicyScope,
66    ProfileReport, QualityAnalysisStatus, QualityPolicy, REPORT_SCHEMA_VERSION, ReportGenerator,
67    RequiredMetric, SettingDifference, Severity, UnevaluatedRule, Verdict,
68};
69pub use dataprof_runtime::{
70    ColumnChange, ConfigurationComparison, DimensionChange, RecordedHints, ReportDelta,
71    ReportReference, ReportSide, SchemaChange, ScoreChange, SemanticsComparison, SettingComparison,
72    Sides,
73};
74
75#[cfg(feature = "async-streaming")]
76pub use dataprof_engines::streaming::ReqwestSource;
77#[cfg(feature = "async-streaming")]
78pub use dataprof_engines::streaming::{
79    AsyncDataSource, AsyncSourceInfo, AsyncStreamingProfiler, BytesSource,
80};
81
82#[cfg(feature = "async-streaming")]
83pub use dataprof_partial::{
84    infer_schema_async, infer_schema_stream, quick_row_count_async, quick_row_count_stream,
85};
86
87#[cfg(feature = "database")]
88pub use dataprof_db::{
89    DatabaseConfig, DatabaseConnector, DatabaseCredentials, MySqlConnector, PostgresConnector,
90    SqliteConnector, SslConfig, analyze_database, analyze_database_with_options, create_connector,
91};