{ "info": { "author": "MemoryLeak", "author_email": "irealing@163.com", "bugtrack_url": null, "classifiers": [], "description": "# ugly-code\n## \u5b89\u88c5\n\n```shell\n$ pip install ugly-code\n```\n\n## Command \u5de5\u5177\n\n* \u81ea\u52a8\u6ce8\u5165\u547d\u4ee4\u884c\u53c2\u6570\u5230\u51fd\u6570 (`ugly_code.cmd.Command`)\n\n\n\u521b\u5efa\u6d4b\u8bd5\u6587\u4ef6 `cmd_debug.py`\n\n```python\nfrom ugly_code.cmd import Command\n\n@Command\ndef main(x:int, y ,z=1023):\n \"\"\"\n \u6d4b\u8bd5\u4e00\u4e0b\n \"\"\"\n print(\"{x} \\t {y} \\t {z}\".format(**locals()))\n\nif __name__ == '__main__':\n globals()['main']()\n```\n\n\u6267\u884c\u8be5\u6587\u4ef6\n\n```shell\n$ python cmd_debug.py -x 1023 -y 333\n1023 333 1023\n```\n\n\u6709\u9ed8\u8ba4\u503c\u7684\u53c2\u6570\u4f1a\u88ab\u8bbe\u7f6e\u4e3a\u53ef\u9009\u53c2\u6570,\u65e0\u9ed8\u8ba4\u503c\u5219\u8bbe\u7f6e\u4e3a\u5fc5\u9009.\n\n\u4f7f\u7528[Type Hints](http://vvia.xyz/goyXNE)\u7684\u53c2\u6570\u53ef\u81ea\u52a8\u8fdb\u884c\u7c7b\u578b\u68c0\u67e5.\n### \u4f7f\u7528 CMDHolder\u6301\u6709 Command\n\n* \u521b\u5efa\u547d\u4ee4\u884c\u5de5\u5177\u7ec4\n\n\u7f16\u8f91\u6587\u4ef6`cmd_debug.py`\n\n```python\nfrom ugly_code.cmd import CMDHolder\n\n\n@CMDHolder.command(\"test\", \"\u6d4b\u8bd5\")\ndef main(x: int, b: str, c: int=1):\n \"\"\"\n \u6d4b\u8bd5\u4e00\u4e0b\n \"\"\"\n print(\"{x} \\t {y} \\t {z}\".format(**locals()))\n\n\n@CMDHolder.command(\"echo\", \"echo\")\ndef echo(words):\n \"\"\"echo\"\"\"\n print(words)\n\n\nif __name__ == '__main__':\n CMDHolder(__name__).execute()\n\n```\n\n\u6267\u884c\u8be5\u6587\u4ef6:\n\n```shel\n$ python3 cmd_debug.py echo -words \"\u6d4b\u8bd5\"\n\u6d4b\u8bd5\n$ python3 cmd_debug.py test\nusage: Command line create by ugly-code.\n\n \u6d4b\u8bd5\u4e00\u4e0b\n [-h] -x X -b B [-c C]\nCommand line create by ugly-code.\n\n \u6d4b\u8bd5\u4e00\u4e0b\n : error: the following arguments are required: -x, -b\n```\n\n\u7531\u793a\u4f8b\u53ef\u53d1\u73b0\uff0cCMDHolder\u53ef\u4ee5\u6301\u6709\u591a\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6839\u636e\u4e0d\u540c\u7684\u53c2\u6570\u8c03\u7528\u4e0d\u540c\u7684\u547d\u4ee4\u884c\u5bf9\u8c61\u3002\u800c\u4e14\u8fd8\u53ef\u4ee5\u81ea\u5b9a\u4e49\u547d\u4ee4\u884c\u5de5\u5177\u7684\u540d\u79f0\u4e0e\u4ecb\u7ecd\u3002\n\n\n## \u5b89\u88c5\u65b9\u6cd5\n\n```shell\n$ pip install ugly-code\n```\n## \u7f51\u7edc/IP\u76f8\u5173\u5de5\u5177\n\n### IP\u5de5\u5177(IPv4)\n#### IP\u5730\u5740\u548cINT\u4e92\u8f6c\n```python\nfrom ugly_code.net import IPv4\n# IP\u5730\u5740\u8f6cINT\niv = IPv4.ipn(\"192.168.99.0\")\nprint(iv)\n# \u8f93\u51fa 3232260864\n# INT \u8f6c\u4e3aIP\nip=IPv4.nip(iv)\nprint(ip)\n# \u8f93\u51fa 192.168.99.0\n```\n\n#### \u662f\u5426\u79c1\u6709IP\n\n```python\nfrom ugly_code.net import IPv4\n\niv=IPv4(\"192.168.99.233\")\n\nprint(iv.is_private())\n# \u8f93\u51fa True\n```\n\n#### \u5176\u5b83\n\n```python\nfrom ugly_code.net import IPv4\n\nip = IPv4('192.168.99.233')\n# \u83b7\u53d6\u9ed8\u8ba4\u5b50\u7f51\u63a9\u7801\nprint(ip.default_mask_str())\n# \u8f93\u51fa 255.255.255.0\n\n# \u68c0\u6d4b\u662f\u5426\u672c\u5730\u56de\u73af\u5730\u5740\nprint(ip.is_loop_back())\n# \u8f93\u51fa False\n```\n\n* `IPv4`\u91cd\u5199\u4e86\u5305\u542b *>*\u3001*<*\u3001*==*\u3001*!=*\u3001*<=*\u3001*>=* \u7684\u64cd\u4f5c\u7b26\n\n### Network\u5de5\u5177\n\n```python\nfrom ugly_code.net import IPv4,Network\n\nnt = Network('192.168.99.0',mask=24)\n# \u8f93\u51fa\u7f51\u7edc\u5730\u5740\nprint(nt.net_address())\n# \u8f93\u51fa 192.168.99.0\nprint(Network('10.0.0.235',mask=24))\n# \u8f93\u51fa 10.0.0.0\n# \u8f93\u51fa\u5b50\u7f51\u63a9\u7801\nprint(nt.mask())\n# \u8f93\u51fa 255.255.255.0\n# \u8f93\u51fa\u5e7f\u64ad\u5730\u5740\nprint(nt.broadcast_address())\n# \u8f93\u51fa 192.168.99.255\n# \u68c0\u6d4b IP \u662f\u5426\u5728\u8be5\u7f51\u7edc\u4e2d\nprint(IPv4('192.168.99.99') in nt)\n# \u8f93\u51fa\u7ed3\u679c True\n```\n### \u6269\u5c55\u5de5\u5177\u96c6\n\n#### \u5bf9\u8c61\u4ee3\u7406\u5de5\u5177\n\n```python\nfrom ugly_code.ex import ObjectProxy\n\nobj = ObjectProxy(dict(a=1, b=2, c=3, d=dict(a=1, b=2)))\nprint(obj.d.a)\n\n```\n\n*[\u66f4\u591a\u8bf4\u660e](http://vvia.xyz/wnBAQb)*\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://vvia.xyz/wnBAQb", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ugly-code", "package_url": "https://pypi.org/project/ugly-code/", "platform": "any", "project_url": "https://pypi.org/project/ugly-code/", "project_urls": { "Homepage": "http://vvia.xyz/wnBAQb" }, "release_url": "https://pypi.org/project/ugly-code/0.0.7/", "requires_dist": null, "requires_python": "", "summary": "ugly-code tools", "version": "0.0.7" }, "last_serial": 5637646, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8be5343b97a13620f82f0cb4a2f969bf", "sha256": "faed1bf4d8756287b322798bfd087b67fac6afe8d524324f73171c162de53b76" }, "downloads": -1, "filename": "ugly_code-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8be5343b97a13620f82f0cb4a2f969bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2659, "upload_time": "2018-04-17T07:52:42", "url": "https://files.pythonhosted.org/packages/83/8c/6500eed7f56704d6f7aae3bdf8e1c6b4bdec42ecc87db7b9ca5ded18db85/ugly_code-0.0.1-py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "90a9ca0ab07f8fc8a70aa3ea2c8ee2d6", "sha256": "bacb63f3c5aca0c00a7c5328ffcc434f106bfdbf9f9e44e41b3f14e250173b0e" }, "downloads": -1, "filename": "ugly_code-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "90a9ca0ab07f8fc8a70aa3ea2c8ee2d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2589, "upload_time": "2018-04-17T09:40:23", "url": "https://files.pythonhosted.org/packages/2e/e4/4c426c9c8024daf76d7b447dacaef2dfabbf61fc0b57eab40e87665a3475/ugly_code-0.0.2-py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "84ed9bd2df48d72dee2870f50e66e8d8", "sha256": "f1cee60d95aae50fd0ab4e181de109b67fe7097befcd779dcebc5ed29ad851b9" }, "downloads": -1, "filename": "ugly_code-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "84ed9bd2df48d72dee2870f50e66e8d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4121, "upload_time": "2018-09-12T05:39:42", "url": "https://files.pythonhosted.org/packages/a7/48/a3aa883f41cbece003ccdfca9f8d5f40e9fbbc2462559f8214c3752abcde/ugly_code-0.0.3-py3-none-any.whl" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3a617d5fb41be91ee7d051ec89e11d06", "sha256": "99e890f1180a85bd8528ede5e86076e7b3988eeec0227bfe86fd56b7d9fc5819" }, "downloads": -1, "filename": "ugly_code-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3a617d5fb41be91ee7d051ec89e11d06", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5366, "upload_time": "2019-01-08T10:28:38", "url": "https://files.pythonhosted.org/packages/6d/6a/ff89ff21aa6dbad2441c531b929d6d96210479a3d1e13858a07ee917f81f/ugly_code-0.0.4-py3-none-any.whl" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "c77e0f3c99b2b4ace1ace1c90d9c6b85", "sha256": "b8aca89524856cce7bc2bc7d89e05d897e1f9eb6363d4c5ce917cd7368d6dd5b" }, "downloads": -1, "filename": "ugly_code-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "c77e0f3c99b2b4ace1ace1c90d9c6b85", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8356, "upload_time": "2019-01-09T02:16:19", "url": "https://files.pythonhosted.org/packages/5c/3a/4e814d60f592293f8ae3986c81152beeb7e0de62fa5f8f07496b4e6a9b95/ugly_code-0.0.6-py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "b262f795f6ffc753ad11993cdabacc51", "sha256": "2b05d5698e2384bbfd6d6947c79f4dab25cfd58dda38d1f3d96ec78fbbf6d415" }, "downloads": -1, "filename": "ugly_code-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "b262f795f6ffc753ad11993cdabacc51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7453, "upload_time": "2019-08-06T05:15:14", "url": "https://files.pythonhosted.org/packages/58/15/b893a0539fff65d00a928616f6995408d17df36af6c34d8aa89d1ba72d69/ugly_code-0.0.7-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b262f795f6ffc753ad11993cdabacc51", "sha256": "2b05d5698e2384bbfd6d6947c79f4dab25cfd58dda38d1f3d96ec78fbbf6d415" }, "downloads": -1, "filename": "ugly_code-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "b262f795f6ffc753ad11993cdabacc51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7453, "upload_time": "2019-08-06T05:15:14", "url": "https://files.pythonhosted.org/packages/58/15/b893a0539fff65d00a928616f6995408d17df36af6c34d8aa89d1ba72d69/ugly_code-0.0.7-py3-none-any.whl" } ] }