dycw-utilities 0.109.19__tar.gz → 0.109.21__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.19 → dycw_utilities-0.109.21}/PKG-INFO +1 -1
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/pyproject.toml +3 -2
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_polars.py +55 -0
- dycw_utilities-0.109.21/src/tests/test_statsmodel.py +44 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/lightweight_charts.py +1 -1
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/polars.py +81 -0
- dycw_utilities-0.109.21/src/utilities/statsmodels.py +117 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/.gitignore +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/LICENSE +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/README.md +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/click.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/git.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/http.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/math.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/os.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/period.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/random.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/re.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/text.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/types.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/version.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/utilities/zoneinfo.py +0 -0
@@ -56,6 +56,7 @@ dev = [
|
|
56
56
|
"scipy >= 1.15.2, < 1.16",
|
57
57
|
"slack-sdk >= 3.35.0, < 3.36",
|
58
58
|
"sqlalchemy >= 2.0.40, < 2.1",
|
59
|
+
"statsmodels >= 0.14.4, < 0.15",
|
59
60
|
"streamlit >= 1.44.1, < 1.45",
|
60
61
|
"tenacity >= 8.5.0, < 9.0", # limited by luigi
|
61
62
|
"tomlkit >= 0.13.2, < 0.14",
|
@@ -92,7 +93,7 @@ dependencies = [
|
|
92
93
|
name = "dycw-utilities"
|
93
94
|
readme = "README.md"
|
94
95
|
requires-python = ">= 3.12"
|
95
|
-
version = "0.109.
|
96
|
+
version = "0.109.21"
|
96
97
|
|
97
98
|
[project.optional-dependencies]
|
98
99
|
test = [
|
@@ -335,7 +336,7 @@ zzz-test-zoneinfo = [
|
|
335
336
|
# bump-my-version
|
336
337
|
[tool.bumpversion]
|
337
338
|
allow_dirty = true
|
338
|
-
current_version = "0.109.
|
339
|
+
current_version = "0.109.21"
|
339
340
|
|
340
341
|
[[tool.bumpversion.files]]
|
341
342
|
filename = "src/utilities/__init__.py"
|
@@ -43,6 +43,7 @@ from polars import (
|
|
43
43
|
Series,
|
44
44
|
String,
|
45
45
|
Struct,
|
46
|
+
UInt32,
|
46
47
|
col,
|
47
48
|
date_range,
|
48
49
|
datetime_range,
|
@@ -107,6 +108,7 @@ from utilities.polars import (
|
|
107
108
|
_InsertBetweenMissingColumnsError,
|
108
109
|
_InsertBetweenNonConsecutiveError,
|
109
110
|
_yield_struct_series_element_remove_nulls,
|
111
|
+
acf,
|
110
112
|
adjust_frequencies,
|
111
113
|
append_dataclass,
|
112
114
|
are_frames_equal,
|
@@ -168,6 +170,59 @@ if TYPE_CHECKING:
|
|
168
170
|
from utilities.types import MaybeType, StrMapping, WeekDay
|
169
171
|
|
170
172
|
|
173
|
+
class TestACF:
|
174
|
+
def test_main(self) -> None:
|
175
|
+
series = Series(linspace(0, 2 * pi, 1000))
|
176
|
+
df = acf(series)
|
177
|
+
check_polars_dataframe(
|
178
|
+
df, height=31, schema_list={"lag": UInt32, "autocorrelation": Float64}
|
179
|
+
)
|
180
|
+
|
181
|
+
def test_alpha(self) -> None:
|
182
|
+
series = Series(linspace(0, 2 * pi, 1000))
|
183
|
+
df = acf(series, alpha=0.5)
|
184
|
+
check_polars_dataframe(
|
185
|
+
df,
|
186
|
+
height=31,
|
187
|
+
schema_list={
|
188
|
+
"lag": UInt32,
|
189
|
+
"autocorrelation": Float64,
|
190
|
+
"lower": Float64,
|
191
|
+
"upper": Float64,
|
192
|
+
},
|
193
|
+
)
|
194
|
+
|
195
|
+
def test_qstat(self) -> None:
|
196
|
+
series = Series(linspace(0, 2 * pi, 1000))
|
197
|
+
df = acf(series, qstat=True)
|
198
|
+
check_polars_dataframe(
|
199
|
+
df,
|
200
|
+
height=31,
|
201
|
+
schema_list={
|
202
|
+
"lag": UInt32,
|
203
|
+
"autocorrelation": Float64,
|
204
|
+
"qstat": Float64,
|
205
|
+
"pvalue": Float64,
|
206
|
+
},
|
207
|
+
)
|
208
|
+
|
209
|
+
def test_alpha_and_qstat(self) -> None:
|
210
|
+
series = Series(linspace(0, 2 * pi, 1000))
|
211
|
+
df = acf(series, alpha=0.5, qstat=True)
|
212
|
+
check_polars_dataframe(
|
213
|
+
df,
|
214
|
+
height=31,
|
215
|
+
schema_list={
|
216
|
+
"lag": UInt32,
|
217
|
+
"autocorrelation": Float64,
|
218
|
+
"lower": Float64,
|
219
|
+
"upper": Float64,
|
220
|
+
"qstat": Float64,
|
221
|
+
"pvalue": Float64,
|
222
|
+
},
|
223
|
+
)
|
224
|
+
|
225
|
+
|
171
226
|
class TestAdjustFrequencies:
|
172
227
|
def test_main(self) -> None:
|
173
228
|
n = 1000
|
@@ -0,0 +1,44 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from numpy import allclose, isclose, linspace, pi
|
4
|
+
|
5
|
+
from utilities.statsmodels import acf
|
6
|
+
|
7
|
+
|
8
|
+
class TestACF:
|
9
|
+
def test_main(self) -> None:
|
10
|
+
x = linspace(0, 2 * pi, 1000)
|
11
|
+
acfs = acf(x)
|
12
|
+
assert acfs.shape == (31,)
|
13
|
+
assert isclose(acfs[-1], 0.9100539400539398)
|
14
|
+
|
15
|
+
def test_alpha(self) -> None:
|
16
|
+
x = linspace(0, 2 * pi, 1000)
|
17
|
+
result = acf(x, alpha=0.5)
|
18
|
+
acfs, confint = result
|
19
|
+
assert acfs.shape == (31,)
|
20
|
+
assert confint.shape == (31, 2)
|
21
|
+
assert allclose(confint[-1, :], [0.7534104755915192, 1.0666974045163604])
|
22
|
+
|
23
|
+
def test_qstat(self) -> None:
|
24
|
+
x = linspace(0, 2 * pi, 1000)
|
25
|
+
result = acf(x, qstat=True)
|
26
|
+
acfs, qstat, pvalues = result
|
27
|
+
assert acfs.shape == (31,)
|
28
|
+
assert qstat.shape == (30,)
|
29
|
+
assert isclose(qstat[-1], 27769.955439016478)
|
30
|
+
assert pvalues.shape == (30,)
|
31
|
+
assert isclose(pvalues[-1], 0.0)
|
32
|
+
|
33
|
+
def test_alpha_and_qstat(self) -> None:
|
34
|
+
x = linspace(0, 2 * pi, 1000)
|
35
|
+
result = acf(x, alpha=0.5, qstat=True)
|
36
|
+
acfs, confint, qstat, pvalues = result
|
37
|
+
assert acfs.shape == (31,)
|
38
|
+
assert isclose(acfs[-1], 0.9100539400539398)
|
39
|
+
assert confint.shape == (31, 2)
|
40
|
+
assert allclose(confint[-1, :], [0.7534104755915192, 1.0666974045163604])
|
41
|
+
assert qstat.shape == (30,)
|
42
|
+
assert isclose(qstat[-1], 27769.955439016478)
|
43
|
+
assert pvalues.shape == (30,)
|
44
|
+
assert isclose(pvalues[-1], 0.0)
|
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
|
|
13
13
|
from lightweight_charts import AbstractChart, Chart
|
14
14
|
from lightweight_charts.abstract import SeriesCommon
|
15
15
|
from polars import DataFrame
|
16
|
-
from polars._typing import SchemaDict
|
16
|
+
from polars._typing import SchemaDict # pyright: ignore[reportPrivateImportUsage]
|
17
17
|
|
18
18
|
from utilities.types import PathLike
|
19
19
|
|
@@ -121,6 +121,7 @@ if TYPE_CHECKING:
|
|
121
121
|
)
|
122
122
|
|
123
123
|
from utilities.numpy import NDArrayB, NDArrayF
|
124
|
+
from utilities.statsmodels import ACFMissing
|
124
125
|
from utilities.types import (
|
125
126
|
Dataclass,
|
126
127
|
MaybeIterable,
|
@@ -143,6 +144,85 @@ _FINITE_EWM_MIN_WEIGHT = 0.9999
|
|
143
144
|
##
|
144
145
|
|
145
146
|
|
147
|
+
def acf(
|
148
|
+
series: Series,
|
149
|
+
/,
|
150
|
+
*,
|
151
|
+
adjusted: bool = False,
|
152
|
+
nlags: int | None = None,
|
153
|
+
qstat: bool = False,
|
154
|
+
fft: bool = True,
|
155
|
+
alpha: float | None = None,
|
156
|
+
bartlett_confint: bool = True,
|
157
|
+
missing: ACFMissing = "none",
|
158
|
+
) -> DataFrame:
|
159
|
+
"""Compute the autocorrelations of a series."""
|
160
|
+
from numpy import ndarray
|
161
|
+
|
162
|
+
import utilities.statsmodels
|
163
|
+
|
164
|
+
array = series.to_numpy()
|
165
|
+
result = utilities.statsmodels.acf(
|
166
|
+
array,
|
167
|
+
adjusted=adjusted,
|
168
|
+
nlags=nlags,
|
169
|
+
qstat=qstat,
|
170
|
+
fft=fft,
|
171
|
+
alpha=alpha,
|
172
|
+
bartlett_confint=bartlett_confint,
|
173
|
+
missing=missing,
|
174
|
+
)
|
175
|
+
match result:
|
176
|
+
case ndarray() as acfs:
|
177
|
+
return _acf_process_acfs(acfs)
|
178
|
+
case ndarray() as acfs, ndarray() as confints:
|
179
|
+
df_acfs = _acf_process_acfs(acfs)
|
180
|
+
df_confints = _acf_process_confints(confints)
|
181
|
+
return df_acfs.join(df_confints, on=["lag"])
|
182
|
+
case ndarray() as acfs, ndarray() as qstats, ndarray() as pvalues:
|
183
|
+
df_acfs = _acf_process_acfs(acfs)
|
184
|
+
df_qstats_pvalues = _acf_process_qstats_pvalues(qstats, pvalues)
|
185
|
+
return df_acfs.join(df_qstats_pvalues, on=["lag"], how="left")
|
186
|
+
case (
|
187
|
+
ndarray() as acfs,
|
188
|
+
ndarray() as confints,
|
189
|
+
ndarray() as qstats,
|
190
|
+
ndarray() as pvalues,
|
191
|
+
):
|
192
|
+
df_acfs = _acf_process_acfs(acfs)
|
193
|
+
df_confints = _acf_process_confints(confints)
|
194
|
+
df_qstats_pvalues = _acf_process_qstats_pvalues(qstats, pvalues)
|
195
|
+
return join(df_acfs, df_confints, df_qstats_pvalues, on=["lag"], how="left")
|
196
|
+
case _ as never:
|
197
|
+
assert_never(never)
|
198
|
+
|
199
|
+
|
200
|
+
def _acf_process_acfs(acfs: NDArrayF, /) -> DataFrame:
|
201
|
+
return (
|
202
|
+
Series(name="autocorrelation", values=acfs, dtype=Float64)
|
203
|
+
.to_frame()
|
204
|
+
.with_row_index(name="lag")
|
205
|
+
)
|
206
|
+
|
207
|
+
|
208
|
+
def _acf_process_confints(confints: NDArrayF, /) -> DataFrame:
|
209
|
+
return DataFrame(
|
210
|
+
data=confints, schema={"lower": Float64, "upper": Float64}
|
211
|
+
).with_row_index(name="lag")
|
212
|
+
|
213
|
+
|
214
|
+
def _acf_process_qstats_pvalues(qstats: NDArrayF, pvalues: NDArrayF, /) -> DataFrame:
|
215
|
+
from numpy import hstack
|
216
|
+
|
217
|
+
data = hstack([qstats.reshape(-1, 1), pvalues.reshape(-1, 1)])
|
218
|
+
return DataFrame(
|
219
|
+
data=data, schema={"qstat": Float64, "pvalue": Float64}
|
220
|
+
).with_row_index(name="lag", offset=1)
|
221
|
+
|
222
|
+
|
223
|
+
##
|
224
|
+
|
225
|
+
|
146
226
|
def adjust_frequencies(
|
147
227
|
series: Series,
|
148
228
|
/,
|
@@ -1840,6 +1920,7 @@ __all__ = [
|
|
1840
1920
|
"SetFirstRowAsColumnsError",
|
1841
1921
|
"StructFromDataClassError",
|
1842
1922
|
"YieldStructSeriesElementsError",
|
1923
|
+
"acf",
|
1843
1924
|
"adjust_frequencies",
|
1844
1925
|
"append_dataclass",
|
1845
1926
|
"are_frames_equal",
|
@@ -0,0 +1,117 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import TYPE_CHECKING, Any, Literal, cast, overload
|
4
|
+
|
5
|
+
import statsmodels.tsa.stattools
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from utilities.numpy import NDArrayF
|
9
|
+
|
10
|
+
|
11
|
+
type ACFMissing = Literal["none", "raise", "conservative", "drop"]
|
12
|
+
|
13
|
+
|
14
|
+
@overload
|
15
|
+
def acf(
|
16
|
+
array: NDArrayF,
|
17
|
+
/,
|
18
|
+
*,
|
19
|
+
adjusted: bool = False,
|
20
|
+
nlags: int | None = None,
|
21
|
+
qstat: Literal[False] = False,
|
22
|
+
fft: bool = True,
|
23
|
+
alpha: None = None,
|
24
|
+
bartlett_confint: bool = True,
|
25
|
+
missing: ACFMissing = "none",
|
26
|
+
) -> NDArrayF: ...
|
27
|
+
@overload
|
28
|
+
def acf(
|
29
|
+
array: NDArrayF,
|
30
|
+
/,
|
31
|
+
*,
|
32
|
+
adjusted: bool = False,
|
33
|
+
nlags: int | None = None,
|
34
|
+
qstat: Literal[False] = False,
|
35
|
+
fft: bool = True,
|
36
|
+
alpha: float,
|
37
|
+
bartlett_confint: bool = True,
|
38
|
+
missing: ACFMissing = "none",
|
39
|
+
) -> tuple[NDArrayF, NDArrayF]: ...
|
40
|
+
@overload
|
41
|
+
def acf(
|
42
|
+
array: NDArrayF,
|
43
|
+
/,
|
44
|
+
*,
|
45
|
+
adjusted: bool = False,
|
46
|
+
nlags: int | None = None,
|
47
|
+
qstat: Literal[True],
|
48
|
+
fft: bool = True,
|
49
|
+
alpha: float,
|
50
|
+
bartlett_confint: bool = True,
|
51
|
+
missing: ACFMissing = "none",
|
52
|
+
) -> tuple[NDArrayF, NDArrayF, NDArrayF, NDArrayF]: ...
|
53
|
+
@overload
|
54
|
+
def acf(
|
55
|
+
array: NDArrayF,
|
56
|
+
/,
|
57
|
+
*,
|
58
|
+
adjusted: bool = False,
|
59
|
+
nlags: int | None = None,
|
60
|
+
qstat: Literal[True],
|
61
|
+
fft: bool = True,
|
62
|
+
alpha: None = None,
|
63
|
+
bartlett_confint: bool = True,
|
64
|
+
missing: ACFMissing = "none",
|
65
|
+
) -> tuple[NDArrayF, NDArrayF, NDArrayF]: ...
|
66
|
+
@overload
|
67
|
+
def acf(
|
68
|
+
array: NDArrayF,
|
69
|
+
/,
|
70
|
+
*,
|
71
|
+
adjusted: bool = False,
|
72
|
+
nlags: int | None = None,
|
73
|
+
qstat: bool = False,
|
74
|
+
fft: bool = True,
|
75
|
+
alpha: float | None = None,
|
76
|
+
bartlett_confint: bool = True,
|
77
|
+
missing: ACFMissing = "none",
|
78
|
+
) -> (
|
79
|
+
NDArrayF
|
80
|
+
| tuple[NDArrayF, NDArrayF]
|
81
|
+
| tuple[NDArrayF, NDArrayF, NDArrayF]
|
82
|
+
| tuple[NDArrayF, NDArrayF, NDArrayF, NDArrayF]
|
83
|
+
): ...
|
84
|
+
def acf(
|
85
|
+
array: NDArrayF,
|
86
|
+
/,
|
87
|
+
*,
|
88
|
+
adjusted: bool = False,
|
89
|
+
nlags: int | None = None,
|
90
|
+
qstat: bool = False,
|
91
|
+
fft: bool = True,
|
92
|
+
alpha: float | None = None,
|
93
|
+
bartlett_confint: bool = True,
|
94
|
+
missing: ACFMissing = "none",
|
95
|
+
) -> (
|
96
|
+
NDArrayF
|
97
|
+
| tuple[NDArrayF, NDArrayF]
|
98
|
+
| tuple[NDArrayF, NDArrayF, NDArrayF]
|
99
|
+
| tuple[NDArrayF, NDArrayF, NDArrayF, NDArrayF]
|
100
|
+
):
|
101
|
+
"""Typed version of `acf`."""
|
102
|
+
return cast(
|
103
|
+
"Any",
|
104
|
+
statsmodels.tsa.stattools.acf(
|
105
|
+
array,
|
106
|
+
adjusted=adjusted,
|
107
|
+
nlags=nlags,
|
108
|
+
qstat=qstat,
|
109
|
+
fft=fft,
|
110
|
+
alpha=alpha,
|
111
|
+
bartlett_confint=bartlett_confint,
|
112
|
+
missing=missing,
|
113
|
+
),
|
114
|
+
)
|
115
|
+
|
116
|
+
|
117
|
+
__all__ = ["ACFMissing", "acf"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/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.19 → dycw_utilities-0.109.21}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/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.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/src/tests/scripts/test_async_service/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.19 → dycw_utilities-0.109.21}/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
|