https://github.com/bradbase/xlcalculator

xlcalculator converts MS Excel formulas to Python and evaluates them.

https://github.com/bradbase/xlcalculator

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary
Last synced: 11 months ago · JSON representation

Repository

xlcalculator converts MS Excel formulas to Python and evaluates them.

Basic Info
  • Host: GitHub
  • Owner: bradbase
  • License: other
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 1.01 MB
Statistics
  • Stars: 138
  • Watchers: 8
  • Forks: 42
  • Open Issues: 34
  • Releases: 6
Created over 6 years ago · Last pushed over 2 years ago
Metadata Files
Readme Changelog License

README.rst

================
Excel Calculator
================


.. image:: https://github.com/bradbase/xlcalculator/actions/workflows/test.yml/badge.svg
   :target: https://github.com/bradbase/xlcalculator/actions

.. image:: https://coveralls.io/repos/github/bradbase/xlcalculator/badge.svg?branch=master
   :target: https://coveralls.io/github/bradbase/xlcalculator?branch=master

.. image:: https://img.shields.io/pypi/v/xlcalculator.svg
    :target: https://pypi.python.org/pypi/xlcalculator

.. image:: https://img.shields.io/pypi/pyversions/xlcalculator.svg
    :target: https://pypi.python.org/pypi/xlcalculator/

.. image:: https://img.shields.io/pypi/status/xlcalculator.svg
    :target: https://pypi.org/project/xlcalculator/

xlcalculator is a Python library that reads MS Excel files and, to the extent
of supported functions, can translate the Excel functions into Python code and
subsequently evaluate the generated Python code. Essentially doing the Excel
calculations without the need for Excel.

xlcalculator is a modernization of the
`koala2 `_ library.

``xlcalculator`` currently supports:

* Loading an Excel file into a Python compatible state
* Saving Python compatible state
* Loading Python compatible state
* Ignore worksheets
* Extracting sub-portions of a model. "focussing" on provided cell addresses
  or defined names
* Evaluating

    * Individual cells
    * Defined Names (a "named cell" or range)
    * Ranges
    * Shared formulas `not an Array Formula `_

      * Operands (+, -, /, \*, ==, <>, <=, >=)
      * on cells only

    * Set cell value
    * Get cell value
    * `Parsing a dict into the Model object `_

        * Code is in examples\\third_party_datastructure

    * Functions are at the bottom of this README

        * LN
            - Python Math.log() differs from Excel LN. Currently returning
              Math.log()

        * VLOOKUP
          - Exact match only

        * YEARFRAC
          - Basis 1, Actual/actual, is only within 3 decimal places

Not currently supported:

  * Array Formulas or CSE Formulas (not a shared formula): https://stackoverflow.com/questions/1256359/what-is-the-difference-between-a-shared-formula-and-an-array-formula or https://support.office.com/en-us/article/guidelines-and-examples-of-array-formulas-7d94a64e-3ff3-4686-9372-ecfd5caa57c7#ID0EAAEAAA=Office_2013_-_Office_2019)

      * Functions required to complete testing as per Microsoft Office Help
        website for SQRT and LN
      * EXP
      * DB

Run tests
---------

Setup your environment::

  virtualenv -p 3.10 ve
  ve/bin/pip install -e .[test]

From the root xlcalculator directory::

  ve/bin/py.test -rw -s --tb=native

Or simply use ``tox``::

  tox


Run Example
-----------

From the examples/common_use_case directory::

  python use_case_01.py



Adding/Registering Excel Functions
----------------------------------

Excel function support can be easily added.

Fundamental function support is found in the xlfunctions directory. The
functions are thematically organised in modules.

Excel functions can be added by any code using the
``xlfunctions.xl.register()`` decorator. Here is a simple example:

.. code-block:: Python

  from xlcalculator.xlfunctions import xl

  @xl.register()
  @xl.validate_args
  def ADDONE(num: xl.Number):
      return num + 1

The `@xl.validate_args` decorator will ensure that the annotated arguments are
converted and validated. For example, even if you pass in a string, it is
converted to a number (in typical Excel fashion):

.. code-block:: Python

  >>> ADDONE(1):
  2
  >>> ADDONE('1'):
  2

If you would like to contribute functions, please create a pull request. All
new functions should be accompanied by sufficient tests to cover the
functionality. Tests need to be written for both the Python implementation of
the function (tests/xlfunctions) and a comparison with Excel
(tests/xlfunctions_vs_excel).



Excel number precision
----------------------

Excel number precision is a complex discussion.

It has been discussed in a `Wikipedia
page `_.

The fundamentals come down to floating point numbers and a contention between
how they are represented in memory Vs how they are stored on disk Vs how they
are presented on screen. A `Microsoft
article `_
explains the contention.

This project is attempting to take care while reading numbers from the Excel
file to try and remove a variety of representation errors.

Further work will be required to keep numbers in-line with Excel throughout
different transformations.

From what I can determine this requires a low-level implementation of a
numeric datatype (C or C++, Cython??) to replicate its behaviour. Python
built-in numeric types don't replicate behaviours appropriately.


Unit testing Excel formulas directly from the workbook.
-------------------------------------------------------

If you are interested in unit testing formulas in your workbook, you can use
`FlyingKoala `_. An example on how can
be found
`here `_.


TODO
----

- Do not treat ranges as a granular AST node it instead as an operation ":" of
  two cell references to create the range. That will make implementing
  features like ``A1:OFFSET(...)`` easy to implement.

- Support for alternative range evaluation: by ref (pointer), by expr (lazy
  eval) and current eval mode.

    * Pointers would allow easy implementations of functions like OFFSET().

    * Lazy evals will allow efficient implementation of IF() since execution
      of true and false expressions can be delayed until it is decided which
      expression is needed.

- Implement array functions. It is really not that hard once a proper
  RangeData class has been implemented on which one can easily act with scalar
  functions.

- Improve testing

- Refactor model and evaluator to use pass-by-object-reference for values of
  cells which then get "used"/referenced by ranges, defined names and formulas

- Handle multi-file addresses

- Improve integration with pyopenxl for reading and writing files `example of
  problem space `_



Supported Functions
-------------------


Compatibility
-------------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | FLOOR           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Date and Time
-------------

  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | DATE            |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | DATEDIF         |      *       |       |          |       |
  +-----------------+--------------+-------+----------+-------+
  | DATEVALUE       |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DAY             |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DAYS            |      *       |       |          |       |
  +-----------------+--------------+-------+----------+-------+
  | EDATE           |      *       |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | EOMONTH         |      *       |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | HOUR            |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ISOWEEKNUM      |      *       |       |          |       |
  +-----------------+--------------+-------+----------+-------+
  | MINUTE          |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | MONTH           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | NOW             |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SECOND          |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TIME            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TIMEVALUE       |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TODAY           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | WEEKDAY         |      *       |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | YEAR            |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | YEARFRAC        |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+


Engineering
-----------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | BIN2DEC         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | BIN2HEX         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | BIN2OCT         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DEC2BIN         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DEC2HEX         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DEC2OCT         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | HEX2BIN         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | HEX2DEC         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | HEX2OCT         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | OCT2BIN         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | OCT2DEC         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | OCT2HEX         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Financial
---------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | IRR             |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | NPV             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | PMT             |      *       |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | PV              |      *       |       |          |       |
  +-----------------+--------------+-------+----------+-------+
  | SLN             |      *       |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | VDB             |      *       |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | XIRR            |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | XNPV            |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+


Information
-----------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | ISBLANK         |      *       |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | ISERR           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ISERROR         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ISEVEN          |      *       |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | ISNA            |      *       |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | ISNUMBER        |      *       |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | ISODD           |      *       |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | ISTEXT          |      *       |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | NA              |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Logical
-------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | AND             |      *       |   *   |     *    |       |
  +-----------------+--------------+-------+----------+-------+
  | FALSE           |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | IF              |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | IFERROR         |              |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | IFS             |              |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | NOT             |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | OR              |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SWITCH          |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TRUE            |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | XOR             |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Lookup and reference
--------------------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | CHOOSE          |      *       |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | COLUMN          |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COLUMNS         |              |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | HLOOKUP         |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | INDEX           |              |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | INDIRECT        |              |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | LOOKUP          |              |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | MATCH           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | OFFSET          |              |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | ROW             |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ROWS            |              |       |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | VLOOKUP         |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+


Math and Trigonometry
---------------------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | ABS             |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ACOS            |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ACOSH           |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ACOT            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ACOTH           |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ARABIC          |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ASIN            |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ASINH           |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ATAN            |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ATAN2           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ATANH           |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | CEILING         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | CEILING.MATH    |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | CEILING.PRECISE |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COS             |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COSH            |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COT             |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COTH            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | CSC             |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | CSCH            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DECIMAL         |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | DEGREES         |     *        |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | EVEN            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | EXP             |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | FACT            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | FACTDOUBLE      |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | FLOOR.MATH      |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | FLOOR.PRECISE   |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | GCD             |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | INT             |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ISO.CEILING     |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LCM             |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LN              |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LOG             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | LOG10           |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | MOD             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | MROUND          |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ODD             |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | PI              |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | POWER           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | RADIANS         |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | RAND            |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | RANDBETWEEN     |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | ROMAN           |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ROUND           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | ROUNDDOWN       |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | ROUNDUP         |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | SEC             |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SECH            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SIGN            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SIN             |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SINH            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SQRT            |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | SQRTPI          |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | SUM             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | SUMIF           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | SUMIFS          |      *       |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | SUMPRODUCT      |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | TAN             |      *       |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TANH            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TRUNC           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Statistical
-----------


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | AVERAGE         |      *       |   *   |     *    |   *   |
  +-----------------+--------------+-------+----------+-------+
  | AVERAGEA        |              |       |     *    |       |
  +-----------------+--------------+-------+----------+-------+
  | AVERAGEIF       |              |   *   |     *    |       |
  +-----------------+--------------+-------+----------+-------+
  | AVERAGEIFS      |              |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | COUNT           |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | COUNTA          |      *       |       |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | COUNTBLANK      |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | COUNTIF         |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | COUNTIFS        |      *       |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | LARGE           |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LINEST          |              |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+
  | MAX             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | MAXA            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | MAXIFS          |              |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | MIN             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | MINA            |              |       |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | MINIFS          |              |   *   |          |       |
  +-----------------+--------------+-------+----------+-------+
  | SMALL           |              |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+


Text
----


  +-----------------+--------------+-------+----------+-------+
  | Function        | xlcalculator | PyCel | formulas | Koala |
  +-----------------+--------------+-------+----------+-------+
  | CONCAT          |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | CONCATENATE     |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | EXACT           |      *       |       |          |       |
  +-----------------+--------------+-------+----------+-------+
  | FIND            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LEFT            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LEN             |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | LOWER           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | MID             |      *       |   *   |    *     |   *   |
  +-----------------+--------------+-------+----------+-------+
  | REPLACE         |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | RIGHT           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | TRIM            |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | UPPER           |      *       |   *   |    *     |       |
  +-----------------+--------------+-------+----------+-------+
  | VALUE           |              |   *   |          |   *   |
  +-----------------+--------------+-------+----------+-------+

Owner

  • Name: Bradley van Ree
  • Login: bradbase
  • Kind: user
  • Location: Melbourne

GitHub Events

Total
  • Issues event: 1
  • Watch event: 19
  • Issue comment event: 3
  • Pull request event: 4
  • Fork event: 10
Last Year
  • Issues event: 1
  • Watch event: 19
  • Issue comment event: 3
  • Pull request event: 4
  • Fork event: 10

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 325
  • Total Committers: 13
  • Avg Commits per committer: 25.0
  • Development Distribution Score (DDS): 0.548
Past Year
  • Commits: 11
  • Committers: 3
  • Avg Commits per committer: 3.667
  • Development Distribution Score (DDS): 0.455
Top Committers
Name Email Commits
Bradley van Ree 3****i 147
Bradley van Ree 4****e 75
Stephan Richter s****r@g****m 73
Jordan Vance j****e@s****m 12
Kyle Monson m****e@g****m 3
Adanteh g****t@a****z 3
Talm28 1****8 3
Victor J. Marin v****n@g****m 2
Adam Groszer a****r@g****m 2
Jordan Vance j****e@g****m 2
Andrey Lebedev a****y@l****t 1
Stani Michiels s****i@g****l 1
Ulf Hamster 5****6@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 43
  • Total pull requests: 37
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 21 days
  • Total issue authors: 21
  • Total pull request authors: 17
  • Average comments per issue: 2.02
  • Average comments per pull request: 1.19
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bradbase (9)
  • strichter (8)
  • OptrixAU (3)
  • tjward2 (2)
  • ulf1 (2)
  • agroszer (2)
  • Adanteh (2)
  • kmonson (2)
  • deandunbar (1)
  • scottgifford (1)
  • alexshen-sx (1)
  • DarkAngel-C (1)
  • monoasbush (1)
  • done712 (1)
  • am4321 (1)
Pull Request Authors
  • bradbase (10)
  • jordanvance (6)
  • strichter (3)
  • Talm28 (3)
  • parvizmp (2)
  • agroszer (2)
  • kmonson (2)
  • yasirroni (2)
  • stanim (1)
  • Adanteh (1)
  • victorjmarin (1)
  • OptrixAU (1)
  • ulf1 (1)
  • ckp95 (1)
  • jessebluestein (1)
Top Labels
Issue Labels
bug (12) enhancement (4)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 23,309 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 28
  • Total maintainers: 2
pypi.org: xlcalculator

Converts MS Excel formulas to Python and evaluates them.

  • Versions: 28
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 23,309 Last month
Rankings
Downloads: 2.8%
Stargazers count: 7.3%
Forks count: 7.7%
Average: 9.9%
Dependent packages count: 10.1%
Dependent repos count: 21.5%
Maintainers (2)
Last synced: 11 months ago

Dependencies

.github/workflows/test.yml actions
  • AndreMiras/coveralls-python-action develop composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
requirements.txt pypi
  • attrs ==19.3.0
  • click ==7.1.2
  • coverage ==5.1
  • et-xmlfile ==1.0.1
  • flake8 ==3.8.2
  • importlib-metadata ==1.6.0
  • jdcal ==1.4.1
  • jsonpickle ==1.4.1
  • mccabe ==0.6.1
  • mock ==4.0.2
  • more-itertools ==8.3.0
  • numpy ==1.18.4
  • numpy-financial ==1.0.0
  • openpyxl ==3.0.3
  • packaging ==20.4
  • pandas ==1.0.3
  • pip-tools ==5.1.2
  • pluggy ==0.13.1
  • py ==1.8.1
  • pycodestyle ==2.6.0
  • pyflakes ==2.2.0
  • pyparsing ==2.4.7
  • pytest ==5.4.2
  • pytest-cov ==2.9.0
  • python-dateutil ==2.8.1
  • pytz ==2020.1
  • scipy ==1.5.4
  • six ==1.15.0
  • wcwidth ==0.1.9
  • yearfrac ==0.4.4
  • zipp ==3.1.0
setup.py pypi
  • jsonpickle *
  • mock *
  • numpy *
  • numpy-financial *
  • openpyxl *
  • pandas *
  • scipy *
  • yearfrac ==0.4.4
requirements.in pypi