{ "info": { "author": "ZHONG KAIXIANG", "author_email": "xiang.ace@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython" ], "description": "***********************\nkkconst: const util lib\n***********************\n\n**kkconst** is a constant-tools library.\n\nProject Links\n=============\n\n- GitHub: https://github.com/kaka19ace/kkconst\n- PyPi: https://pypi.python.org/pypi/kkconst\n\nSupport Types:\n==============\nint, str, bytes, datetime\n\nIn PY2: with unicode\n\n\nNew Features\n============\n**1.1.3**\n 1. bugfix\n**1.1.2**\n 1. fixed demos code\n**1.1.0**\n 1. Meta support 'strict_capital' attribute to require const class's const variable capital naming.\n\n\nExample\n=======\n\n**int: status_code**\n\n.. code-block:: python\n\n from __future__ import print_function\n import json\n from collections import OrderedDict\n from kkconst import BaseConst, ConstIntField\n\n class BaseStatusCode(BaseConst):\n class Meta:\n allow_duplicated_value = False # status_code should be no duplicated value\n\n\n class StatusCodeField(ConstIntField):\n def __init__(self, status_code, message=u\"\", description=u\"\"):\n ConstIntField.__init__(status_code, verbose_name=message, description=description)\n self.message = message\n\n\n class ServiceStatusCode(BaseStatusCode):\n SERVICE_UNAVAILABLE = StatusCodeField(10001, u\"service unavailable\", description=u\"server is sleeping/\u670d\u52a1\u6253\u76f9\u4e86\")\n\n\n status_code = ServiceStatusCode.SERVICE_UNAVAILABLE\n assert isinstance(status_code, ConstIntField)\n assert isinstance(status_code, int)\n\n print(status_code.verbose_name) # \"service unavailable\"\n print(status_code.description) # \"server is sleeping\"\n\n # for restful response\n response_data = OrderedDict()\n response_data[\"status_code\"] = status_code\n response_data[\"message\"] = status_code.verbose_name # also status_code.message is the same value\n response_data[\"description\"] = status_code.description\n response_data[\"extra_message\"] = \"may you live in an interesting time\"\n print(json.dumps(response_data, indent=2))\n # {\n # \"status_code\": 10001,\n # \"message\": \"service unavailable\",\n # \"description\": \"server is sleeping\",\n # \"extra_message\": \"may you live in an interesting time\"\n # }\n #\n # def views(request):\n # ...\n # return HttpResponse(200, response_data, \"application/json\")\n #\n\n**float: math constant**\n\n.. code-block:: python\n\n from __future__ import print_function\n from kkconst import (\n BaseConst,\n ConstFloatField,\n )\n\n class MathConst(BaseConst):\n PI = ConstFloatField(3.1415926, verbose_name=u\"Pi\")\n E = ConstFloatField(2.7182818284, verbose_name=u\"mathematical constant\") # Euler's number\"\n GOLDEN_RATIO = ConstFloatField(0.6180339887, verbose_name=u\"Golden Ratio\")\n\n magic_num = MathConst.GOLDEN_RATIO\n assert isinstance(magic_num, ConstFloatField)\n assert isinstance(magic_num, float)\n\n print(magic_num) # 0.6180339887\n print(magic_num.verbose_name) # Golden Ratio\n\n**str: system message**\n\n.. code-block:: python\n\n from kkconst import BaseConst, ConstStringField\n # Python3 ConstStringField is equal to ConstUnicodeField\n class SystemMessage(BaseConst):\n SERVICE_UNAVAILABLE = ConstStringField(u\"service unavailable\", verbose_name=u\"Service is sleeping\")\n PERMISSION_DENY = ConstStringField(u\"permission deny\", verbose_name=u\"your have no permission\")\n\n**datetime: released datetime**\n\n.. code-block:: python\n\n class ReleasedDatetime(BaseConst):\n PYTHON_2_0 = ConstDatetimeField(\"2000-10-16\", verbose_name=\"PY2 Released\")\n PYTHON_3_0 = ConstDatetimeField(datetime.datetime(year=2008, month=12, day=3), verbose_name=\"PY3 Released\")\n\n released_datetime = ReleasedDatetime.PYTHON_2_0\n assert isinstance(field_value, ConstDatetimeField)\n assert isinstance(field_value, datetime.datetime)\n\n print(field_value)\n print(field_value.verbose_name) # \"PY2 Released\"\n\n\n**BaseConst: Your Const Helper**\n like peewee model' Meta, we can use Meta to help manage the const variable\n\n.. code-block:: python\n\n the Meta support such attributes:\n\n allow_duplicated_value - bool\n default True,\n when set False, if exists a variable has the same as the another variable defined before,\n then raise AttributeError\n\n strict_capital - bool\n default True, the ConstClass will check the const variable name,\n if name is not upper, then raise AttributeError\n\n.. code-block:: python\n\n class ErrorCode(BaseConst):\n class Meta:\n allow_duplicated_value = False\n strict_capital = True\n\n USER_ID_NOT_EXISTS = ConstIntField(20001, verbose_name=\"USER_ID_ERROR\")\n\n # will raise Error, because has the same with USER_ID_NOT_EXISTS\n # USER_EMAIL_INVALID = ConstIntField(20001, verbose_name=\"USER_EMAIL_ERROR\")\n\n # will raise Error, because some letters are lowercase\n # User_Password_Invalid = ConstIntField(20003, verbose_name=\"USER_PASSWORD_ERROR\")\n\n\nGet It Now\n==========\n\n::\n\n $ pip install kkconst\n\n\nLicense\n=======\n\nMIT licensed. See the bundled `LICENSE `_ file for more details.\n\nRequirements\n============\n\n- Python >= 2.7 or >= 3.4", "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/kaka19ace/kkconst/", "keywords": null, "license": "http://opensource.org/licenses/MIT", "maintainer": null, "maintainer_email": null, "name": "kkconst", "package_url": "https://pypi.org/project/kkconst/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/kkconst/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kaka19ace/kkconst/" }, "release_url": "https://pypi.org/project/kkconst/1.1.3/", "requires_dist": null, "requires_python": null, "summary": "Define const field and const class, customize it as You Like (Python)", "version": "1.1.3" }, "last_serial": 2131197, "releases": { "1.0.22": [ { "comment_text": "", "digests": { "md5": "293281ee8bbf898a7b6e0381268df149", "sha256": "83fbd4620d00b27faee45c19fa895d80078d50da7bcfea2ad247890faea03999" }, "downloads": -1, "filename": "kkconst-1.0.22.tar.gz", "has_sig": false, "md5_digest": "293281ee8bbf898a7b6e0381268df149", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4409, "upload_time": "2015-11-15T17:51:16", "url": "https://files.pythonhosted.org/packages/f3/d6/487c9869c617f6503bab37d21cb3a07b8f063473e55bf885a3c904ecfeab/kkconst-1.0.22.tar.gz" } ], "1.0.23": [ { "comment_text": "", "digests": { "md5": "a5f608e70b8776e431d8cd173bec6b1a", "sha256": "d42ae720c5fed54db3968c733ff59c42f80ba574c3a99b6854910549736cf389" }, "downloads": -1, "filename": "kkconst-1.0.23.tar.gz", "has_sig": false, "md5_digest": "a5f608e70b8776e431d8cd173bec6b1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5316, "upload_time": "2015-11-15T19:17:36", "url": "https://files.pythonhosted.org/packages/3b/0d/9a4f82930393192cb92997f7e63f586615677129dfb2b1e11ad32d1ee486/kkconst-1.0.23.tar.gz" } ], "1.0.24": [ { "comment_text": "", "digests": { "md5": "8d4855b095a5e196624429082a5bbd81", "sha256": "46d4df717390d3e4fdcb77b036dcf6426ab4d0b360b1ed9ed9ae845a8c7b757c" }, "downloads": -1, "filename": "kkconst-1.0.24.tar.gz", "has_sig": false, "md5_digest": "8d4855b095a5e196624429082a5bbd81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5105, "upload_time": "2015-11-16T16:15:36", "url": "https://files.pythonhosted.org/packages/2e/92/f103904156edc471857ff9e7d099f118332cccdc25261f438ff5d7a2efda/kkconst-1.0.24.tar.gz" } ], "1.0.24a": [ { "comment_text": "", "digests": { "md5": "66803d50efb18cd8cf67aebea3a7961d", "sha256": "017d7eae401f33e9e98f66a0d6b11491f7d595e4220f0f3950ab3ddec59d2ceb" }, "downloads": -1, "filename": "kkconst-1.0.24a.tar.gz", "has_sig": false, "md5_digest": "66803d50efb18cd8cf67aebea3a7961d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5122, "upload_time": "2015-11-16T15:50:30", "url": "https://files.pythonhosted.org/packages/17/8f/607d874e55d2b370ee6aaaa59bc1236d0828621895db9349fb98ff5027c3/kkconst-1.0.24a.tar.gz" } ], "1.0.25": [ { "comment_text": "", "digests": { "md5": "90bd05be5763c1a2b6a55f7bcaa545a4", "sha256": "66cd76364833397965fb27e5d3fc8c1db6c64d638b1bd2df3a301edc2dd58b35" }, "downloads": -1, "filename": "kkconst-1.0.25.tar.gz", "has_sig": false, "md5_digest": "90bd05be5763c1a2b6a55f7bcaa545a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5640, "upload_time": "2015-12-12T09:54:21", "url": "https://files.pythonhosted.org/packages/7a/76/c00cb25744cb70cf15870120a40d560908fb9d55e06ec1cbe223758790c5/kkconst-1.0.25.tar.gz" } ], "1.0.26": [ { "comment_text": "", "digests": { "md5": "3acabee3d5e57400ddd4af40cb4a3946", "sha256": "de738e0c234376e9e3ceacaac30f44113f2aeba5ba23706d752c7f5afdbafb0d" }, "downloads": -1, "filename": "kkconst-1.0.26.tar.gz", "has_sig": false, "md5_digest": "3acabee3d5e57400ddd4af40cb4a3946", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5381, "upload_time": "2015-12-13T18:03:32", "url": "https://files.pythonhosted.org/packages/ae/1a/df43ac684010451f26654d6692a5579f6cdc09da7b27197f3097943c21d3/kkconst-1.0.26.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9b5d5ca9bdd78a42e87ca01123daa838", "sha256": "e6b47956f9f74d65d6f4739d0c21d158787111cd3ce594b2e22dfda5198dd8bd" }, "downloads": -1, "filename": "kkconst-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9b5d5ca9bdd78a42e87ca01123daa838", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5942, "upload_time": "2015-12-14T17:47:55", "url": "https://files.pythonhosted.org/packages/29/65/0e655e6c1a41110bf97e39e82a0accfdd1cbabd18e0fa320e85f645f9da2/kkconst-1.1.0.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "95e87f616ad08c814cb049b2ce4e9b6c", "sha256": "7d54fe13b2286f71dbd12392af1b6ebd73eb54c30b1651f101c226f5d0f7d6da" }, "downloads": -1, "filename": "kkconst-1.1.2.tar.gz", "has_sig": false, "md5_digest": "95e87f616ad08c814cb049b2ce4e9b6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6023, "upload_time": "2015-12-14T18:13:37", "url": "https://files.pythonhosted.org/packages/13/44/e2874c642485b436ccf94c00ff40b79434755561d827a62ed7c2bb9e7549/kkconst-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "904567c4353fb9107fbeebdb2acecba6", "sha256": "aac2ceafbf21e3f06cbc829f06c0e19eaf78751a814d95a3f9cce4f594f410d3" }, "downloads": -1, "filename": "kkconst-1.1.3.tar.gz", "has_sig": false, "md5_digest": "904567c4353fb9107fbeebdb2acecba6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6035, "upload_time": "2016-05-24T14:34:49", "url": "https://files.pythonhosted.org/packages/0a/08/e01605165c4e7a460affbda77a07f6b0478da04ab2b68c9bda91d7a2b3ab/kkconst-1.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "904567c4353fb9107fbeebdb2acecba6", "sha256": "aac2ceafbf21e3f06cbc829f06c0e19eaf78751a814d95a3f9cce4f594f410d3" }, "downloads": -1, "filename": "kkconst-1.1.3.tar.gz", "has_sig": false, "md5_digest": "904567c4353fb9107fbeebdb2acecba6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6035, "upload_time": "2016-05-24T14:34:49", "url": "https://files.pythonhosted.org/packages/0a/08/e01605165c4e7a460affbda77a07f6b0478da04ab2b68c9bda91d7a2b3ab/kkconst-1.1.3.tar.gz" } ] }