dycw-utilities 0.164.1__tar.gz → 0.165.1__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.164.1 → dycw_utilities-0.165.1}/PKG-INFO +1 -1
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/pyproject.toml +3 -2
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_contextlib.py +19 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_hypothesis.py +32 -6
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_polars.py +26 -6
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_polars_ols.py +4 -8
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/contextlib.py +3 -1
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/hypothesis.py +24 -2
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/polars.py +54 -11
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/.gitignore +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/LICENSE +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/README.md +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_aeventkit.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_testbook.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/aeventkit.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/click.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/http.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/json.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/math.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/os.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/random.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/re.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/string.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/testbook.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/text.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/types.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/version.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/utilities/zoneinfo.py +0 -0
@@ -128,6 +128,7 @@ polars-ols-test = [
|
|
128
128
|
]
|
129
129
|
polars-test = [
|
130
130
|
"numpy",
|
131
|
+
"scipy",
|
131
132
|
"statsmodels",
|
132
133
|
]
|
133
134
|
pottery = [
|
@@ -232,7 +233,7 @@ dependencies = [
|
|
232
233
|
name = "dycw-utilities"
|
233
234
|
readme = "README.md"
|
234
235
|
requires-python = ">= 3.12"
|
235
|
-
version = "0.
|
236
|
+
version = "0.165.1"
|
236
237
|
|
237
238
|
[project.entry-points.pytest11]
|
238
239
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -265,7 +266,7 @@ test = [
|
|
265
266
|
# bump-my-version
|
266
267
|
[tool.bumpversion]
|
267
268
|
allow_dirty = true
|
268
|
-
current_version = "0.
|
269
|
+
current_version = "0.165.1"
|
269
270
|
|
270
271
|
[[tool.bumpversion.files]]
|
271
272
|
filename = "src/utilities/__init__.py"
|
@@ -4,6 +4,7 @@ import asyncio
|
|
4
4
|
import time
|
5
5
|
from asyncio import run
|
6
6
|
from dataclasses import dataclass
|
7
|
+
from inspect import signature
|
7
8
|
from multiprocessing import Process
|
8
9
|
from pathlib import Path
|
9
10
|
from typing import TYPE_CHECKING, override
|
@@ -103,6 +104,15 @@ class TestEnhancedContextManager:
|
|
103
104
|
assert not cleared
|
104
105
|
assert cleared
|
105
106
|
|
107
|
+
def test_sync_signature(self) -> None:
|
108
|
+
@enhanced_context_manager
|
109
|
+
def yield_marker(x: int, y: int, /) -> Iterator[int]:
|
110
|
+
yield x + y
|
111
|
+
|
112
|
+
sig = set(signature(yield_marker).parameters)
|
113
|
+
expected = {"x", "y"}
|
114
|
+
assert sig == expected
|
115
|
+
|
106
116
|
@given(
|
107
117
|
sigabrt=booleans(),
|
108
118
|
sigfpe=booleans(),
|
@@ -142,6 +152,15 @@ class TestEnhancedContextManager:
|
|
142
152
|
assert not cleared
|
143
153
|
assert cleared
|
144
154
|
|
155
|
+
def test_async_signature(self) -> None:
|
156
|
+
@enhanced_async_context_manager
|
157
|
+
async def yield_marker(x: int, y: int, /) -> AsyncIterator[int]:
|
158
|
+
yield x + y
|
159
|
+
|
160
|
+
sig = set(signature(yield_marker).parameters)
|
161
|
+
expected = {"x", "y"}
|
162
|
+
assert sig == expected
|
163
|
+
|
145
164
|
@mark.parametrize(
|
146
165
|
"target",
|
147
166
|
[
|
@@ -381,29 +381,55 @@ class TestDraw2:
|
|
381
381
|
|
382
382
|
|
383
383
|
class TestFloat32s:
|
384
|
-
@given(data=data())
|
385
|
-
def test_main(
|
384
|
+
@given(data=data(), exclude_min=booleans(), exclude_max=booleans())
|
385
|
+
def test_main(
|
386
|
+
self, *, data: DataObject, exclude_min: bool, exclude_max: bool
|
387
|
+
) -> None:
|
386
388
|
min_value, max_value = data.draw(pairs(float32s() | none()))
|
387
389
|
with assume_does_not_raise(InvalidArgument):
|
388
|
-
x = data.draw(
|
390
|
+
x = data.draw(
|
391
|
+
float32s(
|
392
|
+
min_value=min_value,
|
393
|
+
max_value=max_value,
|
394
|
+
exclude_min=exclude_min,
|
395
|
+
exclude_max=exclude_max,
|
396
|
+
)
|
397
|
+
)
|
389
398
|
assert MIN_FLOAT32 <= x <= MAX_FLOAT32
|
390
399
|
if min_value is not None:
|
391
400
|
assert x >= min_value
|
401
|
+
if exclude_min:
|
402
|
+
assert x != min_value
|
392
403
|
if max_value is not None:
|
393
404
|
assert x <= max_value
|
405
|
+
if exclude_max:
|
406
|
+
assert x != max_value
|
394
407
|
|
395
408
|
|
396
409
|
class TestFloat64s:
|
397
|
-
@given(data=data())
|
398
|
-
def test_main(
|
410
|
+
@given(data=data(), exclude_min=booleans(), exclude_max=booleans())
|
411
|
+
def test_main(
|
412
|
+
self, *, data: DataObject, exclude_min: bool, exclude_max: bool
|
413
|
+
) -> None:
|
399
414
|
min_value, max_value = data.draw(pairs(float64s() | none()))
|
400
415
|
with assume_does_not_raise(InvalidArgument):
|
401
|
-
x = data.draw(
|
416
|
+
x = data.draw(
|
417
|
+
float64s(
|
418
|
+
min_value=min_value,
|
419
|
+
max_value=max_value,
|
420
|
+
exclude_min=exclude_min,
|
421
|
+
exclude_max=exclude_max,
|
422
|
+
)
|
423
|
+
)
|
402
424
|
assert MIN_FLOAT64 <= x <= MAX_FLOAT64
|
403
425
|
if min_value is not None:
|
404
426
|
assert x >= min_value
|
405
427
|
if max_value is not None:
|
406
428
|
assert x <= max_value
|
429
|
+
if max_value is not None:
|
430
|
+
assert x <= max_value
|
431
|
+
if exclude_max:
|
432
|
+
assert x != max_value
|
407
433
|
|
408
434
|
|
409
435
|
class TestFloatArrays:
|
@@ -16,7 +16,7 @@ import hypothesis.strategies
|
|
16
16
|
import numpy as np
|
17
17
|
import polars as pl
|
18
18
|
import whenever
|
19
|
-
from hypothesis import given
|
19
|
+
from hypothesis import assume, given
|
20
20
|
from hypothesis.strategies import (
|
21
21
|
DataObject,
|
22
22
|
SearchStrategy,
|
@@ -57,11 +57,13 @@ from polars._typing import IntoExprColumn, SchemaDict
|
|
57
57
|
from polars.schema import Schema
|
58
58
|
from polars.testing import assert_frame_equal, assert_series_equal
|
59
59
|
from pytest import mark, param, raises
|
60
|
+
from scipy.stats import norm
|
60
61
|
from whenever import DateDelta, DateTimeDelta, PlainDateTime, TimeDelta, ZonedDateTime
|
61
62
|
|
62
63
|
import tests.test_math
|
63
64
|
import utilities.polars
|
64
65
|
from utilities.hypothesis import (
|
66
|
+
assume_does_not_raise,
|
65
67
|
date_deltas,
|
66
68
|
date_periods,
|
67
69
|
date_time_deltas,
|
@@ -180,7 +182,8 @@ from utilities.polars import (
|
|
180
182
|
map_over_columns,
|
181
183
|
nan_sum_agg,
|
182
184
|
nan_sum_horizontal,
|
183
|
-
|
185
|
+
normal_pdf,
|
186
|
+
normal_rv,
|
184
187
|
number_of_decimals,
|
185
188
|
offset_datetime,
|
186
189
|
one_column,
|
@@ -2195,22 +2198,39 @@ class TestNanSumHorizontal:
|
|
2195
2198
|
assert result.item() == expected
|
2196
2199
|
|
2197
2200
|
|
2198
|
-
class
|
2201
|
+
class TestNormalPDF:
|
2202
|
+
@given(
|
2203
|
+
xs=lists(float64s(), max_size=10),
|
2204
|
+
loc=float64s(),
|
2205
|
+
scale=float64s(min_value=0.0, exclude_min=True),
|
2206
|
+
)
|
2207
|
+
def test_main(self, *, xs: list[float], loc: float, scale: float) -> None:
|
2208
|
+
x = Series(name="x", values=xs, dtype=Float64)
|
2209
|
+
series = normal_pdf(x, loc=loc, scale=scale)
|
2210
|
+
_ = assume(series.is_finite().all())
|
2211
|
+
with assume_does_not_raise(
|
2212
|
+
RuntimeWarning, match="overflow encountered in (subtract|square|divide)"
|
2213
|
+
):
|
2214
|
+
expected = norm.pdf(xs, loc=loc, scale=scale)
|
2215
|
+
assert allclose(series, expected)
|
2216
|
+
|
2217
|
+
|
2218
|
+
class TestNormalRV:
|
2199
2219
|
@given(length=hypothesis.strategies.integers(0, 10))
|
2200
2220
|
def test_int(self, *, length: int) -> None:
|
2201
|
-
series =
|
2221
|
+
series = normal_rv(length)
|
2202
2222
|
self._assert(series, length)
|
2203
2223
|
|
2204
2224
|
@given(length=hypothesis.strategies.integers(0, 10))
|
2205
2225
|
def test_series(self, *, length: int) -> None:
|
2206
2226
|
orig = int_range(end=length, eager=True)
|
2207
|
-
series =
|
2227
|
+
series = normal_rv(orig)
|
2208
2228
|
self._assert(series, length)
|
2209
2229
|
|
2210
2230
|
@given(length=hypothesis.strategies.integers(0, 10))
|
2211
2231
|
def test_dataframe(self, *, length: int) -> None:
|
2212
2232
|
df = int_range(end=length, eager=True).to_frame()
|
2213
|
-
series =
|
2233
|
+
series = normal_rv(df)
|
2214
2234
|
self._assert(series, length)
|
2215
2235
|
|
2216
2236
|
def _assert(self, series: Series, length: int, /) -> None:
|
@@ -3,11 +3,11 @@ from __future__ import annotations
|
|
3
3
|
from hypothesis import given
|
4
4
|
from hypothesis.strategies import sampled_from
|
5
5
|
from numpy import isclose
|
6
|
-
from polars import DataFrame, Float64, Series,
|
6
|
+
from polars import DataFrame, Float64, Series, col, mean_horizontal
|
7
7
|
from polars.testing import assert_frame_equal
|
8
8
|
from sklearn.linear_model import LinearRegression
|
9
9
|
|
10
|
-
from utilities.polars import concat_series, integers,
|
10
|
+
from utilities.polars import concat_series, integers, normal_rv, struct_dtype
|
11
11
|
from utilities.polars_ols import compute_rolling_ols
|
12
12
|
|
13
13
|
|
@@ -77,7 +77,7 @@ class TestComputeRollingOLS:
|
|
77
77
|
integers(n, -100, high=100, seed=0).alias("x1"),
|
78
78
|
integers(n, -100, high=100, seed=1).alias("x2"),
|
79
79
|
).with_columns(
|
80
|
-
(
|
80
|
+
y=mean_horizontal("x1", 2 * col.x2, normal_rv(n, scale=10.0, seed=2))
|
81
81
|
)
|
82
82
|
|
83
83
|
def _assert_series(self, series: Series, /) -> None:
|
@@ -100,11 +100,7 @@ class TestComputeRollingOLS:
|
|
100
100
|
expected = DataFrame(
|
101
101
|
data=data,
|
102
102
|
schema={
|
103
|
-
"coefficients":
|
104
|
-
"x1": Float64,
|
105
|
-
"x2": Float64,
|
106
|
-
"const": Float64,
|
107
|
-
}),
|
103
|
+
"coefficients": struct_dtype(x1=Float64, x2=Float64, const=Float64),
|
108
104
|
"predictions": Float64,
|
109
105
|
"residuals": Float64,
|
110
106
|
"R2": Float64,
|
@@ -8,7 +8,7 @@ from contextlib import (
|
|
8
8
|
asynccontextmanager,
|
9
9
|
contextmanager,
|
10
10
|
)
|
11
|
-
from functools import partial
|
11
|
+
from functools import partial, wraps
|
12
12
|
from signal import SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM, getsignal, signal
|
13
13
|
from typing import TYPE_CHECKING, Any, assert_never, cast, overload
|
14
14
|
|
@@ -77,6 +77,7 @@ def enhanced_context_manager[**P, T_co](
|
|
77
77
|
make_gcm = contextmanager(func)
|
78
78
|
|
79
79
|
@contextmanager
|
80
|
+
@wraps(func)
|
80
81
|
def wrapped(*args: P.args, **kwargs: P.kwargs) -> Iterator[T_co]:
|
81
82
|
gcm = make_gcm(*args, **kwargs)
|
82
83
|
sigabrt0 = _swap_handler(SIGABRT, gcm) if sigabrt else None
|
@@ -159,6 +160,7 @@ def enhanced_async_context_manager[**P, T_co](
|
|
159
160
|
make_agcm = asynccontextmanager(func)
|
160
161
|
|
161
162
|
@asynccontextmanager
|
163
|
+
@wraps(func)
|
162
164
|
async def wrapped(*args: P.args, **kwargs: P.kwargs) -> AsyncIterator[T_co]:
|
163
165
|
agcm = make_agcm(*args, **kwargs)
|
164
166
|
sigabrt0 = _swap_handler(SIGABRT, agcm) if sigabrt else None
|
@@ -412,6 +412,8 @@ def float32s(
|
|
412
412
|
*,
|
413
413
|
min_value: MaybeSearchStrategy[float | None] = None,
|
414
414
|
max_value: MaybeSearchStrategy[float | None] = None,
|
415
|
+
exclude_min: MaybeSearchStrategy[bool] = False,
|
416
|
+
exclude_max: MaybeSearchStrategy[bool] = False,
|
415
417
|
) -> float:
|
416
418
|
"""Strategy for generating float32s."""
|
417
419
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
@@ -419,7 +421,16 @@ def float32s(
|
|
419
421
|
max_value_ = min_nullable([max_value_, MAX_FLOAT32])
|
420
422
|
if is_zero(min_value_) and is_zero(max_value_):
|
421
423
|
min_value_ = max_value_ = 0.0
|
422
|
-
|
424
|
+
exclude_min_, exclude_max_ = [draw2(draw, e) for e in [exclude_min, exclude_max]]
|
425
|
+
return draw(
|
426
|
+
floats(
|
427
|
+
min_value_,
|
428
|
+
max_value_,
|
429
|
+
width=32,
|
430
|
+
exclude_min=exclude_min_,
|
431
|
+
exclude_max=exclude_max_,
|
432
|
+
)
|
433
|
+
)
|
423
434
|
|
424
435
|
|
425
436
|
@composite
|
@@ -429,6 +440,8 @@ def float64s(
|
|
429
440
|
*,
|
430
441
|
min_value: MaybeSearchStrategy[float | None] = None,
|
431
442
|
max_value: MaybeSearchStrategy[float | None] = None,
|
443
|
+
exclude_min: MaybeSearchStrategy[bool] = False,
|
444
|
+
exclude_max: MaybeSearchStrategy[bool] = False,
|
432
445
|
) -> float:
|
433
446
|
"""Strategy for generating float64s."""
|
434
447
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
@@ -436,7 +449,16 @@ def float64s(
|
|
436
449
|
max_value_ = min_nullable([max_value_, MAX_FLOAT64])
|
437
450
|
if is_zero(min_value_) and is_zero(max_value_):
|
438
451
|
min_value_ = max_value_ = 0.0
|
439
|
-
|
452
|
+
exclude_min_, exclude_max_ = [draw2(draw, e) for e in [exclude_min, exclude_max]]
|
453
|
+
return draw(
|
454
|
+
floats(
|
455
|
+
min_value_,
|
456
|
+
max_value_,
|
457
|
+
width=64,
|
458
|
+
exclude_min=exclude_min_,
|
459
|
+
exclude_max=exclude_max_,
|
460
|
+
)
|
461
|
+
)
|
440
462
|
|
441
463
|
|
442
464
|
##
|
@@ -6,7 +6,7 @@ from collections.abc import Set as AbstractSet
|
|
6
6
|
from dataclasses import asdict, dataclass
|
7
7
|
from functools import partial, reduce
|
8
8
|
from itertools import chain, pairwise, product
|
9
|
-
from math import ceil, log
|
9
|
+
from math import ceil, log, pi, sqrt
|
10
10
|
from pathlib import Path
|
11
11
|
from typing import TYPE_CHECKING, Any, Literal, assert_never, cast, overload, override
|
12
12
|
from uuid import UUID
|
@@ -1929,7 +1929,49 @@ def nan_sum_horizontal(*columns: IntoExprColumn) -> ExprOrSeries:
|
|
1929
1929
|
##
|
1930
1930
|
|
1931
1931
|
|
1932
|
-
|
1932
|
+
@overload
|
1933
|
+
def normal_pdf(
|
1934
|
+
x: ExprLike,
|
1935
|
+
/,
|
1936
|
+
*,
|
1937
|
+
loc: float | IntoExprColumn = 0.0,
|
1938
|
+
scale: float | IntoExprColumn = 1.0,
|
1939
|
+
) -> Expr: ...
|
1940
|
+
@overload
|
1941
|
+
def normal_pdf(
|
1942
|
+
x: Series,
|
1943
|
+
/,
|
1944
|
+
*,
|
1945
|
+
loc: float | IntoExprColumn = 0.0,
|
1946
|
+
scale: float | IntoExprColumn = 1.0,
|
1947
|
+
) -> Series: ...
|
1948
|
+
@overload
|
1949
|
+
def normal_pdf(
|
1950
|
+
x: IntoExprColumn,
|
1951
|
+
/,
|
1952
|
+
*,
|
1953
|
+
loc: float | IntoExprColumn = 0.0,
|
1954
|
+
scale: float | IntoExprColumn = 1.0,
|
1955
|
+
) -> ExprOrSeries: ...
|
1956
|
+
def normal_pdf(
|
1957
|
+
x: IntoExprColumn,
|
1958
|
+
/,
|
1959
|
+
*,
|
1960
|
+
loc: float | IntoExprColumn = 0.0,
|
1961
|
+
scale: float | IntoExprColumn = 1.0,
|
1962
|
+
) -> ExprOrSeries:
|
1963
|
+
"""Compute the PDF of a normal distribution."""
|
1964
|
+
x = ensure_expr_or_series(x)
|
1965
|
+
loc = loc if isinstance(loc, int | float) else ensure_expr_or_series(loc)
|
1966
|
+
scale = scale if isinstance(scale, int | float) else ensure_expr_or_series(scale)
|
1967
|
+
expr = (1 / (scale * sqrt(2 * pi))) * (-(1 / 2) * ((x - loc) / scale) ** 2).exp()
|
1968
|
+
return try_reify_expr(expr, x)
|
1969
|
+
|
1970
|
+
|
1971
|
+
##
|
1972
|
+
|
1973
|
+
|
1974
|
+
def normal_rv(
|
1933
1975
|
obj: int | Series | DataFrame,
|
1934
1976
|
/,
|
1935
1977
|
*,
|
@@ -1948,11 +1990,11 @@ def normal(
|
|
1948
1990
|
values = rng.normal(loc=loc, scale=scale, size=height)
|
1949
1991
|
return Series(name=name, values=values, dtype=dtype)
|
1950
1992
|
case Series() as series:
|
1951
|
-
return
|
1993
|
+
return normal_rv(
|
1952
1994
|
series.len(), loc=loc, scale=scale, seed=seed, name=name, dtype=dtype
|
1953
1995
|
)
|
1954
1996
|
case DataFrame() as df:
|
1955
|
-
return
|
1997
|
+
return normal_rv(
|
1956
1998
|
df.height, loc=loc, scale=scale, seed=seed, name=name, dtype=dtype
|
1957
1999
|
)
|
1958
2000
|
case never:
|
@@ -1964,22 +2006,22 @@ def normal(
|
|
1964
2006
|
|
1965
2007
|
@overload
|
1966
2008
|
def number_of_decimals(
|
1967
|
-
|
2009
|
+
column: ExprLike, /, *, max_decimals: int = MAX_DECIMALS
|
1968
2010
|
) -> Expr: ...
|
1969
2011
|
@overload
|
1970
2012
|
def number_of_decimals(
|
1971
|
-
|
2013
|
+
column: Series, /, *, max_decimals: int = MAX_DECIMALS
|
1972
2014
|
) -> Series: ...
|
1973
2015
|
@overload
|
1974
2016
|
def number_of_decimals(
|
1975
|
-
|
2017
|
+
column: IntoExprColumn, /, *, max_decimals: int = MAX_DECIMALS
|
1976
2018
|
) -> ExprOrSeries: ...
|
1977
2019
|
def number_of_decimals(
|
1978
|
-
|
2020
|
+
column: IntoExprColumn, /, *, max_decimals: int = MAX_DECIMALS
|
1979
2021
|
) -> ExprOrSeries:
|
1980
2022
|
"""Get the number of decimals."""
|
1981
|
-
|
1982
|
-
frac =
|
2023
|
+
column = ensure_expr_or_series(column)
|
2024
|
+
frac = column - column.floor()
|
1983
2025
|
results = (
|
1984
2026
|
_number_of_decimals_check_scale(frac, s) for s in range(max_decimals + 1)
|
1985
2027
|
)
|
@@ -2697,7 +2739,8 @@ __all__ = [
|
|
2697
2739
|
"map_over_columns",
|
2698
2740
|
"nan_sum_agg",
|
2699
2741
|
"nan_sum_horizontal",
|
2700
|
-
"
|
2742
|
+
"normal_pdf",
|
2743
|
+
"normal_rv",
|
2701
2744
|
"number_of_decimals",
|
2702
2745
|
"offset_datetime",
|
2703
2746
|
"one_column",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.164.1 → dycw_utilities-0.165.1}/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
|
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
|