{ "info": { "author": "Ken Kundert", "author_email": "engfmt@nurdletech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Scientific/Engineering", "Topic :: Utilities" ], "description": "engfmt - Engineering Format\n===========================\n\nA light-weight package used to read and write numbers in engineering format. In \nengineering format a number generally includes the units if available and uses \nSI scale factors to indicate the magnitude of the number. For example:\n\n | 1ns\n | 1.4204GHz\n\nA quantity is the pairing of a real number and units, though the units may be \nempty. This package is designed to convert quantities between the various ways \nin which they are represented. Those ways are:\n\nAs a tuple:\n For example, 1ns would be represented as (1e-9, 's').\n Notice that the scale factor is not included in the units. This is always \n true.\n\nAs a string in conventional formats:\n For example, 1ns would be represented as '1e-9 s' or as '0.000000001s'. This \n form is often difficult to read for people and so *engfmt* treats it more as \n a format meant for machines rather than people.\n\nAs a string in engineering format:\n For example, 1ns would be represented as '1ns'. This form is often \n difficult to read for machines and so *engfmt* treats it more as a human \n readable format.\n\nThe *Quantity* class is provided for converting between these various forms. It \ntakes one or two arguments. The first is taken to be the value, and the second, \nif given, is taken to be the units. The value may be given as a float or as \na string. The string may be in floating point notation, in scientific notation, \nor in engineering format and may include the units. By engineering notation, it \nis meant that the number can use the SI scale factors. For example, any of the \nfollowing ways can be used to specify 1ns:\n\n.. code-block:: python\n\n >>> from engfmt import Quantity\n >>> period = Quantity(1e-9, 's')\n >>> print(period)\n 1ns\n\n >>> period = Quantity('0.000000001 s')\n >>> print(period)\n 1ns\n\n >>> period = Quantity('1e-9s')\n >>> print(period)\n 1ns\n\n >>> period = Quantity('1ns')\n >>> print(period)\n 1ns\n\nIn all cases, the giving the units is optional.\n\nFrom a quantity object, you can generate any representation:\n\n.. code-block:: python\n\n >>> h_line = Quantity('1420.405751786 MHz')\n\n >>> h_line.to_tuple()\n (1420405751.786, 'Hz')\n\n >>> h_line.to_eng()\n '1.4204GHz'\n\n >>> h_line.to_str()\n '1420.405751786e6Hz'\n\nYou can also access the value without the units::\n\n >>> h_line.to_float()\n 1420405751.786\n\n >>> h_line.to_unitless_eng()\n '1.4204G'\n\n >>> h_line.to_unitless_str()\n '1420.405751786e6'\n\nOr you can access just the units::\n\n >>> h_line.units\n 'Hz'\n\nThe output of the *to_eng* and *to_unitless_eng* methods is always rounded to \nthe desired precision, which can be specified as an argument. This differs from \nthe *to_str* and *to_unitless_str* methods. They attempt to retain the original \nformat of the number if it is specified as a string. In this way it retains its \noriginal precision. The underlying assumption behind this difference is that \nengineering notation is generally used when communicating with people, whereas \nfloating point notation is used when communicating with machines. People benefit \nfrom having a limited number of digits in the numbers, whereas machines benefit \nfrom have full precision numbers.\n\nQuantities As Reals\n-------------------\n\nYou can use a quantity in the same way that you can use a real number, meaning \nthat you can use it in expressions and it will evaluate to its real value::\n\n >>> period = Quantity('1us')\n >>> print(period)\n 1us\n\n >>> frequency = 1/period\n >>> print(frequency)\n 1000000.0\n\nNotice that when performing arithmetic operations on quantities the units are \ncompletely ignored.\n\nShortcut Functions\n------------------\n\nGenerally one uses the shortcut functions to convert numbers to and from \nengineering format. All of these functions take the value and units in the same \nways that they are specified to Quantity. In particular, the value may be \na string or a real number. If it is a string it may be given in traditional \nformat or in engineering format, and it may include the units. For example:\n\n.. code-block:: python\n\n >>> from engfmt import quant_to_tuple\n >>> quant_to_tuple('1.4204GHz')\n (1420400000.0, 'Hz')\n\n >>> from engfmt import quant_to_eng\n >>> quant_to_eng(1420400000.0, 'Hz')\n '1.4204GHz'\n\n >>> from engfmt import quant_to_sci\n >>> quant_to_sci('1.4204GHz', prec=4)\n '1.4204\u00d710\u2070\u2079Hz'\n\n >>> from engfmt import quant_to_str\n >>> quant_to_str(1420400000.0, 'Hz')\n '1.4204e+09Hz'\n\n >>> from engfmt import quant_to_float\n >>> quant_to_float('1.4204GHz')\n 1420400000.0\n\n >>> from engfmt import quant_to_unitless_str\n >>> quant_to_unitless_str('1.4204GHz')\n '1.4204e9'\n\n >>> from engfmt import quant_to_unitless_eng\n >>> quant_to_unitless_eng('1.4204e9Hz')\n '1.4204G'\n\n >>> from engfmt import quant_strip\n >>> quant_strip('1.4204GHz')\n '1.4204G'\n >>> quant_strip('1.4204e9Hz')\n '1.4204e9'\n\n\nPreferences\n-----------\n\nYou can adjust some of the behavior of these functions on a global basis using \n*set_preferences*:\n\n.. code-block:: python\n\n >>> from engfmt import set_preferences, quant_to_eng, quant_to_sci\n >>> set_preferences(hprec=2, spacer=' ')\n >>> quant_to_eng('1.4204GHz')\n '1.42 GHz'\n >>> quant_to_eng('1.4204GHz', prec=4)\n '1.4204 GHz'\n >>> quant_to_sci('1.4204GHz', prec=4)\n '1.4204\u00d710\u2070\u2079 Hz'\n\nSpecifying *hprec* (human precision) to be 4 gives 5 digits of precision (you \nget one more digit than the number you specify for precision). Thus, the valid \nrange for *prec* is from 0 to around 12 to 14 for double precision numbers.\n\nPassing *None* as a value in *set_preferences* returns that preference to its \ndefault value:\n\n.. code-block:: python\n\n >>> set_preferences(hprec=None, spacer=None)\n >>> quant_to_eng('1.4204GHz')\n '1.4204GHz'\n\nThe available preferences are:\n\nhprec (int):\n Human precision in digits where 0 corresponds to 1 digit, must\n be nonnegative. This precision is used when generating engineering\n format.\n\nmprec (int):\n Machine precision in digits where 0 corresponds to 1 digit.\n Must be nonnegative. This precision is used when not generating\n engineering format.\n\nspacer (str):\n May be '' or ' ', use the latter if you prefer a space between\n the number and the units. Generally using ' ' makes numbers easier to\n read, particularly with complex units, and using '' is easier to parse.\n\nunity (str):\n The output scale factor for unity, generally '' or '_'.\n\noutput (str):\n Which scale factors to output, generally one would only use familiar scale \n factors.\n\nignore_sf (bool):\n Whether scale factors should be ignored by default.\n\nassign_fmt (str):\n Format string for an assignment. Will be passed through string format \n method. Format string takes three possible arguments named n,\n q, and d for the name, value and description. The default is '{n} = {v}'\n\nassign_rec (str):\n Regular expression used to recognize an assignment. Used in \n add_to_namespace(). Default recognizes the form:\n\n \"Temp = 300_K -- Temperature\".\n\n\nQuantity Class\n--------------\n\nThough rarely used directly, the Quantity class forms the foundation of the \n*engfmt* package. It is more flexible than the shortcut functions:\n\n.. code-block:: python\n\n >>> from engfmt import Quantity\n >>> h_line = Quantity('1420.405751786 MHz')\n\n >>> str(h_line)\n '1.4204GHz'\n\n >>> float(h_line)\n 1420405751.786\n\n >>> h_line.to_tuple()\n (1420405751.786, 'Hz')\n\n >>> h_line.to_eng(7)\n '1.4204058GHz'\n\n >>> h_line.to_sci()\n '1.4204\u00d710\u2070\u2079Hz'\n\n >>> h_line.to_str()\n '1420.405751786e6Hz'\n\n >>> h_line.to_float()\n 1420405751.786\n\n >>> h_line.to_unitless_eng(4)\n '1.4204G'\n\n >>> h_line.to_unitless_str()\n '1420.405751786e6'\n\n >>> h_line.strip()\n '1420.405751786M'\n\n >>> h_line.units\n 'Hz'\n\n >>> h_line.add_name('Fhy')\n >>> h_line.name\n 'Fhy'\n\n >>> h_line.add_desc('frequency of hydrogen line')\n >>> h_line.desc\n 'frequency of hydrogen line'\n\n >>> h_line.is_infinite()\n False\n\n >>> h_line.is_nan()\n False\n\n\nPhysical Constants\n------------------\n\nThe Quantity class also supports a small number of physical constants.\n\nPlank's constant:\n\n.. code-block:: python\n\n >>> plank = Quantity('h')\n >>> print(plank)\n 662.61e-36J-s\n\nBoltzmann's constant:\n\n.. code-block:: python\n\n >>> boltz = Quantity('k')\n >>> print(boltz)\n 13.806e-24J/K\n\nElementary charge:\n\n.. code-block:: python\n\n >>> q = Quantity('q')\n >>> print(q)\n 160.22e-21C\n\nSpeed of light:\n\n.. code-block:: python\n\n >>> c = Quantity('c')\n >>> print(c)\n 299.79Mm/s\n\nZero degrees Celsius in Kelvin:\n\n.. code-block:: python\n\n >>> zeroC = Quantity('C0')\n >>> print(zeroC)\n 273.15K\n\n*engfmt* uses *k* rather than *K* to represent kilo so that you can distinguish \nbetween kilo and Kelvin.\n\nPermittivity of free space:\n\n.. code-block:: python\n\n >>> eps0 = Quantity('eps0')\n >>> print(eps0)\n 8.8542pF/m\n\nPermeability of free space:\n\n.. code-block:: python\n\n >>> mu0 = Quantity('mu0')\n >>> print(mu0)\n 1.2566uH/m\n\nCharacteristic impedance of free space:\n\n.. code-block:: python\n\n >>> Z0 = Quantity('Z0')\n >>> print(Z0)\n 376.73Ohms\n\nYou can add additional constants by adding them to the CONSTANTS dictionary:\n\n.. code-block:: python\n\n >>> from engfmt import Quantity, CONSTANTS\n >>> CONSTANTS['h_line'] = (1.420405751786e9, 'Hz')\n >>> h_line = Quantity('h_line')\n >>> print(h_line)\n 1.4204GHz\n\n\nString Formatting\n-----------------\n\nQuantities can be passed into the string *format* method:\n\n.. code-block:: python\n\n >>> print('{}'.format(h_line))\n 1.4204GHz\n\nYou can specify the precision as part of the format specification\n\n.. code-block:: python\n\n >>> print('{:.6}'.format(h_line))\n 1.420406GHz\n\nThe 'q' type specifier can be used to explicitly indicate that both the number \nand the units are desired:\n\n.. code-block:: python\n\n >>> print('{:.6q}'.format(h_line))\n 1.420406GHz\n\nAlternately, 'r' can be used to indicate just the number is desired:\n\n.. code-block:: python\n\n >>> print('{:r}'.format(h_line))\n 1.4204G\n\nUse 'u' to indicate that only the units are desired:\n\n.. code-block:: python\n\n >>> print('{:u}'.format(h_line))\n Hz\n\nYou can also use the string and floating point format type specifiers:\n\n.. code-block:: python\n\n >>> print('{:f}'.format(h_line))\n 1420405751.786000\n\n >>> print('{:e}'.format(h_line))\n 1.420406e+09\n\n >>> print('{:g}'.format(h_line))\n 1.42041e+09\n\n >>> print('{:s}'.format(h_line))\n 1.4204GHz\n\nIt is also possible to add a name and perhaps a description to the quantity, and \naccess those with special format codes as well:\n\n.. code-block:: python\n\n >>> h_line.add_name('Fhy')\n >>> h_line.add_desc('frequency of hydrogen line')\n >>> print('{:n}'.format(h_line))\n Fhy\n\n >>> print('{:d}'.format(h_line))\n frequency of hydrogen line\n\n >>> print('{:Q}'.format(h_line))\n Fhy = 1.4204GHz\n\n >>> print('{:R}'.format(h_line))\n Fhy = 1.4204G\n\n >>> print('{0:Q} ({0:d})'.format(h_line))\n Fhy = 1.4204GHz (frequency of hydrogen line)\n\n\nExceptions\n----------\n\nA ValueError is raised if engfmt is passed a string it cannot convert into \na number:\n\n.. code-block:: python\n\n >>> try:\n ... value, units = quant_to_tuple('xxx')\n ... except ValueError as err:\n ... print(err)\n xxx: not a valid number.\n\n\nText Processing\n---------------\n\nTwo functions are available for converting quantities embedded within text to \nand from engineering notation:\n\n.. code-block:: python\n\n >>> from engfmt import all_to_eng_fmt, all_from_eng_fmt\n >>> all_to_eng_fmt('The frequency of the hydrogen line is 1420405751.786Hz.')\n 'The frequency of the hydrogen line is 1.4204GHz.'\n\n >>> all_from_eng_fmt('The frequency of the hydrogen line is 1.4204GHz.')\n 'The frequency of the hydrogen line is 1.4204e9Hz.'\n\n\nAdd to Namespace\n----------------\n\nIt is possible to put a collection of quantities in a text string and then use \nthe *add_to_namespace* function to parse the quantities and add them to the \nPython namespace. For example:\n\n.. code-block:: python\n\n >>> from engfmt import add_to_namespace\n\n >>> design_parameters = '''\n ... Fref = 156 MHz -- Reference frequency\n ... Kdet = 88.3 uA -- Gain of phase detector (Imax)\n ... Kvco = 9.07 GHz/V -- Gain of VCO\n ... '''\n >>> add_to_namespace(design_parameters)\n\n >>> print(Fref, Kdet, Kvco, sep='\\n')\n 156MHz\n 88.3uA\n 9.07GHz/V\n\nAny number of quantities may be given, with each quantity given on its own line. \nThe identifier given to the left '=' is the name of the variable in the local \nnamespace that is used to hold the quantity. The text after the '--' is used as \na description of the quantity.\n\n\nScale Factors and Units\n-----------------------\n\nBy default, *engfmt* treats both the scale factor and the units as being \noptional. With the scale factor being optional, the meaning of some \nspecifications can be ambiguous. For example, '1m' may represent 1 milli or it \nmay represent 1 meter. Similarly, '1meter' my represent 1 meter or \n1 milli-eter. To allow you to avoid this ambiguity, *engfmt* accepts '_' as the \nunity scale factor. In this way '1_m' is unambiguously 1 meter. You can instruct \n*engfmt* to output '_' as the unity scale factor by specifying the *unity* \nargument to *set_preferences*:\n\n.. code-block:: python\n\n >>> from engfmt import set_preferences, Quantity\n >>> set_preferences(unity='_')\n >>> l = Quantity(1, 'm')\n >>> print(l)\n 1_m\n\nIf you need to interpret numbers that have units and are known not to have scale \nfactors, you can specify the *ignore_sf* preference:\n\n.. code-block:: python\n\n >>> set_preferences(ignore_sf=True, unity='')\n >>> l = Quantity('1000m')\n >>> l.to_tuple()\n (1000.0, 'm')\n\n >>> print(l)\n 1km\n\n\nInstallation\n------------\n\nUse 'pip install engfmt' to install. Requires Python2.7 or Python3.3 or better.\n\n.. image:: https://travis-ci.org/KenKundert/engfmt.svg?branch=master\n :target: https://travis-ci.org/KenKundert/engfmt\n\n.. image:: https://coveralls.io/repos/github/KenKundert/engfmt/badge.svg?branch=master\n :target: https://coveralls.io/github/KenKundert/engfmt?branch=master\n\n\nTesting\n-------\n\nRun 'py.test' to run the tests.", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/kenkundert/engfmt/tarball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://nurdletech.com/linux-utilities/engfmt", "keywords": "quantities,engfmt,engineering,notation,SI,scale factors", "license": "GPLv3+", "maintainer": null, "maintainer_email": null, "name": "engfmt", "package_url": "https://pypi.org/project/engfmt/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/engfmt/", "project_urls": { "Download": "https://github.com/kenkundert/engfmt/tarball/master", "Homepage": "http://nurdletech.com/linux-utilities/engfmt" }, "release_url": "https://pypi.org/project/engfmt/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "read and write in engineering notation", "version": "1.1.0" }, "last_serial": 2370663, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "6dd531e4783b234c9d12a11ed2ab0ab8", "sha256": "1c4973566abc49f15e25f14c54f78c4269b33ebd45cadcbd83d7c40d7f06816c" }, "downloads": -1, "filename": "engfmt-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6dd531e4783b234c9d12a11ed2ab0ab8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5974, "upload_time": "2016-05-15T06:25:32", "url": "https://files.pythonhosted.org/packages/77/f0/6e158906f3aac0f632356fc35de1815668a43d2c15d759d9c368df07120b/engfmt-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "cdd418a8fcd9e3e18c7e1e7e762bd9fc", "sha256": "d5d357e5ba2ca5e1d7d48fe6379c30f489dddee9a43575be81b790b2a1f06eeb" }, "downloads": -1, "filename": "engfmt-0.2.0.tar.gz", "has_sig": false, "md5_digest": "cdd418a8fcd9e3e18c7e1e7e762bd9fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5960, "upload_time": "2016-05-15T06:49:00", "url": "https://files.pythonhosted.org/packages/a6/9d/210bb0b157be66fdcb06ed62f7c6b82a35656a3fac63c50ba11fc5bb7b54/engfmt-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1a5aa1fa4630c9ae0c4c3c23881b8c54", "sha256": "d6278480416cdc9f8628b84935df22e2c8ec7deae31ab656d0e423d35a0765bb" }, "downloads": -1, "filename": "engfmt-0.3.0.tar.gz", "has_sig": false, "md5_digest": "1a5aa1fa4630c9ae0c4c3c23881b8c54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7279, "upload_time": "2016-05-25T23:17:11", "url": "https://files.pythonhosted.org/packages/c1/0a/5c0d33b15a1e479dc70585e17034603941928a4233925fb38ee0fb9e9489/engfmt-0.3.0.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "9c04859974c3b5f507a067568505f26f", "sha256": "38b3d155f9f25d383f8017c18344b88f5a91a2766b42cbe42fc3c77a2027adef" }, "downloads": -1, "filename": "engfmt-0.3.3.tar.gz", "has_sig": false, "md5_digest": "9c04859974c3b5f507a067568505f26f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7503, "upload_time": "2016-05-26T04:55:05", "url": "https://files.pythonhosted.org/packages/f3/4e/f06f57f194bb6e6d8b1da79182b9c618fdc5f3c483b9ce88312481d066bb/engfmt-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "80c1a16cf3c35775afc31ce49e1da01d", "sha256": "ba36c4a8f9922f388ed676e985df961433520785e42509d9a72d60196d89d55f" }, "downloads": -1, "filename": "engfmt-0.3.4.tar.gz", "has_sig": false, "md5_digest": "80c1a16cf3c35775afc31ce49e1da01d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7602, "upload_time": "2016-05-26T05:29:09", "url": "https://files.pythonhosted.org/packages/f6/da/d1d3ff9e683051fcc65d5628931d3708a82402986eb10ee49cda2487a268/engfmt-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "8a79df65f20b9b21ff2dbacd7c78c977", "sha256": "180e0b8d8738a97080b75a9b68a586187e7af664df117785ebda566517f5ad86" }, "downloads": -1, "filename": "engfmt-0.4.0.tar.gz", "has_sig": false, "md5_digest": "8a79df65f20b9b21ff2dbacd7c78c977", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10076, "upload_time": "2016-05-29T05:46:19", "url": "https://files.pythonhosted.org/packages/0a/91/df4b03d02ee7f97d7984934d0fc132c2d2b5b257e73614d6811b11c14d01/engfmt-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9faa532b9a650c647208ac9ffb8e3afc", "sha256": "197cf6a94541410810dbd5ae31d087c84dac0a9b8c02d430f794664ac78bc064" }, "downloads": -1, "filename": "engfmt-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9faa532b9a650c647208ac9ffb8e3afc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12506, "upload_time": "2016-05-30T06:52:46", "url": "https://files.pythonhosted.org/packages/b7/d0/8525b94900604159a1a019440ba8dbe33a356b82619efddebad72d88e3b5/engfmt-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "3ad7ab53f751b477d88ea70b1cd41eaa", "sha256": "5bd901f2833fd6d3a48dfb400023b22ec058f6f24a43e48fe58ecb187480de40" }, "downloads": -1, "filename": "engfmt-0.5.1.tar.gz", "has_sig": false, "md5_digest": "3ad7ab53f751b477d88ea70b1cd41eaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12508, "upload_time": "2016-05-30T07:02:55", "url": "https://files.pythonhosted.org/packages/5f/64/fb52c9ec7e58c04dfed7af8f5ca3c4abdc66b72445627872332a109e5e99/engfmt-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3efb3cd697d2a970102240f438034ecf", "sha256": "ce07a372c797efa2bf6fb92467385be848eb29447684912ae6eda348b5b7205d" }, "downloads": -1, "filename": "engfmt-0.5.2.tar.gz", "has_sig": false, "md5_digest": "3efb3cd697d2a970102240f438034ecf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12576, "upload_time": "2016-05-30T07:40:00", "url": "https://files.pythonhosted.org/packages/a7/35/5bfde4ae4c00984da605d5c872ecad4f0fb787c1d188311367e8fc46497a/engfmt-0.5.2.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "33d046f14abfa1bcea07167de2daa719", "sha256": "0c44f0129da5c232f5788a269f5b43aa65df0c68206a2afce936a1a5bf470f96" }, "downloads": -1, "filename": "engfmt-0.6.0.tar.gz", "has_sig": false, "md5_digest": "33d046f14abfa1bcea07167de2daa719", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12674, "upload_time": "2016-05-30T17:05:24", "url": "https://files.pythonhosted.org/packages/7b/eb/0f365216a88b1b7692a7a20481bc28bb075ef52890035a596c178eae3356/engfmt-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "07aea1782e5a4471c83712af601e5349", "sha256": "ecd6df23238400972d805a529d3192b2b719fc2b34702714f94fbc08a7c19510" }, "downloads": -1, "filename": "engfmt-0.7.0.tar.gz", "has_sig": false, "md5_digest": "07aea1782e5a4471c83712af601e5349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13934, "upload_time": "2016-06-10T18:15:00", "url": "https://files.pythonhosted.org/packages/fc/06/24907bd72d99ad40957e34235ea8f1f5ffc690fd35bfea6a7be71dd67adf/engfmt-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "90b8dac96f6335b115300125ac12a4e4", "sha256": "219c1a33e8ae2d89c494b6743cc16255fcb7fa7baf5c406ad99bef28181d03d3" }, "downloads": -1, "filename": "engfmt-0.8.0.tar.gz", "has_sig": false, "md5_digest": "90b8dac96f6335b115300125ac12a4e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15982, "upload_time": "2016-06-11T06:56:46", "url": "https://files.pythonhosted.org/packages/cd/ce/9155e4a01e3e1aadedc040625778b11b027f48c67d6d9649d412381ccefd/engfmt-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "113f2187354659e27356346c31cacf8d", "sha256": "ccf1d1dfad3c50ad2ff6239d3b4214b0294eeb10623a9f4bc6df97a92a90a1f9" }, "downloads": -1, "filename": "engfmt-0.8.1.tar.gz", "has_sig": false, "md5_digest": "113f2187354659e27356346c31cacf8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15922, "upload_time": "2016-06-11T07:24:30", "url": "https://files.pythonhosted.org/packages/ef/5e/f1f2266316994c1d9462651fd5a8fb73065b017e4f41d6c51a6ea2bb9962/engfmt-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "c75f1203113a769a8d8bcfe979e064f6", "sha256": "859d37c32ba3098779ac380ce6f70dd75ad36780af32cd5afd4604555ac221a2" }, "downloads": -1, "filename": "engfmt-0.9.0.tar.gz", "has_sig": false, "md5_digest": "c75f1203113a769a8d8bcfe979e064f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16778, "upload_time": "2016-06-11T18:50:04", "url": "https://files.pythonhosted.org/packages/55/bb/df064567105065b331d2633b637f20118bc804e6ee53bd621d1811fc3534/engfmt-0.9.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "fcf85040d531f11afb998d732be24cf2", "sha256": "340a36ff4851104a2390f33409be10fdf168d9b1a0286597f89c8f8923f2d2bb" }, "downloads": -1, "filename": "engfmt-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fcf85040d531f11afb998d732be24cf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16911, "upload_time": "2016-06-19T22:13:45", "url": "https://files.pythonhosted.org/packages/76/9b/8f24f2bf4472949978d8fe79c2e8beab6a6b6d396dc41861076a62e6a1fa/engfmt-1.0.0.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "f3523a06bfa3ab02930a939938d31c9a", "sha256": "c55b1bff11c6e7440a824c6d5005edd9fc67a0210d4ebb12ad32efb0093090cc" }, "downloads": -1, "filename": "engfmt-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f3523a06bfa3ab02930a939938d31c9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17198, "upload_time": "2016-07-05T20:52:34", "url": "https://files.pythonhosted.org/packages/0a/37/0f36045c94c9aa9bd9f81c196f54a78288df2375349618f5d627965e26ae/engfmt-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "e8f3f12a7e5ead6bddb0aa96860e5f00", "sha256": "17970cc61be07726a0747010c83d9dceade08234502c8080a053be48448990a7" }, "downloads": -1, "filename": "engfmt-1.0.3.tar.gz", "has_sig": false, "md5_digest": "e8f3f12a7e5ead6bddb0aa96860e5f00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17241, "upload_time": "2016-07-05T21:43:36", "url": "https://files.pythonhosted.org/packages/fc/95/f2ab1a44ab57d0c1bd84c97882d2a26921c3d682f46aa0639b9716f58c59/engfmt-1.0.3.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "99d207237a5c22b67732c33d68798bfe", "sha256": "e87d79e5b6d4dc56f4a441a8a11ffd78137469b8cb0c92a463fcb07057af67b2" }, "downloads": -1, "filename": "engfmt-1.0.5.tar.gz", "has_sig": false, "md5_digest": "99d207237a5c22b67732c33d68798bfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17279, "upload_time": "2016-09-28T18:44:46", "url": "https://files.pythonhosted.org/packages/e0/9a/b9781fcdbc4625067d20c53e0203ac29ded6c2620ecdc66195c0b7a0fa5e/engfmt-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9319497bffd3c8740a072b8976d3714f", "sha256": "390160c0dab99e15234071da4cbc06b014fd38dd19d0997073ab885ea555684f" }, "downloads": -1, "filename": "engfmt-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9319497bffd3c8740a072b8976d3714f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17645, "upload_time": "2016-09-29T09:29:06", "url": "https://files.pythonhosted.org/packages/02/dc/d5d3bb678f87418df2037cdd5eba08d44d2949b3bc0b298eb3b7f103957f/engfmt-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9319497bffd3c8740a072b8976d3714f", "sha256": "390160c0dab99e15234071da4cbc06b014fd38dd19d0997073ab885ea555684f" }, "downloads": -1, "filename": "engfmt-1.1.0.tar.gz", "has_sig": false, "md5_digest": "9319497bffd3c8740a072b8976d3714f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17645, "upload_time": "2016-09-29T09:29:06", "url": "https://files.pythonhosted.org/packages/02/dc/d5d3bb678f87418df2037cdd5eba08d44d2949b3bc0b298eb3b7f103957f/engfmt-1.1.0.tar.gz" } ] }