{ "info": { "author": "Sean Gillies", "author_email": "sean@mapbox.com", "bugtrack_url": null, "classifiers": [], "description": "Affine\n======\n\nMatrices describing affine transformation of the plane.\n\n.. image:: https://travis-ci.org/sgillies/affine.svg?branch=master\n :target: https://travis-ci.org/sgillies/affine\n\n.. image:: https://coveralls.io/repos/sgillies/affine/badge.svg\n :target: https://coveralls.io/r/sgillies/affine\n\nThe Affine package is derived from Casey Duncan's Planar package. Please see\nthe copyright statement in `affine/__init__.py `__.\n\nUsage\n-----\n\nThe 3x3 augmented affine transformation matrix for transformations in two\ndimensions is illustrated below.\n\n.. ::\n\n | x' | | a b c | | x |\n | y' | = | d e f | | y |\n | 1 | | 0 0 1 | | 1 |\n\nMatrices can be created by passing the values ``a, b, c, d, e, f`` to the\n``affine.Affine`` constructor or by using its ``identity()``,\n``translation()``, ``scale()``, ``shear()``, and ``rotation()`` class methods.\n\n.. code-block:: pycon\n\n >>> from affine import Affine\n >>> Affine.identity()\n Affine(1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0)\n >>> Affine.translation(1.0, 5.0)\n Affine(1.0, 0.0, 1.0,\n 0.0, 1.0, 5.0)\n >>> Affine.scale(2.0)\n Affine(2.0, 0.0, 0.0,\n 0.0, 2.0, 0.0)\n >>> Affine.shear(45.0, 45.0) # decimal degrees\n Affine(1.0, 0.9999999999999999, 0.0,\n 0.9999999999999999, 1.0, 0.0)\n >>> Affine.rotation(45.0) # decimal degrees\n Affine(0.7071067811865476, -0.7071067811865475, 0.0,\n 0.7071067811865475, 0.7071067811865476, 0.0)\n\nThese matrices can be applied to ``(x, y)`` tuples to obtain transformed\ncoordinates ``(x', y')``.\n\n.. code-block:: pycon\n\n >>> Affine.translation(1.0, 5.0) * (1.0, 1.0)\n (2.0, 6.0)\n >>> Affine.rotation(45.0) * (1.0, 1.0)\n (1.1102230246251565e-16, 1.414213562373095)\n\nThey may also be multiplied together to combine transformations.\n\n.. code-block:: pycon\n\n >>> Affine.translation(1.0, 5.0) * Affine.rotation(45.0)\n Affine(0.7071067811865476, -0.7071067811865475, 1.0,\n 0.7071067811865475, 0.7071067811865476, 5.0)\n\nUsage with GIS data packages\n----------------------------\n\nGeoreferenced raster datasets use affine transformations to map from image\ncoordinates to world coordinates. The ``affine.Affine.from_gdal()`` class\nmethod helps convert `GDAL GeoTransform\n`__,\nsequences of 6 numbers in which the first and fourth are the x and y offsets\nand the second and sixth are the x and y pixel sizes.\n\nUsing a GDAL dataset transformation matrix, the world coordinates ``(x, y)``\ncorresponding to the top left corner of the pixel 100 rows down from the\norigin can be easily computed.\n\n.. code-block:: pycon\n\n >>> geotransform = (-237481.5, 425.0, 0.0, 237536.4, 0.0, -425.0)\n >>> fwd = Affine.from_gdal(*geotransform)\n >>> col, row = 0, 100\n >>> fwd * (col, row)\n (-237481.5, 195036.4)\n\nThe reverse transformation is obtained using the ``~`` operator.\n\n.. code-block:: pycon\n\n >>> rev = ~fwd\n >>> rev * fwd * (col, row)\n (0.0, 99.99999999999999)\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sgillies/affine", "keywords": "affine transformation matrix", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "affine", "package_url": "https://pypi.org/project/affine/", "platform": "", "project_url": "https://pypi.org/project/affine/", "project_urls": { "Homepage": "https://github.com/sgillies/affine" }, "release_url": "https://pypi.org/project/affine/2.3.0/", "requires_dist": [ "pytest (>=3.0) ; extra == 'test'", "pytest-cov ; extra == 'test'", "pydocstyle ; extra == 'test'", "coveralls ; extra == 'test'" ], "requires_python": "", "summary": "Matrices describing affine transformation of the plane.", "version": "2.3.0" }, "last_serial": 5783806, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "6076a7f052e08d191865c00af0fdad30", "sha256": "34325894de35d3dff7ce58471ed068e0dd714000cb552df8f1f57419397e1a0a" }, "downloads": -1, "filename": "affine-1.0.tar.gz", "has_sig": false, "md5_digest": "6076a7f052e08d191865c00af0fdad30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7232, "upload_time": "2014-05-28T21:00:15", "url": "https://files.pythonhosted.org/packages/90/8f/0654c71cc36f5a6693cdbce12045b9ff9482a35fe052d51ee55e4a1fb638/affine-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "4b4731d27e8f388ba5d30d05f167b282", "sha256": "f7f358fbea90a963b55f4002d24aa24dd623f921f393d55aa71cb459a766ca8c" }, "downloads": -1, "filename": "affine-1.0.1.tar.gz", "has_sig": false, "md5_digest": "4b4731d27e8f388ba5d30d05f167b282", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7238, "upload_time": "2014-10-20T18:56:28", "url": "https://files.pythonhosted.org/packages/12/12/f9d59fcb6c97e17c4c0af5f30919cc6c81b05aad1f4ed17ddb5c53c65002/affine-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "a3d020a8f0ebb762294caf0cc5d28d18", "sha256": "5e4df32b0399e8334101e7a80d5d349ea6ca77b0eba6219924a5188c57b545fb" }, "downloads": -1, "filename": "affine-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a3d020a8f0ebb762294caf0cc5d28d18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7719, "upload_time": "2014-11-13T23:11:49", "url": "https://files.pythonhosted.org/packages/ac/c4/8556f9aedef48abf2662b9a4a6a0f377b014753318c524fde4008a6dc2fc/affine-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7c3f48fb7b665f4c744cd58e28f71412", "sha256": "b90d9927b0f9867d2d062589942c37eb047f1a814b306deb7faed69697b1196b" }, "downloads": -1, "filename": "affine-1.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "7c3f48fb7b665f4c744cd58e28f71412", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14260, "upload_time": "2015-06-02T03:50:26", "url": "https://files.pythonhosted.org/packages/c7/1d/c7cd423cbfc7bdea2a959fbaf238fd99e1ee9d13e369a54550f1569fe60d/affine-1.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "991ccec71472c9a4351c482d0dd4499d", "sha256": "1a2017be2d4c7f949adbe439370080207ab72419cf4201d912d1af561efad5fa" }, "downloads": -1, "filename": "affine-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "991ccec71472c9a4351c482d0dd4499d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14264, "upload_time": "2015-06-02T03:50:29", "url": "https://files.pythonhosted.org/packages/11/83/d05dbeca234a397a50e81917ca1be525a42da7b53d74291c7917fcfec6bc/affine-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8167ffb06ecc2da4d44c7f3ed8f3b504", "sha256": "69e6f82130bfc61a223624f49359e7e3bda131221ca02f7da486a3d0505c7efa" }, "downloads": -1, "filename": "affine-1.2.0.tar.gz", "has_sig": false, "md5_digest": "8167ffb06ecc2da4d44c7f3ed8f3b504", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10918, "upload_time": "2015-06-02T03:50:32", "url": "https://files.pythonhosted.org/packages/90/73/e387c6e50aed4cc5eb576f621e03bcef420662febb1700e75a89ad8080b4/affine-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "e7b95280029ed6f8e405e76020396738", "sha256": "faef30537d7a9d5586be098f61f14c1b7742dbc0e2488ba0483f220122fd87c5" }, "downloads": -1, "filename": "affine-1.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "e7b95280029ed6f8e405e76020396738", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14481, "upload_time": "2016-04-08T19:56:20", "url": "https://files.pythonhosted.org/packages/eb/1e/d70e9677450766e2daf0153e469305e86b3b26e7e1446e407e78ee83569a/affine-1.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2910bc4249d0fef104025b3404989b2", "sha256": "563d8f75a03d6f32dc5842a452f575b47a0a903511eb5bc12697cc2f608f7b2c" }, "downloads": -1, "filename": "affine-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e2910bc4249d0fef104025b3404989b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14482, "upload_time": "2016-04-08T19:56:43", "url": "https://files.pythonhosted.org/packages/65/12/b05d06b59de60680b8d7f21050f01e275193d26b1fde4429b7a450ca45e6/affine-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8e4dec94d91731952092fd0adbf0611", "sha256": "abbead5a77fcb47a1b5d7ae444d715bf71a2475bdb19c674b55dccf231d7c1f1" }, "downloads": -1, "filename": "affine-1.3.0.tar.gz", "has_sig": false, "md5_digest": "a8e4dec94d91731952092fd0adbf0611", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11000, "upload_time": "2016-04-08T19:57:16", "url": "https://files.pythonhosted.org/packages/92/88/04925bb196a1b49b3f6d5cc2eb15b204e05b8a360baf93364ae18792944c/affine-1.3.0.tar.gz" } ], "2.0.0": [], "2.0.0.post1": [ { "comment_text": "", "digests": { "md5": "3f5d85dd342a16fee2914a8967dd4d1e", "sha256": "fca72194a3eb3c9e3833feff40dfd6a81e35a3e89289ba57fdcab57899be8d16" }, "downloads": -1, "filename": "affine-2.0.0.post1-py2-none-any.whl", "has_sig": false, "md5_digest": "3f5d85dd342a16fee2914a8967dd4d1e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15162, "upload_time": "2016-05-20T20:23:17", "url": "https://files.pythonhosted.org/packages/ed/a4/4cbf2a15dd6eb0f17e3f443640b8472ce3a1b09cd8f692bc59b8a6fe3e69/affine-2.0.0.post1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4235d75cf6117cc7457cf97a0cbbc89", "sha256": "9e8425e999a91c32007fcf625ff50fb6c62464ce9174a811c951065ed1dd078d" }, "downloads": -1, "filename": "affine-2.0.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "d4235d75cf6117cc7457cf97a0cbbc89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15159, "upload_time": "2016-05-20T20:23:20", "url": "https://files.pythonhosted.org/packages/bf/df/d175613af5ec13cfe83e8bc1249f647ca6d55dd33565ce9433cf0e00daa9/affine-2.0.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7f4e2c86adc6575a7563c401d07f992", "sha256": "2bb847da3ad7903ccb44ce2b9d09c1f0c571c1cab95222b2b03726fb82a51f86" }, "downloads": -1, "filename": "affine-2.0.0.post1.tar.gz", "has_sig": false, "md5_digest": "b7f4e2c86adc6575a7563c401d07f992", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11329, "upload_time": "2016-05-20T20:23:24", "url": "https://files.pythonhosted.org/packages/b0/3c/e1a37f1e92f27f5e32371b572201819c59d5e917d600d46df80f780cab43/affine-2.0.0.post1.tar.gz" } ], "2.0b1": [ { "comment_text": "", "digests": { "md5": "6a0d3fe8b9ede9f6a7ca5fc68d032f11", "sha256": "3d40de4033a7347410a8ce999506e19bdb5e4cebaadf1d0c76bd7f47b8ee06f3" }, "downloads": -1, "filename": "affine-2.0b1-py2-none-any.whl", "has_sig": false, "md5_digest": "6a0d3fe8b9ede9f6a7ca5fc68d032f11", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14849, "upload_time": "2016-05-16T17:26:07", "url": "https://files.pythonhosted.org/packages/0b/da/e42d7f1542a4b6710f508fd3754dabeb8c8d4820f8612368fa5119534dea/affine-2.0b1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ff9d3c49554c5c40a6f4fb88368bb79", "sha256": "f686b0f7fd3b62e2b8bb1adf5b1f1fc8f3eb55b2b9d0b441bb8208b59d5ea7d3" }, "downloads": -1, "filename": "affine-2.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "6ff9d3c49554c5c40a6f4fb88368bb79", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14851, "upload_time": "2016-05-16T17:26:12", "url": "https://files.pythonhosted.org/packages/2c/5a/9492b7f818337d796860fbd5d871e6548526b3ca4fbde0707986b4042375/affine-2.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "538786000d92825011681c2428028217", "sha256": "7d983f9b0db3116e0f145e0d162d7591a3fc9fe0e85a8c4ee24e6896849aec5a" }, "downloads": -1, "filename": "affine-2.0b1.tar.gz", "has_sig": false, "md5_digest": "538786000d92825011681c2428028217", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11052, "upload_time": "2016-05-16T17:26:21", "url": "https://files.pythonhosted.org/packages/1f/b6/34f80c52fa4eb7c9178e9b918dc302db0ecb1ddb68c734c2f71559dd089d/affine-2.0b1.tar.gz" } ], "2.0b2": [ { "comment_text": "", "digests": { "md5": "3a5f51b2a2094fa404bba9086b8c787d", "sha256": "8e03438b385b68c6a222ce4da6d00608b2e42cf35ee79e32d28cd4cc5c3932a2" }, "downloads": -1, "filename": "affine-2.0b2-py2-none-any.whl", "has_sig": false, "md5_digest": "3a5f51b2a2094fa404bba9086b8c787d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15073, "upload_time": "2016-05-16T19:02:57", "url": "https://files.pythonhosted.org/packages/49/e7/92d8904baf2dc2defadc794fcc66ffafbdf633c404b05d32096594a107c9/affine-2.0b2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53be0d3271659a71ceb1ec0e7c2ff5d7", "sha256": "6446d85a0a14d6bc20ffb39c6695acc5128b36c7662e3d4a08e37b84746b5efb" }, "downloads": -1, "filename": "affine-2.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "53be0d3271659a71ceb1ec0e7c2ff5d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15072, "upload_time": "2016-05-16T19:03:26", "url": "https://files.pythonhosted.org/packages/56/9e/6df6aa38ce5e147b6c52887cf777269792cd32eea2d2e31d6d592efba60e/affine-2.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13867e8e71151b09a837573f3793f8ca", "sha256": "4e8bb402442eb7dcca5645217ab4c998720cab8d828ed70282ced3696242ca6b" }, "downloads": -1, "filename": "affine-2.0b2.tar.gz", "has_sig": false, "md5_digest": "13867e8e71151b09a837573f3793f8ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11320, "upload_time": "2016-05-16T19:03:19", "url": "https://files.pythonhosted.org/packages/de/fb/5a14e7be60cdf2b323e5e2e2a45954f22742413ca674d196113c42d0cd61/affine-2.0b2.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "63267f0a67efb2c59057b343b46a503e", "sha256": "ed8bc4b217ec051c07c2733bc60229a0dfd00d88bbe0b94db992e65a0d876bc4" }, "downloads": -1, "filename": "affine-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63267f0a67efb2c59057b343b46a503e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15847, "upload_time": "2017-07-12T12:50:57", "url": "https://files.pythonhosted.org/packages/c9/24/71214ac2b93db5b64775821ed32dd6f9da451d51dbb83cb0b66fa38acac7/affine-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6de858757ad7962649dc8efcdc16661", "sha256": "5f97938c63195551d89237e241c435cdeb296b81bcfaa46140afc12cac7bc447" }, "downloads": -1, "filename": "affine-2.1.0.tar.gz", "has_sig": false, "md5_digest": "d6de858757ad7962649dc8efcdc16661", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12045, "upload_time": "2017-07-12T12:50:58", "url": "https://files.pythonhosted.org/packages/20/33/f947cac58975b03c93e7149ea97d2bf7e46933fca1053e41ce43f352ff56/affine-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "62c8bd07aa60cc153efaaf4ee02f35cb", "sha256": "88a9c2167849a82e46ec2543e45a369832ee6661127601cc3914d2854395a02b" }, "downloads": -1, "filename": "affine-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "62c8bd07aa60cc153efaaf4ee02f35cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16100, "upload_time": "2018-03-21T02:59:06", "url": "https://files.pythonhosted.org/packages/ab/9c/ae51e175215d2ea4d563207f11ba3fa6054668ceea8b44c4eaaeac8d627c/affine-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "407034473b3cc13c1aa51a5b209c7f23", "sha256": "0e56a6aaf8443366042daa4092a94907c18edf5aba22db9f5e47737b222f4b91" }, "downloads": -1, "filename": "affine-2.2.0.tar.gz", "has_sig": false, "md5_digest": "407034473b3cc13c1aa51a5b209c7f23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13933, "upload_time": "2018-03-21T02:59:07", "url": "https://files.pythonhosted.org/packages/0b/31/750da34024e1a8075cede04134789943ff166dc26ea192804bbf24194547/affine-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "5fc7a7e85c75d867ad11650389c1a0bb", "sha256": "b641471fa39f4f9b3d7e3a48b9ad9b525480ffaa9902ae622af5671ad20aea51" }, "downloads": -1, "filename": "affine-2.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5fc7a7e85c75d867ad11650389c1a0bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14268, "upload_time": "2018-06-04T23:25:48", "url": "https://files.pythonhosted.org/packages/6b/5d/23bf1095d39da067de3dc8d3fdda2c043023cce63285ccfc907a157019a4/affine-2.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4eee32aec0bf58ad51122dadd98267c", "sha256": "306e56e8e2cbe80e90400fe0469cfc09c583a9efc7796c3fa87bcb572ddb7548" }, "downloads": -1, "filename": "affine-2.2.1.tar.gz", "has_sig": false, "md5_digest": "b4eee32aec0bf58ad51122dadd98267c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14073, "upload_time": "2018-06-04T23:25:49", "url": "https://files.pythonhosted.org/packages/38/88/ee5dcab77799b8eb226b7170d6e65e3031420edf63ce1f4f05296e50378f/affine-2.2.1.tar.gz" } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "91d2f48bb01d7d738e4c64063378a29a", "sha256": "e5970e2e53edd75fee60eb2550df365a1c3a58d78755e9e5164e345ac36df322" }, "downloads": -1, "filename": "affine-2.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91d2f48bb01d7d738e4c64063378a29a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15646, "upload_time": "2018-12-20T23:41:52", "url": "https://files.pythonhosted.org/packages/56/5d/6877929932d17850fa4903d0db8233ec8ed35aab7ceae96fa44ea6d479bd/affine-2.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "539bb3d211cafec2bd2b0623b9562fb6", "sha256": "ff0d0f40a90faa651f7bc7fece15bdbb7a0e0658b1e7ba6a03422c21efa7da90" }, "downloads": -1, "filename": "affine-2.2.2.tar.gz", "has_sig": false, "md5_digest": "539bb3d211cafec2bd2b0623b9562fb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14438, "upload_time": "2018-12-20T23:41:53", "url": "https://files.pythonhosted.org/packages/58/84/0eb16b8223a665daa5c8e53ee4326d1f62dce9009e4de65aacafdabd533f/affine-2.2.2.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "d4de5b107d3380822b7136936c4c1725", "sha256": "34b05b070d954c382e56f02c207a372d8a32621a87653cc30cdd31cd7f65799f" }, "downloads": -1, "filename": "affine-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4de5b107d3380822b7136936c4c1725", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15830, "upload_time": "2019-09-04T22:23:11", "url": "https://files.pythonhosted.org/packages/ac/a6/1a39a1ede71210e3ddaf623982b06ecfc5c5c03741ae659073159184cd3e/affine-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fae9487776088abe79778ec12a83833", "sha256": "2e045def1aa29e613c42e801a7e10e0b9bacfed1a7c6af0cadf8843530a15102" }, "downloads": -1, "filename": "affine-2.3.0.tar.gz", "has_sig": false, "md5_digest": "8fae9487776088abe79778ec12a83833", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13946, "upload_time": "2019-09-04T22:23:13", "url": "https://files.pythonhosted.org/packages/93/73/2467d77542b3125a2ebb9c1fccf19bc8621847178619984fabc24810a389/affine-2.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d4de5b107d3380822b7136936c4c1725", "sha256": "34b05b070d954c382e56f02c207a372d8a32621a87653cc30cdd31cd7f65799f" }, "downloads": -1, "filename": "affine-2.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4de5b107d3380822b7136936c4c1725", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15830, "upload_time": "2019-09-04T22:23:11", "url": "https://files.pythonhosted.org/packages/ac/a6/1a39a1ede71210e3ddaf623982b06ecfc5c5c03741ae659073159184cd3e/affine-2.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fae9487776088abe79778ec12a83833", "sha256": "2e045def1aa29e613c42e801a7e10e0b9bacfed1a7c6af0cadf8843530a15102" }, "downloads": -1, "filename": "affine-2.3.0.tar.gz", "has_sig": false, "md5_digest": "8fae9487776088abe79778ec12a83833", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13946, "upload_time": "2019-09-04T22:23:13", "url": "https://files.pythonhosted.org/packages/93/73/2467d77542b3125a2ebb9c1fccf19bc8621847178619984fabc24810a389/affine-2.3.0.tar.gz" } ] }