Metadata-Version: 2.3
Name: dycw-utilities
Version: 0.80.2
Author-email: Derek Wan <d.wan@icloud.com>
Requires-Python: >=3.11
Requires-Dist: typing-extensions<4.13,>=4.12.2
Provides-Extra: dev
Requires-Dist: aiohttp<3.12,>=3.11.7; extra == 'dev'
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'dev'
Requires-Dist: altair<5.6,>=5.5.0; extra == 'dev'
Requires-Dist: astor<0.9,>=0.8.1; extra == 'dev'
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'dev'
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'dev'
Requires-Dist: atools<0.15,>=0.14.2; extra == 'dev'
Requires-Dist: beartype<0.20,>=0.19.0; extra == 'dev'
Requires-Dist: bottleneck<1.5,>=1.4.2; extra == 'dev'
Requires-Dist: cachetools<5.6,>=5.5.0; extra == 'dev'
Requires-Dist: click<8.2,>=8.1.7; extra == 'dev'
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'dev'
Requires-Dist: concurrent-log-handler<0.10,>=0.9.25; extra == 'dev'
Requires-Dist: coverage-conditional-plugin<0.10,>=0.9.0; extra == 'dev'
Requires-Dist: cryptography<44.1,>=44.0.0; extra == 'dev'
Requires-Dist: cvxpy<1.7,>=1.6.0; extra == 'dev'
Requires-Dist: dacite<1.9,>=1.8.1; extra == 'dev'
Requires-Dist: eventkit<1.1,>=1.0.3; extra == 'dev'
Requires-Dist: fastapi<0.116,>=0.115.6; extra == 'dev'
Requires-Dist: fpdf2<2.9,>=2.8.1; extra == 'dev'
Requires-Dist: greenlet<3.2,>=3.1.1; extra == 'dev'
Requires-Dist: hatch<1.14,>=1.13.0; extra == 'dev'
Requires-Dist: hypothesis<6.123,>=6.122.3; extra == 'dev'
Requires-Dist: ib-async-dataclass<1.1,>=1.0.3rc5; extra == 'dev'
Requires-Dist: img2pdf<0.6,>=0.5.1; extra == 'dev'
Requires-Dist: loguru<0.8,>=0.7.3; extra == 'dev'
Requires-Dist: memory-profiler<0.62,>=0.61.0; extra == 'dev'
Requires-Dist: more-itertools<10.6,>=10.5.0; extra == 'dev'
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'dev'
Requires-Dist: nox<2024.11,>=2024.10.9; extra == 'dev'
Requires-Dist: numbagg<0.9,>=0.8.2; extra == 'dev'
Requires-Dist: numpy<2.1,>=2.0.2; extra == 'dev'
Requires-Dist: optuna<4.2,>=4.1.0; extra == 'dev'
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'dev'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'dev'
Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'dev'
Requires-Dist: psycopg2-binary<2.10,>=2.9.10; extra == 'dev'
Requires-Dist: pydantic<2.11,>=2.10.3; extra == 'dev'
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'dev'
Requires-Dist: pyinstrument<5.1,>=5.0.0; extra == 'dev'
Requires-Dist: pyrsistent<0.21,>=0.20.0; extra == 'dev'
Requires-Dist: pytest-asyncio<0.25,>=0.24.0; extra == 'dev'
Requires-Dist: pytest-cov<6.1,>=6.0.0; extra == 'dev'
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'dev'
Requires-Dist: pytest-only<2.2,>=2.1.2; extra == 'dev'
Requires-Dist: pytest-randomly<3.17,>=3.16.0; extra == 'dev'
Requires-Dist: pytest-rerunfailures<16,>=15.0; extra == 'dev'
Requires-Dist: pytest-xdist<3.7,>=3.6.1; extra == 'dev'
Requires-Dist: pytest<8.4,>=8.3.4; extra == 'dev'
Requires-Dist: python-dotenv<1.1,>=1.0.1; extra == 'dev'
Requires-Dist: redis<5.3,>=5.2.1; extra == 'dev'
Requires-Dist: rich<13.9,>=13.8.1; extra == 'dev'
Requires-Dist: scipy<1.15,>=1.14.1; extra == 'dev'
Requires-Dist: setuptools<76.0,>=75.1.0; extra == 'dev'
Requires-Dist: slack-sdk<3.34,>=3.33.5; extra == 'dev'
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == 'dev'
Requires-Dist: streamlit<1.42,>=1.41.0; extra == 'dev'
Requires-Dist: tenacity<9.1,>=9.0.0; extra == 'dev'
Requires-Dist: treelib<1.8,>=1.7.0; extra == 'dev'
Requires-Dist: tzdata<2024.3,>=2024.2; extra == 'dev'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'dev'
Requires-Dist: uvicorn<0.33,>=0.32.1; extra == 'dev'
Requires-Dist: vegafusion-python-embed<1.7,>=1.6.9; extra == 'dev'
Requires-Dist: vegafusion<2.1,>=2.0.1; extra == 'dev'
Requires-Dist: vl-convert-python<1.8,>=1.7.0; extra == 'dev'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'dev'
Requires-Dist: win32-setctime<1.3,>=1.2.0; extra == 'dev'
Provides-Extra: test
Requires-Dist: coverage-conditional-plugin<0.10,>=0.9.0; extra == 'test'
Requires-Dist: hypothesis<6.123,>=6.122.3; extra == 'test'
Requires-Dist: pytest-asyncio<0.25,>=0.24.0; extra == 'test'
Requires-Dist: pytest-cov<6.1,>=6.0.0; extra == 'test'
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
Requires-Dist: pytest-only<2.2,>=2.1.2; extra == 'test'
Requires-Dist: pytest-randomly<3.17,>=3.16.0; extra == 'test'
Requires-Dist: pytest-rerunfailures<16,>=15.0; extra == 'test'
Requires-Dist: pytest-xdist<3.7,>=3.6.1; extra == 'test'
Requires-Dist: pytest<8.4,>=8.3.4; extra == 'test'
Provides-Extra: zzz-test-altair
Requires-Dist: altair<5.6,>=5.5.0; extra == 'zzz-test-altair'
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-altair'
Requires-Dist: img2pdf<0.6,>=0.5.1; extra == 'zzz-test-altair'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'zzz-test-altair'
Requires-Dist: vl-convert-python<1.7,>=1.6.1; extra == 'zzz-test-altair'
Provides-Extra: zzz-test-astor
Requires-Dist: astor<0.9,>=0.8.1; extra == 'zzz-test-astor'
Provides-Extra: zzz-test-asyncio
Provides-Extra: zzz-test-atomicwrites
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-atomicwrites'
Provides-Extra: zzz-test-atools
Requires-Dist: atools<0.15,>=0.14.2; extra == 'zzz-test-atools'
Provides-Extra: zzz-test-beartype
Requires-Dist: beartype<0.20,>=0.19.0; extra == 'zzz-test-beartype'
Provides-Extra: zzz-test-cachetools
Requires-Dist: cachetools<5.6,>=5.5.0; extra == 'zzz-test-cachetools'
Provides-Extra: zzz-test-click
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-click'
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == 'zzz-test-click'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-click'
Provides-Extra: zzz-test-contextlib
Provides-Extra: zzz-test-cryptography
Requires-Dist: cryptography<44.1,>=44.0.0; extra == 'zzz-test-cryptography'
Provides-Extra: zzz-test-cvxpy
Requires-Dist: cvxpy<1.7,>=1.6.0; extra == 'zzz-test-cvxpy'
Provides-Extra: zzz-test-dacite
Requires-Dist: dacite<1.9,>=1.8.1; extra == 'zzz-test-dacite'
Provides-Extra: zzz-test-dataclasses
Requires-Dist: ib-async-dataclass<1.1,>=1.0.3rc5; extra == 'zzz-test-dataclasses'
Provides-Extra: zzz-test-datetime
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-datetime'
Provides-Extra: zzz-test-enum
Provides-Extra: zzz-test-errors
Provides-Extra: zzz-test-eventkit
Requires-Dist: eventkit<1.1,>=1.0.3; extra == 'zzz-test-eventkit'
Provides-Extra: zzz-test-fastapi
Requires-Dist: fastapi<0.116,>=0.115.6; extra == 'zzz-test-fastapi'
Requires-Dist: uvicorn<0.33,>=0.32.1; extra == 'zzz-test-fastapi'
Provides-Extra: zzz-test-fpdf2
Requires-Dist: fpdf2<2.9,>=2.8.1; extra == 'zzz-test-fpdf2'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-fpdf2'
Provides-Extra: zzz-test-functions
Provides-Extra: zzz-test-functools
Provides-Extra: zzz-test-getpass
Provides-Extra: zzz-test-git
Provides-Extra: zzz-test-hashlib
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'zzz-test-hashlib'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-hashlib'
Provides-Extra: zzz-test-http
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-http'
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'zzz-test-http'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-http'
Provides-Extra: zzz-test-humps
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'zzz-test-humps'
Provides-Extra: zzz-test-hypothesis
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'zzz-test-hypothesis'
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
Requires-Dist: greenlet<3.2,>=3.1.1; extra == 'zzz-test-hypothesis'
Requires-Dist: hypothesis<6.123,>=6.122.3; extra == 'zzz-test-hypothesis'
Requires-Dist: numpy<2.1,>=2.0.2; extra == 'zzz-test-hypothesis'
Requires-Dist: redis<5.3,>=5.2.1; extra == 'zzz-test-hypothesis'
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == 'zzz-test-hypothesis'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-hypothesis'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-hypothesis'
Provides-Extra: zzz-test-ipython
Requires-Dist: ipython<8.25,>=8.24.0; extra == 'zzz-test-ipython'
Provides-Extra: zzz-test-iterables
Provides-Extra: zzz-test-jupyter
Requires-Dist: jupyterlab<4.3,>=4.2.0; extra == 'zzz-test-jupyter'
Requires-Dist: pandas<2.3,>=2.2.2; extra == 'zzz-test-jupyter'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'zzz-test-jupyter'
Provides-Extra: zzz-test-logging
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'zzz-test-logging'
Requires-Dist: concurrent-log-handler<0.10,>=0.9.25; extra == 'zzz-test-logging'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-logging'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-logging'
Provides-Extra: zzz-test-loguru
Requires-Dist: loguru<0.8,>=0.7.3; extra == 'zzz-test-loguru'
Provides-Extra: zzz-test-math
Requires-Dist: numpy<2.1,>=2.0.2; extra == 'zzz-test-math'
Provides-Extra: zzz-test-memory-profiler
Requires-Dist: memory-profiler<0.62,>=0.61.0; extra == 'zzz-test-memory-profiler'
Provides-Extra: zzz-test-modules
Provides-Extra: zzz-test-more-itertools
Requires-Dist: more-itertools<10.6,>=10.5.0; extra == 'zzz-test-more-itertools'
Provides-Extra: zzz-test-numpy
Requires-Dist: bottleneck<1.5,>=1.4.0; extra == 'zzz-test-numpy'
Requires-Dist: numbagg<0.9,>=0.8.2; extra == 'zzz-test-numpy'
Requires-Dist: numpy<2.1,>=2.0.2; extra == 'zzz-test-numpy'
Provides-Extra: zzz-test-optuna
Requires-Dist: optuna<3.7,>=3.6.1; extra == 'zzz-test-optuna'
Provides-Extra: zzz-test-orjson
Requires-Dist: ib-async-dataclass<1.1,>=1.0.3rc5; extra == 'zzz-test-orjson'
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'zzz-test-orjson'
Requires-Dist: rich<13.9,>=13.8.1; extra == 'zzz-test-orjson'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-orjson'
Provides-Extra: zzz-test-os
Provides-Extra: zzz-test-pathlib
Provides-Extra: zzz-test-pickle
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pickle'
Provides-Extra: zzz-test-platform
Provides-Extra: zzz-test-polars
Requires-Dist: dacite<1.9,>=1.8.1; extra == 'zzz-test-polars'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'zzz-test-polars'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-polars'
Provides-Extra: zzz-test-pqdm
Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'zzz-test-pqdm'
Provides-Extra: zzz-test-pydantic
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pydantic'
Requires-Dist: pydantic<2.11,>=2.10.3; extra == 'zzz-test-pydantic'
Provides-Extra: zzz-test-pyinstrument
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pyinstrument'
Requires-Dist: pyinstrument<5.1,>=5.0.0; extra == 'zzz-test-pyinstrument'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-pyinstrument'
Provides-Extra: zzz-test-pyrsistent
Requires-Dist: pyrsistent<0.21,>=0.20.0; extra == 'zzz-test-pyrsistent'
Provides-Extra: zzz-test-pytest
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pytest'
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'zzz-test-pytest'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-pytest'
Provides-Extra: zzz-test-python-dotenv
Requires-Dist: python-dotenv<1.1,>=1.0.1; extra == 'zzz-test-python-dotenv'
Provides-Extra: zzz-test-random
Provides-Extra: zzz-test-re
Provides-Extra: zzz-test-redis
Requires-Dist: orjson<3.11,>=3.10.12; extra == 'zzz-test-redis'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'zzz-test-redis'
Requires-Dist: redis<5.3,>=5.2.1; extra == 'zzz-test-redis'
Requires-Dist: rich<13.9,>=13.8.1; extra == 'zzz-test-redis'
Requires-Dist: tenacity<9.1,>=9.0.0; extra == 'zzz-test-redis'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-redis'
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-redis'
Provides-Extra: zzz-test-rich
Requires-Dist: rich<13.9,>=13.8.1; extra == 'zzz-test-rich'
Provides-Extra: zzz-test-scipy
Requires-Dist: scipy<1.15,>=1.14.1; extra == 'zzz-test-scipy'
Provides-Extra: zzz-test-sentinel
Provides-Extra: zzz-test-slack-sdk
Requires-Dist: aiohttp<3.12,>=3.11.7; extra == 'zzz-test-slack-sdk'
Requires-Dist: slack-sdk<3.34,>=3.33.5; extra == 'zzz-test-slack-sdk'
Provides-Extra: zzz-test-socket
Provides-Extra: zzz-test-sqlalchemy
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: greenlet<3.2,>=3.1.1; extra == 'zzz-test-sqlalchemy'
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == 'zzz-test-sqlalchemy'
Requires-Dist: tenacity<9.1,>=9.0.0; extra == 'zzz-test-sqlalchemy'
Provides-Extra: zzz-test-sqlalchemy-polars
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: greenlet<3.2,>=3.1.1; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: polars-lts-cpu<1.18,>=1.17.1; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == 'zzz-test-sqlalchemy-polars'
Requires-Dist: tenacity<9.1,>=9.0.0; extra == 'zzz-test-sqlalchemy-polars'
Provides-Extra: zzz-test-streamlit
Requires-Dist: streamlit<1.42,>=1.41.0; extra == 'zzz-test-streamlit'
Provides-Extra: zzz-test-sys
Provides-Extra: zzz-test-tempfile
Provides-Extra: zzz-test-tenacity
Requires-Dist: tenacity<9.1,>=9.0.0; extra == 'zzz-test-tenacity'
Provides-Extra: zzz-test-text
Provides-Extra: zzz-test-threading
Provides-Extra: zzz-test-timer
Provides-Extra: zzz-test-traceback
Requires-Dist: beartype<0.20,>=0.19.0; extra == 'zzz-test-traceback'
Requires-Dist: rich<13.9,>=13.8.1; extra == 'zzz-test-traceback'
Provides-Extra: zzz-test-treelib
Requires-Dist: treelib<1.8,>=1.7.0; extra == 'zzz-test-treelib'
Provides-Extra: zzz-test-types
Provides-Extra: zzz-test-typing
Provides-Extra: zzz-test-uuid
Provides-Extra: zzz-test-warnings
Provides-Extra: zzz-test-whenever
Requires-Dist: whenever<0.7,>=0.6.15; extra == 'zzz-test-whenever'
Provides-Extra: zzz-test-zipfile
Provides-Extra: zzz-test-zoneinfo
Requires-Dist: tzdata<2024.3,>=2024.2; extra == 'zzz-test-zoneinfo'
Description-Content-Type: text/markdown

[![PyPI version](https://badge.fury.io/py/dycw-utilities.svg)](https://badge.fury.io/py/dycw-utilities)

# `dycw-utilities`

[All the Python functions I don't want to write twice.](https://github.com/nvim-lua/plenary.nvim)

## Installation

- `pip install dycw-utilities`

or with [extras](https://github.com/dycw/python-utilities/blob/master/pyproject.toml).
