{ "info": { "author": "Maxime Rousseau", "author_email": "maximerousseau08@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Image Recognition", "Topic :: Scientific/Engineering :: Medical Science Apps." ], "description": "pfla: Python Facial Landmark Analysis\n=====================================\n[![GitHub release](https://img.shields.io/github/release/maxrousseau/pfla.svg)](https://github.com/maxrousseau/pfla/releases)\n[![PyPI license](https://img.shields.io/pypi/l/pfla.svg)](https://pypi.org/project/pfla/)\n[![PyPI version fury.io](https://badge.fury.io/py/pfla.svg)](https://pypi.org/project/pfla/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pfla.svg)](https://pypi.org/project/pfla/)\n[![Read the Docs](https://img.shields.io/readthedocs/pip.svg)](https://pfla.readthedocs.io/en/latest/index.html#)\n[![Build Status](https://travis-ci.org/maxrousseau/pfla.svg?branch=master)](https://travis-ci.org/maxrousseau/pfla)\n[![JOSS](http://joss.theoj.org/papers/d86beb0eb37afd606630b2535e88c4a2/status.svg)](http://joss.theoj.org/papers/d86beb0eb37afd606630b2535e88c4a2)\n\n\nAdvances in artificial intelligence have enhanced the usability of these\ntechnologies in a clinical setting. This python package introduces the use of a\nDetection Outline Analysis (DOA) methodology for facial analysis in dentistry.\nThis package uses [Haar\ncascades](https://github.com/opencv/opencv/tree/master/data/haarcascades) for\nface detection, a trained 68-facial-landmark model and statistical shape\nanalysis ([300 Faces In-The-Wild](https://ibug.doc.ic.ac.uk/resources/300-W/)).\nThe software uses an R script to conduct statistical\n[shape](https://cran.r-project.org/web/packages/shapes/index.html) analysis\nthrough a generalized Procrustes analysis (GPA), principal component analysis\n(PCA) and non-parametric Goodall test, which compares mean shapes of each group\nfor significance. The script also computes mean Euclidean distance from a\nbaseline shape for each landmark.\n\nThis package was written to conduct automated facial analyses of patients\naffected by Osteogenesis Imperfecta and controls under the BBDC 7701 study. Its\nuse may also be extended to the study of other dental and/or craniofacial\nconditions or to compare different study groups while examining variables such\nas sex, ethnicity, etc.\n\nIf you use this program or a modified version of it for research purposes\nplease cite as follows:\n\n @mybibtexref{\n\n : title author year journal\n\n }\n\nFeatures\n--------\n\n- Takes 2 directories as input containing .jpg (anteroposterior\n clinical photographs)\n- Image Processing: scales images, transformation to grayscale\n- Detection: haar cascade face bounding, 68 facial landmark placement\n- Statistical Shape Analysis: GPA, PCA, Goodall's F-test, Euclidean\n distance per landmark from baseline shape\n\nRequirements and Dependencies\n-----------------------------\n\n- Python 3.5 (or higher)\n- Python packages: opencv-python, dlib, imutils, numpy, argparse, pandas,\n rpy2, progress\n- Linux operating system\n- R 3.3 (or more or higher)\n- R packages: shapes, foreach\n\nInstallation\n------------\n\nImportant: in order for the required package rpy2 to install sucessfully, you\nwill need to have R version 3.3 or higher as well as the packages 'shapes' and\n'foreach'\n\nTo install with **conda**:\n\n```shell\nconda env create -f environment.yml\nconda activate pfla\nmkdir shapes\ncd shapes\nconda skeleton cran --recursive shapes\nconda build r-shapes\nconda install -c local r-shapes\npip install pfla\n```\n\nTo install with **pip**:\n\n```shell\npip install -r requirements.txt\npip install pfla\n```\nThen in R\n```R\ninstall.packages(\"shapes\", \"foreach\")\n```\n\nUsage\n-----\n\nTo demonstrate the usage of the program we will be using images from the\nCaltech Faces dataset which can be downloaded here\n([male](https://github.com/maxrousseau/pfla/tree/master/pfla/test_males) and\n[female](https://github.com/maxrousseau/pfla/tree/master/pfla/test_females)).\n\nWhen using pfla, it is important to have your image directories structured in a\nsimilar fashion.\n\nThe run the program, in the directory containing the image folders enter the\nfollowing:\n\n```shell\n$ pfla -g1 test_males -g2 test_females\n```\n\nThe resulting output from the analysis will be printed out into the\nterminal like so:\n\n```shell\n*******************************\n______________________________\n___ __ \\__ ____/__ /___ |\n__ /_/ /_ /_ __ / __ /| |\n_ ____/_ __/ _ /___ ___ |\n/_/ /_/ /_____/_/ |_|\n*******************************\nPython Facial Landmark Analysis\nAuthor: Maxime Rousseau\nSource: https://github.com/maxrousseau/pfla\n\nProcessing Images |###############################| 10/10\ng1 processing completed without errors\nProcessing Images |###############################| 10/10\ng2 processing completed without errors\n\n*Bootstrap - sampling with replacement within each group under H0: No of resamples = 10\n******************************\nnull device\n 1\n[1] --------------------------------------------------------------------------------\n[1] Goodall Statistical Test P-Value: 0.363636363636364\n[1] --------------------------------------------------------------------------------\n[1] Summary of Mean Euclidean Distance:\n[1] Group 1:\n[1] Mean: 0.00662911513379532 | Standard Deviation: 0.00257462207986629\n[1] Group 2:\n[1] Mean: 0.00743691647218815 | Standard Deviation: 0.00281889044033377\n[1] --------------------------------------------------------------------------------\n```\n\nA histogram summarizing the mean Euclidean distances per landmark will\nalso be save in the data/ directory.\n\n![Mean Euclidean Distance Histogram](paper/histo_02.png)\n\nTesting\n-------\n\nTo test your installation run the following commands:\n```shell\ncd ~/.local/lib/python3.5/site-packages/pfla/\npython3 test.py\n```\nDocumentation\n-------------\n\nDocumentation of the package can be found here:\n\n\nContribute\n----------\n\n- Refer to the contribution guidelines:\n \n- Issue Tracker: \n- Source Code: \n\nLicense\n-------\n\nThe project is licensed under the MIT license.\n\nContact\n-------\n\nMaxime Rousseau, DMD II McGill University, Faculty of Dentistry\n- Email: ", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/maxrousseau/pfla", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pfla", "package_url": "https://pypi.org/project/pfla/", "platform": "", "project_url": "https://pypi.org/project/pfla/", "project_urls": { "Homepage": "https://github.com/maxrousseau/pfla" }, "release_url": "https://pypi.org/project/pfla/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "Python facial landmarking and analysis", "version": "0.2.2" }, "last_serial": 4548960, "releases": { "0.0.6": [ { "comment_text": "", "digests": { "md5": "b23112ef37e70bba1d4d2457b0ec9d47", "sha256": "c913c8761a36998de26bcb55a609652d177d5fe8b778671eeeadfcb9812dbccd" }, "downloads": -1, "filename": "pfla-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b23112ef37e70bba1d4d2457b0ec9d47", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 395233, "upload_time": "2018-06-28T20:48:09", "url": "https://files.pythonhosted.org/packages/72/8c/2f23030b80a1f57481184c9ae443552f584b50274c97c670a6afc2d543a0/pfla-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75aecc0bdaca1bb55c285d5efc8d5255", "sha256": "5c06a27c6e8c89078103f84141247afd425938cedd69d3004d5ed860292a3357" }, "downloads": -1, "filename": "pfla-0.0.6.tar.gz", "has_sig": false, "md5_digest": "75aecc0bdaca1bb55c285d5efc8d5255", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 400166, "upload_time": "2018-06-28T20:48:11", "url": "https://files.pythonhosted.org/packages/20/5f/a9f12ec6d8cab03144f8d614f8900e36ea2bb52e67124176ddfddefd760b/pfla-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "a8629793367f050f7f7590d08bb1b5cc", "sha256": "99715e756ecce7c420d4b5ab22a91d4ec496507cbd2768b0907c12134df2bbd0" }, "downloads": -1, "filename": "pfla-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a8629793367f050f7f7590d08bb1b5cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 395231, "upload_time": "2018-06-28T20:55:15", "url": "https://files.pythonhosted.org/packages/ea/aa/829bcfba30e1dadb4b9298f32b415ae5d25e79e8899e9d4beef6cc4ea171/pfla-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "967ff5b7a35e9d42615362ab430e2a33", "sha256": "eaf95a99160ac381e87dca5755fbe53d0c25c6237d0f69df7676b8d22fd2148c" }, "downloads": -1, "filename": "pfla-0.0.7.tar.gz", "has_sig": false, "md5_digest": "967ff5b7a35e9d42615362ab430e2a33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 400154, "upload_time": "2018-06-28T20:55:17", "url": "https://files.pythonhosted.org/packages/2d/b0/aab9f1e613102c8476fb2001f0faca5ee58abfd3c6bb69ef7c8f7094b277/pfla-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "384f1c840dad2f74258620d52c545f6c", "sha256": "9fc067e9cad6fbf72a403fa02c406817f88088d391a59e11ec4e77f562f13e1a" }, "downloads": -1, "filename": "pfla-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "384f1c840dad2f74258620d52c545f6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 398807, "upload_time": "2018-07-02T14:25:58", "url": "https://files.pythonhosted.org/packages/d1/8b/1fbd51184d75c2e737b3b970a829e5ad65ed5afac5da1559424873cfcad6/pfla-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c130b411bf9d88443594aaf46a3cbe9f", "sha256": "145f0ff90ff7f308ac20b03e49c4136861672373876631744041c3cf230cf28b" }, "downloads": -1, "filename": "pfla-0.0.8.tar.gz", "has_sig": false, "md5_digest": "c130b411bf9d88443594aaf46a3cbe9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 403013, "upload_time": "2018-07-02T14:25:59", "url": "https://files.pythonhosted.org/packages/fc/5f/91753e055c36d5fed94d55d48e589c78463e574f7a08153b512cef89d6cf/pfla-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "aa309349b114166ec86ab4b75532c180", "sha256": "19a257b45a226f3f5adbd601cae1774f5580a012995145594b27bc1573ae4e30" }, "downloads": -1, "filename": "pfla-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "aa309349b114166ec86ab4b75532c180", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401312, "upload_time": "2018-07-03T00:18:09", "url": "https://files.pythonhosted.org/packages/d8/af/6c2e1b54ea13b4159d77521dbfc284cde699bb8015eb3b20520e6ebfdf58/pfla-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccf4b980d485dc2c7707d7f6b26a1fc7", "sha256": "16291c091128cea6e069eaae5c1444394eb1833db3c2ce85023a2887764611ac" }, "downloads": -1, "filename": "pfla-0.0.9.tar.gz", "has_sig": false, "md5_digest": "ccf4b980d485dc2c7707d7f6b26a1fc7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404005, "upload_time": "2018-07-03T00:18:11", "url": "https://files.pythonhosted.org/packages/d0/a3/dd90dd6d257ffb68c0ec3d5b74dee55960d3c0daf7278ccfaa705bdf5a8f/pfla-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "b95c6fcd14c488b3dfbfb5dee66f507b", "sha256": "e9210443f52f66be4146a332cef1d1474a2265a25656d8f97c1ba85e222a2fca" }, "downloads": -1, "filename": "pfla-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b95c6fcd14c488b3dfbfb5dee66f507b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401321, "upload_time": "2018-07-06T20:16:17", "url": "https://files.pythonhosted.org/packages/a6/ea/b11ec45c2acf75ad22d535888d585a4c80a59e0ded5c1877deeb5529ecc7/pfla-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b51b532e93f5c0eb772f7e479512d70f", "sha256": "6a73b93858256f0e7696bb9c1416ee2a829d23f1688f31d433ecea30afdd2e46" }, "downloads": -1, "filename": "pfla-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b51b532e93f5c0eb772f7e479512d70f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404021, "upload_time": "2018-07-06T20:16:19", "url": "https://files.pythonhosted.org/packages/49/5d/6c2c7fa618e22227c3a1941fd621772b7d969aaae88c980cf1b79f778268/pfla-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5a4c08a35e6f1f2545a832f7072a2a35", "sha256": "5e35c8b2a011fd69839fb0f638af78e1540e724a420c511d7dbdbdf832130ef9" }, "downloads": -1, "filename": "pfla-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5a4c08a35e6f1f2545a832f7072a2a35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401381, "upload_time": "2018-07-06T21:42:58", "url": "https://files.pythonhosted.org/packages/c9/83/0322f51f697b9d89931d2cedb7565cd0e1bd4c76bd241cdef1bb8327da6d/pfla-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cad9fb5c08c12585635ff40d69a59c5b", "sha256": "b695f3c70fa6f9208980aac118282ed93fc663b2eb4e9370f9e9b9d205141d2a" }, "downloads": -1, "filename": "pfla-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cad9fb5c08c12585635ff40d69a59c5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404022, "upload_time": "2018-07-06T21:43:00", "url": "https://files.pythonhosted.org/packages/b4/50/a9aa4f04af13b2acfe6a3e32e502ac2427c694b55fa1682aabe9170ebea2/pfla-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b318af30d3aac81a052a327c3d334b26", "sha256": "53174cc3fcb46e0838cb69b3f7cc6ce9fd76fa9663f4210054329f9913560faa" }, "downloads": -1, "filename": "pfla-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b318af30d3aac81a052a327c3d334b26", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401388, "upload_time": "2018-07-06T22:18:30", "url": "https://files.pythonhosted.org/packages/85/ea/51745cfe1312887149fde5889afa4cf0a41dc508665e93dc1837d7a0c209/pfla-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3c973da36850192f5fcfd67d16d695b", "sha256": "78adf21dfc1386845c0e448ddfa75551ec6f4cd6856176d300ce3fe3c6e88fc7" }, "downloads": -1, "filename": "pfla-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e3c973da36850192f5fcfd67d16d695b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404026, "upload_time": "2018-07-06T22:18:32", "url": "https://files.pythonhosted.org/packages/6d/15/487a35e5bc6a2622fd2a9cc1e200841489207d9154abefccd9cbaffc20df/pfla-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "94f1d4467faca13780badb2824da9005", "sha256": "17b58c091d4619583aee83fe9dc3606540515606cf3b17c1525f3d1eb69e29d0" }, "downloads": -1, "filename": "pfla-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "94f1d4467faca13780badb2824da9005", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401903, "upload_time": "2018-07-06T23:12:18", "url": "https://files.pythonhosted.org/packages/55/f9/0ecca292d6382c48aecd5b5555c879bf29b1b39bbb18484ff082580a3e19/pfla-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1162ec176287fad91d29d20ccc2b87c", "sha256": "965d8bd1ec6952b4ca4e541225055081d1a0eded21b35d86e883a3b0b8d5dcea" }, "downloads": -1, "filename": "pfla-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b1162ec176287fad91d29d20ccc2b87c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404122, "upload_time": "2018-07-06T23:12:20", "url": "https://files.pythonhosted.org/packages/88/12/3c975b952c3a832de30d17bf1e1561c752d3d4ad9bf2b8a8dc4ae98ff9df/pfla-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "096b6c0a2deff40f6847ca7d3caec3eb", "sha256": "69987e75947d3dabfcfc9039f9e4081a7d504a9ce2d96de0411e31d5798daefd" }, "downloads": -1, "filename": "pfla-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "096b6c0a2deff40f6847ca7d3caec3eb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 401960, "upload_time": "2018-07-06T23:42:20", "url": "https://files.pythonhosted.org/packages/18/0d/8437960207d4df96c4966baf4ac1602ba3f80d6128dcb91e3b79e8dd7612/pfla-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "05ea579ab500927198cfb61eac13670c", "sha256": "7b81661faaba337ac63c9aa57c78815a29df6b78e37cce541508331628e9c85c" }, "downloads": -1, "filename": "pfla-0.1.4.tar.gz", "has_sig": false, "md5_digest": "05ea579ab500927198cfb61eac13670c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 404168, "upload_time": "2018-07-06T23:42:22", "url": "https://files.pythonhosted.org/packages/b4/c4/4c47b4068c30fbe26e77f1d6a5960cdad87952d71ceaf42f3f6a90bd59c5/pfla-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "92c8e31365561f818f6d339459dcd293", "sha256": "90a275ef6474c0b5372f54a810f26108cade8325929cf4e00ead122102613b47" }, "downloads": -1, "filename": "pfla-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "92c8e31365561f818f6d339459dcd293", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 404963, "upload_time": "2018-07-20T14:26:18", "url": "https://files.pythonhosted.org/packages/70/93/63f10e4891e945b2596998c1d13bf7f9d6b3cc108a544420693516438b07/pfla-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7b0665ca1dc342c0e3ae00ef61cd712", "sha256": "6d97f4cf15a83e642e8255da00517f5a17117fc3cdc5628271a72e6ae34af118" }, "downloads": -1, "filename": "pfla-0.1.5.tar.gz", "has_sig": false, "md5_digest": "f7b0665ca1dc342c0e3ae00ef61cd712", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147307, "upload_time": "2018-07-20T14:26:19", "url": "https://files.pythonhosted.org/packages/93/ef/609dd7afd598b2ea1e3223b82642aee7d342f9ca5fb3ee57fceb4a852836/pfla-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "7629975eb069726c9ce30a169bedf503", "sha256": "b50f9b608df3c24953f9f11701df02b23367befbc5d393c23febcdc9fee5944e" }, "downloads": -1, "filename": "pfla-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7629975eb069726c9ce30a169bedf503", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1890362, "upload_time": "2018-07-20T14:56:07", "url": "https://files.pythonhosted.org/packages/bb/8b/af02451e1cc9d9521d8ee3f81818d8f8dec48b1683c32853d9d265f4ac02/pfla-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c124c4d4f97b25e83a983741d1ae1f5c", "sha256": "3e5d5bb54b65b8da035dd3bbe44808d74cf72093b1c74e9e4fbbbab4367769fd" }, "downloads": -1, "filename": "pfla-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c124c4d4f97b25e83a983741d1ae1f5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1890557, "upload_time": "2018-07-20T14:56:11", "url": "https://files.pythonhosted.org/packages/0c/83/5e4d90c1e8c9413e3b320a5399e2c77a203bd45f55465ecfb63e242de46a/pfla-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "9fe5e02c601cb1b74b5c4ef0211e523d", "sha256": "182ab111ce66988089832b6b254f0ed75e5395f834c0a6f39e94c2718952b860" }, "downloads": -1, "filename": "pfla-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "9fe5e02c601cb1b74b5c4ef0211e523d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1891054, "upload_time": "2018-09-17T12:28:05", "url": "https://files.pythonhosted.org/packages/36/00/0f240cdda1c87f31494c66e085213e841b33753a59a3b3e36d3fbbead2ad/pfla-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "778bc261a278aa02c41cd17f802a18d2", "sha256": "72a189ba713cc09e43ea4a69672741d6a0884e4496f9aeacc834a3404174c2a7" }, "downloads": -1, "filename": "pfla-0.1.7.tar.gz", "has_sig": false, "md5_digest": "778bc261a278aa02c41cd17f802a18d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1891072, "upload_time": "2018-09-17T12:28:09", "url": "https://files.pythonhosted.org/packages/a8/2d/e49c7682adc12f0bf0611108112cc44cbfa27dfc4e963492839cb4b455ad/pfla-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "286422e41e6fb82f13cccd210a31e9dc", "sha256": "9f87273259ddfd5a35d7100468302e1ca628472a165b422b9c7ab126f5366a80" }, "downloads": -1, "filename": "pfla-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "286422e41e6fb82f13cccd210a31e9dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1896908, "upload_time": "2018-10-01T15:51:01", "url": "https://files.pythonhosted.org/packages/cc/fe/30db9f920d8cfa3089045e27c81b92e1d71fd6a955a56060ed836516fbe6/pfla-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c7c0c219f829024ad4cf5fbc48408e3", "sha256": "fbffb218b8d7a4beaa725f6e13f0eb8a26083320fce4187f310879be9d7d9ed6" }, "downloads": -1, "filename": "pfla-0.1.8.tar.gz", "has_sig": false, "md5_digest": "6c7c0c219f829024ad4cf5fbc48408e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1897355, "upload_time": "2018-10-01T15:51:04", "url": "https://files.pythonhosted.org/packages/73/c0/c952eb069746637d7f54ac4f611d6058dd7b7769a9eb247876f0884cba38/pfla-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "696d3da5b9bb35b84e3db2b4702b5bc1", "sha256": "dae1a6c6ee94e3981a73188c6e89f6665954a831c0ce45608214420748ea99aa" }, "downloads": -1, "filename": "pfla-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "696d3da5b9bb35b84e3db2b4702b5bc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1896910, "upload_time": "2018-11-30T01:00:57", "url": "https://files.pythonhosted.org/packages/68/57/f0b046f93eb8df1522dff88015f36af7e1c32f667474ce7a1cc8716e6276/pfla-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bd98edf557c64dcaa127dfc6f8022f5", "sha256": "c4d54d2e392e7466c67db27fd5a5b2b20f75e0e99095badd47b74f91f64ad85a" }, "downloads": -1, "filename": "pfla-0.1.9.tar.gz", "has_sig": false, "md5_digest": "9bd98edf557c64dcaa127dfc6f8022f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1897368, "upload_time": "2018-11-30T01:01:14", "url": "https://files.pythonhosted.org/packages/10/5e/c3ab5d9da12f0e0637ef7993fd92c0ff0c62d03b2f917682b46d6cd5ad8b/pfla-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2583f8cb6e84bb0f9f85d09e755efcd3", "sha256": "22ee132584b7ba0ba0c3a878bb0fe6ef712ce523686453cd9b96dda4554f9861" }, "downloads": -1, "filename": "pfla-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2583f8cb6e84bb0f9f85d09e755efcd3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1896852, "upload_time": "2018-11-30T01:25:15", "url": "https://files.pythonhosted.org/packages/7d/76/30298eb72356899523eaedb2aecb065139ac17ddec0327e1b4d5962338a9/pfla-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "42688e4a2350d2880446b0f370d8dcf6", "sha256": "da16ed333b927fd46113d1d9e9972ec61a52a66179986c1117d1821fc7f61352" }, "downloads": -1, "filename": "pfla-0.2.0.tar.gz", "has_sig": false, "md5_digest": "42688e4a2350d2880446b0f370d8dcf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1897347, "upload_time": "2018-11-30T01:25:39", "url": "https://files.pythonhosted.org/packages/4f/6d/ce248cca3ac0ec51848a2fb0085dc71eccfc957a7b7cb0284532a5393905/pfla-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "87c5793710bf30c6aefdcf79d5968105", "sha256": "29e3a615a4efd2c535f10dfc401b5c857ed227be4003b4bc062e6b9fd3726744" }, "downloads": -1, "filename": "pfla-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "87c5793710bf30c6aefdcf79d5968105", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1896959, "upload_time": "2018-11-30T01:36:39", "url": "https://files.pythonhosted.org/packages/55/42/be9d43506582e941b27b57993a038ae9d7799fc638a42df2e911c2038b3a/pfla-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26ad54b75ed5d5f83a75bade8274544d", "sha256": "1cec088a5757abfa991ac49f8f58a18bf783d1beaad04f54f5c1c53e45c47925" }, "downloads": -1, "filename": "pfla-0.2.1.tar.gz", "has_sig": false, "md5_digest": "26ad54b75ed5d5f83a75bade8274544d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1897379, "upload_time": "2018-11-30T01:36:21", "url": "https://files.pythonhosted.org/packages/95/7f/b79da5d41c2827e3eb17586d738068adcc9573c7b82b16fcc2ab31efda30/pfla-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b66c9cea9ad3d15b5beb09f32037eba1", "sha256": "04dd2184139a57b88c3bc3b71906425c94083871c51a31402b6cf7335362a74a" }, "downloads": -1, "filename": "pfla-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b66c9cea9ad3d15b5beb09f32037eba1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3200036, "upload_time": "2018-11-30T23:17:18", "url": "https://files.pythonhosted.org/packages/6f/9b/395c1544b5b31eff0379ba03f1d03b99c3af10b86599a23caf6e529e14e4/pfla-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5df16baa7877f3c2d2d58761c0327aa", "sha256": "7fd037f4f8eb478af7206cfbd2d7b36b738e952afff4ff639b02ac7e12e4b979" }, "downloads": -1, "filename": "pfla-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e5df16baa7877f3c2d2d58761c0327aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 148659, "upload_time": "2018-11-30T23:16:59", "url": "https://files.pythonhosted.org/packages/40/17/e1df77ddbbecc0e7f427a098525864b5374a9399e6f45693ff3b5213afe7/pfla-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b66c9cea9ad3d15b5beb09f32037eba1", "sha256": "04dd2184139a57b88c3bc3b71906425c94083871c51a31402b6cf7335362a74a" }, "downloads": -1, "filename": "pfla-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b66c9cea9ad3d15b5beb09f32037eba1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3200036, "upload_time": "2018-11-30T23:17:18", "url": "https://files.pythonhosted.org/packages/6f/9b/395c1544b5b31eff0379ba03f1d03b99c3af10b86599a23caf6e529e14e4/pfla-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e5df16baa7877f3c2d2d58761c0327aa", "sha256": "7fd037f4f8eb478af7206cfbd2d7b36b738e952afff4ff639b02ac7e12e4b979" }, "downloads": -1, "filename": "pfla-0.2.2.tar.gz", "has_sig": false, "md5_digest": "e5df16baa7877f3c2d2d58761c0327aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 148659, "upload_time": "2018-11-30T23:16:59", "url": "https://files.pythonhosted.org/packages/40/17/e1df77ddbbecc0e7f427a098525864b5374a9399e6f45693ff3b5213afe7/pfla-0.2.2.tar.gz" } ] }