{ "info": { "author": "Gen Del Raye", "author_email": "gdelraye@hawaii.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering" ], "description": "===========\r\nLatLon\r\n===========\r\n---------------\r\nFeatures\r\n---------------\r\nMethods for representing geographic coordinates (latitude and longitude) including the ability to:\r\n \r\n\t* Convert lat/lon strings from almost any format into a *LatLon* object (analogous to the datetime \r\n\t library's *stptime* method)\r\n\t* Automatically store decimal degrees, decimal minutes, and degree, minute, second information in \r\n\t a *LatLon* object\r\n\t* Output lat/lon information into a formatted string (analogous to the datetime library's *strftime* \r\n\t method)\r\n\t* Project lat/lon coordinates into some other proj projection\r\n\t* Calculate distance and heading between lat/lon pairs using either the FAI or WGS84 approximation \r\n\t* Create a new *LatLon* object by offsetting an initial coordinate by a distance and heading\r\n\t* Subtracting one *LatLon* object from another creates a *GeoVector* object with distance and heading \r\n\t attributes (analogous to the datetime library's *timedelta* object)\r\n\t* Adding or subtracting a *Latlon* object and a *GeoVector* object creates a new *LatLon* object with \r\n\t the coordinates adjusted by the *GeoVector* object's distance and heading\r\n\t* *GeoVector* objects can be added, subtracted, multiplied or divided\r\n\r\n----------------\r\nInstallation\r\n----------------\r\n*LatLon* has only been tested in Python 2.7\r\n\r\nInstallation through pip::\r\n\r\n\t$ pip install LatLon\r\n\r\nRequires the following non-standard libraries:\r\n\r\n\t* *pyproj*\r\n\r\n----------------\r\nUsage Notes\r\n----------------\r\nUsage of *LatLon* is primarily through the class *LatLon*, which is designed to hold a single pair of \r\n*Latitude* and *Longitude* objects. Strings can be converted to *LatLon* objects using the method \r\n*string2latlon*, and to *Latitude* or *Longitude* objects using *string2geocoord*. Alternatively, a LatLon \r\nobject can be constructed by subtracting two *LatLon* objects, or adding or subtracting a *Latlon* object \r\nand a *GeoVector* object.\r\n\r\nLatitude or Longitude Construction\r\n=========================================\r\nLatitude of longitude construction is through the classes *Latitude* and *Longitude*, respectively. You can \r\npass a latitude or longitude coordinate in any combination of decimal degrees, degrees and minutes, or \r\ndegrees minutes and seconds. Alternatively, you can pass a formatted string using the function *string2geocoord* \r\nfor a string containing a single latitude or longitude, or *string2latlon* for a pair of strings representing \r\nthe latitude and longitude.\r\n\r\nString formatting:\r\n============================\r\n*string2latlon* and *string2geocoord* both take a *formatter* string which is loosely modeled on the *format* \r\nkeyword used in *datetime's* *strftime* function. Indicator characters (e.g. *H* or *D*) are placed between \r\na specific separator character (*%*) to specify the way in which a coordinate string is formatted. Possible \r\nvalues are as follows:\r\n \r\n *H* is a hemisphere identifier (e.g. N, S, E or W)\r\n \r\n *D* is a coordinate in decimal degrees notation (e.g. 5.833)\r\n \r\n *d* is a coordinate in degrees notation (e.g. 5)\r\n \r\n *M* is a coordinate in decimal minutes notation (e.g. 54.35)\r\n \r\n *m* is a coordinate in minutes notation (e.g. 54)\r\n \r\n *S* is a coordinate in seconds notation (e.g. 28.93)\r\n \r\n Any other characters (e.g. ' ' or ', ') will be treated as a separator between the above components.\r\n \r\n All components should be separated by the *%* character. For example, if the coord_str is '5, 52, \r\n 59.88_N', the format_str would be 'd%, %m%, %S%_%H'\r\n\r\n*Important*\r\n===========\r\nOne format that will not currently work is one where the hemisphere identifier and a degree or decimal degree \r\nare not separated by any characters. For example '5 52 59.88 N' is valid whereas '5 52 59.88N' is not.\r\n\r\nString output:\r\n=====================\r\nBoth *LatLon* and *Latitude* and *Longitude* objects include a *to_string()* method for outputting a formatted \r\ncoordinate.\r\n\r\nProjection:\r\n=================\r\nUse *LatLon.project* to transform geographical coordinates into a chosen projection. Requires that you pass it a \r\n*pyproj* or *basemap* projection.\r\n\r\nDistance and Heading Calculation:\r\n========================================\r\n*LatLon* objects have a *distance()* method which accepts a 2nd *LatLon* object as an argument. *distance()* will \r\ncalculate the great-circle distance between the two coordinates using the WGS84 ellipsoid by default. To use the \r\nmore approximate FAI sphere, set *ellipse* to 'sphere'. Initial and reverse headings (in degrees) can be calculated \r\nin a similar way using the *heading_initial()* and *heading_reverse()* methods. Alternatively, subtracting one \r\n*LatLon* object from another will return a *GeoVector* object with the attributes heading and distance.\r\n\r\nCreating a New LatLon Object by Offset from Another One:\r\n==============================================================\r\nUse the *offset()* method of *LatLon* objects, which takes an initial heading (in degrees) and distance (in km) to \r\nreturn a new *LatLon* object at the offset coordinates. Also, you can perform the same operation by adding or \r\nsubtracting a LatLon object with a GeoVector object.\r\n\r\n--------------\r\nExamples\r\n--------------\r\nCreate a *LatLon* object from coordinates::\r\n\r\n >> palmyra = LatLon(Latitude(5.8833), Longitude(-162.0833)) # Location of Palmyra Atoll in decimal degrees\r\n >> palmyra = LatLon(5.8833, -162.0833) # Same thing but simpler!\r\n >> palmyra = LatLon(Latitude(degree = 5, minute = 52, second = 59.88), \r\n >> Longitude(degree = -162, minute = -4.998) # or more complicated!\r\n >> print palmyra.to_string('d% %m% %S% %H') # Print coordinates to degree minute second\r\n ('5 52 59.88 N', '162 4 59.88 W')\r\n\r\nCreate a *Latlon* object from a formatted string::\r\n\r\n >> palmyra = string2latlon('5 52 59.88 N', '162 4 59.88 W', 'd% %m% %S% %H')\r\n >> print palmyra.to_string('d%_%M') # Print coordinates as degree minutes separated by underscore\r\n ('5_52.998', '-162_4.998')\r\n\r\nPerform some calculations::\r\n\r\n >> palmyra = LatLon(Latitude(5.8833), Longitude(-162.0833)) # Location of Palmyra Atoll\r\n >> honolulu = LatLon(Latitude(21.3), Longitude(-157.8167)) # Location of Honolulu, HI\r\n >> distance = palmyra.distance(honolulu) # WGS84 distance in km\r\n >> print distance\r\n 1766.69130376\r\n >> print palmyra.distance(honolulu, ellipse = 'sphere') # FAI distance in km\r\n 1774.77188181\r\n >> initial_heading = palmyra.heading_initial(honolulu) # Heading from Palmyra to Honolulu on WGS84 ellipsoid\r\n >> print initial_heading\r\n 14.6907922022\r\n >> hnl = palmyra.offset(initial_heading, distance) # Reconstruct Honolulu based on offset from Palmyra\r\n >> print hnl.to_string('D') # Coordinates of Honolulu\r\n ('21.3', '-157.8167')\r\n \r\nManipulate *LatLon* objects using *GeoVectors*::\r\n\r\n >> vector = (honolulu - palmyra) * 2 # A GeoVector with 2x the magnitude of a vector from palmyra to honolulu\r\n >> print vector # Print heading and magnitude\r\n 14.6907922022 3533.38260751\r\n print palmyra + (vector/2.0) # Recreate the coordinates of Honolulu by adding half of vector to palmyra\r\n 21.3, -157.8167\r\n \r\n--------------\r\nVersion\r\n--------------\r\n1.0.2 - Tested on Python 2.7 with Eclipse IDLE. Please let me know of any issues.\r\n\r\nChangelog\r\n============\r\n**1.0.2 (OCTOBER/14/2014)**\r\n\r\n\t* Class *GeoVector* is now an abstract class to ensure that any subclasses use the correct API\r\n\t\r\n\t* Added methods *range180* and *range360* to class *Longitude* to interconvert between longitudes reported -180\r\n\t to 180 format and those reported in 0 to 360 format. To ensure that all operations such as hemisphere assignment\r\n\t work as expected, longitudes reported in 0 to 360 format are automatically converted into -180 to 180 format\r\n\t when the *Longitude* object is initialized.\r\n\r\n**1.0.1 (SEPTEMBER/2/2014)**\r\n\r\n\t* Fixed issue with where attribute *theta* in *GeoVector* was treated in some cases like a heading (i.e. starting \r\n\t with due north and continuing clockwise) even though it was in fact an angle (i.e. starting with (1, 0) and \r\n\t continuing anti-clockwise). The attribute name has now been changed to *heading* to eliminate confusion. The \r\n\t local variable *theta* is used for computations involving angle.\r\n\t* Added testing functions with *pytest* for class *LatLon* and *GeoVector*\r\n\t* Added *almost_equal* methods to class *LatLon* and *GeoVector* to deal with float errors in decimal degree \r\n\t specification\r\n\t* *LatLon.project* now returns *(x, y)* instead of *(y, x)* to be more consistent with the accepted convention.\r\n\r\n**0.91 (AUGUST/28/2014)**\r\n\r\n\t* *degree*, *minute* and *second* attributes for *GeoCoord* class are now coerced to type *float*\r\n\r\n**0.90 (AUGUST/28/2014)**\r\n\r\n\t* Updated magic methods for *GeoCoord* class\r\n\t* Added option for instantiating *LatLon* from scalars\r\n\r\n**0.80 (AUGUST/27/2014)**\r\n\r\n\t* Added *GeoVector* class to handle vectors between two *LatLon* objects\r\n\t* Cleaned up *__str__* and *__repr__* methods for *LatLon*, *Latitude*, *Longitude*, *GeoCoord*, and *GeoVector* \r\n\t classes\r\n\r\n**0.70 (AUGUST/27/2014)**\r\n\r\n\t* Deprecated *LatLon.distance_sphere* method. From now on use *distance(other, ellipse = 'sphere')* instead\r\n\t* Added *LatLon.bearing* method to return the initial bearing between two *LatLon* objects\r\n\t* Added *LatLon.offset* method to return a new LatLon object that is computed from an initial LatLon object plus \r\n\t a bearing and distance\r\n\r\n**0.60 (AUGUST/27/2014)**\r\n\r\n\t* Added compatibility with comparison, negation, addition and multiplication magic methods\r\n\r\n**0.50 (AUGUST/20/2014)**\r\n\r\n\t* First release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "latitude,longitude,decimal degrees,degree minutes,distance", "license": "UNKNOWN", "maintainer": "", "maintainer_email": "", "name": "LatLon", "package_url": "https://pypi.org/project/LatLon/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/LatLon/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/LatLon/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Methods for representing geographic coordinates", "version": "1.0.2" }, "last_serial": 1269799, "releases": { "0.50": [ { "comment_text": "", "digests": { "md5": "2dab10cbcf09bc1d3ac687c309aa856f", "sha256": "a7f39c0b943d1f291db3c067a51ff4d03708eb8010870d3daa24c64de216a15f" }, "downloads": -1, "filename": "LatLon-0.50-py2-none-any.whl", "has_sig": false, "md5_digest": "2dab10cbcf09bc1d3ac687c309aa856f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6553, "upload_time": "2014-08-19T20:41:50", "url": "https://files.pythonhosted.org/packages/61/e9/2ba888e83aafbd182fd169d9764252e6e7af097d5cc8d3fa60cd6e52d7fd/LatLon-0.50-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ce4e7bf5cb090ae17b5a606524e055e", "sha256": "c509b84f7f9d1ab77abb9e94dceae46485ab1e7b7b5affe8c18da931a6d5913e" }, "downloads": -1, "filename": "LatLon-0.50.tar.gz", "has_sig": false, "md5_digest": "6ce4e7bf5cb090ae17b5a606524e055e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6257, "upload_time": "2014-08-19T20:41:47", "url": "https://files.pythonhosted.org/packages/fd/94/eab2687e441e427ec7de1a470834452c821b61e9ba155ce95c019ef40273/LatLon-0.50.tar.gz" } ], "0.60": [ { "comment_text": "", "digests": { "md5": "8e44cf5558bb1fe7104b6f9e01bf35c3", "sha256": "f8ca6f6d83bb44c6beac88abb4a2733397e03bd5046e2abb4cdde3feeb1df263" }, "downloads": -1, "filename": "LatLon-0.60-py2-none-any.whl", "has_sig": false, "md5_digest": "8e44cf5558bb1fe7104b6f9e01bf35c3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6640, "upload_time": "2014-08-27T20:06:44", "url": "https://files.pythonhosted.org/packages/ab/cd/ab4f2dd7d925d90227ffc6db503237ef8f04ecbe6f1f41d943bb513a89d9/LatLon-0.60-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf123547f8ba5ca34f1cae714be137cd", "sha256": "1bb124bc26cd90efc1e4bf19934b3d3f48de5d32b219ebd6071918eab4c7e87c" }, "downloads": -1, "filename": "LatLon-0.60.tar.gz", "has_sig": false, "md5_digest": "bf123547f8ba5ca34f1cae714be137cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6528, "upload_time": "2014-08-27T20:06:41", "url": "https://files.pythonhosted.org/packages/c1/4f/78e16c73a8265f576ff64e19959f73088c4f81b42f587c134e0fbd3a4f9d/LatLon-0.60.tar.gz" } ], "0.70": [ { "comment_text": "", "digests": { "md5": "bbe80b312f59d10b3e08bd0b252851e3", "sha256": "9b228ad305415b549691a31383fc37e00f4b5b460bbad81826804c8cf13068a3" }, "downloads": -1, "filename": "LatLon-0.70-py2-none-any.whl", "has_sig": false, "md5_digest": "bbe80b312f59d10b3e08bd0b252851e3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7037, "upload_time": "2014-08-28T00:17:33", "url": "https://files.pythonhosted.org/packages/48/e8/9bd31e9805231ff1cd9f90ac80a8c59e3c627f672215291df2f452bed48f/LatLon-0.70-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e3c58daafdc74a73b8d504ae9acba35", "sha256": "229abe8643282b5b9aa813e06139b3439c45590efb9ecf21ebfb661c7ec6b1da" }, "downloads": -1, "filename": "LatLon-0.70.tar.gz", "has_sig": false, "md5_digest": "6e3c58daafdc74a73b8d504ae9acba35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7087, "upload_time": "2014-08-28T00:17:30", "url": "https://files.pythonhosted.org/packages/0a/c1/3868120f5d60f562f6c1608f9209c1eeb680a7d926acc164cb69e51e4b11/LatLon-0.70.tar.gz" } ], "0.80": [ { "comment_text": "", "digests": { "md5": "79651a6af286b177ee95c2e8276104ff", "sha256": "18b724069a9ef9879cea3366b6b884aa74e8ea8d1b2be92686328bbe4482a258" }, "downloads": -1, "filename": "LatLon-0.80-py2-none-any.whl", "has_sig": false, "md5_digest": "79651a6af286b177ee95c2e8276104ff", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7988, "upload_time": "2014-08-28T02:46:34", "url": "https://files.pythonhosted.org/packages/4e/01/e19e10b96049952dcaa72472f1b37c699cb4f9a1f0005c3e109f1dd069f2/LatLon-0.80-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd77b270d83eede4cc87094377c7aa14", "sha256": "2ccb0de0c5ef822c0a13eceab20dae8cf18788edb81d17ff1a56e6e456e0ac6b" }, "downloads": -1, "filename": "LatLon-0.80.tar.gz", "has_sig": false, "md5_digest": "cd77b270d83eede4cc87094377c7aa14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8497, "upload_time": "2014-08-28T02:46:29", "url": "https://files.pythonhosted.org/packages/f4/ad/6aedf834e7444704573627196947ae9e71e1a65068b104070085b2bbcc19/LatLon-0.80.tar.gz" } ], "0.90": [ { "comment_text": "", "digests": { "md5": "22f050b7b1124f86938d3827613659bc", "sha256": "9cdca8974f74500b0038766b162433fdbde30a506e450361c06971b56e44df53" }, "downloads": -1, "filename": "LatLon-0.90-py2-none-any.whl", "has_sig": false, "md5_digest": "22f050b7b1124f86938d3827613659bc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8278, "upload_time": "2014-08-28T19:10:47", "url": "https://files.pythonhosted.org/packages/31/a4/93ab72a5016b2b44aa61a0a00d1816df850abce50555f8d1e7b7089164a3/LatLon-0.90-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "624ccd9f1182f9c24c41e8ef84d25fd3", "sha256": "0a06fba5168bebd0b7ce4bf28605683acd91ea60183a3802be66a8b8d7d0dc12" }, "downloads": -1, "filename": "LatLon-0.90.tar.gz", "has_sig": false, "md5_digest": "624ccd9f1182f9c24c41e8ef84d25fd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8901, "upload_time": "2014-08-28T19:10:43", "url": "https://files.pythonhosted.org/packages/79/7d/a86c018fc7674455bad1ba44cb69071b615b196518428ed2d068170dfca8/LatLon-0.90.tar.gz" } ], "0.91": [ { "comment_text": "", "digests": { "md5": "64f9f577503c7b87e063e2fdccab7c93", "sha256": "1c0b734995878fea0d6e95b8988f94ab7d77644d15050eff969a32cefe45178b" }, "downloads": -1, "filename": "LatLon-0.91-py2-none-any.whl", "has_sig": false, "md5_digest": "64f9f577503c7b87e063e2fdccab7c93", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8268, "upload_time": "2014-08-28T22:20:29", "url": "https://files.pythonhosted.org/packages/11/6a/cdffc40bb33ecc5b046dcd956e8069e8256fb1c28f1006e38cf6d1b72eea/LatLon-0.91-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87d3d539e94656bc3a7efb0e90d0bbeb", "sha256": "e1fecfe557a40d643545e8c95cac2e3f8e47f4090454ff81b9e99ce26c31d7a6" }, "downloads": -1, "filename": "LatLon-0.91.tar.gz", "has_sig": false, "md5_digest": "87d3d539e94656bc3a7efb0e90d0bbeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8931, "upload_time": "2014-08-28T22:20:25", "url": "https://files.pythonhosted.org/packages/9a/ed/5e785161da0f6b4877ce4bf297918931c1aed2ac5929055bcaf5a008ae1e/LatLon-0.91.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "84aa509fd3ac558ecae10fa7974ed14b", "sha256": "2a7b2c963dedc093f67916165d75a6af39c6ee524634b848318ef03660d24452" }, "downloads": -1, "filename": "LatLon-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "84aa509fd3ac558ecae10fa7974ed14b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8922, "upload_time": "2014-09-03T11:49:30", "url": "https://files.pythonhosted.org/packages/dc/1f/769bcc5a5b19442f3a63241753721d63ea307840ae10826418fb74e519ed/LatLon-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5667122abce2f8635da1f626df6b131", "sha256": "0a5b3ba8f48b3bdf2f2c8f91ab4f80b1fa83d5cb5e3c28d5b16b4e3b3857f4fd" }, "downloads": -1, "filename": "LatLon-1.0.1.tar.gz", "has_sig": false, "md5_digest": "d5667122abce2f8635da1f626df6b131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9836, "upload_time": "2014-09-03T11:49:27", "url": "https://files.pythonhosted.org/packages/4a/2c/ae890794253ce8f87b8d8d7fb49a99a61c007776c92fc9faf8f1febe3e31/LatLon-1.0.1.tar.gz" } ], "1.0.1a1": [ { "comment_text": "", "digests": { "md5": "18a17fc34a384d5510de3cc2233f8f88", "sha256": "c0c9d174f498626943df79b729ca0498404251aff250e5b4a7c4e5bc98470f07" }, "downloads": -1, "filename": "LatLon-1.0.1a1-py2-none-any.whl", "has_sig": false, "md5_digest": "18a17fc34a384d5510de3cc2233f8f88", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8952, "upload_time": "2014-09-03T11:30:12", "url": "https://files.pythonhosted.org/packages/a4/22/55ea64596561d19ba008af54723423b287d18d9bac6807f81d448b4e1a1d/LatLon-1.0.1a1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69c186c1860b38b84fef9eb3dd8ec651", "sha256": "2aebc71d977f4f1c60cf21223f151162778f6a2ed5f75c0fbaef4fd513b86159" }, "downloads": -1, "filename": "LatLon-1.0.1a1.tar.gz", "has_sig": false, "md5_digest": "69c186c1860b38b84fef9eb3dd8ec651", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9835, "upload_time": "2014-09-03T11:30:09", "url": "https://files.pythonhosted.org/packages/e3/85/063866fe068a6ebcc2bd871aad175c492f4f2d80c68091dd1c05b807dace/LatLon-1.0.1a1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "76eae56cceb63a94188cdc4853de3c09", "sha256": "5ff57565019ca974f1366b175a359ec9a3bbf2f50bb952a9525fbd3bc2829763" }, "downloads": -1, "filename": "LatLon-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "76eae56cceb63a94188cdc4853de3c09", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9929, "upload_time": "2014-10-14T10:40:21", "url": "https://files.pythonhosted.org/packages/cf/f0/5c23d9431a69cf27d139e9ae09db7f0f032c88192384dad3f8d7e0c860e8/LatLon-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "604b476bfa5398b3cbe1ee72ba8f4585", "sha256": "3b965e707102cebf2fb8501e8e72183ba728bf74a45a91bcb6ce1c0ad5453cfb" }, "downloads": -1, "filename": "LatLon-1.0.2.tar.gz", "has_sig": false, "md5_digest": "604b476bfa5398b3cbe1ee72ba8f4585", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13194, "upload_time": "2014-10-14T10:40:19", "url": "https://files.pythonhosted.org/packages/e1/08/3d9647a56b02ad0cf20eee46963cd95a004f0456e29b94f45b32420b7a4e/LatLon-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "76eae56cceb63a94188cdc4853de3c09", "sha256": "5ff57565019ca974f1366b175a359ec9a3bbf2f50bb952a9525fbd3bc2829763" }, "downloads": -1, "filename": "LatLon-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "76eae56cceb63a94188cdc4853de3c09", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9929, "upload_time": "2014-10-14T10:40:21", "url": "https://files.pythonhosted.org/packages/cf/f0/5c23d9431a69cf27d139e9ae09db7f0f032c88192384dad3f8d7e0c860e8/LatLon-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "604b476bfa5398b3cbe1ee72ba8f4585", "sha256": "3b965e707102cebf2fb8501e8e72183ba728bf74a45a91bcb6ce1c0ad5453cfb" }, "downloads": -1, "filename": "LatLon-1.0.2.tar.gz", "has_sig": false, "md5_digest": "604b476bfa5398b3cbe1ee72ba8f4585", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13194, "upload_time": "2014-10-14T10:40:19", "url": "https://files.pythonhosted.org/packages/e1/08/3d9647a56b02ad0cf20eee46963cd95a004f0456e29b94f45b32420b7a4e/LatLon-1.0.2.tar.gz" } ] }