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 'required': {}, 22 'minimal': {}, 23 'formatting': { 24 'pprintpp' : 'pprintpp>=0.4.0', 25 'asciitree' : 'asciitree>=0.3.3', 26 'typing_extensions' : 'typing-extensions>=4.7.1', 27 'pygments' : 'pygments>=2.7.2', 28 'colorama' : 'colorama>=0.4.3', 29 'rich' : 'rich>=13.4.2', 30 'more_termcolor' : 'more-termcolor>=1.1.3', 31 'humanfriendly' : 'humanfriendly>=10.0.0', 32 }, 33 'core': { 34 'wheel' : 'wheel>=0.34.2', 35 'setuptools' : 'setuptools>=63.3.0', 36 'yaml' : 'PyYAML>=5.3.1', 37 'pip' : 'pip>=22.0.4', 38 'update_checker' : 'update-checker>=0.18.0', 39 'semver' : 'semver>=3.0.2', 40 'pathspec' : 'pathspec>=0.9.0', 41 'dateutil' : 'python-dateutil>=2.7.5', 42 'requests' : 'requests>=2.32.3', 43 'certifi' : 'certifi>=2024.8.30', 44 'idna' : 'idna>=3.10.0', 45 'binaryornot' : 'binaryornot>=0.4.4', 46 'pyvim' : 'pyvim>=3.0.2', 47 'ptpython' : 'ptpython>=3.0.27', 48 'aiofiles' : 'aiofiles>=0.6.0', 49 'packaging' : 'packaging>=21.3.0', 50 'prompt_toolkit' : 'prompt-toolkit>=3.0.39', 51 'more_itertools' : 'more-itertools>=8.7.0', 52 'fasteners' : 'fasteners>=0.19.0', 53 'virtualenv' : 'virtualenv>=20.1.0', 54 'attrs' : 'attrs>=24.2.0', 55 'uv' : 'uv>=0.2.11', 56 'pydantic' : 'pydantic>=2.11.7', 57 'annotated-types' : 'annotated-types>=0.7.0', 58 }, 59 '_internal' : { 60 'apscheduler' : ( 61 f"{_MRSM_PACKAGE_ARCHIVES_PREFIX}" 62 "apscheduler-4.0.0a6.post8+mrsm-py3-none-any.whl>=4.0.0a6" 63 ), 64 'dataclass_wizard' : 'dataclass-wizard>=0.35.0', 65 }, 66 'jobs': { 67 'dill' : 'dill>=0.4.0', 68 'daemon' : 'python-daemon>=3.1.2', 69 'watchfiles' : 'watchfiles>=1.1.0', 70 'psutil' : 'psutil>=7.0.0', 71 }, 72 'drivers': { 73 'cryptography' : 'cryptography>=38.0.1', 74 'psycopg' : 'psycopg[binary]>=3.2.9', 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 }, 85 'cli': { 86 'pgcli' : 'pgcli>=3.1.0', 87 'mycli' : 'mycli>=1.23.2', 88 'litecli' : 'litecli>=1.5.0', 89 'mssqlcli' : 'mssql-cli>=1.0.0', 90 'gadwall' : 'gadwall>=0.2.0', 91 }, 92 'gis' : { 93 'pyproj' : 'pyproj>=3.7.1', 94 'geopandas' : 'geopandas>=1.0.1', 95 'shapely' : 'shapely>=2.0.7', 96 }, 97 'stack': { 98 'compose' : 'docker-compose>=1.29.2', 99 }, 100 'build': { 101 'cx_Freeze' : 'cx_Freeze>=7.0.0', 102 'PyInstaller' : 'pyinstaller>6.6.0', 103 }, 104 'dev-tools': { 105 'twine' : 'twine>=3.2.0', 106 'tuna' : 'tuna>=0.5.3', 107 'snakeviz' : 'snakeviz>=2.1.0', 108 'mypy' : 'mypy>=0.812.0', 109 'pytest' : 'pytest>=6.2.2', 110 'pytest_xdist' : 'pytest-xdist>=3.2.1', 111 'heartrate' : 'heartrate>=0.2.1', 112 'build' : 'build>=1.2.1', 113 'attrs' : 'attrs>=24.2.0', 114 }, 115 'setup': { 116 }, 117 'docs': { 118 'mkdocs' : 'mkdocs>=1.1.2', 119 'mkdocs_material' : 'mkdocs-material>=6.2.5', 120 'mkdocs_material_extensions' : 'mkdocs-material-extensions>=1.0.3', 121 'mkdocs_autolinks_plugin' : 'mkdocs-autolinks-plugin>=0.2.0', 122 'mkdocs_awesome_pages_plugin': 'mkdocs-awesome-pages-plugin>=2.5.0', 123 'mkdocs_section_index' : 'mkdocs-section-index>=0.3.3', 124 'mkdocs_linkcheck' : 'mkdocs-linkcheck>=1.0.6', 125 'mkdocs_redirects' : 'mkdocs-redirects>=1.0.4', 126 'jinja2' : 'jinja2>=3.1.6', 127 }, 128 'gui': { 129 'webview' : 'pywebview>=3.6.3', 130 'pycparser' : 'pycparser>=2.21.0', 131 }, 132 'extras': { 133 'cmd2' : 'cmd2>=1.4.0', 134 'ruamel.yaml' : 'ruamel.yaml>=0.16.12', 135 'modin' : 'modin[ray]>=0.8.3', 136 'nanoid' : 'nanoid>=2.0.0', 137 'importlib_metadata' : 'importlib-metadata>=4.12.0', 138 }, 139} 140packages['sql'] = { 141 'numpy' : 'numpy>=2.3.1', 142 'pandas' : 'pandas[parquet]>=2.3.1', 143 'pyarrow' : 'pyarrow>=20.0.0', 144 'dask' : 'dask[complete]>=2024.12.1', 145 'partd' : 'partd>=1.4.2', 146 'pytz' : 'pytz', 147 'joblib' : 'joblib>=1.5.1', 148 'sqlalchemy' : 'SQLAlchemy>=2.0.41', 149 'geoalchemy2' : 'GeoAlchemy2>=0.18.0', 150 'databases' : 'databases>=0.9.0', 151 'aiosqlite' : 'aiosqlite>=0.21.0', 152 'asyncpg' : 'asyncpg>=0.30.0', 153} 154packages['sql'].update(packages['drivers']) 155packages['sql'].update(packages['core']) 156packages['sql'].update(packages['gis']) 157packages['dash'] = { 158 'flask_compress' : 'Flask-Compress>=1.17.0', 159 'dash' : 'dash>=3.1.1', 160 'dash_bootstrap_components' : 'dash-bootstrap-components>=1.7.1', 161 'dash_ace' : 'dash-ace>=0.2.1', 162 'dash_extensions' : 'dash-extensions>=2.0.4', 163 'dash_daq' : 'dash-daq>=0.6.0', 164 'terminado' : 'terminado>=0.18.1', 165 'tornado' : 'tornado>=6.5.1', 166} 167packages['api'] = { 168 'uvicorn' : 'uvicorn[standard]>=0.35.0', 169 'gunicorn' : 'gunicorn>=23.0.0', 170 'dotenv' : 'python-dotenv>=1.1.1', 171 'websockets' : 'websockets>=15.0.1', 172 'fastapi' : 'fastapi>=0.116.0', 173 'fastapi_login' : 'fastapi-login>=1.10.3', 174 'multipart' : 'python-multipart>=0.0.20', 175 'httpx' : 'httpx>=0.28.1', 176 'httpcore' : 'httpcore>=1.0.9', 177 'valkey' : 'valkey>=6.1.0', 178 'jose' : 'python-jose>=3.5.0', 179} 180packages['api'].update(packages['sql']) 181packages['api'].update(packages['formatting']) 182packages['api'].update(packages['dash']) 183packages['api'].update(packages['jobs']) 184 185all_packages = {} 186for group, import_names in packages.items(): 187 all_packages.update(import_names) 188install_names = {} 189def get_install_names(): 190 """ 191 Initialize the mapping between install names and import names. 192 """ 193 if not install_names: 194 from meerschaum.utils.packages import get_install_no_version 195 for _import_name, _install_name in all_packages.items(): 196 install_names[get_install_no_version(_install_name)] = _import_name 197 return install_names 198 199 200skip_groups = { 201 'docs', 202 'build', 203 'cli', 204 'dev-tools', 205 'portable', 206 'extras', 207 'stack', 208 'drivers-extras', 209 '_internal', 210} 211full = [] 212_full = {} 213for group, import_names in packages.items(): 214 ### omit 'cli' and 'docs' from 'full' 215 if group in skip_groups or group.startswith('_'): 216 continue 217 full += [ install_name for import_name, install_name in import_names.items() ] 218 for import_name, install_name in import_names.items(): 219 _full[import_name] = install_name 220packages['full'] = _full 221 222extras = { 223 group: list(import_names_install_names_map.values()) 224 for group, import_names_install_names_map in packages.items() 225 if not group.startswith('_') 226}
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'}, '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.3', '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', 'fasteners': 'fasteners>=0.19.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'}, '_internal': {'apscheduler': 'https://meerschaum.io/files/archives/wheels/apscheduler-4.0.0a6.post8+mrsm-py3-none-any.whl>=4.0.0a6', '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', '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'}, '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'}, 'stack': {'compose': 'docker-compose>=1.29.2'}, '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': {'mkdocs': 'mkdocs>=1.1.2', 'mkdocs_material': 'mkdocs-material>=6.2.5', 'mkdocs_material_extensions': 'mkdocs-material-extensions>=1.0.3', 'mkdocs_autolinks_plugin': 'mkdocs-autolinks-plugin>=0.2.0', 'mkdocs_awesome_pages_plugin': 'mkdocs-awesome-pages-plugin>=2.5.0', 'mkdocs_section_index': 'mkdocs-section-index>=0.3.3', 'mkdocs_linkcheck': 'mkdocs-linkcheck>=1.0.6', 'mkdocs_redirects': 'mkdocs-redirects>=1.0.4', 'jinja2': 'jinja2>=3.1.6'}, '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', 'importlib_metadata': 'importlib-metadata>=4.12.0'}, 'sql': {'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=2.3.1', 'pyarrow': 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners': 'fasteners>=0.19.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', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7'}, 'dash': {'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=3.1.1', 'dash_bootstrap_components': 'dash-bootstrap-components>=1.7.1', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.4', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1'}, '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.116.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]>=2.3.1', 'pyarrow': 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners': 'fasteners>=0.19.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', 'pyproj': 'pyproj>=3.7.1', 'geopandas': 'geopandas>=1.0.1', 'shapely': 'shapely>=2.0.7', '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', 'flask_compress': 'Flask-Compress>=1.17.0', 'dash': 'dash>=3.1.1', 'dash_bootstrap_components': 'dash-bootstrap-components>=1.7.1', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.4', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', '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', '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.3', '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', 'fasteners': 'fasteners>=0.19.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', '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', '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', 'webview': 'pywebview>=3.6.3', 'pycparser': 'pycparser>=2.21.0', 'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=2.3.1', 'pyarrow': 'pyarrow>=20.0.0', '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>=3.1.1', 'dash_bootstrap_components': 'dash-bootstrap-components>=1.7.1', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.4', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', '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.116.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', '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.3', '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', 'fasteners': 'fasteners>=0.19.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', 'apscheduler': 'https://meerschaum.io/files/archives/wheels/apscheduler-4.0.0a6.post8+mrsm-py3-none-any.whl>=4.0.0a6', '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', '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', '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', 'compose': 'docker-compose>=1.29.2', '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', 'mkdocs': 'mkdocs>=1.1.2', 'mkdocs_material': 'mkdocs-material>=6.2.5', 'mkdocs_material_extensions': 'mkdocs-material-extensions>=1.0.3', 'mkdocs_autolinks_plugin': 'mkdocs-autolinks-plugin>=0.2.0', 'mkdocs_awesome_pages_plugin': 'mkdocs-awesome-pages-plugin>=2.5.0', 'mkdocs_section_index': 'mkdocs-section-index>=0.3.3', 'mkdocs_linkcheck': 'mkdocs-linkcheck>=1.0.6', 'mkdocs_redirects': 'mkdocs-redirects>=1.0.4', 'jinja2': 'jinja2>=3.1.6', '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', 'importlib_metadata': 'importlib-metadata>=4.12.0', 'numpy': 'numpy>=2.3.1', 'pandas': 'pandas[parquet]>=2.3.1', 'pyarrow': 'pyarrow>=20.0.0', '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>=3.1.1', 'dash_bootstrap_components': 'dash-bootstrap-components>=1.7.1', 'dash_ace': 'dash-ace>=0.2.1', 'dash_extensions': 'dash-extensions>=2.0.4', 'dash_daq': 'dash-daq>=0.6.0', 'terminado': 'terminado>=0.18.1', 'tornado': 'tornado>=6.5.1', '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.116.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():
190def get_install_names(): 191 """ 192 Initialize the mapping between install names and import names. 193 """ 194 if not install_names: 195 from meerschaum.utils.packages import get_install_no_version 196 for _import_name, _install_name in all_packages.items(): 197 install_names[get_install_no_version(_install_name)] = _import_name 198 return install_names
Initialize the mapping between install names and import names.
skip_groups =
{'stack', 'dev-tools', 'cli', 'portable', 'extras', 'docs', 'build', '_internal', 'drivers-extras'}
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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.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', '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', 'pywebview>=3.6.3', 'pycparser>=2.21.0', 'numpy>=2.3.1', 'pandas[parquet]>=2.3.1', 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', 'Flask-Compress>=1.17.0', 'dash>=3.1.1', 'dash-bootstrap-components>=1.7.1', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.4', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.116.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]>=2.3.1', 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', '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', 'Flask-Compress>=1.17.0', 'dash>=3.1.1', 'dash-bootstrap-components>=1.7.1', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.4', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', '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'], '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.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', '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'], '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'], 'stack': ['docker-compose>=1.29.2'], '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': ['mkdocs>=1.1.2', 'mkdocs-material>=6.2.5', 'mkdocs-material-extensions>=1.0.3', 'mkdocs-autolinks-plugin>=0.2.0', 'mkdocs-awesome-pages-plugin>=2.5.0', 'mkdocs-section-index>=0.3.3', 'mkdocs-linkcheck>=1.0.6', 'mkdocs-redirects>=1.0.4', 'jinja2>=3.1.6'], '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', 'importlib-metadata>=4.12.0'], 'sql': ['numpy>=2.3.1', 'pandas[parquet]>=2.3.1', 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7'], 'dash': ['Flask-Compress>=1.17.0', 'dash>=3.1.1', 'dash-bootstrap-components>=1.7.1', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.4', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1'], 'api': ['uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.116.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]>=2.3.1', 'pyarrow>=20.0.0', '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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.0', 'pyproj>=3.7.1', 'geopandas>=1.0.1', 'shapely>=2.0.7', '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', 'Flask-Compress>=1.17.0', 'dash>=3.1.1', 'dash-bootstrap-components>=1.7.1', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.4', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', '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', '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.3', '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', 'fasteners>=0.19.0', 'virtualenv>=20.1.0', 'attrs>=24.2.0', 'uv>=0.2.11', 'pydantic>=2.11.7', 'annotated-types>=0.7.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', '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', 'pywebview>=3.6.3', 'pycparser>=2.21.0', 'numpy>=2.3.1', 'pandas[parquet]>=2.3.1', 'pyarrow>=20.0.0', '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>=3.1.1', 'dash-bootstrap-components>=1.7.1', 'dash-ace>=0.2.1', 'dash-extensions>=2.0.4', 'dash-daq>=0.6.0', 'terminado>=0.18.1', 'tornado>=6.5.1', 'uvicorn[standard]>=0.35.0', 'gunicorn>=23.0.0', 'python-dotenv>=1.1.1', 'websockets>=15.0.1', 'fastapi>=0.116.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']}