resonanceX 0.1.0
Detect and visualize orbital resonances in exoplanet systems
License: MIT
Requires Python: >=3.10

# resonanceX

resonanceX is a Python package for simulating and analyzing orbital resonances in multi-body systems.

## Features
- N-body simulation using Rebound
- Resonance detection and visualization with matplotlib
- Streamlit interface for interactive exploration
- Lightweight and easy to install

## Installation

Clone the repository:
```bash
git clone https://github.com/your-username/resonanceX.git
cd resonanceX
```

Install dependencies:
```bash
pip install -r requirements.txt
```

## Usage

Launch the Streamlit app:
```bash
streamlit run streamlit_app.py
```

## Project Structure
```
├── resonanceX/
│   .gitignore
│   app.py
│   LICENSE
│   pyproject.toml
│   README.md
│   requirements.txt
│   test_full_pipeline.py
│   ├── datasets/
│   │   nasa_exoplanets.csv
│   ├── resonanceX/
│   │   detector.py
│   │   resonance.py
│   │   simulator.py
│   │   trappist_sim.py
│   │   utils.py
│   │   visualizer.py
│   │   __init__.py
│   │   ├── tests/
│   │   │   test_detector.py
│   │   │   __init__.py
│   │   ├── __pycache__/
│   │   │   detector.cpython-310.pyc
│   │   │   detector.cpython-313.pyc
│   │   │   detector.cpython-314.pyc
│   │   │   resonance.cpython-310.pyc
│   │   │   simulator.cpython-310.pyc
│   │   │   simulator.cpython-313.pyc
│   │   │   trappist_sim.cpython-310.pyc
│   │   │   utils.cpython-310.pyc
│   │   │   utils.cpython-313.pyc
│   │   │   utils.cpython-314.pyc
│   │   │   visualizer.cpython-310.pyc
│   │   │   visualizer.cpython-313.pyc
│   │   │   visualizer.cpython-314.pyc
│   │   │   __init__.cpython-310.pyc
│   │   │   __init__.cpython-313.pyc
│   │   │   __init__.cpython-314.pyc
│   ├── venv/
│   │   pyvenv.cfg
│   │   ├── etc/
│   │   │   ├── jupyter/
│   │   │   │   ├── nbconfig/
│   │   │   │   │   ├── notebook.d/
│   │   │   │   │   │   pydeck.json
│   │   ├── Include/
│   │   ├── Lib/
│   │   │   ├── site-packages/
│   │   │   │   .DS_Store
│   │   │   │   distutils-precedence.pth
│   │   │   │   librebound.cp310-win_amd64.pyd
│   │   │   │   numpy-2.2.6-cp310-cp310-win_amd64.whl
│   │   │   │   pylab.py
│   │   │   │   scipy-1.15.3-cp310-cp310-win_amd64.whl
│   │   │   │   six.py
│   │   │   │   typing_extensions.py
│   │   │   │   ├── altair/
│   │   │   │   │   py.typed
│   │   │   │   │   theme.py
│   │   │   │   │   _magics.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── expr/
│   │   │   │   │   │   consts.py
│   │   │   │   │   │   core.py
│   │   │   │   │   │   funcs.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   consts.cpython-310.pyc
│   │   │   │   │   │   │   core.cpython-310.pyc
│   │   │   │   │   │   │   funcs.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── jupyter/
│   │   │   │   │   │   jupyter_chart.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── js/
│   │   │   │   │   │   │   index.js
│   │   │   │   │   │   │   README.md
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   jupyter_chart.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── typing/
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   compiler.py
│   │   │   │   │   │   core.py
│   │   │   │   │   │   data.py
│   │   │   │   │   │   deprecation.py
│   │   │   │   │   │   display.py
│   │   │   │   │   │   execeval.py
│   │   │   │   │   │   html.py
│   │   │   │   │   │   mimebundle.py
│   │   │   │   │   │   plugin_registry.py
│   │   │   │   │   │   save.py
│   │   │   │   │   │   schemapi.py
│   │   │   │   │   │   selection.py
│   │   │   │   │   │   server.py
│   │   │   │   │   │   _dfi_types.py
│   │   │   │   │   │   _importers.py
│   │   │   │   │   │   _show.py
│   │   │   │   │   │   _transformed_data.py
│   │   │   │   │   │   _vegafusion_data.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   compiler.cpython-310.pyc
│   │   │   │   │   │   │   core.cpython-310.pyc
│   │   │   │   │   │   │   data.cpython-310.pyc
│   │   │   │   │   │   │   deprecation.cpython-310.pyc
│   │   │   │   │   │   │   display.cpython-310.pyc
│   │   │   │   │   │   │   execeval.cpython-310.pyc
│   │   │   │   │   │   │   html.cpython-310.pyc
│   │   │   │   │   │   │   mimebundle.cpython-310.pyc
│   │   │   │   │   │   │   plugin_registry.cpython-310.pyc
│   │   │   │   │   │   │   save.cpython-310.pyc
│   │   │   │   │   │   │   schemapi.cpython-310.pyc
│   │   │   │   │   │   │   selection.cpython-310.pyc
│   │   │   │   │   │   │   server.cpython-310.pyc
│   │   │   │   │   │   │   _dfi_types.cpython-310.pyc
│   │   │   │   │   │   │   _importers.cpython-310.pyc
│   │   │   │   │   │   │   _show.cpython-310.pyc
│   │   │   │   │   │   │   _transformed_data.cpython-310.pyc
│   │   │   │   │   │   │   _vegafusion_data.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── vegalite/
│   │   │   │   │   │   api.py
│   │   │   │   │   │   data.py
│   │   │   │   │   │   display.py
│   │   │   │   │   │   schema.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── v5/
│   │   │   │   │   │   │   api.py
│   │   │   │   │   │   │   compiler.py
│   │   │   │   │   │   │   data.py
│   │   │   │   │   │   │   display.py
│   │   │   │   │   │   │   theme.py
│   │   │   │   │   │   │   __init__.py
│   │   │   │   │   │   │   ├── schema/
│   │   │   │   │   │   │   │   channels.py
│   │   │   │   │   │   │   │   core.py
│   │   │   │   │   │   │   │   mixins.py
│   │   │   │   │   │   │   │   vega-lite-schema.json
│   │   │   │   │   │   │   │   vega-themes.json
│   │   │   │   │   │   │   │   _config.py
│   │   │   │   │   │   │   │   _typing.py
│   │   │   │   │   │   │   │   __init__.py
│   │   │   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   │   │   channels.cpython-310.pyc
│   │   │   │   │   │   │   │   │   core.cpython-310.pyc
│   │   │   │   │   │   │   │   │   mixins.cpython-310.pyc
│   │   │   │   │   │   │   │   │   _config.cpython-310.pyc
│   │   │   │   │   │   │   │   │   _typing.cpython-310.pyc
│   │   │   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   │   api.cpython-310.pyc
│   │   │   │   │   │   │   │   compiler.cpython-310.pyc
│   │   │   │   │   │   │   │   data.cpython-310.pyc
│   │   │   │   │   │   │   │   display.cpython-310.pyc
│   │   │   │   │   │   │   │   theme.cpython-310.pyc
│   │   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   api.cpython-310.pyc
│   │   │   │   │   │   │   data.cpython-310.pyc
│   │   │   │   │   │   │   display.cpython-310.pyc
│   │   │   │   │   │   │   schema.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   theme.cpython-310.pyc
│   │   │   │   │   │   _magics.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── altair-5.5.0.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE
│   │   │   │   ├── attr/
│   │   │   │   │   converters.py
│   │   │   │   │   converters.pyi
│   │   │   │   │   exceptions.py
│   │   │   │   │   exceptions.pyi
│   │   │   │   │   filters.py
│   │   │   │   │   filters.pyi
│   │   │   │   │   py.typed
│   │   │   │   │   setters.py
│   │   │   │   │   setters.pyi
│   │   │   │   │   validators.py
│   │   │   │   │   validators.pyi
│   │   │   │   │   _cmp.py
│   │   │   │   │   _cmp.pyi
│   │   │   │   │   _compat.py
│   │   │   │   │   _config.py
│   │   │   │   │   _funcs.py
│   │   │   │   │   _make.py
│   │   │   │   │   _next_gen.py
│   │   │   │   │   _typing_compat.pyi
│   │   │   │   │   _version_info.py
│   │   │   │   │   _version_info.pyi
│   │   │   │   │   __init__.py
│   │   │   │   │   __init__.pyi
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   converters.cpython-310.pyc
│   │   │   │   │   │   exceptions.cpython-310.pyc
│   │   │   │   │   │   filters.cpython-310.pyc
│   │   │   │   │   │   setters.cpython-310.pyc
│   │   │   │   │   │   validators.cpython-310.pyc
│   │   │   │   │   │   _cmp.cpython-310.pyc
│   │   │   │   │   │   _compat.cpython-310.pyc
│   │   │   │   │   │   _config.cpython-310.pyc
│   │   │   │   │   │   _funcs.cpython-310.pyc
│   │   │   │   │   │   _make.cpython-310.pyc
│   │   │   │   │   │   _next_gen.cpython-310.pyc
│   │   │   │   │   │   _version_info.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── attrs/
│   │   │   │   │   converters.py
│   │   │   │   │   exceptions.py
│   │   │   │   │   filters.py
│   │   │   │   │   py.typed
│   │   │   │   │   setters.py
│   │   │   │   │   validators.py
│   │   │   │   │   __init__.py
│   │   │   │   │   __init__.pyi
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   converters.cpython-310.pyc
│   │   │   │   │   │   exceptions.cpython-310.pyc
│   │   │   │   │   │   filters.cpython-310.pyc
│   │   │   │   │   │   setters.cpython-310.pyc
│   │   │   │   │   │   validators.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── attrs-25.4.0.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE
│   │   │   │   ├── blinker/
│   │   │   │   │   base.py
│   │   │   │   │   py.typed
│   │   │   │   │   _utilities.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   base.cpython-310.pyc
│   │   │   │   │   │   _utilities.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── blinker-1.9.0.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   LICENSE.txt
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   ├── cachetools/
│   │   │   │   │   func.py
│   │   │   │   │   keys.py
│   │   │   │   │   _cached.py
│   │   │   │   │   _cachedmethod.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   func.cpython-310.pyc
│   │   │   │   │   │   keys.cpython-310.pyc
│   │   │   │   │   │   _cached.cpython-310.pyc
│   │   │   │   │   │   _cachedmethod.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── cachetools-6.2.2.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   top_level.txt
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE
│   │   │   │   ├── certifi/
│   │   │   │   │   cacert.pem
│   │   │   │   │   core.py
│   │   │   │   │   py.typed
│   │   │   │   │   __init__.py
│   │   │   │   │   __main__.py
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   core.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   ├── certifi-2025.11.12.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   top_level.txt
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE
│   │   │   │   ├── charset_normalizer/
│   │   │   │   │   api.py
│   │   │   │   │   cd.py
│   │   │   │   │   constant.py
│   │   │   │   │   legacy.py
│   │   │   │   │   md.cp310-win_amd64.pyd
│   │   │   │   │   md.py
│   │   │   │   │   md__mypyc.cp310-win_amd64.pyd
│   │   │   │   │   models.py
│   │   │   │   │   py.typed
│   │   │   │   │   utils.py
│   │   │   │   │   version.py
│   │   │   │   │   __init__.py
│   │   │   │   │   __main__.py
│   │   │   │   │   ├── cli/
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   __main__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   api.cpython-310.pyc
│   │   │   │   │   │   cd.cpython-310.pyc
│   │   │   │   │   │   constant.cpython-310.pyc
│   │   │   │   │   │   legacy.cpython-310.pyc
│   │   │   │   │   │   md.cpython-310.pyc
│   │   │   │   │   │   models.cpython-310.pyc
│   │   │   │   │   │   utils.cpython-310.pyc
│   │   │   │   │   │   version.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   ├── charset_normalizer-3.4.4.dist-info/
│   │   │   │   │   entry_points.txt
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   top_level.txt
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE
│   │   │   │   ├── click/
│   │   │   │   │   core.py
│   │   │   │   │   decorators.py
│   │   │   │   │   exceptions.py
│   │   │   │   │   formatting.py
│   │   │   │   │   globals.py
│   │   │   │   │   parser.py
│   │   │   │   │   py.typed
│   │   │   │   │   shell_completion.py
│   │   │   │   │   termui.py
│   │   │   │   │   testing.py
│   │   │   │   │   types.py
│   │   │   │   │   utils.py
│   │   │   │   │   _compat.py
│   │   │   │   │   _termui_impl.py
│   │   │   │   │   _textwrap.py
│   │   │   │   │   _utils.py
│   │   │   │   │   _winconsole.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   core.cpython-310.pyc
│   │   │   │   │   │   decorators.cpython-310.pyc
│   │   │   │   │   │   exceptions.cpython-310.pyc
│   │   │   │   │   │   formatting.cpython-310.pyc
│   │   │   │   │   │   globals.cpython-310.pyc
│   │   │   │   │   │   parser.cpython-310.pyc
│   │   │   │   │   │   shell_completion.cpython-310.pyc
│   │   │   │   │   │   termui.cpython-310.pyc
│   │   │   │   │   │   testing.cpython-310.pyc
│   │   │   │   │   │   types.cpython-310.pyc
│   │   │   │   │   │   utils.cpython-310.pyc
│   │   │   │   │   │   _compat.cpython-310.pyc
│   │   │   │   │   │   _termui_impl.cpython-310.pyc
│   │   │   │   │   │   _textwrap.cpython-310.pyc
│   │   │   │   │   │   _utils.cpython-310.pyc
│   │   │   │   │   │   _winconsole.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── click-8.3.0.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE.txt
│   │   │   │   ├── colorama/
│   │   │   │   │   ansi.py
│   │   │   │   │   ansitowin32.py
│   │   │   │   │   initialise.py
│   │   │   │   │   win32.py
│   │   │   │   │   winterm.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── tests/
│   │   │   │   │   │   ansitowin32_test.py
│   │   │   │   │   │   ansi_test.py
│   │   │   │   │   │   initialise_test.py
│   │   │   │   │   │   isatty_test.py
│   │   │   │   │   │   utils.py
│   │   │   │   │   │   winterm_test.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   ansitowin32_test.cpython-310.pyc
│   │   │   │   │   │   │   ansi_test.cpython-310.pyc
│   │   │   │   │   │   │   initialise_test.cpython-310.pyc
│   │   │   │   │   │   │   isatty_test.cpython-310.pyc
│   │   │   │   │   │   │   utils.cpython-310.pyc
│   │   │   │   │   │   │   winterm_test.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   ansi.cpython-310.pyc
│   │   │   │   │   │   ansitowin32.cpython-310.pyc
│   │   │   │   │   │   initialise.cpython-310.pyc
│   │   │   │   │   │   win32.cpython-310.pyc
│   │   │   │   │   │   winterm.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── colorama-0.4.6.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   │   ├── licenses/
│   │   │   │   │   │   LICENSE.txt
│   │   │   │   ├── contourpy/
│   │   │   │   │   array.py
│   │   │   │   │   chunk.py
│   │   │   │   │   convert.py
│   │   │   │   │   dechunk.py
│   │   │   │   │   enum_util.py
│   │   │   │   │   py.typed
│   │   │   │   │   typecheck.py
│   │   │   │   │   types.py
│   │   │   │   │   _contourpy.cp310-win_amd64.lib
│   │   │   │   │   _contourpy.cp310-win_amd64.pyd
│   │   │   │   │   _contourpy.pyi
│   │   │   │   │   _version.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── util/
│   │   │   │   │   │   bokeh_renderer.py
│   │   │   │   │   │   bokeh_util.py
│   │   │   │   │   │   data.py
│   │   │   │   │   │   mpl_renderer.py
│   │   │   │   │   │   mpl_util.py
│   │   │   │   │   │   renderer.py
│   │   │   │   │   │   _build_config.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   bokeh_renderer.cpython-310.pyc
│   │   │   │   │   │   │   bokeh_util.cpython-310.pyc
│   │   │   │   │   │   │   data.cpython-310.pyc
│   │   │   │   │   │   │   mpl_renderer.cpython-310.pyc
│   │   │   │   │   │   │   mpl_util.cpython-310.pyc
│   │   │   │   │   │   │   renderer.cpython-310.pyc
│   │   │   │   │   │   │   _build_config.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   array.cpython-310.pyc
│   │   │   │   │   │   chunk.cpython-310.pyc
│   │   │   │   │   │   convert.cpython-310.pyc
│   │   │   │   │   │   dechunk.cpython-310.pyc
│   │   │   │   │   │   enum_util.cpython-310.pyc
│   │   │   │   │   │   typecheck.cpython-310.pyc
│   │   │   │   │   │   types.cpython-310.pyc
│   │   │   │   │   │   _version.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── contourpy-1.3.2.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   LICENSE
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   WHEEL
│   │   │   │   ├── cycler/
│   │   │   │   │   py.typed
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── cycler-0.12.1.dist-info/
│   │   │   │   │   INSTALLER
│   │   │   │   │   LICENSE
│   │   │   │   │   METADATA
│   │   │   │   │   RECORD
│   │   │   │   │   top_level.txt
│   │   │   │   │   WHEEL
│   │   │   │   ├── dateutil/
│   │   │   │   │   easter.py
│   │   │   │   │   relativedelta.py
│   │   │   │   │   rrule.py
│   │   │   │   │   tzwin.py
│   │   │   │   │   utils.py
│   │   │   │   │   _common.py
│   │   │   │   │   _version.py
│   │   │   │   │   __init__.py
│   │   │   │   │   ├── parser/
│   │   │   │   │   │   isoparser.py
│   │   │   │   │   │   _parser.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   isoparser.cpython-310.pyc
│   │   │   │   │   │   │   _parser.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── tz/
│   │   │   │   │   │   tz.py
│   │   │   │   │   │   win.py
│   │   │   │   │   │   _common.py
│   │   │   │   │   │   _factories.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   tz.cpython-310.pyc
│   │   │   │   │   │   │   win.cpython-310.pyc
│   │   │   │   │   │   │   _common.cpython-310.pyc
│   │   │   │   │   │   │   _factories.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── zoneinfo/
│   │   │   │   │   │   dateutil-zoneinfo.tar.gz
│   │   │   │   │   │   rebuild.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   rebuild.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   easter.cpython-310.pyc
│   │   │   │   │   │   relativedelta.cpython-310.pyc
│   │   │   │   │   │   rrule.cpython-310.pyc
│   │   │   │   │   │   tzwin.cpython-310.pyc
│   │   │   │   │   │   utils.cpython-310.pyc
│   │   │   │   │   │   _common.cpython-310.pyc
│   │   │   │   │   │   _version.cpython-310.pyc
│   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   ├── fontTools/
│   │   │   │   │   afmLib.py
│   │   │   │   │   agl.py
│   │   │   │   │   annotations.py
│   │   │   │   │   fontBuilder.py
│   │   │   │   │   help.py
│   │   │   │   │   tfmLib.py
│   │   │   │   │   ttx.py
│   │   │   │   │   unicode.py
│   │   │   │   │   __init__.py
│   │   │   │   │   __main__.py
│   │   │   │   │   ├── cffLib/
│   │   │   │   │   │   CFF2ToCFF.py
│   │   │   │   │   │   CFFToCFF2.py
│   │   │   │   │   │   specializer.py
│   │   │   │   │   │   transforms.py
│   │   │   │   │   │   width.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   CFF2ToCFF.cpython-310.pyc
│   │   │   │   │   │   │   CFFToCFF2.cpython-310.pyc
│   │   │   │   │   │   │   specializer.cpython-310.pyc
│   │   │   │   │   │   │   transforms.cpython-310.pyc
│   │   │   │   │   │   │   width.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── colorLib/
│   │   │   │   │   │   builder.py
│   │   │   │   │   │   errors.py
│   │   │   │   │   │   geometry.py
│   │   │   │   │   │   table_builder.py
│   │   │   │   │   │   unbuilder.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   builder.cpython-310.pyc
│   │   │   │   │   │   │   errors.cpython-310.pyc
│   │   │   │   │   │   │   geometry.cpython-310.pyc
│   │   │   │   │   │   │   table_builder.cpython-310.pyc
│   │   │   │   │   │   │   unbuilder.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── config/
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── cu2qu/
│   │   │   │   │   │   benchmark.py
│   │   │   │   │   │   cli.py
│   │   │   │   │   │   cu2qu.c
│   │   │   │   │   │   cu2qu.cp310-win_amd64.pyd
│   │   │   │   │   │   cu2qu.py
│   │   │   │   │   │   errors.py
│   │   │   │   │   │   ufo.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   __main__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   benchmark.cpython-310.pyc
│   │   │   │   │   │   │   cli.cpython-310.pyc
│   │   │   │   │   │   │   cu2qu.cpython-310.pyc
│   │   │   │   │   │   │   errors.cpython-310.pyc
│   │   │   │   │   │   │   ufo.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   │   ├── designspaceLib/
│   │   │   │   │   │   split.py
│   │   │   │   │   │   statNames.py
│   │   │   │   │   │   types.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   __main__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   split.cpython-310.pyc
│   │   │   │   │   │   │   statNames.cpython-310.pyc
│   │   │   │   │   │   │   types.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   │   ├── encodings/
│   │   │   │   │   │   codecs.py
│   │   │   │   │   │   MacRoman.py
│   │   │   │   │   │   StandardEncoding.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   codecs.cpython-310.pyc
│   │   │   │   │   │   │   MacRoman.cpython-310.pyc
│   │   │   │   │   │   │   StandardEncoding.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   ├── feaLib/
│   │   │   │   │   │   ast.py
│   │   │   │   │   │   builder.py
│   │   │   │   │   │   error.py
│   │   │   │   │   │   lexer.c
│   │   │   │   │   │   lexer.cp310-win_amd64.pyd
│   │   │   │   │   │   lexer.py
│   │   │   │   │   │   location.py
│   │   │   │   │   │   lookupDebugInfo.py
│   │   │   │   │   │   parser.py
│   │   │   │   │   │   variableScalar.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   __main__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   ast.cpython-310.pyc
│   │   │   │   │   │   │   builder.cpython-310.pyc
│   │   │   │   │   │   │   error.cpython-310.pyc
│   │   │   │   │   │   │   lexer.cpython-310.pyc
│   │   │   │   │   │   │   location.cpython-310.pyc
│   │   │   │   │   │   │   lookupDebugInfo.cpython-310.pyc
│   │   │   │   │   │   │   parser.cpython-310.pyc
│   │   │   │   │   │   │   variableScalar.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   │   ├── merge/
│   │   │   │   │   │   base.py
│   │   │   │   │   │   cmap.py
│   │   │   │   │   │   layout.py
│   │   │   │   │   │   options.py
│   │   │   │   │   │   tables.py
│   │   │   │   │   │   unicode.py
│   │   │   │   │   │   util.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   __main__.py
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   base.cpython-310.pyc
│   │   │   │   │   │   │   cmap.cpython-310.pyc
│   │   │   │   │   │   │   layout.cpython-310.pyc
│   │   │   │   │   │   │   options.cpython-310.pyc
│   │   │   │   │   │   │   tables.cpython-310.pyc
│   │   │   │   │   │   │   unicode.cpython-310.pyc
│   │   │   │   │   │   │   util.cpython-310.pyc
│   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   │   __main__.cpython-310.pyc
│   │   │   │   │   ├── misc/
│   │   │   │   │   │   arrayTools.py
│   │   │   │   │   │   bezierTools.c
│   │   │   │   │   │   bezierTools.cp310-win_amd64.pyd
│   │   │   │   │   │   bezierTools.py
│   │   │   │   │   │   classifyTools.py
│   │   │   │   │   │   cliTools.py
│   │   │   │   │   │   configTools.py
│   │   │   │   │   │   cython.py
│   │   │   │   │   │   dictTools.py
│   │   │   │   │   │   eexec.py
│   │   │   │   │   │   encodingTools.py
│   │   │   │   │   │   enumTools.py
│   │   │   │   │   │   etree.py
│   │   │   │   │   │   filenames.py
│   │   │   │   │   │   fixedTools.py
│   │   │   │   │   │   intTools.py
│   │   │   │   │   │   iterTools.py
│   │   │   │   │   │   lazyTools.py
│   │   │   │   │   │   loggingTools.py
│   │   │   │   │   │   macCreatorType.py
│   │   │   │   │   │   macRes.py
│   │   │   │   │   │   psCharStrings.py
│   │   │   │   │   │   psLib.py
│   │   │   │   │   │   psOperators.py
│   │   │   │   │   │   py23.py
│   │   │   │   │   │   roundTools.py
│   │   │   │   │   │   sstruct.py
│   │   │   │   │   │   symfont.py
│   │   │   │   │   │   testTools.py
│   │   │   │   │   │   textTools.py
│   │   │   │   │   │   timeTools.py
│   │   │   │   │   │   transform.py
│   │   │   │   │   │   treeTools.py
│   │   │   │   │   │   vector.py
│   │   │   │   │   │   visitor.py
│   │   │   │   │   │   xmlReader.py
│   │   │   │   │   │   xmlWriter.py
│   │   │   │   │   │   __init__.py
│   │   │   │   │   │   ├── filesystem/
│   │   │   │   │   │   │   _base.py
│   │   │   │   │   │   │   _copy.py
│   │   │   │   │   │   │   _errors.py
│   │   │   │   │   │   │   _info.py
│   │   │   │   │   │   │   _osfs.py
│   │   │   │   │   │   │   _path.py
│   │   │   │   │   │   │   _subfs.py
│   │   │   │   │   │   │   _tempfs.py
│   │   │   │   │   │   │   _tools.py
│   │   │   │   │   │   │   _walk.py
│   │   │   │   │   │   │   _zipfs.py
│   │   │   │   │   │   │   __init__.py
│   │   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   │   _base.cpython-310.pyc
│   │   │   │   │   │   │   │   _copy.cpython-310.pyc
│   │   │   │   │   │   │   │   _errors.cpython-310.pyc
│   │   │   │   │   │   │   │   _info.cpython-310.pyc
│   │   │   │   │   │   │   │   _osfs.cpython-310.pyc
│   │   │   │   │   │   │   │   _path.cpython-310.pyc
│   │   │   │   │   │   │   │   _subfs.cpython-310.pyc
│   │   │   │   │   │   │   │   _tempfs.cpython-310.pyc
│   │   │   │   │   │   │   │   _tools.cpython-310.pyc
│   │   │   │   │   │   │   │   _walk.cpython-310.pyc
│   │   │   │   │   │   │   │   _zipfs.cpython-310.pyc
│   │   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   ├── plistlib/
│   │   │   │   │   │   │   py.typed
│   │   │   │   │   │   │   __init__.py
│   │   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   │   __init__.cpython-310.pyc
│   │   │   │   │   │   ├── __pycache__/
│   │   │   │   │   │   │   arrayTools.cpython-310.pyc
│   │   │   │   │   │   │   bezierTools.cpython-310.pyc
│   │   │   │   │   │   │   classifyTools.cpython-310.pyc
│   │   │   │   │   │   │   cliTools.cpython-310.pyc
│   │   │   │   │   │   │   configTools.cpython-310.pyc
│   │   │   │   │   │   │   cython.cpython-310.pyc
│   │   │   │   │   │   │   dictTools.cpython-310.pyc
│   │   │   │   │   │   │   eexec.cpython-310.pyc
│   │   │   │   │   │   │   encodingTools.cpython-310.pyc
│   │   │   │   │   │   │   enumTools.cpython-310.pyc
│   │   │   │   │   │   │   etree.cpython-310.pyc
│   │   │   │   │   │   │   filenames.cpython-310.pyc
│   │   │   │   │   │   │   fixedTools.cpython-310.pyc
│   │   │   │   │   │   │   intTools.cpython-310.pyc
│   │   │   │   │   │   │   iterTools.cpython-310.pyc
│   │   │   │   │   │   │   lazyTools.cpython-310.pyc
│   │   │   │   │   │   │   loggingTools.cpython-310.pyc
│   │   │   │   │   │   │   macCreatorType.cpython-310.pyc
│   │   │   │   │   │   │   macRes.cpython-310.pyc
│   │   │   │   │   │   │   psCharStrings.cpython-310.pyc
│   │   │   │   │   │   │   psLib.cpython-310.pyc
│   │   │   │   │   │   │   psOperators.cpython-310.pyc
│   │   │   │   │   │   │   py23.cpython-310.pyc
│   │   │   │   │   │   │   roundTools.cpython-310.pyc
│   │   │   │   │   │   │   sstruct.cpython-310.pyc
│   │   │   │   │   │   │   symfont.cpython-310.pyc
│   │   │   │   │   │   │