{ "info": { "author": "Dzhoshkun Ismail Shakir", "author_email": "d.shakir@ucl.ac.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Healthcare Industry", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Topic :: Multimedia :: Graphics", "Topic :: Multimedia :: Video :: Capture", "Topic :: Scientific/Engineering :: Image Recognition", "Topic :: Scientific/Engineering :: Medical Science Apps." ], "description": "endocal is a cross-platform, compact GUI application for the optical distortion calibration of fluid-immersed\nendoscopes. It uses the `OpenCV`_ camera calibration module.\n\nendocal was developed by Dzhoshkun I. Shakir as part of the `GIFT-Surg project`_ at the\n`Translational Imaging Group`_ in the `Centre for Medical Image Computing`_ at\n`University College London (UCL)`_.\n\n.. _`GIFT-Surg project`: http://www.gift-surg.ac.uk\n.. _`Translational Imaging Group`: http://cmictig.cs.ucl.ac.uk\n.. _`Centre for Medical Image Computing`: http://cmic.cs.ucl.ac.uk\n.. _`University College London (UCL)`: http://www.ucl.ac.uk\n\nFeatures\n--------\n\n* Lightweight, compact GUI application for optical distortion calibration of endoscopes\n* Command-line application for generating `ASCII DXF files`_ for use in calibration target fabrication (translated\\\n from Matlab scripts developed by Daniil I. Nikitichev)\n\nThe detailed changelog is available on `GitHub`_.\n\n.. _`ASCII DXF files`: http://www.autodesk.com/techpubs/autocad/acadr14/dxf/\n.. _`GitHub`: https://github.com/gift-surg/endocal/blob/master/CHANGELOG.md\n\nSystem requirements\n-------------------\n\n* `Python`_\n* `pip`_\n* `OpenCV`_ (installed with `Python`_ support)\n* For live calibration: a video source `supported by OpenCV`_ (see esp. the OpenCV tutorials related\n to video IO)\n* `PyYAML`_\n* `NumPy`_\n* So far endocal has been tested on the following operating systems:\n\n - Ubuntu 16.04.3 LTS 64-bit\n - Ubuntu 14.04.3 LTS 64-bit\n - elementary OS Freya 0.3.2 64-bit\n - macOS Sierra 10.12.6\n - OS X El Capitan 10.11.3\n - Windows 10 Professional 64-bit\n\n.. _`Python`: https://www.python.org/\n.. _`pip`: https://pip.pypa.io/en/stable/installing/\n.. _`supported by OpenCV`: http://docs.opencv.org/\n.. _`PyYAML`: https://github.com/yaml/pyyaml\n.. _`NumPy`: http://www.numpy.org/\n.. _`OpenCV`: http://opencv.org/\n\nInstallation\n------------\n\nInstalling endocal\n^^^^^^^^^^^^^^^^^^\n\n``pip install endocal``\n\nTesting your installation\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n* Launch the test application by running ``endocal-test``.\n* `This screenshot`_ shows you what to expect on launching the application.\n* To perform an optical distortion calibration, follow the instructions shown in red on top of the application window.\n* While acquiring calibration data, detected calibration pattern blobs will be emphasized with a virtual overlay as\n in `this acquisition-mode screenshot`_.\n* All data for each calibration will be saved in a human-readably time-stamped, uniquely-named folder within a root \n folder named ``tmp-sample_002`` created within the folder where the application was launched.\n For instance ``tmp-sample_002/2018-02-08-11-03-19-AHDHO`` for a calibration run on 8 February 2018 at 11:03 am.\n The saved data includes:\n\n * A `YAML`_ file named ``calibration.yml`` with the computed calibration parameters\n * Frames used for calibration saved as indexed image files, e.g. ``frame_009.jpg``\n\n* After performing a calibration, the application will automatically show the undistorted images in real time to the\n right of the application window as in `this undistortion-mode screenshot`_.\n\n.. _`This screenshot`: https://github.com/gift-surg/endocal/blob/master/endocal/res/screenshot-start.png\n.. _`this acquisition-mode screenshot`: https://github.com/gift-surg/endocal/blob/master/endocal/res/screenshot-detection.png\n.. _`YAML`: http://yaml.org/\n.. _`this undistortion-mode screenshot`: https://github.com/gift-surg/endocal/blob/master/endocal/res/screenshot-undistort.png\n\nUninstalling endocal\n^^^^^^^^^^^^^^^^^^^^\n\n``pip uninstall endocal``\n\nUsage\n-----\n\nCalibration\n^^^^^^^^^^^\n\n``endocal --help`` shows details of what input parameters are expected. Some examples are provided below:\n\n* Offline calibration by using all frames saved as indexed image files in a ``/data/offline`` folder:\n\n.. code-block:: sh\n\n endocal --pattern-specs 3 11 3 1 --output-folder ./calibration-results --input /data/offline/frame_%03d.jpg\n\n* Live calibration using a real-time video stream from an endoscope provided by a frame-grabber (assuming the \n frame-grabber is `mounted`_ as ``/dev/video0``):\n\n.. code-block:: sh\n\n endocal --input 0 --pattern-specs 3 11 3 1 --output-folder ./calibration-results\n\n.. _`mounted`: https://help.ubuntu.com/community/Webcam\n\n* Using a ``700 x 700`` sub-frame of the whole endoscopic video frame (whose full size is e.g. ``1920 x 1080``):\n\n.. code-block:: sh\n\n endocal --input 0 --pattern-specs 3 11 3 1 --output-folder ./calibration-results --roi 620 200 700 700\n\nASCII DXF file generation\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n``dxf --help`` shows details of what input parameters are expected.\n\nFor instance to generate an asymmetric grid of circles each with a diameter of ``1 mm`` to be etched by a laser\ncutter with a beam width of ``45 \u03bcm`` (microns):\n\n.. code-block:: sh\n\n dxf --laser-beam-width 45 --diameter 1 --output-file output.dxf\n\nHere the grid is saved to file ``output.dxf`` and the corresponding (ellipse) legend to ``output-legend.dxf`` (legend\nfilename always inferred from main DXF filename).\n\nTroubleshooting\n^^^^^^^^^^^^^^^\n\nPlease check out `these hints`_ in case you encounter any issues with endocal.\n\n.. _`these hints`: https://github.com/gift-surg/endocal/blob/master/doc/issues.md\n\nLicensing and copyright\n-----------------------\n\nCopyright (c) 2016, `University College London`_. endocal is available as free open-source software under a\nBSD 3-Clause Licence.\n\n.. _`University College London`: http://www.ucl.ac.uk\n\nAcknowledgements\n----------------\n\nThis work was supported through an Innovative Engineering for Health award by the `Wellcome Trust`_\n[WT101957], the `Engineering and Physical Sciences Research Council (EPSRC)`_ [NS/A000027/1] and a\n`National Institute for Health Research`_ Biomedical Research Centre `UCLH`_/UCL High Impact Initiative.\n\n\n.. _`National Institute for Health Research`: http://www.nihr.ac.uk\n.. _`UCLH`: http://www.uclh.nhs.uk\n.. _`Engineering and Physical Sciences Research Council (EPSRC)`: http://www.epsrc.ac.uk\n.. _`Wellcome Trust`: http://www.wellcome.ac.uk\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gift-surg/endocal", "keywords": "optical distortion calibration,endoscope,endoscopy,medical imaging,image processing,biomedical engineering,medical physics,image-guided interventions", "license": "BSD-3-Clause", "maintainer": "", "maintainer_email": "", "name": "endocal", "package_url": "https://pypi.org/project/endocal/", "platform": "", "project_url": "https://pypi.org/project/endocal/", "project_urls": { "Homepage": "https://github.com/gift-surg/endocal" }, "release_url": "https://pypi.org/project/endocal/18.2.13/", "requires_dist": [ "PyYAML", "numpy" ], "requires_python": "", "summary": "A cross-platform, compact GUI application for the optical distortion calibration of fluid-immersed endoscopes.", "version": "18.2.13" }, "last_serial": 3579488, "releases": { "16.7": [ { "comment_text": "", "digests": { "md5": "58c85adda594bf24b209119faf3131db", "sha256": "d4b0f8efbb58b53fce4ce5b7bc163c5581da68c39ccd7df12ac2da6b56d58b64" }, "downloads": -1, "filename": "endocal-16.7-py2-none-any.whl", "has_sig": false, "md5_digest": "58c85adda594bf24b209119faf3131db", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2876464, "upload_time": "2016-07-19T13:42:36", "url": "https://files.pythonhosted.org/packages/88/b8/92b7969e49946cd9a0026b0f80a3d3c4e32cceb75a4b6816feac459dc537/endocal-16.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2caced1c85b3d6ea221aec4d8185709a", "sha256": "03c2834e7d432fe973af0bbb5de608bc203af47cae5d554f57c5cdd7785f9dcb" }, "downloads": -1, "filename": "endocal-16.7.tar.gz", "has_sig": false, "md5_digest": "2caced1c85b3d6ea221aec4d8185709a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1442389, "upload_time": "2016-07-19T13:42:43", "url": "https://files.pythonhosted.org/packages/61/aa/cb4213db672425fd324e3b350966ae09fd2fa6aa2c153f73e300c481bfc0/endocal-16.7.tar.gz" } ], "16.7.22": [ { "comment_text": "", "digests": { "md5": "142e947f049f74dba4860280f1d908c0", "sha256": "50647237d0f3bb44c4743bb175ca57ba626948a1893227f22aea58934dfea139" }, "downloads": -1, "filename": "endocal-16.7.22-py2-none-any.whl", "has_sig": false, "md5_digest": "142e947f049f74dba4860280f1d908c0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2885291, "upload_time": "2016-07-22T10:44:52", "url": "https://files.pythonhosted.org/packages/b8/02/b58caada237080d72b238fb1b9e235f01c80220374dd0a6d0de3e4324f88/endocal-16.7.22-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a641c562a301f0761a6c5c8fe4d15f03", "sha256": "4a2719cae0ee7c980e5c03b4c5f7cfe24cdc0b80885443034119cfff472ccba6" }, "downloads": -1, "filename": "endocal-16.7.22.tar.gz", "has_sig": false, "md5_digest": "a641c562a301f0761a6c5c8fe4d15f03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1444869, "upload_time": "2016-07-22T10:44:58", "url": "https://files.pythonhosted.org/packages/03/5c/1cd4416d83a4d5d8774a11237742b5889fbf93daef7dccbfdb5f27a8a6db/endocal-16.7.22.tar.gz" } ], "16.7.22rc1": [ { "comment_text": "", "digests": { "md5": "98c7aabcff9e7f5d2b865e00aa41b276", "sha256": "744da950195f88b8da85c51620ea6858b2995c3d657173c383d1997a2a08f0f9" }, "downloads": -1, "filename": "endocal-16.7.22rc1-py2-none-any.whl", "has_sig": false, "md5_digest": "98c7aabcff9e7f5d2b865e00aa41b276", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2885345, "upload_time": "2016-07-22T10:36:30", "url": "https://files.pythonhosted.org/packages/e6/29/badbda8c210c2d926ba4dd76d3226dbb292f9acd233386049c1054553507/endocal-16.7.22rc1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33d1a2b9ba9278fcd1e2b847d68c950f", "sha256": "e33ca2105a09241093c33da99bc8cbb072ed5ca2aabbd9d8dad7893ba6e420d4" }, "downloads": -1, "filename": "endocal-16.7.22rc1.tar.gz", "has_sig": false, "md5_digest": "33d1a2b9ba9278fcd1e2b847d68c950f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1444917, "upload_time": "2016-07-22T10:36:43", "url": "https://files.pythonhosted.org/packages/d9/ed/e0c1912075c2c5e2900e2533d3397df6bf886445f0d8141342ac97dd638d/endocal-16.7.22rc1.tar.gz" } ], "16.7rc1": [ { "comment_text": "", "digests": { "md5": "e53f54383aaa02137fbcd0cac4b73217", "sha256": "734c5c7f398c4aae7ec2f9fa2472985516dbe374185076b5c4760f802868ff11" }, "downloads": -1, "filename": "endocal-16.7rc1-py2-none-any.whl", "has_sig": false, "md5_digest": "e53f54383aaa02137fbcd0cac4b73217", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2876492, "upload_time": "2016-07-19T13:29:14", "url": "https://files.pythonhosted.org/packages/c9/91/30b7df8bb900f46cb2fce1b7e826bab086561bf3c777584bd7dbd7b3849b/endocal-16.7rc1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7939f3ae1faf07a1cb3264c026ea0464", "sha256": "5333e984841236db700bd48139d494b121f3280a2f68a70bcd4d9b5c3e3082a9" }, "downloads": -1, "filename": "endocal-16.7rc1.tar.gz", "has_sig": false, "md5_digest": "7939f3ae1faf07a1cb3264c026ea0464", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1442409, "upload_time": "2016-07-19T13:29:19", "url": "https://files.pythonhosted.org/packages/b9/14/a1c5b463b768968e895538fc115d294e7374757f13fa6d4bc30a88744256/endocal-16.7rc1.tar.gz" } ], "16.8.8": [ { "comment_text": "", "digests": { "md5": "147ff991f06410de8bc5cd187bfcb40d", "sha256": "d28f3be43d7f7f76f83ee5f94f91421ede096af038c70cef8c9b355902af4db6" }, "downloads": -1, "filename": "endocal-16.8.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "147ff991f06410de8bc5cd187bfcb40d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1445522, "upload_time": "2016-08-08T14:45:49", "url": "https://files.pythonhosted.org/packages/45/e8/a39a8b211ed17a379f0d09eaffed87ec11ebc70868209e133ffda6b5ab47/endocal-16.8.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a3a176eeffc499dc861e88256aae449", "sha256": "2b3ef63eac61aab975c53689f20648761b2105382308cbfa0628f91b6ca14802" }, "downloads": -1, "filename": "endocal-16.8.8.tar.gz", "has_sig": false, "md5_digest": "6a3a176eeffc499dc861e88256aae449", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1449025, "upload_time": "2016-08-08T14:45:53", "url": "https://files.pythonhosted.org/packages/1b/c0/026891ed10a17056684f2e6649ecc87b524a95ddff7f49e5453c406e07c0/endocal-16.8.8.tar.gz" } ], "16.8.8rc1": [ { "comment_text": "", "digests": { "md5": "cea7bf83f9a7d8d1512c3f2e665e4805", "sha256": "bfe2bd5cb8e8a3bcaebdc8d3ddc59b54233346b2cb05bc7f9c64664f733baab9" }, "downloads": -1, "filename": "endocal-16.8.8rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cea7bf83f9a7d8d1512c3f2e665e4805", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1448548, "upload_time": "2016-08-08T11:10:22", "url": "https://files.pythonhosted.org/packages/eb/9c/f16bdd6e41a54700db31ec010af46818ca5c0c0f45d565c90abb26d3d684/endocal-16.8.8rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1b01fa1ef4bae7731ba46e88a7d34c5", "sha256": "710a86495b74dcf0761fd11a1b598ac3165dbbc42799d6ee82f72c513285eeab" }, "downloads": -1, "filename": "endocal-16.8.8rc1.tar.gz", "has_sig": false, "md5_digest": "b1b01fa1ef4bae7731ba46e88a7d34c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1447966, "upload_time": "2016-08-08T11:10:27", "url": "https://files.pythonhosted.org/packages/73/76/0d62ecd546b88df63dd0316d481d5322c41e055727dc0bd65ca9efbf60cd/endocal-16.8.8rc1.tar.gz" } ], "16.8.8rc2": [ { "comment_text": "", "digests": { "md5": "68cb492a8469243dea427b8efd34ec24", "sha256": "018903db6c1761a6e3b2bf4d206a8ee18edac807f0d89b351020a638681b9544" }, "downloads": -1, "filename": "endocal-16.8.8rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "68cb492a8469243dea427b8efd34ec24", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1448640, "upload_time": "2016-08-08T11:34:04", "url": "https://files.pythonhosted.org/packages/db/d2/0aac1b1de49b25533eba9ecd5ecaf88c3eb6776232a4b27beb52d62fe156/endocal-16.8.8rc2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72a28cba0027749aacc019bbb0233b06", "sha256": "34dcd5bd83d93d99df752caf7d5ab7473570843816b993b9d49c4e725d4726dc" }, "downloads": -1, "filename": "endocal-16.8.8rc2.tar.gz", "has_sig": false, "md5_digest": "72a28cba0027749aacc019bbb0233b06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1448011, "upload_time": "2016-08-08T11:34:09", "url": "https://files.pythonhosted.org/packages/9c/e0/d66403e40f442e569be206085ab7eaed3109dfe2d682c6214ed8383f4953/endocal-16.8.8rc2.tar.gz" } ], "16.8.8rc3": [ { "comment_text": "", "digests": { "md5": "4ff2ceb3c212053f71a9a583a5818775", "sha256": "03afc82a8be7ba312fbfd5c86f22a7be56ac8dce0c6b0374cba81069ae8f6167" }, "downloads": -1, "filename": "endocal-16.8.8rc3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ff2ceb3c212053f71a9a583a5818775", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1445622, "upload_time": "2016-08-08T13:57:22", "url": "https://files.pythonhosted.org/packages/1d/12/0ce2ddaf27105e79679b16a9de10bbe5b65214a29e6fb67645832482f87e/endocal-16.8.8rc3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fed17d25f0a5e9fdb8535ad98866487", "sha256": "8d433a12b0570c3173550ce194295e4e63b76378f33321588e7c8592eeff29d8" }, "downloads": -1, "filename": "endocal-16.8.8rc3.tar.gz", "has_sig": false, "md5_digest": "8fed17d25f0a5e9fdb8535ad98866487", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1447464, "upload_time": "2016-08-08T13:57:27", "url": "https://files.pythonhosted.org/packages/78/db/b9faa6a3b4fd6b754b11d398c5410a57b796465f5ba28d89367f0b4ab64e/endocal-16.8.8rc3.tar.gz" } ], "16.8.8rc4": [ { "comment_text": "", "digests": { "md5": "886cc23ac47b70242cce12058827c272", "sha256": "864024f6cbd4a66d6dbd90dde02f106502354dfcf7f784ff6e4df0afca92c742" }, "downloads": -1, "filename": "endocal-16.8.8rc4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "886cc23ac47b70242cce12058827c272", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1445622, "upload_time": "2016-08-08T14:03:28", "url": "https://files.pythonhosted.org/packages/6b/48/5b5cccdc3e3d5214bdb3fd27a4a6618f791ceb012b433c6c3258a8613eb8/endocal-16.8.8rc4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e1ae13377140c7c41e9edfe46f04ce0", "sha256": "35f23c28992500feba95d8e5eb15ab93d941312688ee17ad3415d51d9de161f2" }, "downloads": -1, "filename": "endocal-16.8.8rc4.tar.gz", "has_sig": false, "md5_digest": "8e1ae13377140c7c41e9edfe46f04ce0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1447478, "upload_time": "2016-08-08T14:03:32", "url": "https://files.pythonhosted.org/packages/1d/b0/709d5dc00f032b0a8c7e705a32be03c85f2a7011a3c0ab5318b2b82c9ade/endocal-16.8.8rc4.tar.gz" } ], "16.8.8rc5": [ { "comment_text": "", "digests": { "md5": "1443a3fb95ed690f805f19d3486bce21", "sha256": "9bcac2d5c12242324ec2a6fb2fc10e06583317d391d9dd2f11c96e7a984a4da0" }, "downloads": -1, "filename": "endocal-16.8.8rc5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1443a3fb95ed690f805f19d3486bce21", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1445570, "upload_time": "2016-08-08T14:39:50", "url": "https://files.pythonhosted.org/packages/66/99/6043e12d71ace61fa1b14f1bf331b4484b54740db44fe2bd4e3f55bc332b/endocal-16.8.8rc5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b47095271618ed3d182a0a6e043fc7b", "sha256": "8ec3a937a2304a8c7e08cb5a9a0965d1f566ddc6343430337cf20151a1e94edf" }, "downloads": -1, "filename": "endocal-16.8.8rc5.tar.gz", "has_sig": false, "md5_digest": "3b47095271618ed3d182a0a6e043fc7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1449065, "upload_time": "2016-08-08T14:39:53", "url": "https://files.pythonhosted.org/packages/e4/2b/0294c50827d2af41da7f04df74a6f7d70a1f9ec4fb9ba515479be6008399/endocal-16.8.8rc5.tar.gz" } ], "18.2.13": [ { "comment_text": "", "digests": { "md5": "fb9d4652f230d0862036bbecac3b03d6", "sha256": "5dacf1bc3340f5295e74dc01b57fb5d79cce15f6d77e8d3b119f1255eef97482" }, "downloads": -1, "filename": "endocal-18.2.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fb9d4652f230d0862036bbecac3b03d6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5453318, "upload_time": "2018-02-13T20:00:22", "url": "https://files.pythonhosted.org/packages/df/19/6a39110dee6a5684c12210b18876731179ec28792f6d4f9857e79d1e1db6/endocal-18.2.13-py2.py3-none-any.whl" } ], "18.2.13.dev0": [ { "comment_text": "", "digests": { "md5": "e7169de89957080286eba2964765f302", "sha256": "e69363e864ef05e89f15ef66e0cb4a980ff2c4473d051a306961b47761937754" }, "downloads": -1, "filename": "endocal-18.2.13.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e7169de89957080286eba2964765f302", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5453309, "upload_time": "2018-02-13T14:35:09", "url": "https://files.pythonhosted.org/packages/25/6e/c5280ac9626d484b2e3efc97de0ef77df76086987caddbac4d5d0ce709ea/endocal-18.2.13.dev0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fb9d4652f230d0862036bbecac3b03d6", "sha256": "5dacf1bc3340f5295e74dc01b57fb5d79cce15f6d77e8d3b119f1255eef97482" }, "downloads": -1, "filename": "endocal-18.2.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fb9d4652f230d0862036bbecac3b03d6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5453318, "upload_time": "2018-02-13T20:00:22", "url": "https://files.pythonhosted.org/packages/df/19/6a39110dee6a5684c12210b18876731179ec28792f6d4f9857e79d1e1db6/endocal-18.2.13-py2.py3-none-any.whl" } ] }