<!-- Thank you for contributing to Pyodide! All improvements are welcome,
     so don't be afraid to make a PR. -->

<!-- [IMPORTANT] Note on CI failures:
     Currently, we are having issues with selenium-based tests.
     Don't panic if the CI fails on your PR because of timeouts.
     It's probably not your fault. We will investigate :) -->

### Description

<!-- Please explain what your PR is about:
     - reasoning for the change
     - some details of updated code
     - any noteworthy choices to be aware of
	Please refer to any related issues by #<issue_id> -->

Working on using pre-commit properly. Will be a series of commits, and undrafted after they are complete.

Rough plan:

- [x] Commit 1: update pre-commit, prepare mypy to run correctly.
- [x] Next commit: apply pre-commit fixes
- [x] Next commit: use pre-commit instead of manual runs inside Makefile.
- [x] Somewhere in between commit: fix manual issues

### Checklists

<!-- Note on checklists:
     If you think some of these steps are not necessary for your PR,
     just remove those checkboxes, or mark them as checked. Otherwise,
     if some checkboxes are left unmarked, we might assume that your PR
     is not ready to be merged and we might keep you waiting -->

style: improve pre-commit. <!-- Thank you for contributing to Pyodide! All improvements are welcome,
     so don't be afraid to make a PR. -->

<!-- [IMPORTANT] Note on CI failures:
     Currently, we are having issues with selenium-based tests.
     Don't panic if the CI fails on your PR because of timeouts.
     It's probably not your fault. We will investigate :) -->

### Description

<!-- Please explain what your PR is about:
     - reasoning for the change
     - some details of updated code
     - any noteworthy choices to be aware of
	Please refer to any related issues by #<issue_id> -->

Working on using pre-commit properly. Will be a series of commits, and undrafted after they are complete.

Rough plan:

- [x] Commit 1: update pre-commit, prepare mypy to run correctly.
- [x] Next commit: apply pre-commit fixes
- [x] Next commit: use pre-commit instead of manual runs inside Makefile.
- [x] Somewhere in between commit: fix manual issues

### Checklists

<!-- Note on checklists:
     If you think some of these steps are not necessary for your PR,
     just remove those checkboxes, or mark them as checked. Otherwise,
     if some checkboxes are left unmarked, we might assume that your PR
     is not ready to be merged and we might keep you waiting -->

# Related Projects

## WebAssembly ecosystem

- [emscripten](https://emscripten.org/) is the compiler toolchain for WebAssembly
  that made Pyodide possible.

## Notebook environments, IDEs, and REPLs

- [Iodide](https://github.com/iodide-project/iodide) is a notebook-like
  environment for literate scientific computing and communication for the
  web. It is no longer actively maintained. Historically, Pyodide started
  as plugin for iodide.
- [Starboard notebook](https://github.com/gzuidhof/starboard-notebook) is an
  in-browser literal notebook runtime that uses Pyodide for Python.
- [Basthon notebook](https://notebook.basthon.fr/) is a static fork of Jupyter
  notebook with a Pyodide kernel (currently in French).
- [JupyterLite](https://github.com/jupyterlite/jupyterlite) is a JupyterLab
  distribution that runs entirely in the browser, based on Pyodide.
- [futurecoder](https://futurecoder.io/) is an interactive Python
  course running on Pyodide. It includes an
  [IDE](https://futurecoder.io/course/#ide) with a REPL,
  debuggers, and automatic installation of
  any imported packages supported by Pyodide's `micropip`.

## Dashboards and visualization

- [WebDash](https://github.com/ibdafna/webdash) is a Plotly Dash distribution
  that runs entirely in the browser, using Pyodide.

## Other projects

- [wc-code](https://github.com/vanillawc/wc-code) is a library to run
  JavaScript, Python, and Theme in the browser with inline code blocks.
  It uses Pyodide to execute Python code.
- [SymPy Beta](https://github.com/eagleoflqj/sympy_beta) is a fork of SymPy
  Gamma. It's an in-browser answer engine with a Pyodide backend.

# Related Projects

## WebAssembly ecosystem

- [emscripten](https://emscripten.org/) is the compiler toolchain for WebAssembly
  that made Pyodide possible.

## Notebook environments, IDEs, and REPLs

- [Iodide](https://github.com/iodide-project/iodide) is a notebook-like
  environment for literate scientific computing and communication for the
  web. It is no longer actively maintained. Historically, Pyodide started
  as plugin for iodide.
- [Starboard notebook](https://github.com/gzuidhof/starboard-notebook) is an
  in-browser literal notebook runtime that uses Pyodide for Python.
- [Basthon notebook](https://notebook.basthon.fr/) is a static fork of Jupyter
  notebook with a Pyodide kernel (currently in French).
- [JupyterLite](https://github.com/jupyterlite/jupyterlite) is a JupyterLab
  distribution that runs entirely in the browser, based on Pyodide.
- [futurecoder](https://futurecoder.io/) is an interactive Python
  course running on Pyodide. It includes an
  [IDE](https://futurecoder.io/course/#ide) with a REPL,
  debuggers, and automatic installation of
  any imported packages supported by Pyodide's `micropip`.

## Dashboards and visualization

- [WebDash](https://github.com/ibdafna/webdash) is a Plotly Dash distribution
  that runs entirely in the browser, using Pyodide.

## Other projects

- [wc-code](https://github.com/vanillawc/wc-code) is a library to run
  JavaScript, Python, and Theme in the browser with inline code blocks.
  It uses Pyodide to execute Python code.
- [SymPy Beta](https://github.com/eagleoflqj/sympy_beta) is a fork of SymPy
  Gamma. It's an in-browser answer engine with a Pyodide backend.
