{ "info": { "author": "Paul K. Korir, PhD", "author_email": "pkorir@ebi.ac.uk, paul.korir@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "==============================================\n``ahds``\n==============================================\n\n.. image:: https://readthedocs.org/projects/ahds/badge/?version=latest\n :target: https://ahds.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. contents:: Table of Contents\n\n----------------------------------------------\nOverview\n----------------------------------------------\n``ahds`` is a Python package to parse and handle Amira (R) files.\nIt was developed to facilitate reading of Amira (R) files as part of the EMDB-SFF toolkit.\n\n.. note::\n\n Amira (R) is a trademark of Thermo Fisher Scientific. This package is in no way affiliated with with Thermo Fisher Scientific.\n\nUse Cases\n==============================================\n* Detect and parse Amira (R) headers and return structured data\n\n* Decode data (``HxRLEByte``, ``HxZip``)\n\n* Easy extensibility to handle previously unencountered data streams\n\n``ahds`` was written and is maintained by Paul K. Korir.\n\n--------------------------------------------\nInstallation\n--------------------------------------------\nPresently, ``ahds`` only works with Python 2.7 but will soon work on Python 3. Please begin by \ninstalling ``numpy<1.16`` using \n\n::\n\n pip install numpy<1.16\n\nbecause it is needed to run ``setup.py``. Afterwards you may run\n\n::\n\n pip install ahds\n\n----------------------------------------------\nLicense\n----------------------------------------------\n\n::\n\n Copyright 2017 EMBL - European Bioinformatics Institute\n \n Licensed under the Apache License, Version 2.0 (the \"License\"); \n you may not use this file except in compliance with the License. \n You may obtain a copy of the License at \n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, \n software distributed under the License is distributed on an \n \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, \n either express or implied. See the License for the specific \n language governing permissions and limitations under the License. \n\n----------------------------------------------\nFuture Plans\n----------------------------------------------\n* Write out valid Amira (R) files\n\n----------------------------------------------\nBackground and Definitions\n----------------------------------------------\n``ahds`` presently handles two types of Amira (R) files:\n\n* `AmiraMesh` files, which typically but not necessarily have a ``.am`` extension, and\n\n* `HyperSurface` files, which have ``.surf`` and represent an older filetype.\n\nBoth file types consist of two parts: \n\n* a `header`, and \n\n* one or more `data streams`. \n\nHeaders are structured in a modified VRML-like syntax and differ between AmiraMesh and HyperSurface files in some of the keywords used. \n\nA data stream is a sequence of encoded bytes either referred to in the header by some delimiter (usually ``@``, where ```` is an integer) or a set of structural keywords (e.g. ``Vertices``, ``Patches``) expected in a predefined sequence.\n\nHeaders in Detail\n==============================================\nAmiraMesh and HyperSurface headers can be divided into four main sections:\n\n* **designation**\n\n* **definitions**\n\n* **parameters**, and\n\n* **data pointers**.\n\nThe `designation` is the first line and conveys several important details about the format and structure of the file such as:\n\n* filetype (either ``AmiraMesh`` or ``HyperSurface``)\n\n* dimensionality (``3D``)\n\n* format (``BINARY-LITTLE-ENDIAN``, ``BINARY`` or ``ASCII``)\n\n* version (a decimal number e.g. ``2.1``\n\n* extra format data e.g. ```` specifying that an AmiraMesh file will contain HyperSurface data\n\nA series of `definitions` follow that refer to data found in the data pointer sections that either begin with the word \u2018define\u2019 or have \u2018n\u2019 prepended to a variable. For example:\n\n::\n\n define Lattice 862 971 200\n\nor \n\n::\n\n nVertices 85120\n\nThis is followed by grouped `parameters` enclosed in a series of braces beginning with the word \u2018Parameters\u2019. Various parameters are then enclosed each beginning with the name of that group of parameters e.g. \u2018Materials\u2019\n\n::\n\n Parameters {\n # grouped parameters\n Material {\n # the names of various materials with attributes\n Exterior {\n id 0\n }\n Inside {\n id 1,\n Color 0 1 1,\n Transparency 0.5\n }\n }\n Patches {\n # patch attributes\n InnerRegion \u201cInside\u201d,\n OuterRegion \u201cExterior\u201d,\n BoundaryID 0,\n BranchingPoints 0\n }\n # inline parameters\n GridSize ,\n \u2026\n }\n\nThe most important set of parameters are materials as these specify colours and identities of distinct segments/datasets within the file.\n\nFinally, AmiraMesh files list a set of `data pointers` that point to data labels within the file together with additional information to decode the data. We refer to these as data streams because they consist of continuous streams of raw byte data that need to be decoded. Here is an example of data pointers that refer to the location of 3D surface primitives:\n\n::\n\n Vertices { float[3] Vertices } @1\n TriangleData { int[7] Triangles } @2\n Patches-0 { int Patches-0 } @3\n\nThese refer to three raw data streams each found beginning with the delimiter ``@``. Data stream one (``@1``) is called ``Vertices`` and consists of float triples, two is called ``TriangleData`` and has integer 7-tuples and three called ``Patches-`` is a single integer (the number of patches). In some cases the data pointer contains the data encoding for the corresponding data pointer.\n\n::\n\n Lattice { byte Labels } @1(HxByteRLE,234575740)\n\nwhich is a run-length encoded data stream of the specified length, while\n\n::\n \n Lattice { byte Data } @1(HxZip,919215)\n\ncontains zipped data of the specified length.\n\nData Streams in Detail\n==============================================\nAmiraMesh data streams are very simple. They always have a start delimiter made of ``@`` with an index that identifies the data stream. A newline character separates the delimiter with the data stream proper which is either plain ASCII or a binary stream (raw, zipped or encoded).\n\nHyperSurface data streams structured to have the following sections:\n\n::\n\n # Header\n Vertices \n # vertices data stream\n \n NBranchingPoints \n NVerticesOnCurves \n BoundaryCurves \n Patches \n {\n InnerRegion \n OuterRegion \n BoundaryID \n BranchingPoints \n Triangles \n # triangles data stream\n } # repeats for as times\n\nHyperSurface data streams can be either plain ASCII or binary.\n\n----------------------------------------------\n``ahds`` Modules\n----------------------------------------------\n``ahds`` has three main modules:\n\n* `ahds.grammar `_ specifies an EBNF grammar\n\n* `ahds.header `_ \n\n* `ahds.data_stream `_\n\nThese modules are tied into a user-level class called ``ahds.AmiraFile`` that does all the work for you.\n\n.. code:: python\n\n >>> from ahds import AmiraFile\n >>> # read an AmiraMesh file\n >>> af = AmiraFile('am/test7.am')\n >>> af.header\n \n >>> # empty data streams\n >>> af.data_streams\n >>> print af.data_streams\n None\n >>> # we have to explicitly read to get the data streams\n >>> af.read()\n >>> af.data_streams\n object with 13 stream(s): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13\n >>> for ds in af.data_streams:\n ... print ds\n ...\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n object of 2,608 bytes\n # we get the n-th data stream using the index/key notation\n >>> af.data_streams[1].encoded_data\n '1 \\n2 \\n3 \\n'\n >>> af.data_streams[1].decoded_data\n [1, 2, 3]\n >>> af.data_streams[2].encoded_data\n '69 \\n120 \\n116 \\n101 \\n114 \\n105 \\n111 \\n114 \\n0 \\n73 \\n110 \\n115 \\n105 \\n100 \\n101 \\n0 \\n109 \\n111 \\n108 \\n101 \\n99 \\n117 \\n108 \\n101 \\n0 \\n'\n >>> af.data_streams[2].decoded_data\n [69, 120, 116, 101, 114, 105, 111, 114, 0, 73, 110, 115, 105, 100, 101, 0, 109, 111, 108, 101, 99, 117, 108, 101, 0]\n\n\n.. code:: python\n\n >>> # read an HyperSurface file\n >>> af = AmiraFile('surf/test4.surf')\n >>> af.read()\n >>> af.data_streams\n object with 5 stream(s): Patches, NBranchingPoints, BoundaryCurves, Vertices, NVerticesOnCurves\n # HyperSurface files have pre-set data streams\n >>> af.data_streams['Vertices'].decoded_data[:10]\n [(560.0, 243.0, 60.96875), (560.0, 242.9166717529297, 61.0), (559.5, 243.0, 61.0), (561.0, 243.0, 60.95833206176758), (561.0, 242.5, 61.0), (561.0384521484375, 243.0, 61.0), (559.0, 244.0, 60.94444274902344), (559.0, 243.5, 61.0), (558.9722290039062, 244.0, 61.0), (560.0, 244.0, 60.459999084472656)]", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/emdb-empiar/ahds.git", "keywords": "header,parser,data streams", "license": "Apache License", "maintainer": "", "maintainer_email": "", "name": "ahds", "package_url": "https://pypi.org/project/ahds/", "platform": "", "project_url": "https://pypi.org/project/ahds/", "project_urls": { "Homepage": "https://github.com/emdb-empiar/ahds.git" }, "release_url": "https://pypi.org/project/ahds/0.1.9.post1/", "requires_dist": null, "requires_python": "", "summary": "Python package to parse and provide access to headers and data streams in Amira (R) files", "version": "0.1.9.post1" }, "last_serial": 5803241, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "138214bb2870112ae7c38029e199a0dd", "sha256": "6093db65a474d17c0bce2fd017b193e9445931be8c2fe27aa46c568db93720ea" }, "downloads": -1, "filename": "ahds-0.1.3.tar.gz", "has_sig": false, "md5_digest": "138214bb2870112ae7c38029e199a0dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20675, "upload_time": "2017-05-30T14:49:03", "url": "https://files.pythonhosted.org/packages/71/eb/994ec7a9e08740176779b9790a6ae72b31a22558516a0984ffa853b1cbd5/ahds-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "42345832af1b5f5beb1af1308542ee44", "sha256": "086446c03f6083bbceb4e79f096bbd60e6bfe93cd491f9462aa85e41807b10fe" }, "downloads": -1, "filename": "ahds-0.1.4.tar.gz", "has_sig": false, "md5_digest": "42345832af1b5f5beb1af1308542ee44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20688, "upload_time": "2017-05-30T17:08:37", "url": "https://files.pythonhosted.org/packages/a9/80/0a2e909043f8eb783795fd64ae8f772173bc23eddaebb346ebe2dcc20e4e/ahds-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "c7781036af4ae0ab4f996f48b63d63ed", "sha256": "2aa7ccd854d4f4e1e033f7d17d1b149613f66b63984dbddef83c99bb616c1aa9" }, "downloads": -1, "filename": "ahds-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c7781036af4ae0ab4f996f48b63d63ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20711, "upload_time": "2017-05-30T18:37:49", "url": "https://files.pythonhosted.org/packages/11/12/793c2505e445271056fb397597683bacc18c767d7900c46d7fefaf6228a2/ahds-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "2c68a00b16e831c04607264afdc66ffc", "sha256": "33d03ff30f929cb8a36bd221c69f498639fd64c12cc8ca1c612e467509e8e110" }, "downloads": -1, "filename": "ahds-0.1.6-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "2c68a00b16e831c04607264afdc66ffc", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 30920, "upload_time": "2017-12-14T15:57:03", "url": "https://files.pythonhosted.org/packages/b7/0a/ec38c70b7a0f55ed19ac6f6c04ba54951125a87d9cdfcd832be97516fa1d/ahds-0.1.6-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "c1a51befc5ec0e6905fae6d1c3bd0bae", "sha256": "059bf3b2a8410ad175d34e78e3ae79514a3b3771ea005caa70e41add0eebf10c" }, "downloads": -1, "filename": "ahds-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c1a51befc5ec0e6905fae6d1c3bd0bae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20754, "upload_time": "2017-05-31T06:28:29", "url": "https://files.pythonhosted.org/packages/c8/08/800f08e24637e61690f64dd2e0d75869ff3fd0c7d5041815eb5647f8f108/ahds-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "a4cd447fc508ab7d6049f639c2768c0b", "sha256": "8884227ee79b591ce6130443f77690ec8f9dc2a0e3bccff024f8ce4980639a3a" }, "downloads": -1, "filename": "ahds-0.1.7-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "a4cd447fc508ab7d6049f639c2768c0b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 30995, "upload_time": "2017-11-23T09:43:01", "url": "https://files.pythonhosted.org/packages/fe/a5/a4d98f5e41df45c6fd1afd8af1737a18692268352fbd012f5c571cdd670b/ahds-0.1.7-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "abdd1a0257183e09b7f537ad4dcbb76b", "sha256": "31bb4d358624847c470b0ba88f794ef8b8c9b767a8a1bcf542a3f4ce931d442c" }, "downloads": -1, "filename": "ahds-0.1.7-cp27-none-macosx_10_6_x86_64.whl", "has_sig": false, "md5_digest": "abdd1a0257183e09b7f537ad4dcbb76b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 29469, "upload_time": "2017-11-23T09:44:51", "url": "https://files.pythonhosted.org/packages/25/22/3711acb91e1cd1e4130c00cc329cd5df71ce4532f06f03e3ac5192ad95c5/ahds-0.1.7-cp27-none-macosx_10_6_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "6e6fe76ef4c9224fd30f1437f59be63c", "sha256": "7df22b7362d91cf5ef9bf6ce82295a524a2f9c119edf08919a35f600cdaad104" }, "downloads": -1, "filename": "ahds-0.1.7.tar.gz", "has_sig": false, "md5_digest": "6e6fe76ef4c9224fd30f1437f59be63c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29003, "upload_time": "2017-11-23T09:55:33", "url": "https://files.pythonhosted.org/packages/91/8e/a6cf67ae7f42f33075f5904d087864a1339c82ca4fcfbc159118734380d2/ahds-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "73150b1abfd42a5d1cf89d7f92892241", "sha256": "bc179da3b742efa6b98450a6ba3d4209243c9e456ab5f443b6c8827d9b05498c" }, "downloads": -1, "filename": "ahds-0.1.8-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "73150b1abfd42a5d1cf89d7f92892241", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 31052, "upload_time": "2017-12-14T15:57:05", "url": "https://files.pythonhosted.org/packages/44/8b/afdaa03005083efe4727efa2026ca220f884585670647b0969f3cd9f2a7f/ahds-0.1.8-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "b9c5be92d7910e7547f6cc7f0242633d", "sha256": "fc1703fcc98b79b7f2817b3553c58042afb8c90c2d0f2c137b0e006f549a39b1" }, "downloads": -1, "filename": "ahds-0.1.8.tar.gz", "has_sig": false, "md5_digest": "b9c5be92d7910e7547f6cc7f0242633d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29028, "upload_time": "2017-12-14T13:56:09", "url": "https://files.pythonhosted.org/packages/21/a9/b2a4adf35ddf1126840cf464fde4767be67dac72c8e9f00acfb428b111c1/ahds-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "4ba6a7bc67f1e6fa97f78c89ecc39a2b", "sha256": "ba8f5c14c45e95fc132777206baa1c8f077254673443b05973bfd13996c42217" }, "downloads": -1, "filename": "ahds-0.1.9-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "4ba6a7bc67f1e6fa97f78c89ecc39a2b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 24388, "upload_time": "2019-05-16T09:28:50", "url": "https://files.pythonhosted.org/packages/7d/78/71ca2e28b23cc071536773b360dcf2918a6164f89e0037a9b5502ac4f00a/ahds-0.1.9-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "4ac3060053ae66f451508106df82f9d4", "sha256": "9e6afca6cc511f8974180b20d26ecba65bc0080196b71ab3d0d12e9e07638880" }, "downloads": -1, "filename": "ahds-0.1.9.tar.gz", "has_sig": false, "md5_digest": "4ac3060053ae66f451508106df82f9d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29066, "upload_time": "2018-01-23T13:32:56", "url": "https://files.pythonhosted.org/packages/cb/94/041720bf7eb67bf4c4d149682504e14ef6a429c43bcc3993693583a29bee/ahds-0.1.9.tar.gz" } ], "0.1.9.post0": [ { "comment_text": "", "digests": { "md5": "8abe2c53eadff0b29fb9f1ae04150af0", "sha256": "7ab003c2f058dd5c0f03c3d7796672d6ac1e244ea951f5582b9550d1ec4e7332" }, "downloads": -1, "filename": "ahds-0.1.9.post0-cp27-cp27m-macosx_10_6_x86_64.whl", "has_sig": false, "md5_digest": "8abe2c53eadff0b29fb9f1ae04150af0", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 25868, "upload_time": "2019-05-16T15:50:07", "url": "https://files.pythonhosted.org/packages/b5/c0/b8ab2c463588a5595f638d6994daf2b85b1173350aea9ad74a5ede602f60/ahds-0.1.9.post0-cp27-cp27m-macosx_10_6_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ddd70ce579727dd0a0893755b1f74c86", "sha256": "855a97870a1ba9b95f8f6854c3f2652861a46ac450a1064f134fe3e27a666c1b" }, "downloads": -1, "filename": "ahds-0.1.9.post0-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "ddd70ce579727dd0a0893755b1f74c86", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 26783, "upload_time": "2019-05-16T15:54:58", "url": "https://files.pythonhosted.org/packages/72/8a/01a457e02d81804cda31234b4189dae2c89a84483ba182dbcb222ce779df/ahds-0.1.9.post0-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "812571f14a9b4e380c51eb9f4f126144", "sha256": "d1669a09142d3c54f2d7561c426a7862ce20fcafc546699cb3b8c8a98e731694" }, "downloads": -1, "filename": "ahds-0.1.9.post0.tar.gz", "has_sig": false, "md5_digest": "812571f14a9b4e380c51eb9f4f126144", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21844, "upload_time": "2019-05-16T15:50:09", "url": "https://files.pythonhosted.org/packages/de/89/8b2cc5450b6074d2da9328d821fa6e7854018edb4032650e92bb27126d92/ahds-0.1.9.post0.tar.gz" } ], "0.1.9.post1": [ { "comment_text": "", "digests": { "md5": "de3e6c760637c161c30ed3cb192791b1", "sha256": "dbec9a1421640970939703dd34e0bc0401819e44dd8396d8c48096c542992734" }, "downloads": -1, "filename": "ahds-0.1.9.post1-cp27-cp27m-macosx_10_6_x86_64.whl", "has_sig": false, "md5_digest": "de3e6c760637c161c30ed3cb192791b1", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 25833, "upload_time": "2019-05-17T09:32:19", "url": "https://files.pythonhosted.org/packages/9c/e7/aee848ba827aa896362d02ec08878701709d3ab8dc1918c27d6822ab8743/ahds-0.1.9.post1-cp27-cp27m-macosx_10_6_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "df8e2b1ff13f6acd372630ede492ceba", "sha256": "d28a89b4d8e99e1bdf6a85d6926836ec3e5126d556c58f2c0379fcabbcbeae5e" }, "downloads": -1, "filename": "ahds-0.1.9.post1-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "df8e2b1ff13f6acd372630ede492ceba", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 27042, "upload_time": "2019-05-17T09:35:48", "url": "https://files.pythonhosted.org/packages/58/ac/18a63465f9360a35f209dd514945a465f8d8919d6ac1fac17ae831c98e91/ahds-0.1.9.post1-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "66d1c64a6fd6db0e66d59205a578fe0b", "sha256": "a5f343db3cc4a49509a2846b5a29313281496169b6875e35c0bd121a84ebb827" }, "downloads": -1, "filename": "ahds-0.1.9.post1.tar.gz", "has_sig": false, "md5_digest": "66d1c64a6fd6db0e66d59205a578fe0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18942, "upload_time": "2019-05-17T09:30:38", "url": "https://files.pythonhosted.org/packages/a2/d0/9b64538fe802c64b6990eefc3dd34a9efa011523ec8a25a00e70692b67e3/ahds-0.1.9.post1.tar.gz" } ], "0.2.0.dev0": [ { "comment_text": "", "digests": { "md5": "3c161c138f35cb24fb1b7dbe023970a4", "sha256": "c2a2dd28e38c8b78a20141dcda45e46658558b509db384e84eb27a7821981a9b" }, "downloads": -1, "filename": "ahds-0.2.0.dev0-cp27-cp27m-macosx_10_14_intel.whl", "has_sig": false, "md5_digest": "3c161c138f35cb24fb1b7dbe023970a4", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 47657, "upload_time": "2019-09-09T11:49:58", "url": "https://files.pythonhosted.org/packages/90/c4/2d709a3d2e7915265a03bba75adf906248d4330ed7c0707cb7361868c863/ahds-0.2.0.dev0-cp27-cp27m-macosx_10_14_intel.whl" }, { "comment_text": "", "digests": { "md5": "660ee8f50b46a40cc7e26a12460f17b2", "sha256": "dae9ef81766daf4ea10e55a776e0aa2273814c82c79449f4019678f689bd2140" }, "downloads": -1, "filename": "ahds-0.2.0.dev0-cp37-cp37m-macosx_10_9_x86_64.whl", "has_sig": false, "md5_digest": "660ee8f50b46a40cc7e26a12460f17b2", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 47921, "upload_time": "2019-09-09T11:50:00", "url": "https://files.pythonhosted.org/packages/f6/6c/4ecf52bcddf50a8562e7eccd49168f2965b9668057491d180563384310ad/ahds-0.2.0.dev0-cp37-cp37m-macosx_10_9_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "d52ef0b63a491350ec014816a8403214", "sha256": "3eb842ed7a67a5008c8a8310f3e1840674877ad40e17c6be58b31481843374cf" }, "downloads": -1, "filename": "ahds-0.2.0.dev0.tar.gz", "has_sig": false, "md5_digest": "d52ef0b63a491350ec014816a8403214", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40630, "upload_time": "2019-09-09T11:50:02", "url": "https://files.pythonhosted.org/packages/6f/a4/2ce963036b0723eb84374e9f6da6b9c63784bed9ae805fd30b205c68f1b2/ahds-0.2.0.dev0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "de3e6c760637c161c30ed3cb192791b1", "sha256": "dbec9a1421640970939703dd34e0bc0401819e44dd8396d8c48096c542992734" }, "downloads": -1, "filename": "ahds-0.1.9.post1-cp27-cp27m-macosx_10_6_x86_64.whl", "has_sig": false, "md5_digest": "de3e6c760637c161c30ed3cb192791b1", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 25833, "upload_time": "2019-05-17T09:32:19", "url": "https://files.pythonhosted.org/packages/9c/e7/aee848ba827aa896362d02ec08878701709d3ab8dc1918c27d6822ab8743/ahds-0.1.9.post1-cp27-cp27m-macosx_10_6_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "df8e2b1ff13f6acd372630ede492ceba", "sha256": "d28a89b4d8e99e1bdf6a85d6926836ec3e5126d556c58f2c0379fcabbcbeae5e" }, "downloads": -1, "filename": "ahds-0.1.9.post1-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "df8e2b1ff13f6acd372630ede492ceba", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 27042, "upload_time": "2019-05-17T09:35:48", "url": "https://files.pythonhosted.org/packages/58/ac/18a63465f9360a35f209dd514945a465f8d8919d6ac1fac17ae831c98e91/ahds-0.1.9.post1-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "66d1c64a6fd6db0e66d59205a578fe0b", "sha256": "a5f343db3cc4a49509a2846b5a29313281496169b6875e35c0bd121a84ebb827" }, "downloads": -1, "filename": "ahds-0.1.9.post1.tar.gz", "has_sig": false, "md5_digest": "66d1c64a6fd6db0e66d59205a578fe0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18942, "upload_time": "2019-05-17T09:30:38", "url": "https://files.pythonhosted.org/packages/a2/d0/9b64538fe802c64b6990eefc3dd34a9efa011523ec8a25a00e70692b67e3/ahds-0.1.9.post1.tar.gz" } ] }