{ "info": { "author": "Maciej Janowski", "author_email": "maciej.janowski@insight-centre.org", "bugtrack_url": null, "classifiers": [], "description": "# DataStoryPatternLibrabry\n\nData Story Patterns Library is a repository with pattern analysis designated for Linked Open Statistical Data. Story Patterns were retrieved from literture reserach udenr general subject of \"data journalism\".\n\n### Installation\n```python\npip install datastories\n```\nRequirements will be automatically installed with package\n\n###Import/Usage \n```python\nimport datastories.analytical as patterns\n\npatterns.DataStoryPattern(sparqlendpointurl, jsonmetadata)\n```\nObject created allow to query SPARQL endpoint based on JSON meatadat provided.\n\n# JSON Template\n```json\n{\n \"cube_key\" : {\n\t\t\"title\":\"title of cube\",\n\t\t\"dataset_structure\":\"URI for cube structure\",\n \"dimensions\":{\n \"dimension_key\":{\n \"dimension_title\":\"Title of diemnsion\",\n \"dimension_url\":\"URI for dimension\",\n \"dimension_prefix\":\"URI for dimension's values\"\n },\n \"dimension_key\":{\n \"dimension_title\":\"Title of diemnsion\",\n \"dimension_url\":\"URI for dimension\",\n \"dimension_prefix\":\"URI for dimension's values\"\n }\n\t\t},\n\t\t\"hierarchical_dimensions\":{\n\t\t\t\"dimension_key\":{\n \"dimension_title\":\"Title of diemnsion\",\n \"dimension_url\":\"URI for dimension\",\n \"dimension_prefix\":\"URI for dimension's values\",\n\t\t\t\t\"dimension_levels\":\n\t\t\t\t{\n\t\t\t\t\t\"level_key\":\"integer(granularity level)\",\n\t\t\t\t\t\"level_key\":\"integer(granularity level)\"\n\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"measures\":{\n\t\t\t\"measure_key\":{\n\t\t\t\"measure_title\":\"Title of measure\",\n\t\t\t\"measure_url\":\"URI for measure\"\n\t\t\t}\n\n\t\t}\n }\n}\n```\n \n\n# Patterns Description\n\n * [Measurement and Counting](#MCounting)\n * [League Table](#LTable)\n * [Internal Comprison](#InternalComparison)\n * [Profile Outliers](#ProfileOutliers)\n * [Dissect Factors](#DissectFactors)\n * [Highlight Contrast](#HighlightContrast)\n * [Start Big Drill Down](#StartBigDrillDown)\n * [Start Small Zoom Out](#StartSmallZoomOut)\n * [Analysis By Category](#AnalysisByCategory)\n * [Explore Intersection](#ExploreIntersection)\n * [Narrating Change Over Time](#NarratingChangeOverTime)\n\n# MCounting\n\n Measurement and Counting\n Arithemtical operators applied to whole dataset - basic information regarding data\n \n### Attributes\n ```python\n def MCounting(self,cube=\"\",dims=[],meas=[],hierdims=[],count_type=\"raw\",df=pd.DataFrame() )\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | count_type\t |\t```String``` | Type of Count to perform\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n \n### Output\nBased on count_type value\n\n|Count_type | Description |\t\n | ------------------------ | -------------|\n | raw| data without any analysis performed|\n | sum| sum across all numeric columns|\n | mean| mean across all numeric columns|\n | min| minimum values from all numeric columns|\n | max| maximum values from all numeric columns|\n | count| amount of records|\n\n\n# LTable\n\n LeagueTable - sorting and extraction specific amount of records\n \n### Attributes\n ```python\n def LTable(self,cube=[],dims=[],meas=[],hierdims=[], columns_to_order=\"\", order_type=\"asc\", number_of_records=20,df=pd.DataFrame())\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | columns_to_order\t |\t```list[String]``` | Set of columns to order by\n | order_type\t |\t```String``` | Type of order (asc/desc)\n | number_of_records\t |\t```Integer``` | Amount of records to retrieve\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n \n### Output\nBased on sort_type value\n\n|Sort_type | Description |\t\n | ------------------------ | -------------|\n | asc|ascending order based on columns provided in ```columns_to_order```|\n | desc|descending order based on columns provided in ```columns_to_order```|\n\n\n# InternalComparison\n\n InternalComparison - comparison of numeric values related to textual values within one column\n \n### Attributes\n ```python\n def InternalComparison(self,cube=\"\",dims=[],meas=[],hierdims=[],df=pd.DataFrame(), dim_to_compare=\"\",meas_to_compare=\"\",comp_type=\"\")\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | dim_to_compare\t |\t```String``` | Dimension, which values will be investigated\n | meas_to_compare\t |\t```String``` | Measure, which numeric values related to ```dim_to_compare``` will be processed\n | comp_type\t |\t```String``` | Type of comparison to perform\n \n### Output \nIndependent from ```comp_type``` selected, output data will have additional column with numerical column ```meas_to_compare``` processed in specific way.\n\nAvailable types of comparison ```comp_type```\n\n|Comp_type | Description |\t\n | ------------------------ | -------------|\n | diffmax|difference with max value related to specific textual value|\n | diffmean|difference with arithmetic mean related to specific textual values|\n | diffmin|difference with minimum value related to specific textual value|\n\n# ProfileOutliers\n\n ProfileOutliers - detection of unusual values within data (anomalies)\n \n### Attributes\n ```python\n def ProfileOutliers(self,cube=[],dims=[],meas=[],hierdims=[],df=pd.DataFrame(), displayType=\"outliers_only\")\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | display_type\t |\t```String``` | What information display are bound to display (with/without anomalies)\n\n### Output \nPattern analysis using ```python scipy``` library will perform quick exploration in serach of unusual values within data.\n\nBased on ```display_type``` parameter data will be displayed with/without ddetected unusual values.\n\nAvailable types of displaying ```display_type```\n\n|display_type | Description |\t\n | ------------------------ | -------------|\n | outliers_only|returns rows from dataset where unusual values were detected |\n | without_outliers|returns dataset with excluded rows where unusual values were detected |\n\n\n# DissectFactors\n\n DissectFactors - decomposition of data based on values in dim_to_dissect\n \n### Attributes\n ```python\n def DissectFactors(self,cube=\"\",dims=[],meas=[],hierdims=[],df=pd.DataFrame(),dim_to_dissect=\"\")\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | dim_to_dissect\t |\t```String``` | Based on which dimension data should be decomposed\n\n### Output \nAs an output, data will be decomposed in a form of a dictionary, where each subset have values only related to specific value.\nDictionary of subdataset will be constructed as a series of paiers where key per each susbet will values from ```dim_to_dissect```\nand this key value will be data, where yhis key value was occurring.\n\n\n# HighlightContrast\n\n HighlightContrast - partial difference within values related to one textual column\n \n### Attributes\n ```python\n def HighlightContrast(self,cube=\"\",dims=[],meas=[],hierdims=[],df=pd.DataFrame(),dim_to_contrast=\"\",contrast_type=\"\",meas_to_contrast=\"\")\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | dim_to_contrast\t |\t```String``` | Textual column, from which values will be contrasted\n | meas_to_contrast\t |\t```String``` | Numerical column, which values are contrasted\n | contrast_type\t |\t```String``` | Type of contrast to present\n \n### Output \nIndependent from ```contrast_type``` selected, output data will have additional column with numerical column ```meas_to_contrast``` processed in specific way.\n\nAvailable types of comparison ```contrast_type```\n\n|Contrast_type | Description |\t\n | ------------------------ | -------------|\n | partofwhole| difference with max value related to specific textual value|\n | partofmax| difference with arithmetic mean related to specific textual values|\n | partofmin|difference with minimum value related to specific textual value|\n\n\n\n\n# StartBigDrillDown\n\n StartBigDrillDown - data retrieval from multiple hierachical levels.\n\n This pattern can be only applied to data not stored already in DataFrame\n \n### Attributes\n ```python\n def StartBigDrillDown(self,cube=\"\",dims=[],meas=[],hierdim_drill_down=[])\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdim_drill_down\t |``` dict{hierdim:list[str]} ``` | Hierarchical dimension with list of hierarchy levels to inspect\n \n\n### Output \nAs an output, data will be retrieved in a form of a dictionary, where each dataset will be retrieved from different hierachy level. List will be provided in```hierdim_drill_down```. Hierachy levels provided by in parameter will automatically sorted in order from most general to most detailed level based on metadata provided.\n\n\n# StartSmallZoomOut\n\n StartSmallZoomOut - data retrieval from multiple hierachical levels.\n\n This pattern can be only applied to data not stored already in DataFrame\n \n### Attributes\n ```python\n def StartSmallZoomOut(self,cube=\"\",dims=[],meas=[],hierdim_zoom_out=[])\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdim_zoom_out\t |``` dict{hierdim:list[str]} ``` | Hierarchical dimension with list of hierarchy levels to inspect\n \n\n### Output \nAs an output, data will be retrieved in a form of a dictionary, where each dataset will be retrieved from different hierachy level. List will be provided in```hierdim_zoom_out```. Hierachy levels provided by in parameter will automatically sorted in order from most detaile to most general level based on metadata provided.\n\n\n# AnalysisByCategory\n\n AnalysisByCategory - ecomposition of data based on values in dim_for_category with analysis performed on each susbet\n \n### Attributes\n ```python\n def AnalysisByCategory(self,cube=\"\",dims=[],meas=[],hierdims=[],df=pd.DataFrame(),dim_for_category=\"\",meas_to_analyse=\"\",analysis_type=\"min\"):\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | dim_for_category\t |\t```String``` | Dimension, based on which input data will be categorised\n | meas_to_analyse\t |\t```String``` | Measure, which will be analysed\n | analysis_type\t |\t```String``` | Type of analysis to perform\n \n### Output \nAs an output, data will be decomposed in a form of a dictionary, where each subset have values only related to specific value. Such subset will get analysed based on ```analysis_type``` parameter\n\nAvailable types of analysis ```analysis_type```\n\n|Analysis_type | Description |\t\n | ------------------------ | -------------|\n | min| Minimum per each category|\n | max| Maximum per each category|\n | mean|Arithmetical mean per each category|\n | sum|Total value from each category|\n\n\n# ExploreIntersection\n\n\n### Attributes\n ```python\n def ExploreIntersection(self, dim_to_explore=\"\"):\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | dim_to_explore\t |```\tString ``` | Dimension, which existence within enpoint is going to be investigated\n \n### Output \nPattern will return series of datasets, where each will represent occurence of ```dim_to_explore``` in one cube\n\n# NarratingChangeOverTime\n### Attributes\n ```python\n def NarrChangeOT(self,cube=\"\",dims=[],meas=[],hierdims=[],df=pd.DataFrame(),meas_to_narrate=\"\",narr_type=\"\")\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | cube\t |```\tString ``` | Cube, which dimensions and measures will be investigated\n | dims\t |```\t list[String] ``` | List of dimensions (from cube) to take into investigation\n | meas\t |\t ``` list[String] ``` | List of measures (from cube) to take into investigation\n | hierdims\t |``` dict{hierdim:{\"selected_level\":[value]}} ``` | Hierarchical Dimesion with selected hierarchy level to take into investigation\n | df\t |```\tDataFrame ``` | DataFrame object, if data is already retrieved from endpoint\n | meas_to_narrate\t |\t```String``` | Set of 2 measures, which change will be narrated\n | narr_type\t |\t```String``` | Type of narration to perform\n\n### Output \nIndependent from ```narr_type``` selected, output data will have additional column with numerical values processed in specific way.\n\nAvailable types of analysis ```narr_type```\n\n|Narr_type | Description |\t\n | ------------------------ | -------------|\n | percchange| Percentage change between first nad second property|\n | diffchange| Quantitive change between first and second property|", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MaciejJanowski/DataStoryPatternLibrary", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "datastories", "package_url": "https://pypi.org/project/datastories/", "platform": "", "project_url": "https://pypi.org/project/datastories/", "project_urls": { "Homepage": "https://github.com/MaciejJanowski/DataStoryPatternLibrary" }, "release_url": "https://pypi.org/project/datastories/0.3.11/", "requires_dist": null, "requires_python": "", "summary": "Data Story Pattern Analysis for LOSD", "version": "0.3.11" }, "last_serial": 5645850, "releases": { "0.1.1.1": [ { "comment_text": "", "digests": { "md5": "1f25eb436ea9e7bf1ae5587b174df211", "sha256": "c972f191834f12ffd7a58f7a48da71942c0e943687d0eeeeb691440fdc824d67" }, "downloads": -1, "filename": "datastories-0.1.1.1.tar.gz", "has_sig": false, "md5_digest": "1f25eb436ea9e7bf1ae5587b174df211", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2712, "upload_time": "2019-07-09T11:48:38", "url": "https://files.pythonhosted.org/packages/42/a0/5d97f0f52c6e93268bb1246e5927af71f7b3454b10fad4912ac269fdf047/datastories-0.1.1.1.tar.gz" } ], "0.1.1.2": [ { "comment_text": "", "digests": { "md5": "f2c3fffaca12e58bcfb32f428ddd7551", "sha256": "4b77ffa0987bc7521eb0a5be8e2df1f5e9d18976442f99725223f270c322fe6f" }, "downloads": -1, "filename": "datastories-0.1.1.2.tar.gz", "has_sig": false, "md5_digest": "f2c3fffaca12e58bcfb32f428ddd7551", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1036, "upload_time": "2019-07-09T11:51:45", "url": "https://files.pythonhosted.org/packages/e5/2b/04896f39516268ce72c5540223703ed2d88455e90e30d05c283b4a182007/datastories-0.1.1.2.tar.gz" } ], "0.1.1.3": [ { "comment_text": "", "digests": { "md5": "c076614c1319b6d14f26719f7f5fd71e", "sha256": "a935b4b30bc0db5b668da42a2a6e5eb17d9ae987850062ea0dd829c9b3d5b20c" }, "downloads": -1, "filename": "datastories-0.1.1.3.tar.gz", "has_sig": false, "md5_digest": "c076614c1319b6d14f26719f7f5fd71e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1039, "upload_time": "2019-07-09T11:57:41", "url": "https://files.pythonhosted.org/packages/62/6b/9cd93e7687f591566c4757b0df34ab05697b35c19102432774c5dabef7b0/datastories-0.1.1.3.tar.gz" } ], "0.1.1.4": [ { "comment_text": "", "digests": { "md5": "348cf57013123234fd2d0ce7110815e9", "sha256": "2ff059227a387814290258ebec7751ebcb2ef8b236f2068df8a0919b99bac72c" }, "downloads": -1, "filename": "datastories-0.1.1.4.tar.gz", "has_sig": false, "md5_digest": "348cf57013123234fd2d0ce7110815e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2722, "upload_time": "2019-07-09T12:31:14", "url": "https://files.pythonhosted.org/packages/16/f1/f2ece540ec7aa41da1cfbec2db62260655e03f6e34df71dd2927f09ec044/datastories-0.1.1.4.tar.gz" } ], "0.1.1.5": [ { "comment_text": "", "digests": { "md5": "e9889947843b0dafbdf6c0b9864501d3", "sha256": "85e090bc4de2a8d59320f1b96eef6d39e88edefa4359bd852fa025056abb146d" }, "downloads": -1, "filename": "datastories-0.1.1.5.tar.gz", "has_sig": false, "md5_digest": "e9889947843b0dafbdf6c0b9864501d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2719, "upload_time": "2019-07-09T12:34:28", "url": "https://files.pythonhosted.org/packages/50/0b/52ed85f2e4f776e20ccc3693ee9d43beb7f203c0a417b56ce811cc3ee1d2/datastories-0.1.1.5.tar.gz" } ], "0.1.1.8": [ { "comment_text": "", "digests": { "md5": "bd6f32d2153da44f2aa9884b27b11b8c", "sha256": "4c99274812534167de92e8c6200175b7a7d5e8837345ddcb20521fe474863d3f" }, "downloads": -1, "filename": "datastories-0.1.1.8.tar.gz", "has_sig": false, "md5_digest": "bd6f32d2153da44f2aa9884b27b11b8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4525, "upload_time": "2019-07-09T21:16:00", "url": "https://files.pythonhosted.org/packages/ee/49/0ab2dfe9063678938a493e0406e11bb35ea0da22417ee95e09a9e385ed75/datastories-0.1.1.8.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "ae177b413a5e6d3300b8842c7187b6a2", "sha256": "ec5bd5c3acff45c176b140aa485eae0df9bc330be6fb0106b5143f09e72506a1" }, "downloads": -1, "filename": "datastories-0.2.tar.gz", "has_sig": false, "md5_digest": "ae177b413a5e6d3300b8842c7187b6a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10332, "upload_time": "2019-07-10T16:26:20", "url": "https://files.pythonhosted.org/packages/0e/0a/94a3be6f2ca92f76a6e606c07fa3a6a6ede52d77ca4b737e490ff8ca117f/datastories-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c44794583a0eff5f6f6a233d7640d396", "sha256": "2530a56aa721f4b073843148a9d18db60b8973614fe241db1e268f6c18c492e4" }, "downloads": -1, "filename": "datastories-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c44794583a0eff5f6f6a233d7640d396", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11008, "upload_time": "2019-07-10T18:52:30", "url": "https://files.pythonhosted.org/packages/3f/92/9d6458e6f0b8868cedba5e92df5b923efd6f5522a8ffa7bef9dbab514d54/datastories-0.2.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "f46f2dd881cd8e74c9dd370f8d76e9e7", "sha256": "0caec39626844d01db960560ddca4081f6f4e5f073c8630b6ca4cbc8640d5bff" }, "downloads": -1, "filename": "datastories-0.3.tar.gz", "has_sig": false, "md5_digest": "f46f2dd881cd8e74c9dd370f8d76e9e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11916, "upload_time": "2019-07-17T15:25:44", "url": "https://files.pythonhosted.org/packages/44/b4/bb9c92c6c9e65b125e0ce61cb9e117c089f9e21d64c9c99911287425f4ed/datastories-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "09776663d0aa6abc70a12ffe98506c96", "sha256": "813f76b6f0b43781ab027d2ca037db9fdf348ce9e4bb2862cf29581d6bc14ccb" }, "downloads": -1, "filename": "datastories-0.3.1.tar.gz", "has_sig": false, "md5_digest": "09776663d0aa6abc70a12ffe98506c96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11946, "upload_time": "2019-07-17T19:02:49", "url": "https://files.pythonhosted.org/packages/c8/32/c12086944b546e48926eb3b85a14a361c14a6a024099d24169af9dd17a6d/datastories-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "bed810d25bef0182ef6c4e09f6955770", "sha256": "c5a6690d645249ab9644eab09a774a6118bd70c7aae04410fb83c7b52f60ae84" }, "downloads": -1, "filename": "datastories-0.3.10.tar.gz", "has_sig": false, "md5_digest": "bed810d25bef0182ef6c4e09f6955770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12507, "upload_time": "2019-07-28T21:11:33", "url": "https://files.pythonhosted.org/packages/13/2e/c0c7f5f82d213e24bd7d532c12d13f61e13200f537308cfcb70c6a3bb245/datastories-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "26fed6ed626292bb5ed4b8723da5d8e1", "sha256": "e5c5847ec3025af45c6b3375f8a4b46a0e0d01f8adfd526a91d409bcba4ec6ac" }, "downloads": -1, "filename": "datastories-0.3.11.tar.gz", "has_sig": false, "md5_digest": "26fed6ed626292bb5ed4b8723da5d8e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12507, "upload_time": "2019-08-07T16:20:33", "url": "https://files.pythonhosted.org/packages/df/39/ef7eda364d20420cbeaca7a0f440ee8e03e3038e7f19b4f296fe657dff8b/datastories-0.3.11.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "b362cb153826958924c4d91860a3b502", "sha256": "b20f5569c69eefb1d18147f96f7dc433d352aad28b65f997e2a4ddd6cbf85407" }, "downloads": -1, "filename": "datastories-0.3.2.tar.gz", "has_sig": false, "md5_digest": "b362cb153826958924c4d91860a3b502", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11947, "upload_time": "2019-07-17T19:32:22", "url": "https://files.pythonhosted.org/packages/2d/c9/3af282ebe5c59d07d382bb0b8eab7113238ca980383608a5b927f589b8f0/datastories-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "cd1cfc65d3e29b2c60c277d01fc4ad2f", "sha256": "c9292d75c4fb8aef2547bc84b3699e18baaa9ca26accea803235fd6cfcd56398" }, "downloads": -1, "filename": "datastories-0.3.3.tar.gz", "has_sig": false, "md5_digest": "cd1cfc65d3e29b2c60c277d01fc4ad2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12008, "upload_time": "2019-07-17T19:34:48", "url": "https://files.pythonhosted.org/packages/4e/f6/7d3286dfc1a3316fbaf67c77131ba143b83b985e35cac374e543922f5d5a/datastories-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "697fffb3e8469bb77651bf2cb639f943", "sha256": "d8647cade297383979562abd22f7514d78e657fdedfd28fc9a72ecfff53b6615" }, "downloads": -1, "filename": "datastories-0.3.4.tar.gz", "has_sig": false, "md5_digest": "697fffb3e8469bb77651bf2cb639f943", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12002, "upload_time": "2019-07-17T19:39:43", "url": "https://files.pythonhosted.org/packages/29/b1/4ebc3e7dda279087b764204db554e4532433b5d37b097001cfdaa1c1fbde/datastories-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "5b1d8b3d9a54eaa374ca8f6c2264e52b", "sha256": "9f7c644179d8de9839a43508fb20a4ea525ef418f5d33bab9b9a6e0fd80dd0dd" }, "downloads": -1, "filename": "datastories-0.3.5.tar.gz", "has_sig": false, "md5_digest": "5b1d8b3d9a54eaa374ca8f6c2264e52b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12023, "upload_time": "2019-07-17T19:45:26", "url": "https://files.pythonhosted.org/packages/71/29/e14f558467a327cb665d97a5c7231636b904176a216c601c177c04e62eb6/datastories-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "9c17e9410c52f99c43d50042a0b6f046", "sha256": "52ddd61ad704c2d830ddc89e5e25964b4e941541ef4a4ecd7a131464c8b0f3de" }, "downloads": -1, "filename": "datastories-0.3.6.tar.gz", "has_sig": false, "md5_digest": "9c17e9410c52f99c43d50042a0b6f046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12010, "upload_time": "2019-07-17T19:51:45", "url": "https://files.pythonhosted.org/packages/07/6c/59b36a4bff56867d7c3ab5eed2607672bc45ec0d620489392f31842093af/datastories-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "ac64d1c407c73d56aea845e2b3f021df", "sha256": "9e2ea436dbc8a0effb6397b06821beae1cb52903df8473a6ec841316eec81689" }, "downloads": -1, "filename": "datastories-0.3.7.tar.gz", "has_sig": false, "md5_digest": "ac64d1c407c73d56aea845e2b3f021df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12010, "upload_time": "2019-07-17T19:56:26", "url": "https://files.pythonhosted.org/packages/29/3b/b7c435832e2c5f1b9e934df33c9869074caa1daa56501a7e96e468d7ae51/datastories-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "cac36a5ce4c26439ca17c975f278dd83", "sha256": "dd77c5ee115f5495cb1f77a32090a9bd3ab749d2148cd15cef5607d75f5d16e9" }, "downloads": -1, "filename": "datastories-0.3.8.tar.gz", "has_sig": false, "md5_digest": "cac36a5ce4c26439ca17c975f278dd83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12429, "upload_time": "2019-07-18T21:02:04", "url": "https://files.pythonhosted.org/packages/79/70/356375d4e2d986c805be99d30bcea95b0d56262b0c6f57595346c9186bba/datastories-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "bf426ee6bdf42bc22b99dcd9501bb506", "sha256": "34ec8812ad58326738976cfc258011d63bd41cc4c5148ff8bf11a69f308e43a7" }, "downloads": -1, "filename": "datastories-0.3.9.tar.gz", "has_sig": false, "md5_digest": "bf426ee6bdf42bc22b99dcd9501bb506", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12474, "upload_time": "2019-07-20T11:50:19", "url": "https://files.pythonhosted.org/packages/a9/77/6de8e59f171cdaab5741c8b9470c3f5fb64fce54098f088ae6c8402672a8/datastories-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "26fed6ed626292bb5ed4b8723da5d8e1", "sha256": "e5c5847ec3025af45c6b3375f8a4b46a0e0d01f8adfd526a91d409bcba4ec6ac" }, "downloads": -1, "filename": "datastories-0.3.11.tar.gz", "has_sig": false, "md5_digest": "26fed6ed626292bb5ed4b8723da5d8e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12507, "upload_time": "2019-08-07T16:20:33", "url": "https://files.pythonhosted.org/packages/df/39/ef7eda364d20420cbeaca7a0f440ee8e03e3038e7f19b4f296fe657dff8b/datastories-0.3.11.tar.gz" } ] }