{ "info": { "author": "Avinash Shenoy", "author_email": "avi123shenoy@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# protecc\nAccess modifiers for python.\n\n\n## Setup\n\n#### PIP install\n\n```bash\npip install protecc\n```\n\n#### From the source\n\n```bash\ngit clone https://github.com/avinashshenoy97/protecc\ncd protecc\npython setup.py install\n```\n\n## Usage\n\n### Old-Style Classes\nInherit from/extend the `protecc` class.\n\n```python\nfrom protecc import protecc\n\nclass regulatedClass(protecc):\n def __init__(self):\n self.publicVariable = 'public value'\n self._privateVariable = 'private value'\n\n def publicMethod(self):\n return True\n\n def __privateMethod(self):\n return True\n\n def getPrivateVariable(self):\n return self._privateVariable\n\n def privateMethodProxy(self):\n return self.__privateMethod()\n```\n\n### New-Style Classes (type)\n\nIf you prefer metaclass (for better readability/what not), use `metaProtecc`.\n\n```python\nclass metaRegulatedClass(metaclass=metaProtecc):\n def __init__(self):\n self.publicVariable = 'public value'\n self._privateVariable = 'private value'\n\n def publicMethod(self):\n return True\n\n def __privateMethod(self):\n return True\n\n def getPrivateVariable(self):\n return self._privateVariable\n\n def privateMethodProxy(self):\n return self.__privateMethod()\n```\n\nWhen accessing \"private\" methods (i.e, methods that begin with either a single or two underscores), this exception is raised\n\n```python\n>>> r = regulatedClass()\n>>> r.__privateMethod()\nTraceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/avinashshenoy/STUFF/projects/protecc/protecc.py\", line 23, in __protecced_getattribute__\n raise AccessException('Cannot access ' + varType + ' member ' + name) from None\nprotecc.AccessException: Cannot access private member __privateMethod\n```\n\nPrivate methods can still be accessed from within other class methods, as is expected:\n\n```python\n>>> r = regulatedClass()\n>>> r.privateMethodProxy()\nTrue\n```\n\n### Note\n\n- This is, by no means, fool-proof access protection.\n- \"Private members\" are those members whose names are mangled by Python, as per PEP 8 conventions, i.e, starting with 2 underscores and having not more than one trailing underscore.\n- Additionally, \"protected members\" are those members whose names are preceded by a single underscores. These members cannot be accessed from outside the class as well, as is expected.\n\n## Primary Contributors\n\n| | |\n|:-:|:-:|\n| | [Avinash Shenoy](https://github.com/avinashshenoy97) |\n\n#### License\n\nThis project is released under the [MIT License](https://github.com/avinashshenoy97/protecc/blob/master/LICENSE).\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/avinashshenoy97/protecc", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "protecc", "package_url": "https://pypi.org/project/protecc/", "platform": "", "project_url": "https://pypi.org/project/protecc/", "project_urls": { "Homepage": "https://github.com/avinashshenoy97/protecc" }, "release_url": "https://pypi.org/project/protecc/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "Access modifiers for python", "version": "0.0.2" }, "last_serial": 5421883, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ce302453636cd8b443048b708b94862e", "sha256": "a0a276c19d3da4c1f394b30b31a9e54cca965610076c9f3fe27f8b9374e01929" }, "downloads": -1, "filename": "protecc-0.0.1-py3.7.egg", "has_sig": false, "md5_digest": "ce302453636cd8b443048b708b94862e", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 3729, "upload_time": "2019-06-19T02:49:05", "url": "https://files.pythonhosted.org/packages/c2/67/55c506154745bf43ae5b1f1950b83ec946f3c19196fff7ac22de6fc4d234/protecc-0.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "709d546814cbe0ef6144cfdb0882782b", "sha256": "42903e057e0ad8a19cb4005b56a9f045df24074e574fe6e212db464242f7fa9f" }, "downloads": -1, "filename": "protecc-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "709d546814cbe0ef6144cfdb0882782b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3591, "upload_time": "2019-06-19T02:49:03", "url": "https://files.pythonhosted.org/packages/fd/15/633a0d0c28bc9e0a72344acb967652d9665516a8df3d4340c5e2c5a4d20b/protecc-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea5296394ec56a864a959cc35a68bd9a", "sha256": "a037e3cc410da53ae570705df6a58a47ab3f15158db5807407ea37d0847918b1" }, "downloads": -1, "filename": "protecc-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ea5296394ec56a864a959cc35a68bd9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2608, "upload_time": "2019-06-19T02:49:07", "url": "https://files.pythonhosted.org/packages/8b/2a/69575820fe86fa93030af89f8190d70270a2437b756f6921690056dd66ab/protecc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3a14b0ae31293c917f00369634bcb6f2", "sha256": "e5aee5758d40f96d4114c2056b4bcea0137dfc648f1c8b8d578e99683557157f" }, "downloads": -1, "filename": "protecc-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3a14b0ae31293c917f00369634bcb6f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3584, "upload_time": "2019-06-19T17:47:40", "url": "https://files.pythonhosted.org/packages/53/0f/82e55166c13b3ec959ba23ac3dd5dd7436510333d9702a63b7ddf0005657/protecc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2db369cc7ced746615e76e53de4b6bb1", "sha256": "716d255fb998f27d952a3ce733ba368e299c78cd5df6802a9125c46c940833b3" }, "downloads": -1, "filename": "protecc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "2db369cc7ced746615e76e53de4b6bb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2596, "upload_time": "2019-06-19T17:47:42", "url": "https://files.pythonhosted.org/packages/e0/20/b3a4824bb042b8e128f06318ddf59dd76776fd9d655a4e5e0390e250edba/protecc-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3a14b0ae31293c917f00369634bcb6f2", "sha256": "e5aee5758d40f96d4114c2056b4bcea0137dfc648f1c8b8d578e99683557157f" }, "downloads": -1, "filename": "protecc-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3a14b0ae31293c917f00369634bcb6f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3584, "upload_time": "2019-06-19T17:47:40", "url": "https://files.pythonhosted.org/packages/53/0f/82e55166c13b3ec959ba23ac3dd5dd7436510333d9702a63b7ddf0005657/protecc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2db369cc7ced746615e76e53de4b6bb1", "sha256": "716d255fb998f27d952a3ce733ba368e299c78cd5df6802a9125c46c940833b3" }, "downloads": -1, "filename": "protecc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "2db369cc7ced746615e76e53de4b6bb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2596, "upload_time": "2019-06-19T17:47:42", "url": "https://files.pythonhosted.org/packages/e0/20/b3a4824bb042b8e128f06318ddf59dd76776fd9d655a4e5e0390e250edba/protecc-0.0.2.tar.gz" } ] }