{ "info": { "author": "Open Data Team", "author_email": "contact@opendata.team", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Software Distribution" ], "description": "# udata-ldap\n\nLDAP authentification for udata with optionnal Kerberos suppport.\n\n## Requirements\n\nTo use LDAP only authentication, you only need the `udata-ldap` extension.\n\nTo use [`SASL`](https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer) and [`SPNEGO`](https://en.wikipedia.org/wiki/SPNEGO), you need a functional kerberos client environment.\n\nOn debian, you can install the requirements using:\n\n```bash\napt-get install krb5-config krb5-user libkrb5-dev\n```\n\nYou need to configure your domain in `/etc/krb5.conf`.\nHere's a sample configuration for `DOMAIN.ORG`:\n\n```ini\n[libdefaults]\n default_realm = DOMAIN.ORG\n\n[realms]\n DATA.XPS = {\n #admin_server = ipa.data.xps\n # use \"kdc = ...\" if realm admins haven't put SRV records into DNS\n kdc = kdc.domain.org\n admin_server = kdc.domain.org:749\n default_domain = domain.org\n dns_lookup_realm = false\n dns_lookup_kdc = false\n rdns = false\n }\n\n[domain_realm]\n domain.org = DOMAIN.ORG\n .domain.org = DOMAIN.ORG\n```\n\n## Usage\n\nInstall the plugin package in you udata environement:\n\n```bash\npip install udata-ldap\n```\n\nThen activate it in your `udata.cfg`:\n\n```python\nPLUGINS = ['ldap']\n```\n\n**NB**: if using Kerberos SASL and/or SPNEGO, install it with:\n\n```bash\npip install udata-ldap[kerberos]\n```\n\n## Configuration\n\n`udata-ldap` makes use of [`flask-ldap3-login`](https://flask-ldap3-login.readthedocs.io/en/latest/index.html) and so use the same parameters as described [here](https://flask-ldap3-login.readthedocs.io/en/latest/configuration.html).\n\nSome extra parameters are available:\n\n| Parameter | Default value | Notes |\n|-----------|---------------|-------|\n| `LDAP_DEBUG` | `False` | Enable verbose/debug logging |\n| `LDAP_KERBEROS_KEYTAB` | `None` | Path to an optionnal Kerberos keytab for this service |\n| `LDAP_KERBEROS_SERVICE_NAME` | `'HTTP'` | The service principal as configured in the keytab |\n| `LDAP_KERBEROS_SERVICE_HOSTNAME` | `socket.getfqdn()` | The service hostname (ie. `data.domain.com`) |\n| `LDAP_KERBEROS_SPNEGO` | `False` | Whether or not to enable passwordless authentication with SPNEGO |\n| `LDAP_KERBEROS_SPNEGO_NO_REALM` | `True` | Automaticaly remove @REALM from SPNEGO/REMOTE_USER identifier |\n| `LDAP_REMOTE_USER_ATTR` | `'uid'` | The ldap attribute extracted from SPNEGO handshake to match the user |\n| `LDAP_USER_FIRST_NAME_ATTR` | `'givenName'` | The ldap attribute to extract the first name from |\n| `LDAP_USER_LAST_NAME_ATTR` | `'sn'` | The ldap attribute to extract the last name from |\n\n## Testing configuration\n\n`udata-ldap` provides two commands to help with the configuration:\n\n- `udata ldap config` will display the LDAP configuration seen by `udata`\n- `udata ldap check` will allow to quickly test your LDAP configuration.\n- `udata ldap krbcheck` will allow to quickly test your Kerberos configuration.\n\n## Testing localy with docker\n\nAn example `docker-compose.yml` is provided to test localy wiht a freeipa server.\n\nTo use it, you need to copy the file `ipa-server-install-options.example` to `ipa-server-install-options` and edit it with your own parameters.\n\n**ex:**\n\n```\n--unattended\n--realm=DOMAIN.ORG\n--domain=DOMAIN.ORG\n--ds-password=password\n--admin-password=password\n```\n\n# Changelog\n\n## 0.3.5 (2018-11-23)\n\n- Fix packaging\n\n## 0.3.4 (2018-11-23)\n\n- Fix negociate and REMOTE_USER email extraction\n- Fix some command line encoding errors\n\n## 0.3.3 (2018-11-09)\n\n- Internal: extracted all Kerberos handling into its own module\n- Kerberos: handle REALM removal from SPNEGO/REMOTE_USER identifier\n\n## 0.3.2 (2018-10-16)\n\n- Fix some console encoding error\n- Fix LDAP values extraction\n- Make all LDAP attributes mapping to user profile configurable\n\n## 0.3.1 (2018-10-11)\n\n- Renamed `LDAP_USER_SPNEGO_ATTR` into `LDAP_REMOTE_USER_ATTR` for consistency\n- Fix login form using SPNEGO attribute for login\n\n## 0.3.0 (2018-10-09)\n\n- Display errors on login form\n- Force email into the login form\n- Fix encoding errors in ldap commands\n- Update user on login\n- Start handling errors on negociate view\n- Display a page when trying automatic login wihtout credentials\n- Adds translations\n\n## 0.2.1 (2018-10-08)\n\n- Fix the \"automatic login\" link\n- More logging\n\n## 0.2.0\n\n- More tests\n- Hide debug log unless `LDAP_DEBUG = True`\n- Remove buggy default `LDAP_*` settings\n\n## 0.1.0\n\nInitial release\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/opendatateam/udata-ldap", "keywords": "udata LDAP", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "udata-ldap", "package_url": "https://pypi.org/project/udata-ldap/", "platform": "", "project_url": "https://pypi.org/project/udata-ldap/", "project_urls": { "Homepage": "https://github.com/opendatateam/udata-ldap" }, "release_url": "https://pypi.org/project/udata-ldap/0.3.5/", "requires_dist": [ "udata (>=1.4.0.dev)", "flask-ldap3-login (==0.9.15)", "gssapi (==1.5.0) ; extra == 'kerberos'", "httpretty (==0.9.5) ; extra == 'test'", "mock (==2.0.0) ; extra == 'test'", "pytest (==3.10.0) ; extra == 'test'", "pytest-flask (==0.14.0) ; extra == 'test'", "pytest-mock (==1.10.0) ; extra == 'test'", "pytest-sugar (==0.9.2) ; extra == 'test'" ], "requires_python": "==2.7.*", "summary": "LDAP authentification for udata with optional Kerberos suppport.", "version": "0.3.5" }, "last_serial": 4520770, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5d6a98451c89970e66ec888c18a61a14", "sha256": "1cd6f9ce4f16d5115db28d93e598d946ce0aefcef1bdf2fefb62092e9f317eb8" }, "downloads": -1, "filename": "udata_ldap-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d6a98451c89970e66ec888c18a61a14", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 10619, "upload_time": "2018-10-01T21:08:01", "url": "https://files.pythonhosted.org/packages/50/ed/4adee52d658ffe85a8dfa3d19539e645585aaac5622cf47881f85658817b/udata_ldap-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "357a8c1e3f21eefd93c2847ce504bfeb", "sha256": "8f5d80402c0c19eda1399cc43b6e36a2add2ee95f0245a372de6b28df121aea3" }, "downloads": -1, "filename": "udata-ldap-0.1.0.tar.gz", "has_sig": false, "md5_digest": "357a8c1e3f21eefd93c2847ce504bfeb", "packagetype": "sdist", "python_version": "source", "requires_python": "==2.7.*", "size": 8742, "upload_time": "2018-10-01T21:08:03", "url": "https://files.pythonhosted.org/packages/19/7e/f4f2d509db0f986a123aa7b1d930b7294da8609f0b0226e556ccecd15b3a/udata-ldap-0.1.0.tar.gz" } ], "0.1.0.dev0": [ { "comment_text": "", "digests": { "md5": "7590d46542a1ba969b4a46a535da1dcd", "sha256": "fe0cabe5cb6bddbed0cde493a356fe0b92cb39634cd586f8e85358c825b425bf" }, "downloads": -1, "filename": "udata_ldap-0.1.0.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7590d46542a1ba969b4a46a535da1dcd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10326, "upload_time": "2018-09-19T15:16:08", "url": "https://files.pythonhosted.org/packages/5b/e2/7c0506b3f09175562d20307eaec26cc9036d00775551737f4428a138623a/udata_ldap-0.1.0.dev0-py2.py3-none-any.whl" } ], "0.1.0.dev1": [ { "comment_text": "", "digests": { "md5": "ce4963882d7203ed1d64f3e91bf3403c", "sha256": "ab91636465bc3ea5662833245d5bd00ee8bf21c197ef80971103f503927d7db4" }, "downloads": -1, "filename": "udata_ldap-0.1.0.dev1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ce4963882d7203ed1d64f3e91bf3403c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10340, "upload_time": "2018-09-19T15:28:11", "url": "https://files.pythonhosted.org/packages/6b/ee/fc9b45d6bbffeae5faf48ba54f38294b3eab4d1d4503769664dfe46d34ca/udata_ldap-0.1.0.dev1-py2.py3-none-any.whl" } ], "0.1.0.dev2": [ { "comment_text": "", "digests": { "md5": "a0debcab21845c892fb86e5b3e724bb4", "sha256": "ea987734e3deee5749155059d0378511dc0e1f520623abf3b1ddf2cfc85c54eb" }, "downloads": -1, "filename": "udata_ldap-0.1.0.dev2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a0debcab21845c892fb86e5b3e724bb4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11290, "upload_time": "2018-09-27T14:05:12", "url": "https://files.pythonhosted.org/packages/37/20/fe6a7b3da39885e3ee328eb6e0203a03618ba3994a4e61e62685cdfade4a/udata_ldap-0.1.0.dev2-py2.py3-none-any.whl" } ], "0.1.0.dev3": [ { "comment_text": "", "digests": { "md5": "4e9afe1e762be432b744c502e67f67b9", "sha256": "a3db1beca90bb4f24b1010af53f0316d630b62145d1880b46bce8a5f788361f9" }, "downloads": -1, "filename": "udata_ldap-0.1.0.dev3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4e9afe1e762be432b744c502e67f67b9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 11347, "upload_time": "2018-09-27T17:23:21", "url": "https://files.pythonhosted.org/packages/88/b5/bf3f70837716286cc90b923ea42945fd7816e0ce84a3c0f7ee2e7e8b2d02/udata_ldap-0.1.0.dev3-py2.py3-none-any.whl" } ], "0.1.0.dev4": [ { "comment_text": "", "digests": { "md5": "5d03e9c038f85273da3fc30fe1967315", "sha256": "9093dafe51b9c10597deb5130fa6a6d2f3dc667a6e5088c9e2fcea68123f76f9" }, "downloads": -1, "filename": "udata_ldap-0.1.0.dev4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d03e9c038f85273da3fc30fe1967315", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 10341, "upload_time": "2018-09-28T13:41:18", "url": "https://files.pythonhosted.org/packages/bb/34/d3ca1e92b685072b71975d6798c3c715bdd1ae65c15c4fe240dd7c54b748/udata_ldap-0.1.0.dev4-py2.py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "70ea449760cbc33314342024e77f9c31", "sha256": "adc7eedfdb009b16cdc981d0713677ba1574d367c1deb9ac28d4de29b0a7a1f9" }, "downloads": -1, "filename": "udata_ldap-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "70ea449760cbc33314342024e77f9c31", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 10514, "upload_time": "2018-10-05T16:21:14", "url": "https://files.pythonhosted.org/packages/17/f6/f5c6cf95b880f1e6894db0dfef2b819dc507feb17deb82c3ffbb3d01687c/udata_ldap-0.2.0-py2.py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "06ea388e1772959c7026d80414f1ce8b", "sha256": "68edaf5cd36be7d0b1d7d3d7fc2ab24f3a8bdcd2badf9708d649e6c0ffa235ca" }, "downloads": -1, "filename": "udata_ldap-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "06ea388e1772959c7026d80414f1ce8b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 9292, "upload_time": "2018-10-08T15:46:15", "url": "https://files.pythonhosted.org/packages/02/01/368fb7a540eedebc73b6c723ede78a6db4e53e03c7578d0b7baa4e469d34/udata_ldap-0.2.1-py2.py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7a2131a6483121e7b3e63891bfe9ce29", "sha256": "02d5b7c985ecf7e63d3eb4101fec4a0ff7ad3433c3f2bd70c35347b169540a3c" }, "downloads": -1, "filename": "udata_ldap-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a2131a6483121e7b3e63891bfe9ce29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 12106, "upload_time": "2018-10-09T12:23:18", "url": "https://files.pythonhosted.org/packages/81/bf/aa960088b0fb3392ab70ea9aee7ffed74a1ce03a1d0d8aee3c0177e9607c/udata_ldap-0.3.0-py2.py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "76738ec710cd8183dc108db5f5f3aae3", "sha256": "935ce7abcf4c79f1fa9f2c9372d7366221422e4d857aeddbbfce8672494f2b7d" }, "downloads": -1, "filename": "udata_ldap-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "76738ec710cd8183dc108db5f5f3aae3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 12197, "upload_time": "2018-10-11T21:50:33", "url": "https://files.pythonhosted.org/packages/73/46/42cc26e2e34e521a4bec73339e51c0707b618aca7f1ea7a5a21d9ab6769a/udata_ldap-0.3.1-py2.py3-none-any.whl" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "1987bce4e0bd9bc46acaeaa4b5894a7e", "sha256": "e6de1325726dac9d4251dba6da388d15a74b7276fef82e0e067b7f4f93a288d1" }, "downloads": -1, "filename": "udata_ldap-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1987bce4e0bd9bc46acaeaa4b5894a7e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 12763, "upload_time": "2018-10-16T06:14:29", "url": "https://files.pythonhosted.org/packages/40/8d/912e14c52593898f846bff4d42087f8ecc295133c483a9ca904839702e63/udata_ldap-0.3.2-py2.py3-none-any.whl" } ], "0.3.2.dev35": [ { "comment_text": "", "digests": { "md5": "b3f3c1f80129903360a2f2c5074b604e", "sha256": "7a7efae548d8d54c3a6ebf9ac0229f4c4f11f4defbbc67065b2ef60bf6992a9f" }, "downloads": -1, "filename": "udata_ldap-0.3.2.dev35-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3f3c1f80129903360a2f2c5074b604e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 12858, "upload_time": "2018-10-15T16:45:42", "url": "https://files.pythonhosted.org/packages/93/63/5f7c94b19f0ba6434e94a6e4d4420d555796d44618f951edf8c64612aad8/udata_ldap-0.3.2.dev35-py2.py3-none-any.whl" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "766a6fa3a3ec4bb09e61c9b2c62cd93e", "sha256": "984ef348fd83a70a65147963c7f6f1cbc32275c90b791f7696fbe0c5fa276937" }, "downloads": -1, "filename": "udata_ldap-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "766a6fa3a3ec4bb09e61c9b2c62cd93e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14184, "upload_time": "2018-11-09T15:06:39", "url": "https://files.pythonhosted.org/packages/af/71/87a9f646ab933772946d2fb511102cfc92f39570652060a89a8bcea27396/udata_ldap-0.3.3-py2.py3-none-any.whl" } ], "0.3.3.dev37": [ { "comment_text": "", "digests": { "md5": "6f84b89ceb06cb53077dd018d88ec855", "sha256": "aee263890033df7600bcf4a74700bf9cb59ba481c88a5e8f4072afd9ccad37c2" }, "downloads": -1, "filename": "udata_ldap-0.3.3.dev37-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f84b89ceb06cb53077dd018d88ec855", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 12872, "upload_time": "2018-10-16T06:14:26", "url": "https://files.pythonhosted.org/packages/22/84/203eeffaf9368b6c8915bb71ccf1716055be6862d056307c6e4b8f6b9c2d/udata_ldap-0.3.3.dev37-py2.py3-none-any.whl" } ], "0.3.3.dev46": [ { "comment_text": "", "digests": { "md5": "064ffca5e28f9adaaae79f6e67b95b2b", "sha256": "f7d090de11311160d4e6f83b41b43fc4cdc01fff33c83299755f764326d188f1" }, "downloads": -1, "filename": "udata_ldap-0.3.3.dev46-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "064ffca5e28f9adaaae79f6e67b95b2b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14275, "upload_time": "2018-11-09T15:02:17", "url": "https://files.pythonhosted.org/packages/db/5a/bb626eda40275b45931b177a105910230efc8693bad0a603d3fb898b2445/udata_ldap-0.3.3.dev46-py2.py3-none-any.whl" } ], "0.3.4.dev48": [ { "comment_text": "", "digests": { "md5": "33ae031cd8ad83c79a2bb3465fd01fcf", "sha256": "5f67d27fac08c2f0148475f5c779b0131c198691e9371c9a631bd0e6c98702f4" }, "downloads": -1, "filename": "udata_ldap-0.3.4.dev48-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "33ae031cd8ad83c79a2bb3465fd01fcf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14295, "upload_time": "2018-11-09T15:06:22", "url": "https://files.pythonhosted.org/packages/74/9f/964e41889bcd8b473e2afe886ef8557f54d901cd06d85e4460af050a409e/udata_ldap-0.3.4.dev48-py2.py3-none-any.whl" } ], "0.3.4.dev53": [ { "comment_text": "", "digests": { "md5": "f4f993febf57c71ad7bd659ccbaf74d9", "sha256": "aab7b909404ee9d3848c7f29f3975cb8ab4c6b095468c5fea5afaa1410e0bc03" }, "downloads": -1, "filename": "udata_ldap-0.3.4.dev53-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f4f993febf57c71ad7bd659ccbaf74d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14317, "upload_time": "2018-11-13T14:16:32", "url": "https://files.pythonhosted.org/packages/ad/11/b909e73c59bafa8afa067af1953a5f71a0d52b013a40136718940e716198/udata_ldap-0.3.4.dev53-py2.py3-none-any.whl" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "7cdbd6d0d0a4ee5c173ac03459b6f154", "sha256": "244ecdd28d48f3b149892588243ac2c687810dc1371972ccf9280eecce96a85d" }, "downloads": -1, "filename": "udata_ldap-0.3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7cdbd6d0d0a4ee5c173ac03459b6f154", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14244, "upload_time": "2018-11-23T14:13:11", "url": "https://files.pythonhosted.org/packages/6c/54/b7c37aff576a2159cc7971d24975cb7064a12844a9cc0595be14108c5b3b/udata_ldap-0.3.5-py2.py3-none-any.whl" } ], "0.3.5.dev59": [ { "comment_text": "", "digests": { "md5": "cbe7bdbc73a2d1e19302691eaa31daf1", "sha256": "841875c0a96d722e035f6d03647f38a763506299014f95d056575e42664c5f71" }, "downloads": -1, "filename": "udata_ldap-0.3.5.dev59-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cbe7bdbc73a2d1e19302691eaa31daf1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14338, "upload_time": "2018-11-23T14:10:16", "url": "https://files.pythonhosted.org/packages/b4/df/a5de538ee579406ca82426efe8a44d0a8871e983375438ec2c8e5d1534b4/udata_ldap-0.3.5.dev59-py2.py3-none-any.whl" } ], "0.3.6.dev61": [ { "comment_text": "", "digests": { "md5": "a83ac20b17845d77c9c0b4efcee70a31", "sha256": "d398e54ce241a3760bd7e94bc634f633651e271055484125671dca9f4565c60a" }, "downloads": -1, "filename": "udata_ldap-0.3.6.dev61-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a83ac20b17845d77c9c0b4efcee70a31", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14356, "upload_time": "2018-11-23T14:13:12", "url": "https://files.pythonhosted.org/packages/95/81/fe9dba78a683632dd77910ac024e527c08411aa5abb57409ad728e0dba4f/udata_ldap-0.3.6.dev61-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7cdbd6d0d0a4ee5c173ac03459b6f154", "sha256": "244ecdd28d48f3b149892588243ac2c687810dc1371972ccf9280eecce96a85d" }, "downloads": -1, "filename": "udata_ldap-0.3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7cdbd6d0d0a4ee5c173ac03459b6f154", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": "==2.7.*", "size": 14244, "upload_time": "2018-11-23T14:13:11", "url": "https://files.pythonhosted.org/packages/6c/54/b7c37aff576a2159cc7971d24975cb7064a12844a9cc0595be14108c5b3b/udata_ldap-0.3.5-py2.py3-none-any.whl" } ] }