Metadata-Version: 2.1
Name: formulas
Version: 0.1.2
Summary: Parse and compile excel formulas in python code.
Home-page: https://github.com/vinci1it2000/formulas
Author: Vincenzo Arcidiacono
Author-email: vinci1it2000@gmail.com
License: EUPL 1.1+
Download-URL: https://github.com/vinci1it2000/formulas/tarball/v0.1.2
Project-URL: Documentation, http://formulas.readthedocs.io
Project-URL: Issue tracker, https://github.com/vinci1it2000/formulas/issues
Description: .. _start-intro:
        
        
        What is formulas?
        *****************
        
        Formulas implements an interpreter for excel formulas, which parses
        and compile excel formulas expressions.
        
        Moreover, it compiles excel workbooks to python and executes without
        using the Excel COM server. Hence,  **Excel is not needed**.
        
        
        Installation
        ************
        
        To install it use (with root privileges):
        
        ::
        
           $ pip install formulas
        
        Or download the last git version and use (with root privileges):
        
        ::
        
           $ python setup.py install
        
        
        Install extras
        ==============
        
        Some additional functionality is enabled installing the following
        extras:
        
        * excel: enables to compile excel workbooks to python and execute
           using: ``ExcelModel``.
        
        * plot: enables to plot the formula ast and the excel model.
        
        To install formulas and all extras, do:
        
        ::
        
           $ pip install formulas[all]
        
        .. _end-quick:
        
        
        Basic Examples
        **************
        
        
        Parsing
        =======
        
        An example how to parse and execute an excel formula is the following:
        
        >>> import formulas
        >>> func = formulas.Parser().ast('=(1 + 1) + B3 / A2')[1].compile()
        
        To visualize formula model and get the input order you can do the
        following:
        
        ..
        
           >>> list(func.inputs)
           ['A2', 'B3']
           >>> func.plot(view=False)  # Set view=True to plot in the default browser.
           SiteMap([(=((1 + 1) + (B3 / A2)), SiteMap())])
        
           [graph]
        
        Finally to execute the formula and plot the workflow:
        
        ..
        
           >>> func(1, 5)
           OperatorArray(7.0, dtype=object)
           >>> func.plot(workflow=True, view=False)  # Set view=True to plot in the default browser.
           SiteMap([(=((1 + 1) + (B3 / A2)), SiteMap())])
        
           [graph]
        
        
        Excel
        =====
        
        An example how to load, calculate, and write an excel workbook is the
        following:
        
        >>> import formulas
        >>> fpath = 'test/test_files/excel.xlsx'
        >>> xl_model = formulas.ExcelModel().loads(fpath).finish()
        >>> xl_model.calculate()
        Solution(...)
        >>> xl_model.write()
        {'EXCEL.XLSX': {Book: <openpyxl.workbook.workbook.Workbook ...>}}
        
        To compile and execute a sub model from a workbook you can do the
        following:
        
        >>> inputs = ["'[EXCEL.XLSX]DATA'!A2"]  # input cells
        >>> outputs = ["'[EXCEL.XLSX]DATA'!C2"]  # output cells
        >>> func = xl_model.compile(inputs, outputs)
        >>> func(2).value[0,0]
        4.0
        
        ..
        
           >>> func.plot(view=False)  # Set view=True to plot in the default browser.
           SiteMap([(Dispatcher ..., SiteMap())])
        
           [graph]
        
        
        Custom functions
        ================
        
        An example how to add a custom function to the formula parser is the
        following:
        
        >>> import formulas
        >>> FUNCTIONS = formulas.get_functions()
        >>> FUNCTIONS['MYFUNC'] = lambda x, y: 1 + y + x
        >>> func = formulas.Parser().ast('=MYFUNC(1, 2)')[1].compile()
        >>> func()
        4
        
Keywords: python,utility,library,excel,formulas,processing,calculation,dependencies,resolution,scientific,engineering,dispatch,compiling
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Development Status :: 4 - Beta
Classifier: Natural Language :: English
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Provides-Extra: plot
Provides-Extra: all
Provides-Extra: excel
