From 744a39479261ec6e485475eae9967afb84ee7bef Mon Sep 17 00:00:00 2001 From: Weiyuan Wu Date: Tue, 14 Apr 2020 23:36:22 -0700 Subject: [PATCH] docs: simplify API documentation --- Justfile | 2 +- dataprep/data_connector/__init__.py | 2 + dataprep/data_connector/config_manager.py | 13 +- dataprep/data_connector/connector.py | 95 ++++++------ dataprep/eda/basic/__init__.py | 10 +- dataprep/eda/basic/compute.py | 3 - dataprep/eda/basic/render.py | 21 ++- dataprep/eda/correlation/__init__.py | 35 ++--- dataprep/eda/correlation/compute.py | 22 +-- dataprep/eda/correlation/render.py | 87 +++++------ dataprep/eda/missing/__init__.py | 32 +--- dataprep/eda/missing/compute.py | 29 +--- dataprep/eda/missing/render.py | 32 ++-- docs/source/conf.py | 7 + docs/source/dataprep.data_connector.rst | 76 ++++----- docs/source/dataprep.eda.basic.rst | 30 ---- docs/source/dataprep.eda.correlation.rst | 30 ---- docs/source/dataprep.eda.missing.rst | 30 ---- docs/source/dataprep.eda.outlier.rst | 22 --- docs/source/dataprep.eda.rst | 55 ++----- docs/source/dataprep.rst | 22 +-- poetry.lock | 180 +++++++++++++++++++++- pyproject.toml | 4 +- 23 files changed, 380 insertions(+), 459 deletions(-) delete mode 100644 docs/source/dataprep.eda.basic.rst delete mode 100644 docs/source/dataprep.eda.correlation.rst delete mode 100644 docs/source/dataprep.eda.missing.rst delete mode 100644 docs/source/dataprep.eda.outlier.rst diff --git a/Justfile b/Justfile index d447e24bd..3fb1bba04 100644 --- a/Justfile +++ b/Justfile @@ -1,5 +1,5 @@ build-docs: - poetry run sphinx-build -M html docs/source docs/build + poetry run sphinx-build -b html docs/source docs/build gen-apidocs: poetry run sphinx-apidoc --ext-doctest --ext-autodoc --ext-mathjax -f -o docs/source dataprep diff --git a/dataprep/data_connector/__init__.py b/dataprep/data_connector/__init__.py index dba371b93..c522f521f 100644 --- a/dataprep/data_connector/__init__.py +++ b/dataprep/data_connector/__init__.py @@ -2,3 +2,5 @@ DataConnector """ from .connector import Connector + +__all__ = ["Connector"] diff --git a/dataprep/data_connector/config_manager.py b/dataprep/data_connector/config_manager.py index 1ce58fa5f..94c2c61ed 100644 --- a/dataprep/data_connector/config_manager.py +++ b/dataprep/data_connector/config_manager.py @@ -20,10 +20,7 @@ def config_directory() -> Path: """ - Returns - ------- - Path - Returns the config directory path + Returns the config directory path """ tmp = gettempdir() return Path(tmp) / "dataprep" / "data_connector" @@ -32,10 +29,6 @@ def config_directory() -> Path: def ensure_config(impdb: str) -> bool: """ Ensure the config for `impdb` is downloaded - - Returns - ------- - bool """ path = config_directory() obsolete = is_obsolete(impdb) @@ -51,10 +44,6 @@ def is_obsolete(impdb: str) -> bool: """ Test if the implicit db config files are obsolete and need to be re-downloaded. - - Returns - ------- - bool """ path = config_directory() if not (path / impdb).exists(): diff --git a/dataprep/data_connector/connector.py b/dataprep/data_connector/connector.py index 18a1d1c1c..59608d6c8 100644 --- a/dataprep/data_connector/connector.py +++ b/dataprep/data_connector/connector.py @@ -37,19 +37,29 @@ class Connector: """ This is the main class of data_connector component. - A class should be initialized as the following. + Initialize Connector class as the example code. + + Parameters + ---------- + config_path + The path to the config. It can be hosted, e.g. "yelp", or from + local filesystem, e.g. "./yelp" + auth_params + The parameter for authentication, e.g. OAuth2 + kwargs + Additional parameters Example - -------- + ------- >>> from dataprep.data_connector import Connector >>> dc = Connector("./DataConnectorConfigs/yelp", auth_params={"access_token":access_token}) """ - # impdb: ImplicitDatabase - # vars: Dict[str, Any] - # auth_params: Dict[str, Any] - # session: Session - # jenv: Environment + _impdb: ImplicitDatabase + _vars: Dict[str, Any] + _auth_params: Dict[str, Any] + _session: Session + _jenv: Environment def __init__( self, @@ -57,19 +67,7 @@ def __init__( auth_params: Optional[Dict[str, Any]] = None, **kwargs: Any, ) -> None: - """ - Initialize Connector class - - Parameters - ---------- - config_path : str - The path to the config. It can be hosted, e.g. "yelp", or from - local filesystem, e.g. "./yelp" - **kwargs : Dict[str, Any] - Additional parameters - """ - - self.session = Session() + self._session = Session() if ( config_path.startswith(".") or config_path.startswith("/") @@ -81,11 +79,11 @@ def __init__( ensure_config(config_path) path = config_directory() / config_path - self.impdb = ImplicitDatabase(path) + self._impdb = ImplicitDatabase(path) - self.vars = kwargs - self.auth_params = auth_params or {} - self.jenv = Environment(undefined=StrictUndefined) + self._vars = kwargs + self._auth_params = auth_params or {} + self._jenv = Environment(undefined=StrictUndefined) def _fetch( self, @@ -101,19 +99,19 @@ def _fetch( "cookies": {}, } - merged_vars = {**self.vars, **kwargs} + merged_vars = {**self._vars, **kwargs} if table.authorization is not None: - table.authorization.build(req_data, auth_params or self.auth_params) + table.authorization.build(req_data, auth_params or self._auth_params) for key in ["headers", "params", "cookies"]: if getattr(table, key) is not None: instantiated_fields = getattr(table, key).populate( - self.jenv, merged_vars + self._jenv, merged_vars ) req_data[key].update(**instantiated_fields) if table.body is not None: # TODO: do we support binary body? - instantiated_fields = table.body.populate(self.jenv, merged_vars) + instantiated_fields = table.body.populate(self._jenv, merged_vars) if table.body_ctype == "application/x-www-form-urlencoded": req_data["data"] = instantiated_fields elif table.body_ctype == "application/json": @@ -121,7 +119,7 @@ def _fetch( else: raise UnreachableError - resp: Response = self.session.send( # type: ignore + resp: Response = self._session.send( # type: ignore Request( method=method, url=url, @@ -147,9 +145,8 @@ def table_names(self) -> List[str]: ---- We abstract each website as a database containing several tables. For example in Spotify, we have artist and album table. - """ - return list(self.impdb.tables.keys()) + return list(self._impdb.tables.keys()) @property def info(self) -> None: @@ -159,8 +156,8 @@ def info(self) -> None: # get info tbs: Dict[str, Any] = {} - for cur_table in self.impdb.tables: - table_config_content = self.impdb.tables[cur_table].config + for cur_table in self._impdb.tables: + table_config_content = self._impdb.tables[cur_table].config params_required = [] params_optional = [] example_query_fields = [] @@ -180,7 +177,7 @@ def info(self) -> None: # show table info print( INFO_TEMPLATE.render( - ntables=len(self.table_names), dbname=self.impdb.name, tbs=tbs + ntables=len(self.table_names), dbname=self._impdb.name, tbs=tbs ) ) @@ -191,22 +188,21 @@ def show_schema(self, table_name: str) -> pd.DataFrame: Parameters ---------- - table_name : str + table_name The table name. Returns ------- - pd.DataFrame - The returned data's schema. + pd.DataFrame + The returned data's schema. Note ---- The schema is defined in the configuration file. The user can either use the default one or change it by editing the configuration file. - """ print(f"table: {table_name}") - table_config_content = self.impdb.tables[table_name].config + table_config_content = self._impdb.tables[table_name].config schema = table_config_content["response"]["schema"] new_schema_dict: Dict[str, List[Any]] = {} new_schema_dict["column_name"] = [] @@ -217,28 +213,25 @@ def show_schema(self, table_name: str) -> pd.DataFrame: return pd.DataFrame.from_dict(new_schema_dict) def query( - self, - table: str, - auth_params: Optional[Dict[str, Any]] = None, - **where: Dict[str, Any], + self, table: str, auth_params: Optional[Dict[str, Any]] = None, **where: Any, ) -> pd.DataFrame: """ Use this method to query the API and get the returned table. Example - -------- + ------- >>> df = dc.query('businesses', term="korean", location="vancouver) - + Parameters ---------- - table : str + table The table name. - auth_params : Optional[Dict[str, Any]] = None + auth_params The parameters for authentication. Usually the authentication parameters should be defined when instantiating the Connector. In case some tables have different authentication options, a different authentication parameter can be defined here. This parameter will override the one from Connector if passed. - **where: Dict[str, Any] + where The additional parameters required for the query. Returns @@ -246,9 +239,11 @@ def query( pd.DataFrame A DataFrame that contains the data returned by the website API. """ - assert table in self.impdb.tables, f"No such table {table} in {self.impdb.name}" + assert ( + table in self._impdb.tables + ), f"No such table {table} in {self._impdb.name}" - itable = self.impdb.tables[table] + itable = self._impdb.tables[table] resp = self._fetch(itable, auth_params, where) diff --git a/dataprep/eda/basic/__init__.py b/dataprep/eda/basic/__init__.py index f61db3580..a0e7bb8c1 100644 --- a/dataprep/eda/basic/__init__.py +++ b/dataprep/eda/basic/__init__.py @@ -1,7 +1,4 @@ """ -plot(df) -======== - This module implements the plot(df) function. """ @@ -10,12 +7,13 @@ import dask.dataframe as dd import pandas as pd from bokeh.io import show -from bokeh.plotting import Figure from .compute import compute from .render import render from ..report import Report +__all__ = ["plot", "compute", "render"] + def plot( df: Union[pd.DataFrame, dd.DataFrame], @@ -34,7 +32,7 @@ def plot( value_range: Optional[Tuple[float, float]] = None, yscale: str = "linear", tile_size: Optional[float] = None, -) -> Figure: +) -> Report: """Generates plots for exploratory data analysis. If no columns are specified, the distribution of @@ -109,7 +107,7 @@ def plot( value_range: Optional[Tuple[float, float]], default None The lower and upper bounds on the range of a numerical column. Applies when column x is specified and column y is unspecified. - yscale: str, default "linear" + yscale The scale to show on the y axis. Can be "linear" or "log". tile_size: Optional[float], default None Size of the tile for the hexbin plot. Measured from the middle diff --git a/dataprep/eda/basic/compute.py b/dataprep/eda/basic/compute.py index 89c330a12..f51a5fd92 100644 --- a/dataprep/eda/basic/compute.py +++ b/dataprep/eda/basic/compute.py @@ -1,7 +1,4 @@ """ -Compute ``plot(df)`` -==================== - This module implements the intermediates computation for plot(df) function. """ from sys import stderr diff --git a/dataprep/eda/basic/render.py b/dataprep/eda/basic/render.py index 44525435d..e6bf3d50f 100644 --- a/dataprep/eda/basic/render.py +++ b/dataprep/eda/basic/render.py @@ -1,7 +1,4 @@ """ -Render ``plot(df)`` -=================== - This module implements the visualization for the plot(df) function. """ # pylint: disable=too-many-lines from math import pi @@ -1286,21 +1283,23 @@ def render( Parameters ---------- itmdt - The Intermediate containing results from the compute function + The Intermediate containing results from the compute function. yscale: str, default "linear" The scale to show on the y axis. Can be "linear" or "log". - tile_size: Optional[float], default None - Size of the tile for the hexbin plot; measured from the middle + tile_size + Size of the tile for the hexbin plot. Measured from the middle of a hexagon to its left or right corner. - plot_width_sml: int, default 324, + plot_width_small: int, default 324 The width of the small plots - plot_height_sml: int, default 300, + plot_height_small: int, default 300 The height of the small plots - plot_width_lrg: int, default 450, + plot_width_large: int, default 450 The width of the large plots - plot_height_lrg: int, default 400, + plot_height_large: int, default 400 The height of the large plots - plot_width_lrg: int, default 972, + plot_width_large: int, default 972 + The width of the large plots + plot_width_wide: int, default 972 The width of the wide plots """ # pylint: disable=too-many-arguments diff --git a/dataprep/eda/correlation/__init__.py b/dataprep/eda/correlation/__init__.py index 3e3173eea..aec7ba872 100644 --- a/dataprep/eda/correlation/__init__.py +++ b/dataprep/eda/correlation/__init__.py @@ -7,7 +7,6 @@ import dask.dataframe as dd import pandas as pd from bokeh.io import show -from bokeh.plotting import Figure from .compute import compute_correlation from .render import render_correlation @@ -23,7 +22,7 @@ def plot_correlation( *, value_range: Optional[Tuple[float, float]] = None, k: Optional[int] = None, -) -> Figure: +) -> Report: """ This function is designed to calculate the correlation between columns There are three functions: plot_correlation(df), plot_correlation(df, x) @@ -32,22 +31,16 @@ def plot_correlation( Parameters ---------- - pd_data_frame: pd.DataFrame - the pandas data_frame for which plots are calculated for each column - x_name: str, optional - a valid column name of the data frame - y_name: str, optional - a valid column name of the data frame - value_range: list[float], optional - range of value - k: int, optional - choose top-k element - - Returns - ---------- - An object of figure or - An object of figure and - An intermediate representation for the plots of different columns in the data_frame. + df + The pandas data_frame for which plots are calculated for each column + x + A valid column name of the data frame + y + A valid column name of the data frame + value_range + Range of value + k + Choose top-k element Examples -------- @@ -65,12 +58,6 @@ def plot_correlation( Note ---- - match (x_name, y_name, k) - case (None, None, None) => heatmap - case (Some, None, Some) => Top K columns for (pearson, spearman, kendall) - case (Some, Some, _) => Scatter with regression line with/without top k outliers - otherwise => error - This function only supports numerical or categorical data, and it is better to drop None, Nan and Null value before using it """ diff --git a/dataprep/eda/correlation/compute.py b/dataprep/eda/correlation/compute.py index d5edaca64..80c0e542f 100644 --- a/dataprep/eda/correlation/compute.py +++ b/dataprep/eda/correlation/compute.py @@ -43,28 +43,16 @@ def compute_correlation( """ Parameters ---------- - df : pd.DataFrame + df The pandas dataframe for which plots are calculated for each column. - x : Optional[str] + x A valid column name of the dataframe - y : Optional[str] + y A valid column name of the dataframe - value_range : Optional[Tuple[float, float]] = None + value_range If the correlation value is out of the range, don't show it. - k : Optional[int] + k Choose top-k element - - Returns - ------- - Intermediate - - Note - ---- - match (x, y, k) - case (None, None, _) => heatmap - case (Some, None, _) => Top K columns for (pearson, spearman, kendall) - case (Some, Some, _) => Scatter with regression line with/without top k outliers - otherwise => error """ # pylint: disable=too-many-locals,too-many-statements,too-many-branches diff --git a/dataprep/eda/correlation/render.py b/dataprep/eda/correlation/render.py index bf5d92bcb..6bf35be77 100644 --- a/dataprep/eda/correlation/render.py +++ b/dataprep/eda/correlation/render.py @@ -26,6 +26,50 @@ __all__ = ["render_correlation"] + +def render_correlation( + itmdt: Intermediate, + plot_width: int = 500, + plot_height: int = 500, + palette: Optional[Sequence[str]] = None, +) -> Figure: + """ + Render a correlation plot + + Parameters + ---------- + itmdt + plot_width + The width of the plot + plot_height + The height of the plot + palette + The palette to use. By default (None), + the palette will be automatically chosen based on different visualization types. + + Returns + ------- + Figure + The bokeh Figure instance. + """ + if itmdt.visual_type is None: + visual_elem = Figure() + elif itmdt.visual_type == "correlation_heatmaps": + visual_elem = render_correlation_heatmaps( + itmdt, plot_width, plot_height, palette or BIPALETTE + ) + elif itmdt.visual_type == "correlation_single_heatmaps": + visual_elem = render_correlation_single_heatmaps( + itmdt, plot_width, plot_height, palette or BIPALETTE + ) + elif itmdt.visual_type == "correlation_scatter": + visual_elem = render_scatter(itmdt, plot_width, plot_height, palette or BRG) + else: + raise NotImplementedError(f"Unknown visual type {itmdt.visual_type}") + + return visual_elem + + # def _vis_cross_table(intermediate: Intermediate, params: Dict[str, Any]) -> Figure: # """ # :param intermediate: An object to encapsulate the @@ -246,46 +290,3 @@ def render_scatter( fig.add_layout(legend, place="right") return fig - - -def render_correlation( - itmdt: Intermediate, - plot_width: int = 500, - plot_height: int = 500, - palette: Optional[Sequence[str]] = None, -) -> Figure: - """ - Render a correlation plot - - Parameters - ---------- - itmdt : Intermediate - plot_width : int = 400 - The width of the plot - plot_height : int = 300 - The height of the plot - palette : Union[Sequence[str], str] = None - The palette to use. By default (None), - the palette will be automatically chosen based on different visualization types. - - Returns - ------- - Figure - The bokeh Figure instance. - """ - if itmdt.visual_type is None: - visual_elem = Figure() - elif itmdt.visual_type == "correlation_heatmaps": - visual_elem = render_correlation_heatmaps( - itmdt, plot_width, plot_height, palette or BIPALETTE - ) - elif itmdt.visual_type == "correlation_single_heatmaps": - visual_elem = render_correlation_single_heatmaps( - itmdt, plot_width, plot_height, palette or BIPALETTE - ) - elif itmdt.visual_type == "correlation_scatter": - visual_elem = render_scatter(itmdt, plot_width, plot_height, palette or BRG) - else: - raise NotImplementedError(f"Unknown visual type {itmdt.visual_type}") - - return visual_elem diff --git a/dataprep/eda/missing/__init__.py b/dataprep/eda/missing/__init__.py index 84e5f5136..aa7b5d24b 100644 --- a/dataprep/eda/missing/__init__.py +++ b/dataprep/eda/missing/__init__.py @@ -7,7 +7,6 @@ import dask.dataframe as dd import pandas as pd from bokeh.io import show -from bokeh.models import LayoutDOM from .compute import compute_missing from .render import render_missing @@ -24,7 +23,7 @@ def plot_missing( bins: int = 30, ncols: int = 30, ndist_sample: int = 100, -) -> LayoutDOM: +) -> Report: """ This function is designed to deal with missing values There are three functions: plot_missing(df), plot_missing(df, x) @@ -32,25 +31,19 @@ def plot_missing( Parameters ---------- - df: Union[pd.DataFrame, dd.DataFrame] + df the pandas data_frame for which plots are calculated for each column - x_name: str, optional + x a valid column name of the data frame - y_name: str, optional + y a valid column name of the data frame - ncols: int, optional + ncols The number of columns in the figure - bins: int + bins The number of rows in the figure - ndist_sample: int + ndist_sample The number of sample points - Returns - ---------- - An object of figure or - An object of figure and - An intermediate representation for the plots of different columns in the data_frame. - Examples ---------- >>> from dataprep.eda.missing.computation import plot_missing @@ -58,17 +51,6 @@ def plot_missing( >>> df = pd.read_csv("suicide-rate.csv") >>> plot_missing(df, "HDI_for_year") >>> plot_missing(df, "HDI_for_year", "population") - - Notes - ---------- - match (x_name, y_name) - case (Some, Some) => histogram for numerical column, - bars for categorical column, qq-plot, box-plot, jitter plot, - CDF, PDF - case (Some, None) => histogram for numerical column and - bars for categorical column - case (None, None) => heatmap - otherwise => error """ itmdt = compute_missing(df, x, y, bins=bins, ncols=ncols, ndist_sample=ndist_sample) fig = render_missing(itmdt) diff --git a/dataprep/eda/missing/compute.py b/dataprep/eda/missing/compute.py index d7f5d2375..f76766e9e 100644 --- a/dataprep/eda/missing/compute.py +++ b/dataprep/eda/missing/compute.py @@ -305,25 +305,19 @@ def compute_missing( Parameters ---------- - pd_data_frame: pd.DataFrame + df the pandas data_frame for which plots are calculated for each column - x_name: str, optional + x a valid column name of the data frame - y_name: str, optional + y a valid column name of the data frame - ncols: int, optional + ncols The number of columns in the figure - bins: int + bins The number of rows in the figure - ndist_sample: int + ndist_sample The number of sample points - Returns - ---------- - An object of figure or - An object of figure and - An intermediate representation for the plots of different columns in the data_frame. - Examples ---------- >>> from dataprep.eda.missing.computation import plot_missing @@ -331,17 +325,6 @@ def compute_missing( >>> df = pd.read_csv("suicide-rate.csv") >>> plot_missing(df, "HDI_for_year") >>> plot_missing(df, "HDI_for_year", "population") - - Notes - ---------- - match (x_name, y_name) - case (Some, Some) => histogram for numerical column, - bars for categorical column, qq-plot, box-plot, jitter plot, - CDF, PDF - case (Some, None) => histogram for numerical column and - bars for categorical column - case (None, None) => heatmap - otherwise => error """ df = to_dask(df) diff --git a/dataprep/eda/missing/render.py b/dataprep/eda/missing/render.py index ea75ca14f..914cae22a 100644 --- a/dataprep/eda/missing/render.py +++ b/dataprep/eda/missing/render.py @@ -37,6 +37,22 @@ __all__ = ["render_missing"] +def render_missing( + itmdt: Intermediate, plot_width: int = 500, plot_height: int = 500 +) -> LayoutDOM: + """ + @Jinglin write here + """ + if itmdt.visual_type == "missing_spectrum": + return render_missing_spectrum(itmdt, plot_width, plot_height) + elif itmdt.visual_type == "missing_impact_1vn": + return render_missing_impact_1vn(itmdt, plot_width, plot_height) + elif itmdt.visual_type == "missing_impact_1v1": + return render_missing_impact_1v1(itmdt, plot_width, plot_height) + else: + raise UnreachableError + + def tweak_figure(fig: Figure) -> Figure: """ Set some common attributes for a figure @@ -347,19 +363,3 @@ def render_missing_impact_1v1( else: fig.title = Title(text=f"Missing impact of {x} by {y}") return fig - - -def render_missing( - itmdt: Intermediate, plot_width: int = 500, plot_height: int = 500 -) -> LayoutDOM: - """ - @Jinglin write here - """ - if itmdt.visual_type == "missing_spectrum": - return render_missing_spectrum(itmdt, plot_width, plot_height) - elif itmdt.visual_type == "missing_impact_1vn": - return render_missing_impact_1vn(itmdt, plot_width, plot_height) - elif itmdt.visual_type == "missing_impact_1v1": - return render_missing_impact_1v1(itmdt, plot_width, plot_height) - else: - raise UnreachableError diff --git a/docs/source/conf.py b/docs/source/conf.py index c7dee0403..79182899e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -52,6 +52,7 @@ def get_version() -> str: "sphinx_autodoc_typehints", ] +autodoc_typehints = "description" # Napoleon settings napoleon_google_docstring = False napoleon_numpy_docstring = True @@ -67,6 +68,12 @@ def get_version() -> str: napoleon_use_keyword = True napoleon_custom_sections = None +# autodoc_default_options = { +# "members": True, +# "member-order": "bysource", +# "special-members": "__init__", +# } + # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] diff --git a/docs/source/dataprep.data_connector.rst b/docs/source/dataprep.data_connector.rst index 6d45aa92d..2cb80e528 100644 --- a/docs/source/dataprep.data_connector.rst +++ b/docs/source/dataprep.data_connector.rst @@ -1,62 +1,44 @@ dataprep.data\_connector package ================================ -Submodules ----------- +.. .. automodule:: dataprep.data_connector +.. :members: +.. :undoc-members: +.. :show-inheritance: -dataprep.data\_connector.config\_manager module ------------------------------------------------ +Connector +--------- -.. automodule:: dataprep.data_connector.config_manager +.. autoclass:: dataprep.data_connector.Connector :members: - :undoc-members: - :show-inheritance: + :inherited-members: -dataprep.data\_connector.connector module ------------------------------------------ -.. automodule:: dataprep.data_connector.connector - :members: - :undoc-members: - :show-inheritance: - -dataprep.data\_connector.errors module --------------------------------------- - -.. automodule:: dataprep.data_connector.errors - :members: - :undoc-members: - :show-inheritance: - -dataprep.data\_connector.implicit\_database module --------------------------------------------------- + +.. Submodules +.. ---------- -.. automodule:: dataprep.data_connector.implicit_database - :members: - :undoc-members: - :show-inheritance: +.. dataprep.data\_connector.connector module +.. ----------------------------------------- -dataprep.data\_connector.schema module --------------------------------------- +.. .. automodule:: dataprep.data_connector.connector +.. :members: +.. :undoc-members: +.. :show-inheritance: -.. automodule:: dataprep.data_connector.schema - :members: - :undoc-members: - :show-inheritance: +.. dataprep.data\_connector.schema module +.. -------------------------------------- -dataprep.data\_connector.types module -------------------------------------- +.. .. automodule:: dataprep.data_connector.schema +.. :members: +.. :undoc-members: +.. :show-inheritance: -.. automodule:: dataprep.data_connector.types - :members: - :undoc-members: - :show-inheritance: +.. dataprep.data\_connector.types module +.. ------------------------------------- +.. .. automodule:: dataprep.data_connector.types +.. :members: +.. :undoc-members: +.. :show-inheritance: -Module contents ---------------- - -.. automodule:: dataprep.data_connector - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/dataprep.eda.basic.rst b/docs/source/dataprep.eda.basic.rst deleted file mode 100644 index 7b81409a4..000000000 --- a/docs/source/dataprep.eda.basic.rst +++ /dev/null @@ -1,30 +0,0 @@ -dataprep.eda.basic package -========================== - -Submodules ----------- - -dataprep.eda.basic.compute module ---------------------------------- - -.. automodule:: dataprep.eda.basic.compute - :members: - :undoc-members: - :show-inheritance: - -dataprep.eda.basic.render module --------------------------------- - -.. automodule:: dataprep.eda.basic.render - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: dataprep.eda.basic - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/dataprep.eda.correlation.rst b/docs/source/dataprep.eda.correlation.rst deleted file mode 100644 index a88bbd680..000000000 --- a/docs/source/dataprep.eda.correlation.rst +++ /dev/null @@ -1,30 +0,0 @@ -dataprep.eda.correlation package -================================ - -Submodules ----------- - -dataprep.eda.correlation.compute module ---------------------------------------- - -.. automodule:: dataprep.eda.correlation.compute - :members: - :undoc-members: - :show-inheritance: - -dataprep.eda.correlation.render module --------------------------------------- - -.. automodule:: dataprep.eda.correlation.render - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: dataprep.eda.correlation - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/dataprep.eda.missing.rst b/docs/source/dataprep.eda.missing.rst deleted file mode 100644 index b5d6227be..000000000 --- a/docs/source/dataprep.eda.missing.rst +++ /dev/null @@ -1,30 +0,0 @@ -dataprep.eda.missing package -============================ - -Submodules ----------- - -dataprep.eda.missing.compute module ------------------------------------ - -.. automodule:: dataprep.eda.missing.compute - :members: - :undoc-members: - :show-inheritance: - -dataprep.eda.missing.render module ----------------------------------- - -.. automodule:: dataprep.eda.missing.render - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: dataprep.eda.missing - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/dataprep.eda.outlier.rst b/docs/source/dataprep.eda.outlier.rst deleted file mode 100644 index f6c942349..000000000 --- a/docs/source/dataprep.eda.outlier.rst +++ /dev/null @@ -1,22 +0,0 @@ -dataprep.eda.outlier package -============================ - -Submodules ----------- - -dataprep.eda.outlier.computation module ---------------------------------------- - -.. automodule:: dataprep.eda.outlier.computation - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: dataprep.eda.outlier - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/dataprep.eda.rst b/docs/source/dataprep.eda.rst index 815cc3ebf..97b60447d 100644 --- a/docs/source/dataprep.eda.rst +++ b/docs/source/dataprep.eda.rst @@ -1,48 +1,21 @@ dataprep.eda package ==================== -Subpackages ------------ - -.. toctree:: - - dataprep.eda.basic - dataprep.eda.correlation - dataprep.eda.missing - dataprep.eda.outlier - -Submodules ----------- - -dataprep.eda.intermediate module --------------------------------- - -.. automodule:: dataprep.eda.intermediate - :members: - :undoc-members: - :show-inheritance: - -dataprep.eda.palette module ---------------------------- - -.. automodule:: dataprep.eda.palette - :members: - :undoc-members: - :show-inheritance: - -dataprep.eda.report module --------------------------- - -.. automodule:: dataprep.eda.report - :members: - :undoc-members: - :show-inheritance: +.. .. automodule:: dataprep.eda +.. :noindex: +Plot* functions +--------------- +.. autofunction:: dataprep.eda.basic.plot +.. autofunction:: dataprep.eda.correlation.plot_correlation +.. autofunction:: dataprep.eda.missing.plot_missing -Module contents +Other functions --------------- -.. automodule:: dataprep.eda - :members: - :undoc-members: - :show-inheritance: +.. autofunction:: dataprep.eda.basic.compute.compute +.. autofunction:: dataprep.eda.basic.render.render +.. autofunction:: dataprep.eda.correlation.compute.compute_correlation +.. autofunction:: dataprep.eda.correlation.render.render_correlation +.. autofunction:: dataprep.eda.missing.compute.compute_missing +.. autofunction:: dataprep.eda.missing.render.render_missing diff --git a/docs/source/dataprep.rst b/docs/source/dataprep.rst index 664a6f359..f71b76e4d 100644 --- a/docs/source/dataprep.rst +++ b/docs/source/dataprep.rst @@ -7,24 +7,4 @@ Subpackages .. toctree:: dataprep.data_connector - dataprep.eda - -Submodules ----------- - -dataprep.errors module ----------------------- - -.. automodule:: dataprep.errors - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: dataprep - :members: - :undoc-members: - :show-inheritance: + dataprep.eda \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 02f6ab021..8cdec12eb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,6 +22,15 @@ optional = false python-versions = "*" version = "1.4.3" +[[package]] +category = "dev" +description = "Disable App Nap on OS X 10.9" +marker = "sys_platform == \"darwin\"" +name = "appnope" +optional = false +python-versions = "*" +version = "0.1.0" + [[package]] category = "dev" description = "An unobtrusive argparse wrapper with natural syntax" @@ -81,6 +90,14 @@ version = "2.8.0" [package.dependencies] pytz = ">=2015.7" +[[package]] +category = "dev" +description = "Specifications for callback functions passed in to an API" +name = "backcall" +optional = false +python-versions = "*" +version = "0.1.0" + [[package]] category = "dev" description = "The uncompromising code formatter." @@ -386,6 +403,38 @@ zipp = ">=0.5" docs = ["sphinx", "rst.linker"] testing = ["packaging", "importlib-resources"] +[[package]] +category = "dev" +description = "IPython: Productive Interactive Computing" +name = "ipython" +optional = false +python-versions = ">=3.6" +version = "7.13.0" + +[package.dependencies] +appnope = "*" +backcall = "*" +colorama = "*" +decorator = "*" +jedi = ">=0.10" +pexpect = "*" +pickleshare = "*" +prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" +pygments = "*" +setuptools = ">=18.5" +traitlets = ">=4.2" + +[package.extras] +all = ["numpy (>=1.14)", "testpath", "notebook", "nose (>=0.10.1)", "nbconvert", "requests", "ipywidgets", "qtconsole", "ipyparallel", "Sphinx (>=1.3)", "pygments", "nbformat", "ipykernel"] +doc = ["Sphinx (>=1.3)"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["notebook", "ipywidgets"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"] + [[package]] category = "dev" description = "Vestigial utilities from IPython" @@ -408,6 +457,21 @@ pyproject = ["toml"] requirements = ["pipreqs", "pip-api"] xdg_home = ["appdirs (>=1.4.0)"] +[[package]] +category = "dev" +description = "An autocompletion tool for Python that can be used for text editors." +name = "jedi" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.17.0" + +[package.dependencies] +parso = ">=0.7.0" + +[package.extras] +qa = ["flake8 (3.7.9)"] +testing = ["colorama", "docopt", "pytest (>=3.9.0,<5.0.0)"] + [[package]] category = "main" description = "A very fast and expressive template engine." @@ -730,6 +794,17 @@ version = "1.9.3" all = ["flake8", "nose"] tests = ["nose", "flake8"] +[[package]] +category = "dev" +description = "A Python Parser" +name = "parso" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.7.0" + +[package.extras] +testing = ["docopt", "pytest (>=3.0.7)"] + [[package]] category = "main" description = "Appendable key-value storage" @@ -761,6 +836,26 @@ optional = false python-versions = "*" version = "0.1.2" +[[package]] +category = "dev" +description = "Pexpect allows easy control of interactive console applications." +marker = "sys_platform != \"win32\"" +name = "pexpect" +optional = false +python-versions = "*" +version = "4.8.0" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +category = "dev" +description = "Tiny 'shelve'-like database with concurrency support" +name = "pickleshare" +optional = false +python-versions = "*" +version = "0.7.5" + [[package]] category = "main" description = "Python Imaging Library (Fork)" @@ -793,6 +888,17 @@ optional = false python-versions = "*" version = "0.3.1" +[[package]] +category = "dev" +description = "Library for building powerful interactive command lines in Python" +name = "prompt-toolkit" +optional = false +python-versions = ">=3.6.1" +version = "3.0.5" + +[package.dependencies] +wcwidth = "*" + [[package]] category = "main" description = "Cross-platform lib for process and system monitoring in Python." @@ -804,6 +910,15 @@ version = "5.7.0" [package.extras] enum = ["enum34"] +[[package]] +category = "dev" +description = "Run a subprocess in a pseudo terminal" +marker = "sys_platform != \"win32\"" +name = "ptyprocess" +optional = false +python-versions = "*" +version = "0.6.0" + [[package]] category = "dev" description = "library with cross-python path, ini-parsing, io, code, log facilities" @@ -988,6 +1103,17 @@ urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +[[package]] +category = "dev" +description = "a python refactoring library..." +name = "rope" +optional = false +python-versions = "*" +version = "0.16.0" + +[package.extras] +dev = ["pytest"] + [[package]] category = "dev" description = "Checks syntax of reStructuredText and code blocks nested within it" @@ -1040,13 +1166,13 @@ description = "Python documentation generator" name = "sphinx" optional = false python-versions = ">=3.5" -version = "2.4.4" +version = "3.0.3" [package.dependencies] Jinja2 = ">=2.3" Pygments = ">=2.0" alabaster = ">=0.7,<0.8" -babel = ">=1.3,<2.0 || >2.0" +babel = ">=1.3" colorama = ">=0.3.5" docutils = ">=0.12" imagesize = "*" @@ -1063,7 +1189,8 @@ sphinxcontrib-serializinghtml = "*" [package.extras] docs = ["sphinxcontrib-websupport"] -test = ["pytest (<5.3.3)", "pytest-cov", "html5lib", "flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.761)", "docutils-stubs"] +lint = ["flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.770)", "docutils-stubs"] +test = ["pytest", "pytest-cov", "html5lib", "typed-ast", "cython"] [[package]] category = "dev" @@ -1330,7 +1457,7 @@ docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["jaraco.itertools", "func-timeout"] [metadata] -content-hash = "f4939c2998d61fe863935d6c1c5fe5063a1b5b003d0ab35ba1533c45e09c2a4a" +content-hash = "5c96219b79fe9a4164be306f91da54207a46437beea5a9ac98abd0b502420411" python-versions = "^3.6.1" [metadata.files] @@ -1345,6 +1472,10 @@ appdirs = [ {file = "appdirs-1.4.3-py2.py3-none-any.whl", hash = "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"}, {file = "appdirs-1.4.3.tar.gz", hash = "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"}, ] +appnope = [ + {file = "appnope-0.1.0-py2.py3-none-any.whl", hash = "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0"}, + {file = "appnope-0.1.0.tar.gz", hash = "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"}, +] argh = [ {file = "argh-0.26.2-py2.py3-none-any.whl", hash = "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3"}, {file = "argh-0.26.2.tar.gz", hash = "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"}, @@ -1365,6 +1496,10 @@ babel = [ {file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"}, {file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"}, ] +backcall = [ + {file = "backcall-0.1.0.tar.gz", hash = "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4"}, + {file = "backcall-0.1.0.zip", hash = "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"}, +] black = [ {file = "black-19.10b0-py36-none-any.whl", hash = "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b"}, {file = "black-19.10b0.tar.gz", hash = "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"}, @@ -1481,6 +1616,10 @@ importlib-metadata = [ {file = "importlib_metadata-1.6.0-py2.py3-none-any.whl", hash = "sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f"}, {file = "importlib_metadata-1.6.0.tar.gz", hash = "sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"}, ] +ipython = [ + {file = "ipython-7.13.0-py3-none-any.whl", hash = "sha256:eb8d075de37f678424527b5ef6ea23f7b80240ca031c2dd6de5879d687a65333"}, + {file = "ipython-7.13.0.tar.gz", hash = "sha256:ca478e52ae1f88da0102360e57e528b92f3ae4316aabac80a2cd7f7ab2efb48a"}, +] ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, @@ -1489,6 +1628,10 @@ isort = [ {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, ] +jedi = [ + {file = "jedi-0.17.0-py2.py3-none-any.whl", hash = "sha256:cd60c93b71944d628ccac47df9a60fec53150de53d42dc10a7fc4b5ba6aae798"}, + {file = "jedi-0.17.0.tar.gz", hash = "sha256:df40c97641cb943661d2db4c33c2e1ff75d491189423249e989bcea4464f3030"}, +] jinja2 = [ {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, @@ -1723,6 +1866,10 @@ param = [ {file = "param-1.9.3-py2.py3-none-any.whl", hash = "sha256:b9afbfda25be81bd763a399beaf8775fd79156e5897d4de50d3e091d15d72636"}, {file = "param-1.9.3.tar.gz", hash = "sha256:8370d41616e257b8ed2e242ec531e0340b8c954bea414b791fa0ef6235959981"}, ] +parso = [ + {file = "parso-0.7.0-py2.py3-none-any.whl", hash = "sha256:158c140fc04112dc45bca311633ae5033c2c2a7b732fa33d0955bad8152a8dd0"}, + {file = "parso-0.7.0.tar.gz", hash = "sha256:908e9fae2144a076d72ae4e25539143d40b8e3eafbaeae03c1bfe226f4cdf12c"}, +] partd = [ {file = "partd-1.1.0-py3-none-any.whl", hash = "sha256:7a491cf254e5ab09e9e6a40d80195e5e0e5e169115bfb8287225cb0c207536d2"}, {file = "partd-1.1.0.tar.gz", hash = "sha256:6e258bf0810701407ad1410d63d1a15cfd7b773fd9efe555dac6bb82cc8832b0"}, @@ -1734,6 +1881,14 @@ pathspec = [ pathtools = [ {file = "pathtools-0.1.2.tar.gz", hash = "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"}, ] +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +pickleshare = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] pillow = [ {file = "Pillow-7.1.2-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:ae2b270f9a0b8822b98655cb3a59cdb1bd54a34807c6c56b76dd2e786c3b7db3"}, {file = "Pillow-7.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:d23e2aa9b969cf9c26edfb4b56307792b8b374202810bd949effd1c6e11ebd6d"}, @@ -1766,6 +1921,10 @@ pluggy = [ port-for = [ {file = "port-for-0.3.1.tar.gz", hash = "sha256:b16a84bb29c2954db44c29be38b17c659c9c27e33918dec16b90d375cc596f1c"}, ] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.5-py3-none-any.whl", hash = "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04"}, + {file = "prompt_toolkit-3.0.5.tar.gz", hash = "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8"}, +] psutil = [ {file = "psutil-5.7.0-cp27-none-win32.whl", hash = "sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953"}, {file = "psutil-5.7.0-cp27-none-win_amd64.whl", hash = "sha256:75e22717d4dbc7ca529ec5063000b2b294fc9a367f9c9ede1f65846c7955fd38"}, @@ -1779,6 +1938,10 @@ psutil = [ {file = "psutil-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26"}, {file = "psutil-5.7.0.tar.gz", hash = "sha256:685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e"}, ] +ptyprocess = [ + {file = "ptyprocess-0.6.0-py2.py3-none-any.whl", hash = "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"}, + {file = "ptyprocess-0.6.0.tar.gz", hash = "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0"}, +] py = [ {file = "py-1.8.1-py2.py3-none-any.whl", hash = "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"}, {file = "py-1.8.1.tar.gz", hash = "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa"}, @@ -1865,6 +2028,11 @@ requests = [ {file = "requests-2.23.0-py2.py3-none-any.whl", hash = "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee"}, {file = "requests-2.23.0.tar.gz", hash = "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"}, ] +rope = [ + {file = "rope-0.16.0-py2-none-any.whl", hash = "sha256:ae1fa2fd56f64f4cc9be46493ce54bed0dd12dee03980c61a4393d89d84029ad"}, + {file = "rope-0.16.0-py3-none-any.whl", hash = "sha256:52423a7eebb5306a6d63bdc91a7c657db51ac9babfb8341c9a1440831ecf3203"}, + {file = "rope-0.16.0.tar.gz", hash = "sha256:d2830142c2e046f5fc26a022fe680675b6f48f81c7fc1f03a950706e746e9dfe"}, +] rstcheck = [ {file = "rstcheck-3.3.1.tar.gz", hash = "sha256:92c4f79256a54270e0402ba16a2f92d0b3c15c8f4410cb9c57127067c215741f"}, ] @@ -1904,8 +2072,8 @@ sortedcontainers = [ {file = "sortedcontainers-2.1.0.tar.gz", hash = "sha256:974e9a32f56b17c1bac2aebd9dcf197f3eb9cd30553c5852a3187ad162e1a03a"}, ] sphinx = [ - {file = "Sphinx-2.4.4-py3-none-any.whl", hash = "sha256:fc312670b56cb54920d6cc2ced455a22a547910de10b3142276495ced49231cb"}, - {file = "Sphinx-2.4.4.tar.gz", hash = "sha256:b4c750d546ab6d7e05bdff6ac24db8ae3e8b8253a3569b754e445110a0a12b66"}, + {file = "Sphinx-3.0.3-py3-none-any.whl", hash = "sha256:f5505d74cf9592f3b997380f9bdb2d2d0320ed74dd69691e3ee0644b956b8d83"}, + {file = "Sphinx-3.0.3.tar.gz", hash = "sha256:62edfd92d955b868d6c124c0942eba966d54b5f3dcb4ded39e65f74abac3f572"}, ] sphinx-autobuild = [ {file = "sphinx-autobuild-0.7.1.tar.gz", hash = "sha256:66388f81884666e3821edbe05dd53a0cfb68093873d17320d0610de8db28c74e"}, diff --git a/pyproject.toml b/pyproject.toml index 1ff985cf2..a3b585829 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,13 +44,15 @@ pytest = "~5.4" mypy = "~0.770" black = "19.10b0" nbsphinx = "~0.5" -sphinx = "~2.4" +sphinx = "^3" toml = "^0.10.0" rstcheck = "^3.3.1" sphinx-autobuild = "^0.7.1" pytest-cov = "^2.8.1" codecov = "^2.0.22" sphinx-autodoc-typehints = "^1.10.3" +ipython = "^7.13.0" +rope = "^0.16.0" [tool.black] line-length = 88