{ "info": { "author": "John Egan", "author_email": "me@jwegan.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Topic :: Utilities" ], "description": "Safe Access\n==============\n\nTired of always checking hasattr, len, or if a key is in a dictionary? safe_access allows\nyou to safely drill down multiple levels into any python object without having to worry about\nAttributeErrors, KeyErrors, or IndexErrors. Oh, and it supports wildcards.\n\n\n*Available on pypi*: https://pypi.python.org/pypi/safe_access\n\n\npython\nfrom safe_access import safe_access\nclass A(object):\n pass\n\na = A()\na.b = {\"abc\": ['x', 'y', 'z'], \"def\": [1, 2, 3]}\n\n# Access valid path\nprint safe_access(a, 'a.b[\"abc\"][1]', default_value=7)\n# returns 'y'\n\n# Access valid path with variable substitution\nmyvar = 1\nprint safe_access(a, 'a.b[\"abc\"][myvar]', default_value=7, myvar=myvar)\n# returns 'y'\n\n# Access that causes index out of range, but returns default value of 7\nprint safe_access(a, 'a.b[\"abc\"][404]', default_value=7)\n# returns 7\n\n# Access non-existant attribute\nprint safe_access(a, 'a.bad_attribute')\n# returns None\n\n# Access wildcard\nprint safe_access(a, 'a.b[*][0]')\n# returns ['x', 1]\n\n\n\nLimitations:\n\n\\1. Does not support function calls at this time\n\n\\2. Does not support escaped quotations\n\n\\3. Does not support variable references withing tuple literals", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jwegan/safe_access_py", "keywords": null, "license": "MPL 2.0", "maintainer": null, "maintainer_email": null, "name": "safe_access", "package_url": "https://pypi.org/project/safe_access/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/safe_access/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/jwegan/safe_access_py" }, "release_url": "https://pypi.org/project/safe_access/1.1/", "requires_dist": null, "requires_python": null, "summary": "Tool to make drilling into Python objects easy & painless", "version": "1.1" }, "last_serial": 1422405, "releases": { "1.0": [ { "comment_text": "built for Darwin-14.1.0", "digests": { "md5": "39ddc4deb56dd16b147fb2cf5180b3c1", "sha256": "f05ed5e87fc1014d7c2c24418dbc7ea64d2db40a31a8b4ddd025dc374c70208d" }, "downloads": -1, "filename": "safe_access-1.0.macosx-10.10-intel.tar.gz", "has_sig": true, "md5_digest": "39ddc4deb56dd16b147fb2cf5180b3c1", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4605, "upload_time": "2015-02-13T06:39:31", "url": "https://files.pythonhosted.org/packages/9c/b2/96843e205f371d6c54c921c51a652cf49dad1e6a86c94c3ec86665fe0219/safe_access-1.0.macosx-10.10-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "2885b6c95e0f1915a80b0ae96064bd28", "sha256": "585a8c4d4cf11d7e16159efe34b13fd024a9d253db4d82699bb426f03697c519" }, "downloads": -1, "filename": "safe_access-1.0-py2.7.egg", "has_sig": true, "md5_digest": "2885b6c95e0f1915a80b0ae96064bd28", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5830, "upload_time": "2015-02-13T06:39:35", "url": "https://files.pythonhosted.org/packages/3e/8f/956a16214b44572127bf738698cf96cde0065f4f1eb94e2167866c705ceb/safe_access-1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "cb57e27f9a751a6f88689107e3478bf8", "sha256": "45f2415284ffe6d85e54d6ff5160a9c3e77fb6e2df69da2d82e9df2fafd7e287" }, "downloads": -1, "filename": "safe_access-1.0.tar.gz", "has_sig": true, "md5_digest": "cb57e27f9a751a6f88689107e3478bf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9549, "upload_time": "2015-02-13T06:39:22", "url": "https://files.pythonhosted.org/packages/98/cf/233affb0bdae7194e9dea75ff4106b6a3950c63d832f4e945cbc38be6b91/safe_access-1.0.tar.gz" } ], "1.1": [ { "comment_text": "built for Darwin-14.1.0", "digests": { "md5": "f07d751587fa5ddf92e1a103f09a665a", "sha256": "00be74f31ab945f0677ef18b3afed982d4926468a9412e0d7364343af8798261" }, "downloads": -1, "filename": "safe_access-1.1.macosx-10.10-intel.tar.gz", "has_sig": true, "md5_digest": "f07d751587fa5ddf92e1a103f09a665a", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4280, "upload_time": "2015-02-13T19:16:03", "url": "https://files.pythonhosted.org/packages/99/3b/2ec3bd0abc30b50a4a2d4095f7b2d9957b1986ce6aa892f96c7a2557c885/safe_access-1.1.macosx-10.10-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "7be840f8e9e7c98780b1a37e8adb71db", "sha256": "319576ba408ccda8cd80bd88a598ea13a2fc28e9dfe2a4db50f6c0ea79639e06" }, "downloads": -1, "filename": "safe_access-1.1-py2.7.egg", "has_sig": true, "md5_digest": "7be840f8e9e7c98780b1a37e8adb71db", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5499, "upload_time": "2015-02-13T19:16:06", "url": "https://files.pythonhosted.org/packages/ae/4d/350c01be2034fb59414ee61a44b29a3e0aed62aaa729533f1628888aa94b/safe_access-1.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "cc571c11b621ae5ab1d4b2fa9dae588b", "sha256": "4b2cac1dbec8844998e5208416140bb4b8b910628033b9f025eb28bdca2e3465" }, "downloads": -1, "filename": "safe_access-1.1.tar.gz", "has_sig": true, "md5_digest": "cc571c11b621ae5ab1d4b2fa9dae588b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9415, "upload_time": "2015-02-13T19:16:01", "url": "https://files.pythonhosted.org/packages/5a/96/c5013d08c413205e26bcd37e68da43938d7b798ddbf7f6ada7b0e47467c3/safe_access-1.1.tar.gz" } ] }, "urls": [ { "comment_text": "built for Darwin-14.1.0", "digests": { "md5": "f07d751587fa5ddf92e1a103f09a665a", "sha256": "00be74f31ab945f0677ef18b3afed982d4926468a9412e0d7364343af8798261" }, "downloads": -1, "filename": "safe_access-1.1.macosx-10.10-intel.tar.gz", "has_sig": true, "md5_digest": "f07d751587fa5ddf92e1a103f09a665a", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4280, "upload_time": "2015-02-13T19:16:03", "url": "https://files.pythonhosted.org/packages/99/3b/2ec3bd0abc30b50a4a2d4095f7b2d9957b1986ce6aa892f96c7a2557c885/safe_access-1.1.macosx-10.10-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "7be840f8e9e7c98780b1a37e8adb71db", "sha256": "319576ba408ccda8cd80bd88a598ea13a2fc28e9dfe2a4db50f6c0ea79639e06" }, "downloads": -1, "filename": "safe_access-1.1-py2.7.egg", "has_sig": true, "md5_digest": "7be840f8e9e7c98780b1a37e8adb71db", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5499, "upload_time": "2015-02-13T19:16:06", "url": "https://files.pythonhosted.org/packages/ae/4d/350c01be2034fb59414ee61a44b29a3e0aed62aaa729533f1628888aa94b/safe_access-1.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "cc571c11b621ae5ab1d4b2fa9dae588b", "sha256": "4b2cac1dbec8844998e5208416140bb4b8b910628033b9f025eb28bdca2e3465" }, "downloads": -1, "filename": "safe_access-1.1.tar.gz", "has_sig": true, "md5_digest": "cc571c11b621ae5ab1d4b2fa9dae588b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9415, "upload_time": "2015-02-13T19:16:01", "url": "https://files.pythonhosted.org/packages/5a/96/c5013d08c413205e26bcd37e68da43938d7b798ddbf7f6ada7b0e47467c3/safe_access-1.1.tar.gz" } ] }