Skip to main content

The Mito Spreadsheet

The Mito spreadsheet is desgined to help folks automate their repeititive reporting with Python. Every edit you make to the Mito spreadsheet is automatically converted to production-ready Python code. Use spreadsheet formulas like VLOOKUP, pivot tables, and all of your favorite Excel functionality.

Installing the Mito Spreadsheet

It is important to install the correct version of mitosheet for your version of JupyterLab.

JupyterLab 4.x: To intall mitosheet for JupyterLab 4.x, run the following command:

pip install mitosheet

JupyterLab 3.x: To install mitosheet for JupyterLab 3.x, use the latest release of the mitosheet 0.1.x series. Run the following command:

pip install mitosheet~=0.1

Codebase structure

This folder contains a variety of packages and utilities for the mitosheet Python package. The primary folders of interest:

  • mitosheet contains the Python code for the mitosheet Python package.
  • src contains the TypeScript, React code for the mitosheet JupyterLab extension front-end.
  • css contains styling for the frontend.
  • deployment contains scripts helpful for deploying the mitosheet package

The mitosheet Package

The mitosheet package currently works for JupyterLab 4.0, Streamlit, and Dash.

For Mac

We have a setup script for Mac. Just run

bash dev/macsetup.sh

Open JupyterLab

In a seperate terminal, run

source venv/bin/activate
jupyter lab

(note that the second command can be jupyter notebook if you want to develop in notebook).

Open Streamlit

In a seperate terminal, run

source venv/bin/activate
streamlit run /path/to/app.py

For Windows

First, delete any existing virtual environment that you have in this folder, and create a new virtual environment.

On Windows (in command prompt, not powershell):

rmdir /s venv
python3 -m venv venv
venv\Scripts\activate.bat

Then, run the following commands to create a virtual enviorment, install a development version of mitosheet in it, and then launch Jupyter Lab 3.0.

pip install -e ".[test, deploy]"
jupyter labextension develop . --overwrite
jupyter lab

If the pip install -e ".test, deploy]" fails and the folder pip-wheel-metadata exists in your Mito folder, delete it.

In a seperate terminal, to recompile the front-end, run the following commands (jlpm install only needs to be run the first time).

jlpm install
jlpm run watch

NOTE: On Windows, this seperate terminal must be a Adminstrator terminal. To launch an admin terminal, search for Command Prompt, and then right click on the app and click Run as adminstrator. Then navigate to the virtual environment, start it, and then run jlpm run watch.

Furthermore, if the final jlpm run watch or jlpm install command fails, you may need to run export NODE_OPTIONS=--openssl-legacy-provider.

One Liner Command for Mac

deactivate; rm -rf venv; python3 -m venv venv && source venv/bin/activate && pip install -e ".[test, deploy]" && jupyter labextension develop . --overwrite && jupyter lab

Testing

Backend Tests

Run automated backend tests with

pytest

Automated tests can be found in mitosheet/tests. These are tests written using standard pytest tools, and include tests like testing the evaluate function, the MitoWidget, and all other pure Python code.

Linting

This project has linting set up for both (Python)[https://flake8.pycqa.org/en/latest/index.html] and (typescript)[https://github.com/typescript-eslint/typescript-eslint].

Run typescript linting with the command

npx eslint . --ext .tsx --fix

Using the fuzzer

Setting up the fuzzer is an annoying and long process, and so we do not include it in the main install commands for setting up Mito (for now, we will if we figure out how to optimize this).

To use the fuzzer, you need to install pip install atheris. This might work for you (it didn't for me). If it doesn't work, and you get a red error, check the error to see if it is telling you to download the latest version of clang. If it is, then try:

cd ~
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build
cd build
cmake -DLLVM_ENABLE_PROJECTS='clang;compiler-rt' -G "Unix Makefiles" ../llvm # NOTE: if this doesn't work, you might need to install cmake. Google how to do this
make -j 100 # This literally takes hours

Then, go back to the venv you want to install the fuzzer in, and run: CLANG_BIN="/Users/nate/llvm-project/build/bin/clang" pip install atheris, and it should work.

Running the fuzzer

Run the fuzzer with python mitosheet/tests/fuzz.py, and it will run till it hits an error.

How the Build Works

This represents my best understanding of how the packaging process works. There might be slight misunderstandings here, so don't take this as gospel, but rather as the general shape of things.

For JupyterLab 4 and Notebook 7

  1. First, the TypeScript is compiled to JS, and placed in the ./lib folder.
  2. Then, the ./lib and ./css folder (specified in files) are build by the command jupyter labextension watch . into the mitosheet/labextension folder.
  3. Note that jupyter labextension watch . figures out the source and destination locations through the jupyterlab information in the package.json.

Metadata

Release files for mitosheet 0.2.69

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mitosheet 0.2.69
File Size Uploaded
mitosheet-0.2.69.tar.gz 4.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mitosheet 0.2.69
File Interpreter ABI Platform
mitosheet-0.2.69-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 8.3 MB

Release files / mitosheet-0.2.69.tar.gz

Download URL mitosheet-0.2.69.tar.gz
Size 4.0 MB
Tags Source
SHA-256 checksum
How to use checksums
e0c07aea51ab725c3a346583ce714459a71e91693e3584a13bcafb270dee12e4
BLAKE2b-256 checksum
How to use checksums
f3972df157dcb903da42b0c78f9b638a590508eff4f4df4e4a1a5e06ddff70d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.20

Release files / mitosheet-0.2.69-py2.py3-none-any.whl

Download URL mitosheet-0.2.69-py2.py3-none-any.whl
Size 4.3 MB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
4cf901e1e260db79321011ef7c5754cc69ca46b5f89ffb69bafe95e78fe5dd3b
BLAKE2b-256 checksum
How to use checksums
e71cb6b1f4520109f22b742b1ba8afa5b93b7098fefd06da28be9b019dcd43a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.20

Release history Release notifications | RSS feed

This release

0.2.69 This release

2 release files

0.2.68

2 release files

0.2.67

2 release files

0.2.66

2 release files

0.2.65

2 release files

0.2.63

2 release files

0.2.62

2 release files

0.2.61

2 release files

0.2.59

2 release files

0.2.58

2 release files

0.2.57

2 release files

0.2.55

2 release files

0.2.53

2 release files

0.2.52

2 release files

0.2.51

2 release files

0.2.50

2 release files

0.2.48

2 release files

0.2.47

2 release files

0.2.44

2 release files

0.2.41

2 release files

0.2.37

2 release files

0.2.36

2 release files

0.2.35

2 release files

0.2.34

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.21

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.14

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.99

2 release files

0.1.98

2 release files

0.1.97

2 release files

0.1.96

2 release files

0.1.95

2 release files

0.1.94

2 release files

0.1.93

2 release files

0.1.84

2 release files

0.1.83

2 release files

0.1.82

2 release files

0.1.81

2 release files

0.1.80

2 release files

0.1.79

2 release files

0.1.78

2 release files

0.1.77

2 release files

0.1.76

2 release files

0.1.75

2 release files

0.1.74

2 release files

0.1.73

2 release files

0.1.72

2 release files

0.1.71

2 release files

0.1.70

2 release files

0.1.69

2 release files

0.1.68

2 release files

0.1.67

2 release files

0.1.66

2 release files

0.1.65

2 release files

0.1.64

2 release files

0.1.63

2 release files

0.1.62

2 release files

0.1.61

2 release files

0.1.55

2 release files

0.1.54

2 release files

0.1.53

2 release files

0.1.52

2 release files

0.1.51

2 release files

0.1.50

2 release files

0.1.49

2 release files

0.1.48

2 release files

0.1.47

2 release files

0.1.46

2 release files

0.1.45

2 release files

0.1.44

2 release files

0.1.36

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page