meerschaum.utils.packages._packages

Directory of necessary packages

packages dictionary is structured in the following schema: { : { : } }

  1#! /usr/bin/env python
  2# -*- coding: utf-8 -*-
  3# vim:fenc=utf-8
  4
  5"""
  6Directory of necessary packages
  7
  8packages dictionary is structured in the following schema:
  9    {
 10        <group> : {
 11            <import_name> : <install_name>
 12        }
 13    }
 14"""
 15
 16from typing import Dict
 17
 18_MRSM_PACKAGE_ARCHIVES_PREFIX: str = "https://meerschaum.io/files/archives/wheels/"
 19
 20packages: Dict[str, Dict[str, str]] = {
 21    ### Meerschaum installs its own dependencies into the `mrsm` venv at runtime,
 22    ### so the base package requires nothing.
 23    'required': {},
 24    'minimal': {},
 25    'formatting': {
 26        'pprintpp'                   : 'pprintpp>=0.4.0',
 27        'asciitree'                  : 'asciitree>=0.3.3',
 28        'typing_extensions'          : 'typing-extensions>=4.7.1',
 29        'pygments'                   : 'pygments>=2.7.2',
 30        'colorama'                   : 'colorama>=0.4.3',
 31        'rich'                       : 'rich>=13.4.2',
 32        'more_termcolor'             : 'more-termcolor>=1.1.3',
 33        'humanfriendly'              : 'humanfriendly>=10.0.0',
 34        'tabulate'                   : 'tabulate>=0.9.0',
 35    },
 36    'core': {
 37        'wheel'                      : 'wheel>=0.34.2',
 38        'setuptools'                 : 'setuptools>=63.3.0',
 39        'yaml'                       : 'PyYAML>=5.3.1',
 40        'pip'                        : 'pip>=22.0.4',
 41        'update_checker'             : 'update-checker>=0.18.0',
 42        'semver'                     : 'semver>=3.0.2',
 43        'pathspec'                   : 'pathspec>=0.9.0',
 44        'dateutil'                   : 'python-dateutil>=2.7.5',
 45        'requests'                   : 'requests>=2.32.5',
 46        'certifi'                    : 'certifi>=2024.8.30',
 47        'idna'                       : 'idna>=3.10.0',
 48        'binaryornot'                : 'binaryornot>=0.4.4',
 49        'pyvim'                      : 'pyvim>=3.0.2',
 50        'ptpython'                   : 'ptpython>=3.0.27',
 51        'aiofiles'                   : 'aiofiles>=0.6.0',
 52        'packaging'                  : 'packaging>=21.3.0',
 53        'prompt_toolkit'             : 'prompt-toolkit>=3.0.39',
 54        'more_itertools'             : 'more-itertools>=8.7.0',
 55        'virtualenv'                 : 'virtualenv>=20.1.0',
 56        'attrs'                      : 'attrs>=24.2.0',
 57        'uv'                         : 'uv>=0.2.11',
 58        'pydantic'                   : 'pydantic>=2.11.7',
 59        'annotated-types'            : 'annotated-types>=0.7.0',
 60        'importlib_metadata'         : 'importlib-metadata>=4.12.0',
 61    },
 62    '_internal'                      : {
 63        'dataclass_wizard'           : 'dataclass-wizard>=0.35.0',
 64    },
 65    'jobs': {
 66        'dill'                       : 'dill>=0.4.0',
 67        'daemon'                     : 'python-daemon>=3.1.2',
 68        'watchfiles'                 : 'watchfiles>=1.1.0',
 69        'psutil'                     : 'psutil>=7.0.0',
 70    },
 71    'drivers': {
 72        'cryptography'               : 'cryptography>=38.0.1',
 73        'psycopg'                    : 'psycopg[binary]>=3.2.9',
 74        'psycopg2'                   : 'psycopg2-binary>=2.9.11',
 75        'pymysql'                    : 'PyMySQL>=0.9.0',
 76        'aiomysql'                   : 'aiomysql>=0.0.21',
 77        'sqlalchemy_cockroachdb'     : 'sqlalchemy-cockroachdb>=2.0.0',
 78        'duckdb'                     : 'duckdb>=1.0.0',
 79        'duckdb_engine'              : 'duckdb-engine>=0.13.0',
 80    },
 81    'drivers-extras': {
 82        'pyodbc'                     : 'pyodbc>=4.0.30',
 83        'oracledb'                   : 'oracledb>=2.5.0',
 84        'adbc_driver_postgresql'     : 'adbc-driver-postgresql>=1.7.0',
 85        'adbc_driver_sqlite'         : 'adbc-driver-sqlite>=1.7.0',
 86    },
 87    'cli': {
 88        'pgcli'                      : 'pgcli>=3.1.0',
 89        'mycli'                      : 'mycli>=1.23.2',
 90        'litecli'                    : 'litecli>=1.5.0',
 91        'mssqlcli'                   : 'mssql-cli>=1.0.0',
 92        'gadwall'                    : 'gadwall>=0.2.0',
 93    },
 94    'gis'                            : {
 95        'pyproj'                     : 'pyproj>=3.7.1',
 96        'geopandas'                  : 'geopandas>=1.0.1', 
 97        'shapely'                    : 'shapely>=2.0.7',
 98        'geoarrow'                   : 'geoarrow-types>=0.3.0',
 99    },
100    'stack': {
101        'compose'                    : 'docker-compose>=1.29.2',
102    },
103    'compose': {
104        'envyaml'                    : 'envyaml>=1.10.211231',
105    },
106    'build': {
107        'cx_Freeze'                  : 'cx_Freeze>=7.0.0',
108        'PyInstaller'                : 'pyinstaller>6.6.0',
109    },
110    'dev-tools': {
111        'twine'                      : 'twine>=3.2.0',
112        'tuna'                       : 'tuna>=0.5.3',
113        'snakeviz'                   : 'snakeviz>=2.1.0',
114        'mypy'                       : 'mypy>=0.812.0',
115        'pytest'                     : 'pytest>=6.2.2',
116        'pytest_xdist'               : 'pytest-xdist>=3.2.1',
117        'heartrate'                  : 'heartrate>=0.2.1',
118        'build'                      : 'build>=1.2.1',
119        'attrs'                      : 'attrs>=24.2.0',
120    },
121    'setup': {
122    },
123    'docs': {
124        'zensical'                   : 'zensical>=0.0.30',
125    },
126    'gui': {
127        'webview'                    : 'pywebview>=3.6.3',
128        'pycparser'                  : 'pycparser>=2.21.0',
129    },
130    'extras': {
131        'cmd2'                       : 'cmd2>=1.4.0',
132        'ruamel.yaml'                : 'ruamel.yaml>=0.16.12',
133        'modin'                      : 'modin[ray]>=0.8.3',
134        'nanoid'                     : 'nanoid>=2.0.0',
135    },
136}
137packages['sql'] = {
138    'numpy'                          : 'numpy>=2.3.1',
139    'pandas'                         : 'pandas[parquet]>=3.0.0',
140    'pyarrow'                        : 'pyarrow>=20.0.0',
141    'polars'                         : 'polars>=1.43.2',
142    'dask'                           : 'dask[complete]>=2024.12.1',
143    'partd'                          : 'partd>=1.4.2',
144    'pytz'                           : 'pytz',
145    'joblib'                         : 'joblib>=1.5.1',
146    'sqlalchemy'                     : 'SQLAlchemy>=2.0.41',
147    'geoalchemy2'                    : 'GeoAlchemy2>=0.18.0',
148    'databases'                      : 'databases>=0.9.0',
149    'aiosqlite'                      : 'aiosqlite>=0.21.0',
150    'asyncpg'                        : 'asyncpg>=0.30.0',
151}
152packages['sql'].update(packages['drivers'])
153packages['sql'].update(packages['core'])
154packages['sql'].update(packages['gis'])
155packages['polars'] = {
156    'polars'                         : packages['sql']['polars'],
157    'pandas'                         : packages['sql']['pandas'],
158    'pyarrow'                        : packages['sql']['pyarrow'],
159    'geoarrow'                       : packages['gis']['geoarrow'],
160}
161packages['dash'] = {
162    'flask_compress'                 : 'Flask-Compress>=1.17.0',
163    'dash'                           : 'dash>=4.1.0',
164    'dash_bootstrap_components'      : 'dash-bootstrap-components>=2.0.4',
165    'dash_ace'                       : 'dash-ace>=0.2.1',
166    'dash_extensions'                : 'dash-extensions>=2.0.5',
167    'dash_daq'                       : 'dash-daq>=0.6.0',
168    'terminado'                      : 'terminado>=0.18.1',
169    'tornado'                        : 'tornado>=6.5.1',
170    'a2wsgi'                         : 'a2wsgi>=1.10.0',
171}
172packages['api'] = {
173    'uvicorn'                        : 'uvicorn[standard]>=0.35.0',
174    'gunicorn'                       : 'gunicorn>=23.0.0',
175    'dotenv'                         : 'python-dotenv>=1.1.1',
176    'websockets'                     : 'websockets>=15.0.1',
177    'fastapi'                        : 'fastapi>=0.128.0',
178    'fastapi_login'                  : 'fastapi-login>=1.10.3',
179    'multipart'                      : 'python-multipart>=0.0.20',
180    'httpx'                          : 'httpx>=0.28.1',
181    'httpcore'                       : 'httpcore>=1.0.9',
182    'valkey'                         : 'valkey>=6.1.0',
183    'jose'                           : 'python-jose>=3.5.0',
184}
185packages['api'].update(packages['sql'])
186packages['api'].update(packages['formatting'])
187packages['api'].update(packages['dash'])
188packages['api'].update(packages['jobs'])
189
190all_packages = {}
191for group, import_names in packages.items():
192    all_packages.update(import_names)
193install_names = {}
194def get_install_names():
195    """
196    Initialize the mapping between install names and import names.
197    """
198    if not install_names:
199        from meerschaum.utils.packages import get_install_no_version
200        for _import_name, _install_name in all_packages.items():
201            install_names[get_install_no_version(_install_name)] = _import_name
202    return install_names
203
204
205skip_groups = {
206    'docs',
207    'build',
208    'cli',
209    'dev-tools',
210    'portable',
211    'extras',
212    'stack',
213    'drivers-extras',
214    '_internal',
215}
216full = []
217_full = {}
218for group, import_names in packages.items():
219    ### omit 'cli' and 'docs' from 'full'
220    if group in skip_groups or group.startswith('_'):
221        continue
222    full += [ install_name for import_name, install_name in import_names.items() ]
223    for import_name, install_name in import_names.items():
224        _full[import_name] = install_name
225packages['full'] = _full
226
227extras = {
228    group: list(import_names_install_names_map.values())
229    for group, import_names_install_names_map in packages.items()
230    if not group.startswith('_')
231}
packages: Dict[str, Dict[str, str]] = {'required': {}, 'minimal': {}, 'formatting': {'pprintpp': 'pprintpp>=0.4.0', 'asciitree': 'asciitree>=0.3.3', 'typing_extensions': 'typing-extensions>=4.7.1', 'pygments': 'pygments>=2.7.2', 'colorama': 'colorama>=0.4.3', 'rich': 'rich>=13.4.2', 'more_termcolor': 'more-termcolor>=1.1.3', 'humanfriendly': 'humanfriendly>=10.0.0', 'tabulate': 'tabulate>=0.9.0'}, 'core': {'wheel': 'wheel>=0.34.2', 'setuptools': 'setuptools>=63.3.0', 'yaml': 'PyYAML>=5.3.1', 'pip': 'pip>=22.0.4', 'update_checker': 'update-checker>=0.18.0', 'semver': 'semver>=3.0.2', 'pathspec': 'pathspec>=0.9.0', 'dateutil': 'python-dateutil>=2.7.5', 'requests': 'requests>=2.32.5', 'certifi': 'certifi>=2024.8.30', 'idna': 'idna>=3.10.0', 'binaryornot': 'binaryornot>=0.4.4', 'pyvim': 'pyvim>=3.0.2', 'ptpython': 'ptpython>=3.0.27', 'aiofiles': 'aiofiles>=0.6.0', 'packaging': 'packaging>=21.3.0', 'prompt_toolkit': 'prompt-toolkit>=3.0.39', 'more_itertools': 'more-itertools>=8.7.0', 'virtualenv': 'virtualenv>=20.1.0', 'attrs': 'attrs>=24.2.0', 'uv': 'uv>=0.2.11', 'pydantic': 'pydantic>=2.11.7', 'annotated-types': 'annotated-types>=0.7.0', 'importlib_metadata': 'importlib-metadata>=4.12.0'}, '_internal': {'dataclass_wizard': 'dataclass-wizard>=0.35.0'}, 'jobs': {'dill': 'dill>=0.4.0', 'daemon': 'python-daemon>=3.1.2', 'watchfiles': 'watchfiles>=1.1.0', 'psutil': 'psutil>=7.0.0'}, 'drivers': {'cryptography': 'cryptography>=38.0.1', 'psycopg': 'psycopg[binary]>=3.2.9', 'psycopg2': 'psycopg2-binary>=2.9.11', 'pymysql': 'PyMySQL>=0.9.0', 'aiomysql': 'aiomysql>=0.0.21', 'sqlalchemy_cockroachdb': 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb': 'duckdb>=1.0.0', 'duckdb_engine': 'duckdb-engine>=0.13.0'}, 'drivers-extras': {'pyodbc': 'pyodbc>=4.0.30', 'oracledb': 'oracledb>=2.5.0', 'adbc_driver_postgresql': 'adbc-driver-postgresql>=1.7.0', 'adbc_driver_sqlite': 'adbc-driver-sqlite>=1.7.0'}, 'cli': {'pgcli': 'pgcli>=3.1.0', 'mycli': 'mycli>=1.23.2', 'litecli': 'litecli>=1.5.0', 'mssqlcli': 'mssql-cli>=1.0.0', 'gadwall': 'gadwall>=0.2.0'}, 'gis': {'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', 'geoarrow': 'geoarrow-types>=0.3.0'}, 'stack': {'compose': 'docker-compose>=1.29.2'}, 'compose': {'envyaml': 'envyaml>=1.10.211231'}, 'build': {'cx_Freeze': 'cx_Freeze>=7.0.0', 'PyInstaller': 'pyinstaller>6.6.0'}, 'dev-tools': {'twine': 'twine>=3.2.0', 'tuna': 'tuna>=0.5.3', 'snakeviz': 'snakeviz>=2.1.0', 'mypy': 'mypy>=0.812.0', 'pytest': 'pytest>=6.2.2', 'pytest_xdist': 'pytest-xdist>=3.2.1', 'heartrate': 'heartrate>=0.2.1', 'build': 'build>=1.2.1', 'attrs': 'attrs>=24.2.0'}, 'setup': {}, 'docs': {'zensical': 'zensical>=0.0.30'}, 'gui': {'webview': 'pywebview>=3.6.3', 'pycparser': 'pycparser>=2.21.0'}, 'extras': {'cmd2': 'cmd2>=1.4.0', 'ruamel.yaml': 'ruamel.yaml>=0.16.12', 'modin': 'modin[ray]>=0.8.3', 'nanoid': 'nanoid>=2.0.0'}, 'sql': {'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=3.0.0', 'pyarrow': 'pyarrow>=20.0.0', 'polars': 'polars>=1.43.2', 'dask': 'dask[complete]>=2024.12.1', 'partd': 'partd>=1.4.2', 'pytz': 'pytz', 'joblib': 'joblib>=1.5.1', 'sqlalchemy': 'SQLAlchemy>=2.0.41', 'geoalchemy2': 'GeoAlchemy2>=0.18.0', 'databases': 'databases>=0.9.0', 'aiosqlite': 'aiosqlite>=0.21.0', 'asyncpg': 'asyncpg>=0.30.0', 'cryptography': 'cryptography>=38.0.1', 'psycopg': 'psycopg[binary]>=3.2.9', 'psycopg2': 'psycopg2-binary>=2.9.11', 'pymysql': 'PyMySQL>=0.9.0', 'aiomysql': 'aiomysql>=0.0.21', 'sqlalchemy_cockroachdb': 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb': 'duckdb>=1.0.0', 'duckdb_engine': 'duckdb-engine>=0.13.0', 'wheel': 'wheel>=0.34.2', 'setuptools': 'setuptools>=63.3.0', 'yaml': 'PyYAML>=5.3.1', 'pip': 'pip>=22.0.4', 'update_checker': 'update-checker>=0.18.0', 'semver': 'semver>=3.0.2', 'pathspec': 'pathspec>=0.9.0', 'dateutil': 'python-dateutil>=2.7.5', 'requests': 'requests>=2.32.5', 'certifi': 'certifi>=2024.8.30', 'idna': 'idna>=3.10.0', 'binaryornot': 'binaryornot>=0.4.4', 'pyvim': 'pyvim>=3.0.2', 'ptpython': 'ptpython>=3.0.27', 'aiofiles': 'aiofiles>=0.6.0', 'packaging': 'packaging>=21.3.0', 'prompt_toolkit': 'prompt-toolkit>=3.0.39', 'more_itertools': 'more-itertools>=8.7.0', 'virtualenv': 'virtualenv>=20.1.0', 'attrs': 'attrs>=24.2.0', 'uv': 'uv>=0.2.11', 'pydantic': 'pydantic>=2.11.7', 'annotated-types': 'annotated-types>=0.7.0', 'importlib_metadata': 'importlib-metadata>=4.12.0', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', 'geoarrow': 'geoarrow-types>=0.3.0'}, 'polars': {'polars': 'polars>=1.43.2', 'pandas': 'pandas[parquet]>=3.0.0', 'pyarrow': 'pyarrow>=20.0.0', 'geoarrow': 'geoarrow-types>=0.3.0'}, 'dash': {'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=4.1.0', 'dash_bootstrap_components': 'dash-bootstrap-components>=2.0.4', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.5', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', 'a2wsgi': 'a2wsgi>=1.10.0'}, 'api': {'uvicorn': 'uvicorn[standard]>=0.35.0', 'gunicorn': 'gunicorn>=23.0.0', 'dotenv': 'python-dotenv>=1.1.1', 'websockets': 'websockets>=15.0.1', 'fastapi': 'fastapi>=0.128.0', 'fastapi_login': 'fastapi-login>=1.10.3', 'multipart': 'python-multipart>=0.0.20', 'httpx': 'httpx>=0.28.1', 'httpcore': 'httpcore>=1.0.9', 'valkey': 'valkey>=6.1.0', 'jose': 'python-jose>=3.5.0', 'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=3.0.0', 'pyarrow': 'pyarrow>=20.0.0', 'polars': 'polars>=1.43.2', 'dask': 'dask[complete]>=2024.12.1', 'partd': 'partd>=1.4.2', 'pytz': 'pytz', 'joblib': 'joblib>=1.5.1', 'sqlalchemy': 'SQLAlchemy>=2.0.41', 'geoalchemy2': 'GeoAlchemy2>=0.18.0', 'databases': 'databases>=0.9.0', 'aiosqlite': 'aiosqlite>=0.21.0', 'asyncpg': 'asyncpg>=0.30.0', 'cryptography': 'cryptography>=38.0.1', 'psycopg': 'psycopg[binary]>=3.2.9', 'psycopg2': 'psycopg2-binary>=2.9.11', 'pymysql': 'PyMySQL>=0.9.0', 'aiomysql': 'aiomysql>=0.0.21', 'sqlalchemy_cockroachdb': 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb': 'duckdb>=1.0.0', 'duckdb_engine': 'duckdb-engine>=0.13.0', 'wheel': 'wheel>=0.34.2', 'setuptools': 'setuptools>=63.3.0', 'yaml': 'PyYAML>=5.3.1', 'pip': 'pip>=22.0.4', 'update_checker': 'update-checker>=0.18.0', 'semver': 'semver>=3.0.2', 'pathspec': 'pathspec>=0.9.0', 'dateutil': 'python-dateutil>=2.7.5', 'requests': 'requests>=2.32.5', 'certifi': 'certifi>=2024.8.30', 'idna': 'idna>=3.10.0', 'binaryornot': 'binaryornot>=0.4.4', 'pyvim': 'pyvim>=3.0.2', 'ptpython': 'ptpython>=3.0.27', 'aiofiles': 'aiofiles>=0.6.0', 'packaging': 'packaging>=21.3.0', 'prompt_toolkit': 'prompt-toolkit>=3.0.39', 'more_itertools': 'more-itertools>=8.7.0', 'virtualenv': 'virtualenv>=20.1.0', 'attrs': 'attrs>=24.2.0', 'uv': 'uv>=0.2.11', 'pydantic': 'pydantic>=2.11.7', 'annotated-types': 'annotated-types>=0.7.0', 'importlib_metadata': 'importlib-metadata>=4.12.0', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', 'geoarrow': 'geoarrow-types>=0.3.0', 'pprintpp': 'pprintpp>=0.4.0', 'asciitree': 'asciitree>=0.3.3', 'typing_extensions': 'typing-extensions>=4.7.1', 'pygments': 'pygments>=2.7.2', 'colorama': 'colorama>=0.4.3', 'rich': 'rich>=13.4.2', 'more_termcolor': 'more-termcolor>=1.1.3', 'humanfriendly': 'humanfriendly>=10.0.0', 'tabulate': 'tabulate>=0.9.0', 'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=4.1.0', 'dash_bootstrap_components': 'dash-bootstrap-components>=2.0.4', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.5', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', 'a2wsgi': 'a2wsgi>=1.10.0', 'dill': 'dill>=0.4.0', 'daemon': 'python-daemon>=3.1.2', 'watchfiles': 'watchfiles>=1.1.0', 'psutil': 'psutil>=7.0.0'}, 'full': {'pprintpp': 'pprintpp>=0.4.0', 'asciitree': 'asciitree>=0.3.3', 'typing_extensions': 'typing-extensions>=4.7.1', 'pygments': 'pygments>=2.7.2', 'colorama': 'colorama>=0.4.3', 'rich': 'rich>=13.4.2', 'more_termcolor': 'more-termcolor>=1.1.3', 'humanfriendly': 'humanfriendly>=10.0.0', 'tabulate': 'tabulate>=0.9.0', 'wheel': 'wheel>=0.34.2', 'setuptools': 'setuptools>=63.3.0', 'yaml': 'PyYAML>=5.3.1', 'pip': 'pip>=22.0.4', 'update_checker': 'update-checker>=0.18.0', 'semver': 'semver>=3.0.2', 'pathspec': 'pathspec>=0.9.0', 'dateutil': 'python-dateutil>=2.7.5', 'requests': 'requests>=2.32.5', 'certifi': 'certifi>=2024.8.30', 'idna': 'idna>=3.10.0', 'binaryornot': 'binaryornot>=0.4.4', 'pyvim': 'pyvim>=3.0.2', 'ptpython': 'ptpython>=3.0.27', 'aiofiles': 'aiofiles>=0.6.0', 'packaging': 'packaging>=21.3.0', 'prompt_toolkit': 'prompt-toolkit>=3.0.39', 'more_itertools': 'more-itertools>=8.7.0', 'virtualenv': 'virtualenv>=20.1.0', 'attrs': 'attrs>=24.2.0', 'uv': 'uv>=0.2.11', 'pydantic': 'pydantic>=2.11.7', 'annotated-types': 'annotated-types>=0.7.0', 'importlib_metadata': 'importlib-metadata>=4.12.0', 'dill': 'dill>=0.4.0', 'daemon': 'python-daemon>=3.1.2', 'watchfiles': 'watchfiles>=1.1.0', 'psutil': 'psutil>=7.0.0', 'cryptography': 'cryptography>=38.0.1', 'psycopg': 'psycopg[binary]>=3.2.9', 'psycopg2': 'psycopg2-binary>=2.9.11', 'pymysql': 'PyMySQL>=0.9.0', 'aiomysql': 'aiomysql>=0.0.21', 'sqlalchemy_cockroachdb': 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb': 'duckdb>=1.0.0', 'duckdb_engine': 'duckdb-engine>=0.13.0', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', 'geoarrow': 'geoarrow-types>=0.3.0', 'envyaml': 'envyaml>=1.10.211231', 'webview': 'pywebview>=3.6.3', 'pycparser': 'pycparser>=2.21.0', 'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=3.0.0', 'pyarrow': 'pyarrow>=20.0.0', 'polars': 'polars>=1.43.2', 'dask': 'dask[complete]>=2024.12.1', 'partd': 'partd>=1.4.2', 'pytz': 'pytz', 'joblib': 'joblib>=1.5.1', 'sqlalchemy': 'SQLAlchemy>=2.0.41', 'geoalchemy2': 'GeoAlchemy2>=0.18.0', 'databases': 'databases>=0.9.0', 'aiosqlite': 'aiosqlite>=0.21.0', 'asyncpg': 'asyncpg>=0.30.0', 'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=4.1.0', 'dash_bootstrap_components': 'dash-bootstrap-components>=2.0.4', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.5', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', 'a2wsgi': 'a2wsgi>=1.10.0', 'uvicorn': 'uvicorn[standard]>=0.35.0', 'gunicorn': 'gunicorn>=23.0.0', 'dotenv': 'python-dotenv>=1.1.1', 'websockets': 'websockets>=15.0.1', 'fastapi': 'fastapi>=0.128.0', 'fastapi_login': 'fastapi-login>=1.10.3', 'multipart': 'python-multipart>=0.0.20', 'httpx': 'httpx>=0.28.1', 'httpcore': 'httpcore>=1.0.9', 'valkey': 'valkey>=6.1.0', 'jose': 'python-jose>=3.5.0'}}
all_packages = {'pprintpp': 'pprintpp>=0.4.0', 'asciitree': 'asciitree>=0.3.3', 'typing_extensions': 'typing-extensions>=4.7.1', 'pygments': 'pygments>=2.7.2', 'colorama': 'colorama>=0.4.3', 'rich': 'rich>=13.4.2', 'more_termcolor': 'more-termcolor>=1.1.3', 'humanfriendly': 'humanfriendly>=10.0.0', 'tabulate': 'tabulate>=0.9.0', 'wheel': 'wheel>=0.34.2', 'setuptools': 'setuptools>=63.3.0', 'yaml': 'PyYAML>=5.3.1', 'pip': 'pip>=22.0.4', 'update_checker': 'update-checker>=0.18.0', 'semver': 'semver>=3.0.2', 'pathspec': 'pathspec>=0.9.0', 'dateutil': 'python-dateutil>=2.7.5', 'requests': 'requests>=2.32.5', 'certifi': 'certifi>=2024.8.30', 'idna': 'idna>=3.10.0', 'binaryornot': 'binaryornot>=0.4.4', 'pyvim': 'pyvim>=3.0.2', 'ptpython': 'ptpython>=3.0.27', 'aiofiles': 'aiofiles>=0.6.0', 'packaging': 'packaging>=21.3.0', 'prompt_toolkit': 'prompt-toolkit>=3.0.39', 'more_itertools': 'more-itertools>=8.7.0', 'virtualenv': 'virtualenv>=20.1.0', 'attrs': 'attrs>=24.2.0', 'uv': 'uv>=0.2.11', 'pydantic': 'pydantic>=2.11.7', 'annotated-types': 'annotated-types>=0.7.0', 'importlib_metadata': 'importlib-metadata>=4.12.0', 'dataclass_wizard': 'dataclass-wizard>=0.35.0', 'dill': 'dill>=0.4.0', 'daemon': 'python-daemon>=3.1.2', 'watchfiles': 'watchfiles>=1.1.0', 'psutil': 'psutil>=7.0.0', 'cryptography': 'cryptography>=38.0.1', 'psycopg': 'psycopg[binary]>=3.2.9', 'psycopg2': 'psycopg2-binary>=2.9.11', 'pymysql': 'PyMySQL>=0.9.0', 'aiomysql': 'aiomysql>=0.0.21', 'sqlalchemy_cockroachdb': 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb': 'duckdb>=1.0.0', 'duckdb_engine': 'duckdb-engine>=0.13.0', 'pyodbc': 'pyodbc>=4.0.30', 'oracledb': 'oracledb>=2.5.0', 'adbc_driver_postgresql': 'adbc-driver-postgresql>=1.7.0', 'adbc_driver_sqlite': 'adbc-driver-sqlite>=1.7.0', 'pgcli': 'pgcli>=3.1.0', 'mycli': 'mycli>=1.23.2', 'litecli': 'litecli>=1.5.0', 'mssqlcli': 'mssql-cli>=1.0.0', 'gadwall': 'gadwall>=0.2.0', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', 'geoarrow': 'geoarrow-types>=0.3.0', 'compose': 'docker-compose>=1.29.2', 'envyaml': 'envyaml>=1.10.211231', 'cx_Freeze': 'cx_Freeze>=7.0.0', 'PyInstaller': 'pyinstaller>6.6.0', 'twine': 'twine>=3.2.0', 'tuna': 'tuna>=0.5.3', 'snakeviz': 'snakeviz>=2.1.0', 'mypy': 'mypy>=0.812.0', 'pytest': 'pytest>=6.2.2', 'pytest_xdist': 'pytest-xdist>=3.2.1', 'heartrate': 'heartrate>=0.2.1', 'build': 'build>=1.2.1', 'zensical': 'zensical>=0.0.30', 'webview': 'pywebview>=3.6.3', 'pycparser': 'pycparser>=2.21.0', 'cmd2': 'cmd2>=1.4.0', 'ruamel.yaml': 'ruamel.yaml>=0.16.12', 'modin': 'modin[ray]>=0.8.3', 'nanoid': 'nanoid>=2.0.0', 'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=3.0.0', 'pyarrow': 'pyarrow>=20.0.0', 'polars': 'polars>=1.43.2', 'dask': 'dask[complete]>=2024.12.1', 'partd': 'partd>=1.4.2', 'pytz': 'pytz', 'joblib': 'joblib>=1.5.1', 'sqlalchemy': 'SQLAlchemy>=2.0.41', 'geoalchemy2': 'GeoAlchemy2>=0.18.0', 'databases': 'databases>=0.9.0', 'aiosqlite': 'aiosqlite>=0.21.0', 'asyncpg': 'asyncpg>=0.30.0', 'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=4.1.0', 'dash_bootstrap_components': 'dash-bootstrap-components>=2.0.4', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.5', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', 'a2wsgi': 'a2wsgi>=1.10.0', 'uvicorn': 'uvicorn[standard]>=0.35.0', 'gunicorn': 'gunicorn>=23.0.0', 'dotenv': 'python-dotenv>=1.1.1', 'websockets': 'websockets>=15.0.1', 'fastapi': 'fastapi>=0.128.0', 'fastapi_login': 'fastapi-login>=1.10.3', 'multipart': 'python-multipart>=0.0.20', 'httpx': 'httpx>=0.28.1', 'httpcore': 'httpcore>=1.0.9', 'valkey': 'valkey>=6.1.0', 'jose': 'python-jose>=3.5.0'}
install_names = {}
def get_install_names():
195def get_install_names():
196    """
197    Initialize the mapping between install names and import names.
198    """
199    if not install_names:
200        from meerschaum.utils.packages import get_install_no_version
201        for _import_name, _install_name in all_packages.items():
202            install_names[get_install_no_version(_install_name)] = _import_name
203    return install_names

Initialize the mapping between install names and import names.

skip_groups = {'docs', 'portable', 'cli', 'dev-tools', 'build', 'drivers-extras', '_internal', 'extras', 'stack'}
full = ['pprintpp>=0.4.0', 'asciitree>=0.3.3', 'typing-extensions>=4.7.1', 'pygments>=2.7.2', 'colorama>=0.4.3', 'rich>=13.4.2', 'more-termcolor>=1.1.3', 'humanfriendly>=10.0.0', 'tabulate>=0.9.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'dill>=0.4.0', 'python-daemon>=3.1.2', 'watchfiles>=1.1.0', 'psutil>=7.0.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0', 'envyaml>=1.10.211231', 'pywebview>=3.6.3', 'pycparser>=2.21.0', 'numpy>=2.3.1', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'polars>=1.43.2', 'dask[complete]>=2024.12.1', 'partd>=1.4.2', 'pytz', 'joblib>=1.5.1', 'SQLAlchemy>=2.0.41', 'GeoAlchemy2>=0.18.0', 'databases>=0.9.0', 'aiosqlite>=0.21.0', 'asyncpg>=0.30.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0', 'polars>=1.43.2', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'geoarrow-types>=0.3.0', 'Flask-Compress>=1.17.0', 'dash>=4.1.0', 'dash-bootstrap-components>=2.0.4', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.5', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'a2wsgi>=1.10.0', 'uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.128.0', 'fastapi-login>=1.10.3', 'python-multipart>=0.0.20', 'httpx>=0.28.1', 'httpcore>=1.0.9', 'valkey>=6.1.0', 'python-jose>=3.5.0', 'numpy>=2.3.1', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'polars>=1.43.2', 'dask[complete]>=2024.12.1', 'partd>=1.4.2', 'pytz', 'joblib>=1.5.1', 'SQLAlchemy>=2.0.41', 'GeoAlchemy2>=0.18.0', 'databases>=0.9.0', 'aiosqlite>=0.21.0', 'asyncpg>=0.30.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0', 'pprintpp>=0.4.0', 'asciitree>=0.3.3', 'typing-extensions>=4.7.1', 'pygments>=2.7.2', 'colorama>=0.4.3', 'rich>=13.4.2', 'more-termcolor>=1.1.3', 'humanfriendly>=10.0.0', 'tabulate>=0.9.0', 'Flask-Compress>=1.17.0', 'dash>=4.1.0', 'dash-bootstrap-components>=2.0.4', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.5', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'a2wsgi>=1.10.0', 'dill>=0.4.0', 'python-daemon>=3.1.2', 'watchfiles>=1.1.0', 'psutil>=7.0.0']
extras = {'required': [], 'minimal': [], 'formatting': ['pprintpp>=0.4.0', 'asciitree>=0.3.3', 'typing-extensions>=4.7.1', 'pygments>=2.7.2', 'colorama>=0.4.3', 'rich>=13.4.2', 'more-termcolor>=1.1.3', 'humanfriendly>=10.0.0', 'tabulate>=0.9.0'], 'core': ['wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0'], 'jobs': ['dill>=0.4.0', 'python-daemon>=3.1.2', 'watchfiles>=1.1.0', 'psutil>=7.0.0'], 'drivers': ['cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0'], 'drivers-extras': ['pyodbc>=4.0.30', 'oracledb>=2.5.0', 'adbc-driver-postgresql>=1.7.0', 'adbc-driver-sqlite>=1.7.0'], 'cli': ['pgcli>=3.1.0', 'mycli>=1.23.2', 'litecli>=1.5.0', 'mssql-cli>=1.0.0', 'gadwall>=0.2.0'], 'gis': ['pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0'], 'stack': ['docker-compose>=1.29.2'], 'compose': ['envyaml>=1.10.211231'], 'build': ['cx_Freeze>=7.0.0', 'pyinstaller>6.6.0'], 'dev-tools': ['twine>=3.2.0', 'tuna>=0.5.3', 'snakeviz>=2.1.0', 'mypy>=0.812.0', 'pytest>=6.2.2', 'pytest-xdist>=3.2.1', 'heartrate>=0.2.1', 'build>=1.2.1', 'attrs>=24.2.0'], 'setup': [], 'docs': ['zensical>=0.0.30'], 'gui': ['pywebview>=3.6.3', 'pycparser>=2.21.0'], 'extras': ['cmd2>=1.4.0', 'ruamel.yaml>=0.16.12', 'modin[ray]>=0.8.3', 'nanoid>=2.0.0'], 'sql': ['numpy>=2.3.1', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'polars>=1.43.2', 'dask[complete]>=2024.12.1', 'partd>=1.4.2', 'pytz', 'joblib>=1.5.1', 'SQLAlchemy>=2.0.41', 'GeoAlchemy2>=0.18.0', 'databases>=0.9.0', 'aiosqlite>=0.21.0', 'asyncpg>=0.30.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0'], 'polars': ['polars>=1.43.2', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'geoarrow-types>=0.3.0'], 'dash': ['Flask-Compress>=1.17.0', 'dash>=4.1.0', 'dash-bootstrap-components>=2.0.4', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.5', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'a2wsgi>=1.10.0'], 'api': ['uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.128.0', 'fastapi-login>=1.10.3', 'python-multipart>=0.0.20', 'httpx>=0.28.1', 'httpcore>=1.0.9', 'valkey>=6.1.0', 'python-jose>=3.5.0', 'numpy>=2.3.1', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'polars>=1.43.2', 'dask[complete]>=2024.12.1', 'partd>=1.4.2', 'pytz', 'joblib>=1.5.1', 'SQLAlchemy>=2.0.41', 'GeoAlchemy2>=0.18.0', 'databases>=0.9.0', 'aiosqlite>=0.21.0', 'asyncpg>=0.30.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0', 'pprintpp>=0.4.0', 'asciitree>=0.3.3', 'typing-extensions>=4.7.1', 'pygments>=2.7.2', 'colorama>=0.4.3', 'rich>=13.4.2', 'more-termcolor>=1.1.3', 'humanfriendly>=10.0.0', 'tabulate>=0.9.0', 'Flask-Compress>=1.17.0', 'dash>=4.1.0', 'dash-bootstrap-components>=2.0.4', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.5', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'a2wsgi>=1.10.0', 'dill>=0.4.0', 'python-daemon>=3.1.2', 'watchfiles>=1.1.0', 'psutil>=7.0.0'], 'full': ['pprintpp>=0.4.0', 'asciitree>=0.3.3', 'typing-extensions>=4.7.1', 'pygments>=2.7.2', 'colorama>=0.4.3', 'rich>=13.4.2', 'more-termcolor>=1.1.3', 'humanfriendly>=10.0.0', 'tabulate>=0.9.0', 'wheel>=0.34.2', 'setuptools>=63.3.0', 'PyYAML>=5.3.1', 'pip>=22.0.4', 'update-checker>=0.18.0', 'semver>=3.0.2', 'pathspec>=0.9.0', 'python-dateutil>=2.7.5', 'requests>=2.32.5', 'certifi>=2024.8.30', 'idna>=3.10.0', 'binaryornot>=0.4.4', 'pyvim>=3.0.2', 'ptpython>=3.0.27', 'aiofiles>=0.6.0', 'packaging>=21.3.0', 'prompt-toolkit>=3.0.39', 'more-itertools>=8.7.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'importlib-metadata>=4.12.0', 'dill>=0.4.0', 'python-daemon>=3.1.2', 'watchfiles>=1.1.0', 'psutil>=7.0.0', 'cryptography>=38.0.1', 'psycopg[binary]>=3.2.9', 'psycopg2-binary>=2.9.11', 'PyMySQL>=0.9.0', 'aiomysql>=0.0.21', 'sqlalchemy-cockroachdb>=2.0.0', 'duckdb>=1.0.0', 'duckdb-engine>=0.13.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'geoarrow-types>=0.3.0', 'envyaml>=1.10.211231', 'pywebview>=3.6.3', 'pycparser>=2.21.0', 'numpy>=2.3.1', 'pandas[parquet]>=3.0.0', 'pyarrow>=20.0.0', 'polars>=1.43.2', 'dask[complete]>=2024.12.1', 'partd>=1.4.2', 'pytz', 'joblib>=1.5.1', 'SQLAlchemy>=2.0.41', 'GeoAlchemy2>=0.18.0', 'databases>=0.9.0', 'aiosqlite>=0.21.0', 'asyncpg>=0.30.0', 'Flask-Compress>=1.17.0', 'dash>=4.1.0', 'dash-bootstrap-components>=2.0.4', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.5', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'a2wsgi>=1.10.0', 'uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.128.0', 'fastapi-login>=1.10.3', 'python-multipart>=0.0.20', 'httpx>=0.28.1', 'httpcore>=1.0.9', 'valkey>=6.1.0', 'python-jose>=3.5.0']}