{ "info": { "author": "sthysel", "author_email": "sthysel@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3", "Topic :: Utilities" ], "description": "# Rakali (Version 0.0.11)\n\nRakali is a imaging library and video camera tool-set. It provides a number of\ncamera primitives to help with calibrating mono and stereo camera rigs, image\nprocessing and object detection. It also includes a number of pre-built tools to\nhelp with that.\n\nRakali makes use of many other imaging libraries and frameworks and is also intended\nto be used as a pedagogical resource for those.\n\n![Rakali by Pia Ravenari](https://raw.githubusercontent.com/sthysel/rakali/master/docs/pics/rakali.jpg)\n\n[Pia Ravenari](https://www.deviantart.com/ravenari)\n\nNamed after Hydromys chrysogaster, the Australian Otter\n\n# Provided tools\n\nRakali ships with a number of tools that assists working with mono and stereo\nvideo cameras.\n\n\n| Tool | Purpose |\n| --- | --- |\n| rakali-find-ipcameras | Discover IP cameras on the local LAN |\n| rakali-view | View live video stream |\n| rakali-view-stereo | View live stereo video stream |\n| rakali-find-chessboards | Find calibration images in live video feed |\n| rakali-find-chessboards-stereo | Find calibration images in live stereo video feed |\n| rakali-calibrate-pinhole | Calibrate a standard lens camera |\n| rakali-calibrate-fisheye | Calibrate a fish-eyed lens camera |\n| rakali-calibrate-fisheye-stereo | Calibrate a fish-eyed stereo rig |\n| rakali-undistort-pinhole | Correct standard lens camera live video feed |\n| rakali-undistort-fisheye | Correct fish-eye camera live video feed |\n| rakali-undistort-fisheye-image | Correct image provided by calibrated fish-eye camera |\n| rakali-split-stereo-feed | Split recorded stereo view feeds into left and right eye views |\n| rakali | Image processing library examplar |\n\n\n## rakali-find-ipcameras\n\nScan local LAN for IP cameras by vendor and service.\n\n`$ rakali-find-ipcameras cams`\n\n```\nUsage: rakali-find-ipcameras [OPTIONS] COMMAND [ARGS]...\n\n Discover IP cameras on local LAN\n\nOptions:\n --version Show the version and exit.\n --help Show this message and exit.\n\nCommands:\n cams Discover local IP cameras using vendor name\n service Scanning for video feed services\n```\n\nTo scan for cameras, do: `$ rakali-find-ipcameras cams`, the default is to search for axis models.\n\nWhich provides a list of discovered NVR's or cameras like so:\n\n```\nScanning 10.41.212.0/24 for axis cameras or NVRs\n['10.41.212.135', '10.41.212.147']\n```\n\n\n## rakali-view\n\nView live video feed from IP and USB cameras. IP cameras and NVR's that\nbroadcast their services over mDNS can be discovered using\n`rakali-find-ipcameras`.\n\n`$ rakali-view --help`\n\n```\nUsage: rakali-view [OPTIONS]\n\nOptions:\n --version Show the version and exit.\n -s, --source TEXT Video source, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default: http://axis-\n lab/axis-cgi/mjpg/video.cgi?&camera=2]\n --help Show this message and exit.\n```\n\nA simple single stream video player.\n\n![View](docs/pics/rakali-view.jpg)\n\n## rakali-find-chessboards\n\n![View](docs/pics/chessboard.jpg)\n\nFind checkerboard images in video feed for calibration purposes.\n\n`rakali-find-chessboards` will look for a chessboard patterns in the frame flow\nand save each frame containing a chessboard for batch processing during camera\ncalibration.\n\n`$ rakali-find-chessboards --help`\n\n```zsh\n\nUsage: rakali-find-chessboards [OPTIONS]\n\n Test each frame in the stream for the presence of a chess-board pattern. If found, save to the output folder\n\nOptions:\n --version Show the version and exit.\n -s, --source TEXT Video source, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default:\n http://axis-lab/axis-cgi/mjpg/video.cgi?&camera=1]\n -o, --output-folder TEXT Output folder for images containing a chessboard [default: ~/rakali/chessboards/]\n --chessboard-rows INTEGER Chessboard rows [default: 9]\n --chessboard-columns INTEGER Chessboard columns [default: 6]\n --help Show this message and exit.\n\n```\n\nThe process will drop calibration frames in the target folder like these:\n\n```\n$ tree ~/rakali/chessboards\n/home/thys/rakali/chessboards\n\u251c\u2500\u2500 00000.jpg\n\u251c\u2500\u2500 00001.jpg\n\u251c\u2500\u2500 00002.jpg\n\u251c\u2500\u2500 00003.jpg\n```\n\n\n## rakali-find-chessboards-stereo\n\n\nFind checkerboard images in stereo video feed for calibration purposes. It\noperates in the same way as `rakali-find-chessboards` but produces pairs of\nframes.\n\n`rakali-find-chessboards-stereo --help`\n\n```\nUsage: rakali-find-chessboards-stereo [OPTIONS]\n\n Find chessboard calibration images in both frames of the stereo pair\n\nOptions:\n --version Show the version and exit.\n -l, --left-eye TEXT Left eye, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default:\n http://axis-lab/axis-cgi/mjpg/video.cgi?&camera=1]\n -r, --right-eye TEXT Right eye, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default:\n http://axis-lab/axis-cgi/mjpg/video.cgi?&camera=2]\n -o, --output-folder TEXT Fetch image from URL [default: ~/rakali/stereo/chessboards/]\n --chessboard-rows INTEGER Chessboard rows [default: 9]\n --chessboard-columns INTEGER Chessboard columns [default: 6]\n --help Show this message and exit.\n```\n\n![View](docs/pics/stereo-chessboard.jpg)\n\n\n``` zsh\n$ tree ~/rakali/stereo/chessboards\n/home/thys/rakali/stereo/chessboards\n\u251c\u2500\u2500 left_00000.jpg\n\u251c\u2500\u2500 left_00001.jpg\n\u251c\u2500\u2500 left_00002.jpg\n\u251c\u2500\u2500 right_00000.jpg\n\u251c\u2500\u2500 right_00001.jpg\n\u251c\u2500\u2500 right_00002.jpg\n\n```\n\n\n## rakali-calibrate-pinhole\n\nCalibrate a video camera with a pinhole lens\n\n`$ rakali-calibrate-pinhole --help `\n\n```\nUsage: rakali-calibrate-pinhole [OPTIONS]\n\n Calibrate pinhole camera using chessboard frames captured earlier.\n\nOptions:\n --version Show the version and exit.\n -i, --input-folder TEXT Folder where chessboard images are stored [default: ~/rakali/chessboards/]\n --image-points-file TEXT Corner points data [default: image_points.npz]\n --calibration-file TEXT Camera calibration data [default: pinhole_calibration.npz]\n --chessboard-rows INTEGER Chessboard rows [default: 9]\n --chessboard-columns INTEGER Chessboard columns [default: 6]\n --square-size FLOAT Chessboard square size in m [default: 0.023]\n --salt INTEGER Seed value for random picking of calibration images from a large set [default: 888]\n --pick-size INTEGER Size of image set to use for calibration, picked from available set [default: 50]\n --help Show this message and exit.\n```\n\n\n## rakali-calibrate-fisheye\n\nCalibrate a video camera with a fish-eye lens using chessboard calibration\nimages captured using `rakali-find-chessboards`.\n\n`$ rakali-calibrate-fisheye --help`\n\n```\nUsage: rakali-calibrate-fisheye [OPTIONS]\n\n Calibrate fish-eye camera using chessboard frames captured earlier.\n\nOptions:\n --version Show the version and exit.\n -i, --input-folder TEXT Folder where chessboard images are stored [default: ~/rakali/chessboards/]\n --image-points-file TEXT Corner points data [default: image_points.npz]\n --calibration-file TEXT Camera calibration data [default: fisheye_calibration.npz]\n --chessboard-rows INTEGER Chessboard rows [default: 9]\n --chessboard-columns INTEGER Chessboard columns [default: 6]\n --square-size FLOAT Chessboard square size in m [default: 0.023]\n --salt INTEGER Seed value for random picking of calibration images from a large set [default: 888]\n --pick-size INTEGER Size of image set to use for calibration, picked from available set [default: 50]\n --cid TEXT Calibration ID to associate a calibration file with a device [default: fisheye]\n --help Show this message and exit.\n\n```\n\n\nExecuting `$ rakali-calibrate-fisheye` results:\n\n```\n$ rakali-calibrate-fisheye\nLoading previously computed image points from image_points.npz\nCalibrating on 50 objects...\nINFO:rakali.camera.fisheye:Saving fisheye calibration data to fisheye_calibration.npz\nDIM=(1920, 1080)\nK=np.array([[558.6421513930135, 0.0, 977.0871045041308], [0.0, 559.5579191046008, 493.7827965652395], [0.0, 0.0, 1.0]])\nD=np.array([[-0.018316232894576033], [0.002931049514785237], [-0.0022823146847841804], [0.00014813140230995043]])\nCalibration error: 0.8771782112164381\n```\n\nThe resulting calibration file contains the K and D matrixes and some metadata\n\n```json\n{\n \"D\": [\n [\n -0.018316232894576033\n ],\n [\n 0.002931049514785237\n ],\n [\n -0.0022823146847841804\n ],\n [\n 0.00014813140230995043\n ]\n ],\n \"K\": [\n [\n 558.6421513930135,\n 0.0,\n 977.0871045041308\n ],\n [\n 0.0,\n 559.5579191046008,\n 493.7827965652395\n ],\n [\n 0.0,\n 0.0,\n 1.0\n ]\n ],\n \"cid\": \"fisheye\",\n \"error\": 0.8771782112164381,\n \"image_size\": [\n 1920,\n 1080\n ],\n \"pick_size\": 50,\n \"salt\": 888,\n \"time\": 1553647761.7596939\n}\n```\n\n## rakali-calibrate-fisheye-stereo\n\n`rakali-calibrate-fisheye-stereo` uses a fixed set of previously captured chessboard images to calibrate a\nfisheye stereo camera rig. The calculated parameters are saved in a calibration file for use in image\nrectification.\n\n`$ rakali-calibrate-fisheye-stereo --help`\n\n``` zsh\nUsage: rakali-calibrate-fisheye-stereo [OPTIONS]\n\n Calibrate fish-eye stereo camera rig using chessboard frames captured earlier.\n\nOptions:\n --version Show the version and exit.\n -i, --input-folder TEXT Folder where chessboard images are stored [default: ~/rakali/stereo/chessboards/]\n --left-image-points-file TEXT Left Corner points data [default: left_image_points.json]\n --right-image-points-file TEXT Right Corner points data [default: right_image_points.json]\n --calibration-file TEXT Stereo Camera calibration data [default: fisheye_stereo_calibration.json]\n --chessboard-rows INTEGER Chessboard rows [default: 9]\n --chessboard-columns INTEGER Chessboard columns [default: 6]\n --square-size FLOAT Chessboard square size in m [default: 0.023]\n --salt INTEGER Seed value for random picking of calibration images from a large set [default: 888]\n --pick-size INTEGER Size of image set to use for calibration, picked from available set [default: 50]\n --cid TEXT Calibration ID to associate a calibration file with a device [default: fisheye]\n --prefilter / --no-prefilter Prefilter images [default: True]\n --help Show this message and exit.\n```\n\n```zsh\n....\nImage /home/thys/rakali/stereo/chessboards/left_00088.jpg OK\nImage /home/thys/rakali/stereo/chessboards/left_00058.jpg OK\nImage /home/thys/rakali/stereo/chessboards/right_00238.jpg OK\nImage /home/thys/rakali/stereo/chessboards/left_00122.jpg OK\nLoading previously computed image points from left_image_points.json\nCalibrating on 50 objects...\nLoading previously computed image points from right_image_points.json\nCalibrating on 50 objects...\nCalibrate Fisheye Stereo camera using pre-calibrated values\nDIM=(1920, 1080)\nleft calibration\nK=np.array([[552.7233750094179, 0.0, 948.2959591699556], [0.0, 554.6925141069631, 548.3575557665413], [0.0, 0.0, 1.0]])\nD=np.array([[-0.05136306776237411], [0.0959513318929465], [-0.09081590588179426], [0.028414418435600244]])\nCalibration error: 0.5128009096414867\nright calibration\nK=np.array([[552.7233750094177, 0.0, 948.2959591699567], [0.0, 554.6925141069636, 548.3575557665405], [0.0, 0.0, 1.0]])\nD=np.array([[-0.051363067762376646], [0.09595133189294996], [-0.09081590588179408], [0.028414418435599085]])\nCalibration error: 0.46991635076102695\n\n```\n\n\n## rakali-undistort-pinhole\n\nCorrect video feed from calibrated standard pinhole camera \n\n`$ rakali-undistort-pinhole --help`\n\n```\nUsage: rakali-undistort-pinhole [OPTIONS]\n\n Undistort live feed from pinhole model type camera\n\nOptions:\n --version Show the version and exit.\n -s, --source TEXT Video source, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default:\n http://axis-lab/axis-cgi/mjpg/video.cgi?&camera=1]\n --calibration-file TEXT Camera calibration data [default: pinhole_calibration.npz]\n --help Show this message and exit.\n```\n\n## rakali-undistort-fisheye\n\nCorrect video feed from calibrated fisheye-lens camera \n\n`$ rakali-undistort-fisheye --help`\n\n```\nUsage: rakali-undistort-fisheye [OPTIONS]\n\n Undistort live video feed from fish-eye lens camera\n\nOptions:\n --version Show the version and exit.\n -s, --source TEXT Video source, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default:\n http://axis-lab/axis-cgi/mjpg/video.cgi?&camera=1]\n --calibration-file PATH Camera calibration data [default: fisheye_calibration.npz]\n -b, --balance FLOAT Balance value 0.0 ~30% pixel loss, 1.0 no loss [default: 1.0]\n --help Show this message and exit.\n\n```\n\n`$ rakali-undistort-fisheye`\n\n![View](docs/pics/fisheye-undistort-balance1.jpg)\n\n`$ rakali-undistort-fisheye -b 0.5`\n\n![View](docs/pics/fisheye-undistort-balance0.5.jpg)\n\n\n`$ rakali-undistort-fisheye -b 0`\n\n![View](docs/pics/fisheye-undistort-balance0.0.jpg)\n\n\n## rakali-undistort-fisheye-image \n\n`$ rakali-undistort-fisheye-image --help`\n\n``` zsh\nUsage: rakali-undistort-fisheye-image [OPTIONS] IMAGE_PATH\n\n Rectify a image taken with a fish-eye lens camera using calibration parameters\n\nOptions:\n --version Show the version and exit.\n --calibration-file PATH Camera calibration data [default: fisheye_calibration.json; required]\n -b, --balance FLOAT Balance value 0.0 ~30% pixel loss, 1.0 no loss [default: 1.0]\n -s, --scale FLOAT Scale image [default: 0.5]\n --help Show this message and exit.\n```\n\n`$ rakali-undistort-fisheye-image ~/rakali/chessboards/00000.jpg`\n\n![View](docs/pics/fisheye-undistort-file.jpg)\n\n\n## rakali-view-stereo\n\nView live feed from stereo camera rig\n\n`$ rakali-view-stereo --help `\n\n```\nUsage: rakali-view-stereo [OPTIONS]\n\nOptions:\n --version Show the version and exit.\n -l, --left-eye TEXT Left eye, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default: http://axis-\n lab/axis-cgi/mjpg/video.cgi?&camera=1]\n -r, --right-eye TEXT Right eye, can be local USB cam (0|1|2..) or IP cam rtsp URL or file [default: http://axis-\n lab/axis-cgi/mjpg/video.cgi?&camera=2]\n --help Show this message and exit.\n\n```\n\n![Stereo View](docs/pics/stereo-view.jpg)\n\n## rakali-split-stereo-feed\n\nSplit source stereo recording into left and right camera views\n\n`$ rakali-split-stereo-feed --help`\n\n```\nUsage: rakali-split-stereo-feed [OPTIONS]\n\n Split source stereo recording into left and right camera views\n\nOptions:\n --version Show the version and exit.\n -s, --source TEXT Stereo video source file to split [default: in.avi]\n -l, --left-name TEXT Left camera video name [default: left_eye_out.avi]\n -r, --right-name TEXT Right camera video name [default: right_eye_out.avi]\n --fps FLOAT Frames per second rate for output file [default: 12.5]\n --help Show this message and exit.\n```\n\n\n## rakali\n\nRakali ships with a small demo app that exercises the library image processing\nfunctionality.\n\n```zsh\n$ rakali --help\nUsage: rakali [OPTIONS] COMMAND [ARGS]...\n\n Rakali image tools\n\n Provide either a input file or a input URL for image source\n\nOptions:\n --version Show the version and exit.\n -i, --input-file PATH Use file\n -u, --input-url TEXT Fetch image from URL\n -o, --output-file PATH Output file [default: out.jpg]\n --help Show this message and exit.\n\nCommands:\n resize Resize the input image preserving aspect ratio, favoring width\n rotate Rotate the input image\n rotate-bounded Rotate the input image, keeping bound in place\n skeletonize Skeletonize the input image\n\n```\n\n# Library usage\n\nLibrary documentation generation is a work in progress...\n\n## Load and show image from file\n\n```zsh\nfrom rakali import Image\nImage.from_file('rakali.jpg').show()\n```\n\n## Load, annotate, and show image\n\n```zsh\n#! /usr/bin/env python\n\nfrom rakali import Image\nimg: Image = Image.from_file('rakali.jpg')\nimg.add_text(labels=['Rakali', 'Hydromys chrysogaster'])\nimg.show()\nimg.write('rakali-text.jpg')\n\n```\n\n![Text](https://raw.githubusercontent.com/sthysel/rakali/master/docs/pics/rakali-text.jpg)\n\n## Canny\n\n```zsh\n\n#! /usr/bin/env python\n\"\"\"\nCannyfy Live USB video stream\n\"\"\"\n\nfrom rakali import VideoPlayer, VideoStream, VideoWriter\nfrom rakali.video.fps import cost\nfrom rakali.video import go\nfrom rakali.annotate import add_frame_labels, colors\nimport imutils\nimport logging\n\nlogging.basicConfig(level=logging.DEBUG)\n\n\n@cost\ndef canny(mat):\n img = imutils.auto_canny(image=mat, sigma=0.3)\n img = add_frame_labels(\n frame=img,\n labels=[f'canny cost: {canny.cost:6.3f}ms'],\n color=colors.get('WHITE'),\n )\n return img\n\n\nstream = VideoStream(src=0)\nplayer = VideoPlayer()\nwriter = VideoWriter(size=stream.get_wh_size(), file_name='canny.avi')\n\nwith stream, player, writer:\n while go():\n frame = canny(stream.read())\n writer.write(frame)\n player.show(frame)\n```\n\n![canny](docs/pics/canny.jpg)\n\n\n\n# Install\n\nRakali is essentially a OpenCV shim. Because some parts of Rakali depends on OpenCV CUDA being available. The\n'python-opencv' lib on PyPi is not marked as a dependency. You need to install either that yourself, or use\nyour own pre-compiled OpenCV CUDA. Arch Linux has opencv-cuda in AUR, so install that:\n\n```\n$ yay -S opencv-cuda\n```\n\nWhile you are at it also install `tensorflow-opt-cuda`:\n\n```\n# pacman -S tensorflow-opt-cuda\n```\n\n\n## pypi\n\nRakali is in pypi:\n\n```\n$ pip install rakali\n```\n\n## Manual install\n\nClone or download this repo and in your virtualenv do:\n```\n$ pip install .\n```\n\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://github.com/sthysel/rakali", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rakali", "package_url": "https://pypi.org/project/rakali/", "platform": "", "project_url": "https://pypi.org/project/rakali/", "project_urls": { "Homepage": "https://github.com/sthysel/rakali" }, "release_url": "https://pypi.org/project/rakali/0.0.11/", "requires_dist": [ "matplotlib", "click", "numpy", "scipy", "imutils", "py-cpuinfo", "GPUtil", "python-nmap", "zeroconf" ], "requires_python": "", "summary": "OpenCV Helper Tools", "version": "0.0.11" }, "last_serial": 5324601, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "a3bf257b39b2e6f5c060007e56d14e23", "sha256": "adef4193779e9d9afd23e610e512f52517a3dc1dc83ad5bc85f46d31000356bb" }, "downloads": -1, "filename": "rakali-0.0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a3bf257b39b2e6f5c060007e56d14e23", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1151349, "upload_time": "2019-04-10T09:11:07", "url": "https://files.pythonhosted.org/packages/f7/9c/a96c4ceb1efc485b0705e8d0a27fb65a9526cab8628d8655eedf9939139f/rakali-0.0.10-py2.py3-none-any.whl" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "aa262f23b61e084a57225dddaf2d4c60", "sha256": "61117c1d4b47194885d4653e0c1f6e3104b1727103e709286af523ad4027aba0" }, "downloads": -1, "filename": "rakali-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aa262f23b61e084a57225dddaf2d4c60", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1151517, "upload_time": "2019-05-28T02:31:25", "url": "https://files.pythonhosted.org/packages/cd/2b/5c653076c3cd57fa5fba73f8e32306ba15854a42a695cfe60a557668f871/rakali-0.0.11-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "c830368594544648aaf7933b40348391", "sha256": "2c26fe4ae5899682cb7749f10f1b02f2892cff52a57d801d07185a74db97c029" }, "downloads": -1, "filename": "rakali-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c830368594544648aaf7933b40348391", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6606, "upload_time": "2019-03-07T15:26:36", "url": "https://files.pythonhosted.org/packages/e5/1b/5b8ceabc51520e889125e910dc4f851afb570be4eb7ca3c738f463dc8784/rakali-0.0.3-py2.py3-none-any.whl" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "c7e0febddb988c0adb33592a5e183840", "sha256": "01e4cf0b7c42efdb024520741cc96642f3cef29eb06091af413ea8834b3fcddb" }, "downloads": -1, "filename": "rakali-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c7e0febddb988c0adb33592a5e183840", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6633, "upload_time": "2019-03-07T15:30:59", "url": "https://files.pythonhosted.org/packages/22/ef/518a69946cc9fa7ebd72b6b5fdf4d667bc278a790c376686177acd7097a0/rakali-0.0.4-py2.py3-none-any.whl" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "2f59193745d26c3c97e3ff387f9d56c0", "sha256": "47b05e7914288edfd4d0ccb8ebad998d93568ab606da28c1f9a922323242ce74" }, "downloads": -1, "filename": "rakali-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f59193745d26c3c97e3ff387f9d56c0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1112942, "upload_time": "2019-03-11T15:48:51", "url": "https://files.pythonhosted.org/packages/cb/46/813205270132fb59814731e0df98630a1d40a413486cc6255020cd7a04b5/rakali-0.0.6-py2.py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "2adec4849873c16daa9e3f98a77f551d", "sha256": "d7cfbd44a1696151867c8f09cd0c9acd466ba4c0b9dfe7d5fde5b811c9f02c17" }, "downloads": -1, "filename": "rakali-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2adec4849873c16daa9e3f98a77f551d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1113141, "upload_time": "2019-03-12T03:10:53", "url": "https://files.pythonhosted.org/packages/1d/02/b4950e54e94939bfb213689dd2eaa69ed3b0069ab0d6c85dbcccaccdf071/rakali-0.0.7-py2.py3-none-any.whl" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "10c8497592ec31bffd2b6d70a767e1cd", "sha256": "f7960432996d849eacfd32dca5519dcf11ba79efc3e58ae074cca82ab10b6122" }, "downloads": -1, "filename": "rakali-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "10c8497592ec31bffd2b6d70a767e1cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1139504, "upload_time": "2019-03-25T01:09:26", "url": "https://files.pythonhosted.org/packages/26/03/fb2c3ca0ed9801610e7fa8eab5d02b29aeea14c05a65e55efcce1c578f1c/rakali-0.0.8-py2.py3-none-any.whl" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "32a6500b750362bfe683c85a151ea180", "sha256": "ae3a8808cb72750936ca9f9f8558777516c7eae7cb02a4484f3020ec7f638b29" }, "downloads": -1, "filename": "rakali-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "32a6500b750362bfe683c85a151ea180", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1141620, "upload_time": "2019-03-25T23:30:43", "url": "https://files.pythonhosted.org/packages/d5/51/64ff091e4d1957825110190b13729dd7d569285abd7293006611f33e2d2b/rakali-0.0.9-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aa262f23b61e084a57225dddaf2d4c60", "sha256": "61117c1d4b47194885d4653e0c1f6e3104b1727103e709286af523ad4027aba0" }, "downloads": -1, "filename": "rakali-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aa262f23b61e084a57225dddaf2d4c60", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1151517, "upload_time": "2019-05-28T02:31:25", "url": "https://files.pythonhosted.org/packages/cd/2b/5c653076c3cd57fa5fba73f8e32306ba15854a42a695cfe60a557668f871/rakali-0.0.11-py2.py3-none-any.whl" } ] }