{ "info": { "author": "David Caron", "author_email": "dcaron05@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython" ], "description": "\n# pclpy: PCL for python\n\n[![PyPI](https://img.shields.io/pypi/v/pclpy.svg)](https://pypi.org/project/pclpy/)\n[![PyPI Python version](https://img.shields.io/pypi/pyversions/pclpy.svg)](https://pypi.org/project/pclpy/)\n\nPython bindings for the Point Cloud Library (PCL).\nGenerated from headers using CppHeaderParser and pybind11.\n\n__This library is in active development, the api is likely to change.\nThe included modules do work, but tests are incomplete, and corner\ncases are still common.__\n\nOnly Windows and python 3.6 x64 are supported at the moment.\n\nContributions, issues, comments are welcome!\n\nGithub repository: https://www.github.com/davidcaron/pclpy\n\nPypi: https://pypi.org/project/pclpy/\n\n## Motivation\nMany other python libraries tried to bind PCL.\nThe most popular one being python-pcl, which uses Cython.\nWhile Cython is really powerful, binding C++ templates isn't one of\nits strenghts (and PCL uses templates heavily).\nThe result for python-pcl is a lot of code repetition, which is hard\nto maintain and to add features to, and incomplete bindings of PCL's classes\nand point types.\n\nUsing pybind11, we use C++ directly. Templates, boost::smart_ptr and\nthe buffer protocol are examples of things that are simpler to implement.\n\nThe results so far are very promising. A large percentage of PCL is covered.\n\n## Installing\n\n#### Windows with python 3.6 x64\n`pip install pclpy`\n\nWhen pip installs the project, `pclpy_dependencies` is installed as a requirement.\nThis simple package contains only the PCL dlls required on Windows so you don't have\nto download a PCL release or build it.\n\n#### Linux\n\nNot working for now. Contributions are welcome!\n\n## Features\n- All point types are implemented (those specified by the default msvc compile flags)\n- You can view point cloud data as numpy arrays using `cloud.x` or `cloud.xyz`\n- boost::shared_ptr is handled by pybind11 so it's completely abstracted at the python level\n- laspy integration for reading/writing las files\n\n## Example\n\nYou can use either a high level, more pythonic api, or the wrapper over the PCL api.\nThe wrapper is meant to be as close as possible to the original PCL C++ api.\n\nHere is how you would use the library to process Moving Least Squares.\nSee the PCL documentation: http://pointclouds.org/documentation/tutorials/resampling.php\n\nUsing the higher level api:\n\n```python\nimport pclpy\n\n# read a las file\npoint_cloud = pclpy.read(\"street.las\", \"PointXYZRGBA\")\n# compute mls\noutput = point_cloud.moving_least_squares(search_radius=0.05, compute_normals=True, num_threads=8)\n```\n\nOr the wrapper over the PCL api:\n\n```python\nimport pclpy\nfrom pclpy import pcl\n\npoint_cloud = pclpy.read(\"street.las\", \"PointXYZRGBA\")\nmls = pcl.surface.MovingLeastSquaresOMP.PointXYZRGBA_PointNormal()\ntree = pcl.search.KdTree.PointXYZRGBA()\nmls.setSearchRadius(0.05)\nmls.setPolynomialFit(False)\nmls.setNumberOfThreads(12)\nmls.setInputCloud(point_cloud)\nmls.setSearchMethod(tree)\nmls.setComputeNormals(True)\noutput = pcl.PointCloud.PointNormal()\nmls.process(output)\n```\n\nYou can see the wrapper is very close to the C++ version:\n\n``` c++\n// C++ version\n\npcl::PointCloud::Ptr point_cloud (new pcl::PointCloud ());\npcl::io::loadPCDFile (\"bunny.pcd\", *point_cloud);\npcl::MovingLeastSquaresOMP mls;\npcl::search::KdTree::Ptr tree (new pcl::search::KdTree);\nmls.setSearchRadius (0.05);\nmls.setPolynomialFit (false);\nmls.setNumberOfThreads (12);\nmls.setInputCloud (point_cloud);\nmls.setSearchMethod (tree);\nmls.setComputeNormals (true);\npcl::PointCloud output;\nmls.process (output);\n```\n\n## Modules\n- 2d\n- common\n- geometry\n- features\n- filters\n- io\n- kdtree\n- keypoints\n- octree\n- recognition\n- sample_consensus\n- search\n- segmentation\n- stereo\n- surface\n- tracking\n- visualization\n#### These modules are skipped for now\n- ml\n- people\n- outofcore\n- registration\n- every module not in the PCL Windows release (gpu, cuda, etc.)\n\n## Not Implemented\n(see [github issues](https://github.com/davidcaron/pclpy/issues)\nand the _what to skip_ section in `generators/config.py`)\n\n## To build\n#### Windows with python 3.6 x64\n\n- Download PCL release for Windows (PCL-1.8.1-AllInOne-msvc2017-win64.exe) at:\n https://github.com/PointCloudLibrary/pcl/releases/download/pcl-1.8.1/PCL-1.8.1-AllInOne-msvc2017-win64.exe\n- PCL_ROOT environment variable must be set to the installation directory of PCL\n- About requirements:\n - Install pybind11 from github (2.3dev version) it includes a necessary bug fix\n - Install CppHeaderParser from https://github.com/davidcaron/CppHeaderParser (specific bug fixes)\n- Generate modules using `generate_pybind11_bindings.py`\n- There is a missing file from the PCL release that you should get from the github repo: 2d/impl/kernel.hpp\n- Must be built with x64 version of cl.exe because of the large memory usage (see workaround in setup.py)\n- python setup.py install\n- Useful setup.py arguments:\n - --msvc-mp-build should enable a multiprocessed build\n - --msvc-no-code-link makes linking much faster (do not use for releases, see setup.py description)\n - --use-clcache to cache msvc builds using clcache (must be installed)\n - --debug to build in debug mode\n\n## Roadmap\n- Wrap as much of PCL as reasonably possible\n- More tests\n- CI on Appveyor\n- Make it work on Linux\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.github.com/davidcaron/pclpy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pclpy", "package_url": "https://pypi.org/project/pclpy/", "platform": "", "project_url": "https://pypi.org/project/pclpy/", "project_urls": { "Homepage": "https://www.github.com/davidcaron/pclpy" }, "release_url": "https://pypi.org/project/pclpy/0.11.0/", "requires_dist": [ "laspy", "numpy", "pclpy-dependencies (>=0.2.1)" ], "requires_python": "==3.6.*", "summary": "Python bindings for the Point Cloud Library", "version": "0.11.0" }, "last_serial": 4205039, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "24b8b442dbcfddafa85c437212ae2b2a", "sha256": "18b452ad0b727165568156e6c555edc14cb89a966cb1b265c88b3f48d7d9a009" }, "downloads": -1, "filename": "pclpy-0.10.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "24b8b442dbcfddafa85c437212ae2b2a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 10984502, "upload_time": "2018-08-24T14:57:57", "url": "https://files.pythonhosted.org/packages/a9/d1/202364868a522c4ca7ff584f803b76973b0b72dff39be5b9e5145f9f38b2/pclpy-0.10.0-cp36-cp36m-win_amd64.whl" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "18324f46c9a5bec532dc81408e6e282c", "sha256": "0dbc082e86723a267fe423bda65866783b4664a8e0b1b8d6305df8c839a38b85" }, "downloads": -1, "filename": "pclpy-0.11.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "18324f46c9a5bec532dc81408e6e282c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 11250621, "upload_time": "2018-08-24T20:29:11", "url": "https://files.pythonhosted.org/packages/e1/09/7f174c4256e56122eec468782aa3a5cc3bd9f8f6540635efa19d10d7897c/pclpy-0.11.0-cp36-cp36m-win_amd64.whl" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "f8335d564f5cbc7eef6e44f1bf157ad9", "sha256": "249838329b1023ed98a7d6ba3a05f1aac154b8c560746cb65e52a51204cf9b5b" }, "downloads": -1, "filename": "pclpy-0.3.10-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "f8335d564f5cbc7eef6e44f1bf157ad9", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14136814, "upload_time": "2018-04-24T18:50:15", "url": "https://files.pythonhosted.org/packages/a5/e3/e8572bce4e8522c2a9ccf063c76ff6c4fead91493f2fa5b99112c7c8d66b/pclpy-0.3.10-cp36-cp36m-win_amd64.whl" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "b5a9ead95e34a8c1b273d57780070404", "sha256": "7f4a51911f2f7bf701a928f35d7e8ea5c08561021aa4b2e94300423bea4b4fc9" }, "downloads": -1, "filename": "pclpy-0.3.5-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "b5a9ead95e34a8c1b273d57780070404", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14119295, "upload_time": "2018-04-20T20:34:20", "url": "https://files.pythonhosted.org/packages/71/a8/1dc857871d97671869fd28d6c2434c6e134636c3b466359afcd1bd7d2183/pclpy-0.3.5-cp36-cp36m-win_amd64.whl" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "024bbf357de578b9c88428a76802fe22", "sha256": "1fbabe75142d8bc520d600f340087008a861603159659e933ea9fba0c36be45b" }, "downloads": -1, "filename": "pclpy-0.3.8-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "024bbf357de578b9c88428a76802fe22", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14119389, "upload_time": "2018-04-23T17:43:57", "url": "https://files.pythonhosted.org/packages/48/95/ecf63ccccb8f36abda63b82f769448c039856710b1635539f6d4f6cc448b/pclpy-0.3.8-cp36-cp36m-win_amd64.whl" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "3cae9f8b1669b6af756acf3c10799f20", "sha256": "21c02c54d1224b30f77d0cd05455cd441a95b5f8ff8363d7f48fa8b13b77bc7c" }, "downloads": -1, "filename": "pclpy-0.3.9-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "3cae9f8b1669b6af756acf3c10799f20", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12129150, "upload_time": "2018-04-23T20:03:45", "url": "https://files.pythonhosted.org/packages/df/64/b63c5e7c04f02ba0d00819deb38c56edb5ec04cdc78248b95a3895849060/pclpy-0.3.9-cp36-cp36m-win_amd64.whl" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "43de15a61678cef5d6698de4b745a29a", "sha256": "7680082cec8589a6b413d3dcf341753b6979530e131f2e3107a403bd1f908d8c" }, "downloads": -1, "filename": "pclpy-0.4.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "43de15a61678cef5d6698de4b745a29a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12175471, "upload_time": "2018-04-25T19:14:42", "url": "https://files.pythonhosted.org/packages/ef/28/d1b2969edfbbb5dacb7a494db6f7bc2e8cae8a073c370a1c0ae5002ada90/pclpy-0.4.0-cp36-cp36m-win_amd64.whl" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "b796781352a24aefda18e667c4feb516", "sha256": "314727e64fde1d533a48091772d35afa3174824255b8e33ff6070c6ec616e60f" }, "downloads": -1, "filename": "pclpy-0.4.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "b796781352a24aefda18e667c4feb516", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12102037, "upload_time": "2018-04-27T00:15:03", "url": "https://files.pythonhosted.org/packages/c7/dd/9721f1504f164b6ea5ae1e96d01541833f683674b39b7d7e96323276a9dd/pclpy-0.4.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "0493456aba14d223613e7ce4f1ae7b53", "sha256": "c2c12429d3ae45570b0a0a636b1b9574f536ec229019a63ac2fc9494cb840cde" }, "downloads": -1, "filename": "pclpy-0.5.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "0493456aba14d223613e7ce4f1ae7b53", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12107211, "upload_time": "2018-04-27T03:50:38", "url": "https://files.pythonhosted.org/packages/5a/dd/c61b730ebea7bf36fcf447c44cbf1dc86d9d1440f6c77b9618e9020142fd/pclpy-0.5.0-cp36-cp36m-win_amd64.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5bac400ed64fb3fff2d591f3bfd6b4dd", "sha256": "ad961b0c47470cd80b77f15757c318134056450bfdadccb87f8ea360034a6172" }, "downloads": -1, "filename": "pclpy-0.5.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "5bac400ed64fb3fff2d591f3bfd6b4dd", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12102080, "upload_time": "2018-04-27T03:58:13", "url": "https://files.pythonhosted.org/packages/0c/56/e001f52317a43b50a4759e0aa5629c638b0f380fda77c5b2cead4927cb18/pclpy-0.5.1-cp36-cp36m-win_amd64.whl" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "1410a5175a4b9258a0501c99c89ee2df", "sha256": "b720089c5767efb8bf3cedf2fc6c725a0b685e5089c62cea252e52a1f049bd45" }, "downloads": -1, "filename": "pclpy-0.5.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "1410a5175a4b9258a0501c99c89ee2df", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12102104, "upload_time": "2018-04-27T04:05:15", "url": "https://files.pythonhosted.org/packages/65/bb/21c50656425d40d2449d108a7589af454af1b68b6edb57b11827f3e3a0ae/pclpy-0.5.2-cp36-cp36m-win_amd64.whl" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "2f85007b978c158b7df3b6829c24b9e7", "sha256": "c124ba75258a1647fdd1501b04aebef741f651a219c9670604b8f6438f9ee33f" }, "downloads": -1, "filename": "pclpy-0.5.3-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "2f85007b978c158b7df3b6829c24b9e7", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14221304, "upload_time": "2018-04-27T15:41:30", "url": "https://files.pythonhosted.org/packages/8c/ae/d122d656c14567cbd48d7c76c8d3967d70b2ea01ee359bcf3ecf521c0dd8/pclpy-0.5.3-cp36-cp36m-win_amd64.whl" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "ce080438a0b18e0e33be8fa403305a4b", "sha256": "6a86faf3378edbdef791dc166377b643893b1899de2770170e91a051a5f0e9b5" }, "downloads": -1, "filename": "pclpy-0.6.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "ce080438a0b18e0e33be8fa403305a4b", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14343530, "upload_time": "2018-05-04T19:34:36", "url": "https://files.pythonhosted.org/packages/48/20/5ba298b1134cbca1af9452bfba01fc60e984b546fde471477d12a371f458/pclpy-0.6.0-cp36-cp36m-win_amd64.whl" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "6000e7cb51933aa8c2beeba11b244c7d", "sha256": "cbb89b422d0be9c27b25ca21302d0ab54dbabc38ff305231766c7df185946ac4" }, "downloads": -1, "filename": "pclpy-0.6.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "6000e7cb51933aa8c2beeba11b244c7d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 14340456, "upload_time": "2018-05-04T19:39:20", "url": "https://files.pythonhosted.org/packages/d2/22/7cabfae4ef93f1c227aae7cc4cd4ddede7c6cf952f918b1ccb07c536dc17/pclpy-0.6.1-cp36-cp36m-win_amd64.whl" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "fcf93a80bd4732bbefb6f0f5c80e2ae9", "sha256": "6a996a682243301b71375dd28c9e3c386abfb7f9c17bb9cac0b8e3c48235ac3a" }, "downloads": -1, "filename": "pclpy-0.6.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "fcf93a80bd4732bbefb6f0f5c80e2ae9", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12207873, "upload_time": "2018-05-14T15:54:05", "url": "https://files.pythonhosted.org/packages/59/3b/b9e1aeb6485db5f649382df17707f2f6c07741c9a7ed3ab66d4cebc534d2/pclpy-0.6.2-cp36-cp36m-win_amd64.whl" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "12c7318c3c072102c35c402c8116066f", "sha256": "7a766db63835332d4399615bb62ca0c1b420b05f65a805de14ab3aba761fcbb3" }, "downloads": -1, "filename": "pclpy-0.6.3-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "12c7318c3c072102c35c402c8116066f", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12280396, "upload_time": "2018-05-24T19:44:49", "url": "https://files.pythonhosted.org/packages/ed/5c/79f2bf62f06f7c8b2ac2de003fb63079aa90fd1de15e4a5a1d97ceebbe1a/pclpy-0.6.3-cp36-cp36m-win_amd64.whl" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "2112d7bc54c9c6dee8190d46c306d7c1", "sha256": "bcf66c433e9d78588539c1db34dcb333db9c8c674a6d6a1f80326ab6bebc8478" }, "downloads": -1, "filename": "pclpy-0.7.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "2112d7bc54c9c6dee8190d46c306d7c1", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 12268369, "upload_time": "2018-05-25T23:00:35", "url": "https://files.pythonhosted.org/packages/8f/85/dbf6ae5b7df3ae57fe355a023129e70afedec800f7debbf08505162b54ce/pclpy-0.7.0-cp36-cp36m-win_amd64.whl" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "cd85ab1eabbb49f35e495b6d62418399", "sha256": "e53136178aee20776cbff9a7824ff50d10e5d9ebbc0408fe1408dccc73eeca7e" }, "downloads": -1, "filename": "pclpy-0.8.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "cd85ab1eabbb49f35e495b6d62418399", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 9773665, "upload_time": "2018-05-31T20:42:07", "url": "https://files.pythonhosted.org/packages/f7/76/8bdaeebe84092603013efd8051bb7402fcf77490f2024e13988d970def1e/pclpy-0.8.0-cp36-cp36m-win_amd64.whl" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "b42a4e8377fd638540f0a8fe994c723a", "sha256": "fc8e61d89d3958bafc8b21d0c4fc85e889abffa9389878fdd1b1b2667c55fea8" }, "downloads": -1, "filename": "pclpy-0.8.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "b42a4e8377fd638540f0a8fe994c723a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 9773668, "upload_time": "2018-06-01T16:58:08", "url": "https://files.pythonhosted.org/packages/dc/2b/ac59f28cff52e0db1536fc2833bf54bcb51b4724a71d33d176e60cadaae3/pclpy-0.8.1-cp36-cp36m-win_amd64.whl" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "1d67be84403bc05cabd5541d787757c4", "sha256": "53f6b4f3216445557cda2f119130a3e4dccfd2fb22fa9f4e75aaa19c1e4cf237" }, "downloads": -1, "filename": "pclpy-0.8.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "1d67be84403bc05cabd5541d787757c4", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 9773677, "upload_time": "2018-06-12T14:10:15", "url": "https://files.pythonhosted.org/packages/b1/e1/9b6b5668d103ce7802ab831d0a4cba14b64f53c4f1942626e0cc063feb15/pclpy-0.8.2-cp36-cp36m-win_amd64.whl" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "4cae1e764d032048a89186abb0f87d8a", "sha256": "05d54c08f9b634aa4547a85d405008dd31c2bff65c25d103a40681b112a957a0" }, "downloads": -1, "filename": "pclpy-0.9.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "4cae1e764d032048a89186abb0f87d8a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 10772437, "upload_time": "2018-06-18T20:45:36", "url": "https://files.pythonhosted.org/packages/1d/7f/2c7b284009ebccd11c8edc9896d271e81d218028a888e8e2032b46b7c069/pclpy-0.9.0-cp36-cp36m-win_amd64.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18324f46c9a5bec532dc81408e6e282c", "sha256": "0dbc082e86723a267fe423bda65866783b4664a8e0b1b8d6305df8c839a38b85" }, "downloads": -1, "filename": "pclpy-0.11.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "18324f46c9a5bec532dc81408e6e282c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": "==3.6.*", "size": 11250621, "upload_time": "2018-08-24T20:29:11", "url": "https://files.pythonhosted.org/packages/e1/09/7f174c4256e56122eec468782aa3a5cc3bd9f8f6540635efa19d10d7897c/pclpy-0.11.0-cp36-cp36m-win_amd64.whl" } ] }