{ "info": { "author": "@ndaidong", "author_email": "ndaidong@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "description": "# bellapy\nBellaPy - A useful helper for any python program\n\n[![PyPI version](https://badge.fury.io/py/bella.svg)](https://badge.fury.io/py/bella)\n[![Build Status](https://travis-ci.org/ndaidong/bellapy.svg?branch=master)](https://travis-ci.org/ndaidong/bellapy)\n[![Build Status](https://gitlab.com/ndaidong/bellapy/badges/master/build.svg)](https://gitlab.com/ndaidong/bellapy/pipelines)\n\n\n## Contents\n\n* [Setup](#setup)\n* [APIs](#apis)\n* [Dev & Test](#dev--test)\n* [License](#license)\n\n\n## Setup\n\n```bash\npip install bella\n\n# or build from source\ngit clone https://github.com/ndaidong/bellapy.git\ncd bellapy\npython3 setup.py install\n```\n\n## Usage\n\n```py\nfrom bella import genid, md5\n\ngenid() # --> akrqHX7eQyT3neF6\ngenid(5) # --> xzxNK\nmd5('hello') # --> 5d41402abc4b2a76b9719d911017c592\n```\n\n\n# APIs\n\n### Datatype detection\n\n- is_int(val: Any)\n- is_float(val: Any)\n- is_num(val: Any)\n- is_str(val: Any)\n- is_bool(val: Any)\n- is_list(val: Any)\n- is_dict(val: Any)\n- is_valid_url(val: Any)\n\n\n### Encryption\n\n```python\nmd5(text: str)\nmd160(text: str)\nsha256(text: str, salt: str, dkpower: int = 3, iterations: int = 50000)\n```\n\nExamples:\n\n```python\nmd5('hello') # --> 5d41402abc4b2a76b9719d911017c592\nmd160('hello') # --> 108f07b8382412612c048d07d13f814118445acd\nsha256('1234', 'v23') # --> 457b01a0f6169725\n\n# dkpower relates to length of output, default is 3\n# output length = 2 ** (dkpower + 1)\n# for example with dkpower = 4 --> output length = 2 ** 5 = 32\nsha256('1234', 'v23', dkpower=4) # --> 457b01a0f61697250083c598f7b8a8fd\n```\n\n\n### Date & time\n\n\n```python\nPY_DATE_PATTERN # '%Y-%m-%d %H:%M:%S %z'\nMY_DATE_PATTERN # '%a, %b %d, %Y %H:%M:%S'\n\nget_time()\nformat_time(datetime, pattern)\nget_local_time()\nget_utc_time()\n```\n\nExamples\n\n```python\nfrom bella import PY_DATE_PATTERN, format_time, get_time\n\nnow = get_time()\ndate_str = format_time(now, PY_DATE_PATTERN)\nprint(date_str)\n```\n\n### Filesystem\n\n\n```python\nfrom bella import fs\n\nfs.exists(file_path: str)\nfs.isdir(file_path: str)\nfs.isfile(file_path: str)\n\n# Get list of child files/folders by specific glob pattern\nfs.get_files(pattern)\n\n# Copy file or folder `source` into `dest`:\nfs.copy(source, dest)\n\n# Remove file or folder\nfs.remove(path)\n```\n\n\n### Utils\n\n```python\ngenid(count: int = 16, prefix: str = '') # return a random string\nslugify(text: str) # create slug from a string\nstrip_accents(text: str) # remove accents string\nremove_tags(text: str) # remove HTML tags from a string\ntruncate(text: str, maxlen: int) # cut a long string to shorter one\nplurialize(word: str = None, count: int = 1) # return plural format of word\nbyte_to_text(bytesize: int, precision: int = 2)\n\nwrite_json_to_file(file_path: str = '', data: dict = {})\nread_json_from_file(file_path: str = '')\njprint(data: Any, sorting=True, identation=2)\n\nthrottle(seconds: int) # decorator, make a function throttling\ntiming(name: str) # decorator, measure time to execute an expression\n\nhas_installed(package) # check if a python package is installed\n\ncurry(func) # make `func` become a curry function\ncompose(functions) # performs right-to-left function composition\npipe(functions) # performs left-to-right function composition\n```\n\nExamples:\n\n```python\nprint(genid()) # --> akrqHX7eQyT3neF6\nprint(genid(5)) # --> xzxNK\nprint(genid(10, 'id_')) # --> id_j0fpXAZ\n\nslugify('BellaPy - A useful helper for any python program')\n# --> bellapy-a-useful-helper-for-any-python-program\nslugify('Ng\u00e0y h\u1ed9i \u201c\u0111\u00e1m m\u00e2y\u201d c\u1ee7a Amazon')\n# --> ngay-hoi-dam-may-cua-amazon\n\nplurialize('leaf', 1) # => leaf\nplurialize('leaf', 2) # => leaves\n\n@throttle(5)\ndef fn(a):\n print('No call multi times within 5 seconds')\n print(a)\n\nfn(1)\nfn(2)\nfn(3)\nfn(4)\nfn(5)\nfn(6)\nfn(7)\n\n@timing('save_item')\ndef save_item(data):\n write_json_to_file('./cache.json', data)\n\nsave_item(dict(name='Alice'))\n# => Timing for save_item: 0.00134 s\n```\n\n\n# Dev & Test\n\n```bash\ngit clone https://github.com/ndaidong/bellapy.git\ncd bellapy\npython3 -m venv venv\nsource venv/bin/activate\n(venv) pip install -r requirements.txt\n(venv) ./test.sh\n```\n\n\n# License\n\nThe MIT License (MIT)\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/ndaidong/bellapy", "keywords": "detection,manipulation,datetime,utils,helpers", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "bella", "package_url": "https://pypi.org/project/bella/", "platform": "", "project_url": "https://pypi.org/project/bella/", "project_urls": { "Homepage": "https://github.com/ndaidong/bellapy" }, "release_url": "https://pypi.org/project/bella/2.1.1/", "requires_dist": [ "pycodestyle ; extra == 'test'", "safety ; extra == 'test'", "pytest ; extra == 'test'" ], "requires_python": "", "summary": "BellaPy - A useful helper for any python program", "version": "2.1.1" }, "last_serial": 5871565, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c176fef13640a8a3619646f211bdd722", "sha256": "b424a0701aea080e527c4c336b0dd2e38f76d4580fe0efac64c623d858038323" }, "downloads": -1, "filename": "bella-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c176fef13640a8a3619646f211bdd722", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6115, "upload_time": "2018-12-28T07:12:55", "url": "https://files.pythonhosted.org/packages/16/0f/13ffadd0e00c13fe85540f636e8712cce5a750a616809dc18eed4859afeb/bella-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60bd190a9c4f23cb8a2ea40e782baaa7", "sha256": "9ddff789208fe185cd73865b607592d0f11d7cfe6c015adadf56702d714f3dab" }, "downloads": -1, "filename": "bella-1.0.0.tar.gz", "has_sig": false, "md5_digest": "60bd190a9c4f23cb8a2ea40e782baaa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4282, "upload_time": "2018-12-28T07:12:57", "url": "https://files.pythonhosted.org/packages/d0/7d/d9a512d82b9739f0f8494b1366a86c3128d5adc190bfb8821ba2f106553e/bella-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "67090be3f6bafc510cc34acedee08dd1", "sha256": "96c1275aed5a805ea14af7eb556553638d452e0427d996083dddc109efcc731e" }, "downloads": -1, "filename": "bella-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "67090be3f6bafc510cc34acedee08dd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6116, "upload_time": "2018-12-28T09:09:54", "url": "https://files.pythonhosted.org/packages/d0/97/7849f12986f75ffcbc8b6e02941b4d18bbabd6a643bc2f375223e6c4e989/bella-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfcb810a8cbb28d6f8fcafe31b3f0e9b", "sha256": "24d55a7463249dec8bed0944b27394103ab7b5f0592dfac5903e105e2d882150" }, "downloads": -1, "filename": "bella-1.1.0.tar.gz", "has_sig": false, "md5_digest": "dfcb810a8cbb28d6f8fcafe31b3f0e9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4261, "upload_time": "2018-12-28T09:09:56", "url": "https://files.pythonhosted.org/packages/bd/97/87e98258493beee19a5aacb6a5c40a5cb7de012a2749ca4725ebf1acc80f/bella-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "10551cbca017a4b7a195cfc532402eac", "sha256": "972b1eeca0e7360b6feb5d3abdaa742c0b6b33cc61540253e6a34ad2bec503f4" }, "downloads": -1, "filename": "bella-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "10551cbca017a4b7a195cfc532402eac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6128, "upload_time": "2019-01-02T10:10:44", "url": "https://files.pythonhosted.org/packages/33/a7/1d9108b3fca5d121f9b50c0f119872b1b2dd71a38eb1cb5d5a33106aa9b3/bella-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e4629c850c1e6fd1f17f46f9caadaa8", "sha256": "67da872e9c35c4172bd2dd10dc5c650c4084fcde205a23209392799e03d6920d" }, "downloads": -1, "filename": "bella-1.2.0.tar.gz", "has_sig": false, "md5_digest": "6e4629c850c1e6fd1f17f46f9caadaa8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4285, "upload_time": "2019-01-02T10:10:46", "url": "https://files.pythonhosted.org/packages/63/c6/76224e536b2fc9ee3081d88cbca37cb9cdb9be386fb17aa533df788b16f4/bella-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "86872fda89de356b8023689d1aedda25", "sha256": "bc03cdaa2cb4ed6d90ecd52907a244aa1c8a5f4d751657f1737ccd888de25e2d" }, "downloads": -1, "filename": "bella-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "86872fda89de356b8023689d1aedda25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6525, "upload_time": "2019-01-25T04:03:20", "url": "https://files.pythonhosted.org/packages/2e/b6/7d157173442205e64ab6ccbd3a020fc99a64debc32d34202a490d67e1e26/bella-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9c5166834f24396cea0953617886b56", "sha256": "170a6a4cbf1d3229a40f8653560315f1807a4dff9a736a5fac68f756843ffdc3" }, "downloads": -1, "filename": "bella-1.2.1.tar.gz", "has_sig": false, "md5_digest": "c9c5166834f24396cea0953617886b56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4502, "upload_time": "2019-01-25T04:03:21", "url": "https://files.pythonhosted.org/packages/3b/9e/10d177b0626b29c24c746ae5eccb0dc484820c6ee4545fe22ae386984b6b/bella-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "0ae04a273c72bb8c7018d294960e1e7a", "sha256": "a6c614fba8c404fdce78d258a791c4b71e051ab5e377c6165ce2bc7a52bd4523" }, "downloads": -1, "filename": "bella-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0ae04a273c72bb8c7018d294960e1e7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6623, "upload_time": "2019-04-09T10:42:33", "url": "https://files.pythonhosted.org/packages/1b/6b/9ea62b57dab1f62bb6865eefbe99aa4be4aadcf1f7ed3a159dd6faa269db/bella-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02f981d0e6014f6b58cd4db3b793d233", "sha256": "e5b1f0a2dbdd81680d49e675b3436dc056d3bdb231a73eb9b4d4a2aaf62df04a" }, "downloads": -1, "filename": "bella-1.2.2.tar.gz", "has_sig": false, "md5_digest": "02f981d0e6014f6b58cd4db3b793d233", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4622, "upload_time": "2019-04-09T10:42:35", "url": "https://files.pythonhosted.org/packages/20/b9/6376c328c5216e8ca378570e4be9205acb4128687d6330b4bc35e920ecfc/bella-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "e0348655de2cdf00c32aa6647e21f3d4", "sha256": "cb51d39bfa7a0ee373502ec1a4999b570a9075730f6ead82c16d9f97201a726d" }, "downloads": -1, "filename": "bella-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e0348655de2cdf00c32aa6647e21f3d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8114, "upload_time": "2019-04-11T10:22:57", "url": "https://files.pythonhosted.org/packages/ff/cc/a5db45059f410e2f92d2f713900f401a6d86f0541c85210f6f79cd983823/bella-1.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "763e99992938bc67cbe3d0682cfdb782", "sha256": "3c2cb012cc91b39781a67a433b64a314d95dcb5bed676869db1a4b8ecaa8e338" }, "downloads": -1, "filename": "bella-1.2.3.tar.gz", "has_sig": false, "md5_digest": "763e99992938bc67cbe3d0682cfdb782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6069, "upload_time": "2019-04-11T10:23:00", "url": "https://files.pythonhosted.org/packages/35/34/0e526b7b0646b303614650da461eba3ec2a0a6895f82ac81b57942d9ab4d/bella-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "95a5dd40ea1be841bac520e61a243d52", "sha256": "05768554bfd7e950836604bcc43a4d85b2924c8fd20f28b3fe493d4db8513336" }, "downloads": -1, "filename": "bella-1.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "95a5dd40ea1be841bac520e61a243d52", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8069, "upload_time": "2019-04-11T10:52:39", "url": "https://files.pythonhosted.org/packages/6f/17/39b91949e16260b28b7e7449bf5f53ff05a7b6124fee928564e6092c9318/bella-1.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b5ad3e0a4314b361757fa5b6f03c0c9", "sha256": "e63fe219a6c70e13f8fd6b8b8c11bc7151f6a9edd67d5178e7f8512054b4f926" }, "downloads": -1, "filename": "bella-1.2.4.tar.gz", "has_sig": false, "md5_digest": "4b5ad3e0a4314b361757fa5b6f03c0c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6078, "upload_time": "2019-04-11T10:52:43", "url": "https://files.pythonhosted.org/packages/09/8c/8497753615973d2b64d908253131dd272fbc1aec20b254445ab4440c2b87/bella-1.2.4.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "70af80ef5a6d40c842fa331ac4552672", "sha256": "de15fe3008ad9168019cd00357b2c4089ee75f44535140557ca7e518ba13da08" }, "downloads": -1, "filename": "bella-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70af80ef5a6d40c842fa331ac4552672", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9720, "upload_time": "2019-09-02T11:21:07", "url": "https://files.pythonhosted.org/packages/ae/ba/ded8b2c579e64782ecb0d87b66f27b54b777950a487f7c532b469371abda/bella-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a7814c0badbf8bc6fc0bb2de26dfef2", "sha256": "a6093e338e4ff2381e0b7de5fbf732b6503805727a9eef976c00d74516c838ba" }, "downloads": -1, "filename": "bella-2.0.0.tar.gz", "has_sig": false, "md5_digest": "6a7814c0badbf8bc6fc0bb2de26dfef2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7390, "upload_time": "2019-09-02T11:21:12", "url": "https://files.pythonhosted.org/packages/5f/cc/5865d8feeceee4f99cdf3ed6474d4947c2d2b31cd231a1da93dd9656f325/bella-2.0.0.tar.gz" } ], "2.0.0rc1": [ { "comment_text": "", "digests": { "md5": "1778591ea523a3c31f51683844a2a82c", "sha256": "79384f97f7c38777a13574a4d067b8ed91ce8c41ef94133a819c181f2e1729a5" }, "downloads": -1, "filename": "bella-2.0.0rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "1778591ea523a3c31f51683844a2a82c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9765, "upload_time": "2019-09-02T11:14:13", "url": "https://files.pythonhosted.org/packages/b5/28/d76523ba8158cb53d5c0b37e3242db182585deeff1aa1f0ec17863ff19bd/bella-2.0.0rc1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b669028b7a0959c7216b4642d1f5d77", "sha256": "b0da3b9f302f301a1baad667b5020c4d2e47fdd821d5a5ae2f81b21d23976a71" }, "downloads": -1, "filename": "bella-2.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "5b669028b7a0959c7216b4642d1f5d77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7385, "upload_time": "2019-09-02T11:14:15", "url": "https://files.pythonhosted.org/packages/d9/f7/f42c4878d260cac6318f6e92d20a562241e83f212324e27cf4f62a14327a/bella-2.0.0rc1.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "d986079f96417ec68ac79dad6b562b7a", "sha256": "f34ac534c3b1dbf4468aee768a4936cb413c515b9d3c3680b8d3638b1dfaee72" }, "downloads": -1, "filename": "bella-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d986079f96417ec68ac79dad6b562b7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9884, "upload_time": "2019-09-07T16:13:45", "url": "https://files.pythonhosted.org/packages/44/0f/7c387afbe117744f062987b98bfbd9c95a9f12aaf279e2aee37bdf01d68f/bella-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "344644352a1fc0be214572451e2a9b65", "sha256": "b0e8890d5f5de88706cdf67415aa590b4562577cfe0b15d80febbe827315ff44" }, "downloads": -1, "filename": "bella-2.1.0.tar.gz", "has_sig": false, "md5_digest": "344644352a1fc0be214572451e2a9b65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7566, "upload_time": "2019-09-07T16:13:50", "url": "https://files.pythonhosted.org/packages/f6/46/2fec7c1f7dc8744dd669e2a6054c6164f8ef3cce3e768af911a89242db18/bella-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "ad42b2735f4f1fd22d5df2912971a69f", "sha256": "dae4f5eeaa9f81f044775552e8d280abe14f8d648344b47065ad736ab00fce98" }, "downloads": -1, "filename": "bella-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ad42b2735f4f1fd22d5df2912971a69f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9840, "upload_time": "2019-09-23T05:07:28", "url": "https://files.pythonhosted.org/packages/64/25/f97a9f2661e51214a6dff59ea2fab13a0ed399388ec4ce19109d8fa89261/bella-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef68e879c9611bd794a133ecb0404e1d", "sha256": "28fe5d721901307c04d5bdfa090c0c4607a9c7c6ec43588e149f906b16fa5d4a" }, "downloads": -1, "filename": "bella-2.1.1.tar.gz", "has_sig": false, "md5_digest": "ef68e879c9611bd794a133ecb0404e1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7562, "upload_time": "2019-09-23T05:07:30", "url": "https://files.pythonhosted.org/packages/9b/df/44790154c3acdfcb988d34442ef002917648020ad136a26c1ccd3a66e604/bella-2.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ad42b2735f4f1fd22d5df2912971a69f", "sha256": "dae4f5eeaa9f81f044775552e8d280abe14f8d648344b47065ad736ab00fce98" }, "downloads": -1, "filename": "bella-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ad42b2735f4f1fd22d5df2912971a69f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9840, "upload_time": "2019-09-23T05:07:28", "url": "https://files.pythonhosted.org/packages/64/25/f97a9f2661e51214a6dff59ea2fab13a0ed399388ec4ce19109d8fa89261/bella-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef68e879c9611bd794a133ecb0404e1d", "sha256": "28fe5d721901307c04d5bdfa090c0c4607a9c7c6ec43588e149f906b16fa5d4a" }, "downloads": -1, "filename": "bella-2.1.1.tar.gz", "has_sig": false, "md5_digest": "ef68e879c9611bd794a133ecb0404e1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7562, "upload_time": "2019-09-23T05:07:30", "url": "https://files.pythonhosted.org/packages/9b/df/44790154c3acdfcb988d34442ef002917648020ad136a26c1ccd3a66e604/bella-2.1.1.tar.gz" } ] }