From 404a139ca883ebeb4afed0f53a9efaf3cfc57247 Mon Sep 17 00:00:00 2001 From: Simon Brugman Date: Tue, 22 Sep 2020 23:00:10 +0200 Subject: [PATCH 1/8] Remove python 3.9-dev --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index baa505e7..f721af23 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,9 +8,6 @@ jobs: - python: 3.6 - python: 3.7 - python: 3.8 - - python: 3.9-dev - allow_failures: - - python: 3.9-dev env: - PANDAS="<1" From d6c09b224b68647ec6c8ebe9c8b715babfa385b5 Mon Sep 17 00:00:00 2001 From: Simon Brugman Date: Tue, 22 Sep 2020 23:34:26 +0200 Subject: [PATCH 2/8] TST: use full matrix --- .travis.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index f721af23..0acf3835 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,11 +3,10 @@ dist: bionic language: python cache: pip -jobs: - include: - - python: 3.6 - - python: 3.7 - - python: 3.8 +python: + - '3.6' + - '3.7' + - '3.8' env: - PANDAS="<1" From 9b86c9e72beb982ab1aba42550aca6808d18bf8a Mon Sep 17 00:00:00 2001 From: sbrugman Date: Tue, 22 Sep 2020 23:46:57 +0200 Subject: [PATCH 3/8] Fix documentation --- docsrc/source/visions/getting_started/usage/relations.rst | 6 +++--- docsrc/source/visions/getting_started/usage/types.rst | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docsrc/source/visions/getting_started/usage/relations.rst b/docsrc/source/visions/getting_started/usage/relations.rst index 5ce6136c..4aa80b75 100644 --- a/docsrc/source/visions/getting_started/usage/relations.rst +++ b/docsrc/source/visions/getting_started/usage/relations.rst @@ -9,8 +9,8 @@ Going back to our integer example. .. code-block:: python - >>> import visions as v - >>> v.Integer.get_relations() + >>> import visions as v + >>> v.Integer.relations [IdentityRelation(Generic -> Integer), InferenceRelation(Float -> Integer), InferenceRelation(String -> Integer)] @@ -19,7 +19,7 @@ Now imagine a series of floats like `[1.0, 2.0, 3.0]`. .. code-block:: python - >>> float_int_relation = v.Integer.get_relations()[1] + >>> float_int_relation = v.Integer.relations[1] >>> series = pd.Series([1.0, 2.0, 3.0]) >>> series in v.Integer diff --git a/docsrc/source/visions/getting_started/usage/types.rst b/docsrc/source/visions/getting_started/usage/types.rst index c41730a4..56d80fcd 100644 --- a/docsrc/source/visions/getting_started/usage/types.rst +++ b/docsrc/source/visions/getting_started/usage/types.rst @@ -23,7 +23,7 @@ In practice this looks like .. code-block:: python - >>> import visions as v + >>> import visions as v >>> test_series = pd.Series(['Apple', 'Orange', 'Pear']) >>> test_series in v.String True @@ -42,8 +42,8 @@ represents a mapping between types. Let's take the example of an integer .. code-block:: python - >>> import visions as v - >>> v.Integer.get_relations() + >>> import visions as v + >>> v.Integer.relations [IdentityRelation(Generic -> Integer), InferenceRelation(Float -> Integer), InferenceRelation(String -> Integer)] From 8bcb721734695489b5f52154020a57ebbf7da7f1 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 22 Sep 2020 22:15:44 +0000 Subject: [PATCH 4/8] [skip ci] Updating documentation --- .../getting_started/usage/relations.rst.txt | 6 ++--- .../getting_started/usage/types.rst.txt | 6 ++--- docs/searchindex.js | 2 +- .../getting_started/usage/relations.html | 12 +++++----- docs/visions/getting_started/usage/types.html | 22 +++++++++---------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/_sources/visions/getting_started/usage/relations.rst.txt b/docs/_sources/visions/getting_started/usage/relations.rst.txt index 5ce6136c..4aa80b75 100644 --- a/docs/_sources/visions/getting_started/usage/relations.rst.txt +++ b/docs/_sources/visions/getting_started/usage/relations.rst.txt @@ -9,8 +9,8 @@ Going back to our integer example. .. code-block:: python - >>> import visions as v - >>> v.Integer.get_relations() + >>> import visions as v + >>> v.Integer.relations [IdentityRelation(Generic -> Integer), InferenceRelation(Float -> Integer), InferenceRelation(String -> Integer)] @@ -19,7 +19,7 @@ Now imagine a series of floats like `[1.0, 2.0, 3.0]`. .. code-block:: python - >>> float_int_relation = v.Integer.get_relations()[1] + >>> float_int_relation = v.Integer.relations[1] >>> series = pd.Series([1.0, 2.0, 3.0]) >>> series in v.Integer diff --git a/docs/_sources/visions/getting_started/usage/types.rst.txt b/docs/_sources/visions/getting_started/usage/types.rst.txt index c41730a4..56d80fcd 100644 --- a/docs/_sources/visions/getting_started/usage/types.rst.txt +++ b/docs/_sources/visions/getting_started/usage/types.rst.txt @@ -23,7 +23,7 @@ In practice this looks like .. code-block:: python - >>> import visions as v + >>> import visions as v >>> test_series = pd.Series(['Apple', 'Orange', 'Pear']) >>> test_series in v.String True @@ -42,8 +42,8 @@ represents a mapping between types. Let's take the example of an integer .. code-block:: python - >>> import visions as v - >>> v.Integer.get_relations() + >>> import visions as v + >>> v.Integer.relations [IdentityRelation(Generic -> Integer), InferenceRelation(Float -> Integer), InferenceRelation(String -> Integer)] diff --git a/docs/searchindex.js b/docs/searchindex.js index 4bf9d637..5b89171b 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","visions/api","visions/api/_autosummary/visions.application.summaries.frame.dataframe_summary","visions/api/_autosummary/visions.application.summaries.functional.summarize","visions/api/_autosummary/visions.application.summaries.functional.summarize_frame","visions/api/_autosummary/visions.application.summaries.functional.summarize_series","visions/api/_autosummary/visions.application.summaries.series.base_summary","visions/api/_autosummary/visions.application.summaries.series.category_summary","visions/api/_autosummary/visions.application.summaries.series.email_address_summary","visions/api/_autosummary/visions.application.summaries.series.file_summary","visions/api/_autosummary/visions.application.summaries.series.image_summary","visions/api/_autosummary/visions.application.summaries.series.missing_summary","visions/api/_autosummary/visions.application.summaries.series.numerical_basic_summary","visions/api/_autosummary/visions.application.summaries.series.numerical_summary","visions/api/_autosummary/visions.application.summaries.series.path_summary","visions/api/_autosummary/visions.application.summaries.series.range_summary","visions/api/_autosummary/visions.application.summaries.series.text_summary","visions/api/_autosummary/visions.application.summaries.series.unique_summary","visions/api/_autosummary/visions.application.summaries.series.url_summary","visions/api/_autosummary/visions.application.summaries.series.zero_summary","visions/api/_autosummary/visions.functional.cast_to_detected","visions/api/_autosummary/visions.functional.cast_to_inferred","visions/api/_autosummary/visions.functional.compare_detect_inference_frame","visions/api/_autosummary/visions.functional.detect_type","visions/api/_autosummary/visions.functional.infer_type","visions/api/_autosummary/visions.functional.type_inference_report_frame","visions/api/_autosummary/visions.relations.relations.IdentityRelation","visions/api/_autosummary/visions.relations.relations.InferenceRelation","visions/api/_autosummary/visions.relations.relations.TypeRelation","visions/api/_autosummary/visions.types.boolean","visions/api/_autosummary/visions.types.categorical","visions/api/_autosummary/visions.types.complex","visions/api/_autosummary/visions.types.count","visions/api/_autosummary/visions.types.date","visions/api/_autosummary/visions.types.date_time","visions/api/_autosummary/visions.types.file","visions/api/_autosummary/visions.types.float","visions/api/_autosummary/visions.types.generic","visions/api/_autosummary/visions.types.geometry","visions/api/_autosummary/visions.types.image","visions/api/_autosummary/visions.types.integer","visions/api/_autosummary/visions.types.ip_address","visions/api/_autosummary/visions.types.object","visions/api/_autosummary/visions.types.ordinal","visions/api/_autosummary/visions.types.path","visions/api/_autosummary/visions.types.string","visions/api/_autosummary/visions.types.time","visions/api/_autosummary/visions.types.time_delta","visions/api/_autosummary/visions.types.type.VisionsBaseType","visions/api/_autosummary/visions.types.url","visions/api/_autosummary/visions.types.uuid","visions/api/_autosummary/visions.typesets.VisionsTypeset","visions/api/_autosummary/visions.typesets.complete_set","visions/api/_autosummary/visions.typesets.geometry_set","visions/api/_autosummary/visions.typesets.standard_set","visions/api/_autosummary/visions.utils.coercion.test_utils","visions/api/_autosummary/visions.utils.graph","visions/api/_autosummary/visions.utils.images.image_utils","visions/api/_autosummary/visions.utils.monkeypatches.imghdr_patch","visions/api/_autosummary/visions.utils.monkeypatches.pathlib_patch","visions/api/_autosummary/visions.utils.warning_handling","visions/api/functional","visions/api/relations","visions/api/summaries","visions/api/types","visions/api/typesets","visions/api/utils","visions/applications/applications","visions/applications/compression","visions/applications/integration","visions/applications/machine_learning","visions/applications/summarizer","visions/applications/validation","visions/background/about","visions/background/background","visions/background/data_type_view","visions/background/engineering_view","visions/background/goals","visions/background/graph_view","visions/background/motivation","visions/background/nested_set_view","visions/background/theory","visions/contributing/contributing","visions/contributing/support","visions/contributing/type","visions/getting_started/concepts","visions/getting_started/examples","visions/getting_started/examples/casting","visions/getting_started/examples/membership","visions/getting_started/examples/summaries","visions/getting_started/extending","visions/getting_started/installation","visions/getting_started/introduction","visions/getting_started/testing","visions/getting_started/usage","visions/getting_started/usage/defaults","visions/getting_started/usage/import","visions/getting_started/usage/relations","visions/getting_started/usage/types","visions/getting_started/usage/typesets"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst","visions/api.rst","visions/api/_autosummary/visions.application.summaries.frame.dataframe_summary.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize_frame.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize_series.rst","visions/api/_autosummary/visions.application.summaries.series.base_summary.rst","visions/api/_autosummary/visions.application.summaries.series.category_summary.rst","visions/api/_autosummary/visions.application.summaries.series.email_address_summary.rst","visions/api/_autosummary/visions.application.summaries.series.file_summary.rst","visions/api/_autosummary/visions.application.summaries.series.image_summary.rst","visions/api/_autosummary/visions.application.summaries.series.missing_summary.rst","visions/api/_autosummary/visions.application.summaries.series.numerical_basic_summary.rst","visions/api/_autosummary/visions.application.summaries.series.numerical_summary.rst","visions/api/_autosummary/visions.application.summaries.series.path_summary.rst","visions/api/_autosummary/visions.application.summaries.series.range_summary.rst","visions/api/_autosummary/visions.application.summaries.series.text_summary.rst","visions/api/_autosummary/visions.application.summaries.series.unique_summary.rst","visions/api/_autosummary/visions.application.summaries.series.url_summary.rst","visions/api/_autosummary/visions.application.summaries.series.zero_summary.rst","visions/api/_autosummary/visions.functional.cast_to_detected.rst","visions/api/_autosummary/visions.functional.cast_to_inferred.rst","visions/api/_autosummary/visions.functional.compare_detect_inference_frame.rst","visions/api/_autosummary/visions.functional.detect_type.rst","visions/api/_autosummary/visions.functional.infer_type.rst","visions/api/_autosummary/visions.functional.type_inference_report_frame.rst","visions/api/_autosummary/visions.relations.relations.IdentityRelation.rst","visions/api/_autosummary/visions.relations.relations.InferenceRelation.rst","visions/api/_autosummary/visions.relations.relations.TypeRelation.rst","visions/api/_autosummary/visions.types.boolean.rst","visions/api/_autosummary/visions.types.categorical.rst","visions/api/_autosummary/visions.types.complex.rst","visions/api/_autosummary/visions.types.count.rst","visions/api/_autosummary/visions.types.date.rst","visions/api/_autosummary/visions.types.date_time.rst","visions/api/_autosummary/visions.types.file.rst","visions/api/_autosummary/visions.types.float.rst","visions/api/_autosummary/visions.types.generic.rst","visions/api/_autosummary/visions.types.geometry.rst","visions/api/_autosummary/visions.types.image.rst","visions/api/_autosummary/visions.types.integer.rst","visions/api/_autosummary/visions.types.ip_address.rst","visions/api/_autosummary/visions.types.object.rst","visions/api/_autosummary/visions.types.ordinal.rst","visions/api/_autosummary/visions.types.path.rst","visions/api/_autosummary/visions.types.string.rst","visions/api/_autosummary/visions.types.time.rst","visions/api/_autosummary/visions.types.time_delta.rst","visions/api/_autosummary/visions.types.type.VisionsBaseType.rst","visions/api/_autosummary/visions.types.url.rst","visions/api/_autosummary/visions.types.uuid.rst","visions/api/_autosummary/visions.typesets.VisionsTypeset.rst","visions/api/_autosummary/visions.typesets.complete_set.rst","visions/api/_autosummary/visions.typesets.geometry_set.rst","visions/api/_autosummary/visions.typesets.standard_set.rst","visions/api/_autosummary/visions.utils.coercion.test_utils.rst","visions/api/_autosummary/visions.utils.graph.rst","visions/api/_autosummary/visions.utils.images.image_utils.rst","visions/api/_autosummary/visions.utils.monkeypatches.imghdr_patch.rst","visions/api/_autosummary/visions.utils.monkeypatches.pathlib_patch.rst","visions/api/_autosummary/visions.utils.warning_handling.rst","visions/api/functional.rst","visions/api/relations.rst","visions/api/summaries.rst","visions/api/types.rst","visions/api/typesets.rst","visions/api/utils.rst","visions/applications/applications.rst","visions/applications/compression.rst","visions/applications/integration.rst","visions/applications/machine_learning.rst","visions/applications/summarizer.rst","visions/applications/validation.rst","visions/background/about.rst","visions/background/background.rst","visions/background/data_type_view.rst","visions/background/engineering_view.rst","visions/background/goals.rst","visions/background/graph_view.rst","visions/background/motivation.rst","visions/background/nested_set_view.rst","visions/background/theory.rst","visions/contributing/contributing.rst","visions/contributing/support.rst","visions/contributing/type.rst","visions/getting_started/concepts.rst","visions/getting_started/examples.rst","visions/getting_started/examples/casting.rst","visions/getting_started/examples/membership.rst","visions/getting_started/examples/summaries.rst","visions/getting_started/extending.rst","visions/getting_started/installation.rst","visions/getting_started/introduction.rst","visions/getting_started/testing.rst","visions/getting_started/usage.rst","visions/getting_started/usage/defaults.rst","visions/getting_started/usage/import.rst","visions/getting_started/usage/relations.rst","visions/getting_started/usage/types.rst","visions/getting_started/usage/typesets.rst"],objects:{"visions.application.summaries.frame":{dataframe_summary:[2,0,1,""]},"visions.application.summaries.functional":{summarize:[3,0,1,""],summarize_frame:[4,0,1,""],summarize_series:[5,0,1,""]},"visions.application.summaries.series":{base_summary:[6,0,1,""],category_summary:[7,0,1,""],email_address_summary:[8,0,1,""],file_summary:[9,0,1,""],image_summary:[10,0,1,""],missing_summary:[11,0,1,""],numerical_basic_summary:[12,0,1,""],numerical_summary:[13,0,1,""],path_summary:[14,0,1,""],range_summary:[15,0,1,""],text_summary:[16,0,1,""],unique_summary:[17,0,1,""],url_summary:[18,0,1,""],zero_summary:[19,0,1,""]},"visions.functional":{cast_to_detected:[20,0,1,""],cast_to_inferred:[21,0,1,""],compare_detect_inference_frame:[22,0,1,""],detect_type:[23,0,1,""],infer_type:[24,0,1,""],type_inference_report_frame:[25,0,1,""]},"visions.relations.relations":{IdentityRelation:[26,1,1,""],InferenceRelation:[27,1,1,""],TypeRelation:[28,1,1,""]},"visions.relations.relations.IdentityRelation":{__init__:[26,2,1,""]},"visions.relations.relations.InferenceRelation":{__init__:[27,2,1,""]},"visions.relations.relations.TypeRelation":{__init__:[28,2,1,""]},"visions.types":{"boolean":[29,3,0,"-"],"float":[36,3,0,"-"],categorical:[30,3,0,"-"],complex:[31,3,0,"-"],count:[32,3,0,"-"],date:[33,3,0,"-"],date_time:[34,3,0,"-"],file:[35,3,0,"-"],generic:[37,3,0,"-"],geometry:[38,3,0,"-"],image:[39,3,0,"-"],integer:[40,3,0,"-"],ip_address:[41,3,0,"-"],object:[42,3,0,"-"],ordinal:[43,3,0,"-"],path:[44,3,0,"-"],string:[45,3,0,"-"],time:[46,3,0,"-"],time_delta:[47,3,0,"-"],url:[49,3,0,"-"],uuid:[50,3,0,"-"]},"visions.types.boolean":{Boolean:[29,1,1,""]},"visions.types.categorical":{Categorical:[30,1,1,""]},"visions.types.complex":{Complex:[31,1,1,""]},"visions.types.count":{Count:[32,1,1,""]},"visions.types.date":{Date:[33,1,1,""]},"visions.types.date_time":{DateTime:[34,1,1,""]},"visions.types.file":{File:[35,1,1,""]},"visions.types.float":{Float:[36,1,1,""]},"visions.types.generic":{Generic:[37,1,1,""]},"visions.types.geometry":{Geometry:[38,1,1,""],string_is_geometry:[38,0,1,""]},"visions.types.image":{Image:[39,1,1,""]},"visions.types.integer":{Integer:[40,1,1,""]},"visions.types.ip_address":{IPAddress:[41,1,1,""]},"visions.types.object":{Object:[42,1,1,""]},"visions.types.ordinal":{Ordinal:[43,1,1,""]},"visions.types.path":{Path:[44,1,1,""]},"visions.types.string":{String:[45,1,1,""]},"visions.types.time":{Time:[46,1,1,""]},"visions.types.time_delta":{TimeDelta:[47,1,1,""]},"visions.types.type":{VisionsBaseType:[48,1,1,""]},"visions.types.type.VisionsBaseType":{__init__:[48,2,1,""]},"visions.types.url":{URL:[49,1,1,""]},"visions.types.uuid":{UUID:[50,1,1,""]},"visions.typesets":{VisionsTypeset:[51,1,1,""],complete_set:[52,3,0,"-"],geometry_set:[53,3,0,"-"],standard_set:[54,3,0,"-"]},"visions.typesets.VisionsTypeset":{__init__:[51,2,1,""],base_graph:[51,4,1,""],relation_graph:[51,4,1,""],types:[51,4,1,""]},"visions.typesets.complete_set":{CompleteSet:[52,1,1,""]},"visions.typesets.geometry_set":{GeometrySet:[53,1,1,""]},"visions.typesets.standard_set":{StandardSet:[54,1,1,""]},"visions.utils":{graph:[56,3,0,"-"],warning_handling:[60,3,0,"-"]},"visions.utils.coercion":{test_utils:[55,3,0,"-"]},"visions.utils.coercion.test_utils":{coercion_equality_test:[55,0,1,""],coercion_map:[55,0,1,""],coercion_map_test:[55,0,1,""],coercion_test:[55,0,1,""],coercion_true_test:[55,0,1,""],option_coercion_evaluator:[55,0,1,""]},"visions.utils.graph":{output_graph:[56,0,1,""]},"visions.utils.images":{image_utils:[57,3,0,"-"]},"visions.utils.images.image_utils":{decode_byte_exif:[57,0,1,""],extract_exif:[57,0,1,""],get_image_shape:[57,0,1,""],hash_image:[57,0,1,""],is_image_truncated:[57,0,1,""],open_image:[57,0,1,""]},"visions.utils.monkeypatches":{imghdr_patch:[58,3,0,"-"],pathlib_patch:[59,3,0,"-"]},"visions.utils.monkeypatches.imghdr_patch":{test_jpeg1:[58,0,1,""],test_jpeg2:[58,0,1,""],test_jpeg3:[58,0,1,""]},"visions.utils.warning_handling":{discard_stderr:[60,0,1,""]}},objnames:{"0":["py","function","Python function"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","module","Python module"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:function","1":"py:class","2":"py:method","3":"py:module","4":"py:attribute"},terms:{"0000":87,"00000000":87,"000000000000":87,"01234":89,"02145":73,"05381575185":71,"0b8a22ca":[50,87],"100":81,"100000":71,"100005":71,"1001":69,"1012":69,"10x":68,"121223":89,"123123":89,"127":41,"128":41,"160":71,"16664":71,"1666665":71,"166666666668":71,"1666766670":71,"191":71,"2004":72,"2006":70,"2010":71,"2011":71,"2015":75,"2016":75,"2017":[33,34],"2018":69,"2019":[33,34],"2020":[73,80],"21105":73,"2145":73,"27778":71,"34th":69,"396":71,"40826":71,"449489736169953":71,"449930718552894":71,"484":76,"4ad2f664102c031705d4eda6bf50e27a78bfc96d":79,"4df5":[50,87],"4f63":[50,87],"593":71,"611111111113":71,"61275cf63d981d332220fa3aef157989fcef3305":79,"74999":71,"7c900e9a23c6":[50,87],"7eguido":[49,87],"80ad":[50,87],"8442":[50,87],"85ac":[50,87],"88c8":[50,87],"99985":71,"999999974801513":71,"\u0433\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u044c":89,"\u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u0458\u0430":89,"\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430":89,"\u05d0":89,"\u05d0\u05d9\u05d6":89,"\u05d9\u05e6\u05d0":89,"\u05dc\u05d9\u05e0\u05e7\u05e1":89,"\u05e0\u05d2\u05e2\u05e0\u05e2\u05dd":89,"\u05e1\u05d9\u05d9":89,"\u05e4":89,"\u05e6\u05d5":89,"\u05e8\u05e2\u05db\u05d8":89,"\u05e9\u05d0":89,"\u0627\u0644\u062f\u0641":89,"\u0627\u0644\u0631\u062c\u0644":89,"\u0627\u0644\u0633\u064a\u062f":89,"\u0628\u0627\u062a\u064a":89,"\u0628\u0648\u0628":89,"\u062f\u064a\u0644\u0627\u0646":89,"\u0641\u0627\u0644\u0646\u062a\u064a\u0646":89,"\u1000":89,"\u1001":89,"\u1004":89,"\u1005\u1000":89,"\u1009":89,"\u100f":89,"\u1010":89,"\u1019":89,"\u101a":89,"\u101b":89,"\u101b\u100a":89,"\u101e\u1004":89,"abstract":[1,48,75,76,77,85,92,98],"boolean":[1,52,53,54,68,75,76,80,81,88,90,95,99],"byte":[57,68],"case":[70,76,90,93,99],"catch":99,"class":[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,70,76,90],"default":[70,71,76,77,78,84,90,91,92,93,99],"float":[1,28,52,53,54,55,70,71,72,75,79,81,85,87,95,97,98,99],"function":[1,26,28,55,71,72,75,78,79,81,85,87,89,90,93,94,99],"import":[25,28,31,37,38,41,44,49,50,70,77,87,88,89,90,93,97,98,99],"int":[57,71,75,88],"new":[69,71,75,76,77,83,90],"null":76,"public":[69,73],"return":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,38,55,56,57,70,78,81,90,99],"static":[68,79],"super":90,"true":[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,56,57,70,78,80,88,90,97,98],"try":[38,60,75,82],"var":[12,71],"while":[68,69,70,75,81,90,97,98],Adding:75,And:0,For:[0,28,67,68,70,72,75,76,77,78,79,80,81,85,90,91,93],Going:97,Not:[79,97],One:[70,79,86,96],The:[51,54,55,69,70,71,72,73,75,76,78,79,82,88,89,90,91,92,93,96,97],There:[68,70,71,75,79,80,93],These:[72,81,85,99],Yes:[55,68],__init__:[26,27,28,48,51,84,90],_get_rel:90,aaa381d6:[50,87],abedjan:69,abid:82,abl:[79,81,99],about:[70,80,83,98,99],abov:[72,82],access:[82,96],accur:[48,72],achiev:75,action:[82,99],activ:70,actual:[75,76,77,81],add:[79,84,90],added:76,adding:[76,79,90],addit:[67,69,78,82,90,91],addition:[81,93],address:[41,79],adequ:82,adher:[70,78],adt:75,advanc:82,after:82,against:[20,21,93],aggreg:12,agre:79,aim:84,akin:81,algebra:90,algorithm:92,all:[28,33,39,52,71,75,76,78,79,80,81,86,91,93,97,98,99],allow:[69,75,76,79,85,90,97],alreadi:81,also:[55,70,71,75,78,79,81,90,96,98],altern:[28,90,96],although:[67,90],alwai:72,ambigu:70,amsterdam:69,analysi:[68,70,71,72,75,86,90,92,99],analyst:81,analyt:81,ani:[13,71,76,78,81,85,90,99],anoth:[55,69,70,71,75,78,79,92,98,99],answer:[76,98,99],api:[48,84,90,99],appear:79,appl:[71,75,89,98],appli:[70,93,97],applic:[1,72,79,89,92],approach:69,appropri:0,approx:72,approxim:[68,72],april:69,arab:89,arbitrarili:99,arg:[52,53,54,93],argument:[79,81],around:75,arr:68,arrai:[85,90],articl:73,ascii:71,ask:83,aspect:[70,75],assert:[72,93],assess:93,associ:[51,71,78,81],assum:70,assumpt:[72,79],attempt:[75,99],attr:[26,27,28],attribut:[51,81],aurum2018datadiscoveri:69,aurum:69,author:73,autom:[71,72,79],automat:[68,70,82,93],automl:[70,79],avail:[81,96,99],avoid:70,awai:70,awesom:71,axelderomblai:79,axiom:77,back:[84,97],background:70,bad:60,bag:78,barjn:77,base:[22,23,25,55,68,69,70,76,78,90,93,99],base_graph:51,base_summari:1,baselin:99,basic:[0,12,71,75,89,98],becaus:[71,72,85,99],been:72,befor:[78,96],begin:[76,82,86],behaviour:[76,83],behind:81,being:[75,82],belief:79,believ:79,belong:[70,99],below:[71,80,82,84,93,99],benefici:76,benefit:72,best:99,better:0,between:[28,51,70,71,72,75,78,79,81,85,90,97,98],beyond:[71,99],bias:70,bibtex:73,binari:[70,90],bishop2006pattern:70,bishop:70,bit:76,bitmap:75,bjarn:[0,82],black:82,blob:79,block:[89,98],block_alias_valu:71,block_valu:[71,89],bond:97,book:[72,79],bool:[10,38,56,57,68,75,88,90],booleannl:90,both:[51,69,70,77,78,81],bound:81,broadli:99,brugman2020:73,brugman:73,build:[48,76,82,92,98],builtin:81,bull:69,bulwark:72,burmes:89,busi:81,calcul:[10,15],calibr:70,call:[81,99],callabl:55,can:[0,28,56,67,68,69,70,71,72,73,75,76,78,79,80,81,82,85,90,91,93,94,96,97,98,99],cancer:70,cannot:[68,81],cap:78,capabl:[98,99],card:[71,89],carter:45,cast:[20,21,75,81,86],cast_df:87,cast_to_detect:1,cast_to_inf:[1,87,99],casting_exampl:87,cat:90,categor:[1,7,52,53,54,70,75,79,90,95,99],categori:[30,43,70,75,81,89,90],categoricalstr:90,category_alias_valu:[71,89],category_s:7,category_short_valu:71,category_summari:1,caus:72,centric:79,certain:[72,76],certainti:70,champion:45,chang:[1,55,90],chapter:70,characterist:[71,98],check:[55,71,72,82,90,98],checklist:84,choic:76,choos:[87,90],chosen:92,circl:80,circumst:85,citat:73,classif:70,classifi:70,classmethod:90,clean:92,clone:91,close:76,closest:99,cls:90,code:[67,68,70,71,72,82,85,90],coerc:[55,81],coercion:[1,75,81],coercion_equality_test:55,coercion_map:55,coercion_map_test:55,coercion_test:55,coercion_true_test:55,collect:[51,79,81,85,93],column:[20,21,22,23,24,69,79,89,90],com:[49,69,72,79,87,91],combat:79,combin:[69,75,93,99],come:[69,80,81,85,90],command:82,common:[48,69,71,79,89],commun:79,compani:69,compar:[22,25,85],compare_detect_inference_fram:[1,25,90],complet:[52,67,72,80,87,91,95,99],complete_set:1,completeset:[52,78,80,87,89,90,93,96,99],completesummari:[71,89],completetypeset:71,complex:[1,52,53,54,72,75,76,77,79,92,95,99],complic:85,compon:[72,75,81,98],compos:[51,77,81,85],compress:79,comput:[70,81,85],computation:79,concept:[74,76,94],conceptu:81,concern:[75,79],concret:[1,75,98],confer:69,configur:85,conflict:96,consequ:68,consid:[68,69,70,90],consist:[55,68,72,81,85],constrain:[80,85],constraint:[0,55,75,78,80],construct:[76,81,84,85,99],contain:[11,69,71,79,80,81,85,90],contains_map:93,contains_op:90,content:76,context:[22,23,24,25,79],continu:[70,78,84],continuumio:79,contradictori:81,contravari:76,contribut:[67,90,91],control:89,conveni:90,convers:[75,92],convert:[28,55,79,92,99],copi:[56,76,99],core:[71,76,94],correct:[70,72],correspond:[75,85],cost:70,could:[0,67,69,70,72,90,96],count:[1,11,13,52,70],coupl:[72,79,81],covari:76,cram:79,creat:[55,56,71,75,80,84,87,89,90,92],creation:92,creator:0,critic:69,csparpa:72,csv:[25,69,70],currency_symbol:89,current:[24,69,71,76,79,81,90,93,96],custom:[48,70,75,79,92],customset:90,cut:82,cwi:[49,87],cyberpanda:79,cycl:[78,81],cyril:89,dai:[47,71,85],data:[0,20,21,23,24,28,48,55,58,70,73,76,77,78,80,81,85,86,87,90,92,99],data_analysi:90,datafram:[2,20,21,22,23,24,25,68,76,87,89,99],dataframe_summari:1,dataset:[25,68,69,70,71,72,81,92],datasetsearch:69,date:[1,52,71,75,79,80,81,90],date_pars:79,date_tim:[1,90],datetim:[33,34,46,52,53,54,75,79,80,81,85,90,95,96,99],datetime64:71,datetime_seri:71,datetimeintyyyymmdd:90,dayfirst:79,debug:90,decid:[68,78,81],decimal_numb:89,decis:70,declar:[85,90],decod:57,decode_byte_exif:57,decoupl:[68,72,76,79,98],dedic:71,deeper:85,def:[90,93],defin:[0,28,72,75,78,79,81,85,90,92,93,97,98,99],definit:[71,80,81],delimet:79,demonstr:[71,87,88,89],denot:[68,80,85],depend:[70,72,77,79,85,91],depth:78,deriv:51,describ:81,design:[71,72,75,77,81],detail:[75,90],detect:[10,22,23,25,75,76,81,87,92,93],detect_typ:[1,87,89,99],determin:[28,70,81],determinist:81,dev:[72,75,82],develop:[69,72,77,79,81,82,90,91,92],diagnosi:70,dict:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,23,24,28,55,57],dictionari:[23,24],didn:99,differ:[75,78,79,81,85,99],differenti:70,difficult:70,digit:[72,89],digraph:56,direct:[78,81],directori:93,discard_stderr:60,discret:70,discuss:[67,72,75,76],disjoint:[78,81],disk:[81,85],distinct:[68,70,75,81,85,90,98],distinguish:[70,81],doc:[50,69,79,82,94],docsrc:84,docsrcsourcevis:82,docstr:84,document:[75,76,84,90,99],doe:[56,68,74,75,76],doi:73,dollar:69,domain:[75,78,81,90],done:79,dot:56,down:91,downstream:67,draw:70,dtype:[6,30,43,71,75,88,90],dual:81,dummi:70,duplic:10,dure:76,dylan:[73,91],dynam:[76,85],each:[24,68,70,71,75,76,78,80,81,82,85,90,93,98,99],easi:[81,90],easier:68,easiest:96,easili:93,eav:73,eda:71,edg:[78,81],effect:[68,71,76,92,98],effici:[0,68,75,77,92],either:[56,81,90],element:[75,77,81,98],elsewher:90,email_address_summari:1,emailaddress:52,embed:70,empti:99,emptyset:78,enabl:77,encod:[28,57,68,79,85,99],encompass:[70,79],encount:70,encourag:73,end:[56,76,84],enforc:[55,70],eng:69,engard:72,engin:[69,75,99],enorm:70,enough:79,environ:[0,85],envis:75,equal:55,equival:[81,82],error:70,especi:70,essenti:[71,92],etc:[0,75],euro:69,evalu:55,even:[67,90],everi:[6,71,75,85,98],evolv:84,evolve_typ:90,exact:75,exampl:[22,25,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,67,68,70,71,72,75,76,78,79,80,81,85,91,93,94,97,98,99],excel:[70,79,80,99],except:[78,81],excit:67,exclus:[51,76,78,80,90],exercis:70,exhaust:[67,74],exif:[10,58],exif_v:57,exist:[35,77,90],existingpath:76,expand:[84,90],expect:[72,93,99],expens:79,experi:91,explain:[70,94],explicit:79,explor:67,exploratori:[71,92],expos:99,express:[75,77],extend:[0,71,76,77,78,79,92],extens:[56,69,77,79,93],extensionsdtyp:75,extra_error:55,extract:[10,75],extract_exif:57,extrem:92,fa49c44b7ed:[50,87],facilit:72,fact:90,fail:55,failur:[38,60],fairli:99,fals:[10,13,26,29,30,55,71,78,80,88,90,97,98],familiar:81,featur:83,feel:84,femal:68,fernandez:69,few:[67,81],field:[70,72],file:[1,39,44,52,56,69,70,82,83,84,85,91,95,99],file_nam:56,file_summari:1,fill:[70,86],find:[67,69,73,74,80,81,82,84,90,96],finger:82,finit:70,first:[20,21,69,75,78,81],five:72,fix:77,flexibl:[0,79,81,85,92],float_int_rel:97,fluentcheck:72,fmri:70,focu:[70,72],folder:82,follow:[52,53,54,81,88,89,90,92,95,96],footnot:[69,70,72],forest:70,form:85,formal:78,format:[22,25,58,89],forward:69,found:[73,76,85],foundat:[77,79],frame:1,framework:[77,79,85],free:[81,84],freedom:81,frequenc:[6,71],from:[23,24,25,28,38,41,49,51,57,68,69,70,71,72,75,76,77,78,80,81,82,85,87,89,91,92,93,96,98,99],fruit:[75,85,98],full:[51,69],fulli:67,func:60,fundament:[0,98],furthermor:94,futur:71,gather:90,gener:[1,26,27,28,55,68,78,80,81,82,83,88,89,93,97,98],geodata:91,geometri:[1,52,53,85,91,95,99],geometry_set:1,geometryset:[53,78],get:[0,60,71,82],get_contains_cas:93,get_image_shap:57,get_rel:[90,97,98],get_seri:93,git:91,github:[49,72,73,79,82,87,91],give:[70,75,81],given:[22,24,55,71,76,78,85,98],goal:[76,81],goe:71,going:82,good:79,googl:69,got:[0,99],gotcha:[96,99],graph:[1,22,23,51,69,76,80,81,85,92,99],great:[72,91],great_expect:72,ground:72,group:[75,85,99],grow:79,guarante:[72,81],guid:[75,76,93],guidelin:82,h2o:79,h2oai:79,had:81,hand:69,handl:75,happen:[82,99],hardwar:0,has:[68,70,71,72,75,78,80,90,96],hash:10,hash_imag:57,have:[67,69,70,72,75,76,78,79,80,81,82,83,91,98],header:[58,79],heavili:77,hebrew:89,help:[48,67,68,75,90,92,93],helper:[72,90],henc:[78,80],here:[73,75,76,84,96],heurist:79,hidden:79,hierarch:70,high:[70,71,75],highli:72,hint:76,his:69,hit:60,hoc:79,home:[35,39,44],homepag:68,hood:[75,98],hope:79,hostedtoolcach:57,hot:70,how:[70,72,76,79,81,82,83,87,90,94,96,97],howev:[68,69,70,91],html:[49,50,70,75,79,87],http:[49,50,69,70,71,72,73,75,79,82,87,91],ian:73,icd:69,idea:[0,81,85],idempot:76,ident:[81,90],identifi:[72,93],identity_rel:26,identityrel:[1,51,90,97,98],ieee:69,ietf:50,ilya:69,imag:[1,52,56,91,95],image_summari:1,image_util:1,imagepath:76,imagin:[75,81,90,97,98],imghdr_patch:1,impact:[70,76],implement:[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,70,75,76,78,79,84,90,92,95,97,98,99],implicit:79,improv:82,includ:[6,7,51,52,53,54,76,77,79,80,84,86,87,90,91,92,93,95,99],incomplet:75,inconsist:[75,77],increas:[76,92],index:0,indic:[68,70,78,81],inf_count:71,infer:[20,21,22,24,25,68,71,75,79,80,81,85,86,87,89,90,92],infer_typ:[1,87,99],inferencerel:[1,51,96,97,98],inferenti:[26,27,28],infinit:68,inform:[10,67,69,73,76,84,99],inherit:71,initi:[48,89],input:[69,72,79,81],inspect:90,inspir:67,instanc:93,instanti:85,instead:[76,81,99],instruct:84,insur:82,int16:75,int32:75,int64:[71,75,88],int64dtyp:71,int8:75,int_rang:93,int_seri:93,int_yyyymmdd:90,integ:[1,28,32,52,53,54,55,70,75,76,81,85,87,88,90,95,96,97,98,99],integer_seri:71,integer_to_datetim:90,integer_to_datetime_year_month_dai:90,intend:[71,72,81],intens:79,interest:[0,71,81,86],intern:[69,72,75,93],intertwin:77,interv:70,introduc:[75,78,79,81,85,87,94],intuit:[75,76,80,90],invari:72,invis:97,invit:67,invok:99,ip_address:1,ipaddress:[41,52,95],ipv4address:41,iqr:71,is_categorical_dtyp:90,is_image_trunc:57,is_rel:[28,97],is_relationship:28,is_uniqu:13,isbn:72,isn:75,isort:82,issu:92,item:89,its:[70,71,81],itself:[76,77,85],jfif:58,jiddisch:89,jmenglund:72,join:89,joss:73,journal:73,jpeg:58,jpg:39,just:[38,60,68,90],keep:[76,81],kei:[0,56,72,81,85],kind:[70,93],kindli:93,know:[82,90,96],knowledg:[69,98],known:[60,70],koko:69,krekel:72,kurt:71,l454:79,label:70,lack:75,lai:79,lambda:[28,90],languag:81,larg:[72,76],latin:[71,89],learn:79,least:69,left:81,len:75,length:71,less:[68,69],let:[67,70,90,92,98,99],level:[71,75,98],lib:57,librari:[50,73,79,81,92],licens:69,lightweight:91,like:[67,69,75,78,82,85,90,97,98,99],likewis:70,limit:[75,76,80,90],list:[22,55,67,85,91,93,99],liter:80,load:[38,60,96],local:82,log:[38,60],logic:[76,81,85,98,99],logist:70,look:[67,69,75,82,90,98,99],lose:68,loss:[75,81],lossless:68,lost:70,love:79,low:75,lowercase_lett:[71,89],machin:[68,71,72,81,85,90,98],mad:71,madden:69,made:76,mai:[68,70,76,78,90],main:[71,77,79],make:[68,70,72,75,81,82,90,98],male:68,man:90,mani:[75,79],manipul:[72,90],manner:[79,85],manual:82,map:[23,24,51,55,76,80,81,90,92,93,97,98],mappabl:55,mark:93,match:[69,78,93,99],math_symbol:89,max:[12,15,71],mean:[12,67,68,70,71,72,75,81,90,99],meaning:72,meant:67,measur:70,mechan:[28,81,85,90],median:71,medic:70,meet:90,member:[80,93],membership:[75,78,80,86],membership_exampl:88,memori:[68,98],memory_s:[2,6,71],mental:70,mere:70,messag:93,metadata:69,method:[26,27,28,48,51,55,70,72,90,97],metric:70,might:[69,70,71,72,75,76,81,85,90,96,99],min:[12,15,71],minim:[68,81,91,93],minimum:[79,81],miss:[11,33,70,71,78,81,93],missing_categorical_valu:7,missing_summari:1,mix:[75,89],mlbox:79,model:92,modifi:[76,84],modifier_symbol:89,modul:[57,70],modular:76,moment:81,monkeypatch:1,monotonic_decreas:71,monotonic_increas:71,more:[0,67,68,70,73,75,76,77,79,81,85,90,91,98,99],moreov:79,most:[81,90,96],motiv:[75,76],much:[79,81],multipl:[74,75,91],mung:68,must:[78,81],mutual:[76,78],my_typeset:99,myanmar:89,mypi:82,n_observ:2,n_record:[6,71],n_uniqu:71,n_variabl:2,n_zero:71,na_count:[11,71],nai:68,name:[23,24,56,69,93],namespac:[85,96],nan:[31,36,37,42,71,75,76,87,88,93],narrowest:[78,80],nat:71,nattyp:71,necessarili:55,need:[28,68,90,91,96],nest:75,networkx:92,never:85,node:[78,81],non:[70,75],none:[13,29,55,56,75,76,78,80,88],nonspacing_mark:89,notabl:71,note:[67,68,71,75,78,79,90],noth:[26,27,56],notic:83,notion:[81,85],now:[97,99],nrow:79,nullabl:[71,75],number:[11,70,72,73,75,76,81,90],numbers_with_nan:87,numeric_seri:93,numeric_series_miss:93,numerical_basic_summari:1,numerical_summari:1,numpi:[31,37,77,85,87,88,92],object:[1,2,52,53,54,68,71,75,76,78,81,88,95,96,99],observ:[68,72],obtain:[68,71,91],obviou:67,occur:[68,76],off:71,offer:76,offic:69,often:[68,70,72,96,98],omit:99,onc:[79,87,91],one:[28,68,69,70,72,75,78,80,84,92,93,97,99],ones:93,onli:[60,68,72,75,76,79,81,90,91],open:[73,83],open_imag:57,open_punctu:89,oper:[69,75,76,78,90,99],opinion:79,oppos:[68,79],opt:57,optim:68,option:[55,57,70,81,83,84,90],option_coercion_evalu:55,orang:[71,75,89,98],order:[7,28,76,78,81,90],ordin:[1,52,70,90],org:[50,69,70,73,79,87],organ:73,orient:99,other:[68,70,71,72,76,77,79,84,90,93,98,99],other_lett:89,other_punctu:89,other_symbol:[71,89],otherwis:[55,76],our:[68,75,76,77,79,81,82,87,97],ourselv:68,out:[67,69,71],outlin:82,output:[22,25,38,55,56,60,70,71],output_graph:56,over:[68,72,79,85,99],overhead:75,overlap:[71,72],overview:71,own:[0,71,79,81,90,93],pack:80,packag:[57,67,70,71,72,73,77,79,82,83,91,92,94,96],page:[67,73,75,85,91],pair:[78,81],panda:[7,25,49,50,68,71,72,76,77,79,85,87,88,89,92,99],pandas2:75,pandasschema:72,paramet:[2,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,51,55,56,57,70],parametr:93,parent:[78,81],pars:[49,79],parser:79,part:[68,72,73,75,96],particularli:90,path:[1,35,39,52,56,57,78,95,96,99],path_series_linux:93,path_series_linux_miss:93,path_series_window:93,path_summari:1,pathlib:[35,44,96],pathlib_patch:1,patient:70,pattern:[68,70],pdt:90,pear:[71,75,89,98],peopl:82,pep:76,per:[68,76],perform:[0,20,21,68,70,75,76,77,78,79,80,81,85,92,99],permit:81,physic:[68,76],pick:92,pil:57,pip:82,place:84,plai:[71,89],plain:70,plan:70,playing_card:89,pleas:[67,71,73,82,83,84,90,91,93,99],plenti:94,plot:[56,82,91],png:[39,56],point:[38,75],posit:32,possibl:[67,69,78,80,81,85,91],potenti:[68,85,99],power:[68,75,92],practic:[70,79,81,98,99],practition:84,pre:90,precis:81,predict:70,prefer:[71,77,96],preprocess:79,preserv:68,primari:[78,81,99],print:[22,25,71,87,88,89,90],probabl:[70,81],problem:[0,72,79,81,85,92],proce:96,process:[70,71,99],produc:71,product:[70,79],profil:[49,71,73,82,87,91],program:[0,76,79],project:[68,70,71,73,82,84],proper:[69,78],properli:81,properti:[72,75],protocol:75,provid:[20,21,22,23,24,25,28,48,55,69,70,71,72,74,75,81,82,84,92,93,94],publish:73,pull:67,pure:85,purpos:[68,71,90],pydata:79,pytest:[72,82,93],python3:57,python:[0,49,50,57,79,82,85,87,90,91,92],quantil:13,quantile_25:71,quantile_50:71,quantile_5:71,quantile_75:71,quantile_95:71,queri:69,question:[83,98,99],quickli:90,rais:56,ram:68,random:70,rang:[15,47,71,72],range_summari:1,rate:72,rather:[76,99],ratio:90,rdw_typeset:90,reach:69,read:[70,76,90,91,99],read_csv:[25,79],reader:79,real:[70,71,79,92],realiti:28,realli:[91,99],reason:[79,80],recal:76,recip:79,recogn:81,recognit:70,recommend:[70,91],reduc:[72,76,77,92],redund:79,refer:[50,57,72,76],regardless:[72,81],regress:70,relat:[1,22,51,69,75,79,80,81,90,93,96,99],related_typ:[26,27,28],relation_graph:51,relationship:[26,27,28,51,76,78,81,85],releas:70,relev:[69,70,84,92],reli:[68,70,76,77],reliabl:[70,77],rememb:99,replac:90,report:[22,25,69],repositori:91,repres:[28,70,72,75,76,78,80,81,85,97,98,99],represent:[68,70,71,72,75,76,80,81,85,90],request:67,requir:[81,82,85,90,93,97],requirements_dev:91,requirements_test:91,research:69,residu:70,resolv:77,resourc:70,respect:[28,75],respons:[81,97],restrict:68,restructuredtext:82,result:[75,93],retriev:69,return_valu:13,reus:[72,93],rfc4122:50,rid:60,right:[70,92,99],robust:81,root:[78,80,81,99],row:84,rst:[82,84],rubin:45,rule:[68,70,72],run:82,runtim:76,sai:[75,78,81],said:70,same:[68,69,71,72,75,76,78,81,99],sampl:70,save:77,scan:70,scenario:70,scene:81,schema:[69,86],scheme:71,scientist:[69,81],scikit:70,scope:67,scratch:75,script:89,script_valu:[71,89],search:[69,78],second:[69,81,99],secondli:75,section:[50,67,74,76,90,94],see:[48,67,72,75,80,83,85,90,93,98,99],seek:68,seen:70,select:55,self:[48,85,90],semant:[1,68,69,70,72,73,81,84,85,92],sens:[72,90],sensibl:[71,75,77],separ:75,sequenc:[28,75,78,81,85,90,98,99],seri:[1,5,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,68,71,78,84,85,88,89,90,93,97,98,99],series_typ:[3,4,5],serv:79,server:82,set:[51,52,53,54,69,70,71,75,78,81,84,85,89,90,91,93],setminu:78,settl:91,setup:91,sever:[38,60,83,89],shape:[38,53,60],share:67,shortcom:75,shortcut:79,shorthand:82,shortli:[75,87],should:[33,67,70,72,75,77,79,81,82,93,99],show:[75,93],sibl:78,side:76,signatur:48,silli:[38,60],similar:78,similarli:[78,80],simon:73,simpl:[75,77,81,90,93,99],simpli:[86,90],simplifi:[67,77,90],sinc:81,singl:[55,74,79,81,90],site:57,size:76,skew:71,slim:91,small:[58,90],soep:89,softwar:[0,68,72,73,82],sole:70,solid:77,solut:[67,68,69,76,79],solv:[75,79,81,85,92],some:[68,69,81,82,83],someth:75,sort:56,sourc:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,71,73,82,84,90],space_separ:89,spacing_mark:89,speak:99,special:[70,89,90,91,98],specialis:70,specif:[50,70,76,81,85,90,91,93,99],specifi:76,spend:69,sphinx:82,split:90,springer:70,spun:71,src:84,stabl:[70,79],stai:76,standard:[50,53,54,69,72,90,95,99],standard_set:1,standardset:[25,54,78,99],start:[78,81,82],starter:90,state:[28,38,79],statist:[70,71],statu:69,std:[12,71],step:71,still:[0,99],stonebrak:69,stonebraker2018dataintegr:69,stop:82,storag:[68,75,76,92],store:[68,70,71,72,75,79,81],str:[22,23,24,25,56,57,71],strategi:70,string:[1,52,53,54,70,81,85,87,89,95,97,98,99],string_is_geometri:38,string_seri:71,strong:79,stroustrup:[0,77,82],structur:[78,99],style:82,subclass:90,subsequ:[75,79],subset:[78,80],subtract:90,succe:55,success:55,suit:90,suitabl:90,sum:[12,71],summar:[1,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,70,72,89],summari:[1,75,86],summaries_exampl:89,summarize_fram:1,summarize_seri:[1,71],supertyp:71,supervis:70,support:[52,53,54,69,76,78,79,90,99],suppress:[38,60],surject:[78,81],svg:56,svm:70,symbol:78,syntax:96,sys:60,system:[0,68,69,70,79,92],tabl:[69,84],tabular:92,take:[81,98,99],taken:70,talk:69,tangl:71,target:70,task:[67,68,69,70,75,81],tell:93,templat:[84,93],term:85,test2:[35,39,44],test:[55,81,84,85,91,97,98],test_:84,test_complete_set:93,test_contain:93,test_jpeg1:58,test_jpeg2:58,test_jpeg3:58,test_seri:[98,99],test_util:1,testable_seri:93,text:[25,69,70,71,75],text_summari:[1,71],textrm:78,than:[69,99],thei:[28,71,75,81],them:[51,67,75,96,97,99],theori:70,therefor:[71,81],thi:[22,55,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,85,87,90,91,92,94,96,98,99],thing:77,think:76,third:75,those:[69,90],though:67,thousand:79,three:[78,81,93,98,99],through:[75,78,92,96],tight:[72,79],tightli:81,time:[1,52,69,72,75,77,78,79,81,90],time_delta:1,timedelta:[47,52,53,54,71,75,90,99],timestamp:71,titan:69,titl:73,tmiguelt:72,to_str:87,todo:76,togeth:[75,81],tool:[50,70,75,77,82,92],top:[71,92],train:70,transform:[26,27,28,81,85,97],transformed_seri:97,travers:[78,81,85,92,99],tree:[71,78,81],tri:76,trivial:[68,70,75],truncat:57,tupl:[13,20,21,22,57],turn:79,two:[28,68,69,70,75,76,78,81,85,90,97,98,99],txt:[35,44,91],type:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,51,52,53,54,55,56,57,68,69,71,72,77,80,81,87,89,91,92,93,94,95,96,99],type_aft:[22,90],type_befor:[22,90],type_geometri:91,type_image_path:91,type_inference_report_fram:[1,22],type_nam:84,typerel:1,typeset:[1,20,21,22,23,24,25,70,76,77,78,79,81,84,86,87,89,92,94,96],typeset_1:99,typeset_2:99,typic:[68,93],uint64:75,ultim:76,uncov:79,under:[0,69,75,98],underli:[28,75,81,98],understand:[70,74,75,76,80,81,85],unexpect:83,unicod:71,union:[13,23,24,55,56,57,71],uniqu:[72,81,90],unique_summari:1,univers:[78,81],unnecessarili:76,upcast:[75,76],upon:[85,90],uppercase_lett:89,url:[1,52,69,71,73,75,78,87,95,99],url_nan_seri:93,url_none_seri:93,url_seri:93,url_summari:1,urllib:49,urlpars:49,usag:[68,75,87,90],use:[70,71,75,79,81,83,84,85,90,92,94,96,99],used:[68,70,75,76,81,82,85,93,96,99],useful:[55,75,84,90],user:[35,39,44,68,72,75,77,79,81,82,85],uses:[81,82,85,93],using:[68,73,76,81,82,92],usual:81,util:[1,68,93],uuid:[1,52,87,95],uuid_str:50,valid:[81,97],valu:[11,33,55,60,68,70,71,72,78,80,81,85,89,90],valueerror:56,vari:99,variabl:[68,71],variable_summari:89,varieti:72,variou:[70,85,88,89],vector:70,veri:[0,78],versa:70,version:79,via:[67,70],vice:70,view:[71,74,76,82,85,99],violat:79,virtual:85,vision:[1,67,68,70,71,73,74,75,76,77,78,79,82,83,85,86,87,88,89,90,91,92,93,95,96,97,98,99],visions_str:89,visions_typ:90,visionsbasetyp:[1,22,23,24,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,51,90],visionstypeset:[1,20,21,22,23,24,99],visiontypeset:90,visit:68,visualis:[71,78,99],volum:73,wage:69,wai:[60,68,69,70,74,76,80,85,90,92,96,98],want:[0,55,70,71,75,81,83,85],warning_handl:1,web:82,welcom:[0,82],well:[70,71,81],were:[20,21,86],weren:99,what:[68,74,79,99],whatev:97,when:[0,55,56,60,70,71,72,73,75,76,77,78,80,81,82,90,92,99],where:[0,67,68,70,71,76,79,80,81,85,90,96],whether:[28,55,70,72,76,81,85,90],which:[20,21,55,70,72,75,79,80,81,82,84,87,88,89,90,93,97,99],whitespac:89,whose:81,why:75,wise:[20,21],wish:70,within:[68,69,71,76,77,85],without:[55,69,75,76,79,81,87,99],wkt:[38,60],woman:90,wonder:76,word:81,work:[67,73,75,76,79,85,92,94,96],workflow:[67,72,82],world:[70,79,92],worthwhil:71,would:[67,76,79,81,99],wouldn:90,write:[0,56],written:82,www:[49,87],x64:57,year:73,yet:[79,97],yield:68,york:69,you:[0,55,67,68,71,73,76,82,83,84,85,86,90,91,92,93,94,96,99],your:[0,71,76,79,82,83,84,86,90,92,93,99],your_typeset:84,yourself:90,yourtype1:93,yourtype2:93,yourtype3:93,yourtypeset:93,yuan:69,yyyymmdd:90,zaxr:72,zero_summari:1},titles:["Visions","API","visions.application.summaries.frame.dataframe_summary","visions.application.summaries.functional.summarize","visions.application.summaries.functional.summarize_frame","visions.application.summaries.functional.summarize_series","visions.application.summaries.series.base_summary","visions.application.summaries.series.category_summary","visions.application.summaries.series.email_address_summary","visions.application.summaries.series.file_summary","visions.application.summaries.series.image_summary","visions.application.summaries.series.missing_summary","visions.application.summaries.series.numerical_basic_summary","visions.application.summaries.series.numerical_summary","visions.application.summaries.series.path_summary","visions.application.summaries.series.range_summary","visions.application.summaries.series.text_summary","visions.application.summaries.series.unique_summary","visions.application.summaries.series.url_summary","visions.application.summaries.series.zero_summary","visions.functional.cast_to_detected","visions.functional.cast_to_inferred","visions.functional.compare_detect_inference_frame","visions.functional.detect_type","visions.functional.infer_type","visions.functional.type_inference_report_frame","visions.relations.relations.IdentityRelation","visions.relations.relations.InferenceRelation","visions.relations.relations.TypeRelation","visions.types.boolean","visions.types.categorical","visions.types.complex","visions.types.count","visions.types.date","visions.types.date_time","visions.types.file","visions.types.float","visions.types.generic","visions.types.geometry","visions.types.image","visions.types.integer","visions.types.ip_address","visions.types.object","visions.types.ordinal","visions.types.path","visions.types.string","visions.types.time","visions.types.time_delta","visions.types.type.VisionsBaseType","visions.types.url","visions.types.uuid","visions.typesets.VisionsTypeset","visions.typesets.complete_set","visions.typesets.geometry_set","visions.typesets.standard_set","visions.utils.coercion.test_utils","visions.utils.graph","visions.utils.images.image_utils","visions.utils.monkeypatches.imghdr_patch","visions.utils.monkeypatches.pathlib_patch","visions.utils.warning_handling","Functional API","Relations","Summaries","Types","Typesets","Utils","Applications","Data Compression","Data Discovery and Data Integration","Machine Learning","Data Summarization","Data Validation","About","Background","Data Type View","Design decisions","Goals","Graph view","Open challenges","Nested set view","Theory","Community contributions","Support","Contributions new types to visions","Concepts","Examples","Casting example","Membership example","Summaries example","Extending","Installation","Introduction","Typeset testing","Usage","Defaults","Importing the module","Type Relations","Types","Typesets"],titleterms:{"abstract":[64,65],"boolean":29,"default":95,"float":36,"function":[3,4,5,20,21,22,23,24,25,61,63,65],"import":96,"new":84,"short":76,The:[81,99],about:73,all:82,anoth:90,api:[1,61,63,65],applic:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,67],background:[74,81],base_summari:6,bitmap:76,can:92,cast:[78,87,99],cast_to_detect:20,cast_to_inf:21,categor:30,category_summari:7,challeng:[79,81],chang:[61,79],check:76,circuit:76,cite:73,code:79,coercion:55,commun:82,compar:75,compare_detect_inference_fram:22,complet:71,complete_set:52,complex:31,compress:68,compressio:68,concept:[75,85],concret:65,confid:70,constraint:76,contain:93,contribut:[82,84],convers:93,count:32,current:75,custom:90,data:[68,69,71,72,75,79],dataframe_summari:2,date:33,date_tim:34,datetim:71,decis:76,decoupl:75,dedic:79,defin:76,depend:82,design:76,detail:99,detect:[78,99],detect_typ:23,discoveri:69,document:82,doe:[71,92],don:[76,79],dtype:76,email_address_summari:8,encod:70,exampl:[86,87,88,89,90],extend:90,extens:78,fail:75,file:35,file_summari:9,fix:79,frame:[2,63],from:90,gener:[37,99],geometri:38,geometry_set:53,github:83,goal:77,graph:[56,71,78],how:[71,75,92],hundr:79,identityrel:26,imag:[39,57],image_summari:10,image_util:57,imghdr_patch:58,indic:0,infer:[70,76,78,93,99],infer_typ:24,inferencerel:27,inherit:76,instal:[82,91],integ:[40,71],integr:69,introduct:[92,99],ip_address:41,issu:83,learn:70,line:79,lint:82,logic:[75,79],machin:[70,79],mai:79,make:79,map:[78,85],membership:[88,98],memori:76,miss:[75,76],missing_summari:11,mix:79,model:[70,75],modul:[79,96],monkeypatch:[58,59],multipl:99,need:[75,79],nest:80,nullabl:76,numerical_basic_summari:12,numerical_summari:13,numpi:75,object:42,oop:76,open:[79,81],ordin:43,overflow:83,panda:75,path:44,path_summari:14,pathlib_patch:59,physic:75,pip:91,problem:[70,75],profil:70,python:75,range_summari:15,refer:75,relat:[26,27,28,62,76,78,85,97,98],requir:[79,91],sampl:76,score:70,scratch:90,semant:[64,79],seri:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,63],set:[79,80],small:79,solut:81,sourc:91,stack:83,standard_set:54,string:[45,71,75],summar:[3,71],summari:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,61,63,71,89],summarize_fram:4,summarize_seri:5,support:83,tabl:0,test:[76,82,93],test_util:55,text_summari:16,theori:81,time:46,time_delta:47,togeth:82,type:[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,61,64,70,75,76,78,79,84,85,90,97,98],type_inference_report_fram:25,typerel:28,typeset:[51,52,53,54,61,65,71,85,90,93,99],unifi:75,unique_summari:17,url:49,url_summari:18,usag:[76,94],use:76,util:[55,56,57,58,59,60,66],uuid:50,valid:72,valu:[75,76],variabl:70,view:[75,78,80],vision:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,81,84],visionsbasetyp:48,visionstypeset:51,warning_handl:60,what:[75,92],where:75,why:[76,81],work:[71,81],zero_summari:19}}) \ No newline at end of file +Search.setIndex({docnames:["index","visions/api","visions/api/_autosummary/visions.application.summaries.frame.dataframe_summary","visions/api/_autosummary/visions.application.summaries.functional.summarize","visions/api/_autosummary/visions.application.summaries.functional.summarize_frame","visions/api/_autosummary/visions.application.summaries.functional.summarize_series","visions/api/_autosummary/visions.application.summaries.series.base_summary","visions/api/_autosummary/visions.application.summaries.series.category_summary","visions/api/_autosummary/visions.application.summaries.series.email_address_summary","visions/api/_autosummary/visions.application.summaries.series.file_summary","visions/api/_autosummary/visions.application.summaries.series.image_summary","visions/api/_autosummary/visions.application.summaries.series.missing_summary","visions/api/_autosummary/visions.application.summaries.series.numerical_basic_summary","visions/api/_autosummary/visions.application.summaries.series.numerical_summary","visions/api/_autosummary/visions.application.summaries.series.path_summary","visions/api/_autosummary/visions.application.summaries.series.range_summary","visions/api/_autosummary/visions.application.summaries.series.text_summary","visions/api/_autosummary/visions.application.summaries.series.unique_summary","visions/api/_autosummary/visions.application.summaries.series.url_summary","visions/api/_autosummary/visions.application.summaries.series.zero_summary","visions/api/_autosummary/visions.functional.cast_to_detected","visions/api/_autosummary/visions.functional.cast_to_inferred","visions/api/_autosummary/visions.functional.compare_detect_inference_frame","visions/api/_autosummary/visions.functional.detect_type","visions/api/_autosummary/visions.functional.infer_type","visions/api/_autosummary/visions.functional.type_inference_report_frame","visions/api/_autosummary/visions.relations.relations.IdentityRelation","visions/api/_autosummary/visions.relations.relations.InferenceRelation","visions/api/_autosummary/visions.relations.relations.TypeRelation","visions/api/_autosummary/visions.types.boolean","visions/api/_autosummary/visions.types.categorical","visions/api/_autosummary/visions.types.complex","visions/api/_autosummary/visions.types.count","visions/api/_autosummary/visions.types.date","visions/api/_autosummary/visions.types.date_time","visions/api/_autosummary/visions.types.file","visions/api/_autosummary/visions.types.float","visions/api/_autosummary/visions.types.generic","visions/api/_autosummary/visions.types.geometry","visions/api/_autosummary/visions.types.image","visions/api/_autosummary/visions.types.integer","visions/api/_autosummary/visions.types.ip_address","visions/api/_autosummary/visions.types.object","visions/api/_autosummary/visions.types.ordinal","visions/api/_autosummary/visions.types.path","visions/api/_autosummary/visions.types.string","visions/api/_autosummary/visions.types.time","visions/api/_autosummary/visions.types.time_delta","visions/api/_autosummary/visions.types.type.VisionsBaseType","visions/api/_autosummary/visions.types.url","visions/api/_autosummary/visions.types.uuid","visions/api/_autosummary/visions.typesets.VisionsTypeset","visions/api/_autosummary/visions.typesets.complete_set","visions/api/_autosummary/visions.typesets.geometry_set","visions/api/_autosummary/visions.typesets.standard_set","visions/api/_autosummary/visions.utils.coercion.test_utils","visions/api/_autosummary/visions.utils.graph","visions/api/_autosummary/visions.utils.images.image_utils","visions/api/_autosummary/visions.utils.monkeypatches.imghdr_patch","visions/api/_autosummary/visions.utils.monkeypatches.pathlib_patch","visions/api/_autosummary/visions.utils.warning_handling","visions/api/functional","visions/api/relations","visions/api/summaries","visions/api/types","visions/api/typesets","visions/api/utils","visions/applications/applications","visions/applications/compression","visions/applications/integration","visions/applications/machine_learning","visions/applications/summarizer","visions/applications/validation","visions/background/about","visions/background/background","visions/background/data_type_view","visions/background/engineering_view","visions/background/goals","visions/background/graph_view","visions/background/motivation","visions/background/nested_set_view","visions/background/theory","visions/contributing/contributing","visions/contributing/support","visions/contributing/type","visions/getting_started/concepts","visions/getting_started/examples","visions/getting_started/examples/casting","visions/getting_started/examples/membership","visions/getting_started/examples/summaries","visions/getting_started/extending","visions/getting_started/installation","visions/getting_started/introduction","visions/getting_started/testing","visions/getting_started/usage","visions/getting_started/usage/defaults","visions/getting_started/usage/import","visions/getting_started/usage/relations","visions/getting_started/usage/types","visions/getting_started/usage/typesets"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst","visions/api.rst","visions/api/_autosummary/visions.application.summaries.frame.dataframe_summary.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize_frame.rst","visions/api/_autosummary/visions.application.summaries.functional.summarize_series.rst","visions/api/_autosummary/visions.application.summaries.series.base_summary.rst","visions/api/_autosummary/visions.application.summaries.series.category_summary.rst","visions/api/_autosummary/visions.application.summaries.series.email_address_summary.rst","visions/api/_autosummary/visions.application.summaries.series.file_summary.rst","visions/api/_autosummary/visions.application.summaries.series.image_summary.rst","visions/api/_autosummary/visions.application.summaries.series.missing_summary.rst","visions/api/_autosummary/visions.application.summaries.series.numerical_basic_summary.rst","visions/api/_autosummary/visions.application.summaries.series.numerical_summary.rst","visions/api/_autosummary/visions.application.summaries.series.path_summary.rst","visions/api/_autosummary/visions.application.summaries.series.range_summary.rst","visions/api/_autosummary/visions.application.summaries.series.text_summary.rst","visions/api/_autosummary/visions.application.summaries.series.unique_summary.rst","visions/api/_autosummary/visions.application.summaries.series.url_summary.rst","visions/api/_autosummary/visions.application.summaries.series.zero_summary.rst","visions/api/_autosummary/visions.functional.cast_to_detected.rst","visions/api/_autosummary/visions.functional.cast_to_inferred.rst","visions/api/_autosummary/visions.functional.compare_detect_inference_frame.rst","visions/api/_autosummary/visions.functional.detect_type.rst","visions/api/_autosummary/visions.functional.infer_type.rst","visions/api/_autosummary/visions.functional.type_inference_report_frame.rst","visions/api/_autosummary/visions.relations.relations.IdentityRelation.rst","visions/api/_autosummary/visions.relations.relations.InferenceRelation.rst","visions/api/_autosummary/visions.relations.relations.TypeRelation.rst","visions/api/_autosummary/visions.types.boolean.rst","visions/api/_autosummary/visions.types.categorical.rst","visions/api/_autosummary/visions.types.complex.rst","visions/api/_autosummary/visions.types.count.rst","visions/api/_autosummary/visions.types.date.rst","visions/api/_autosummary/visions.types.date_time.rst","visions/api/_autosummary/visions.types.file.rst","visions/api/_autosummary/visions.types.float.rst","visions/api/_autosummary/visions.types.generic.rst","visions/api/_autosummary/visions.types.geometry.rst","visions/api/_autosummary/visions.types.image.rst","visions/api/_autosummary/visions.types.integer.rst","visions/api/_autosummary/visions.types.ip_address.rst","visions/api/_autosummary/visions.types.object.rst","visions/api/_autosummary/visions.types.ordinal.rst","visions/api/_autosummary/visions.types.path.rst","visions/api/_autosummary/visions.types.string.rst","visions/api/_autosummary/visions.types.time.rst","visions/api/_autosummary/visions.types.time_delta.rst","visions/api/_autosummary/visions.types.type.VisionsBaseType.rst","visions/api/_autosummary/visions.types.url.rst","visions/api/_autosummary/visions.types.uuid.rst","visions/api/_autosummary/visions.typesets.VisionsTypeset.rst","visions/api/_autosummary/visions.typesets.complete_set.rst","visions/api/_autosummary/visions.typesets.geometry_set.rst","visions/api/_autosummary/visions.typesets.standard_set.rst","visions/api/_autosummary/visions.utils.coercion.test_utils.rst","visions/api/_autosummary/visions.utils.graph.rst","visions/api/_autosummary/visions.utils.images.image_utils.rst","visions/api/_autosummary/visions.utils.monkeypatches.imghdr_patch.rst","visions/api/_autosummary/visions.utils.monkeypatches.pathlib_patch.rst","visions/api/_autosummary/visions.utils.warning_handling.rst","visions/api/functional.rst","visions/api/relations.rst","visions/api/summaries.rst","visions/api/types.rst","visions/api/typesets.rst","visions/api/utils.rst","visions/applications/applications.rst","visions/applications/compression.rst","visions/applications/integration.rst","visions/applications/machine_learning.rst","visions/applications/summarizer.rst","visions/applications/validation.rst","visions/background/about.rst","visions/background/background.rst","visions/background/data_type_view.rst","visions/background/engineering_view.rst","visions/background/goals.rst","visions/background/graph_view.rst","visions/background/motivation.rst","visions/background/nested_set_view.rst","visions/background/theory.rst","visions/contributing/contributing.rst","visions/contributing/support.rst","visions/contributing/type.rst","visions/getting_started/concepts.rst","visions/getting_started/examples.rst","visions/getting_started/examples/casting.rst","visions/getting_started/examples/membership.rst","visions/getting_started/examples/summaries.rst","visions/getting_started/extending.rst","visions/getting_started/installation.rst","visions/getting_started/introduction.rst","visions/getting_started/testing.rst","visions/getting_started/usage.rst","visions/getting_started/usage/defaults.rst","visions/getting_started/usage/import.rst","visions/getting_started/usage/relations.rst","visions/getting_started/usage/types.rst","visions/getting_started/usage/typesets.rst"],objects:{"visions.application.summaries.frame":{dataframe_summary:[2,0,1,""]},"visions.application.summaries.functional":{summarize:[3,0,1,""],summarize_frame:[4,0,1,""],summarize_series:[5,0,1,""]},"visions.application.summaries.series":{base_summary:[6,0,1,""],category_summary:[7,0,1,""],email_address_summary:[8,0,1,""],file_summary:[9,0,1,""],image_summary:[10,0,1,""],missing_summary:[11,0,1,""],numerical_basic_summary:[12,0,1,""],numerical_summary:[13,0,1,""],path_summary:[14,0,1,""],range_summary:[15,0,1,""],text_summary:[16,0,1,""],unique_summary:[17,0,1,""],url_summary:[18,0,1,""],zero_summary:[19,0,1,""]},"visions.functional":{cast_to_detected:[20,0,1,""],cast_to_inferred:[21,0,1,""],compare_detect_inference_frame:[22,0,1,""],detect_type:[23,0,1,""],infer_type:[24,0,1,""],type_inference_report_frame:[25,0,1,""]},"visions.relations.relations":{IdentityRelation:[26,1,1,""],InferenceRelation:[27,1,1,""],TypeRelation:[28,1,1,""]},"visions.relations.relations.IdentityRelation":{__init__:[26,2,1,""]},"visions.relations.relations.InferenceRelation":{__init__:[27,2,1,""]},"visions.relations.relations.TypeRelation":{__init__:[28,2,1,""]},"visions.types":{"boolean":[29,3,0,"-"],"float":[36,3,0,"-"],categorical:[30,3,0,"-"],complex:[31,3,0,"-"],count:[32,3,0,"-"],date:[33,3,0,"-"],date_time:[34,3,0,"-"],file:[35,3,0,"-"],generic:[37,3,0,"-"],geometry:[38,3,0,"-"],image:[39,3,0,"-"],integer:[40,3,0,"-"],ip_address:[41,3,0,"-"],object:[42,3,0,"-"],ordinal:[43,3,0,"-"],path:[44,3,0,"-"],string:[45,3,0,"-"],time:[46,3,0,"-"],time_delta:[47,3,0,"-"],url:[49,3,0,"-"],uuid:[50,3,0,"-"]},"visions.types.boolean":{Boolean:[29,1,1,""]},"visions.types.categorical":{Categorical:[30,1,1,""]},"visions.types.complex":{Complex:[31,1,1,""]},"visions.types.count":{Count:[32,1,1,""]},"visions.types.date":{Date:[33,1,1,""]},"visions.types.date_time":{DateTime:[34,1,1,""]},"visions.types.file":{File:[35,1,1,""]},"visions.types.float":{Float:[36,1,1,""]},"visions.types.generic":{Generic:[37,1,1,""]},"visions.types.geometry":{Geometry:[38,1,1,""],string_is_geometry:[38,0,1,""]},"visions.types.image":{Image:[39,1,1,""]},"visions.types.integer":{Integer:[40,1,1,""]},"visions.types.ip_address":{IPAddress:[41,1,1,""]},"visions.types.object":{Object:[42,1,1,""]},"visions.types.ordinal":{Ordinal:[43,1,1,""]},"visions.types.path":{Path:[44,1,1,""]},"visions.types.string":{String:[45,1,1,""]},"visions.types.time":{Time:[46,1,1,""]},"visions.types.time_delta":{TimeDelta:[47,1,1,""]},"visions.types.type":{VisionsBaseType:[48,1,1,""]},"visions.types.type.VisionsBaseType":{__init__:[48,2,1,""]},"visions.types.url":{URL:[49,1,1,""]},"visions.types.uuid":{UUID:[50,1,1,""]},"visions.typesets":{VisionsTypeset:[51,1,1,""],complete_set:[52,3,0,"-"],geometry_set:[53,3,0,"-"],standard_set:[54,3,0,"-"]},"visions.typesets.VisionsTypeset":{__init__:[51,2,1,""],base_graph:[51,4,1,""],relation_graph:[51,4,1,""],types:[51,4,1,""]},"visions.typesets.complete_set":{CompleteSet:[52,1,1,""]},"visions.typesets.geometry_set":{GeometrySet:[53,1,1,""]},"visions.typesets.standard_set":{StandardSet:[54,1,1,""]},"visions.utils":{graph:[56,3,0,"-"],warning_handling:[60,3,0,"-"]},"visions.utils.coercion":{test_utils:[55,3,0,"-"]},"visions.utils.coercion.test_utils":{coercion_equality_test:[55,0,1,""],coercion_map:[55,0,1,""],coercion_map_test:[55,0,1,""],coercion_test:[55,0,1,""],coercion_true_test:[55,0,1,""],option_coercion_evaluator:[55,0,1,""]},"visions.utils.graph":{output_graph:[56,0,1,""]},"visions.utils.images":{image_utils:[57,3,0,"-"]},"visions.utils.images.image_utils":{decode_byte_exif:[57,0,1,""],extract_exif:[57,0,1,""],get_image_shape:[57,0,1,""],hash_image:[57,0,1,""],is_image_truncated:[57,0,1,""],open_image:[57,0,1,""]},"visions.utils.monkeypatches":{imghdr_patch:[58,3,0,"-"],pathlib_patch:[59,3,0,"-"]},"visions.utils.monkeypatches.imghdr_patch":{test_jpeg1:[58,0,1,""],test_jpeg2:[58,0,1,""],test_jpeg3:[58,0,1,""]},"visions.utils.warning_handling":{discard_stderr:[60,0,1,""]}},objnames:{"0":["py","function","Python function"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","module","Python module"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:function","1":"py:class","2":"py:method","3":"py:module","4":"py:attribute"},terms:{"0000":87,"00000000":87,"000000000000":87,"01234":89,"02145":73,"05381575185":71,"0b8a22ca":[50,87],"100":81,"100000":71,"100005":71,"1001":69,"1012":69,"10x":68,"121223":89,"123123":89,"127":41,"128":41,"160":71,"16664":71,"1666665":71,"166666666668":71,"1666766670":71,"191":71,"2004":72,"2006":70,"2010":71,"2011":71,"2015":75,"2016":75,"2017":[33,34],"2018":69,"2019":[33,34],"2020":[73,80],"21105":73,"2145":73,"27778":71,"34th":69,"396":71,"40826":71,"449489736169953":71,"449930718552894":71,"484":76,"4ad2f664102c031705d4eda6bf50e27a78bfc96d":79,"4df5":[50,87],"4f63":[50,87],"593":71,"611111111113":71,"61275cf63d981d332220fa3aef157989fcef3305":79,"74999":71,"7c900e9a23c6":[50,87],"7eguido":[49,87],"80ad":[50,87],"8442":[50,87],"85ac":[50,87],"88c8":[50,87],"99985":71,"999999974801513":71,"\u0433\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u044c":89,"\u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u0458\u0430":89,"\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430":89,"\u05d0":89,"\u05d0\u05d9\u05d6":89,"\u05d9\u05e6\u05d0":89,"\u05dc\u05d9\u05e0\u05e7\u05e1":89,"\u05e0\u05d2\u05e2\u05e0\u05e2\u05dd":89,"\u05e1\u05d9\u05d9":89,"\u05e4":89,"\u05e6\u05d5":89,"\u05e8\u05e2\u05db\u05d8":89,"\u05e9\u05d0":89,"\u0627\u0644\u062f\u0641":89,"\u0627\u0644\u0631\u062c\u0644":89,"\u0627\u0644\u0633\u064a\u062f":89,"\u0628\u0627\u062a\u064a":89,"\u0628\u0648\u0628":89,"\u062f\u064a\u0644\u0627\u0646":89,"\u0641\u0627\u0644\u0646\u062a\u064a\u0646":89,"\u1000":89,"\u1001":89,"\u1004":89,"\u1005\u1000":89,"\u1009":89,"\u100f":89,"\u1010":89,"\u1019":89,"\u101a":89,"\u101b":89,"\u101b\u100a":89,"\u101e\u1004":89,"abstract":[1,48,75,76,77,85,92,98],"boolean":[1,52,53,54,68,75,76,80,81,88,90,95,99],"byte":[57,68],"case":[70,76,90,93,99],"catch":99,"class":[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,70,76,90],"default":[70,71,76,77,78,84,90,91,92,93,99],"float":[1,28,52,53,54,55,70,71,72,75,79,81,85,87,95,97,98,99],"function":[1,26,28,55,71,72,75,78,79,81,85,87,89,90,93,94,99],"import":[25,28,31,37,38,41,44,49,50,70,77,87,88,89,90,93,97,98,99],"int":[57,71,75,88],"new":[69,71,75,76,77,83,90],"null":76,"public":[69,73],"return":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,38,55,56,57,70,78,81,90,99],"static":[68,79],"super":90,"true":[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,56,57,70,78,80,88,90,97,98],"try":[38,60,75,82],"var":[12,71],"while":[68,69,70,75,81,90,97,98],Adding:75,And:0,For:[0,28,67,68,70,72,75,76,77,78,79,80,81,85,90,91,93],Going:97,Not:[79,97],One:[70,79,86,96],The:[51,54,55,69,70,71,72,73,75,76,78,79,82,88,89,90,91,92,93,96,97],There:[68,70,71,75,79,80,93],These:[72,81,85,99],Yes:[55,68],__init__:[26,27,28,48,51,84,90],_get_rel:90,aaa381d6:[50,87],abedjan:69,abid:82,abl:[79,81,99],about:[70,80,83,98,99],abov:[72,82],access:[82,96],accur:[48,72],achiev:75,action:[82,99],activ:70,actual:[75,76,77,81],add:[79,84,90],added:76,adding:[76,79,90],addit:[67,69,78,82,90,91],addition:[81,93],address:[41,79],adequ:82,adher:[70,78],adt:75,advanc:82,after:82,against:[20,21,93],aggreg:12,agre:79,aim:84,akin:81,algebra:90,algorithm:92,all:[28,33,39,52,71,75,76,78,79,80,81,86,91,93,97,98,99],allow:[69,75,76,79,85,90,97],alreadi:81,also:[55,70,71,75,78,79,81,90,96,98],altern:[28,90,96],although:[67,90],alwai:72,ambigu:70,amsterdam:69,analysi:[68,70,71,72,75,86,90,92,99],analyst:81,analyt:81,ani:[13,71,76,78,81,85,90,99],anoth:[55,69,70,71,75,78,79,92,98,99],answer:[76,98,99],api:[48,84,90,99],appear:79,appl:[71,75,89,98],appli:[70,93,97],applic:[1,72,79,89,92],approach:69,appropri:0,approx:72,approxim:[68,72],april:69,arab:89,arbitrarili:99,arg:[52,53,54,93],argument:[79,81],around:75,arr:68,arrai:[85,90],articl:73,ascii:71,ask:83,aspect:[70,75],assert:[72,93],assess:93,associ:[51,71,78,81],assum:70,assumpt:[72,79],attempt:[75,99],attr:[26,27,28],attribut:[51,81],aurum2018datadiscoveri:69,aurum:69,author:73,autom:[71,72,79],automat:[68,70,82,93],automl:[70,79],avail:[81,96,99],avoid:70,awai:70,awesom:71,axelderomblai:79,axiom:77,back:[84,97],background:70,bad:60,bag:78,barjn:77,base:[22,23,25,55,68,69,70,76,78,90,93,99],base_graph:51,base_summari:1,baselin:99,basic:[0,12,71,75,89,98],becaus:[71,72,85,99],been:72,befor:[78,96],begin:[76,82,86],behaviour:[76,83],behind:81,being:[75,82],belief:79,believ:79,belong:[70,99],below:[71,80,82,84,93,99],benefici:76,benefit:72,best:99,better:0,between:[28,51,70,71,72,75,78,79,81,85,90,97,98],beyond:[71,99],bias:70,bibtex:73,binari:[70,90],bishop2006pattern:70,bishop:70,bit:76,bitmap:75,bjarn:[0,82],black:82,blob:79,block:[89,98],block_alias_valu:71,block_valu:[71,89],bond:97,book:[72,79],bool:[10,38,56,57,68,75,88,90],booleannl:90,both:[51,69,70,77,78,81],bound:81,broadli:99,brugman2020:73,brugman:73,build:[48,76,82,92,98],builtin:81,bull:69,bulwark:72,burmes:89,busi:81,calcul:[10,15],calibr:70,call:[81,99],callabl:55,can:[0,28,56,67,68,69,70,71,72,73,75,76,78,79,80,81,82,85,90,91,93,94,96,97,98,99],cancer:70,cannot:[68,81],cap:78,capabl:[98,99],card:[71,89],carter:45,cast:[20,21,75,81,86],cast_df:87,cast_to_detect:1,cast_to_inf:[1,87,99],casting_exampl:87,cat:90,categor:[1,7,52,53,54,70,75,79,90,95,99],categori:[30,43,70,75,81,89,90],categoricalstr:90,category_alias_valu:[71,89],category_s:7,category_short_valu:71,category_summari:1,caus:72,centric:79,certain:[72,76],certainti:70,champion:45,chang:[1,55,90],chapter:70,characterist:[71,98],check:[55,71,72,82,90,98],checklist:84,choic:76,choos:[87,90],chosen:92,circl:80,circumst:85,citat:73,classif:70,classifi:70,classmethod:90,clean:92,clone:91,close:76,closest:99,cls:90,code:[67,68,70,71,72,82,85,90],coerc:[55,81],coercion:[1,75,81],coercion_equality_test:55,coercion_map:55,coercion_map_test:55,coercion_test:55,coercion_true_test:55,collect:[51,79,81,85,93],column:[20,21,22,23,24,69,79,89,90],com:[49,69,72,79,87,91],combat:79,combin:[69,75,93,99],come:[69,80,81,85,90],command:82,common:[48,69,71,79,89],commun:79,compani:69,compar:[22,25,85],compare_detect_inference_fram:[1,25,90],complet:[52,67,72,80,87,91,95,99],complete_set:1,completeset:[52,78,80,87,89,90,93,96,99],completesummari:[71,89],completetypeset:71,complex:[1,52,53,54,72,75,76,77,79,92,95,99],complic:85,compon:[72,75,81,98],compos:[51,77,81,85],compress:79,comput:[70,81,85],computation:79,concept:[74,76,94],conceptu:81,concern:[75,79],concret:[1,75,98],confer:69,configur:85,conflict:96,consequ:68,consid:[68,69,70,90],consist:[55,68,72,81,85],constrain:[80,85],constraint:[0,55,75,78,80],construct:[76,81,84,85,99],contain:[11,69,71,79,80,81,85,90],contains_map:93,contains_op:90,content:76,context:[22,23,24,25,79],continu:[70,78,84],continuumio:79,contradictori:81,contravari:76,contribut:[67,90,91],control:89,conveni:90,convers:[75,92],convert:[28,55,79,92,99],copi:[56,76,99],core:[71,76,94],correct:[70,72],correspond:[75,85],cost:70,could:[0,67,69,70,72,90,96],count:[1,11,13,52,70],coupl:[72,79,81],covari:76,cram:79,creat:[55,56,71,75,80,84,87,89,90,92],creation:92,creator:0,critic:69,csparpa:72,csv:[25,69,70],currency_symbol:89,current:[24,69,71,76,79,81,90,93,96],custom:[48,70,75,79,92],customset:90,cut:82,cwi:[49,87],cyberpanda:79,cycl:[78,81],cyril:89,dai:[47,71,85],data:[0,20,21,23,24,28,48,55,58,70,73,76,77,78,80,81,85,86,87,90,92,99],data_analysi:90,datafram:[2,20,21,22,23,24,25,68,76,87,89,99],dataframe_summari:1,dataset:[25,68,69,70,71,72,81,92],datasetsearch:69,date:[1,52,71,75,79,80,81,90],date_pars:79,date_tim:[1,90],datetim:[33,34,46,52,53,54,75,79,80,81,85,90,95,96,99],datetime64:71,datetime_seri:71,datetimeintyyyymmdd:90,dayfirst:79,debug:90,decid:[68,78,81],decimal_numb:89,decis:70,declar:[85,90],decod:57,decode_byte_exif:57,decoupl:[68,72,76,79,98],dedic:71,deeper:85,def:[90,93],defin:[0,28,72,75,78,79,81,85,90,92,93,97,98,99],definit:[71,80,81],delimet:79,demonstr:[71,87,88,89],denot:[68,80,85],depend:[70,72,77,79,85,91],depth:78,deriv:51,describ:81,design:[71,72,75,77,81],detail:[75,90],detect:[10,22,23,25,75,76,81,87,92,93],detect_typ:[1,87,89,99],determin:[28,70,81],determinist:81,dev:[72,75,82],develop:[69,72,77,79,81,82,90,91,92],diagnosi:70,dict:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,23,24,28,55,57],dictionari:[23,24],didn:99,differ:[75,78,79,81,85,99],differenti:70,difficult:70,digit:[72,89],digraph:56,direct:[78,81],directori:93,discard_stderr:60,discret:70,discuss:[67,72,75,76],disjoint:[78,81],disk:[81,85],distinct:[68,70,75,81,85,90,98],distinguish:[70,81],doc:[50,69,79,82,94],docsrc:84,docsrcsourcevis:82,docstr:84,document:[75,76,84,90,99],doe:[56,68,74,75,76],doi:73,dollar:69,domain:[75,78,81,90],done:79,dot:56,down:91,downstream:67,draw:70,dtype:[6,30,43,71,75,88,90],dual:81,dummi:70,duplic:10,dure:76,dylan:[73,91],dynam:[76,85],each:[24,68,70,71,75,76,78,80,81,82,85,90,93,98,99],easi:[81,90],easier:68,easiest:96,easili:93,eav:73,eda:71,edg:[78,81],effect:[68,71,76,92,98],effici:[0,68,75,77,92],either:[56,81,90],element:[75,77,81,98],elsewher:90,email_address_summari:1,emailaddress:52,embed:70,empti:99,emptyset:78,enabl:77,encod:[28,57,68,79,85,99],encompass:[70,79],encount:70,encourag:73,end:[56,76,84],enforc:[55,70],eng:69,engard:72,engin:[69,75,99],enorm:70,enough:79,environ:[0,85],envis:75,equal:55,equival:[81,82],error:70,especi:70,essenti:[71,92],etc:[0,75],euro:69,evalu:55,even:[67,90],everi:[6,71,75,85,98],evolv:84,evolve_typ:90,exact:75,exampl:[22,25,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,67,68,70,71,72,75,76,78,79,80,81,85,91,93,94,97,98,99],excel:[70,79,80,99],except:[78,81],excit:67,exclus:[51,76,78,80,90],exercis:70,exhaust:[67,74],exif:[10,58],exif_v:57,exist:[35,77,90],existingpath:76,expand:[84,90],expect:[72,93,99],expens:79,experi:91,explain:[70,94],explicit:79,explor:67,exploratori:[71,92],expos:99,express:[75,77],extend:[0,71,76,77,78,79,92],extens:[56,69,77,79,93],extensionsdtyp:75,extra_error:55,extract:[10,75],extract_exif:57,extrem:92,fa49c44b7ed:[50,87],facilit:72,fact:90,fail:55,failur:[38,60],fairli:99,fals:[10,13,26,29,30,55,71,78,80,88,90,97,98],familiar:81,featur:83,feel:84,femal:68,fernandez:69,few:[67,81],field:[70,72],file:[1,39,44,52,56,69,70,82,83,84,85,91,95,99],file_nam:56,file_summari:1,fill:[70,86],find:[67,69,73,74,80,81,82,84,90,96],finger:82,finit:70,first:[20,21,69,75,78,81],five:72,fix:77,flexibl:[0,79,81,85,92],float_int_rel:97,fluentcheck:72,fmri:70,focu:[70,72],folder:82,follow:[52,53,54,81,88,89,90,92,95,96],footnot:[69,70,72],forest:70,form:85,formal:78,format:[22,25,58,89],forward:69,found:[73,76,85],foundat:[77,79],frame:1,framework:[77,79,85],free:[81,84],freedom:81,frequenc:[6,71],from:[23,24,25,28,38,41,49,51,57,68,69,70,71,72,75,76,77,78,80,81,82,85,87,89,91,92,93,96,98,99],fruit:[75,85,98],full:[51,69],fulli:67,func:60,fundament:[0,98],furthermor:94,futur:71,gather:90,gener:[1,26,27,28,55,68,78,80,81,82,83,88,89,93,97,98],geodata:91,geometri:[1,52,53,85,91,95,99],geometry_set:1,geometryset:[53,78],get:[0,60,71,82],get_contains_cas:93,get_image_shap:57,get_rel:90,get_seri:93,git:91,github:[49,72,73,79,82,87,91],give:[70,75,81],given:[22,24,55,71,76,78,85,98],goal:[76,81],goe:71,going:82,good:79,googl:69,got:[0,99],gotcha:[96,99],graph:[1,22,23,51,69,76,80,81,85,92,99],great:[72,91],great_expect:72,ground:72,group:[75,85,99],grow:79,guarante:[72,81],guid:[75,76,93],guidelin:82,h2o:79,h2oai:79,had:81,hand:69,handl:75,happen:[82,99],hardwar:0,has:[68,70,71,72,75,78,80,90,96],hash:10,hash_imag:57,have:[67,69,70,72,75,76,78,79,80,81,82,83,91,98],header:[58,79],heavili:77,hebrew:89,help:[48,67,68,75,90,92,93],helper:[72,90],henc:[78,80],here:[73,75,76,84,96],heurist:79,hidden:79,hierarch:70,high:[70,71,75],highli:72,hint:76,his:69,hit:60,hoc:79,home:[35,39,44],homepag:68,hood:[75,98],hope:79,hostedtoolcach:57,hot:70,how:[70,72,76,79,81,82,83,87,90,94,96,97],howev:[68,69,70,91],html:[49,50,70,75,79,87],http:[49,50,69,70,71,72,73,75,79,82,87,91],ian:73,icd:69,idea:[0,81,85],idempot:76,ident:[81,90],identifi:[72,93],identity_rel:26,identityrel:[1,51,90,97,98],ieee:69,ietf:50,ilya:69,imag:[1,52,56,91,95],image_summari:1,image_util:1,imagepath:76,imagin:[75,81,90,97,98],imghdr_patch:1,impact:[70,76],implement:[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,70,75,76,78,79,84,90,92,95,97,98,99],implicit:79,improv:82,includ:[6,7,51,52,53,54,76,77,79,80,84,86,87,90,91,92,93,95,99],incomplet:75,inconsist:[75,77],increas:[76,92],index:0,indic:[68,70,78,81],inf_count:71,infer:[20,21,22,24,25,68,71,75,79,80,81,85,86,87,89,90,92],infer_typ:[1,87,99],inferencerel:[1,51,96,97,98],inferenti:[26,27,28],infinit:68,inform:[10,67,69,73,76,84,99],inherit:71,initi:[48,89],input:[69,72,79,81],inspect:90,inspir:67,instanc:93,instanti:85,instead:[76,81,99],instruct:84,insur:82,int16:75,int32:75,int64:[71,75,88],int64dtyp:71,int8:75,int_rang:93,int_seri:93,int_yyyymmdd:90,integ:[1,28,32,52,53,54,55,70,75,76,81,85,87,88,90,95,96,97,98,99],integer_seri:71,integer_to_datetim:90,integer_to_datetime_year_month_dai:90,intend:[71,72,81],intens:79,interest:[0,71,81,86],intern:[69,72,75,93],intertwin:77,interv:70,introduc:[75,78,79,81,85,87,94],intuit:[75,76,80,90],invari:72,invis:97,invit:67,invok:99,ip_address:1,ipaddress:[41,52,95],ipv4address:41,iqr:71,is_categorical_dtyp:90,is_image_trunc:57,is_rel:[28,97],is_relationship:28,is_uniqu:13,isbn:72,isn:75,isort:82,issu:92,item:89,its:[70,71,81],itself:[76,77,85],jfif:58,jiddisch:89,jmenglund:72,join:89,joss:73,journal:73,jpeg:58,jpg:39,just:[38,60,68,90],keep:[76,81],kei:[0,56,72,81,85],kind:[70,93],kindli:93,know:[82,90,96],knowledg:[69,98],known:[60,70],koko:69,krekel:72,kurt:71,l454:79,label:70,lack:75,lai:79,lambda:[28,90],languag:81,larg:[72,76],latin:[71,89],learn:79,least:69,left:81,len:75,length:71,less:[68,69],let:[67,70,90,92,98,99],level:[71,75,98],lib:57,librari:[50,73,79,81,92],licens:69,lightweight:91,like:[67,69,75,78,82,85,90,97,98,99],likewis:70,limit:[75,76,80,90],list:[22,55,67,85,91,93,99],liter:80,load:[38,60,96],local:82,log:[38,60],logic:[76,81,85,98,99],logist:70,look:[67,69,75,82,90,98,99],lose:68,loss:[75,81],lossless:68,lost:70,love:79,low:75,lowercase_lett:[71,89],machin:[68,71,72,81,85,90,98],mad:71,madden:69,made:76,mai:[68,70,76,78,90],main:[71,77,79],make:[68,70,72,75,81,82,90,98],male:68,man:90,mani:[75,79],manipul:[72,90],manner:[79,85],manual:82,map:[23,24,51,55,76,80,81,90,92,93,97,98],mappabl:55,mark:93,match:[69,78,93,99],math_symbol:89,max:[12,15,71],mean:[12,67,68,70,71,72,75,81,90,99],meaning:72,meant:67,measur:70,mechan:[28,81,85,90],median:71,medic:70,meet:90,member:[80,93],membership:[75,78,80,86],membership_exampl:88,memori:[68,98],memory_s:[2,6,71],mental:70,mere:70,messag:93,metadata:69,method:[26,27,28,48,51,55,70,72,90,97],metric:70,might:[69,70,71,72,75,76,81,85,90,96,99],min:[12,15,71],minim:[68,81,91,93],minimum:[79,81],miss:[11,33,70,71,78,81,93],missing_categorical_valu:7,missing_summari:1,mix:[75,89],mlbox:79,model:92,modifi:[76,84],modifier_symbol:89,modul:[57,70],modular:76,moment:81,monkeypatch:1,monotonic_decreas:71,monotonic_increas:71,more:[0,67,68,70,73,75,76,77,79,81,85,90,91,98,99],moreov:79,most:[81,90,96],motiv:[75,76],much:[79,81],multipl:[74,75,91],mung:68,must:[78,81],mutual:[76,78],my_typeset:99,myanmar:89,mypi:82,n_observ:2,n_record:[6,71],n_uniqu:71,n_variabl:2,n_zero:71,na_count:[11,71],nai:68,name:[23,24,56,69,93],namespac:[85,96],nan:[31,36,37,42,71,75,76,87,88,93],narrowest:[78,80],nat:71,nattyp:71,necessarili:55,need:[28,68,90,91,96],nest:75,networkx:92,never:85,node:[78,81],non:[70,75],none:[13,29,55,56,75,76,78,80,88],nonspacing_mark:89,notabl:71,note:[67,68,71,75,78,79,90],noth:[26,27,56],notic:83,notion:[81,85],now:[97,99],nrow:79,nullabl:[71,75],number:[11,70,72,73,75,76,81,90],numbers_with_nan:87,numeric_seri:93,numeric_series_miss:93,numerical_basic_summari:1,numerical_summari:1,numpi:[31,37,77,85,87,88,92],object:[1,2,52,53,54,68,71,75,76,78,81,88,95,96,99],observ:[68,72],obtain:[68,71,91],obviou:67,occur:[68,76],off:71,offer:76,offic:69,often:[68,70,72,96,98],omit:99,onc:[79,87,91],one:[28,68,69,70,72,75,78,80,84,92,93,97,99],ones:93,onli:[60,68,72,75,76,79,81,90,91],open:[73,83],open_imag:57,open_punctu:89,oper:[69,75,76,78,90,99],opinion:79,oppos:[68,79],opt:57,optim:68,option:[55,57,70,81,83,84,90],option_coercion_evalu:55,orang:[71,75,89,98],order:[7,28,76,78,81,90],ordin:[1,52,70,90],org:[50,69,70,73,79,87],organ:73,orient:99,other:[68,70,71,72,76,77,79,84,90,93,98,99],other_lett:89,other_punctu:89,other_symbol:[71,89],otherwis:[55,76],our:[68,75,76,77,79,81,82,87,97],ourselv:68,out:[67,69,71],outlin:82,output:[22,25,38,55,56,60,70,71],output_graph:56,over:[68,72,79,85,99],overhead:75,overlap:[71,72],overview:71,own:[0,71,79,81,90,93],pack:80,packag:[57,67,70,71,72,73,77,79,82,83,91,92,94,96],page:[67,73,75,85,91],pair:[78,81],panda:[7,25,49,50,68,71,72,76,77,79,85,87,88,89,92,99],pandas2:75,pandasschema:72,paramet:[2,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,51,55,56,57,70],parametr:93,parent:[78,81],pars:[49,79],parser:79,part:[68,72,73,75,96],particularli:90,path:[1,35,39,52,56,57,78,95,96,99],path_series_linux:93,path_series_linux_miss:93,path_series_window:93,path_summari:1,pathlib:[35,44,96],pathlib_patch:1,patient:70,pattern:[68,70],pdt:90,pear:[71,75,89,98],peopl:82,pep:76,per:[68,76],perform:[0,20,21,68,70,75,76,77,78,79,80,81,85,92,99],permit:81,physic:[68,76],pick:92,pil:57,pip:82,place:84,plai:[71,89],plain:70,plan:70,playing_card:89,pleas:[67,71,73,82,83,84,90,91,93,99],plenti:94,plot:[56,82,91],png:[39,56],point:[38,75],posit:32,possibl:[67,69,78,80,81,85,91],potenti:[68,85,99],power:[68,75,92],practic:[70,79,81,98,99],practition:84,pre:90,precis:81,predict:70,prefer:[71,77,96],preprocess:79,preserv:68,primari:[78,81,99],print:[22,25,71,87,88,89,90],probabl:[70,81],problem:[0,72,79,81,85,92],proce:96,process:[70,71,99],produc:71,product:[70,79],profil:[49,71,73,82,87,91],program:[0,76,79],project:[68,70,71,73,82,84],proper:[69,78],properli:81,properti:[72,75],protocol:75,provid:[20,21,22,23,24,25,28,48,55,69,70,71,72,74,75,81,82,84,92,93,94],publish:73,pull:67,pure:85,purpos:[68,71,90],pydata:79,pytest:[72,82,93],python3:57,python:[0,49,50,57,79,82,85,87,90,91,92],quantil:13,quantile_25:71,quantile_50:71,quantile_5:71,quantile_75:71,quantile_95:71,queri:69,question:[83,98,99],quickli:90,rais:56,ram:68,random:70,rang:[15,47,71,72],range_summari:1,rate:72,rather:[76,99],ratio:90,rdw_typeset:90,reach:69,read:[70,76,90,91,99],read_csv:[25,79],reader:79,real:[70,71,79,92],realiti:28,realli:[91,99],reason:[79,80],recal:76,recip:79,recogn:81,recognit:70,recommend:[70,91],reduc:[72,76,77,92],redund:79,refer:[50,57,72,76],regardless:[72,81],regress:70,relat:[1,22,51,69,75,79,80,81,90,93,96,99],related_typ:[26,27,28],relation_graph:51,relationship:[26,27,28,51,76,78,81,85],releas:70,relev:[69,70,84,92],reli:[68,70,76,77],reliabl:[70,77],rememb:99,replac:90,report:[22,25,69],repositori:91,repres:[28,70,72,75,76,78,80,81,85,97,98,99],represent:[68,70,71,72,75,76,80,81,85,90],request:67,requir:[81,82,85,90,93,97],requirements_dev:91,requirements_test:91,research:69,residu:70,resolv:77,resourc:70,respect:[28,75],respons:[81,97],restrict:68,restructuredtext:82,result:[75,93],retriev:69,return_valu:13,reus:[72,93],rfc4122:50,rid:60,right:[70,92,99],robust:81,root:[78,80,81,99],row:84,rst:[82,84],rubin:45,rule:[68,70,72],run:82,runtim:76,sai:[75,78,81],said:70,same:[68,69,71,72,75,76,78,81,99],sampl:70,save:77,scan:70,scenario:70,scene:81,schema:[69,86],scheme:71,scientist:[69,81],scikit:70,scope:67,scratch:75,script:89,script_valu:[71,89],search:[69,78],second:[69,81,99],secondli:75,section:[50,67,74,76,90,94],see:[48,67,72,75,80,83,85,90,93,98,99],seek:68,seen:70,select:55,self:[48,85,90],semant:[1,68,69,70,72,73,81,84,85,92],sens:[72,90],sensibl:[71,75,77],separ:75,sequenc:[28,75,78,81,85,90,98,99],seri:[1,5,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,55,68,71,78,84,85,88,89,90,93,97,98,99],series_typ:[3,4,5],serv:79,server:82,set:[51,52,53,54,69,70,71,75,78,81,84,85,89,90,91,93],setminu:78,settl:91,setup:91,sever:[38,60,83,89],shape:[38,53,60],share:67,shortcom:75,shortcut:79,shorthand:82,shortli:[75,87],should:[33,67,70,72,75,77,79,81,82,93,99],show:[75,93],sibl:78,side:76,signatur:48,silli:[38,60],similar:78,similarli:[78,80],simon:73,simpl:[75,77,81,90,93,99],simpli:[86,90],simplifi:[67,77,90],sinc:81,singl:[55,74,79,81,90],site:57,size:76,skew:71,slim:91,small:[58,90],soep:89,softwar:[0,68,72,73,82],sole:70,solid:77,solut:[67,68,69,76,79],solv:[75,79,81,85,92],some:[68,69,81,82,83],someth:75,sort:56,sourc:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,71,73,82,84,90],space_separ:89,spacing_mark:89,speak:99,special:[70,89,90,91,98],specialis:70,specif:[50,70,76,81,85,90,91,93,99],specifi:76,spend:69,sphinx:82,split:90,springer:70,spun:71,src:84,stabl:[70,79],stai:76,standard:[50,53,54,69,72,90,95,99],standard_set:1,standardset:[25,54,78,99],start:[78,81,82],starter:90,state:[28,38,79],statist:[70,71],statu:69,std:[12,71],step:71,still:[0,99],stonebrak:69,stonebraker2018dataintegr:69,stop:82,storag:[68,75,76,92],store:[68,70,71,72,75,79,81],str:[22,23,24,25,56,57,71],strategi:70,string:[1,52,53,54,70,81,85,87,89,95,97,98,99],string_is_geometri:38,string_seri:71,strong:79,stroustrup:[0,77,82],structur:[78,99],style:82,subclass:90,subsequ:[75,79],subset:[78,80],subtract:90,succe:55,success:55,suit:90,suitabl:90,sum:[12,71],summar:[1,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,70,72,89],summari:[1,75,86],summaries_exampl:89,summarize_fram:1,summarize_seri:[1,71],supertyp:71,supervis:70,support:[52,53,54,69,76,78,79,90,99],suppress:[38,60],surject:[78,81],svg:56,svm:70,symbol:78,syntax:96,sys:60,system:[0,68,69,70,79,92],tabl:[69,84],tabular:92,take:[81,98,99],taken:70,talk:69,tangl:71,target:70,task:[67,68,69,70,75,81],tell:93,templat:[84,93],term:85,test2:[35,39,44],test:[55,81,84,85,91,97,98],test_:84,test_complete_set:93,test_contain:93,test_jpeg1:58,test_jpeg2:58,test_jpeg3:58,test_seri:[98,99],test_util:1,testable_seri:93,text:[25,69,70,71,75],text_summari:[1,71],textrm:78,than:[69,99],thei:[28,71,75,81],them:[51,67,75,96,97,99],theori:70,therefor:[71,81],thi:[22,55,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,85,87,90,91,92,94,96,98,99],thing:77,think:76,third:75,those:[69,90],though:67,thousand:79,three:[78,81,93,98,99],through:[75,78,92,96],tight:[72,79],tightli:81,time:[1,52,69,72,75,77,78,79,81,90],time_delta:1,timedelta:[47,52,53,54,71,75,90,99],timestamp:71,titan:69,titl:73,tmiguelt:72,to_str:87,todo:76,togeth:[75,81],tool:[50,70,75,77,82,92],top:[71,92],train:70,transform:[26,27,28,81,85,97],transformed_seri:97,travers:[78,81,85,92,99],tree:[71,78,81],tri:76,trivial:[68,70,75],truncat:57,tupl:[13,20,21,22,57],turn:79,two:[28,68,69,70,75,76,78,81,85,90,97,98,99],txt:[35,44,91],type:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,51,52,53,54,55,56,57,68,69,71,72,77,80,81,87,89,91,92,93,94,95,96,99],type_aft:[22,90],type_befor:[22,90],type_geometri:91,type_image_path:91,type_inference_report_fram:[1,22],type_nam:84,typerel:1,typeset:[1,20,21,22,23,24,25,70,76,77,78,79,81,84,86,87,89,92,94,96],typeset_1:99,typeset_2:99,typic:[68,93],uint64:75,ultim:76,uncov:79,under:[0,69,75,98],underli:[28,75,81,98],understand:[70,74,75,76,80,81,85],unexpect:83,unicod:71,union:[13,23,24,55,56,57,71],uniqu:[72,81,90],unique_summari:1,univers:[78,81],unnecessarili:76,upcast:[75,76],upon:[85,90],uppercase_lett:89,url:[1,52,69,71,73,75,78,87,95,99],url_nan_seri:93,url_none_seri:93,url_seri:93,url_summari:1,urllib:49,urlpars:49,usag:[68,75,87,90],use:[70,71,75,79,81,83,84,85,90,92,94,96,99],used:[68,70,75,76,81,82,85,93,96,99],useful:[55,75,84,90],user:[35,39,44,68,72,75,77,79,81,82,85],uses:[81,82,85,93],using:[68,73,76,81,82,92],usual:81,util:[1,68,93],uuid:[1,52,87,95],uuid_str:50,valid:[81,97],valu:[11,33,55,60,68,70,71,72,78,80,81,85,89,90],valueerror:56,vari:99,variabl:[68,71],variable_summari:89,varieti:72,variou:[70,85,88,89],vector:70,veri:[0,78],versa:70,version:79,via:[67,70],vice:70,view:[71,74,76,82,85,99],violat:79,virtual:85,vision:[1,67,68,70,71,73,74,75,76,77,78,79,82,83,85,86,87,88,89,90,91,92,93,95,96,97,98,99],visions_str:89,visions_typ:90,visionsbasetyp:[1,22,23,24,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,51,90],visionstypeset:[1,20,21,22,23,24,99],visiontypeset:90,visit:68,visualis:[71,78,99],volum:73,wage:69,wai:[60,68,69,70,74,76,80,85,90,92,96,98],want:[0,55,70,71,75,81,83,85],warning_handl:1,web:82,welcom:[0,82],well:[70,71,81],were:[20,21,86],weren:99,what:[68,74,79,99],whatev:97,when:[0,55,56,60,70,71,72,73,75,76,77,78,80,81,82,90,92,99],where:[0,67,68,70,71,76,79,80,81,85,90,96],whether:[28,55,70,72,76,81,85,90],which:[20,21,55,70,72,75,79,80,81,82,84,87,88,89,90,93,97,99],whitespac:89,whose:81,why:75,wise:[20,21],wish:70,within:[68,69,71,76,77,85],without:[55,69,75,76,79,81,87,99],wkt:[38,60],woman:90,wonder:76,word:81,work:[67,73,75,76,79,85,92,94,96],workflow:[67,72,82],world:[70,79,92],worthwhil:71,would:[67,76,79,81,99],wouldn:90,write:[0,56],written:82,www:[49,87],x64:57,year:73,yet:[79,97],yield:68,york:69,you:[0,55,67,68,71,73,76,82,83,84,85,86,90,91,92,93,94,96,99],your:[0,71,76,79,82,83,84,86,90,92,93,99],your_typeset:84,yourself:90,yourtype1:93,yourtype2:93,yourtype3:93,yourtypeset:93,yuan:69,yyyymmdd:90,zaxr:72,zero_summari:1},titles:["Visions","API","visions.application.summaries.frame.dataframe_summary","visions.application.summaries.functional.summarize","visions.application.summaries.functional.summarize_frame","visions.application.summaries.functional.summarize_series","visions.application.summaries.series.base_summary","visions.application.summaries.series.category_summary","visions.application.summaries.series.email_address_summary","visions.application.summaries.series.file_summary","visions.application.summaries.series.image_summary","visions.application.summaries.series.missing_summary","visions.application.summaries.series.numerical_basic_summary","visions.application.summaries.series.numerical_summary","visions.application.summaries.series.path_summary","visions.application.summaries.series.range_summary","visions.application.summaries.series.text_summary","visions.application.summaries.series.unique_summary","visions.application.summaries.series.url_summary","visions.application.summaries.series.zero_summary","visions.functional.cast_to_detected","visions.functional.cast_to_inferred","visions.functional.compare_detect_inference_frame","visions.functional.detect_type","visions.functional.infer_type","visions.functional.type_inference_report_frame","visions.relations.relations.IdentityRelation","visions.relations.relations.InferenceRelation","visions.relations.relations.TypeRelation","visions.types.boolean","visions.types.categorical","visions.types.complex","visions.types.count","visions.types.date","visions.types.date_time","visions.types.file","visions.types.float","visions.types.generic","visions.types.geometry","visions.types.image","visions.types.integer","visions.types.ip_address","visions.types.object","visions.types.ordinal","visions.types.path","visions.types.string","visions.types.time","visions.types.time_delta","visions.types.type.VisionsBaseType","visions.types.url","visions.types.uuid","visions.typesets.VisionsTypeset","visions.typesets.complete_set","visions.typesets.geometry_set","visions.typesets.standard_set","visions.utils.coercion.test_utils","visions.utils.graph","visions.utils.images.image_utils","visions.utils.monkeypatches.imghdr_patch","visions.utils.monkeypatches.pathlib_patch","visions.utils.warning_handling","Functional API","Relations","Summaries","Types","Typesets","Utils","Applications","Data Compression","Data Discovery and Data Integration","Machine Learning","Data Summarization","Data Validation","About","Background","Data Type View","Design decisions","Goals","Graph view","Open challenges","Nested set view","Theory","Community contributions","Support","Contributions new types to visions","Concepts","Examples","Casting example","Membership example","Summaries example","Extending","Installation","Introduction","Typeset testing","Usage","Defaults","Importing the module","Type Relations","Types","Typesets"],titleterms:{"abstract":[64,65],"boolean":29,"default":95,"float":36,"function":[3,4,5,20,21,22,23,24,25,61,63,65],"import":96,"new":84,"short":76,The:[81,99],about:73,all:82,anoth:90,api:[1,61,63,65],applic:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,67],background:[74,81],base_summari:6,bitmap:76,can:92,cast:[78,87,99],cast_to_detect:20,cast_to_inf:21,categor:30,category_summari:7,challeng:[79,81],chang:[61,79],check:76,circuit:76,cite:73,code:79,coercion:55,commun:82,compar:75,compare_detect_inference_fram:22,complet:71,complete_set:52,complex:31,compress:68,compressio:68,concept:[75,85],concret:65,confid:70,constraint:76,contain:93,contribut:[82,84],convers:93,count:32,current:75,custom:90,data:[68,69,71,72,75,79],dataframe_summari:2,date:33,date_tim:34,datetim:71,decis:76,decoupl:75,dedic:79,defin:76,depend:82,design:76,detail:99,detect:[78,99],detect_typ:23,discoveri:69,document:82,doe:[71,92],don:[76,79],dtype:76,email_address_summari:8,encod:70,exampl:[86,87,88,89,90],extend:90,extens:78,fail:75,file:35,file_summari:9,fix:79,frame:[2,63],from:90,gener:[37,99],geometri:38,geometry_set:53,github:83,goal:77,graph:[56,71,78],how:[71,75,92],hundr:79,identityrel:26,imag:[39,57],image_summari:10,image_util:57,imghdr_patch:58,indic:0,infer:[70,76,78,93,99],infer_typ:24,inferencerel:27,inherit:76,instal:[82,91],integ:[40,71],integr:69,introduct:[92,99],ip_address:41,issu:83,learn:70,line:79,lint:82,logic:[75,79],machin:[70,79],mai:79,make:79,map:[78,85],membership:[88,98],memori:76,miss:[75,76],missing_summari:11,mix:79,model:[70,75],modul:[79,96],monkeypatch:[58,59],multipl:99,need:[75,79],nest:80,nullabl:76,numerical_basic_summari:12,numerical_summari:13,numpi:75,object:42,oop:76,open:[79,81],ordin:43,overflow:83,panda:75,path:44,path_summari:14,pathlib_patch:59,physic:75,pip:91,problem:[70,75],profil:70,python:75,range_summari:15,refer:75,relat:[26,27,28,62,76,78,85,97,98],requir:[79,91],sampl:76,score:70,scratch:90,semant:[64,79],seri:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,63],set:[79,80],small:79,solut:81,sourc:91,stack:83,standard_set:54,string:[45,71,75],summar:[3,71],summari:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,61,63,71,89],summarize_fram:4,summarize_seri:5,support:83,tabl:0,test:[76,82,93],test_util:55,text_summari:16,theori:81,time:46,time_delta:47,togeth:82,type:[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,61,64,70,75,76,78,79,84,85,90,97,98],type_inference_report_fram:25,typerel:28,typeset:[51,52,53,54,61,65,71,85,90,93,99],unifi:75,unique_summari:17,url:49,url_summari:18,usag:[76,94],use:76,util:[55,56,57,58,59,60,66],uuid:50,valid:72,valu:[75,76],variabl:70,view:[75,78,80],vision:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,81,84],visionsbasetyp:48,visionstypeset:51,warning_handl:60,what:[75,92],where:75,why:[76,81],work:[71,81],zero_summari:19}}) \ No newline at end of file diff --git a/docs/visions/getting_started/usage/relations.html b/docs/visions/getting_started/usage/relations.html index 8636bf5b..34d17048 100644 --- a/docs/visions/getting_started/usage/relations.html +++ b/docs/visions/getting_started/usage/relations.html @@ -199,15 +199,15 @@

Type Relations
    >>> import visions as v
->>> v.Integer.get_relations()
-[IdentityRelation(Generic -> Integer),
- InferenceRelation(Float -> Integer),
- InferenceRelation(String -> Integer)]
+
>>> import visions as v
+>>> v.Integer.relations
+[IdentityRelation(Generic -> Integer),
+ InferenceRelation(Float -> Integer),
+ InferenceRelation(String -> Integer)]
 

Now imagine a series of floats like [1.0, 2.0, 3.0].

-
>>> float_int_relation = v.Integer.get_relations()[1]
+
>>> float_int_relation = v.Integer.relations[1]
 >>> series = pd.Series([1.0, 2.0, 3.0])
 
 >>> series in v.Integer
diff --git a/docs/visions/getting_started/usage/types.html b/docs/visions/getting_started/usage/types.html
index 58ebf2b0..743bdbec 100644
--- a/docs/visions/getting_started/usage/types.html
+++ b/docs/visions/getting_started/usage/types.html
@@ -213,13 +213,13 @@ 

Types

Membership¶

Type membership is an important component of every visions type, membership checks answer the question is my sequence of a type? In practice this looks like

-
    >>> import visions as v
->>> test_series = pd.Series(['Apple', 'Orange', 'Pear'])
->>> test_series in v.String
-True
+
>>> import visions as v
+>>> test_series = pd.Series(['Apple', 'Orange', 'Pear'])
+>>> test_series in v.String
+True
 
->>> test_series in v.Integer
-False
+>>> test_series in v.Integer
+False
 
@@ -231,11 +231,11 @@

Membership¶

Types also have special knowledge about their relations with other types. A relation represents a mapping between types. Let’s take the example of an integer

-
    >>> import visions as v
->>> v.Integer.get_relations()
-[IdentityRelation(Generic -> Integer),
- InferenceRelation(Float -> Integer),
- InferenceRelation(String -> Integer)]
+
>>> import visions as v
+>>> v.Integer.relations
+[IdentityRelation(Generic -> Integer),
+ InferenceRelation(Float -> Integer),
+ InferenceRelation(String -> Integer)]
 

As we can see, there are three relations defined on the integer type. Each represents From ecb26caf83eda2120566248f9e6e02fc112607ee Mon Sep 17 00:00:00 2001 From: Simon Brugman Date: Wed, 23 Sep 2020 00:18:25 +0200 Subject: [PATCH 5/8] Introduce testing for the sparse data types (+ fixes) (#110) * Introduce testing for the sparse data types --- requirements_test.txt | 2 + src/visions/test/series.py | 31 +------ src/visions/test/series_geometry.py | 30 +++++++ src/visions/test/series_sparse.py | 63 ++++++++++++++ src/visions/types/__init__.py | 2 + src/visions/types/boolean.py | 12 ++- src/visions/types/categorical.py | 2 + src/visions/types/complex.py | 2 + src/visions/types/count.py | 2 + src/visions/types/date_time.py | 2 + src/visions/types/float.py | 4 +- src/visions/types/integer.py | 2 + src/visions/types/numeric.py | 2 + src/visions/types/object.py | 2 + src/visions/types/sparse.py | 29 +++++++ src/visions/types/string.py | 2 + src/visions/types/time_delta.py | 2 + src/visions/utils/series_utils.py | 24 ++++++ tests/test_type_convert.py | 3 +- tests/test_type_inference.py | 3 +- tests/typesets/test_complete_set.py | 3 +- tests/typesets/test_standard_set.py | 3 +- tests/typesets/test_standard_set_sparse.py | 98 ++++++++++++++++++++++ 23 files changed, 287 insertions(+), 38 deletions(-) create mode 100644 src/visions/test/series_geometry.py create mode 100644 src/visions/test/series_sparse.py create mode 100644 src/visions/types/sparse.py create mode 100644 tests/typesets/test_standard_set_sparse.py diff --git a/requirements_test.txt b/requirements_test.txt index 0d10b18a..3d298fec 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -3,6 +3,8 @@ imagehash Pillow shapely mypy +black>=19.10b0 +isort>=5.0.9 big_o>=0.10.1 twine>=3.1.1 pydot diff --git a/src/visions/test/series.py b/src/visions/test/series.py index aeb02ba5..49a2e3a6 100644 --- a/src/visions/test/series.py +++ b/src/visions/test/series.py @@ -443,7 +443,7 @@ def get_series(): pd.Series(["test@example.com", "info@example.eu"], name="email_address_str"), ] - if int(pd.__version__[0]) >= 1: + if int(pd.__version__.split(".")[0]) >= 1: pandas_1_series = [ pd.Series( ["Patty", "Valentine"], dtype="string", name="string_dtype_series" @@ -452,32 +452,3 @@ def get_series(): test_series.extend(pandas_1_series) return test_series - - -def get_geometry_series(): - from shapely import wkt - - series = [ - pd.Series( - ["POINT (-92 42)", "POINT (-92 42.1)", "POINT (-92 42.2)"], - name="geometry_string_series", - ), - pd.Series( - [ - wkt.loads("POINT (-92 42)"), - wkt.loads("POINT (-92 42.1)"), - wkt.loads("POINT (-92 42.2)"), - ], - name="geometry_series", - ), - pd.Series( - [ - wkt.loads("POINT (-92 42)"), - wkt.loads("POINT (-92 42.1)"), - wkt.loads("POINT (-92 42.2)"), - None, - ], - name="geometry_series_missing", - ), - ] - return series diff --git a/src/visions/test/series_geometry.py b/src/visions/test/series_geometry.py new file mode 100644 index 00000000..dff64381 --- /dev/null +++ b/src/visions/test/series_geometry.py @@ -0,0 +1,30 @@ +import pandas as pd + + +def get_geometry_series(): + from shapely import wkt + + series = [ + pd.Series( + ["POINT (-92 42)", "POINT (-92 42.1)", "POINT (-92 42.2)"], + name="geometry_string_series", + ), + pd.Series( + [ + wkt.loads("POINT (-92 42)"), + wkt.loads("POINT (-92 42.1)"), + wkt.loads("POINT (-92 42.2)"), + ], + name="geometry_series", + ), + pd.Series( + [ + wkt.loads("POINT (-92 42)"), + wkt.loads("POINT (-92 42.1)"), + wkt.loads("POINT (-92 42.2)"), + None, + ], + name="geometry_series_missing", + ), + ] + return series diff --git a/src/visions/test/series_sparse.py b/src/visions/test/series_sparse.py new file mode 100644 index 00000000..4789c42d --- /dev/null +++ b/src/visions/test/series_sparse.py @@ -0,0 +1,63 @@ +import numpy as np +import pandas as pd + +nan_value = pd.NA if hasattr(pd, "NA") else None + + +def get_sparse_series(): + test_series = [ + # Numpy dtypes + pd.Series( + [-1, 0, 1, 2, 3], name="int_sparse", dtype=pd.SparseDtype(np.int32, 0) + ), + pd.Series( + [np.nan, 0, 1, 2, 3], + name="float_sparse", + dtype=pd.SparseDtype(np.float64, np.nan), + ), + pd.Series( + [np.nan, complex(0, 1), complex(1, -1), complex(2, 4), complex(3, -12)], + name="complex_sparse", + dtype=pd.SparseDtype(np.complex128, np.nan), + ), + pd.Series( + [True, False, False], + name="bool_sparse", + dtype=pd.SparseDtype(np.bool, False), + ), + pd.Series( + pd.SparseArray([None, None, "gold", "black", "silver"]), + name="str_obj_sparse", + ), + # Pending https://github.com/pandas-dev/pandas/issues/35762 + # pd.Series([NoneT, 0, 1, 2, 3, 4], name="datetime_sparse", dtype=pd.SparseDtype(np.datetime64)), + # Pandas dtypes + pd.Series( + [0, 1, 2, 3, None], + name="pd_int64_sparse", + dtype=pd.SparseDtype(pd.Int64Dtype()), + ), + # Pending https://github.com/pandas-dev/pandas/issues/35793 + # pd.Series( + # ["a", "b", "c", None], + # name="pd_categorical_sparse", + # dtype=pd.SparseDtype(pd.CategoricalDtype(['a', 'b', 'c', 'd'])) + # ) + ] + + if int(pd.__version__.split(".")[0]) >= 1: + pandas_1_series = [ + pd.Series( + ["Patty", "Valentine", "Upper", "", "", ""], + name="pd_string_sparse", + dtype=pd.SparseDtype(pd.StringDtype(), ""), + ), + pd.Series( + [True, False, False, None], + name="pd_bool_sparse", + dtype=pd.SparseDtype(pd.BooleanDtype(), None), + ), + ] + test_series.extend(pandas_1_series) + + return test_series diff --git a/src/visions/types/__init__.py b/src/visions/types/__init__.py index d521357c..5c908e46 100644 --- a/src/visions/types/__init__.py +++ b/src/visions/types/__init__.py @@ -15,6 +15,7 @@ from visions.types.object import Object from visions.types.ordinal import Ordinal from visions.types.path import Path +from visions.types.sparse import Sparse from visions.types.string import String from visions.types.time import Time from visions.types.time_delta import TimeDelta @@ -46,4 +47,5 @@ "URL", "Time", "EmailAddress", + "Sparse", ] diff --git a/src/visions/types/boolean.py b/src/visions/types/boolean.py index 12a0ba30..07c99a40 100644 --- a/src/visions/types/boolean.py +++ b/src/visions/types/boolean.py @@ -9,6 +9,7 @@ from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains from visions.utils.coercion.test_utils import coercion_map, coercion_map_test +from visions.utils.series_utils import series_not_sparse hasnan_bool_name = "boolean" if int(pd.__version__.split(".")[0]) >= 1 else "Bool" @@ -30,11 +31,17 @@ def object_is_bool(series: pd.Series, state: dict) -> bool: def string_is_bool(series, state: dict, string_coercions): - return coercion_map_test(string_coercions)(series.str.lower()) + try: + return coercion_map_test(string_coercions)(series.str.lower()) + except: + return False def string_to_bool(series, state: dict, string_coercions): - return to_bool(coercion_map(string_coercions)(series.str.lower()), state) + try: + return to_bool(coercion_map(string_coercions)(series.str.lower()), state) + except: + return False def _get_relations(cls) -> Sequence[TypeRelation]: @@ -75,6 +82,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: if not pdt.is_categorical_dtype(series) and pdt.is_bool_dtype(series): return True diff --git a/src/visions/types/categorical.py b/src/visions/types/categorical.py index 90a03d59..74316edb 100644 --- a/src/visions/types/categorical.py +++ b/src/visions/types/categorical.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -28,5 +29,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_categorical_dtype(series) diff --git a/src/visions/types/complex.py b/src/visions/types/complex.py index 4d18283d..f88e7f91 100644 --- a/src/visions/types/complex.py +++ b/src/visions/types/complex.py @@ -7,6 +7,7 @@ from visions.types.float import string_is_float from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils +from visions.utils.series_utils import series_not_sparse def test_imaginary_in_string( @@ -58,5 +59,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_complex_dtype(series) diff --git a/src/visions/types/count.py b/src/visions/types/count.py index 0f707711..e616f2f2 100644 --- a/src/visions/types/count.py +++ b/src/visions/types/count.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -28,5 +29,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_unsigned_integer_dtype(series) diff --git a/src/visions/types/date_time.py b/src/visions/types/date_time.py index 28af4583..840a2bbf 100644 --- a/src/visions/types/date_time.py +++ b/src/visions/types/date_time.py @@ -7,6 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils +from visions.utils.series_utils import series_not_sparse def string_is_datetime(series: pd.Series, state: dict) -> bool: @@ -49,5 +50,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_datetime64_any_dtype(series) diff --git a/src/visions/types/float.py b/src/visions/types/float.py index a8cc3c86..8b55aea6 100644 --- a/src/visions/types/float.py +++ b/src/visions/types/float.py @@ -7,8 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils - -# from visions.utils.series_utils import func_nullable_series_contains +from visions.utils.series_utils import func_nullable_series_contains, series_not_sparse from visions.utils.warning_handling import suppress_warnings @@ -90,5 +89,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_float_dtype(series) diff --git a/src/visions/types/integer.py b/src/visions/types/integer.py index 613c7b09..56c0e9da 100644 --- a/src/visions/types/integer.py +++ b/src/visions/types/integer.py @@ -7,6 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains +from visions.utils.series_utils import series_not_sparse def to_int(series: pd.Series, state: dict) -> pd.Series: @@ -51,5 +52,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_integer_dtype(series) diff --git a/src/visions/types/numeric.py b/src/visions/types/numeric.py index 6a2da4a0..310a569b 100644 --- a/src/visions/types/numeric.py +++ b/src/visions/types/numeric.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -28,5 +29,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_numeric_dtype(series) diff --git a/src/visions/types/object.py b/src/visions/types/object.py index 72699bd2..980af4e9 100644 --- a/src/visions/types/object.py +++ b/src/visions/types/object.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -31,6 +32,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: is_object = pdt.is_object_dtype(series) if is_object: diff --git a/src/visions/types/sparse.py b/src/visions/types/sparse.py new file mode 100644 index 00000000..b169c45b --- /dev/null +++ b/src/visions/types/sparse.py @@ -0,0 +1,29 @@ +from typing import Sequence + +import pandas as pd +from pandas.api import types as pdt + +from visions.relations import IdentityRelation, TypeRelation +from visions.types.type import VisionsBaseType + + +class Sparse(VisionsBaseType): + """**Sparse** implementation of :class:`visions.types.type.VisionsBaseType`. + + Examples: + >>> import numpy as np + >>> x = pd.Sparse(pd.Series([np.complex(0, 0), np.complex(1, 2), np.complex(3, -1), np.nan])) + >>> x in visions.Sparse + True + """ + + @classmethod + def get_relations(cls) -> Sequence[TypeRelation]: + from visions.types import Generic + + relations = [IdentityRelation(cls, Generic)] + return relations + + @classmethod + def contains_op(cls, series: pd.Series) -> bool: + return pdt.is_sparse(series) diff --git a/src/visions/types/string.py b/src/visions/types/string.py index 47cd99c8..f22acbfc 100644 --- a/src/visions/types/string.py +++ b/src/visions/types/string.py @@ -6,6 +6,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains +from visions.utils.series_utils import series_not_sparse @func_nullable_series_contains @@ -37,6 +38,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: # TODO: without the object check this passes string categories... is there a better way? if pdt.is_categorical_dtype(series): diff --git a/src/visions/types/time_delta.py b/src/visions/types/time_delta.py index 16577be7..16bfc645 100644 --- a/src/visions/types/time_delta.py +++ b/src/visions/types/time_delta.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -28,5 +29,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_timedelta64_dtype(series) diff --git a/src/visions/utils/series_utils.py b/src/visions/utils/series_utils.py index db5f61d7..52e95d84 100644 --- a/src/visions/utils/series_utils.py +++ b/src/visions/utils/series_utils.py @@ -2,6 +2,20 @@ from typing import Callable import pandas as pd +from pandas.api import types as pdt + +# For future reference: get the dtype from the subtype when the series is sparse +# def sparse_series_contains(fn: Callable): +# @functools.wraps(fn) +# def inner(cls, series: pd.Series, *args, **kwargs) -> bool: +# if pdt.is_sparse(series): +# dtype = series.dtype.subtype +# else: +# dtype = series.dtype +# # TODO: pass dtype (e.g. in state) +# +# return fn(cls, series, *args, **kwargs) +# return inner def nullable_series_contains(fn: Callable) -> Callable: @@ -30,6 +44,16 @@ def inner(series: pd.Series, state={}, *args, **kwargs) -> bool: return inner +def series_not_sparse(fn: Callable) -> Callable: + @functools.wraps(fn) + def inner(cls, series: pd.Series, *args, **kwargs) -> bool: + if pdt.is_sparse(series): + return False + return fn(cls, series, *args, **kwargs) + + return inner + + def _contains_instance_attrs( series, is_method, class_name, attrs: list, sample_size=1 ) -> bool: diff --git a/tests/test_type_convert.py b/tests/test_type_convert.py index 875797ea..cabaeb60 100644 --- a/tests/test_type_convert.py +++ b/tests/test_type_convert.py @@ -2,7 +2,8 @@ import pytest -from visions.test.series import get_geometry_series, get_series +from visions.test.series import get_series +from visions.test.series_geometry import get_geometry_series from visions.typesets import CompleteSet diff --git a/tests/test_type_inference.py b/tests/test_type_inference.py index ba92ed89..a28332c1 100644 --- a/tests/test_type_inference.py +++ b/tests/test_type_inference.py @@ -1,7 +1,8 @@ import pytest from visions import EmailAddress -from visions.test.series import get_geometry_series, get_series +from visions.test.series import get_series +from visions.test.series_geometry import get_geometry_series from visions.types import Generic from visions.typesets import CompleteSet diff --git a/tests/typesets/test_complete_set.py b/tests/typesets/test_complete_set.py index 7c88cab6..6575518b 100644 --- a/tests/typesets/test_complete_set.py +++ b/tests/typesets/test_complete_set.py @@ -10,7 +10,8 @@ from shapely import wkt from visions import CompleteSet -from visions.test.series import get_geometry_series, get_series +from visions.test.series import get_series +from visions.test.series_geometry import get_geometry_series from visions.test.utils import ( cast, contains, diff --git a/tests/typesets/test_standard_set.py b/tests/typesets/test_standard_set.py index 5bc095c9..2c2c5076 100644 --- a/tests/typesets/test_standard_set.py +++ b/tests/typesets/test_standard_set.py @@ -3,7 +3,8 @@ import pytest from visions import StandardSet -from visions.test.series import get_geometry_series, get_series +from visions.test.series import get_series +from visions.test.series_geometry import get_geometry_series from visions.test.utils import ( cast, contains, diff --git a/tests/typesets/test_standard_set_sparse.py b/tests/typesets/test_standard_set_sparse.py new file mode 100644 index 00000000..eca9c813 --- /dev/null +++ b/tests/typesets/test_standard_set_sparse.py @@ -0,0 +1,98 @@ +import pandas as pd +import pytest + +from visions import StandardSet +from visions.test.series_sparse import get_sparse_series +from visions.test.utils import contains, get_contains_cases, get_inference_cases, infers +from visions.types import ( + Boolean, + Categorical, + Complex, + DateTime, + Float, + Generic, + Integer, + Object, + String, + TimeDelta, +) + +series = get_sparse_series() + +typeset = StandardSet() + +contains_map = { + DateTime: set(), + TimeDelta: set(), + Categorical: set(), + Object: set(), + Integer: set(), + Complex: set(), + Float: set(), + Boolean: set(), + String: set(), + Generic: { + "int_sparse", + "pd_int64_sparse", + "float_sparse", + "bool_sparse", + "complex_sparse", + "str_obj_sparse", + }, +} + +if int(pd.__version__.split(".")[0]) >= 1: + contains_map[Generic].add("pd_bool_sparse") + contains_map[Generic].add("pd_string_sparse") + + +@pytest.mark.parametrize(**get_contains_cases(series, contains_map, typeset)) +def test_contains(series, type, member): + """Test the generated combinations for "series in type" + + Args: + series: the series to test + type: the type to test against + member: the result + """ + result, message = contains(series, type, member) + assert result, message + + +inference_map = { + "int_sparse": Generic, + "pd_int64_sparse": Generic, + "float_sparse": Generic, + "bool_sparse": Generic, + "pd_bool_sparse": Generic, + "complex_sparse": Generic, + "str_obj_sparse": Generic, + "pd_categorical_sparse": Generic, + # "datetime_sparse": Generic, +} + +if int(pd.__version__.split(".")[0]) >= 1: + inference_map["pd_bool_sparse"] = Generic + inference_map["pd_string_sparse"] = Generic + + +@pytest.mark.parametrize(**get_inference_cases(series, inference_map, typeset)) +def test_inference(series, type, typeset, difference): + """Test the generated combinations for "inference(series) == type" + + Args: + series: the series to test + type: the type to test against + """ + result, message = infers(series, type, typeset, difference) + assert result, message + + +@pytest.mark.parametrize("series", series) +def test_detect_type(series): + typeset.detect_type(series) + + +@pytest.mark.parametrize("series", series) +def test_cast_inferred(series): + typeset.cast_to_inferred(series) From 3d609b134d2c345b55b1bfd037300174a2c32c94 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 22 Sep 2020 22:20:02 +0000 Subject: [PATCH 6/8] [skip ci] Updating documentation --- docs/_modules/visions/types/boolean.html | 12 ++++++++++-- docs/_modules/visions/types/categorical.html | 2 ++ docs/_modules/visions/types/complex.html | 2 ++ docs/_modules/visions/types/count.html | 2 ++ docs/_modules/visions/types/date_time.html | 2 ++ docs/_modules/visions/types/float.html | 4 ++-- docs/_modules/visions/types/integer.html | 2 ++ docs/_modules/visions/types/object.html | 2 ++ docs/_modules/visions/types/string.html | 2 ++ docs/_modules/visions/types/time_delta.html | 2 ++ 10 files changed, 28 insertions(+), 4 deletions(-) diff --git a/docs/_modules/visions/types/boolean.html b/docs/_modules/visions/types/boolean.html index 35dbb891..fed1406a 100644 --- a/docs/_modules/visions/types/boolean.html +++ b/docs/_modules/visions/types/boolean.html @@ -192,6 +192,7 @@

Source code for visions.types.boolean

 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
 from visions.utils.coercion.test_utils import coercion_map, coercion_map_test
+from visions.utils.series_utils import series_not_sparse
 
 hasnan_bool_name = "boolean" if int(pd.__version__.split(".")[0]) >= 1 else "Bool"
 
@@ -213,11 +214,17 @@ 

Source code for visions.types.boolean

 
 
 def string_is_bool(series, state: dict, string_coercions):
-    return coercion_map_test(string_coercions)(series.str.lower())
+    try:
+        return coercion_map_test(string_coercions)(series.str.lower())
+    except:
+        return False
 
 
 def string_to_bool(series, state: dict, string_coercions):
-    return to_bool(coercion_map(string_coercions)(series.str.lower()), state)
+    try:
+        return to_bool(coercion_map(string_coercions)(series.str.lower()), state)
+    except:
+        return False
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -258,6 +265,7 @@ 

Source code for visions.types.boolean

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         if not pdt.is_categorical_dtype(series) and pdt.is_bool_dtype(series):
             return True
diff --git a/docs/_modules/visions/types/categorical.html b/docs/_modules/visions/types/categorical.html
index 717363f4..33f89845 100644
--- a/docs/_modules/visions/types/categorical.html
+++ b/docs/_modules/visions/types/categorical.html
@@ -188,6 +188,7 @@ 

Source code for visions.types.categorical

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils.series_utils import series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -211,6 +212,7 @@ 

Source code for visions.types.categorical

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_categorical_dtype(series)
diff --git a/docs/_modules/visions/types/complex.html b/docs/_modules/visions/types/complex.html index 443d6c20..fae08429 100644 --- a/docs/_modules/visions/types/complex.html +++ b/docs/_modules/visions/types/complex.html @@ -190,6 +190,7 @@

Source code for visions.types.complex

 from visions.types.float import string_is_float
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
+from visions.utils.series_utils import series_not_sparse
 
 
 def test_imaginary_in_string(
@@ -241,6 +242,7 @@ 

Source code for visions.types.complex

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_complex_dtype(series)
diff --git a/docs/_modules/visions/types/count.html b/docs/_modules/visions/types/count.html index adce2736..8d7a9b46 100644 --- a/docs/_modules/visions/types/count.html +++ b/docs/_modules/visions/types/count.html @@ -188,6 +188,7 @@

Source code for visions.types.count

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils.series_utils import series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -211,6 +212,7 @@ 

Source code for visions.types.count

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_unsigned_integer_dtype(series)
diff --git a/docs/_modules/visions/types/date_time.html b/docs/_modules/visions/types/date_time.html index f983777a..682cbe9c 100644 --- a/docs/_modules/visions/types/date_time.html +++ b/docs/_modules/visions/types/date_time.html @@ -190,6 +190,7 @@

Source code for visions.types.date_time

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
+from visions.utils.series_utils import series_not_sparse
 
 
 def string_is_datetime(series: pd.Series, state: dict) -> bool:
@@ -232,6 +233,7 @@ 

Source code for visions.types.date_time

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_datetime64_any_dtype(series)
diff --git a/docs/_modules/visions/types/float.html b/docs/_modules/visions/types/float.html index 4dbc594c..20159ca8 100644 --- a/docs/_modules/visions/types/float.html +++ b/docs/_modules/visions/types/float.html @@ -190,8 +190,7 @@

Source code for visions.types.float

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
-
-# from visions.utils.series_utils import func_nullable_series_contains
+from visions.utils.series_utils import func_nullable_series_contains, series_not_sparse
 from visions.utils.warning_handling import suppress_warnings
 
 
@@ -273,6 +272,7 @@ 

Source code for visions.types.float

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_float_dtype(series)
diff --git a/docs/_modules/visions/types/integer.html b/docs/_modules/visions/types/integer.html index 2a01401b..b7829752 100644 --- a/docs/_modules/visions/types/integer.html +++ b/docs/_modules/visions/types/integer.html @@ -190,6 +190,7 @@

Source code for visions.types.integer

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
+from visions.utils.series_utils import series_not_sparse
 
 
 def to_int(series: pd.Series, state: dict) -> pd.Series:
@@ -234,6 +235,7 @@ 

Source code for visions.types.integer

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_integer_dtype(series)
diff --git a/docs/_modules/visions/types/object.html b/docs/_modules/visions/types/object.html index 91c65da4..5f845b0b 100644 --- a/docs/_modules/visions/types/object.html +++ b/docs/_modules/visions/types/object.html @@ -188,6 +188,7 @@

Source code for visions.types.object

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils.series_utils import series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -214,6 +215,7 @@ 

Source code for visions.types.object

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         is_object = pdt.is_object_dtype(series)
         if is_object:
diff --git a/docs/_modules/visions/types/string.html b/docs/_modules/visions/types/string.html
index 8a63e98f..50573102 100644
--- a/docs/_modules/visions/types/string.html
+++ b/docs/_modules/visions/types/string.html
@@ -189,6 +189,7 @@ 

Source code for visions.types.string

 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
+from visions.utils.series_utils import series_not_sparse
 
 
 @func_nullable_series_contains
@@ -220,6 +221,7 @@ 

Source code for visions.types.string

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         # TODO: without the object check this passes string categories... is there a better way?
         if pdt.is_categorical_dtype(series):
diff --git a/docs/_modules/visions/types/time_delta.html b/docs/_modules/visions/types/time_delta.html
index e816c1f5..aef1fb19 100644
--- a/docs/_modules/visions/types/time_delta.html
+++ b/docs/_modules/visions/types/time_delta.html
@@ -188,6 +188,7 @@ 

Source code for visions.types.time_delta

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils.series_utils import series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -211,6 +212,7 @@ 

Source code for visions.types.time_delta

         return _get_relations(cls)
 
     @classmethod
+    @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_timedelta64_dtype(series)
From 0633b15e6ccd65b9b2d32ca7256b4f5c65d5b6c6 Mon Sep 17 00:00:00 2001 From: Simon Brugman Date: Wed, 23 Sep 2020 00:44:12 +0200 Subject: [PATCH 7/8] series_not_empty decorator (#117) series_not_empty decorator --- src/visions/test/series_sparse.py | 2 +- src/visions/types/boolean.py | 3 ++- src/visions/types/categorical.py | 3 ++- src/visions/types/complex.py | 3 ++- src/visions/types/count.py | 3 ++- src/visions/types/date.py | 4 +++- src/visions/types/date_time.py | 3 ++- src/visions/types/email_address.py | 7 ++++++- src/visions/types/file.py | 3 ++- src/visions/types/float.py | 3 ++- src/visions/types/geometry.py | 3 ++- src/visions/types/image.py | 3 ++- src/visions/types/integer.py | 3 ++- src/visions/types/ip_address.py | 3 ++- src/visions/types/numeric.py | 3 ++- src/visions/types/object.py | 3 ++- src/visions/types/ordinal.py | 2 ++ src/visions/types/path.py | 3 ++- src/visions/types/string.py | 3 ++- src/visions/types/time.py | 2 ++ src/visions/types/time_delta.py | 3 ++- src/visions/types/type.py | 7 ------- src/visions/types/url.py | 2 ++ src/visions/types/uuid.py | 7 ++++++- src/visions/utils/series_utils.py | 10 ++++++++++ 25 files changed, 64 insertions(+), 27 deletions(-) diff --git a/src/visions/test/series_sparse.py b/src/visions/test/series_sparse.py index 4789c42d..f1d0bca7 100644 --- a/src/visions/test/series_sparse.py +++ b/src/visions/test/series_sparse.py @@ -26,7 +26,7 @@ def get_sparse_series(): dtype=pd.SparseDtype(np.bool, False), ), pd.Series( - pd.SparseArray([None, None, "gold", "black", "silver"]), + pd.arrays.SparseArray([None, None, "gold", "black", "silver"]), name="str_obj_sparse", ), # Pending https://github.com/pandas-dev/pandas/issues/35762 diff --git a/src/visions/types/boolean.py b/src/visions/types/boolean.py index 07c99a40..0412d985 100644 --- a/src/visions/types/boolean.py +++ b/src/visions/types/boolean.py @@ -9,7 +9,7 @@ from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains from visions.utils.coercion.test_utils import coercion_map, coercion_map_test -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse hasnan_bool_name = "boolean" if int(pd.__version__.split(".")[0]) >= 1 else "Bool" @@ -83,6 +83,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: if not pdt.is_categorical_dtype(series) and pdt.is_bool_dtype(series): return True diff --git a/src/visions/types/categorical.py b/src/visions/types/categorical.py index 74316edb..62972950 100644 --- a/src/visions/types/categorical.py +++ b/src/visions/types/categorical.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -30,5 +30,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_categorical_dtype(series) diff --git a/src/visions/types/complex.py b/src/visions/types/complex.py index f88e7f91..dfa3684d 100644 --- a/src/visions/types/complex.py +++ b/src/visions/types/complex.py @@ -7,7 +7,7 @@ from visions.types.float import string_is_float from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def test_imaginary_in_string( @@ -60,5 +60,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_complex_dtype(series) diff --git a/src/visions/types/count.py b/src/visions/types/count.py index e616f2f2..c3e73205 100644 --- a/src/visions/types/count.py +++ b/src/visions/types/count.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -30,5 +30,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_unsigned_integer_dtype(series) diff --git a/src/visions/types/date.py b/src/visions/types/date.py index ec35889a..cc4282da 100644 --- a/src/visions/types/date.py +++ b/src/visions/types/date.py @@ -5,10 +5,11 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils import func_nullable_series_contains from visions.utils.series_utils import ( class_name_attrs, - func_nullable_series_contains, nullable_series_contains, + series_not_empty, ) @@ -53,6 +54,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return class_name_attrs(series, date, ["year", "month", "day"]) diff --git a/src/visions/types/date_time.py b/src/visions/types/date_time.py index 840a2bbf..fcf06ffb 100644 --- a/src/visions/types/date_time.py +++ b/src/visions/types/date_time.py @@ -7,7 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def string_is_datetime(series: pd.Series, state: dict) -> bool: @@ -51,5 +51,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_datetime64_any_dtype(series) diff --git a/src/visions/types/email_address.py b/src/visions/types/email_address.py index 19a86911..159fd536 100644 --- a/src/visions/types/email_address.py +++ b/src/visions/types/email_address.py @@ -6,7 +6,11 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils -from visions.utils.series_utils import isinstance_attrs, nullable_series_contains +from visions.utils.series_utils import ( + isinstance_attrs, + nullable_series_contains, + series_not_empty, +) def string_is_email(series, state: dict): @@ -73,6 +77,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return isinstance_attrs(series, FQDA, ["local", "fqdn"]) diff --git a/src/visions/types/file.py b/src/visions/types/file.py index 01c643f3..18542608 100644 --- a/src/visions/types/file.py +++ b/src/visions/types/file.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import nullable_series_contains +from visions.utils.series_utils import nullable_series_contains, series_not_empty def _get_relations(cls) -> Sequence[TypeRelation]: @@ -30,6 +30,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return all(isinstance(p, pathlib.Path) and p.exists() for p in series) diff --git a/src/visions/types/float.py b/src/visions/types/float.py index 8b55aea6..a21cb2d6 100644 --- a/src/visions/types/float.py +++ b/src/visions/types/float.py @@ -7,7 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils -from visions.utils.series_utils import func_nullable_series_contains, series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse from visions.utils.warning_handling import suppress_warnings @@ -89,6 +89,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @series_not_sparse def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_float_dtype(series) diff --git a/src/visions/types/geometry.py b/src/visions/types/geometry.py index eb099e7c..670345be 100644 --- a/src/visions/types/geometry.py +++ b/src/visions/types/geometry.py @@ -6,7 +6,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import nullable_series_contains +from visions.utils.series_utils import nullable_series_contains, series_not_empty def string_is_geometry(series: pd.Series, state: dict) -> bool: @@ -60,6 +60,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: from shapely.geometry.base import BaseGeometry diff --git a/src/visions/types/image.py b/src/visions/types/image.py index 1f1252de..6b79eff8 100644 --- a/src/visions/types/image.py +++ b/src/visions/types/image.py @@ -6,7 +6,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import nullable_series_contains +from visions.utils.series_utils import nullable_series_contains, series_not_empty def _get_relations(cls) -> Sequence[TypeRelation]: @@ -31,6 +31,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return all( diff --git a/src/visions/types/integer.py b/src/visions/types/integer.py index 56c0e9da..9f1a1389 100644 --- a/src/visions/types/integer.py +++ b/src/visions/types/integer.py @@ -7,7 +7,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def to_int(series: pd.Series, state: dict) -> pd.Series: @@ -53,5 +53,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_integer_dtype(series) diff --git a/src/visions/types/ip_address.py b/src/visions/types/ip_address.py index 8a6ad57c..3d5a3105 100644 --- a/src/visions/types/ip_address.py +++ b/src/visions/types/ip_address.py @@ -6,7 +6,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion import test_utils -from visions.utils.series_utils import nullable_series_contains +from visions.utils.series_utils import nullable_series_contains, series_not_empty def string_is_ip(series, state: dict): @@ -42,6 +42,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return all(isinstance(x, _BaseAddress) for x in series) diff --git a/src/visions/types/numeric.py b/src/visions/types/numeric.py index 310a569b..2d636620 100644 --- a/src/visions/types/numeric.py +++ b/src/visions/types/numeric.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -30,5 +30,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_numeric_dtype(series) diff --git a/src/visions/types/object.py b/src/visions/types/object.py index 980af4e9..98f7c5be 100644 --- a/src/visions/types/object.py +++ b/src/visions/types/object.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -33,6 +33,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: is_object = pdt.is_object_dtype(series) if is_object: diff --git a/src/visions/types/ordinal.py b/src/visions/types/ordinal.py index c880ab40..e9b50bb3 100644 --- a/src/visions/types/ordinal.py +++ b/src/visions/types/ordinal.py @@ -5,6 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType +from visions.utils.series_utils import series_not_empty def to_ordinal(series: pd.Series) -> pd.Categorical: @@ -34,5 +35,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_categorical_dtype(series) and series.cat.ordered diff --git a/src/visions/types/path.py b/src/visions/types/path.py index a194429d..79912e28 100644 --- a/src/visions/types/path.py +++ b/src/visions/types/path.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import nullable_series_contains +from visions.utils.series_utils import nullable_series_contains, series_not_empty def string_is_path(series, state: dict) -> bool: @@ -51,6 +51,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return all(isinstance(x, pathlib.PurePath) and x.is_absolute() for x in series) diff --git a/src/visions/types/string.py b/src/visions/types/string.py index f22acbfc..c4f07567 100644 --- a/src/visions/types/string.py +++ b/src/visions/types/string.py @@ -6,7 +6,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils import func_nullable_series_contains -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse @func_nullable_series_contains @@ -39,6 +39,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: # TODO: without the object check this passes string categories... is there a better way? if pdt.is_categorical_dtype(series): diff --git a/src/visions/types/time.py b/src/visions/types/time.py index c5ab3126..aca8cdf9 100644 --- a/src/visions/types/time.py +++ b/src/visions/types/time.py @@ -9,6 +9,7 @@ class_name_attrs, func_nullable_series_contains, nullable_series_contains, + series_not_empty, ) @@ -44,6 +45,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return class_name_attrs(series, time, ["microsecond", "hour"]) diff --git a/src/visions/types/time_delta.py b/src/visions/types/time_delta.py index 16bfc645..f91586d5 100644 --- a/src/visions/types/time_delta.py +++ b/src/visions/types/time_delta.py @@ -5,7 +5,7 @@ from visions.relations import IdentityRelation, TypeRelation from visions.types.type import VisionsBaseType -from visions.utils.series_utils import series_not_sparse +from visions.utils.series_utils import series_not_empty, series_not_sparse def _get_relations(cls) -> Sequence[TypeRelation]: @@ -30,5 +30,6 @@ def get_relations(cls) -> Sequence[TypeRelation]: @classmethod @series_not_sparse + @series_not_empty def contains_op(cls, series: pd.Series, state: dict) -> bool: return pdt.is_timedelta64_dtype(series) diff --git a/src/visions/types/type.py b/src/visions/types/type.py index aacdd0df..fa3f74dc 100644 --- a/src/visions/types/type.py +++ b/src/visions/types/type.py @@ -9,13 +9,6 @@ class VisionsBaseTypeMeta(ABCMeta): def __contains__(cls, series: pd.Series, state: dict = {}) -> bool: - # Possible alternative: - # return cls in cls.typeset.detect_type_path(series) - - if series.empty: - from visions.types import Generic - - return issubclass(cls, Generic) return cls.contains_op(series, state) # type: ignore @property diff --git a/src/visions/types/url.py b/src/visions/types/url.py index faecdddb..3c41ddc9 100644 --- a/src/visions/types/url.py +++ b/src/visions/types/url.py @@ -9,6 +9,7 @@ func_nullable_series_contains, isinstance_attrs, nullable_series_contains, + series_not_empty, ) @@ -51,6 +52,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return isinstance_attrs(series, ParseResult, ["netloc", "scheme"]) diff --git a/src/visions/types/uuid.py b/src/visions/types/uuid.py index 86a1392b..71569f98 100644 --- a/src/visions/types/uuid.py +++ b/src/visions/types/uuid.py @@ -6,7 +6,11 @@ from visions.relations import IdentityRelation, InferenceRelation, TypeRelation from visions.types.type import VisionsBaseType from visions.utils.coercion.test_utils import coercion_true_test -from visions.utils.series_utils import isinstance_attrs, nullable_series_contains +from visions.utils.series_utils import ( + isinstance_attrs, + nullable_series_contains, + series_not_empty, +) def string_is_uuid(series, state: dict) -> bool: @@ -56,6 +60,7 @@ def get_relations(cls) -> Sequence[TypeRelation]: return _get_relations(cls) @classmethod + @series_not_empty @nullable_series_contains def contains_op(cls, series: pd.Series, state: dict) -> bool: return isinstance_attrs(series, uuid.UUID, ["time_low", "hex"]) diff --git a/src/visions/utils/series_utils.py b/src/visions/utils/series_utils.py index 52e95d84..9d223a47 100644 --- a/src/visions/utils/series_utils.py +++ b/src/visions/utils/series_utils.py @@ -54,6 +54,16 @@ def inner(cls, series: pd.Series, *args, **kwargs) -> bool: return inner +def series_not_empty(fn: Callable) -> Callable: + @functools.wraps(fn) + def inner(cls, series: pd.Series, *args, **kwargs) -> bool: + if series.empty: + return False + return fn(cls, series, *args, **kwargs) + + return inner + + def _contains_instance_attrs( series, is_method, class_name, attrs: list, sample_size=1 ) -> bool: From 6239770ee24f3e86afb18ae0ef4fed80f73fe19d Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 22 Sep 2020 22:45:43 +0000 Subject: [PATCH 8/8] [skip ci] Updating documentation --- docs/_modules/visions/types/boolean.html | 3 ++- docs/_modules/visions/types/categorical.html | 3 ++- docs/_modules/visions/types/complex.html | 3 ++- docs/_modules/visions/types/count.html | 3 ++- docs/_modules/visions/types/date.html | 4 +++- docs/_modules/visions/types/date_time.html | 3 ++- docs/_modules/visions/types/file.html | 3 ++- docs/_modules/visions/types/float.html | 3 ++- docs/_modules/visions/types/geometry.html | 3 ++- docs/_modules/visions/types/image.html | 3 ++- docs/_modules/visions/types/integer.html | 3 ++- docs/_modules/visions/types/ip_address.html | 3 ++- docs/_modules/visions/types/object.html | 3 ++- docs/_modules/visions/types/ordinal.html | 2 ++ docs/_modules/visions/types/path.html | 3 ++- docs/_modules/visions/types/string.html | 3 ++- docs/_modules/visions/types/time.html | 2 ++ docs/_modules/visions/types/time_delta.html | 3 ++- docs/_modules/visions/types/type.html | 7 ------- docs/_modules/visions/types/url.html | 2 ++ docs/_modules/visions/types/uuid.html | 7 ++++++- 21 files changed, 45 insertions(+), 24 deletions(-) diff --git a/docs/_modules/visions/types/boolean.html b/docs/_modules/visions/types/boolean.html index fed1406a..e496321c 100644 --- a/docs/_modules/visions/types/boolean.html +++ b/docs/_modules/visions/types/boolean.html @@ -192,7 +192,7 @@

Source code for visions.types.boolean

 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
 from visions.utils.coercion.test_utils import coercion_map, coercion_map_test
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 hasnan_bool_name = "boolean" if int(pd.__version__.split(".")[0]) >= 1 else "Bool"
 
@@ -266,6 +266,7 @@ 

Source code for visions.types.boolean

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         if not pdt.is_categorical_dtype(series) and pdt.is_bool_dtype(series):
             return True
diff --git a/docs/_modules/visions/types/categorical.html b/docs/_modules/visions/types/categorical.html
index 33f89845..90ac2f36 100644
--- a/docs/_modules/visions/types/categorical.html
+++ b/docs/_modules/visions/types/categorical.html
@@ -188,7 +188,7 @@ 

Source code for visions.types.categorical

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -213,6 +213,7 @@ 

Source code for visions.types.categorical

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_categorical_dtype(series)
diff --git a/docs/_modules/visions/types/complex.html b/docs/_modules/visions/types/complex.html index fae08429..fc73fc6e 100644 --- a/docs/_modules/visions/types/complex.html +++ b/docs/_modules/visions/types/complex.html @@ -190,7 +190,7 @@

Source code for visions.types.complex

 from visions.types.float import string_is_float
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def test_imaginary_in_string(
@@ -243,6 +243,7 @@ 

Source code for visions.types.complex

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_complex_dtype(series)
diff --git a/docs/_modules/visions/types/count.html b/docs/_modules/visions/types/count.html index 8d7a9b46..3edc4b1a 100644 --- a/docs/_modules/visions/types/count.html +++ b/docs/_modules/visions/types/count.html @@ -188,7 +188,7 @@

Source code for visions.types.count

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -213,6 +213,7 @@ 

Source code for visions.types.count

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_unsigned_integer_dtype(series)
diff --git a/docs/_modules/visions/types/date.html b/docs/_modules/visions/types/date.html index 5b0386f5..3f5eadac 100644 --- a/docs/_modules/visions/types/date.html +++ b/docs/_modules/visions/types/date.html @@ -188,10 +188,11 @@

Source code for visions.types.date

 
 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils import func_nullable_series_contains
 from visions.utils.series_utils import (
     class_name_attrs,
-    func_nullable_series_contains,
     nullable_series_contains,
+    series_not_empty,
 )
 
 
@@ -236,6 +237,7 @@ 

Source code for visions.types.date

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return class_name_attrs(series, date, ["year", "month", "day"])
diff --git a/docs/_modules/visions/types/date_time.html b/docs/_modules/visions/types/date_time.html index 682cbe9c..df7756f7 100644 --- a/docs/_modules/visions/types/date_time.html +++ b/docs/_modules/visions/types/date_time.html @@ -190,7 +190,7 @@

Source code for visions.types.date_time

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def string_is_datetime(series: pd.Series, state: dict) -> bool:
@@ -234,6 +234,7 @@ 

Source code for visions.types.date_time

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_datetime64_any_dtype(series)
diff --git a/docs/_modules/visions/types/file.html b/docs/_modules/visions/types/file.html index 64dcb6bd..1e2d8d98 100644 --- a/docs/_modules/visions/types/file.html +++ b/docs/_modules/visions/types/file.html @@ -188,7 +188,7 @@

Source code for visions.types.file

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import nullable_series_contains
+from visions.utils.series_utils import nullable_series_contains, series_not_empty
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -213,6 +213,7 @@ 

Source code for visions.types.file

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return all(isinstance(p, pathlib.Path) and p.exists() for p in series)
diff --git a/docs/_modules/visions/types/float.html b/docs/_modules/visions/types/float.html index 20159ca8..28469663 100644 --- a/docs/_modules/visions/types/float.html +++ b/docs/_modules/visions/types/float.html @@ -190,7 +190,7 @@

Source code for visions.types.float

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
-from visions.utils.series_utils import func_nullable_series_contains, series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 from visions.utils.warning_handling import suppress_warnings
 
 
@@ -272,6 +272,7 @@ 

Source code for visions.types.float

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @series_not_sparse
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_float_dtype(series)
diff --git a/docs/_modules/visions/types/geometry.html b/docs/_modules/visions/types/geometry.html index b49ded14..369fa2f8 100644 --- a/docs/_modules/visions/types/geometry.html +++ b/docs/_modules/visions/types/geometry.html @@ -189,7 +189,7 @@

Source code for visions.types.geometry

 
 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import nullable_series_contains
+from visions.utils.series_utils import nullable_series_contains, series_not_empty
 
 
 
[docs]def string_is_geometry(series: pd.Series, state: dict) -> bool: @@ -243,6 +243,7 @@

Source code for visions.types.geometry

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         from shapely.geometry.base import BaseGeometry
diff --git a/docs/_modules/visions/types/image.html b/docs/_modules/visions/types/image.html
index adbf0d74..7d4ca1a4 100644
--- a/docs/_modules/visions/types/image.html
+++ b/docs/_modules/visions/types/image.html
@@ -189,7 +189,7 @@ 

Source code for visions.types.image

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import nullable_series_contains
+from visions.utils.series_utils import nullable_series_contains, series_not_empty
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -214,6 +214,7 @@ 

Source code for visions.types.image

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return all(
diff --git a/docs/_modules/visions/types/integer.html b/docs/_modules/visions/types/integer.html
index b7829752..48a5ca52 100644
--- a/docs/_modules/visions/types/integer.html
+++ b/docs/_modules/visions/types/integer.html
@@ -190,7 +190,7 @@ 

Source code for visions.types.integer

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def to_int(series: pd.Series, state: dict) -> pd.Series:
@@ -236,6 +236,7 @@ 

Source code for visions.types.integer

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_integer_dtype(series)
diff --git a/docs/_modules/visions/types/ip_address.html b/docs/_modules/visions/types/ip_address.html index cf0c1301..b62920f1 100644 --- a/docs/_modules/visions/types/ip_address.html +++ b/docs/_modules/visions/types/ip_address.html @@ -189,7 +189,7 @@

Source code for visions.types.ip_address

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion import test_utils
-from visions.utils.series_utils import nullable_series_contains
+from visions.utils.series_utils import nullable_series_contains, series_not_empty
 
 
 def string_is_ip(series, state: dict):
@@ -225,6 +225,7 @@ 

Source code for visions.types.ip_address

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return all(isinstance(x, _BaseAddress) for x in series)
diff --git a/docs/_modules/visions/types/object.html b/docs/_modules/visions/types/object.html index 5f845b0b..990ef992 100644 --- a/docs/_modules/visions/types/object.html +++ b/docs/_modules/visions/types/object.html @@ -188,7 +188,7 @@

Source code for visions.types.object

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -216,6 +216,7 @@ 

Source code for visions.types.object

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         is_object = pdt.is_object_dtype(series)
         if is_object:
diff --git a/docs/_modules/visions/types/ordinal.html b/docs/_modules/visions/types/ordinal.html
index 36cac0ae..5e4294af 100644
--- a/docs/_modules/visions/types/ordinal.html
+++ b/docs/_modules/visions/types/ordinal.html
@@ -188,6 +188,7 @@ 

Source code for visions.types.ordinal

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
+from visions.utils.series_utils import series_not_empty
 
 
 def to_ordinal(series: pd.Series) -> pd.Categorical:
@@ -217,6 +218,7 @@ 

Source code for visions.types.ordinal

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_categorical_dtype(series) and series.cat.ordered
diff --git a/docs/_modules/visions/types/path.html b/docs/_modules/visions/types/path.html index 21d264d1..46d2820d 100644 --- a/docs/_modules/visions/types/path.html +++ b/docs/_modules/visions/types/path.html @@ -188,7 +188,7 @@

Source code for visions.types.path

 
 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import nullable_series_contains
+from visions.utils.series_utils import nullable_series_contains, series_not_empty
 
 
 def string_is_path(series, state: dict) -> bool:
@@ -234,6 +234,7 @@ 

Source code for visions.types.path

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return all(isinstance(x, pathlib.PurePath) and x.is_absolute() for x in series)
diff --git a/docs/_modules/visions/types/string.html b/docs/_modules/visions/types/string.html index 50573102..a83cd16f 100644 --- a/docs/_modules/visions/types/string.html +++ b/docs/_modules/visions/types/string.html @@ -189,7 +189,7 @@

Source code for visions.types.string

 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils import func_nullable_series_contains
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 @func_nullable_series_contains
@@ -222,6 +222,7 @@ 

Source code for visions.types.string

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         # TODO: without the object check this passes string categories... is there a better way?
         if pdt.is_categorical_dtype(series):
diff --git a/docs/_modules/visions/types/time.html b/docs/_modules/visions/types/time.html
index ff559459..fc1d2d19 100644
--- a/docs/_modules/visions/types/time.html
+++ b/docs/_modules/visions/types/time.html
@@ -192,6 +192,7 @@ 

Source code for visions.types.time

     class_name_attrs,
     func_nullable_series_contains,
     nullable_series_contains,
+    series_not_empty,
 )
 
 
@@ -227,6 +228,7 @@ 

Source code for visions.types.time

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return class_name_attrs(series, time, ["microsecond", "hour"])
diff --git a/docs/_modules/visions/types/time_delta.html b/docs/_modules/visions/types/time_delta.html index aef1fb19..367b787d 100644 --- a/docs/_modules/visions/types/time_delta.html +++ b/docs/_modules/visions/types/time_delta.html @@ -188,7 +188,7 @@

Source code for visions.types.time_delta

 
 from visions.relations import IdentityRelation, TypeRelation
 from visions.types.type import VisionsBaseType
-from visions.utils.series_utils import series_not_sparse
+from visions.utils.series_utils import series_not_empty, series_not_sparse
 
 
 def _get_relations(cls) -> Sequence[TypeRelation]:
@@ -213,6 +213,7 @@ 

Source code for visions.types.time_delta

 
     @classmethod
     @series_not_sparse
+    @series_not_empty
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return pdt.is_timedelta64_dtype(series)
diff --git a/docs/_modules/visions/types/type.html b/docs/_modules/visions/types/type.html index 479d9c8f..eb444e74 100644 --- a/docs/_modules/visions/types/type.html +++ b/docs/_modules/visions/types/type.html @@ -192,13 +192,6 @@

Source code for visions.types.type

 
 class VisionsBaseTypeMeta(ABCMeta):
     def __contains__(cls, series: pd.Series, state: dict = {}) -> bool:
-        # Possible alternative:
-        # return cls in cls.typeset.detect_type_path(series)
-
-        if series.empty:
-            from visions.types import Generic
-
-            return issubclass(cls, Generic)
         return cls.contains_op(series, state)  # type: ignore
 
     @property
diff --git a/docs/_modules/visions/types/url.html b/docs/_modules/visions/types/url.html
index 56f386b1..b75d6952 100644
--- a/docs/_modules/visions/types/url.html
+++ b/docs/_modules/visions/types/url.html
@@ -192,6 +192,7 @@ 

Source code for visions.types.url

     func_nullable_series_contains,
     isinstance_attrs,
     nullable_series_contains,
+    series_not_empty,
 )
 
 
@@ -234,6 +235,7 @@ 

Source code for visions.types.url

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return isinstance_attrs(series, ParseResult, ["netloc", "scheme"])
diff --git a/docs/_modules/visions/types/uuid.html b/docs/_modules/visions/types/uuid.html index 5b7c56a5..c3e26207 100644 --- a/docs/_modules/visions/types/uuid.html +++ b/docs/_modules/visions/types/uuid.html @@ -189,7 +189,11 @@

Source code for visions.types.uuid

 from visions.relations import IdentityRelation, InferenceRelation, TypeRelation
 from visions.types.type import VisionsBaseType
 from visions.utils.coercion.test_utils import coercion_true_test
-from visions.utils.series_utils import isinstance_attrs, nullable_series_contains
+from visions.utils.series_utils import (
+    isinstance_attrs,
+    nullable_series_contains,
+    series_not_empty,
+)
 
 
 def string_is_uuid(series, state: dict) -> bool:
@@ -239,6 +243,7 @@ 

Source code for visions.types.uuid

         return _get_relations(cls)
 
     @classmethod
+    @series_not_empty
     @nullable_series_contains
     def contains_op(cls, series: pd.Series, state: dict) -> bool:
         return isinstance_attrs(series, uuid.UUID, ["time_low", "hex"])