{ "info": { "author": "Maciej Janowski", "author_email": "maciej.janowski@insight-centre.org", "bugtrack_url": null, "classifiers": [], "description": "# CubeStories\nCubeStories allows querying Linked Open Statistical by Providing parameters in a form of Python dictionaries(JSON).\n\nReserach paper underpinning the implementation [Research paper](https://www.researchgate.net/publication/333227519_Mediating_Open_Data_Consumption_-_Identifying_Story_Patterns_for_Linked_Open_Statistical_Data)\n\nHigh-level encapsulation of datastories librabry [DataStories repo](https://github.com/MaciejJanowski/DataStoryPatternLibrary)\n\nTest sripts are available at: [Test repor](https://github.com/MaciejJanowski/CubeStoriesTesting)\n\n### Installation\n```python\npip install cubestories\n```\nRequirements will be automatically installed with package\n\n### Import/Usage \n```python\nfrom CubeStories import *\n\n```\n# Usage \nLibrary implements 3 artifacts required for Data analysis\n\n* Metadata Parameters - metadata required for SPARQL queries\n```json\n {\n \"sparqlEndPointUrl\":\"[SPARQL ENDPOINT URL]\", \n \"jsonMetaDataFile\":\"[directory of JSON file with metadata]\" \n}\n```\n\n* Cube Parameters - what properties of cube to be retrieved from endpoint(based on JSON file provided in Metadata Parameters).\nValues highlighted as: ```--- --- `` has to be specified by a user - replaced to value only\n```json \n {\n \"cube\":\"---Key of Cube ---\", \n \"dimensions\":[\"---List of dimensions---\"], \n \"measures\":[\"---List of Measures---\"], \n \"hierdimensions\": \n {\"---DimKey---\":{ \n \"selected_level\":\"---levelkey---\" \n }\n }\n```\n\n* Analysis Pipeline - JSON-based list of pattern analysis to be performed. Each Pattern will have such template provided\n```json\n{ \n \"---PatternName---\": { \n\n \"parameter1\":[\"---list of values---\"],\n \"parameter2\":\"---value---\"\n },\n \n \"---PatternName----\":{\n \"parameter1\":\"---pattern1 value---\",\n \"parameter2\":[\"---list of values---\"]\n }\n}\n\n```\n\n\n# JSON Template - one of the metadata parameters\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---\":{\n \"description\":\"---description of granularity level---\",\n \"granularity\":\"---integer level of granularity---\"\n },\n\t\t\t\t\t\"---level_key---\":{\n \"description\":\"---description of granularity level---\",\n \"granularity\":\"---integer level of granularity---\"\n }\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## Comments after ## are just for descriptive purposes. REMOVE THEM WHEN SPECIFYING PIPELINE\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 ```json\n \"MeasCount\":{\n \"count_type\":\"count value\"\n }\n\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | count_type\t |\t```String``` | Type of Count to perform\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 ```json\n \"LeagueTab\":{ \n \"columns_to_order\":[\"list of columns to order by\"],\n \"order_type\":\"type of order by\",\n \"number_of_records\":5\n }\n ```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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 \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```json\n \"IntComp\":{\n \"dim_to_compare\":\"dimension to compare\",\n \"meas_to_compare\":\"measure to compare\",\n \"comp_type\":\"comparison type\"\n }\n\n ```\n \n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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```json\n \"ProfOut\":{\n \"display_type\":\"Gender\"\n }\n```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\n | display_type |\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```json\n \"DissFact\":{\n \"dim_to_dissect\":\"dimension to dissect\"\n }\n```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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# HighlightContrast\n\n HighlightContrast - partial difference within values related to one textual column\n \n### Attributes\n```json\n\"HighCont\":{\n \"dim_to_contrast\":\"dimension to contrast\",\n \"meas_to_contrast\":\"measure to contrast\",\n \"contrast_type\":\"type of contrast\"\n}\n```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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\n```json\n\"StBigDrillDown\":{\n \"hierdim_drill_down\":{ \n \"Key of hierarchical dimension\":[\"dimlevel1key\",\"dimlevel2key\",\"dimlevel3key\"] \n }\n}\n\n```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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\n```json\n\"StSmallZoomOut\":{\n \"hierdim_zoom_out\":{ \n \"Key of hierarchical dimension\":[\"dimlevel1key\",\"dimlevel2key\",\"dimlevel3key\"] \n }\n}\n ```\n\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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```json\n\"AByCategory\":{\n \"dim_for_category\":\"dimension for categorisation\",\n \"meas_to_analyse\":\"measure to perform analysis\",\n \"analysis_type\":\"type of analysis\"\n}\n\n```\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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```json\n\"ExpInt\":{\n \"dim_to_explore\":\"dimension to explroe across cubes\"\n}\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\nPresenting difference between 2 numerical properties of data\n### Attributes\n```json\n\"NarrChangeOT\":{\n \"meas_to_narrate\":[\"list of two dimensions to present change\"],\n \"narr_type\":\"type of narration\"\n}\n```\n\n Parameter | Type | Description |\t\n | :------------------------ |:-------------:| :-------------|\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/CubeStories", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cubestories", "package_url": "https://pypi.org/project/cubestories/", "platform": "", "project_url": "https://pypi.org/project/cubestories/", "project_urls": { "Homepage": "https://github.com/MaciejJanowski/CubeStories" }, "release_url": "https://pypi.org/project/cubestories/0.3.12/", "requires_dist": null, "requires_python": "", "summary": "CuebStories", "version": "0.3.12" }, "last_serial": 5645799, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "77d241a0175ad5ee51f66ae3a9def772", "sha256": "5867fc22df16ddc800ccd734d432be7e21fbfb9b2d0ba0a884bcf249fc32b54b" }, "downloads": -1, "filename": "CubeStories-0.1.tar.gz", "has_sig": false, "md5_digest": "77d241a0175ad5ee51f66ae3a9def772", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2267, "upload_time": "2019-07-18T14:01:47", "url": "https://files.pythonhosted.org/packages/1f/2f/ba6a6f2ba4da24a198c030c5c08cccf8065b8ce7ff6bd4cfee930a6b65a1/CubeStories-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2f360e06231708c513de770d763badf0", "sha256": "35ec7e6d76db1bf40a7ccefff2ef3b3699f7fd2759e2f6e8f66540530c37ba83" }, "downloads": -1, "filename": "CubeStories-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2f360e06231708c513de770d763badf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1114, "upload_time": "2019-07-18T14:08:07", "url": "https://files.pythonhosted.org/packages/53/78/87a021d032d6908c7b2db1507db9afaeb699ba2b7c781d89e49a496f7687/CubeStories-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3514ac240e26cbbe1d71e11e5bfe1066", "sha256": "ab31891a15162b269f8ac4ec39778686a8c3339428e1a8664f7bf01f5e384847" }, "downloads": -1, "filename": "cubestories-0.1.2.tar.gz", "has_sig": false, "md5_digest": "3514ac240e26cbbe1d71e11e5bfe1066", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1116, "upload_time": "2019-07-18T14:15:52", "url": "https://files.pythonhosted.org/packages/ad/d0/110813a15b756f79022aacd7bcd8839668d0975d1f1d5d0774232d0c26f6/cubestories-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "3a92fcd6ad288deadf45e6900ced00c1", "sha256": "eb4a1b21d68805dd72aaf9ce80b913e0e9f15dd9166b8a51eb466f1848b9caf1" }, "downloads": -1, "filename": "cubestories-0.1.3.tar.gz", "has_sig": false, "md5_digest": "3a92fcd6ad288deadf45e6900ced00c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2317, "upload_time": "2019-07-18T14:29:30", "url": "https://files.pythonhosted.org/packages/6f/54/347a8fbf89647eb8a4b44dd76040303398a295d79c53ea26c5fbe11168c0/cubestories-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "fd56df2802e614dd6491727e9f481541", "sha256": "e73bde27b0d30a5c978aaa139e09588b8a90fa4f38b9dac2e979f6b8aa4b2236" }, "downloads": -1, "filename": "cubestories-0.1.4.tar.gz", "has_sig": false, "md5_digest": "fd56df2802e614dd6491727e9f481541", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2322, "upload_time": "2019-07-18T14:46:59", "url": "https://files.pythonhosted.org/packages/c2/99/68af62fbc16f6a5604b0d1fdbf947dd494fdf60a049d018f8f1385d8984c/cubestories-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "600748b0586612c3af0e7774b820547d", "sha256": "3602ea688a2a91c8355d969e5a34e62c7ed5511b70aeb42aa5de6eba9b8476fd" }, "downloads": -1, "filename": "cubestories-0.1.5.tar.gz", "has_sig": false, "md5_digest": "600748b0586612c3af0e7774b820547d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3224, "upload_time": "2019-07-18T21:05:35", "url": "https://files.pythonhosted.org/packages/a4/e9/e6d969404ceabfa6cf93c85c5ebfbd3de2414925dc4cc4d3088c36af07c8/cubestories-0.1.5.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d714fee1efa1ba1fe215acbb794b75a2", "sha256": "5e336bcb7f76e158e08ade120451e579cb0e9d4d18ce1a8c1f8fe564664e4b04" }, "downloads": -1, "filename": "cubestories-0.2.tar.gz", "has_sig": false, "md5_digest": "d714fee1efa1ba1fe215acbb794b75a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3863, "upload_time": "2019-07-19T14:54:23", "url": "https://files.pythonhosted.org/packages/0e/b5/4c25bb391110e8c204fad8d9f1bc7758b84309e272046936537ed1eb9145/cubestories-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "36bbff195250ada1fdb958889d1b5ae2", "sha256": "fe99245c2d45e19937e38ee16c77b5699548d8df1877b6e3f788ae42758f3d23" }, "downloads": -1, "filename": "cubestories-0.2.1.tar.gz", "has_sig": false, "md5_digest": "36bbff195250ada1fdb958889d1b5ae2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3862, "upload_time": "2019-07-19T14:59:20", "url": "https://files.pythonhosted.org/packages/61/a3/3b372c52451b5b70f64be22cdcdd3614ab85beb9e5cececb95c5490c2fd2/cubestories-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "27af710dbb26e837bcfda2d69521a480", "sha256": "5aef4da1397dea59ac1bf6c52c25b881fa30a623a3b35301dfa427076d5df305" }, "downloads": -1, "filename": "cubestories-0.2.10.tar.gz", "has_sig": false, "md5_digest": "27af710dbb26e837bcfda2d69521a480", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3889, "upload_time": "2019-07-20T12:13:45", "url": "https://files.pythonhosted.org/packages/19/8f/9eca17ec616910915bae54bfcc0af7ec2b3ef64303bfd8bf8e6bb710ebfb/cubestories-0.2.10.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b30a88ab26c1d19bdec45969c379a9b3", "sha256": "84c9cd405d659b4b4af446d885d7b05542e640590f51012901b9f60f6ced9b1e" }, "downloads": -1, "filename": "cubestories-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b30a88ab26c1d19bdec45969c379a9b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3857, "upload_time": "2019-07-19T15:02:10", "url": "https://files.pythonhosted.org/packages/b2/47/9e912dc91f39c54c833dc19ea857f1e770743dbe7198909b693d26192772/cubestories-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "3572848a9ed55404dd0c64d8a9aae99f", "sha256": "000c517c4ea6cd609616553ef195e12bfe67fa4928a16205d177367b1caaefff" }, "downloads": -1, "filename": "cubestories-0.2.3.tar.gz", "has_sig": false, "md5_digest": "3572848a9ed55404dd0c64d8a9aae99f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3857, "upload_time": "2019-07-19T15:03:42", "url": "https://files.pythonhosted.org/packages/ee/9b/6fecd5b013f920053e0f5e959be46771f3436bd3a61087d4720ae7d28a10/cubestories-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "5e0eddf15aa6084831de2256978f6694", "sha256": "dcc494e5b304e25d81fb25f77bab855f092c7ade0abed795cad2a321d0c44f3b" }, "downloads": -1, "filename": "cubestories-0.2.4.tar.gz", "has_sig": false, "md5_digest": "5e0eddf15aa6084831de2256978f6694", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3867, "upload_time": "2019-07-19T15:06:59", "url": "https://files.pythonhosted.org/packages/86/85/79ca09d8608fce49974601f0bfd767dbca1339fff0b796fcb3587819f166/cubestories-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "3b3d20f001ea6dc920e475e4f9e9980d", "sha256": "b80c38a4058c010f5860a6e4170a0dffadf7a3e1d2ae181669f9d8bae2cbe9cf" }, "downloads": -1, "filename": "cubestories-0.2.5.tar.gz", "has_sig": false, "md5_digest": "3b3d20f001ea6dc920e475e4f9e9980d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3851, "upload_time": "2019-07-19T15:09:44", "url": "https://files.pythonhosted.org/packages/41/9e/ebf4cb837072930f5bd30b240aa6152db081ad55055a7f810ef0807f808a/cubestories-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c3efc89cb14b0c16b4ca0351419c4500", "sha256": "cd5f73f6070fa8e38402577bb253a600f649ac6fd65deee210e572a9958b0cf3" }, "downloads": -1, "filename": "cubestories-0.2.6.tar.gz", "has_sig": false, "md5_digest": "c3efc89cb14b0c16b4ca0351419c4500", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3849, "upload_time": "2019-07-20T11:53:34", "url": "https://files.pythonhosted.org/packages/db/ab/be1c51efedee0a0cb226049650b7d23009806937e708edb565b024a989b7/cubestories-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "068b7eeedf7c3c6d699974b4820fa279", "sha256": "cdb23b045ea66c9c2934d66a2ea8228af7edd5299ad1c5e815bf61a1483a3638" }, "downloads": -1, "filename": "cubestories-0.2.7.tar.gz", "has_sig": false, "md5_digest": "068b7eeedf7c3c6d699974b4820fa279", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3856, "upload_time": "2019-07-20T11:59:14", "url": "https://files.pythonhosted.org/packages/43/9e/3bc52615f17e1e0fe4c99bc1227f527c1edc8c76908383011b0d57acc0f5/cubestories-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "fa3429fb4952861c62fbc83f061c2384", "sha256": "6629df51cbda5c781d0cb14a3a33c950c867cc8898780014f1ceba330f03862f" }, "downloads": -1, "filename": "cubestories-0.2.8.tar.gz", "has_sig": false, "md5_digest": "fa3429fb4952861c62fbc83f061c2384", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3878, "upload_time": "2019-07-20T12:10:19", "url": "https://files.pythonhosted.org/packages/d9/d3/b7386fc6b69ecf153c502cbdac705328ecacab411a995d3e0e0b474f0d39/cubestories-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "11380ccd2554148de96cce3f6f3e89b8", "sha256": "dacb77b010a729868ccf1037defb7c5546fb8924b0396a38ee9b344b23e5ec37" }, "downloads": -1, "filename": "cubestories-0.2.9.tar.gz", "has_sig": false, "md5_digest": "11380ccd2554148de96cce3f6f3e89b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3885, "upload_time": "2019-07-20T12:11:58", "url": "https://files.pythonhosted.org/packages/12/94/ac991f3f9cfb9186ea0a99236408bac1d63feafb744f72f5c3be73055202/cubestories-0.2.9.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "b825200777347c0e51cd7b7571ac9c79", "sha256": "d5026f621f9eb8a7154e82c2bcc40ef07ede648e3b38041be4d2e902b361291c" }, "downloads": -1, "filename": "cubestories-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b825200777347c0e51cd7b7571ac9c79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9469, "upload_time": "2019-07-20T13:31:50", "url": "https://files.pythonhosted.org/packages/0b/32/a38b530498ac559499261766b29a1858df86993715268208315a3dc45ccf/cubestories-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "9bba958a492a2da9fe133473e0fe9e64", "sha256": "2eb4dd880bfa1f0f65a2d08e6752d292f7ed4bee6f6e782ae89578eb6db3c87a" }, "downloads": -1, "filename": "cubestories-0.3.10.tar.gz", "has_sig": false, "md5_digest": "9bba958a492a2da9fe133473e0fe9e64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9530, "upload_time": "2019-07-29T17:49:01", "url": "https://files.pythonhosted.org/packages/e5/07/c3cac737504be85e2c1c542e0f1679ba56543f1a0abfe706d524de89a938/cubestories-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "04653b321e77d1cbc5b229df7f9cbfe2", "sha256": "d159480b85302715a4450c4e4f618520a793f80b263d6efddc9ed7934c363da8" }, "downloads": -1, "filename": "cubestories-0.3.11.tar.gz", "has_sig": false, "md5_digest": "04653b321e77d1cbc5b229df7f9cbfe2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9771, "upload_time": "2019-08-07T16:10:43", "url": "https://files.pythonhosted.org/packages/5b/81/321f478dfb887849223720015ca38fa7025d431dcaf3f9655ea7f63cfbae/cubestories-0.3.11.tar.gz" } ], "0.3.12": [ { "comment_text": "", "digests": { "md5": "e9c1ce055b50b948fee5928d1804d7c0", "sha256": "2f9a951cf9ed3e0c61226a79c39584bf58d5b6b2dfec173b79fd119cd0324a6e" }, "downloads": -1, "filename": "cubestories-0.3.12.tar.gz", "has_sig": false, "md5_digest": "e9c1ce055b50b948fee5928d1804d7c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9781, "upload_time": "2019-08-07T16:12:43", "url": "https://files.pythonhosted.org/packages/1a/00/94a97dcdda7284818f17886baaac055daa98cc3da189dc7446fa9cd09e8f/cubestories-0.3.12.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "1334dbc5b9a75b13726e1a35c5a3fd7a", "sha256": "e6215af9570bddb3638bb4471a360576339316c5c30787b49c403c9f36dfd5de" }, "downloads": -1, "filename": "cubestories-0.3.2.tar.gz", "has_sig": false, "md5_digest": "1334dbc5b9a75b13726e1a35c5a3fd7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9495, "upload_time": "2019-07-26T16:23:23", "url": "https://files.pythonhosted.org/packages/d6/3c/8dba02a2cbc8095498d8880c534147e51bc54c4b9c58ef29f2d3d480ae65/cubestories-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "8c17a50918b227852eef6e71641b7cc2", "sha256": "53c38e7c68f6b233f909b348c45082dcd64391aaeb1ab885f119fc33bf44aefe" }, "downloads": -1, "filename": "cubestories-0.3.3.tar.gz", "has_sig": false, "md5_digest": "8c17a50918b227852eef6e71641b7cc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9511, "upload_time": "2019-07-28T19:39:15", "url": "https://files.pythonhosted.org/packages/d5/2c/0f6fab462e99dc55914084a149677d33b2ec032c166795ed39a40f2efdaa/cubestories-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b49873469978bab92b99a1e7d3b0ce97", "sha256": "26d7fe1e3e862d0fb8fbbb522e3f4631773d551ab69994d22a9354557c4d51af" }, "downloads": -1, "filename": "cubestories-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b49873469978bab92b99a1e7d3b0ce97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9529, "upload_time": "2019-07-28T19:48:40", "url": "https://files.pythonhosted.org/packages/d9/e9/3d5203d0a1f479ad656e274f7f773e794544a9783a6dd68e71bad41db9e4/cubestories-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "03ccf4ee795fe7f1348afdbc2d511687", "sha256": "b55ec8ddc42a68d2912ebdf871ac60e949fc9a02b0e3ceec1ffdd8964a9b9045" }, "downloads": -1, "filename": "cubestories-0.3.5.tar.gz", "has_sig": false, "md5_digest": "03ccf4ee795fe7f1348afdbc2d511687", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9573, "upload_time": "2019-07-28T19:54:00", "url": "https://files.pythonhosted.org/packages/24/de/347a0a93f1b508f0d93b219d289a7732ce293f049a76a4734360a2e8e1b8/cubestories-0.3.5.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "c14c13aab9b8630c7f09c1956d115150", "sha256": "d9b5080206c0cfb3b1812d0a748d87a390731edf6ef8c8751a4df14531092d79" }, "downloads": -1, "filename": "cubestories-0.3.7.tar.gz", "has_sig": false, "md5_digest": "c14c13aab9b8630c7f09c1956d115150", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9505, "upload_time": "2019-07-28T20:13:54", "url": "https://files.pythonhosted.org/packages/c5/3a/6873ec87704b3ad3110830df232c97c3758ff92f3440489e0c3e4d6de621/cubestories-0.3.7.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "8c33a3827b7ee90b002e7bc97cfe48b1", "sha256": "7b9376fffe76e0f3095f0a724cebcdb6413704dacd414e2835afdca3a7a45e6c" }, "downloads": -1, "filename": "cubestories-0.3.9.tar.gz", "has_sig": false, "md5_digest": "8c33a3827b7ee90b002e7bc97cfe48b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9529, "upload_time": "2019-07-28T21:13:27", "url": "https://files.pythonhosted.org/packages/8c/cf/179593b7bfd8e56be66b2a622af754f098f443f37cf3acbc60c6856d119b/cubestories-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e9c1ce055b50b948fee5928d1804d7c0", "sha256": "2f9a951cf9ed3e0c61226a79c39584bf58d5b6b2dfec173b79fd119cd0324a6e" }, "downloads": -1, "filename": "cubestories-0.3.12.tar.gz", "has_sig": false, "md5_digest": "e9c1ce055b50b948fee5928d1804d7c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9781, "upload_time": "2019-08-07T16:12:43", "url": "https://files.pythonhosted.org/packages/1a/00/94a97dcdda7284818f17886baaac055daa98cc3da189dc7446fa9cd09e8f/cubestories-0.3.12.tar.gz" } ] }