fg-data-profiling-wasm 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fg_data_profiling_wasm-0.1.0/LICENSE +21 -0
- fg_data_profiling_wasm-0.1.0/MANIFEST.in +9 -0
- fg_data_profiling_wasm-0.1.0/PKG-INFO +195 -0
- fg_data_profiling_wasm-0.1.0/README.md +148 -0
- fg_data_profiling_wasm-0.1.0/VERSION +1 -0
- fg_data_profiling_wasm-0.1.0/pyproject.toml +93 -0
- fg_data_profiling_wasm-0.1.0/setup.cfg +4 -0
- fg_data_profiling_wasm-0.1.0/setup.py +4 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/__init__.py +34 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/compare_reports.py +359 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/config.py +496 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/config_default.yaml +223 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/config_minimal.yaml +222 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/controller/__init__.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/controller/console.py +125 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/controller/pandas_decorator.py +21 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/expectations_report.py +117 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/__init__.py +4 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/alerts.py +780 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/correlations.py +163 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/dataframe.py +35 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/describe.py +210 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/description.py +108 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/duplicates.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/expectation_algorithms.py +112 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/handler.py +81 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/missing.py +146 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pairwise.py +33 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/__init__.py +55 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/correlations_pandas.py +207 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/dataframe_pandas.py +26 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_boolean_pandas.py +43 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_categorical_pandas.py +274 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_counts_pandas.py +63 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_date_pandas.py +77 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_file_pandas.py +56 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_generic_pandas.py +36 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_image_pandas.py +255 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_numeric_pandas.py +175 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_path_pandas.py +63 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_supported_pandas.py +41 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_text_pandas.py +62 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_timeseries_pandas.py +222 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/describe_url_pandas.py +57 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/discretize_pandas.py +81 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/duplicates_pandas.py +56 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/imbalance_pandas.py +35 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/missing_pandas.py +42 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/sample_pandas.py +38 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/summary_pandas.py +101 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/table_pandas.py +56 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/timeseries_index_pandas.py +33 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/pandas/utils_pandas.py +27 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/sample.py +37 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/__init__.py +48 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/correlations_spark.py +152 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/dataframe_spark.py +34 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_boolean_spark.py +27 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_categorical_spark.py +28 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_counts_spark.py +105 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_date_spark.py +51 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_generic_spark.py +30 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_numeric_spark.py +155 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_supported_spark.py +33 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/describe_text_spark.py +25 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/duplicates_spark.py +54 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/missing_spark.py +96 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/sample_spark.py +43 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/summary_spark.py +95 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/table_spark.py +58 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/spark/timeseries_index_spark.py +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/summarizer.py +207 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/summary.py +66 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/summary_algorithms.py +276 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/table.py +10 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/timeseries_index.py +16 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/typeset.py +365 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/model/typeset_relations.py +143 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/profile_report.py +576 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/__init__.py +4 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/formatters.py +346 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/__init__.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/__init__.py +39 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/alerts.py +18 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/collapse.py +24 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/container.py +50 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/correlation_table.py +21 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/dropdown.py +44 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/duplicate.py +16 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/frequency_table.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/frequency_table_small.py +16 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/html.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/image.py +34 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/item_renderer.py +17 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/renderable.py +42 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/root.py +35 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/sample.py +20 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/scores.py +32 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/table.py +26 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/toggle_button.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/variable.py +40 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/core/variable_info.py +36 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/__init__.py +9 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/flavour_html.py +64 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/flavour_widget.py +61 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/flavours.py +43 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/__init__.py +47 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/alerts.py +10 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/collapse.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/container.py +58 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/correlation_table.py +13 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/dropdown.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/duplicate.py +24 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/frequency_table.py +20 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/frequency_table_small.py +15 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/html.py +6 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/image.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/root.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/sample.py +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/scores.py +11 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/table.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_constant.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_constant_length.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_dirty_category.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_duplicates.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_empty.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_high_cardinality.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_high_correlation.html +4 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_imbalance.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_infinite.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_missing.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_near_duplicates.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_non_stationary.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_seasonal.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_skewed.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_truncated.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_type_date.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_uniform.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_unique.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_unsupported.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts/alert_zeros.html +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/alerts.html +47 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/collapse.html +11 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/correlation_table.html +5 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/diagram.html +11 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/dropdown.html +16 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/duplicate.html +5 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/frequency_table.html +45 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/frequency_table_small.html +34 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/report.html +26 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sample.html +10 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/scores.html +78 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/batch_grid.html +16 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/grid.html +18 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/list.html +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/named_list.html +8 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/overview_tabs.html +30 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/scores.html +3 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/sections.html +13 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/select.html +40 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/sequence/tabs.html +30 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/table.html +38 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/toggle_button.html +18 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/variable.html +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/variable_info.html +49 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/bootstrap.bundle.min.js +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/bootstrap.min.css +6 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/cosmo.bootstrap.min.css +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/flatly.bootstrap.min.css +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/script.js +52 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/simplex.bootstrap.min.css +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/style.css +253 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/assets/united.bootstrap.min.css +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/footer.html +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/javascript.html +18 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/navigation.html +36 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates/wrapper/style.html +53 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/templates.py +76 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/toggle_button.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/variable.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/html/variable_info.py +7 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/__init__.py +49 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/alerts.py +45 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/collapse.py +43 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/container.py +121 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/correlation_table.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/dropdown.py +31 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/duplicate.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/frequency_table.py +57 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/frequency_table_small.py +66 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/html.py +11 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/image.py +26 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/notebook.py +81 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/root.py +10 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/sample.py +14 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/table.py +30 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/toggle_button.py +17 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/variable.py +12 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/flavours/widget/variable_info.py +11 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/presentation/frequency_table_utils.py +141 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/__init__.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/correlations.py +123 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/overview.py +376 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/report.py +457 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/__init__.py +35 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_boolean.py +132 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_categorical.py +566 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_common.py +31 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_complex.py +102 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_count.py +172 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_date.py +143 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_file.py +70 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_generic.py +45 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_image.py +204 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_path.py +134 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_real.py +314 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_text.py +189 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_timeseries.py +371 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/structure/variables/render_url.py +132 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/report/utils.py +34 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/serialize_report.py +143 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/__init__.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/backend.py +9 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/cache.py +59 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/common.py +142 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/compat.py +31 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/dataframe.py +238 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/logger.py +53 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/notebook.py +8 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/paths.py +45 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/progress_bar.py +15 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/styles.py +22 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/utils/versions.py +19 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/version.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/visualisation/__init__.py +1 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/visualisation/context.py +87 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/visualisation/missing.py +138 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/visualisation/plot.py +1158 -0
- fg_data_profiling_wasm-0.1.0/src/data_profiling/visualisation/utils.py +113 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/PKG-INFO +195 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/SOURCES.txt +244 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/dependency_links.txt +1 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/entry_points.txt +3 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/requires.txt +23 -0
- fg_data_profiling_wasm-0.1.0/src/fg_data_profiling_wasm.egg-info/top_level.txt +2 -0
- fg_data_profiling_wasm-0.1.0/src/ydata_profiling/__init__.py +43 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 awesome wasm packages
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Templates and static resources (applied after materialize)
|
|
2
|
+
recursive-include src/data_profiling/report/presentation/flavours/html/templates *.html *.js *.css
|
|
3
|
+
|
|
4
|
+
# Configuration
|
|
5
|
+
include src/data_profiling/*.yaml
|
|
6
|
+
|
|
7
|
+
include LICENSE
|
|
8
|
+
include README.md
|
|
9
|
+
include VERSION
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fg-data-profiling-wasm
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Pyodide-friendly fork of fg-data-profiling (ydata-profiling) for browser WASM
|
|
5
|
+
Author: awesome-wasm-packages
|
|
6
|
+
Maintainer: awesome-wasm-packages
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/awesome-wasm-packages/fg-data-profiling-wasm
|
|
9
|
+
Project-URL: Upstream, https://github.com/Data-Centric-AI-Community/fg-data-profiling
|
|
10
|
+
Keywords: pandas,profiling,pyodide,wasm,eda
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering
|
|
21
|
+
Requires-Python: <3.14,>=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: scipy<1.17,>=1.8
|
|
25
|
+
Requires-Dist: pandas!=1.4.0,<3.0,>1.5
|
|
26
|
+
Requires-Dist: matplotlib<=3.10,>=3.5
|
|
27
|
+
Requires-Dist: pydantic<3,>=2
|
|
28
|
+
Requires-Dist: PyYAML<6.1,>=6.0.3
|
|
29
|
+
Requires-Dist: jinja2<3.2,>=3.1.6
|
|
30
|
+
Requires-Dist: visions[type_image_path]<0.8.2,>=0.7.5
|
|
31
|
+
Requires-Dist: numpy<2.4,>=1.22
|
|
32
|
+
Requires-Dist: filetype>=1.0.0
|
|
33
|
+
Requires-Dist: requests<3,>=2.32.0
|
|
34
|
+
Requires-Dist: tqdm<5,>=4.66.3
|
|
35
|
+
Requires-Dist: seaborn<0.14,>=0.10.1
|
|
36
|
+
Requires-Dist: multimethod<2,>=1.4
|
|
37
|
+
Requires-Dist: statsmodels<1,>=0.13.2
|
|
38
|
+
Requires-Dist: typeguard<5,>=4
|
|
39
|
+
Requires-Dist: imagehash==4.3.2
|
|
40
|
+
Requires-Dist: wordcloud>=1.9.4
|
|
41
|
+
Requires-Dist: dacite<2,>=1.9
|
|
42
|
+
Provides-Extra: native
|
|
43
|
+
Requires-Dist: minify-html>=0.15.0; extra == "native"
|
|
44
|
+
Requires-Dist: phik<0.13,>=0.12.5; extra == "native"
|
|
45
|
+
Requires-Dist: numba<0.63,>=0.60; extra == "native"
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
|
|
48
|
+
# fg-data-profiling-wasm
|
|
49
|
+
|
|
50
|
+
Pyodide-friendly fork of [fg-data-profiling](https://github.com/Data-Centric-AI-Community/fg-data-profiling) (formerly ydata-profiling / pandas-profiling).
|
|
51
|
+
|
|
52
|
+
**You do not compile this package to WASM.** Upstream already ships as a pure-Python wheel (`py2.py3-none-any`). This fork only does dependency surgery so it can install and run under Pyodide.
|
|
53
|
+
|
|
54
|
+
## What changed vs upstream
|
|
55
|
+
|
|
56
|
+
| Change | Why |
|
|
57
|
+
|---|---|
|
|
58
|
+
| Drop hard deps: `numba`, `minify-html`, `phik` | Native / JIT; broken or impractical in browser WASM |
|
|
59
|
+
| Default `html.minify_html = False` | Avoid lazy-importing the Rust `minify-html` extension |
|
|
60
|
+
| Soft-fail if minify is requested but missing | Safer in constrained environments |
|
|
61
|
+
| Keep `phi_k` off (already upstream default) | Avoid needing `phik` |
|
|
62
|
+
| Package name `fg-data-profiling-wasm` | Distinguish the Pyodide wheel from upstream |
|
|
63
|
+
|
|
64
|
+
Optional native extras remain under `[project.optional-dependencies] native` for desktop use.
|
|
65
|
+
|
|
66
|
+
## Layout
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
src/ # vendored upstream + patches
|
|
70
|
+
patches/ # Pyodide-friendly diffs reapplied on each sync
|
|
71
|
+
scripts/sync-upstream.sh
|
|
72
|
+
upstream.lock.json # pinned upstream ref + commit
|
|
73
|
+
pyodide/ # install helper + dependency matrix
|
|
74
|
+
pyproject.toml # Pyodide-friendly dependency set
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Upgrading from upstream
|
|
78
|
+
|
|
79
|
+
Pinned upstream lives in [`upstream.lock.json`](upstream.lock.json).
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Is upstream ahead of our lock?
|
|
83
|
+
make check-upstream
|
|
84
|
+
# or: ./scripts/sync-upstream.sh --check
|
|
85
|
+
|
|
86
|
+
# Pull latest develop (or whatever ref is in the lock), re-apply patches,
|
|
87
|
+
# refresh dependency pins, update the lockfile
|
|
88
|
+
make sync
|
|
89
|
+
# or: ./scripts/sync-upstream.sh
|
|
90
|
+
|
|
91
|
+
# Sync a release tag / other ref
|
|
92
|
+
make sync-ref REF=v4.9.0
|
|
93
|
+
# or: ./scripts/sync-upstream.sh --ref v4.9.0
|
|
94
|
+
|
|
95
|
+
# After a successful sync, bump our PyPI version
|
|
96
|
+
./scripts/sync-upstream.sh --bump patch
|
|
97
|
+
|
|
98
|
+
# If a patch no longer applies: fix src/ by hand, then regenerate the patch series
|
|
99
|
+
./scripts/sync-upstream.sh --regen-patches
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Typical release flow after upstream moves:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
./scripts/sync-upstream.sh --ref develop --bump patch
|
|
106
|
+
python -m build
|
|
107
|
+
# review git diff, commit, push, twine upload dist/*
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
A weekly GitHub Action (`.github/workflows/upstream-check.yml`) opens/comments on an issue when the lock is behind.
|
|
111
|
+
|
|
112
|
+
## Build a wheel
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
python -m pip install build
|
|
116
|
+
python -m build # → dist/fg_data_profiling_wasm-*-py2.py3-none-any.whl
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Current artifact:
|
|
120
|
+
|
|
121
|
+
- `dist/fg_data_profiling_wasm-0.1.0-py2.py3-none-any.whl` (purelib; PyPI-compatible)
|
|
122
|
+
|
|
123
|
+
## Publish to PyPI (GitHub Actions)
|
|
124
|
+
|
|
125
|
+
The package is **not on PyPI yet**. Publishing is automated via [Trusted Publishing](https://docs.pypi.org/trusted-publishers/) (OIDC) — no long-lived API token in the repo.
|
|
126
|
+
|
|
127
|
+
### One-time PyPI setup
|
|
128
|
+
|
|
129
|
+
1. Sign in at https://pypi.org/
|
|
130
|
+
2. Open **Publishing** → **Add a new pending publisher** (project does not exist yet):
|
|
131
|
+
- **PyPI project name:** `fg-data-profiling-wasm`
|
|
132
|
+
- **Owner:** `awesome-wasm-packages`
|
|
133
|
+
- **Repository:** `fg-data-profiling-wasm`
|
|
134
|
+
- **Workflow name:** `publish.yml`
|
|
135
|
+
- **Environment name:** `pypi`
|
|
136
|
+
3. In GitHub → **Settings → Environments** → create environment `pypi` (optional protection rules / required reviewers).
|
|
137
|
+
|
|
138
|
+
### Publish a version
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# bump version in VERSION + pyproject.toml (or)
|
|
142
|
+
./scripts/sync-upstream.sh --bump patch
|
|
143
|
+
git add -A && git commit -m "Release $(tr -d '[:space:]' < VERSION)"
|
|
144
|
+
git tag "v$(tr -d '[:space:]' < VERSION)"
|
|
145
|
+
git push && git push --tags
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Then create a GitHub Release for that tag (or use the UI). The `Publish to PyPI` workflow builds the wheel and uploads it.
|
|
149
|
+
|
|
150
|
+
You can also run the workflow manually: **Actions → Publish to PyPI → Run workflow**.
|
|
151
|
+
|
|
152
|
+
## Use in Pyodide
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
import pyodide_js
|
|
156
|
+
await pyodide_js.loadPackage([
|
|
157
|
+
"numpy", "pandas", "scipy", "matplotlib", "statsmodels",
|
|
158
|
+
"pillow", "pywavelets", "jinja2", "pyyaml", "pydantic",
|
|
159
|
+
"tqdm", "requests", "wordcloud", "networkx", "micropip",
|
|
160
|
+
])
|
|
161
|
+
|
|
162
|
+
import micropip
|
|
163
|
+
await micropip.install([
|
|
164
|
+
"seaborn", "multimethod==1.12", "dacite", "filetype",
|
|
165
|
+
"typeguard", "imagehash==4.3.2", "visions==0.7.6", "attrs",
|
|
166
|
+
"fg-data-profiling-wasm",
|
|
167
|
+
])
|
|
168
|
+
|
|
169
|
+
import pandas as pd
|
|
170
|
+
from data_profiling import ProfileReport
|
|
171
|
+
|
|
172
|
+
df = pd.DataFrame({"a": [1, 2, 3], "b": ["x", "y", "x"]})
|
|
173
|
+
report = ProfileReport(
|
|
174
|
+
df,
|
|
175
|
+
minimal=True,
|
|
176
|
+
progress_bar=False,
|
|
177
|
+
correlations={"phi_k": {"calculate": False}},
|
|
178
|
+
html={"minify_html": False},
|
|
179
|
+
)
|
|
180
|
+
html = report.to_html()
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Helpers live in [`pyodide/install.py`](pyodide/install.py); dependency notes in [`pyodide/DEPS.md`](pyodide/DEPS.md).
|
|
184
|
+
|
|
185
|
+
## Difficulty (recap)
|
|
186
|
+
|
|
187
|
+
| Goal | Difficulty |
|
|
188
|
+
|---|---|
|
|
189
|
+
| Install this pure wheel in Pyodide | Easy |
|
|
190
|
+
| Usable `ProfileReport` (core EDA, `minimal=True`) | Medium |
|
|
191
|
+
| Full upstream fidelity (`phik`, minify, numba-shaped features) | Hard / skip |
|
|
192
|
+
|
|
193
|
+
## Upstream
|
|
194
|
+
|
|
195
|
+
Based on [Data-Centric-AI-Community/fg-data-profiling](https://github.com/Data-Centric-AI-Community/fg-data-profiling). Tracked commit is in `upstream.lock.json`. MIT-licensed; see `LICENSE`.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# fg-data-profiling-wasm
|
|
2
|
+
|
|
3
|
+
Pyodide-friendly fork of [fg-data-profiling](https://github.com/Data-Centric-AI-Community/fg-data-profiling) (formerly ydata-profiling / pandas-profiling).
|
|
4
|
+
|
|
5
|
+
**You do not compile this package to WASM.** Upstream already ships as a pure-Python wheel (`py2.py3-none-any`). This fork only does dependency surgery so it can install and run under Pyodide.
|
|
6
|
+
|
|
7
|
+
## What changed vs upstream
|
|
8
|
+
|
|
9
|
+
| Change | Why |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Drop hard deps: `numba`, `minify-html`, `phik` | Native / JIT; broken or impractical in browser WASM |
|
|
12
|
+
| Default `html.minify_html = False` | Avoid lazy-importing the Rust `minify-html` extension |
|
|
13
|
+
| Soft-fail if minify is requested but missing | Safer in constrained environments |
|
|
14
|
+
| Keep `phi_k` off (already upstream default) | Avoid needing `phik` |
|
|
15
|
+
| Package name `fg-data-profiling-wasm` | Distinguish the Pyodide wheel from upstream |
|
|
16
|
+
|
|
17
|
+
Optional native extras remain under `[project.optional-dependencies] native` for desktop use.
|
|
18
|
+
|
|
19
|
+
## Layout
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
src/ # vendored upstream + patches
|
|
23
|
+
patches/ # Pyodide-friendly diffs reapplied on each sync
|
|
24
|
+
scripts/sync-upstream.sh
|
|
25
|
+
upstream.lock.json # pinned upstream ref + commit
|
|
26
|
+
pyodide/ # install helper + dependency matrix
|
|
27
|
+
pyproject.toml # Pyodide-friendly dependency set
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Upgrading from upstream
|
|
31
|
+
|
|
32
|
+
Pinned upstream lives in [`upstream.lock.json`](upstream.lock.json).
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Is upstream ahead of our lock?
|
|
36
|
+
make check-upstream
|
|
37
|
+
# or: ./scripts/sync-upstream.sh --check
|
|
38
|
+
|
|
39
|
+
# Pull latest develop (or whatever ref is in the lock), re-apply patches,
|
|
40
|
+
# refresh dependency pins, update the lockfile
|
|
41
|
+
make sync
|
|
42
|
+
# or: ./scripts/sync-upstream.sh
|
|
43
|
+
|
|
44
|
+
# Sync a release tag / other ref
|
|
45
|
+
make sync-ref REF=v4.9.0
|
|
46
|
+
# or: ./scripts/sync-upstream.sh --ref v4.9.0
|
|
47
|
+
|
|
48
|
+
# After a successful sync, bump our PyPI version
|
|
49
|
+
./scripts/sync-upstream.sh --bump patch
|
|
50
|
+
|
|
51
|
+
# If a patch no longer applies: fix src/ by hand, then regenerate the patch series
|
|
52
|
+
./scripts/sync-upstream.sh --regen-patches
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Typical release flow after upstream moves:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
./scripts/sync-upstream.sh --ref develop --bump patch
|
|
59
|
+
python -m build
|
|
60
|
+
# review git diff, commit, push, twine upload dist/*
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
A weekly GitHub Action (`.github/workflows/upstream-check.yml`) opens/comments on an issue when the lock is behind.
|
|
64
|
+
|
|
65
|
+
## Build a wheel
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python -m pip install build
|
|
69
|
+
python -m build # → dist/fg_data_profiling_wasm-*-py2.py3-none-any.whl
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Current artifact:
|
|
73
|
+
|
|
74
|
+
- `dist/fg_data_profiling_wasm-0.1.0-py2.py3-none-any.whl` (purelib; PyPI-compatible)
|
|
75
|
+
|
|
76
|
+
## Publish to PyPI (GitHub Actions)
|
|
77
|
+
|
|
78
|
+
The package is **not on PyPI yet**. Publishing is automated via [Trusted Publishing](https://docs.pypi.org/trusted-publishers/) (OIDC) — no long-lived API token in the repo.
|
|
79
|
+
|
|
80
|
+
### One-time PyPI setup
|
|
81
|
+
|
|
82
|
+
1. Sign in at https://pypi.org/
|
|
83
|
+
2. Open **Publishing** → **Add a new pending publisher** (project does not exist yet):
|
|
84
|
+
- **PyPI project name:** `fg-data-profiling-wasm`
|
|
85
|
+
- **Owner:** `awesome-wasm-packages`
|
|
86
|
+
- **Repository:** `fg-data-profiling-wasm`
|
|
87
|
+
- **Workflow name:** `publish.yml`
|
|
88
|
+
- **Environment name:** `pypi`
|
|
89
|
+
3. In GitHub → **Settings → Environments** → create environment `pypi` (optional protection rules / required reviewers).
|
|
90
|
+
|
|
91
|
+
### Publish a version
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# bump version in VERSION + pyproject.toml (or)
|
|
95
|
+
./scripts/sync-upstream.sh --bump patch
|
|
96
|
+
git add -A && git commit -m "Release $(tr -d '[:space:]' < VERSION)"
|
|
97
|
+
git tag "v$(tr -d '[:space:]' < VERSION)"
|
|
98
|
+
git push && git push --tags
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Then create a GitHub Release for that tag (or use the UI). The `Publish to PyPI` workflow builds the wheel and uploads it.
|
|
102
|
+
|
|
103
|
+
You can also run the workflow manually: **Actions → Publish to PyPI → Run workflow**.
|
|
104
|
+
|
|
105
|
+
## Use in Pyodide
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
import pyodide_js
|
|
109
|
+
await pyodide_js.loadPackage([
|
|
110
|
+
"numpy", "pandas", "scipy", "matplotlib", "statsmodels",
|
|
111
|
+
"pillow", "pywavelets", "jinja2", "pyyaml", "pydantic",
|
|
112
|
+
"tqdm", "requests", "wordcloud", "networkx", "micropip",
|
|
113
|
+
])
|
|
114
|
+
|
|
115
|
+
import micropip
|
|
116
|
+
await micropip.install([
|
|
117
|
+
"seaborn", "multimethod==1.12", "dacite", "filetype",
|
|
118
|
+
"typeguard", "imagehash==4.3.2", "visions==0.7.6", "attrs",
|
|
119
|
+
"fg-data-profiling-wasm",
|
|
120
|
+
])
|
|
121
|
+
|
|
122
|
+
import pandas as pd
|
|
123
|
+
from data_profiling import ProfileReport
|
|
124
|
+
|
|
125
|
+
df = pd.DataFrame({"a": [1, 2, 3], "b": ["x", "y", "x"]})
|
|
126
|
+
report = ProfileReport(
|
|
127
|
+
df,
|
|
128
|
+
minimal=True,
|
|
129
|
+
progress_bar=False,
|
|
130
|
+
correlations={"phi_k": {"calculate": False}},
|
|
131
|
+
html={"minify_html": False},
|
|
132
|
+
)
|
|
133
|
+
html = report.to_html()
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Helpers live in [`pyodide/install.py`](pyodide/install.py); dependency notes in [`pyodide/DEPS.md`](pyodide/DEPS.md).
|
|
137
|
+
|
|
138
|
+
## Difficulty (recap)
|
|
139
|
+
|
|
140
|
+
| Goal | Difficulty |
|
|
141
|
+
|---|---|
|
|
142
|
+
| Install this pure wheel in Pyodide | Easy |
|
|
143
|
+
| Usable `ProfileReport` (core EDA, `minimal=True`) | Medium |
|
|
144
|
+
| Full upstream fidelity (`phik`, minify, numba-shaped features) | Hard / skip |
|
|
145
|
+
|
|
146
|
+
## Upstream
|
|
147
|
+
|
|
148
|
+
Based on [Data-Centric-AI-Community/fg-data-profiling](https://github.com/Data-Centric-AI-Community/fg-data-profiling). Tracked commit is in `upstream.lock.json`. MIT-licensed; see `LICENSE`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.0
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
build-backend = "setuptools.build_meta"
|
|
3
|
+
requires = [
|
|
4
|
+
"setuptools>=72.0.0,<81.0.0",
|
|
5
|
+
"wheel>=0.38.4,<1.0.0",
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
[project]
|
|
9
|
+
name = "fg-data-profiling-wasm"
|
|
10
|
+
version = "0.1.0"
|
|
11
|
+
requires-python = ">=3.10,<3.14"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "awesome-wasm-packages" },
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{ name = "awesome-wasm-packages" },
|
|
17
|
+
]
|
|
18
|
+
description = "Pyodide-friendly fork of fg-data-profiling (ydata-profiling) for browser WASM"
|
|
19
|
+
keywords = ["pandas", "profiling", "pyodide", "wasm", "eda"]
|
|
20
|
+
readme = "README.md"
|
|
21
|
+
license = "MIT"
|
|
22
|
+
license-files = ["LICENSE"]
|
|
23
|
+
classifiers = [
|
|
24
|
+
"Development Status :: 3 - Alpha",
|
|
25
|
+
"Intended Audience :: Developers",
|
|
26
|
+
"Intended Audience :: Science/Research",
|
|
27
|
+
"Operating System :: OS Independent",
|
|
28
|
+
"Programming Language :: Python :: 3",
|
|
29
|
+
"Programming Language :: Python :: 3.10",
|
|
30
|
+
"Programming Language :: Python :: 3.11",
|
|
31
|
+
"Programming Language :: Python :: 3.12",
|
|
32
|
+
"Programming Language :: Python :: 3.13",
|
|
33
|
+
"Topic :: Scientific/Engineering",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
# Core deps synced from upstream via ./scripts/sync-upstream.sh
|
|
37
|
+
# (drops numba / minify-html / phik — see native extra).
|
|
38
|
+
# >>> upstream-deps:start
|
|
39
|
+
dependencies = [
|
|
40
|
+
"scipy>=1.8, <1.17",
|
|
41
|
+
"pandas>1.5, <3.0, !=1.4.0",
|
|
42
|
+
"matplotlib>=3.5, <=3.10",
|
|
43
|
+
"pydantic>=2, <3",
|
|
44
|
+
"PyYAML>=6.0.3, <6.1",
|
|
45
|
+
"jinja2>=3.1.6, <3.2",
|
|
46
|
+
"visions[type_image_path]>=0.7.5, <0.8.2",
|
|
47
|
+
"numpy>=1.22,<2.4",
|
|
48
|
+
"filetype>=1.0.0",
|
|
49
|
+
"requests>=2.32.0, <3",
|
|
50
|
+
"tqdm>=4.66.3, <5",
|
|
51
|
+
"seaborn>=0.10.1, <0.14",
|
|
52
|
+
"multimethod>=1.4, <2",
|
|
53
|
+
"statsmodels>=0.13.2, <1",
|
|
54
|
+
"typeguard>=4, <5",
|
|
55
|
+
"imagehash==4.3.2",
|
|
56
|
+
"wordcloud>=1.9.4",
|
|
57
|
+
"dacite>=1.9, <2",
|
|
58
|
+
]
|
|
59
|
+
# <<< upstream-deps:end
|
|
60
|
+
|
|
61
|
+
[project.optional-dependencies]
|
|
62
|
+
# Native extras — not expected to work in the browser
|
|
63
|
+
# >>> upstream-native:start
|
|
64
|
+
native = [
|
|
65
|
+
"minify-html>=0.15.0",
|
|
66
|
+
"phik>=0.12.5, <0.13",
|
|
67
|
+
"numba>=0.60,<0.63",
|
|
68
|
+
]
|
|
69
|
+
# <<< upstream-native:end
|
|
70
|
+
|
|
71
|
+
[project.urls]
|
|
72
|
+
Homepage = "https://github.com/awesome-wasm-packages/fg-data-profiling-wasm"
|
|
73
|
+
Upstream = "https://github.com/Data-Centric-AI-Community/fg-data-profiling"
|
|
74
|
+
|
|
75
|
+
[project.scripts]
|
|
76
|
+
data_profiling = "data_profiling.controller.console:main"
|
|
77
|
+
pandas_profiling = "data_profiling.controller.console:main"
|
|
78
|
+
|
|
79
|
+
[tool.setuptools]
|
|
80
|
+
include-package-data = true
|
|
81
|
+
|
|
82
|
+
[tool.setuptools.package-data]
|
|
83
|
+
data_profiling = ["py.typed", "*.yaml"]
|
|
84
|
+
|
|
85
|
+
[tool.distutils.bdist_wheel]
|
|
86
|
+
universal = true
|
|
87
|
+
|
|
88
|
+
[tool.setuptools.package-dir]
|
|
89
|
+
"" = "src"
|
|
90
|
+
|
|
91
|
+
[tool.setuptools.packages.find]
|
|
92
|
+
where = ["src"]
|
|
93
|
+
include = ["data_profiling*", "ydata_profiling*"]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Main module of data-profiling.
|
|
2
|
+
|
|
3
|
+
.. include:: ../../README.md
|
|
4
|
+
"""
|
|
5
|
+
# ignore numba warnings
|
|
6
|
+
import warnings # isort:skip # noqa
|
|
7
|
+
|
|
8
|
+
import importlib.util # isort:skip # noqa
|
|
9
|
+
from warnings import warn
|
|
10
|
+
|
|
11
|
+
from data_profiling.compare_reports import compare # isort:skip # noqa
|
|
12
|
+
from data_profiling.controller import pandas_decorator # isort:skip # noqa
|
|
13
|
+
from data_profiling.profile_report import ProfileReport # isort:skip # noqa
|
|
14
|
+
from data_profiling.version import __version__ # isort:skip # noqa
|
|
15
|
+
|
|
16
|
+
# backend
|
|
17
|
+
import data_profiling.model.pandas # isort:skip # noqa
|
|
18
|
+
|
|
19
|
+
spec = importlib.util.find_spec("pyspark")
|
|
20
|
+
if spec is not None:
|
|
21
|
+
import data_profiling.model.spark # isort:skip # noqa
|
|
22
|
+
|
|
23
|
+
spec_numba = importlib.util.find_spec("numba")
|
|
24
|
+
if spec_numba is not None:
|
|
25
|
+
from numba.core.errors import NumbaDeprecationWarning # isort:skip # noqa
|
|
26
|
+
|
|
27
|
+
warnings.simplefilter("ignore", category=NumbaDeprecationWarning)
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"pandas_decorator",
|
|
31
|
+
"ProfileReport",
|
|
32
|
+
"__version__",
|
|
33
|
+
"compare",
|
|
34
|
+
]
|