From a050fd630afe59060e5e675bc0c2b4042502f7d7 Mon Sep 17 00:00:00 2001 From: UrbanoFonseca Date: Thu, 9 Sep 2021 11:53:31 +0100 Subject: [PATCH 1/2] chore(docs): setup automatic documentation --- docs/Makefile | 20 +++++++++++ docs/bias_fairness.rst | 8 +++++ docs/conf.py | 59 +++++++++++++++++++++++++++++++++ docs/data_expectations.rst | 8 +++++ docs/data_quality.rst | 7 ++++ docs/drift.rst | 8 +++++ docs/duplicates.rst | 8 +++++ docs/index.rst | 23 +++++++++++++ docs/labelling.rst | 14 ++++++++ docs/make.bat | 35 +++++++++++++++++++ docs/missings.rst | 8 +++++ docs/valued_missing_values.rst | 8 +++++ docs/warnings.rst | 30 +++++++++++++++++ docs/ydata_logo.png | Bin 0 -> 8124 bytes requirements-dev.txt | 3 +- 15 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 docs/Makefile create mode 100644 docs/bias_fairness.rst create mode 100644 docs/conf.py create mode 100644 docs/data_expectations.rst create mode 100644 docs/data_quality.rst create mode 100644 docs/drift.rst create mode 100644 docs/duplicates.rst create mode 100644 docs/index.rst create mode 100644 docs/labelling.rst create mode 100644 docs/make.bat create mode 100644 docs/missings.rst create mode 100644 docs/valued_missing_values.rst create mode 100644 docs/warnings.rst create mode 100644 docs/ydata_logo.png diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..d4bb2cbb --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/bias_fairness.rst b/docs/bias_fairness.rst new file mode 100644 index 00000000..9173f55f --- /dev/null +++ b/docs/bias_fairness.rst @@ -0,0 +1,8 @@ +.. +Bias & Fairness +========================================= + +.. automodule:: ydata_quality.bias_fairness + :members: + :noindex: + diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..53360776 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,59 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('./src/ydata-quality')) + + +# -- Project information ----------------------------------------------------- + +project = 'ydata-quality' +copyright = '2021, YData' +author = 'YData' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage', 'sphinx.ext.napoleon'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# -- Napoleon configuration --------------------------------------------------- +napoleon_google_docstring = True +napoleon_numpy_docstring = False + + +# -- YData configuration ------------------------------------------------------ +html_logo = 'ydata_logo.png' diff --git a/docs/data_expectations.rst b/docs/data_expectations.rst new file mode 100644 index 00000000..ec384261 --- /dev/null +++ b/docs/data_expectations.rst @@ -0,0 +1,8 @@ +.. +Data Expectations +========================================= + +.. automodule:: ydata_quality.data_expectations + :members: + :noindex: + diff --git a/docs/data_quality.rst b/docs/data_quality.rst new file mode 100644 index 00000000..1cc46f8f --- /dev/null +++ b/docs/data_quality.rst @@ -0,0 +1,7 @@ +.. +Data Quality +========================================= + +.. automodule:: ydata_quality.core.data_quality + :members: + :noindex: diff --git a/docs/drift.rst b/docs/drift.rst new file mode 100644 index 00000000..ee72faaf --- /dev/null +++ b/docs/drift.rst @@ -0,0 +1,8 @@ +.. +Drift Analysis +========================================= + +.. automodule:: ydata_quality.drift + :members: + :noindex: + diff --git a/docs/duplicates.rst b/docs/duplicates.rst new file mode 100644 index 00000000..77579127 --- /dev/null +++ b/docs/duplicates.rst @@ -0,0 +1,8 @@ +.. +Duplicates +========================================= + +.. automodule:: ydata_quality.duplicates + :members: + :noindex: + diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..7e516b89 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,23 @@ +.. ydata-quality documentation master file, created by + sphinx-quickstart on Wed Sep 8 23:46:14 2021. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ydata-quality's documentation! +========================================= + +.. toctree:: + :maxdepth: 2 + :caption: Core: + + data_quality + bias_fairness + data_expectations + drift + duplicates + labelling + missings + valued_missing_values + + + diff --git a/docs/labelling.rst b/docs/labelling.rst new file mode 100644 index 00000000..cee54ad7 --- /dev/null +++ b/docs/labelling.rst @@ -0,0 +1,14 @@ +.. +Labelling +========================================= + +.. automodule:: ydata_quality.labelling + :members: + :noindex: + +.. autoclass:: ydata_quality.labelling.engine.CategoricalLabelInspector + :members: + +.. autoclass:: ydata_quality.labelling.engine.NumericalLabelInspector + :members: + diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 00000000..2119f510 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/missings.rst b/docs/missings.rst new file mode 100644 index 00000000..0061e773 --- /dev/null +++ b/docs/missings.rst @@ -0,0 +1,8 @@ +.. +Missings +========================================= + +.. automodule:: ydata_quality.missings + :members: + :noindex: + diff --git a/docs/valued_missing_values.rst b/docs/valued_missing_values.rst new file mode 100644 index 00000000..7a1dc310 --- /dev/null +++ b/docs/valued_missing_values.rst @@ -0,0 +1,8 @@ +.. +Valued Missing Values +========================================= + +.. automodule:: ydata_quality.valued_missing_values + :members: + :noindex: + diff --git a/docs/warnings.rst b/docs/warnings.rst new file mode 100644 index 00000000..21adada7 --- /dev/null +++ b/docs/warnings.rst @@ -0,0 +1,30 @@ +======== +Warnings +======== + +Structure +--------- +A QualityWarning contains all the necessary data required for a Data Scientist to understand and assess the impact of a given data quality issue found during the data quality evaluation. + +A QualityWarning is composed by: + * Category: name of the main test suite (e.g. Duplicates, Bias&Fairness) + * Test: name of the individual test (e.g. Exact Duplicates, Performance Bias) + * Description: long-text description of the data quality details + * Priority: expected impact of the data quality warning + * Data: sample of data that showcases the data quality warning + +Priorities +---------- +The Priority aims to provide a quick and intuitive level of severity of a QualityWarning. + +======== ============ +Priority Description +======== ============ +P0 Blocker. Critical issues that block using the dataset. +P1 High. Heavy impact expected on downstream application. +P2 Medium. Allows usage but may block human-intelligible insights. +P3 Low. Minor impact, aesthetic. No impact on downstream application. +======== ============ + +Technically, a Priority is implemented as an OrderedEnum so that we can apply comparison operators (<, <=, >, >=). More details on OrderedEnum are available in the utils sub-package. + diff --git a/docs/ydata_logo.png b/docs/ydata_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d41bbb804dc46cb8369697ec7647d7864f59ef3d GIT binary patch literal 8124 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 WJ1Dr*(pJGIK>x}$opP<45&r{^bZQI$ literal 0 HcmV?d00001 diff --git a/requirements-dev.txt b/requirements-dev.txt index 9bfbee1c..7a46dcee 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,6 @@ isort pylint pytest -sphinx +sphinx==4.1.2 +sphinx_rtd_theme myst-parser From 3b1a5cef283665b4fb773067ab2099bdb26dec71 Mon Sep 17 00:00:00 2001 From: UrbanoFonseca Date: Thu, 9 Sep 2021 12:07:23 +0100 Subject: [PATCH 2/2] chore(docs): added custom css formatting --- docs/_static/css/custom.css | 4 ++++ docs/conf.py | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 docs/_static/css/custom.css diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 00000000..aa36f2e9 --- /dev/null +++ b/docs/_static/css/custom.css @@ -0,0 +1,4 @@ +.wy-side-nav-search { + background-color: #2980b9; + color: #fcfcfc; +} diff --git a/docs/conf.py b/docs/conf.py index 53360776..69203146 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -50,6 +50,10 @@ # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] +html_css_files = [ + 'css/custom.css', +] + # -- Napoleon configuration --------------------------------------------------- napoleon_google_docstring = True napoleon_numpy_docstring = False