autodq 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.
- autodq-0.1.0/.github/workflows/publish-pypi.yml +71 -0
- autodq-0.1.0/.github/workflows/publish-testpypi.yml +59 -0
- autodq-0.1.0/.github/workflows/tests.yml +49 -0
- autodq-0.1.0/CHANGELOG.md +28 -0
- autodq-0.1.0/LICENSE +21 -0
- autodq-0.1.0/MANIFEST.in +16 -0
- autodq-0.1.0/PKG-INFO +267 -0
- autodq-0.1.0/README.md +224 -0
- autodq-0.1.0/docs/ADQL_SPEC.md +418 -0
- autodq-0.1.0/docs/API_REFERENCE.md +98 -0
- autodq-0.1.0/docs/ARCHITECTURE.md +23 -0
- autodq-0.1.0/docs/DECISION_LOG.md +14 -0
- autodq-0.1.0/docs/PLUGIN_GUIDE.md +0 -0
- autodq-0.1.0/docs/RELEASE_NOTES_0.1.0.md +39 -0
- autodq-0.1.0/docs/RELEASING.md +164 -0
- autodq-0.1.0/docs/RESEARCH_NOTES.md +23 -0
- autodq-0.1.0/docs/ROADMAP.md +45 -0
- autodq-0.1.0/examples/adql_demo.py +40 -0
- autodq-0.1.0/examples/dashboard_generator_demo.py +26 -0
- autodq-0.1.0/examples/interactive_cleaning_review_demo.py +80 -0
- autodq-0.1.0/examples/model_persistence_demo.py +69 -0
- autodq-0.1.0/examples/prediction_uncertainty_demo.py +52 -0
- autodq-0.1.0/examples/project_auto_demo.py +51 -0
- autodq-0.1.0/examples/rich_notebook_visualizations.py +70 -0
- autodq-0.1.0/examples/sales_analysis.adql +179 -0
- autodq-0.1.0/examples/sales_auto.adql +29 -0
- autodq-0.1.0/examples/shap_plots_demo.py +93 -0
- autodq-0.1.0/examples/workspace_demo.py +70 -0
- autodq-0.1.0/pyproject.toml +84 -0
- autodq-0.1.0/requirements-dev.txt +1 -0
- autodq-0.1.0/requirements.txt +1 -0
- autodq-0.1.0/scripts/check_distribution.py +203 -0
- autodq-0.1.0/setup.cfg +4 -0
- autodq-0.1.0/src/autodq/__init__.py +80 -0
- autodq-0.1.0/src/autodq/__main__.py +5 -0
- autodq-0.1.0/src/autodq/_version.py +3 -0
- autodq-0.1.0/src/autodq/analysis/topic_suggester.py +0 -0
- autodq-0.1.0/src/autodq/auto/__init__.py +15 -0
- autodq-0.1.0/src/autodq/auto/engine.py +628 -0
- autodq-0.1.0/src/autodq/auto/models.py +294 -0
- autodq-0.1.0/src/autodq/auto/notebook_renderer.py +90 -0
- autodq-0.1.0/src/autodq/blue/__init__.py +0 -0
- autodq-0.1.0/src/autodq/blue/engine.py +1307 -0
- autodq-0.1.0/src/autodq/blue/models.py +138 -0
- autodq-0.1.0/src/autodq/blue/prescriptions.py +262 -0
- autodq-0.1.0/src/autodq/blue/visual_interpreter.py +443 -0
- autodq-0.1.0/src/autodq/blue/visualizer.py +267 -0
- autodq-0.1.0/src/autodq/cleaning/__init__.py +0 -0
- autodq-0.1.0/src/autodq/cleaning/engine.py +117 -0
- autodq-0.1.0/src/autodq/cli.py +1575 -0
- autodq-0.1.0/src/autodq/commands/__init__.py +43 -0
- autodq-0.1.0/src/autodq/commands/cells.py +121 -0
- autodq-0.1.0/src/autodq/commands/errors.py +23 -0
- autodq-0.1.0/src/autodq/commands/executor.py +1061 -0
- autodq-0.1.0/src/autodq/commands/grammar.py +356 -0
- autodq-0.1.0/src/autodq/commands/models.py +421 -0
- autodq-0.1.0/src/autodq/commands/parser.py +1434 -0
- autodq-0.1.0/src/autodq/commands/runner.py +305 -0
- autodq-0.1.0/src/autodq/commands/validator.py +297 -0
- autodq-0.1.0/src/autodq/core/config.py +0 -0
- autodq-0.1.0/src/autodq/core/project.py +2781 -0
- autodq-0.1.0/src/autodq/core/session.py +126 -0
- autodq-0.1.0/src/autodq/core/state.py +79 -0
- autodq-0.1.0/src/autodq/core/types.py +0 -0
- autodq-0.1.0/src/autodq/correlation/__init__.py +0 -0
- autodq-0.1.0/src/autodq/correlation/engine.py +296 -0
- autodq-0.1.0/src/autodq/correlation/models.py +84 -0
- autodq-0.1.0/src/autodq/dashboard/__init__.py +6 -0
- autodq-0.1.0/src/autodq/dashboard/engine.py +457 -0
- autodq-0.1.0/src/autodq/dashboard/html_renderer.py +634 -0
- autodq-0.1.0/src/autodq/dashboard/models.py +242 -0
- autodq-0.1.0/src/autodq/datasets/__init__.py +0 -0
- autodq-0.1.0/src/autodq/datasets/manager.py +137 -0
- autodq-0.1.0/src/autodq/datasets/merger.py +363 -0
- autodq-0.1.0/src/autodq/datasets/models.py +99 -0
- autodq-0.1.0/src/autodq/decision/__init__.py +0 -0
- autodq-0.1.0/src/autodq/decision/engine.py +72 -0
- autodq-0.1.0/src/autodq/diagnosis/__init__.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/cardinality.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/constants.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/datatypes.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/duplicates.py +38 -0
- autodq-0.1.0/src/autodq/diagnosis/engine.py +160 -0
- autodq-0.1.0/src/autodq/diagnosis/leakage.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/missingness.py +51 -0
- autodq-0.1.0/src/autodq/diagnosis/outliers.py +67 -0
- autodq-0.1.0/src/autodq/diagnosis/quality_score.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/recommendations.py +0 -0
- autodq-0.1.0/src/autodq/diagnosis/skewness.py +0 -0
- autodq-0.1.0/src/autodq/explainability/__init__.py +0 -0
- autodq-0.1.0/src/autodq/explainability/engine.py +826 -0
- autodq-0.1.0/src/autodq/explainability/models.py +140 -0
- autodq-0.1.0/src/autodq/explainability/shap_visualizer.py +244 -0
- autodq-0.1.0/src/autodq/features/__init__.py +0 -0
- autodq-0.1.0/src/autodq/features/engine.py +584 -0
- autodq-0.1.0/src/autodq/features/models.py +46 -0
- autodq-0.1.0/src/autodq/interpretation/__init__.py +0 -0
- autodq-0.1.0/src/autodq/interpretation/engine.py +32 -0
- autodq-0.1.0/src/autodq/interpretation/models.py +41 -0
- autodq-0.1.0/src/autodq/interpretation/statistics.py +169 -0
- autodq-0.1.0/src/autodq/io/loaders.py +46 -0
- autodq-0.1.0/src/autodq/knowledge/__init__.py +0 -0
- autodq-0.1.0/src/autodq/knowledge/engine.py +29 -0
- autodq-0.1.0/src/autodq/knowledge/library.py +83 -0
- autodq-0.1.0/src/autodq/knowledge/rules.py +28 -0
- autodq-0.1.0/src/autodq/ml/__init__.py +0 -0
- autodq-0.1.0/src/autodq/ml/engine.py +361 -0
- autodq-0.1.0/src/autodq/ml/evaluator.py +147 -0
- autodq-0.1.0/src/autodq/ml/model_selector.py +62 -0
- autodq-0.1.0/src/autodq/ml/models.py +134 -0
- autodq-0.1.0/src/autodq/ml/preprocessing.py +58 -0
- autodq-0.1.0/src/autodq/ml/trainer.py +58 -0
- autodq-0.1.0/src/autodq/ml_readiness/__init__.py +0 -0
- autodq-0.1.0/src/autodq/ml_readiness/engine.py +274 -0
- autodq-0.1.0/src/autodq/ml_readiness/models.py +49 -0
- autodq-0.1.0/src/autodq/modeling/evaluator.py +0 -0
- autodq-0.1.0/src/autodq/modeling/task_detector.py +0 -0
- autodq-0.1.0/src/autodq/models/__init__.py +0 -0
- autodq-0.1.0/src/autodq/models/cleaning.py +48 -0
- autodq-0.1.0/src/autodq/models/issues.py +21 -0
- autodq-0.1.0/src/autodq/models/preview.py +33 -0
- autodq-0.1.0/src/autodq/models/recommendations.py +25 -0
- autodq-0.1.0/src/autodq/models/report.py +37 -0
- autodq-0.1.0/src/autodq/models/reports.py +58 -0
- autodq-0.1.0/src/autodq/models/validation.py +51 -0
- autodq-0.1.0/src/autodq/models/visuals.py +23 -0
- autodq-0.1.0/src/autodq/persistence/__init__.py +8 -0
- autodq-0.1.0/src/autodq/persistence/engine.py +400 -0
- autodq-0.1.0/src/autodq/persistence/models.py +101 -0
- autodq-0.1.0/src/autodq/plugins/__init__.py +0 -0
- autodq-0.1.0/src/autodq/plugins/manager.py +30 -0
- autodq-0.1.0/src/autodq/plugins/types.py +9 -0
- autodq-0.1.0/src/autodq/prediction/__init__.py +0 -0
- autodq-0.1.0/src/autodq/prediction/engine.py +552 -0
- autodq-0.1.0/src/autodq/prediction/models.py +105 -0
- autodq-0.1.0/src/autodq/preview/__init__.py +0 -0
- autodq-0.1.0/src/autodq/preview/engine.py +97 -0
- autodq-0.1.0/src/autodq/profiling/profiler.py +26 -0
- autodq-0.1.0/src/autodq/profiling/summaries.py +0 -0
- autodq-0.1.0/src/autodq/recommendations/__init__.py +0 -0
- autodq-0.1.0/src/autodq/recommendations/engine.py +282 -0
- autodq-0.1.0/src/autodq/recommendations/rules.py +0 -0
- autodq-0.1.0/src/autodq/renderers/__init__.py +0 -0
- autodq-0.1.0/src/autodq/renderers/console/__init__.py +0 -0
- autodq-0.1.0/src/autodq/renderers/console/blue.py +81 -0
- autodq-0.1.0/src/autodq/renderers/console/cleaning.py +21 -0
- autodq-0.1.0/src/autodq/renderers/console/correlation.py +36 -0
- autodq-0.1.0/src/autodq/renderers/console/datasets.py +66 -0
- autodq-0.1.0/src/autodq/renderers/console/diagnosis.py +27 -0
- autodq-0.1.0/src/autodq/renderers/console/features.py +20 -0
- autodq-0.1.0/src/autodq/renderers/console/interpretation.py +30 -0
- autodq-0.1.0/src/autodq/renderers/console/ml_readiness.py +30 -0
- autodq-0.1.0/src/autodq/renderers/console/model.py +64 -0
- autodq-0.1.0/src/autodq/renderers/console/prediction.py +190 -0
- autodq-0.1.0/src/autodq/renderers/console/preview.py +49 -0
- autodq-0.1.0/src/autodq/renderers/console/profile.py +25 -0
- autodq-0.1.0/src/autodq/renderers/console/recommendations.py +24 -0
- autodq-0.1.0/src/autodq/renderers/console/statistics.py +25 -0
- autodq-0.1.0/src/autodq/renderers/console/validation.py +23 -0
- autodq-0.1.0/src/autodq/renderers/console/visualization.py +21 -0
- autodq-0.1.0/src/autodq/reporting/__init__.py +0 -0
- autodq-0.1.0/src/autodq/reporting/engine.py +78 -0
- autodq-0.1.0/src/autodq/reporting/html_exporter.py +2374 -0
- autodq-0.1.0/src/autodq/reporting/html_report.py +0 -0
- autodq-0.1.0/src/autodq/reporting/json_exporter.py +103 -0
- autodq-0.1.0/src/autodq/reporting/markdown_report.py +0 -0
- autodq-0.1.0/src/autodq/review/__init__.py +25 -0
- autodq-0.1.0/src/autodq/review/engine.py +1014 -0
- autodq-0.1.0/src/autodq/review/models.py +456 -0
- autodq-0.1.0/src/autodq/review/notebook_renderer.py +239 -0
- autodq-0.1.0/src/autodq/semantics/__init__.py +0 -0
- autodq-0.1.0/src/autodq/semantics/base.py +17 -0
- autodq-0.1.0/src/autodq/semantics/detectors/__init__.py +0 -0
- autodq-0.1.0/src/autodq/semantics/detectors/categorical.py +42 -0
- autodq-0.1.0/src/autodq/semantics/detectors/datetime.py +46 -0
- autodq-0.1.0/src/autodq/semantics/detectors/identifier.py +33 -0
- autodq-0.1.0/src/autodq/semantics/detectors/numeric.py +60 -0
- autodq-0.1.0/src/autodq/semantics/engine.py +70 -0
- autodq-0.1.0/src/autodq/semantics/inference.py +3 -0
- autodq-0.1.0/src/autodq/semantics/prediction.py +17 -0
- autodq-0.1.0/src/autodq/semantics/registry.py +29 -0
- autodq-0.1.0/src/autodq/statistics/__init__.py +0 -0
- autodq-0.1.0/src/autodq/statistics/assumptions.py +0 -0
- autodq-0.1.0/src/autodq/statistics/correlation.py +0 -0
- autodq-0.1.0/src/autodq/statistics/descriptive.py +78 -0
- autodq-0.1.0/src/autodq/statistics/distribution.py +120 -0
- autodq-0.1.0/src/autodq/statistics/engine.py +34 -0
- autodq-0.1.0/src/autodq/statistics/models.py +122 -0
- autodq-0.1.0/src/autodq/statistics/report.py +0 -0
- autodq-0.1.0/src/autodq/statistics/summary.py +0 -0
- autodq-0.1.0/src/autodq/uncertainty/__init__.py +4 -0
- autodq-0.1.0/src/autodq/uncertainty/engine.py +244 -0
- autodq-0.1.0/src/autodq/uncertainty/models.py +67 -0
- autodq-0.1.0/src/autodq/utils/__init__.py +0 -0
- autodq-0.1.0/src/autodq/utils/helpers.py +21 -0
- autodq-0.1.0/src/autodq/utils/ml_formatting.py +36 -0
- autodq-0.1.0/src/autodq/validation/__init__.py +0 -0
- autodq-0.1.0/src/autodq/validation/engine.py +43 -0
- autodq-0.1.0/src/autodq/visualization/__init__.py +13 -0
- autodq-0.1.0/src/autodq/visualization/charts.py +0 -0
- autodq-0.1.0/src/autodq/visualization/engine.py +458 -0
- autodq-0.1.0/src/autodq/visualization/gallery.py +132 -0
- autodq-0.1.0/src/autodq/visualization/models.py +345 -0
- autodq-0.1.0/src/autodq/visualization/notebook_renderer.py +232 -0
- autodq-0.1.0/src/autodq/visualization/recommender.py +0 -0
- autodq-0.1.0/src/autodq/visualization/renderers/__init__.py +5 -0
- autodq-0.1.0/src/autodq/visualization/renderers/matplotlib_renderer.py +723 -0
- autodq-0.1.0/src/autodq/visualization/tweaks.py +0 -0
- autodq-0.1.0/src/autodq/vscode/__init__.py +45 -0
- autodq-0.1.0/src/autodq/vscode/extension/README.md +33 -0
- autodq-0.1.0/src/autodq/vscode/extension/extension.js +373 -0
- autodq-0.1.0/src/autodq/vscode/extension/icons/adql-dark.svg +4 -0
- autodq-0.1.0/src/autodq/vscode/extension/icons/adql-light.svg +4 -0
- autodq-0.1.0/src/autodq/vscode/extension/language-configuration.json +27 -0
- autodq-0.1.0/src/autodq/vscode/extension/package.json +108 -0
- autodq-0.1.0/src/autodq/vscode/extension/syntaxes/adql.tmLanguage.json +59 -0
- autodq-0.1.0/src/autodq/workspaces/__init__.py +15 -0
- autodq-0.1.0/src/autodq/workspaces/manager.py +497 -0
- autodq-0.1.0/src/autodq/workspaces/models.py +265 -0
- autodq-0.1.0/src/autodq.egg-info/PKG-INFO +267 -0
- autodq-0.1.0/src/autodq.egg-info/SOURCES.txt +236 -0
- autodq-0.1.0/src/autodq.egg-info/dependency_links.txt +1 -0
- autodq-0.1.0/src/autodq.egg-info/entry_points.txt +2 -0
- autodq-0.1.0/src/autodq.egg-info/requires.txt +17 -0
- autodq-0.1.0/src/autodq.egg-info/top_level.txt +1 -0
- autodq-0.1.0/tests/test_adql_files_cli.py +656 -0
- autodq-0.1.0/tests/test_cleaning_review.py +353 -0
- autodq-0.1.0/tests/test_commands.py +584 -0
- autodq-0.1.0/tests/test_dashboard_generator.py +358 -0
- autodq-0.1.0/tests/test_loader.py +0 -0
- autodq-0.1.0/tests/test_model_persistence.py +232 -0
- autodq-0.1.0/tests/test_packaging.py +174 -0
- autodq-0.1.0/tests/test_prediction_uncertainty.py +265 -0
- autodq-0.1.0/tests/test_profiler.py +0 -0
- autodq-0.1.0/tests/test_project_auto.py +313 -0
- autodq-0.1.0/tests/test_rich_visualizations.py +265 -0
- autodq-0.1.0/tests/test_shap_plots.py +287 -0
- autodq-0.1.0/tests/test_workspaces.py +234 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: Version to verify and publish
|
|
8
|
+
required: true
|
|
9
|
+
default: "0.1.0"
|
|
10
|
+
type: string
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Verify and build AutoDQ ${{ inputs.version }}
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
env:
|
|
19
|
+
EXPECTED_VERSION: ${{ inputs.version }}
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
- uses: actions/setup-python@v6
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.13"
|
|
26
|
+
cache: pip
|
|
27
|
+
- name: Install AutoDQ and release tools
|
|
28
|
+
run: python -m pip install -e ".[dev]"
|
|
29
|
+
- name: Verify requested version
|
|
30
|
+
run: >-
|
|
31
|
+
python -c "import os; from autodq import __version__;
|
|
32
|
+
expected = os.environ['EXPECTED_VERSION'];
|
|
33
|
+
assert __version__ == expected,
|
|
34
|
+
f'Expected {expected}, found {__version__}'"
|
|
35
|
+
- name: Run acceptance suite
|
|
36
|
+
run: |
|
|
37
|
+
python -m unittest discover -s tests
|
|
38
|
+
autodq --version
|
|
39
|
+
autodq validate examples/sales_analysis.adql
|
|
40
|
+
autodq validate examples/sales_auto.adql
|
|
41
|
+
- name: Build distributions
|
|
42
|
+
run: python -m build
|
|
43
|
+
- name: Inspect distributions
|
|
44
|
+
run: |
|
|
45
|
+
python -m twine check dist/*
|
|
46
|
+
python scripts/check_distribution.py dist
|
|
47
|
+
- name: Store verified distributions
|
|
48
|
+
uses: actions/upload-artifact@v7
|
|
49
|
+
with:
|
|
50
|
+
name: autodq-${{ inputs.version }}-distributions
|
|
51
|
+
path: dist/
|
|
52
|
+
if-no-files-found: error
|
|
53
|
+
|
|
54
|
+
publish:
|
|
55
|
+
name: Publish AutoDQ ${{ inputs.version }} to PyPI
|
|
56
|
+
needs: build
|
|
57
|
+
runs-on: ubuntu-latest
|
|
58
|
+
environment:
|
|
59
|
+
name: pypi
|
|
60
|
+
url: https://pypi.org/p/autodq
|
|
61
|
+
permissions:
|
|
62
|
+
id-token: write
|
|
63
|
+
|
|
64
|
+
steps:
|
|
65
|
+
- name: Download verified distributions
|
|
66
|
+
uses: actions/download-artifact@v8
|
|
67
|
+
with:
|
|
68
|
+
name: autodq-${{ inputs.version }}-distributions
|
|
69
|
+
path: dist/
|
|
70
|
+
- name: Publish distributions to PyPI
|
|
71
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Publish to TestPyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
build:
|
|
8
|
+
name: Build and verify distributions
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v6
|
|
15
|
+
- uses: actions/setup-python@v6
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.13"
|
|
18
|
+
cache: pip
|
|
19
|
+
- name: Install AutoDQ and release tools
|
|
20
|
+
run: python -m pip install -e ".[dev]"
|
|
21
|
+
- name: Run acceptance suite
|
|
22
|
+
run: |
|
|
23
|
+
python -m unittest discover -s tests
|
|
24
|
+
autodq --version
|
|
25
|
+
autodq validate examples/sales_analysis.adql
|
|
26
|
+
autodq validate examples/sales_auto.adql
|
|
27
|
+
- name: Build distributions
|
|
28
|
+
run: python -m build
|
|
29
|
+
- name: Inspect distributions
|
|
30
|
+
run: |
|
|
31
|
+
python -m twine check dist/*
|
|
32
|
+
python scripts/check_distribution.py dist
|
|
33
|
+
- name: Store distributions
|
|
34
|
+
uses: actions/upload-artifact@v7
|
|
35
|
+
with:
|
|
36
|
+
name: python-package-distributions
|
|
37
|
+
path: dist/
|
|
38
|
+
if-no-files-found: error
|
|
39
|
+
|
|
40
|
+
publish:
|
|
41
|
+
name: Publish AutoDQ 0.1.0 to TestPyPI
|
|
42
|
+
needs: build
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
environment:
|
|
45
|
+
name: testpypi
|
|
46
|
+
url: https://test.pypi.org/p/autodq
|
|
47
|
+
permissions:
|
|
48
|
+
id-token: write
|
|
49
|
+
|
|
50
|
+
steps:
|
|
51
|
+
- name: Download distributions
|
|
52
|
+
uses: actions/download-artifact@v8
|
|
53
|
+
with:
|
|
54
|
+
name: python-package-distributions
|
|
55
|
+
path: dist/
|
|
56
|
+
- name: Publish distributions to TestPyPI
|
|
57
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
58
|
+
with:
|
|
59
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
compatibility:
|
|
10
|
+
runs-on: ${{ matrix.os }}
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
15
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
- uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
cache: pip
|
|
23
|
+
- name: Install AutoDQ and release tools
|
|
24
|
+
run: python -m pip install -e ".[dev]"
|
|
25
|
+
- name: Run test suite
|
|
26
|
+
run: python -m unittest discover -s tests
|
|
27
|
+
- name: Verify command line and ADQL
|
|
28
|
+
run: |
|
|
29
|
+
autodq --version
|
|
30
|
+
autodq validate examples/sales_analysis.adql
|
|
31
|
+
autodq validate examples/sales_auto.adql
|
|
32
|
+
|
|
33
|
+
distribution:
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
needs: compatibility
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v6
|
|
38
|
+
- uses: actions/setup-python@v6
|
|
39
|
+
with:
|
|
40
|
+
python-version: "3.13"
|
|
41
|
+
cache: pip
|
|
42
|
+
- name: Install release tools
|
|
43
|
+
run: python -m pip install -e ".[dev]"
|
|
44
|
+
- name: Build distributions
|
|
45
|
+
run: python -m build
|
|
46
|
+
- name: Inspect distributions
|
|
47
|
+
run: |
|
|
48
|
+
python -m twine check dist/*
|
|
49
|
+
python scripts/check_distribution.py dist
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable AutoDQ changes are recorded here. Versions follow semantic
|
|
4
|
+
versioning and Python package releases follow PEP 440.
|
|
5
|
+
|
|
6
|
+
## 0.1.0 - 2026-07-22
|
|
7
|
+
|
|
8
|
+
Initial alpha release candidate.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- End-to-end profiling, diagnosis, recommendations, interactive cleaning, and validation.
|
|
13
|
+
- Feature engineering, regression and classification, prediction uncertainty, SHAP explanations, and BLUE diagnostics.
|
|
14
|
+
- Reusable visualizations, galleries, reports, and standalone HTML dashboards.
|
|
15
|
+
- Multi-workspace projects, multi-dataset operations, and model persistence.
|
|
16
|
+
- `project.auto()` review, clean, and full workflow presets.
|
|
17
|
+
- ADQL as a standalone cell-based language with rich VS Code notebook output.
|
|
18
|
+
- ADQL `AUTO` support with full public workflow options and rich stage summaries.
|
|
19
|
+
- Command-line tools, bundled VS Code extension and `.adql` icons, wheel and source distributions.
|
|
20
|
+
- Automated compatibility matrix configured for Python 3.10–3.13 on Linux,
|
|
21
|
+
macOS, and Windows.
|
|
22
|
+
- Tokenless TestPyPI publishing workflow using GitHub Trusted Publishing.
|
|
23
|
+
- Protected, version-gated production PyPI Trusted Publishing workflow.
|
|
24
|
+
|
|
25
|
+
### Release status
|
|
26
|
+
|
|
27
|
+
- Local wheel and source-distribution checks pass.
|
|
28
|
+
- TestPyPI and PyPI publication remain deliberate external release steps.
|
autodq-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Joseph Ubani
|
|
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.
|
autodq-0.1.0/MANIFEST.in
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
include LICENSE
|
|
2
|
+
include CHANGELOG.md
|
|
3
|
+
include README.md
|
|
4
|
+
include pyproject.toml
|
|
5
|
+
include requirements.txt
|
|
6
|
+
include requirements-dev.txt
|
|
7
|
+
|
|
8
|
+
recursive-include docs *.md
|
|
9
|
+
recursive-include examples *.adql *.py
|
|
10
|
+
recursive-include .github *.yml
|
|
11
|
+
recursive-include scripts *.py
|
|
12
|
+
recursive-include tests *.py
|
|
13
|
+
|
|
14
|
+
global-exclude *.py[cod]
|
|
15
|
+
global-exclude __pycache__
|
|
16
|
+
global-exclude .DS_Store
|
autodq-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: autodq
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: AutoDQ Analytics: Automated Data Quality, Cleaning, Visualization, and Reporting Framework
|
|
5
|
+
Author: Joseph Ubani
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/josephubani/autodq-analytics
|
|
8
|
+
Project-URL: Issues, https://github.com/josephubani/autodq-analytics/issues
|
|
9
|
+
Project-URL: Repository, https://github.com/josephubani/autodq-analytics.git
|
|
10
|
+
Keywords: analytics,data-cleaning,data-quality,data-science,machine-learning
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Education
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: joblib>=1.3
|
|
29
|
+
Requires-Dist: matplotlib>=3.7
|
|
30
|
+
Requires-Dist: numpy>=1.24
|
|
31
|
+
Requires-Dist: openpyxl>=3.1
|
|
32
|
+
Requires-Dist: pandas>=2.0
|
|
33
|
+
Requires-Dist: scikit-learn>=1.3
|
|
34
|
+
Requires-Dist: scipy>=1.10
|
|
35
|
+
Requires-Dist: shap>=0.44
|
|
36
|
+
Requires-Dist: statsmodels>=0.14
|
|
37
|
+
Requires-Dist: xlrd>=2.0.1
|
|
38
|
+
Provides-Extra: dev
|
|
39
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
40
|
+
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "dev"
|
|
41
|
+
Requires-Dist: twine>=6.0; extra == "dev"
|
|
42
|
+
Dynamic: license-file
|
|
43
|
+
|
|
44
|
+
# AutoDQ Analytics
|
|
45
|
+
|
|
46
|
+
AutoDQ is an end-to-end analytics workflow framework for tabular data. It
|
|
47
|
+
profiles datasets, diagnoses quality problems, recommends and reviews cleaning
|
|
48
|
+
actions, engineers features, trains explainable models, generates
|
|
49
|
+
visualizations and dashboards, and runs complete workflows from Python,
|
|
50
|
+
Jupyter, the command line, or standalone `.adql` notebooks.
|
|
51
|
+
|
|
52
|
+
## Highlights
|
|
53
|
+
|
|
54
|
+
- CSV, XLSX, and XLS dataset loading
|
|
55
|
+
- Dataset profiling, semantic inference, and quality scoring
|
|
56
|
+
- Missing-value, duplicate, outlier, datatype, and leakage diagnosis
|
|
57
|
+
- Knowledge-aware cleaning recommendations and approval workflows
|
|
58
|
+
- Manual row editing, domain validation, outlier treatment, and audit trails
|
|
59
|
+
- Descriptive statistics, distribution analysis, and correlations
|
|
60
|
+
- Feature engineering and ML-readiness analysis
|
|
61
|
+
- Regression and classification with prediction uncertainty
|
|
62
|
+
- SHAP explanations and publication-ready SHAP plots
|
|
63
|
+
- BLUE regression diagnostics, visual interpretation, and prescriptions
|
|
64
|
+
- Reusable visualization objects, galleries, HTML reports, and dashboards
|
|
65
|
+
- Multi-workspace project isolation and model persistence
|
|
66
|
+
- `project.auto()` for an automated workflow
|
|
67
|
+
- ADQL files with executable notebook cells and rich VS Code output
|
|
68
|
+
|
|
69
|
+
## Requirements
|
|
70
|
+
|
|
71
|
+
- Python 3.10 or newer
|
|
72
|
+
- macOS, Linux, or Windows
|
|
73
|
+
|
|
74
|
+
## Installation
|
|
75
|
+
|
|
76
|
+
Install the released package from PyPI:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python -m pip install autodq
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Until the first PyPI release, install directly from the project source:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
git clone https://github.com/josephubani/autodq-analytics.git
|
|
86
|
+
cd autodq-analytics
|
|
87
|
+
python -m venv .venv
|
|
88
|
+
source .venv/bin/activate
|
|
89
|
+
python -m pip install .
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
On Windows PowerShell, activate the environment with:
|
|
93
|
+
|
|
94
|
+
```powershell
|
|
95
|
+
.venv\Scripts\Activate.ps1
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
For editable development and release tools:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
python -m pip install -e ".[dev]"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Python quick start
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
from autodq import AutoDQ
|
|
108
|
+
|
|
109
|
+
project = AutoDQ("datasets/sample/sales.csv", target="Revenue")
|
|
110
|
+
|
|
111
|
+
profile = project.profile()
|
|
112
|
+
diagnosis = project.diagnose()
|
|
113
|
+
recommendations = project.recommend()
|
|
114
|
+
review = project.review_cleaning()
|
|
115
|
+
|
|
116
|
+
review.approve_all()
|
|
117
|
+
project.clean()
|
|
118
|
+
validation = project.validate_cleaning()
|
|
119
|
+
|
|
120
|
+
chart = project.visualize(
|
|
121
|
+
chart="bar",
|
|
122
|
+
x="Region",
|
|
123
|
+
y="Revenue",
|
|
124
|
+
title="Revenue by Region",
|
|
125
|
+
x_label="Region",
|
|
126
|
+
y_label="Average revenue",
|
|
127
|
+
theme="journal",
|
|
128
|
+
)
|
|
129
|
+
chart.show()
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## ADQL notebooks
|
|
133
|
+
|
|
134
|
+
ADQL is AutoDQ's standalone analytics language. A `.adql` file can contain
|
|
135
|
+
named executable cells and markdown cells, while retaining project state
|
|
136
|
+
between executions.
|
|
137
|
+
|
|
138
|
+
```adql
|
|
139
|
+
# %% [Dataset]
|
|
140
|
+
DATASET "sales.csv" TARGET Revenue;
|
|
141
|
+
|
|
142
|
+
# %% [Data quality]
|
|
143
|
+
PROFILE;
|
|
144
|
+
DIAGNOSE;
|
|
145
|
+
RECOMMEND;
|
|
146
|
+
|
|
147
|
+
# %% [Regional analysis]
|
|
148
|
+
SELECT Region,
|
|
149
|
+
SUM(Revenue) AS total_revenue,
|
|
150
|
+
COUNT(*) AS transactions
|
|
151
|
+
FROM CURRENT
|
|
152
|
+
GROUP BY Region
|
|
153
|
+
ORDER BY total_revenue DESC;
|
|
154
|
+
|
|
155
|
+
# %% [Visualization]
|
|
156
|
+
VISUALIZE bar X Region Y Revenue
|
|
157
|
+
TITLE "Revenue by Region"
|
|
158
|
+
THEME journal;
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Run the same automatic workflow available as `project.auto()` directly from
|
|
162
|
+
an ADQL cell:
|
|
163
|
+
|
|
164
|
+
```adql
|
|
165
|
+
# %% [Automatic workflow]
|
|
166
|
+
AUTO MODE full
|
|
167
|
+
VISUALIZE true
|
|
168
|
+
APPLY_FEATURES true
|
|
169
|
+
ALGORITHM random_forest_regressor
|
|
170
|
+
REPORT "reports/auto-report.html"
|
|
171
|
+
CONTINUE_ON_ERROR true;
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`review` mode analyzes data and prepares cleaning actions without applying
|
|
175
|
+
them. `clean` applies approved cleaning actions. `full` continues through
|
|
176
|
+
modeling, prediction, and explainability when a target is available. The ADQL
|
|
177
|
+
notebook renders the automatic stages, status, timing, and next actions as a
|
|
178
|
+
collapsible rich result.
|
|
179
|
+
|
|
180
|
+
Run the file from a terminal:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
autodq run analysis.adql
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Inspect or validate cells without executing the workflow:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
autodq cells analysis.adql
|
|
190
|
+
autodq validate analysis.adql
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Run through a particular cell:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
autodq run analysis.adql --through-cell 3
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## VS Code support
|
|
200
|
+
|
|
201
|
+
The Python distribution bundles the AutoDQ ADQL extension. Install it with:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
autodq vscode install
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Reload VS Code after installation. `.adql` files then receive syntax
|
|
208
|
+
highlighting, named notebook cells, rich tables and charts, cell-by-cell
|
|
209
|
+
execution, and an AutoDQ file icon.
|
|
210
|
+
|
|
211
|
+
## Command-line interface
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
autodq --version
|
|
215
|
+
autodq run workflow.adql
|
|
216
|
+
autodq validate workflow.adql
|
|
217
|
+
autodq cells workflow.adql
|
|
218
|
+
autodq vscode path
|
|
219
|
+
autodq vscode install
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
The package can also be executed as a Python module:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
python -m autodq --version
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Development
|
|
229
|
+
|
|
230
|
+
Run the test suite:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
python -m unittest discover -s tests
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
References: [Python API](docs/API_REFERENCE.md),
|
|
237
|
+
[ADQL language](docs/ADQL_SPEC.md), [release guide](docs/RELEASING.md), and
|
|
238
|
+
[changelog](CHANGELOG.md).
|
|
239
|
+
|
|
240
|
+
Build and verify release artifacts:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
python -m build
|
|
244
|
+
python -m twine check dist/*
|
|
245
|
+
python scripts/check_distribution.py dist
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
For the complete release process, see the
|
|
249
|
+
[AutoDQ release guide](https://github.com/josephubani/autodq-analytics/blob/main/docs/RELEASING.md).
|
|
250
|
+
|
|
251
|
+
## Documentation
|
|
252
|
+
|
|
253
|
+
- [ADQL language reference](https://github.com/josephubani/autodq-analytics/blob/main/docs/ADQL_SPEC.md)
|
|
254
|
+
- [System architecture](https://github.com/josephubani/autodq-analytics/blob/main/docs/ARCHITECTURE.md)
|
|
255
|
+
- [Plugin development](https://github.com/josephubani/autodq-analytics/blob/main/docs/PLUGIN_GUIDE.md)
|
|
256
|
+
- [Project roadmap](https://github.com/josephubani/autodq-analytics/blob/main/docs/ROADMAP.md)
|
|
257
|
+
- [Package and release procedure](https://github.com/josephubani/autodq-analytics/blob/main/docs/RELEASING.md)
|
|
258
|
+
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
AutoDQ is released under the
|
|
262
|
+
[MIT License](https://github.com/josephubani/autodq-analytics/blob/main/LICENSE).
|
|
263
|
+
|
|
264
|
+
## Author
|
|
265
|
+
|
|
266
|
+
Joseph Ubani
|
|
267
|
+
Master of Data Analytics, University of Niagara Falls Canada
|