dycw-utilities 0.109.21__tar.gz → 0.109.23__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/PKG-INFO +3 -3
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/pyproject.toml +5 -5
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_polars.py +25 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_statsmodel.py +8 -1
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/polars.py +47 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/statsmodels.py +34 -1
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/.gitignore +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/LICENSE +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/README.md +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/click.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/git.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/http.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/math.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/os.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/period.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/random.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/re.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/text.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/types.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/version.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/utilities/zoneinfo.py +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dycw-utilities
|
3
|
-
Version: 0.109.
|
3
|
+
Version: 0.109.23
|
4
4
|
Author-email: Derek Wan <d.wan@icloud.com>
|
5
5
|
License-File: LICENSE
|
6
6
|
Requires-Python: >=3.12
|
7
7
|
Requires-Dist: typing-extensions<4.14,>=4.13.1
|
8
8
|
Provides-Extra: test
|
9
|
-
Requires-Dist: hypothesis<6.132,>=6.131.
|
9
|
+
Requires-Dist: hypothesis<6.132,>=6.131.9; extra == 'test'
|
10
10
|
Requires-Dist: pytest-asyncio<0.27,>=0.26.0; extra == 'test'
|
11
11
|
Requires-Dist: pytest-cov<6.2,>=6.1.1; extra == 'test'
|
12
12
|
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
|
@@ -80,7 +80,7 @@ Provides-Extra: zzz-test-hypothesis
|
|
80
80
|
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-hypothesis'
|
81
81
|
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
|
82
82
|
Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-hypothesis'
|
83
|
-
Requires-Dist: hypothesis<6.132,>=6.131.
|
83
|
+
Requires-Dist: hypothesis<6.132,>=6.131.9; extra == 'zzz-test-hypothesis'
|
84
84
|
Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-hypothesis'
|
85
85
|
Requires-Dist: numpy<2.3,>=2.2.5; extra == 'zzz-test-hypothesis'
|
86
86
|
Requires-Dist: pathvalidate<3.3,>=3.2.3; extra == 'zzz-test-hypothesis'
|
@@ -27,7 +27,7 @@ dev = [
|
|
27
27
|
"fpdf2 >= 2.8.3, < 2.9",
|
28
28
|
"greenlet >= 3.2.0, < 3.3", # for sqlalchemy async
|
29
29
|
"httpx >= 0.28.1, < 0.29", # for fastapi
|
30
|
-
"hypothesis >= 6.131.
|
30
|
+
"hypothesis >= 6.131.9, < 6.132",
|
31
31
|
"img2pdf >= 0.6.0, < 0.7",
|
32
32
|
"lightweight-charts >= 2.1, < 2.2",
|
33
33
|
"loguru >= 0.7.3, < 0.8",
|
@@ -93,11 +93,11 @@ dependencies = [
|
|
93
93
|
name = "dycw-utilities"
|
94
94
|
readme = "README.md"
|
95
95
|
requires-python = ">= 3.12"
|
96
|
-
version = "0.109.
|
96
|
+
version = "0.109.23"
|
97
97
|
|
98
98
|
[project.optional-dependencies]
|
99
99
|
test = [
|
100
|
-
"hypothesis >= 6.131.
|
100
|
+
"hypothesis >= 6.131.9, < 6.132",
|
101
101
|
"pytest >= 8.3.5, < 8.4",
|
102
102
|
"pytest-asyncio >= 0.26.0, < 0.27",
|
103
103
|
"pytest-cov >= 6.1.1, < 6.2",
|
@@ -175,7 +175,7 @@ zzz-test-hypothesis = [
|
|
175
175
|
"aiosqlite >= 0.21.0, < 0.22",
|
176
176
|
"asyncpg >= 0.30.0, < 0.31", # for sqlalchemy async
|
177
177
|
"greenlet >= 3.2.0, < 3.3", # for sqlalchemy async
|
178
|
-
"hypothesis >= 6.131.
|
178
|
+
"hypothesis >= 6.131.9, < 6.132",
|
179
179
|
"luigi >= 3.6.0, < 3.7",
|
180
180
|
"numpy >= 2.2.5, < 2.3",
|
181
181
|
"pathvalidate >= 3.2.3, < 3.3",
|
@@ -336,7 +336,7 @@ zzz-test-zoneinfo = [
|
|
336
336
|
# bump-my-version
|
337
337
|
[tool.bumpversion]
|
338
338
|
allow_dirty = true
|
339
|
-
current_version = "0.109.
|
339
|
+
current_version = "0.109.23"
|
340
340
|
|
341
341
|
[[tool.bumpversion.files]]
|
342
342
|
filename = "src/utilities/__init__.py"
|
@@ -108,6 +108,7 @@ from utilities.polars import (
|
|
108
108
|
_InsertBetweenMissingColumnsError,
|
109
109
|
_InsertBetweenNonConsecutiveError,
|
110
110
|
_yield_struct_series_element_remove_nulls,
|
111
|
+
ac_halflife,
|
111
112
|
acf,
|
112
113
|
adjust_frequencies,
|
113
114
|
append_dataclass,
|
@@ -128,6 +129,7 @@ from utilities.polars import (
|
|
128
129
|
finite_ewm_mean,
|
129
130
|
floor_datetime,
|
130
131
|
get_data_type_or_series_time_zone,
|
132
|
+
get_expr_name,
|
131
133
|
get_frequency_spectrum,
|
132
134
|
get_series_number_of_decimals,
|
133
135
|
insert_after,
|
@@ -223,6 +225,13 @@ class TestACF:
|
|
223
225
|
)
|
224
226
|
|
225
227
|
|
228
|
+
class TestACHalfLife:
|
229
|
+
def test_main(self) -> None:
|
230
|
+
series = Series(linspace(0, 2 * pi, 1000))
|
231
|
+
halflife = ac_halflife(series)
|
232
|
+
assert halflife == 169.94
|
233
|
+
|
234
|
+
|
226
235
|
class TestAdjustFrequencies:
|
227
236
|
def test_main(self) -> None:
|
228
237
|
n = 1000
|
@@ -1323,6 +1332,22 @@ class TestGetDataTypeOrSeriesTimeZone:
|
|
1323
1332
|
_ = get_data_type_or_series_time_zone(Datetime)
|
1324
1333
|
|
1325
1334
|
|
1335
|
+
class TestGetExprName:
|
1336
|
+
@given(n=hypothesis.strategies.integers(0, 10), name=text_ascii())
|
1337
|
+
def test_series(self, *, n: int, name: str) -> None:
|
1338
|
+
sr = int_range(n, eager=True)
|
1339
|
+
expr = lit(None, dtype=Boolean).alias(name)
|
1340
|
+
result = get_expr_name(sr, expr)
|
1341
|
+
assert result == name
|
1342
|
+
|
1343
|
+
@given(n=hypothesis.strategies.integers(0, 10), name=text_ascii())
|
1344
|
+
def test_df(self, *, n: int, name: str) -> None:
|
1345
|
+
df = int_range(n, eager=True).to_frame()
|
1346
|
+
expr = lit(None, dtype=Boolean).alias(name)
|
1347
|
+
result = get_expr_name(df, expr)
|
1348
|
+
assert result == name
|
1349
|
+
|
1350
|
+
|
1326
1351
|
class TestGetFrequencySpectrum:
|
1327
1352
|
def test_main(self) -> None:
|
1328
1353
|
n = 1000
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from numpy import allclose, isclose, linspace, pi
|
4
4
|
|
5
|
-
from utilities.statsmodels import acf
|
5
|
+
from utilities.statsmodels import ac_halflife, acf
|
6
6
|
|
7
7
|
|
8
8
|
class TestACF:
|
@@ -42,3 +42,10 @@ class TestACF:
|
|
42
42
|
assert isclose(qstat[-1], 27769.955439016478)
|
43
43
|
assert pvalues.shape == (30,)
|
44
44
|
assert isclose(pvalues[-1], 0.0)
|
45
|
+
|
46
|
+
|
47
|
+
class TestACHalfLife:
|
48
|
+
def test_main(self) -> None:
|
49
|
+
x = linspace(0, 2 * pi, 1000)
|
50
|
+
halflife = ac_halflife(x)
|
51
|
+
assert halflife == 169.94
|
@@ -140,6 +140,32 @@ DatetimeUSEastern = Datetime(time_zone="US/Eastern")
|
|
140
140
|
DatetimeUTC = Datetime(time_zone="UTC")
|
141
141
|
_FINITE_EWM_MIN_WEIGHT = 0.9999
|
142
142
|
|
143
|
+
##
|
144
|
+
|
145
|
+
|
146
|
+
def ac_halflife(
|
147
|
+
series: Series,
|
148
|
+
/,
|
149
|
+
*,
|
150
|
+
adjusted: bool = False,
|
151
|
+
fft: bool = True,
|
152
|
+
bartlett_confint: bool = True,
|
153
|
+
missing: ACFMissing = "none",
|
154
|
+
step: float = 0.01,
|
155
|
+
) -> float:
|
156
|
+
"""Compute the autocorrelation halflife."""
|
157
|
+
import utilities.statsmodels
|
158
|
+
|
159
|
+
array = series.to_numpy()
|
160
|
+
return utilities.statsmodels.ac_halflife(
|
161
|
+
array,
|
162
|
+
adjusted=adjusted,
|
163
|
+
fft=fft,
|
164
|
+
bartlett_confint=bartlett_confint,
|
165
|
+
missing=missing,
|
166
|
+
step=step,
|
167
|
+
)
|
168
|
+
|
143
169
|
|
144
170
|
##
|
145
171
|
|
@@ -223,6 +249,11 @@ def _acf_process_qstats_pvalues(qstats: NDArrayF, pvalues: NDArrayF, /) -> DataF
|
|
223
249
|
##
|
224
250
|
|
225
251
|
|
252
|
+
# def acf_halflife(series: Series,/)
|
253
|
+
|
254
|
+
##
|
255
|
+
|
256
|
+
|
226
257
|
def adjust_frequencies(
|
227
258
|
series: Series,
|
228
259
|
/,
|
@@ -1197,6 +1228,21 @@ class _GetDataTypeOrSeriesTimeZoneNotZonedError(GetDataTypeOrSeriesTimeZoneError
|
|
1197
1228
|
##
|
1198
1229
|
|
1199
1230
|
|
1231
|
+
def get_expr_name(obj: Series | DataFrame, expr: Expr, /) -> str:
|
1232
|
+
"""Get the name of an expression."""
|
1233
|
+
match obj:
|
1234
|
+
case Series() as series:
|
1235
|
+
return get_expr_name(series.to_frame(), expr)
|
1236
|
+
case DataFrame() as df:
|
1237
|
+
selected = df.select(expr)
|
1238
|
+
return one(selected.columns)
|
1239
|
+
case _ as never:
|
1240
|
+
assert_never(never)
|
1241
|
+
|
1242
|
+
|
1243
|
+
##
|
1244
|
+
|
1245
|
+
|
1200
1246
|
def get_frequency_spectrum(series: Series, /, *, d: int = 1) -> DataFrame:
|
1201
1247
|
"""Get the frequency spectrum."""
|
1202
1248
|
import utilities.numpy
|
@@ -1939,6 +1985,7 @@ __all__ = [
|
|
1939
1985
|
"finite_ewm_mean",
|
1940
1986
|
"floor_datetime",
|
1941
1987
|
"get_data_type_or_series_time_zone",
|
1988
|
+
"get_expr_name",
|
1942
1989
|
"get_frequency_spectrum",
|
1943
1990
|
"get_series_number_of_decimals",
|
1944
1991
|
"insert_after",
|
@@ -2,12 +2,45 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from typing import TYPE_CHECKING, Any, Literal, cast, overload
|
4
4
|
|
5
|
+
import numpy as np
|
5
6
|
import statsmodels.tsa.stattools
|
7
|
+
from numpy import arange, argmax, interp, nan
|
8
|
+
|
9
|
+
from utilities.numpy import shift
|
6
10
|
|
7
11
|
if TYPE_CHECKING:
|
8
12
|
from utilities.numpy import NDArrayF
|
9
13
|
|
10
14
|
|
15
|
+
def ac_halflife(
|
16
|
+
array: NDArrayF,
|
17
|
+
/,
|
18
|
+
*,
|
19
|
+
adjusted: bool = False,
|
20
|
+
fft: bool = True,
|
21
|
+
bartlett_confint: bool = True,
|
22
|
+
missing: ACFMissing = "none",
|
23
|
+
step: float = 0.01,
|
24
|
+
) -> float:
|
25
|
+
"""Compute the autocorrelation halflife."""
|
26
|
+
(n,) = array.shape
|
27
|
+
acfs = acf(
|
28
|
+
array,
|
29
|
+
adjusted=adjusted,
|
30
|
+
nlags=n,
|
31
|
+
fft=fft,
|
32
|
+
bartlett_confint=bartlett_confint,
|
33
|
+
missing=missing,
|
34
|
+
)
|
35
|
+
lags = arange(0, n, step=step)
|
36
|
+
interp_acfs = interp(lags, arange(n), acfs)
|
37
|
+
is_half = (shift(interp_acfs) > 0.5) & (interp_acfs <= 0.5)
|
38
|
+
return lags[argmax(is_half)].item() if np.any(is_half) else nan
|
39
|
+
|
40
|
+
|
41
|
+
##
|
42
|
+
|
43
|
+
|
11
44
|
type ACFMissing = Literal["none", "raise", "conservative", "drop"]
|
12
45
|
|
13
46
|
|
@@ -114,4 +147,4 @@ def acf(
|
|
114
147
|
)
|
115
148
|
|
116
149
|
|
117
|
-
__all__ = ["ACFMissing", "acf"]
|
150
|
+
__all__ = ["ACFMissing", "ac_halflife", "acf"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_with/outer_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_async_service/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/scripts/test_queue_processor/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/decorated_sync.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/error_bind.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/recursive.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/task_group_one.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/task_group_two.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_traceback_funcs/untraced.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.109.21 → dycw_utilities-0.109.23}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|