{ "info": { "author": "damnever", "author_email": "dxc.wolf@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Utilities" ], "description": "f-strings(Python 3.6) style literal string interpolation.\n==========================================================\n\n.. image:: https://img.shields.io/travis/damnever/fmt.svg?style=flat-square\n :target: https://travis-ci.org/damnever/fmt\n\n.. image:: https://img.shields.io/pypi/v/fmt.svg?style=flat-square\n :target: https://pypi.python.org/pypi/fmt\n\n\nUsing `f-strings(PEP 498) `_ style literal string interpolation without Python 3.6.\n\n\nUsages\n------\n\n- Accessing the globals and locals.\n\n .. code:: python\n\n import os\n import fmt as f\n\n g_foo = 'global-foo'\n g_bar = 'global-bar'\n g_num = 23\n g_ls = [1, 2, 3]\n\n def scope():\n l_foo = 'local-foo'\n l_bar = 'local-bar'\n print( f('{l_foo}, {l_bar}') ) # 'local-foo, local-bar'\n print( f('{g_foo}, {g_bar!r}') ) # \"global-foo, 'global-bar'\"\n\n scope()\n print( f('{{ }}') ) # '{ }'\n print( f('hex: {g_num:#x}') ) # '0x17'\n print( f('{os.EX_OK}') ) # '0'\n print( f('{g_ls[0]}, {g_ls[1]}, {g_ls[2]}') ) # '1, 2, 3'\n\n\n- **NOTE**: **Closure** will be a little tricky, must pass the outside scope variables as arguments to f,\n which added a reference to inside the closure in order this can work.\n\n .. code:: python\n\n import fmt as f\n\n def outer(x='xx'):\n y = 'yy'\n def inner():\n print( f('{x}, {y}', x, y) ) # \"xx, yy\"\n return inner\n\n outer()()\n\n\n- Expression evaluation.\n\n .. code:: python\n\n from datetime import datetime\n import fmt as f\n\n class S(object):\n def __str__(self):\n return 'hello'\n def __repr__(self):\n return 'hi'\n def __format__(self, fmt):\n return 'abcdefg'[int(fmt)]\n\n print( f('{1234567890:,}') ) # '1,234,567,890'\n print( f('{1 + 2}') ) # '3'\n print( f('{str(1 + 2)!r}') ) # \"'3'\"\n print( f('{[i for i in range(5)]}') ) # '[0, 1, 2, 3, 4]'\n ls = range(5)\n print( f('{{i for i in ls}}') ) # 'set([0, 1, 2, 3, 4])' or '{0, 1, 2, 3, 4}'\n print( f('{{k:v for k,v in zip(range(3), range(3, 6))}}') ) # '{0: 3, 1: 4, 2: 5}'\n print( f('{datetime(1994, 11, 6):%Y-%m-%d}') ) # '1994-11-06'\n print( f('{list(map(lambda x: x+1, range(3)))}') ) # '[1, 2, 3]'\n print( f('{S()!s}, {S()!r}, {S():1}') ) # 'hello, hi, b'\n\n\n- Also, you can register some namespaces for convenience.\n\n .. code:: python\n\n import fmt as f\n\n f.mregister({'x': 1, 'y': 2}) # register multiple\n f.register('z', 3) # register only one\n\n def func(x, y):\n return x + y\n\n print( f('{func(x, y)}') ) # '3'\n print( f('{func(x, z)}') ) # '4'\n print( f('{func(y, z)}') ) # '5'\n\n\n- **NOTE**: ``locals()`` maybe cover the ``globals()``, ``globals()`` maybe cover the namespaces that you registered.\n\n\nInstallation\n------------\n\nInstall by pip: ::\n\n [sudo] pip install fmt -U\n\n\nLICENSE\n-------\n\n`The BSD 3-Clause License `_", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/damnever/fmt", "keywords": "f-strings,format,literal string interpolation", "license": "The BSD 3-Clause License", "maintainer": "", "maintainer_email": "", "name": "fmt", "package_url": "https://pypi.org/project/fmt/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/fmt/", "project_urls": { "Homepage": "https://github.com/damnever/fmt" }, "release_url": "https://pypi.org/project/fmt/0.3.1/", "requires_dist": null, "requires_python": "", "summary": "f-strings(Python 3.6) style literal string interpolation.", "version": "0.3.1" }, "last_serial": 2585065, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "73fb0777f09a5964a479d4793a64e25a", "sha256": "bba8ecfb4c6e5147f448132b098f3f8ee7a1a75d107e6e66784e729ac70088f3" }, "downloads": -1, "filename": "fmt-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73fb0777f09a5964a479d4793a64e25a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7459, "upload_time": "2016-09-28T13:09:56", "url": "https://files.pythonhosted.org/packages/a1/5f/0a0be1ea5d7c7aa721bd49d2fd53ad36f699f4785912c452ad65a691e420/fmt-0.1.0-py2.py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "dcb04a8e623ffd28010383701ecfdefb", "sha256": "aea1d4a3afcefe5df3420a1f1d3a0ecd820023db60d40fe58b08b211ef6eed24" }, "downloads": -1, "filename": "fmt-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dcb04a8e623ffd28010383701ecfdefb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7551, "upload_time": "2016-09-28T14:40:52", "url": "https://files.pythonhosted.org/packages/c4/48/cff05528b5b64c963b0235898f0f4763d481ee24a5a277c1aa78efc6ecb6/fmt-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4589d4eb7d90d143f6ef1f13fcde24da", "sha256": "98ad874d90503b5a13d7546651b93b64078fff3654922c05bf20a9e6c057bec5" }, "downloads": -1, "filename": "fmt-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4589d4eb7d90d143f6ef1f13fcde24da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5392, "upload_time": "2016-09-29T01:40:04", "url": "https://files.pythonhosted.org/packages/a2/86/54fc99feb6ab014b8eb03f13d3fb5a84a297975d5829ae03f3cba746891c/fmt-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3738ed357a5207a2a50d8807306884f0", "sha256": "b44a34651b94ce9536f001fa32e18cd654ce43da854da16edee23128b44babec" }, "downloads": -1, "filename": "fmt-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3738ed357a5207a2a50d8807306884f0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7554, "upload_time": "2016-10-28T11:46:50", "url": "https://files.pythonhosted.org/packages/bf/f4/10dfc6816fbf7982a6a475894a288efefbfeab4b2c0ff2b9ba04e41bda07/fmt-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bf1b04a5aea4a15baa8442bdf8288d3", "sha256": "34a36eced07e028547886ed97dee0d55c893b2a48e07c5a77388a8ab37f23d71" }, "downloads": -1, "filename": "fmt-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5bf1b04a5aea4a15baa8442bdf8288d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5403, "upload_time": "2016-10-28T11:47:09", "url": "https://files.pythonhosted.org/packages/d0/46/82e2e672d8efb0b208e72328593313a49071e9f18be702a2699928596269/fmt-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6535b3dd847527973aedf62368ff7ad1", "sha256": "df122a9e3b654e8c12039bb48b0b5de02d6230a0c5b23cc706636ae586c53a63" }, "downloads": -1, "filename": "fmt-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6535b3dd847527973aedf62368ff7ad1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7602, "upload_time": "2016-11-26T03:51:45", "url": "https://files.pythonhosted.org/packages/06/7a/848e7217291cd8ff5c6bc0f343e38724e4a9d9fd3e916ea6671e83a49afa/fmt-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20ffd5e04e15c3cbea9ab34aa327ad58", "sha256": "42617f45326c0185b0bc2510194bdcce7228a1a324691019e78dd4334d0065be" }, "downloads": -1, "filename": "fmt-0.2.0.tar.gz", "has_sig": false, "md5_digest": "20ffd5e04e15c3cbea9ab34aa327ad58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5426, "upload_time": "2016-11-26T03:51:58", "url": "https://files.pythonhosted.org/packages/d3/2e/ed2eda4a08e37abc50e2ad52607aaf36378da6b0c98cd11d5025f9a3a71c/fmt-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1e8cb4b6a55041fffaf9d0025a2c827e", "sha256": "8858661355a84db54cf30ae9e3295f0a646c1312fcc8844cda57bc99eb9cadf8" }, "downloads": -1, "filename": "fmt-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e8cb4b6a55041fffaf9d0025a2c827e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7600, "upload_time": "2016-11-30T03:08:22", "url": "https://files.pythonhosted.org/packages/bb/81/7f8f0292f1d6e9d4a671fddca2052af4752123fa95bb110e1fc7828ea10a/fmt-0.2.1-py2.py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "901ea2d3cb9a7864b40369df412dc656", "sha256": "2b6af8e8506f6761c835f279b097413a71decc2dff3b0f4f32196c7517624d3c" }, "downloads": -1, "filename": "fmt-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "901ea2d3cb9a7864b40369df412dc656", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7592, "upload_time": "2016-11-30T06:39:16", "url": "https://files.pythonhosted.org/packages/3c/d5/723d5fc5fc8d077e3c8d5f079c19a20859cf7e9a9ed7573dbf252c989c77/fmt-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c467e0fb9f02a77c85e7f77074ac09fb", "sha256": "b2341739e46c331224fbb1d25b73afc817d0b476a9ce29d2f822727e549c7a32" }, "downloads": -1, "filename": "fmt-0.2.2.tar.gz", "has_sig": false, "md5_digest": "c467e0fb9f02a77c85e7f77074ac09fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5416, "upload_time": "2016-11-30T06:39:31", "url": "https://files.pythonhosted.org/packages/bd/07/631495fb202f5d6bf7d4a0f90a468b4a7ee30269e929a31f79a2cf662d96/fmt-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b4d1368e4fd0d3e850c1735b1fc62888", "sha256": "737de0013b9f37892abec7500353ef2c1fd5d504406f9488a4e57961fbf1fd13" }, "downloads": -1, "filename": "fmt-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b4d1368e4fd0d3e850c1735b1fc62888", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7898, "upload_time": "2016-12-30T15:54:15", "url": "https://files.pythonhosted.org/packages/c9/71/29fba958d862f3995578f7e8ddd78450cca04b1b0b871e613ce9491e9e1d/fmt-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b373c4ab132d28c229ee9ede67217fe0", "sha256": "d8ebd6d0169d2bef8fee573b896da854703404aa9db2afc4f6cceb9842f61b2d" }, "downloads": -1, "filename": "fmt-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b373c4ab132d28c229ee9ede67217fe0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5724, "upload_time": "2016-12-30T15:54:02", "url": "https://files.pythonhosted.org/packages/5c/92/a1846809666a292c4de4967ddc60969137fe86004d41c7cd4a9c9fee421a/fmt-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "dec69e083f1a2938a93fc60f92394efe", "sha256": "ea6658900a51b12d8c9e0fe118279c6904daba6e77596e6aed7e8851461c8e33" }, "downloads": -1, "filename": "fmt-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dec69e083f1a2938a93fc60f92394efe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8086, "upload_time": "2017-01-19T14:21:41", "url": "https://files.pythonhosted.org/packages/77/05/6b4e068e35400b137a9d59fcf8d0f482693259f6e2c4f0ee967ee86f6e68/fmt-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c574f596f417e938427d74f950a9555e", "sha256": "7665aa8cf3258d16557a20e4f657434d274d9d0e1755259a7a064c18875cbfa3" }, "downloads": -1, "filename": "fmt-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c574f596f417e938427d74f950a9555e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5933, "upload_time": "2017-01-19T14:21:56", "url": "https://files.pythonhosted.org/packages/45/ab/4f3a1184fe37a288df89bc609882256a47a663190683d70a477b35c90b2d/fmt-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dec69e083f1a2938a93fc60f92394efe", "sha256": "ea6658900a51b12d8c9e0fe118279c6904daba6e77596e6aed7e8851461c8e33" }, "downloads": -1, "filename": "fmt-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dec69e083f1a2938a93fc60f92394efe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8086, "upload_time": "2017-01-19T14:21:41", "url": "https://files.pythonhosted.org/packages/77/05/6b4e068e35400b137a9d59fcf8d0f482693259f6e2c4f0ee967ee86f6e68/fmt-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c574f596f417e938427d74f950a9555e", "sha256": "7665aa8cf3258d16557a20e4f657434d274d9d0e1755259a7a064c18875cbfa3" }, "downloads": -1, "filename": "fmt-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c574f596f417e938427d74f950a9555e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5933, "upload_time": "2017-01-19T14:21:56", "url": "https://files.pythonhosted.org/packages/45/ab/4f3a1184fe37a288df89bc609882256a47a663190683d70a477b35c90b2d/fmt-0.3.1.tar.gz" } ] }