Metadata-Version: 2.3
Name: dycw-utilities
Version: 0.40.19
Author-email: Derek Wan <d.wan@icloud.com>
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: typing-extensions<4.13,>=4.12.2
Provides-Extra: cacher
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'cacher'
Requires-Dist: cachetools<5.5,>=5.4.0; extra == 'cacher'
Provides-Extra: dev
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'dev'
Requires-Dist: altair<5.5,>=5.4.0; extra == 'dev'
Requires-Dist: ast-comments<1.3,>=1.2.2; extra == 'dev'
Requires-Dist: astor<0.9,>=0.8.1; extra == 'dev'
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'dev'
Requires-Dist: atools<0.15,>=0.14.2; extra == 'dev'
Requires-Dist: basedpyright<1.17,>=1.16.0; extra == 'dev'
Requires-Dist: beartype<0.19,>=0.18.5; extra == 'dev'
Requires-Dist: beautifulsoup4<4.13,>=4.12.3; extra == 'dev'
Requires-Dist: bottleneck<1.5,>=1.4.0; extra == 'dev'
Requires-Dist: cachetools<5.5,>=5.4.0; extra == 'dev'
Requires-Dist: click<8.2,>=8.1.7; extra == 'dev'
Requires-Dist: coverage-conditional-plugin<0.10,>=0.9.0; extra == 'dev'
Requires-Dist: cryptography<43.1,>=43.0.0; extra == 'dev'
Requires-Dist: cvxpy<1.6,>=1.5.2; extra == 'dev'
Requires-Dist: dacite<1.9,>=1.8.1; extra == 'dev'
Requires-Dist: fpdf2<2.8,>=2.7.9; extra == 'dev'
Requires-Dist: freezegun<1.6,>=1.5.1; extra == 'dev'
Requires-Dist: frozendict<2.5,>=2.4.4; extra == 'dev'
Requires-Dist: greenlet<3.1,>=3.0.3; extra == 'dev'
Requires-Dist: hatch<1.13,>=1.12.0; extra == 'dev'
Requires-Dist: holoviews<1.20,>=1.19.0; extra == 'dev'
Requires-Dist: hypothesis<6.112,>=6.111.0; extra == 'dev'
Requires-Dist: img2pdf<0.6,>=0.5.1; extra == 'dev'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'dev'
Requires-Dist: luigi<3.6,>=3.5.1; extra == 'dev'
Requires-Dist: mdutils<1.7,>=1.6.0; extra == 'dev'
Requires-Dist: memory-profiler<0.62,>=0.61.0; extra == 'dev'
Requires-Dist: more-itertools<10.5,>=10.4.0; extra == 'dev'
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'dev'
Requires-Dist: nox<2024.5,>=2024.4.15; extra == 'dev'
Requires-Dist: numbagg<0.9,>=0.8.1; extra == 'dev'
Requires-Dist: numpy<2.1,>=2.0.1; extra == 'dev'
Requires-Dist: optuna<3.7,>=3.6.1; extra == 'dev'
Requires-Dist: pandas<2.3,>=2.2.2; extra == 'dev'
Requires-Dist: pathvalidate<3.3,>=3.2.0; extra == 'dev'
Requires-Dist: polars-lts-cpu<1.6,>=1.5.0; extra == 'dev'
Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'dev'
Requires-Dist: psutil<6.1,>=6.0.0; extra == 'dev'
Requires-Dist: psycopg2-binary<2.10,>=2.9.9; extra == 'dev'
Requires-Dist: pydantic<2.9,>=2.8.2; extra == 'dev'
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'dev'
Requires-Dist: pyinstrument<4.8,>=4.7.2; extra == 'dev'
Requires-Dist: pypiserver[passlib]<2.2,>=2.1.1; extra == 'dev'
Requires-Dist: pytest-asyncio<0.24,>=0.23.8; extra == 'dev'
Requires-Dist: pytest-check<2.4,>=2.3.1; extra == 'dev'
Requires-Dist: pytest-cov<5.1,>=5.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.16,>=3.15.0; extra == 'dev'
Requires-Dist: pytest-rerunfailures<15,>=14.0; extra == 'dev'
Requires-Dist: pytest-xdist<3.7,>=3.6.1; extra == 'dev'
Requires-Dist: pytest<8.4,>=8.3.2; extra == 'dev'
Requires-Dist: python-dotenv<1.1,>=1.0.1; extra == 'dev'
Requires-Dist: redis<5.1,>=5.0.8; extra == 'dev'
Requires-Dist: rich<13.8,>=13.7.1; extra == 'dev'
Requires-Dist: scipy<1.15,>=1.14.0; extra == 'dev'
Requires-Dist: selenium<4.24,>=4.23.1; extra == 'dev'
Requires-Dist: semver<3.1,>=3.0.2; extra == 'dev'
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'dev'
Requires-Dist: streamlit<1.38,>=1.37.1; extra == 'dev'
Requires-Dist: tqdm<4.67,>=4.66.5; extra == 'dev'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'dev'
Requires-Dist: tzdata<2024.2,>=2024.1; extra == 'dev'
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'dev'
Requires-Dist: vegafusion-python-embed<1.7,>=1.6.9; extra == 'dev'
Requires-Dist: vegafusion<1.7,>=1.6.9; extra == 'dev'
Requires-Dist: vl-convert-python<1.7,>=1.6.0; extra == 'dev'
Requires-Dist: whenever<0.7,>=0.6.7; extra == 'dev'
Requires-Dist: win32-setctime<1.2,>=1.1.0; extra == 'dev'
Requires-Dist: xarray<2024.8,>=2024.7.0; extra == 'dev'
Requires-Dist: xlrd<2.1,>=2.0.1; extra == 'dev'
Requires-Dist: zarr<2.19,>=2.18.2; extra == 'dev'
Provides-Extra: scripts-clean-dir
Requires-Dist: click<8.2,>=8.1.7; extra == 'scripts-clean-dir'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'scripts-clean-dir'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'scripts-clean-dir'
Provides-Extra: scripts-csv-to-markdown
Requires-Dist: click<8.2,>=8.1.7; extra == 'scripts-csv-to-markdown'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'scripts-csv-to-markdown'
Requires-Dist: mdutils<1.7,>=1.6.0; extra == 'scripts-csv-to-markdown'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'scripts-csv-to-markdown'
Provides-Extra: scripts-luigi-server
Requires-Dist: click<8.2,>=8.1.7; extra == 'scripts-luigi-server'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'scripts-luigi-server'
Requires-Dist: luigi<3.6,>=3.5.1; extra == 'scripts-luigi-server'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'scripts-luigi-server'
Provides-Extra: scripts-monitor-memory
Requires-Dist: click<8.2,>=8.1.7; extra == 'scripts-monitor-memory'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'scripts-monitor-memory'
Requires-Dist: psutil<6.1,>=6.0.0; extra == 'scripts-monitor-memory'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'scripts-monitor-memory'
Provides-Extra: scripts-pypi-server
Requires-Dist: click<8.2,>=8.1.7; extra == 'scripts-pypi-server'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'scripts-pypi-server'
Requires-Dist: pypiserver[passlib]<2.2,>=2.1.1; extra == 'scripts-pypi-server'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'scripts-pypi-server'
Provides-Extra: test
Requires-Dist: hypothesis<6.112,>=6.111.0; extra == 'test'
Requires-Dist: pytest-randomly<3.16,>=3.15.0; extra == 'test'
Requires-Dist: pytest-rerunfailures<15,>=14.0; extra == 'test'
Requires-Dist: pytest-xdist<3.7,>=3.6.1; extra == 'test'
Requires-Dist: pytest<8.4,>=8.3.2; extra == 'test'
Provides-Extra: zzz-test-altair
Requires-Dist: altair<5.5,>=5.4.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'
Provides-Extra: zzz-test-ast
Provides-Extra: zzz-test-astor
Requires-Dist: astor<0.9,>=0.8.1; extra == 'zzz-test-astor'
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'
Requires-Dist: pytest-asyncio<0.24,>=0.23.8; extra == 'zzz-test-atools'
Provides-Extra: zzz-test-beartype
Requires-Dist: beartype<0.19,>=0.18.5; extra == 'zzz-test-beartype'
Provides-Extra: zzz-test-bs4
Requires-Dist: beautifulsoup4<4.13,>=4.12.3; extra == 'zzz-test-bs4'
Requires-Dist: polars-lts-cpu<1.6,>=1.5.0; extra == 'zzz-test-bs4'
Provides-Extra: zzz-test-cacher
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-cacher'
Requires-Dist: cachetools<5.5,>=5.4.0; extra == 'zzz-test-cacher'
Provides-Extra: zzz-test-cachetools
Requires-Dist: cachetools<5.5,>=5.4.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.32; extra == 'zzz-test-click'
Requires-Dist: whenever<0.7,>=0.6.7; extra == 'zzz-test-click'
Provides-Extra: zzz-test-cryptography
Requires-Dist: cryptography<43.1,>=43.0.0; extra == 'zzz-test-cryptography'
Provides-Extra: zzz-test-cvxpy
Requires-Dist: cvxpy<1.6,>=1.5.2; extra == 'zzz-test-cvxpy'
Requires-Dist: pandas<2.3,>=2.2.2; extra == 'zzz-test-cvxpy'
Provides-Extra: zzz-test-dataclasses
Requires-Dist: beartype<0.19,>=0.18.5; extra == 'zzz-test-dataclasses'
Provides-Extra: zzz-test-datetime
Requires-Dist: tzlocal<5.3,>=5.2; extra == 'zzz-test-datetime'
Provides-Extra: zzz-test-defaults
Requires-Dist: hypothesis<6.112,>=6.111.0; extra == 'zzz-test-defaults'
Requires-Dist: pytest-cov<5.1,>=5.0.0; extra == 'zzz-test-defaults'
Requires-Dist: pytest-randomly<3.16,>=3.15.0; extra == 'zzz-test-defaults'
Requires-Dist: pytest-rerunfailures<15,>=14.0; extra == 'zzz-test-defaults'
Requires-Dist: pytest<8.4,>=8.3.2; extra == 'zzz-test-defaults'
Provides-Extra: zzz-test-email
Provides-Extra: zzz-test-enum
Provides-Extra: zzz-test-errors
Provides-Extra: zzz-test-fpdf2
Requires-Dist: fpdf2<2.8,>=2.7.9; extra == 'zzz-test-fpdf2'
Requires-Dist: holoviews<1.20,>=1.19.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
Provides-Extra: zzz-test-hatch
Requires-Dist: hatch<1.13,>=1.12.0; extra == 'zzz-test-hatch'
Provides-Extra: zzz-test-holoviews
Requires-Dist: holoviews<1.20,>=1.19.1; extra == 'zzz-test-holoviews'
Requires-Dist: numbagg<0.9,>=0.8.1; extra == 'zzz-test-holoviews'
Requires-Dist: xarray<2024.8,>=2024.7.0; extra == 'zzz-test-holoviews'
Provides-Extra: zzz-test-humps
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'zzz-test-humps'
Provides-Extra: zzz-test-hypothesis
Requires-Dist: numpy<2.1,>=2.0.1; extra == 'zzz-test-hypothesis'
Requires-Dist: pandas<2.3,>=2.2.2; extra == 'zzz-test-hypothesis'
Requires-Dist: redis<5.1,>=5.0.8; extra == 'zzz-test-hypothesis'
Requires-Dist: semver<3.1,>=3.0.2; extra == 'zzz-test-hypothesis'
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'zzz-test-hypothesis'
Requires-Dist: whenever<0.7,>=0.6.7; 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-json
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'zzz-test-json'
Requires-Dist: whenever<0.7,>=0.6.7; extra == 'zzz-test-json'
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.6,>=1.5.0; extra == 'zzz-test-jupyter'
Provides-Extra: zzz-test-locale
Provides-Extra: zzz-test-logging
Provides-Extra: zzz-test-loguru
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-loguru'
Requires-Dist: pytest-asyncio<0.24,>=0.23.8; extra == 'zzz-test-loguru'
Provides-Extra: zzz-test-luigi
Requires-Dist: freezegun<1.6,>=1.5.1; extra == 'zzz-test-luigi'
Requires-Dist: luigi<3.6,>=3.5.1; extra == 'zzz-test-luigi'
Requires-Dist: semver<3.1,>=3.0.2; extra == 'zzz-test-luigi'
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'zzz-test-luigi'
Provides-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.5,>=10.4.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.1; extra == 'zzz-test-numpy'
Requires-Dist: numpy<2.1,>=2.0.1; extra == 'zzz-test-numpy'
Requires-Dist: pandas<2.3,>=2.2.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-os
Provides-Extra: zzz-test-pandas
Requires-Dist: pandas<2.3,>=2.2.2; extra == 'zzz-test-pandas'
Provides-Extra: zzz-test-pathlib
Requires-Dist: pathvalidate<3.3,>=3.2.0; extra == 'zzz-test-pathlib'
Provides-Extra: zzz-test-pathvalidate
Requires-Dist: pathvalidate<3.3,>=3.2.0; extra == 'zzz-test-pathvalidate'
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.6,>=1.5.0; 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.9,>=2.8.2; extra == 'zzz-test-pydantic'
Provides-Extra: zzz-test-pyinstrument
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pyinstrument'
Requires-Dist: pyinstrument<4.8,>=4.7.2; extra == 'zzz-test-pyinstrument'
Provides-Extra: zzz-test-pytest
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pytest'
Requires-Dist: pytest-asyncio<0.24,>=0.23.8; extra == 'zzz-test-pytest'
Provides-Extra: zzz-test-pytest-check
Requires-Dist: pytest-check<2.4,>=2.3.1; extra == 'zzz-test-pytest-check'
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: redis<5.1,>=5.0.8; extra == 'zzz-test-redis'
Provides-Extra: zzz-test-rich
Requires-Dist: rich<13.8,>=13.7.1; extra == 'zzz-test-rich'
Provides-Extra: zzz-test-scipy
Requires-Dist: scipy<1.15,>=1.14.0; extra == 'zzz-test-scipy'
Provides-Extra: zzz-test-scripts-clean-dir
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-scripts-clean-dir'
Requires-Dist: freezegun<1.6,>=1.5.1; extra == 'zzz-test-scripts-clean-dir'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-scripts-clean-dir'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-scripts-clean-dir'
Provides-Extra: zzz-test-scripts-csv-to-markdown
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-scripts-csv-to-markdown'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-scripts-csv-to-markdown'
Requires-Dist: mdutils<1.7,>=1.6.0; extra == 'zzz-test-scripts-csv-to-markdown'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-scripts-csv-to-markdown'
Provides-Extra: zzz-test-scripts-luigi-server
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-scripts-luigi-server'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-scripts-luigi-server'
Requires-Dist: luigi<3.6,>=3.5.1; extra == 'zzz-test-scripts-luigi-server'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-scripts-luigi-server'
Provides-Extra: zzz-test-scripts-monitor-memory
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-scripts-monitor-memory'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-scripts-monitor-memory'
Requires-Dist: psutil<6.1,>=6.0.0; extra == 'zzz-test-scripts-monitor-memory'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-scripts-monitor-memory'
Provides-Extra: zzz-test-scripts-pypi-server
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-scripts-pypi-server'
Requires-Dist: loguru<0.8,>=0.7.2; extra == 'zzz-test-scripts-pypi-server'
Requires-Dist: pypiserver[passlib]<2.2,>=2.1.1; extra == 'zzz-test-scripts-pypi-server'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-scripts-pypi-server'
Provides-Extra: zzz-test-semver
Requires-Dist: semver<3.1,>=3.0.2; extra == 'zzz-test-semver'
Provides-Extra: zzz-test-sentinel
Provides-Extra: zzz-test-socket
Provides-Extra: zzz-test-sqlalchemy
Requires-Dist: aiosqlite<0.21,>=0.20.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: greenlet<3.1,>=3.0.3; extra == 'zzz-test-sqlalchemy'
Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: psycopg2-binary<2.10,>=2.9.9; extra == 'zzz-test-sqlalchemy'
Requires-Dist: pyhumps<3.9,>=3.8.0; extra == 'zzz-test-sqlalchemy'
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'zzz-test-sqlalchemy'
Provides-Extra: zzz-test-sqlalchemy-polars
Requires-Dist: polars-lts-cpu<1.6,>=1.5.0; 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.32; extra == 'zzz-test-sqlalchemy-polars'
Provides-Extra: zzz-test-subprocess
Provides-Extra: zzz-test-sys
Provides-Extra: zzz-test-tempfile
Provides-Extra: zzz-test-text
Provides-Extra: zzz-test-timer
Provides-Extra: zzz-test-tqdm
Requires-Dist: tqdm<4.67,>=4.66.5; extra == 'zzz-test-tqdm'
Provides-Extra: zzz-test-typed-settings
Requires-Dist: click<8.2,>=8.1.7; extra == 'zzz-test-typed-settings'
Requires-Dist: sqlalchemy<2.1,>=2.0.32; extra == 'zzz-test-typed-settings'
Requires-Dist: typed-settings<24.5,>=24.4.0; extra == 'zzz-test-typed-settings'
Provides-Extra: zzz-test-whenever
Requires-Dist: whenever<0.7,>=0.6.7; extra == 'zzz-test-whenever'
Provides-Extra: zzz-test-xarray
Requires-Dist: bottleneck<1.5,>=1.4.0; extra == 'zzz-test-xarray'
Requires-Dist: numbagg<0.9,>=0.8.1; extra == 'zzz-test-xarray'
Requires-Dist: xarray<2024.8,>=2024.7.0; extra == 'zzz-test-xarray'
Provides-Extra: zzz-test-xlrd
Requires-Dist: xlrd<2.1,>=2.0.1; extra == 'zzz-test-xlrd'
Provides-Extra: zzz-test-zarr
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-zarr'
Requires-Dist: zarr<2.19,>=2.18.2; extra == 'zzz-test-zarr'
Provides-Extra: zzz-test-zoneinfo
Requires-Dist: tzdata<2024.2,>=2024.1; 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).
