{ "info": { "author": "Dirk Gorissen, Stephen Rauch", "author_email": "dgorissen@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Pycel\n=====\n\n|build-state| |coverage| |requirements|\n\n|pypi| |pypi-pyversions| |repo-size| |code-size|\n\nPycel is a small python library that can translate an Excel spreadsheet into\nexecutable python code which can be run independently of Excel.\n\nThe python code is based on a graph and uses caching & lazy evaluation to\nensure (relatively) fast execution. The graph can be exported and analyzed\nusing tools like `Gephi `_. See the contained example\nfor an illustration.\n\nRequired python libraries:\n `dateutil `_,\n `networkx `_,\n `numpy `_,\n `openpyxl `_,\n `ruamel.yaml `_, and optionally:\n `matplotlib `_,\n `pydot `_\n\nThe full motivation behind pycel including some examples & screenshots is\ndescribed in this `blog post `_.\n\nUsage\n======\n\nDownload the library and run the example file.\n\n**Quick start:**\nYou can use binder to see and explore the tool quickly and interactively in the\nbrowser: |notebook|\n\n**The good:**\n\nAll the main mathematical functions (sin, cos, atan2, ...) and operators\n(+,/,^, ...) are supported as are ranges (A5:D7), and functions like\nMIN, MAX, INDEX, LOOKUP, and LINEST.\n\nThe codebase is small, relatively fast and should be easy to understand\nand extend.\n\nI have tested it extensively on spreadsheets with 10 sheets & more than\n10000 formulae. In that case calculation of the equations takes about 50ms\nand agrees with Excel up to 5 decimal places.\n\n**The bad:**\n\nMy development is driven by the particular spreadsheets I need to handle so\nI have only added support for functions that I need. However, it is should be\nstraightforward to add support for others.\n\nThe code does currently not support cell references so a function like OFFSET\nwould take some more work to implement. Not inherently difficult, its just\nthat I have had no need for references yet. Also, for obvious reasons, any\nVBA code is not compiled but needs to be re-implemented manually on the\npython side.\n\n**The Ugly:**\n\nThe resulting graph-based code is fast enough for my purposes but to make it\ntruly fast you would probably replace the graph with a dependency tracker\nbased on sparse matrices or something similar.\n\nExcel Addin\n===========\n\nIt's possible to run pycel as an excel addin using\n`PyXLL `_. Simply place pyxll.xll and pyxll.py in the\nlib directory and add the xll file to the Excel Addins list as explained in\nthe pyxll documentation.\n\nAcknowledgements\n================\n\nThis code was originally made possible thanks to the python port of\nEric Bachtal's `Excel formula parsing code\n`_\nby Robin Macharg.\n\nThe code currently uses a tokenizer of similar origin from the\n`openpyxl library.\n`_\n\n.. Image links\n\n.. |build-state| image:: https://travis-ci.org/stephenrauch/pycel.svg?branch=master\n :target: https://travis-ci.org/stephenrauch/pycel\n :alt: Build Status\n\n.. |coverage| image:: https://codecov.io/gh/stephenrauch/pycel/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/stephenrauch/pycel/list/master\n :alt: Code Coverage\n\n.. |pypi| image:: https://img.shields.io/pypi/v/pycel.svg\n :target: https://pypi.org/project/pycel/\n :alt: Latest Release\n\n.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/pycel.svg\n :target: https://pypi.python.org/pypi/pycel\n\n.. |requirements| image:: https://requires.io/github/stephenrauch/pycel/requirements.svg?branch=master\n :target: https://requires.io/github/stephenrauch/pycel/requirements/?branch=master\n :alt: Requirements Status\n\n.. |repo-size| image:: https://img.shields.io/github/repo-size/stephenrauch/pycel.svg\n :target: https://github.com/stephenrauch/pycel\n :alt: Repo Size\n\n.. |code-size| image:: https://img.shields.io/github/languages/code-size/stephenrauch/pycel.svg\n :target: https://github.com/stephenrauch/pycel\n :alt: Code Size\n\n.. |notebook| image:: https://mybinder.org/badge.svg\n :target: https://mybinder.org/v2/gh/stephenrauch/pycel/master?filepath=notebooks%2Fexample.ipynb\n :alt: Open Notebook\n\n\n\nChange Log\n==========\n\n\n1.0b22 (2019-10-17)\n===================\n\nFixes\n-----\n* Fix #80, incompatible w/ networkx 2.4\n\n\n1.0b21 (2019-10-13)\n===================\n\nChanges\n-------\n\n* Speed up compile\n* Implement defined names in multicolon ranges\n* Tokenize ':' when adjoining functions as infix operator\n* Various changes in prep to improve references, including\n* Add reference expansion to function helpers\n* Add sheet to indirect() and ref_param=0 to offset()\n* Implement is_address() helper\n* Implement intersection and union for AddressCell\n\nFixes\n-----\n* Fix #77, empty arg in IFERROR()\n* Fix #78, None compare and cleanup error handling for various IFS() funcs\n\n\n1.0b20 (2019-09-22)\n===================\n\nChanges\n-------\n\n* Implement multi colon ranges\n* Add support for missing (empty) function parameters\n\nFixes\n-----\n* Fix threading issue in iterative evaluator\n* Fix range intersection with null result for ROW and COLUMN\n* Fix #74 - Count not working for ranges\n\n\n1.0b19 (2019-09-12)\n===================\n\nChanges\n-------\n\n* Implement INDIRECT & OFFSET\n* Implement SMALL, LARGE & ROUNDDOWN\n* Add error message for unhandled missing function parameter\n\nFixes\n-----\n* Fix threading issue w/ CSE evaluator\n\n\n1.0b18 (2019-09-07)\n===================\n\nChanges\n-------\n\n* Implement CEILING_MATH, CEILING_PRECISION, FLOOR_MATH & FLOOR_PRECISION\n* Implement FACT & FACTDOUBLE\n* Implement AVERAGEIF, MAXIFS, MINIFS\n* Implement ODD, EVEN, ISODD, ISEVEN, SIGN\n\nFixes\n-----\n* Fix #67 - Evaluation with unbounded range\n* Fix bugs w/ single cells for xIFS functions\n\n\n1.0b17 (2019-09-02)\n===================\n\nChanges\n-------\n* Add Formula Support for Multi Area Ranges from defined names\n* Allow ExcelCompiler init from openpyxl workbook\n* Implement LOWER(), REPLACE(), TRIM() & UPPER()\n* Implement DATEVALUE(), IFS() and ISERR()\n\n* Reorganized time and time utils and text functions\n* Add excelutil.AddressMultiAreaRange.\n* Add abs_coordinate() property to AddressRange and AddressCell\n* Cleanup import statements\n\nFixes\n-----\n* Resolved tox version issue on travis\n* Fix defined names with Multi Area Range\n\n\n1.0b16 (2019-07-07)\n===================\n\nChanges\n-------\n* Add twelve date and time functions\n* Serialize workbook filename and use it instead of the serialization filename\n\n\n1.0b15 (2019-06-30)\n===================\n\nChanges\n-------\n* Implement AVERAGEIFS()\n* Take Iterative Calc Parameter defaults from workbook\n\nBug Fixes\n---------\n* #60, Binder Notebook Example not Working\n\n\n1.0b14 (2019-06-16)\n===================\n\nChanges\n-------\n* Added method to evaluate the conditional format (formulas) for a cell or cells\n* Added ExcelCompiler(..., cycles=True) to allow Excel iterative calculations\n\n\n1.0b13 (2019-05-10)\n===================\n\nChanges\n-------\n* Implement VALUE()\n* Improve compile performance reversion from CSE work\n\nBug Fixes\n---------\n* #54, In normalize_year(), month % 12 can be 0 -> IllegalMonthError\n\n\n1.0b12 (2019-04-22)\n===================\n\nChanges\n-------\n* Add library plugin support\n* Improve evaluate of unbounded row/col (ie: A:B)\n* Fix some regressions from 1.0b11\n\n\n1.0b11 (2019-04-21)\n===================\n\nMajor Changes\n-------------\n\n* Refactored ExcelWrapper, ExcelFormula & ExcelCompiler to allow...\n* Added considerable extensions to CSE Array Formula Support\n* Refactored function_helpers to add decorators for excelizing library functions\n* Added a dozen new functions\n* Improved various messages and exceptions in validate_calcs() and trim_graph()\n\nChanges\n-------\n\n* Implement LEFT()\n* Implement ISERROR()\n* Implement FIND()\n* Implement ISNUMBER()\n* Implement SUMPRODUCT()\n* Implement CEILING()\n* Implement TRUNC() and FLOOR()\n* Add support for LOG()\n* Improve ABS(), INT() and ROUND()\n\n* Add quoted_address() method to AddressRange and AddressCell\n* Add public interface to get list of formula_cells()\n* Improve Some NotImplementedError() messages\n* Add NotImplementedError for \"linked\" sheet names\n* Fix function info for paired functions from same line\n* Add reference URL to function info\n* Only build compiler eval context once\n* Address Range Union and Intersection need sheet_name\n\nCSE Array Changes\n-----------------\n\n* Add CSE Array handling to excelformula and excelcompiler\n* Change Row, Column & Index to rectangular arrays only\n* Add in_array_formula_context\n* Add cse_array_wrapper() to allow calling functions in array context\n* Add error_string_wrapper() to check for excel errors\n* Move math_wrap() to function_helpers.\n* Handle Direct CSE Array in cell\n* Reorganize CSE Array Formula handling in excelwrapper\n* For CSE Arrays that are smaller than target fill w/ None\n* Trim oversize array results to fit target range\n* Improve needed addresses parser from python code\n* Improve _coerce_to_number() and _numerics() for CSE arrays\n* Remove formulas from excelwrapper._OpxRange()\n\nBug Fixes\n---------\n\n* Fix Range Intersection\n* Fix Unary Minus on Empty cell\n* Fix ISNA()\n* Fix AddressCell create from tuple\n* Power(0,-1) now returns DIV0\n* Cleanup index()\n\n\n1.0b8 (2019-03-20)\n==================\n\nChanges\n-------\n\n* Implement operators for Array Formulas\n* Implement concatenate and concat\n* Implement subtotal\n* Add support for expanding array formulas\n* Fix column and row for array formulas\n* Add support for table relative references\n* Add function information methods\n* Improve messages for validate_calcs and not implemented functions\n\n\n1.0b7 (2019-03-10)\n==================\n\nChanges\n-------\n\n* Implement Array (CSE) Formulas\n\nBug Fixes\n---------\n\n* Fix #45 - Unbounded Range Addresses (ie: A:B or 1:2) broken\n\n\n1.0b6 (2019-03-03)\n==================\n\nBug Fixes\n---------\n\n* Fix #42 - 'ReadOnlyWorksheet' object has no attribute 'iter_cols'\n* Fix #43 - Fix error with leading/trailing whitespace\n\n\n1.0b5 (2019-02-24)\n==================\n\nChanges\n-------\n\n* Implement XOR(), NOT(), TRUE(), FALSE()\n* Improve error handling for AND(), OR()\n* Implement POWER() function\n\n\n1.0b4 (2019-02-17)\n==================\n\nChanges\n-------\n\n* Move to openpyxl 2.6+\n* Remove support for Python 3.4\n\n\n1.0b3 (2019-02-02)\n==================\n\nChanges\n-------\n\n* Work around openpyxl returning datetimes\n* Pin to openpyxl 2.5.12 to avoid bug in 2.5.14 (fixed in PR #315)\n\n\n1.0b2 (2019-01-05)\n==================\n\nChanges\n-------\n\n* Much work to better match Excel error processing\n* Extend validate_calcs() to allow testing entire workbook\n* Improvements to match(), including wildcard support\n* Finished implementing match(), lookup(), vlookup() and hlookup()\n* Implement COLUMN() and ROW()\n* Implement % operator\n* Implement len()\n* Implement binary base number Excel functions (hex2dec, etc.)\n* Fix PI()\n\n\n1.0b0 (2018-12-25)\n===================\n\nMajor changes\n-------------\n\n* Converted to Python 3.4+\n* Removed Windows Excel COM driver (openpyxl is used for all xlsx reading)\n* Add support for defined names\n* Add support for structured references\n* Fix support for relative formulas\n* set_value() and evaluate() support ranges and lists\n* Add several more library functions\n* Add AddressRange and AddressCell classes to encapsulate address calcs\n* Add validate_calcs() to aid debugging excellib functions\n* Add `build` feature which can limit recompile to only when excel file changes\n* Improved handling for #DIV0! and #VALUE!\n\n\nCompatibility\n-------------\n\n* Tests run on Python 3.4, 3.5, 3.6, 3.7 (via tox)\n* Python 2 no longer supported\n\n\nOther Changes\n-------------\n\n* Heavily refactored ExcelCompiler\n* Moved all formula evaluation, parsing, etc, code to ExcelFormula class\n* Convert to using openpyxl tokenizer\n* Converted prints to logging calls\n* Convert to using pytest\n* Add support for travis and codecov.io\n* 100% unit test coverage (mostly)\n* Add debuggable formula evaluation\n* Cleanup generated Python code to make easier to read\n* Add a text format (yaml or json) serialization format\n* flake8 (pep8) checks added\n* pip now handles which Python versions can be used\n* Release to PyPI\n* Docs updated\n\n\nBugfixes\n--------\n\n* Numerous\n\n\n0.0.1 (unreleased)\n===================\n\n* Original version available from `Dirk Ggorissen's Pycel Github Page`_.\n* Supports Python 2\n\n.. _Dirk Ggorissen's Pycel Github Page: https://github.com/dgorissen/pycel/tree/33c1370d499c629476c5506c7da308713b5842dc\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/stephenrauch/pycel", "keywords": "excel compiler formula parser", "license": "", "maintainer": "Stephen Rauch", "maintainer_email": "stephen.rauch+pycel@gmail.com", "name": "pycel", "package_url": "https://pypi.org/project/pycel/", "platform": "", "project_url": "https://pypi.org/project/pycel/", "project_urls": { "Homepage": "https://github.com/stephenrauch/pycel", "Tracker": "https://github.com/stephenrauch/pycel/issues" }, "release_url": "https://pypi.org/project/pycel/1.0b22/", "requires_dist": [ "networkx (<2.5,>=2.0)", "numpy", "openpyxl (>=2.6.2)", "python-dateutil", "ruamel.yaml" ], "requires_python": ">=3.5", "summary": "A library for compiling excel spreadsheets to python code & visualizing them as a graph", "version": "1.0b22" }, "last_serial": 5993300, "releases": { "1.0b0": [ { "comment_text": "", "digests": { "md5": "a5b93f5887b3e6e721d0038e235615cb", "sha256": "b48751784ccda2adca721ae2c38a77f9b14596bed5eb37055b6f96a522138ec2" }, "downloads": -1, "filename": "pycel-1.0b0-py3-none-any.whl", "has_sig": false, "md5_digest": "a5b93f5887b3e6e721d0038e235615cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 47444, "upload_time": "2018-12-25T16:41:50", "url": "https://files.pythonhosted.org/packages/a8/b3/7c2ad2e4269c9f1e5c2c16e92c50a3eb9a249bf9f8681b5898a112093b58/pycel-1.0b0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c67ee85df0bded482ea59f414e4afef5", "sha256": "896d67648a9b87660da4c657e2ea1a788106e237a50cdc3ff995220c8bd4c523" }, "downloads": -1, "filename": "pycel-1.0b0.tar.gz", "has_sig": false, "md5_digest": "c67ee85df0bded482ea59f414e4afef5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 53895, "upload_time": "2018-12-25T16:41:53", "url": "https://files.pythonhosted.org/packages/90/7a/469351f72483e60fc2cd5c11d7e0c027beb1371864f44fa0267440b45e46/pycel-1.0b0.tar.gz" } ], "1.0b11": [ { "comment_text": "", "digests": { "md5": "04ed0ed6e810d99def424d2734605673", "sha256": "f84fc72db4384af301e4d1ae8a6e93043cac659d6e4e0c27f59d8d7af77e0d08" }, "downloads": -1, "filename": "pycel-1.0b11-py3-none-any.whl", "has_sig": false, "md5_digest": "04ed0ed6e810d99def424d2734605673", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 80684, "upload_time": "2019-04-21T21:58:25", "url": "https://files.pythonhosted.org/packages/fa/f1/7ad340749530b0b54a5570f20543fc827051312eb2e3da46d1e6e84def81/pycel-1.0b11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af1dbb758f11985ac866c5adf03c8e78", "sha256": "0cc8586f553f4f32adc22a05baca91f687610d82542c1c38a6ed8f32e9c19457" }, "downloads": -1, "filename": "pycel-1.0b11.tar.gz", "has_sig": false, "md5_digest": "af1dbb758f11985ac866c5adf03c8e78", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 84906, "upload_time": "2019-04-21T21:58:52", "url": "https://files.pythonhosted.org/packages/da/c4/d8b7bdbaa072d7b03aab2112aa86f8d35b4b194fe6df10776cdca23264b1/pycel-1.0b11.tar.gz" } ], "1.0b12": [ { "comment_text": "", "digests": { "md5": "0bbc05debdd5a53287dd959bf9fde696", "sha256": "4276ad9a84239633a61c830e125700c340bf78a81275c3e8c3b58ead1b373cd3" }, "downloads": -1, "filename": "pycel-1.0b12-py3-none-any.whl", "has_sig": false, "md5_digest": "0bbc05debdd5a53287dd959bf9fde696", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 80424, "upload_time": "2019-04-23T01:52:56", "url": "https://files.pythonhosted.org/packages/4d/bf/4e06b54c6248d0069a405cea1ff594e0d49f30204923b0b4ff76a2fea389/pycel-1.0b12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c22d433d396b002b2883cb42329286a", "sha256": "ab68779f978377b8cc33e1671226f196c71a8a4c48db7ed32f89a22242a7dd2a" }, "downloads": -1, "filename": "pycel-1.0b12.tar.gz", "has_sig": false, "md5_digest": "8c22d433d396b002b2883cb42329286a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 84713, "upload_time": "2019-04-23T01:52:59", "url": "https://files.pythonhosted.org/packages/9e/0a/6fbe996c43fd7159a7e75012b2eccca19daec60d6935e7dbc36cb88eead7/pycel-1.0b12.tar.gz" } ], "1.0b13": [ { "comment_text": "", "digests": { "md5": "771973244ceec2de97134ba0b88664e4", "sha256": "6663ebbb9e8b167b6a4451af6fd528431eaa5a4ddc1030c9ba9d2688c0bb73e9" }, "downloads": -1, "filename": "pycel-1.0b13-py3-none-any.whl", "has_sig": false, "md5_digest": "771973244ceec2de97134ba0b88664e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 80767, "upload_time": "2019-05-11T04:47:12", "url": "https://files.pythonhosted.org/packages/fb/e4/bf6581f5b7af8707a1df5625dbae551aa741679d7ef7ed80ef5af123e013/pycel-1.0b13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40bee4c8dee7399a14cb1bdae2c75afa", "sha256": "94bb01080ddc3604d75ccbf8c42f4b455c0386b462844cbd76ec3d65cf21154b" }, "downloads": -1, "filename": "pycel-1.0b13.tar.gz", "has_sig": false, "md5_digest": "40bee4c8dee7399a14cb1bdae2c75afa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 85379, "upload_time": "2019-05-11T04:47:14", "url": "https://files.pythonhosted.org/packages/e6/01/8bd7967016269a1cd88b666eff920f9c976a1e3045cb229c6e86da23fafd/pycel-1.0b13.tar.gz" } ], "1.0b14": [ { "comment_text": "", "digests": { "md5": "0a0aa7fb8906a6e6bbef89c47981e4c4", "sha256": "c3a3c4c392bf2a728439adbde9261abf268aa94af66878ff1610fb1cdfa22213" }, "downloads": -1, "filename": "pycel-1.0b14-py3-none-any.whl", "has_sig": false, "md5_digest": "0a0aa7fb8906a6e6bbef89c47981e4c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 83246, "upload_time": "2019-06-16T01:55:13", "url": "https://files.pythonhosted.org/packages/51/fa/59f257e002c4bfd02383012ac117e391bf5cde2e55ca31e040b8756cc92f/pycel-1.0b14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29833986f9442379cb200c5766898ab3", "sha256": "05ba19fe563f9abe65287bf1da654986d492fac69016fbbbd7264840b1c04134" }, "downloads": -1, "filename": "pycel-1.0b14.tar.gz", "has_sig": false, "md5_digest": "29833986f9442379cb200c5766898ab3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 92638, "upload_time": "2019-06-16T01:55:15", "url": "https://files.pythonhosted.org/packages/97/a6/3e301be60f98ff61c53dbdc8dfe8df971ddc712cb8b660cb8f514cafa439/pycel-1.0b14.tar.gz" } ], "1.0b15": [ { "comment_text": "", "digests": { "md5": "e9401c780e69cb6f937985068f90e2e2", "sha256": "aec939fa12d612e3b1dea9fc9c125db556c6718b29369cdfcb7feee6d37c96d7" }, "downloads": -1, "filename": "pycel-1.0b15-py3-none-any.whl", "has_sig": false, "md5_digest": "e9401c780e69cb6f937985068f90e2e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 83635, "upload_time": "2019-06-30T17:24:16", "url": "https://files.pythonhosted.org/packages/86/f6/ba6f2ce6fe80824e59e0b01299acf09edfeaa811d757f666fb8c59e8898e/pycel-1.0b15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fe832c678ca9335e2b6b381869973c6", "sha256": "d360922022a96cd34549f2fb2cfbe76f2d423e35e23cf10b364ae207f8ab29f6" }, "downloads": -1, "filename": "pycel-1.0b15.tar.gz", "has_sig": false, "md5_digest": "1fe832c678ca9335e2b6b381869973c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 93387, "upload_time": "2019-06-30T17:24:19", "url": "https://files.pythonhosted.org/packages/20/d0/efd99760594da04e278b49e36485c824b28777dd57331bcb46ba440a90e7/pycel-1.0b15.tar.gz" } ], "1.0b16": [ { "comment_text": "", "digests": { "md5": "df6d1ec52f6d41dd9c183af4f1fff2b1", "sha256": "c112bdac10b901e435988e3743937804864ad931be74cd36de9d061e394985b0" }, "downloads": -1, "filename": "pycel-1.0b16-py3-none-any.whl", "has_sig": false, "md5_digest": "df6d1ec52f6d41dd9c183af4f1fff2b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 86042, "upload_time": "2019-07-08T02:27:43", "url": "https://files.pythonhosted.org/packages/01/c6/fc9c37ce3ccca9bbbe8df9c183055b5c8d8781714e92e614c260b0f55df3/pycel-1.0b16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5fd99347d182f1cc69edbcaa0a237bd", "sha256": "5ab7b05be990974927d4d08b70322528afa24d6366d00ce3d6e713db400c9336" }, "downloads": -1, "filename": "pycel-1.0b16.tar.gz", "has_sig": false, "md5_digest": "b5fd99347d182f1cc69edbcaa0a237bd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 95353, "upload_time": "2019-07-08T02:27:45", "url": "https://files.pythonhosted.org/packages/0f/72/307be6afc9bb61fad829cd80c94579e4aef4c857fe9a30884413d004d27b/pycel-1.0b16.tar.gz" } ], "1.0b17": [ { "comment_text": "", "digests": { "md5": "646f196cb057ed9ed3c9ed626594cd8c", "sha256": "e460e361f16ea889226922aa8959532edd930450e80faa859cde304397b98d85" }, "downloads": -1, "filename": "pycel-1.0b17-py3-none-any.whl", "has_sig": false, "md5_digest": "646f196cb057ed9ed3c9ed626594cd8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 89067, "upload_time": "2019-09-03T00:07:29", "url": "https://files.pythonhosted.org/packages/81/18/109231809308e6f97dd853fb314ace452d0b0ba995cd3dec9304ea1f75a3/pycel-1.0b17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53b8b18d28f9a5714556bad771c08fb4", "sha256": "586712e7dd63e4088ac723a34030cae0c677aea43b1df5b99b68e8c8e673201f" }, "downloads": -1, "filename": "pycel-1.0b17.tar.gz", "has_sig": false, "md5_digest": "53b8b18d28f9a5714556bad771c08fb4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 98021, "upload_time": "2019-09-03T00:07:31", "url": "https://files.pythonhosted.org/packages/a1/42/7c5e90f2b5362bbf5966f7b21597dd5cddd54703b717d41254772afc6208/pycel-1.0b17.tar.gz" } ], "1.0b18": [ { "comment_text": "", "digests": { "md5": "3a243a8a790bbe591145a93f03e0d1b1", "sha256": "ae7b5c22c458269efe0a25791c8c4128892aa849451831b2e9d9b671539a7853" }, "downloads": -1, "filename": "pycel-1.0b18-py3-none-any.whl", "has_sig": false, "md5_digest": "3a243a8a790bbe591145a93f03e0d1b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 90162, "upload_time": "2019-09-08T01:01:54", "url": "https://files.pythonhosted.org/packages/f7/fb/043a6d54fab54f7b3bbcd9446dff38709699f223818b177741f1b4af1c3d/pycel-1.0b18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c68215a50590c0587672c5f70363a85", "sha256": "c440013067f6b87c3fd911fb85d00b5f39f79f35d9952fa22277b6b47ba7b801" }, "downloads": -1, "filename": "pycel-1.0b18.tar.gz", "has_sig": false, "md5_digest": "5c68215a50590c0587672c5f70363a85", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 99710, "upload_time": "2019-09-08T01:01:56", "url": "https://files.pythonhosted.org/packages/83/77/5dc95c9ce1edc0e18f48334211dbb9f27f24cb46cba9fc5bf7a17113ec2b/pycel-1.0b18.tar.gz" } ], "1.0b19": [ { "comment_text": "", "digests": { "md5": "de61e67f13b6ed63edef6f2d11b7b719", "sha256": "8f853fbcf0df5c576b3d3013445618f1a08290fad36bb41ea596378d827f1bde" }, "downloads": -1, "filename": "pycel-1.0b19-py3-none-any.whl", "has_sig": false, "md5_digest": "de61e67f13b6ed63edef6f2d11b7b719", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 92178, "upload_time": "2019-09-12T23:13:14", "url": "https://files.pythonhosted.org/packages/8a/33/ff687e25fff9c8394f45a781db7265acd79cfed5501fe70df8dafc6fffa6/pycel-1.0b19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3325881a4b8c429ab2a410b2d35352a2", "sha256": "6fee141c61361de7674dd1d5a93f51fd1d43275a81858245a7ae296e72604152" }, "downloads": -1, "filename": "pycel-1.0b19.tar.gz", "has_sig": false, "md5_digest": "3325881a4b8c429ab2a410b2d35352a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 101556, "upload_time": "2019-09-12T23:13:17", "url": "https://files.pythonhosted.org/packages/e1/c4/93460dd1b20006df1eee9d368dd1240ddadfceea51fc4ca8730fea022114/pycel-1.0b19.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "558a620b009105810339d7656635f259", "sha256": "f5b65957612bd0d9b438b3f731c7d4aef99e5cbc103a4e54da89a9cc7d204303" }, "downloads": -1, "filename": "pycel-1.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "558a620b009105810339d7656635f259", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 52514, "upload_time": "2019-01-06T01:29:23", "url": "https://files.pythonhosted.org/packages/68/13/52507c3d6fd12b6a142e1fa28c561750d3edf2c06e3957db8d9fb6c316ef/pycel-1.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "345b74851170b4790a57c8305dfeeabb", "sha256": "504d14fe2ec60d5c91b7452550c3b55a6cd1e52d2708042f9bc82b82fc4498a5" }, "downloads": -1, "filename": "pycel-1.0b2.tar.gz", "has_sig": false, "md5_digest": "345b74851170b4790a57c8305dfeeabb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 55383, "upload_time": "2019-01-06T01:29:24", "url": "https://files.pythonhosted.org/packages/ca/73/134107ccc9d100420979fc5c1dc7991e0c1ebd28942b3f92e93768cbd6cb/pycel-1.0b2.tar.gz" } ], "1.0b20": [ { "comment_text": "", "digests": { "md5": "ae410c4c72b2681fcea0bee905d4bbb4", "sha256": "4517bcc6716384647b1a187d3d4679398b5f447eb5a08853336313e8440aaa95" }, "downloads": -1, "filename": "pycel-1.0b20-py3-none-any.whl", "has_sig": false, "md5_digest": "ae410c4c72b2681fcea0bee905d4bbb4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 95225, "upload_time": "2019-09-23T03:14:29", "url": "https://files.pythonhosted.org/packages/a9/53/3373afef92460caefe7f7943c7a1d92bf1211afdcc1c04d34b90cd31fdc7/pycel-1.0b20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e07ab4f270f3f2a18267bbe65efe2243", "sha256": "dd287f7f664f14ab0986a4797bb4909ee36e28bfe906c83bcdb72b4ce3a1ed6b" }, "downloads": -1, "filename": "pycel-1.0b20.tar.gz", "has_sig": false, "md5_digest": "e07ab4f270f3f2a18267bbe65efe2243", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 102789, "upload_time": "2019-09-23T03:14:32", "url": "https://files.pythonhosted.org/packages/fe/03/4ef14f844129223cdef5ec407e03594b4fe953dd1dcd12d7b8f8d76b0aaa/pycel-1.0b20.tar.gz" } ], "1.0b21": [ { "comment_text": "", "digests": { "md5": "9632250b2b92f7722fd7fa9f3b7edd8c", "sha256": "c1eb421f297aa23eb181538cb791275b9f923ecbc280efe68873d1c368bd73d6" }, "downloads": -1, "filename": "pycel-1.0b21-py3-none-any.whl", "has_sig": false, "md5_digest": "9632250b2b92f7722fd7fa9f3b7edd8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 95941, "upload_time": "2019-10-14T02:19:18", "url": "https://files.pythonhosted.org/packages/82/b7/1168e079fc5b249a4928baeeb19ccd5368a67c996979da372b7334abb3a4/pycel-1.0b21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9d8db80ddcb2096deefcc848b96cc09", "sha256": "8d4b984c6f87ca006ed5ad39fb1d11311e9ea3666f27935df75dfa7f6beee3c2" }, "downloads": -1, "filename": "pycel-1.0b21.tar.gz", "has_sig": false, "md5_digest": "e9d8db80ddcb2096deefcc848b96cc09", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 104003, "upload_time": "2019-10-14T02:19:20", "url": "https://files.pythonhosted.org/packages/91/b0/60702e608d5c75ce60770389e609103fb9cff764345a2e9f3d3d88901bad/pycel-1.0b21.tar.gz" } ], "1.0b22": [ { "comment_text": "", "digests": { "md5": "c4f6c83aea4cb4cf60a634d2a582974e", "sha256": "095e39231114f4869b7538a2b62a46601f139d7bbfe830b899a249a093c1ed5d" }, "downloads": -1, "filename": "pycel-1.0b22-py3-none-any.whl", "has_sig": false, "md5_digest": "c4f6c83aea4cb4cf60a634d2a582974e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 95977, "upload_time": "2019-10-18T01:55:21", "url": "https://files.pythonhosted.org/packages/2e/1c/5845663cf36f64b2b5504967002a64267109869eacc231e7701373902150/pycel-1.0b22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4fe2f94dbe0b0b746cb49977fd174b5", "sha256": "d8221546b288d98bee056c9f3607e9a85bb2b803239ff4021a0bb4491a62bcb7" }, "downloads": -1, "filename": "pycel-1.0b22.tar.gz", "has_sig": false, "md5_digest": "e4fe2f94dbe0b0b746cb49977fd174b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 104103, "upload_time": "2019-10-18T01:55:24", "url": "https://files.pythonhosted.org/packages/aa/81/bdb76fe029f05954241bf876ca0f4b9a8ed47800a2118f32f22fd911dfe7/pycel-1.0b22.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "c8c61e35b7942848e2ea0119ea15d9f8", "sha256": "46b97df7c3cd2d9b6b39b52862d795b2bd9c9127b51a23f7da8810d6557d808a" }, "downloads": -1, "filename": "pycel-1.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "c8c61e35b7942848e2ea0119ea15d9f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 52902, "upload_time": "2019-02-02T21:19:36", "url": "https://files.pythonhosted.org/packages/1f/b2/6cb8b5147fe32e119f037ff18fa0a2f86c382994ae446bc9ab428cd41fbc/pycel-1.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d842c0843bb1b5b20c562b792f67b5e", "sha256": "1c574394fd6736874fcb802ed47dbbdfaef96fda377b2c20d8e2723e8629127e" }, "downloads": -1, "filename": "pycel-1.0b3.tar.gz", "has_sig": false, "md5_digest": "0d842c0843bb1b5b20c562b792f67b5e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 55916, "upload_time": "2019-02-02T21:19:39", "url": "https://files.pythonhosted.org/packages/ab/8c/286d0234dc56b8c66757f7f9a7045d3191ea5bfc1688b782e4c2d6430051/pycel-1.0b3.tar.gz" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "915cc88475c2c64fe9b392c22dead4de", "sha256": "4c39e749a6a18b0ce986877dbdb4fe9d7a57250ad418533f93f2be7f4b07797c" }, "downloads": -1, "filename": "pycel-1.0b4-py3-none-any.whl", "has_sig": false, "md5_digest": "915cc88475c2c64fe9b392c22dead4de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 52833, "upload_time": "2019-02-17T22:29:49", "url": "https://files.pythonhosted.org/packages/0f/a8/90a056c8eb13c0ab1a2f09a956e8aff9f938558d4c324a6362d30f0082b7/pycel-1.0b4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc78665d278535c9335945a2dc721d6b", "sha256": "826822e0383197698639ccc6a566d6e9e61c2b0f35c43b01f47e6ec0b8658c1b" }, "downloads": -1, "filename": "pycel-1.0b4.tar.gz", "has_sig": false, "md5_digest": "dc78665d278535c9335945a2dc721d6b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 55875, "upload_time": "2019-02-17T22:29:53", "url": "https://files.pythonhosted.org/packages/84/d1/70f189914b948ff060c705f43ffcd3276c164b38b44b1e06080cd4c56ae4/pycel-1.0b4.tar.gz" } ], "1.0b5": [ { "comment_text": "", "digests": { "md5": "5a92276f3dca9c34629b3f497f531097", "sha256": "3a476800d6e21364903d51728cd5c925f1213db0ac081bb6374fd7edd75d4a7c" }, "downloads": -1, "filename": "pycel-1.0b5-py3-none-any.whl", "has_sig": false, "md5_digest": "5a92276f3dca9c34629b3f497f531097", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 54234, "upload_time": "2019-02-24T19:18:37", "url": "https://files.pythonhosted.org/packages/5d/ce/416a68c51c7279d6a0ab568f0ce619ecf54e1d5cdead71c1a833b1348147/pycel-1.0b5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a12004643b049d8405014b1d9a2f0a6", "sha256": "7e0f6925d9d3830e4bb76475947578efb610c9e06379a8e0ae900488a78ee722" }, "downloads": -1, "filename": "pycel-1.0b5.tar.gz", "has_sig": false, "md5_digest": "3a12004643b049d8405014b1d9a2f0a6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 57175, "upload_time": "2019-02-24T19:18:39", "url": "https://files.pythonhosted.org/packages/d7/c3/8ffb39fa9f33da3293cf1598f674ceac4c24539feea09e928a7caaaa12bf/pycel-1.0b5.tar.gz" } ], "1.0b6": [ { "comment_text": "", "digests": { "md5": "e99f93acdc7491a63e18d9d3e4b17f3b", "sha256": "dedb4a09b9723b6be42312f53570d7fdddd84f4e58757bc94ce4ac1ae065afae" }, "downloads": -1, "filename": "pycel-1.0b6-py3-none-any.whl", "has_sig": false, "md5_digest": "e99f93acdc7491a63e18d9d3e4b17f3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 54739, "upload_time": "2019-03-04T05:57:04", "url": "https://files.pythonhosted.org/packages/45/c5/7bdfc96673edcacc3191a3c6a17418e7c89174ff4765ce23054a32500fac/pycel-1.0b6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e40c2037dcfb7846f1c34851b507c61", "sha256": "dabe235d42be88a65221d96507631457576ce23d86a32989ba850b709b260811" }, "downloads": -1, "filename": "pycel-1.0b6.tar.gz", "has_sig": false, "md5_digest": "4e40c2037dcfb7846f1c34851b507c61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 57822, "upload_time": "2019-03-04T05:57:07", "url": "https://files.pythonhosted.org/packages/67/24/a1da5582e34a397c9dcaf6591902cc830a2406f8d1298e9d69cc70512a77/pycel-1.0b6.tar.gz" } ], "1.0b7": [ { "comment_text": "", "digests": { "md5": "596b8d62d9796c1534d1d20cd1c37100", "sha256": "7edba57788594173db1053741cd6d796ae97991231955fdd750b9438561e9ade" }, "downloads": -1, "filename": "pycel-1.0b7-py3-none-any.whl", "has_sig": false, "md5_digest": "596b8d62d9796c1534d1d20cd1c37100", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 55272, "upload_time": "2019-03-10T21:03:12", "url": "https://files.pythonhosted.org/packages/97/fb/e43f9ab8aaae82a249e3d52da3526c06fa47ca4081898d1d75c13b35e016/pycel-1.0b7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3012bbadaf747511c49ea91084dd9d1a", "sha256": "0dda372aaefe0826de6daa8bad3e79500d31a05a1109ab81473016a44e8aa5b7" }, "downloads": -1, "filename": "pycel-1.0b7.tar.gz", "has_sig": false, "md5_digest": "3012bbadaf747511c49ea91084dd9d1a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 58472, "upload_time": "2019-03-10T21:03:14", "url": "https://files.pythonhosted.org/packages/b3/7c/f89b6f5e4814817dc6af26b3b014e681dab7a6bb1cc34449a17b968d9065/pycel-1.0b7.tar.gz" } ], "1.0b8": [ { "comment_text": "", "digests": { "md5": "b8bb6b73592e6c505f99168cdb1f97ee", "sha256": "ca0a55ec8ab4063a28267125fe4f22d20756d7a0a950ba8e185f0ed955c87521" }, "downloads": -1, "filename": "pycel-1.0b8-py3-none-any.whl", "has_sig": false, "md5_digest": "b8bb6b73592e6c505f99168cdb1f97ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 60939, "upload_time": "2019-03-21T03:13:29", "url": "https://files.pythonhosted.org/packages/0b/dc/d6f8235ecbab06f7dfa377fc63af7b1e6d595be7f22c2fc47a1000fba5ed/pycel-1.0b8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e6fbbc2e37291fc24a59bde8b8d8369", "sha256": "bd7ef8d0c28c7947f15868e768ea3f782576c6cf15e328f052cdef45bb446943" }, "downloads": -1, "filename": "pycel-1.0b8.tar.gz", "has_sig": false, "md5_digest": "9e6fbbc2e37291fc24a59bde8b8d8369", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 64258, "upload_time": "2019-03-21T03:13:31", "url": "https://files.pythonhosted.org/packages/77/73/0c6db9da072ee8d89a1a6ca7a6430fb895f395bd219319edf25b72acda43/pycel-1.0b8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c4f6c83aea4cb4cf60a634d2a582974e", "sha256": "095e39231114f4869b7538a2b62a46601f139d7bbfe830b899a249a093c1ed5d" }, "downloads": -1, "filename": "pycel-1.0b22-py3-none-any.whl", "has_sig": false, "md5_digest": "c4f6c83aea4cb4cf60a634d2a582974e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 95977, "upload_time": "2019-10-18T01:55:21", "url": "https://files.pythonhosted.org/packages/2e/1c/5845663cf36f64b2b5504967002a64267109869eacc231e7701373902150/pycel-1.0b22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4fe2f94dbe0b0b746cb49977fd174b5", "sha256": "d8221546b288d98bee056c9f3607e9a85bb2b803239ff4021a0bb4491a62bcb7" }, "downloads": -1, "filename": "pycel-1.0b22.tar.gz", "has_sig": false, "md5_digest": "e4fe2f94dbe0b0b746cb49977fd174b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 104103, "upload_time": "2019-10-18T01:55:24", "url": "https://files.pythonhosted.org/packages/aa/81/bdb76fe029f05954241bf876ca0f4b9a8ed47800a2118f32f22fd911dfe7/pycel-1.0b22.tar.gz" } ] }