dycw-utilities 0.159.2__tar.gz → 0.159.4__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.159.2 → dycw_utilities-0.159.4}/PKG-INFO +1 -1
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/pyproject.toml +2 -2
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_math.py +14 -16
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_polars.py +31 -32
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/math.py +5 -1
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/polars.py +62 -56
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/types.py +4 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/.gitignore +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/LICENSE +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/README.md +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/click.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/http.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/json.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/os.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/random.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/re.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/string.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/text.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/version.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/utilities/zoneinfo.py +0 -0
@@ -227,7 +227,7 @@ dependencies = [
|
|
227
227
|
name = "dycw-utilities"
|
228
228
|
readme = "README.md"
|
229
229
|
requires-python = ">= 3.12"
|
230
|
-
version = "0.159.
|
230
|
+
version = "0.159.4"
|
231
231
|
|
232
232
|
[project.entry-points.pytest11]
|
233
233
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -259,7 +259,7 @@ test = [
|
|
259
259
|
# bump-my-version
|
260
260
|
[tool.bumpversion]
|
261
261
|
allow_dirty = true
|
262
|
-
current_version = "0.159.
|
262
|
+
current_version = "0.159.4"
|
263
263
|
|
264
264
|
[[tool.bumpversion.files]]
|
265
265
|
filename = "src/utilities/__init__.py"
|
@@ -843,22 +843,20 @@ class TestMaxLongAndDouble:
|
|
843
843
|
|
844
844
|
class TestNumberOfDecimals:
|
845
845
|
max_int: ClassVar[int] = int(1e6)
|
846
|
+
cases: ClassVar[list[tuple[float, int]]] = [
|
847
|
+
(0.0, 0),
|
848
|
+
(0.1, 1),
|
849
|
+
(0.12, 2),
|
850
|
+
(0.123, 3),
|
851
|
+
(0.1234, 4),
|
852
|
+
(0.12345, 5),
|
853
|
+
(0.123456, 6),
|
854
|
+
(0.1234567, 7),
|
855
|
+
(0.12345678, 8),
|
856
|
+
(0.123456789, 9),
|
857
|
+
]
|
846
858
|
|
847
|
-
@given(
|
848
|
-
integer=integers(-max_int, max_int),
|
849
|
-
case=sampled_from([
|
850
|
-
(0.0, 0),
|
851
|
-
(0.1, 1),
|
852
|
-
(0.12, 2),
|
853
|
-
(0.123, 3),
|
854
|
-
(0.1234, 4),
|
855
|
-
(0.12345, 5),
|
856
|
-
(0.123456, 6),
|
857
|
-
(0.1234567, 7),
|
858
|
-
(0.12345678, 8),
|
859
|
-
(0.123456789, 9),
|
860
|
-
]),
|
861
|
-
)
|
859
|
+
@given(integer=integers(-max_int, max_int), case=sampled_from(cases))
|
862
860
|
def test_main(self, *, integer: int, case: tuple[float, int]) -> None:
|
863
861
|
frac, expected = case
|
864
862
|
x = integer + frac
|
@@ -870,7 +868,7 @@ class TestNumberOfDecimals:
|
|
870
868
|
with raises(
|
871
869
|
NumberOfDecimalsError,
|
872
870
|
match=escape(
|
873
|
-
"Could not determine number of decimals of 1.401298464324817e-45 (up to
|
871
|
+
"Could not determine number of decimals of 1.401298464324817e-45 (up to 10)"
|
874
872
|
),
|
875
873
|
):
|
876
874
|
_ = number_of_decimals(x)
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
3
3
|
import datetime as dt
|
4
4
|
import enum
|
5
5
|
import itertools
|
6
|
+
import math
|
6
7
|
from dataclasses import dataclass, field
|
7
8
|
from enum import auto
|
8
9
|
from itertools import chain, repeat
|
@@ -59,6 +60,7 @@ from pytest import mark, param, raises
|
|
59
60
|
from whenever import DateDelta, DateTimeDelta, PlainDateTime, TimeDelta, ZonedDateTime
|
60
61
|
|
61
62
|
import tests.test_math
|
63
|
+
import utilities.math
|
62
64
|
import utilities.polars
|
63
65
|
from utilities.hypothesis import (
|
64
66
|
date_deltas,
|
@@ -77,7 +79,6 @@ from utilities.hypothesis import (
|
|
77
79
|
zoned_date_time_periods,
|
78
80
|
zoned_date_times,
|
79
81
|
)
|
80
|
-
from utilities.math import number_of_decimals
|
81
82
|
from utilities.numpy import DEFAULT_RNG
|
82
83
|
from utilities.pathlib import PWD
|
83
84
|
from utilities.polars import (
|
@@ -122,8 +123,6 @@ from utilities.polars import (
|
|
122
123
|
_GetDataTypeOrSeriesTimeZoneNotDateTimeError,
|
123
124
|
_GetDataTypeOrSeriesTimeZoneNotZonedError,
|
124
125
|
_GetDataTypeOrSeriesTimeZoneStructNonUniqueError,
|
125
|
-
_GetSeriesNumberOfDecimalsAllNullError,
|
126
|
-
_GetSeriesNumberOfDecimalsNotFloatError,
|
127
126
|
_InsertBetweenMissingColumnsError,
|
128
127
|
_InsertBetweenNonConsecutiveError,
|
129
128
|
_IsNearEventAfterError,
|
@@ -168,7 +167,6 @@ from utilities.polars import (
|
|
168
167
|
get_data_type_or_series_time_zone,
|
169
168
|
get_expr_name,
|
170
169
|
get_frequency_spectrum,
|
171
|
-
get_series_number_of_decimals,
|
172
170
|
increasing_horizontal,
|
173
171
|
insert_after,
|
174
172
|
insert_before,
|
@@ -182,6 +180,7 @@ from utilities.polars import (
|
|
182
180
|
nan_sum_agg,
|
183
181
|
nan_sum_cols,
|
184
182
|
normal,
|
183
|
+
number_of_decimals,
|
185
184
|
offset_datetime,
|
186
185
|
one_column,
|
187
186
|
order_of_magnitude,
|
@@ -1659,34 +1658,6 @@ class TestGetFrequencySpectrum:
|
|
1659
1658
|
assert allclose(result.filter(col("frequency").abs() > 0.02)["amplitude"], 0.0)
|
1660
1659
|
|
1661
1660
|
|
1662
|
-
class TestGetSeriesNumberOfDecimals:
|
1663
|
-
@given(data=data(), n=hypothesis.strategies.integers(1, 10), nullable=booleans())
|
1664
|
-
def test_main(self, *, data: DataObject, n: int, nullable: bool) -> None:
|
1665
|
-
strategy = int64s() | none() if nullable else int64s()
|
1666
|
-
ints_or_none = data.draw(lists(strategy, min_size=1, max_size=10))
|
1667
|
-
values = [None if i is None else i / 10**n for i in ints_or_none]
|
1668
|
-
series = Series(values=values, dtype=Float64)
|
1669
|
-
result = get_series_number_of_decimals(series, nullable=nullable)
|
1670
|
-
if not nullable:
|
1671
|
-
assert result is not None
|
1672
|
-
expected = max(number_of_decimals(v) for v in values if v is not None)
|
1673
|
-
assert result == expected
|
1674
|
-
|
1675
|
-
def test_error_not_float(self) -> None:
|
1676
|
-
with raises(
|
1677
|
-
_GetSeriesNumberOfDecimalsNotFloatError,
|
1678
|
-
match="Data type must be Float64; got Boolean",
|
1679
|
-
):
|
1680
|
-
_ = get_series_number_of_decimals(Series(dtype=Boolean))
|
1681
|
-
|
1682
|
-
def test_error_not_zoned(self) -> None:
|
1683
|
-
with raises(
|
1684
|
-
_GetSeriesNumberOfDecimalsAllNullError,
|
1685
|
-
match="Series must not be all-null; got .*",
|
1686
|
-
):
|
1687
|
-
_ = get_series_number_of_decimals(Series(dtype=Float64))
|
1688
|
-
|
1689
|
-
|
1690
1661
|
class TestIncreasingAndDecreasingHorizontal:
|
1691
1662
|
def test_main(self) -> None:
|
1692
1663
|
df = DataFrame(
|
@@ -1828,6 +1799,18 @@ class TestIntegers:
|
|
1828
1799
|
assert series.is_between(0, high, closed="left").all()
|
1829
1800
|
|
1830
1801
|
|
1802
|
+
class TestIsClose:
|
1803
|
+
@given(values=pairs(float64s()), rel_tol=floats(0.0, 1.0), abs_tol=floats(0.0, 1.0))
|
1804
|
+
def test_main(
|
1805
|
+
self, *, values: tuple[float, float], rel_tol: float, abs_tol: float
|
1806
|
+
) -> None:
|
1807
|
+
x, y = values
|
1808
|
+
x_sr, y_sr = [Series(values=[i], dtype=Float64) for i in values]
|
1809
|
+
result = utilities.polars.is_close(x_sr, y_sr, rel_tol=rel_tol, abs_tol=abs_tol)
|
1810
|
+
expected = math.isclose(x, y, rel_tol=rel_tol, abs_tol=abs_tol)
|
1811
|
+
assert result.item() is expected
|
1812
|
+
|
1813
|
+
|
1831
1814
|
class TestIsNearEvent:
|
1832
1815
|
df: ClassVar[DataFrame] = DataFrame(
|
1833
1816
|
data=[
|
@@ -2248,6 +2231,22 @@ class TestNormal:
|
|
2248
2231
|
assert series.is_finite().all()
|
2249
2232
|
|
2250
2233
|
|
2234
|
+
class TestNumberOfDecimals:
|
2235
|
+
@given(
|
2236
|
+
integer=hypothesis.strategies.integers(
|
2237
|
+
-tests.test_math.TestNumberOfDecimals.max_int,
|
2238
|
+
tests.test_math.TestNumberOfDecimals.max_int,
|
2239
|
+
),
|
2240
|
+
case=sampled_from(tests.test_math.TestNumberOfDecimals.cases),
|
2241
|
+
)
|
2242
|
+
def test_main(self, *, integer: int, case: tuple[float, int]) -> None:
|
2243
|
+
frac, expected = case
|
2244
|
+
x = integer + frac
|
2245
|
+
series = Series(name="x", values=[x], dtype=Float64)
|
2246
|
+
result = number_of_decimals(series)
|
2247
|
+
assert result.item() == expected
|
2248
|
+
|
2249
|
+
|
2251
2250
|
class TestOffsetDateTime:
|
2252
2251
|
@mark.parametrize(
|
2253
2252
|
("n", "time"), [param(1, whenever.Time(13, 30)), param(2, whenever.Time(15))]
|
@@ -641,7 +641,10 @@ def _is_close(
|
|
641
641
|
##
|
642
642
|
|
643
643
|
|
644
|
-
|
644
|
+
MAX_DECIMALS = 10
|
645
|
+
|
646
|
+
|
647
|
+
def number_of_decimals(x: float, /, *, max_decimals: int = MAX_DECIMALS) -> int:
|
645
648
|
"""Get the number of decimals."""
|
646
649
|
_, frac = divmod(x, 1)
|
647
650
|
results = (
|
@@ -889,6 +892,7 @@ def significant_figures(x: float, /, *, n: int = 2) -> str:
|
|
889
892
|
|
890
893
|
|
891
894
|
__all__ = [
|
895
|
+
"MAX_DECIMALS",
|
892
896
|
"MAX_FLOAT32",
|
893
897
|
"MAX_FLOAT64",
|
894
898
|
"MAX_INT8",
|
@@ -36,6 +36,7 @@ from polars import (
|
|
36
36
|
datetime_range,
|
37
37
|
int_range,
|
38
38
|
lit,
|
39
|
+
max_horizontal,
|
39
40
|
struct,
|
40
41
|
sum_horizontal,
|
41
42
|
when,
|
@@ -52,11 +53,10 @@ from polars.schema import Schema
|
|
52
53
|
from polars.testing import assert_frame_equal, assert_series_equal
|
53
54
|
from whenever import DateDelta, DateTimeDelta, PlainDateTime, TimeDelta, ZonedDateTime
|
54
55
|
|
56
|
+
import utilities.math
|
55
57
|
from utilities.dataclasses import yield_fields
|
56
58
|
from utilities.errors import ImpossibleCaseError
|
57
59
|
from utilities.functions import (
|
58
|
-
EnsureIntError,
|
59
|
-
ensure_int,
|
60
60
|
is_dataclass_class,
|
61
61
|
is_dataclass_instance,
|
62
62
|
make_isinstance,
|
@@ -79,12 +79,12 @@ from utilities.iterables import (
|
|
79
79
|
)
|
80
80
|
from utilities.json import write_formatted_json
|
81
81
|
from utilities.math import (
|
82
|
+
MAX_DECIMALS,
|
82
83
|
CheckIntegerError,
|
83
84
|
check_integer,
|
84
85
|
ewm_parameters,
|
85
86
|
is_less_than,
|
86
87
|
is_non_negative,
|
87
|
-
number_of_decimals,
|
88
88
|
)
|
89
89
|
from utilities.reprlib import get_repr
|
90
90
|
from utilities.types import MaybeStr, Number, PathLike, WeekDay
|
@@ -1426,56 +1426,6 @@ def get_frequency_spectrum(series: Series, /, *, d: int = 1) -> DataFrame:
|
|
1426
1426
|
##
|
1427
1427
|
|
1428
1428
|
|
1429
|
-
@overload
|
1430
|
-
def get_series_number_of_decimals(
|
1431
|
-
series: Series, /, *, nullable: Literal[True]
|
1432
|
-
) -> int | None: ...
|
1433
|
-
@overload
|
1434
|
-
def get_series_number_of_decimals(
|
1435
|
-
series: Series, /, *, nullable: Literal[False] = False
|
1436
|
-
) -> int: ...
|
1437
|
-
@overload
|
1438
|
-
def get_series_number_of_decimals(
|
1439
|
-
series: Series, /, *, nullable: bool = False
|
1440
|
-
) -> int | None: ...
|
1441
|
-
def get_series_number_of_decimals(
|
1442
|
-
series: Series, /, *, nullable: bool = False
|
1443
|
-
) -> int | None:
|
1444
|
-
"""Get the number of decimals of a series."""
|
1445
|
-
if not isinstance(dtype := series.dtype, Float64):
|
1446
|
-
raise _GetSeriesNumberOfDecimalsNotFloatError(dtype=dtype)
|
1447
|
-
decimals = series.map_elements(number_of_decimals, return_dtype=Int64).max()
|
1448
|
-
try:
|
1449
|
-
return ensure_int(decimals, nullable=nullable)
|
1450
|
-
except EnsureIntError:
|
1451
|
-
raise _GetSeriesNumberOfDecimalsAllNullError(series=series) from None
|
1452
|
-
|
1453
|
-
|
1454
|
-
@dataclass(kw_only=True, slots=True)
|
1455
|
-
class GetSeriesNumberOfDecimalsError(Exception): ...
|
1456
|
-
|
1457
|
-
|
1458
|
-
@dataclass(kw_only=True, slots=True)
|
1459
|
-
class _GetSeriesNumberOfDecimalsNotFloatError(GetSeriesNumberOfDecimalsError):
|
1460
|
-
dtype: DataType
|
1461
|
-
|
1462
|
-
@override
|
1463
|
-
def __str__(self) -> str:
|
1464
|
-
return f"Data type must be Float64; got {self.dtype}"
|
1465
|
-
|
1466
|
-
|
1467
|
-
@dataclass(kw_only=True, slots=True)
|
1468
|
-
class _GetSeriesNumberOfDecimalsAllNullError(GetSeriesNumberOfDecimalsError):
|
1469
|
-
series: Series
|
1470
|
-
|
1471
|
-
@override
|
1472
|
-
def __str__(self) -> str:
|
1473
|
-
return f"Series must not be all-null; got {self.series}"
|
1474
|
-
|
1475
|
-
|
1476
|
-
##
|
1477
|
-
|
1478
|
-
|
1479
1429
|
@overload
|
1480
1430
|
def increasing_horizontal(*columns: ExprLike) -> Expr: ...
|
1481
1431
|
@overload
|
@@ -1641,6 +1591,42 @@ def integers(
|
|
1641
1591
|
##
|
1642
1592
|
|
1643
1593
|
|
1594
|
+
@overload
|
1595
|
+
def is_close(
|
1596
|
+
x: ExprLike, y: ExprLike, /, *, rel_tol: float = 1e-9, abs_tol: float = 0
|
1597
|
+
) -> Expr: ...
|
1598
|
+
@overload
|
1599
|
+
def is_close(
|
1600
|
+
x: Series, y: Series, /, *, rel_tol: float = 1e-9, abs_tol: float = 0
|
1601
|
+
) -> Series: ...
|
1602
|
+
@overload
|
1603
|
+
def is_close(
|
1604
|
+
x: IntoExprColumn,
|
1605
|
+
y: IntoExprColumn,
|
1606
|
+
/,
|
1607
|
+
*,
|
1608
|
+
rel_tol: float = 1e-9,
|
1609
|
+
abs_tol: float = 0,
|
1610
|
+
) -> ExprOrSeries: ...
|
1611
|
+
def is_close(
|
1612
|
+
x: IntoExprColumn,
|
1613
|
+
y: IntoExprColumn,
|
1614
|
+
/,
|
1615
|
+
*,
|
1616
|
+
rel_tol: float = 1e-9,
|
1617
|
+
abs_tol: float = 0,
|
1618
|
+
) -> ExprOrSeries:
|
1619
|
+
"""Check if two columns are close."""
|
1620
|
+
x, y = map(ensure_expr_or_series, [x, y])
|
1621
|
+
result = (x - y).abs() <= max_horizontal(
|
1622
|
+
rel_tol * max_horizontal(x.abs(), y.abs()), abs_tol
|
1623
|
+
)
|
1624
|
+
return try_reify_expr(result, x, y)
|
1625
|
+
|
1626
|
+
|
1627
|
+
##
|
1628
|
+
|
1629
|
+
|
1644
1630
|
@overload
|
1645
1631
|
def is_near_event(
|
1646
1632
|
*exprs: ExprLike, before: int = 0, after: int = 0, **named_exprs: ExprLike
|
@@ -1986,6 +1972,26 @@ def normal(
|
|
1986
1972
|
##
|
1987
1973
|
|
1988
1974
|
|
1975
|
+
def number_of_decimals(
|
1976
|
+
series: Series, /, *, max_decimals: int = MAX_DECIMALS
|
1977
|
+
) -> Series:
|
1978
|
+
"""Get the number of decimals."""
|
1979
|
+
frac = series - series.floor()
|
1980
|
+
results = [
|
1981
|
+
_number_of_decimals_check_scale(frac, s) for s in range(max_decimals + 1)
|
1982
|
+
]
|
1983
|
+
df_results = concat_series(*results)
|
1984
|
+
return first_true_horizontal(df_results)
|
1985
|
+
|
1986
|
+
|
1987
|
+
def _number_of_decimals_check_scale(frac: Series, scale: int, /) -> Series:
|
1988
|
+
scaled = 10**scale * frac
|
1989
|
+
return is_close(scaled, scaled.round()).alias(str(scale))
|
1990
|
+
|
1991
|
+
|
1992
|
+
##
|
1993
|
+
|
1994
|
+
|
1989
1995
|
def offset_datetime(
|
1990
1996
|
datetime: ZonedDateTime, offset: str, /, *, n: int = 1
|
1991
1997
|
) -> ZonedDateTime:
|
@@ -2352,7 +2358,7 @@ def round_to_float(
|
|
2352
2358
|
"""Round a column to the nearest multiple of another float."""
|
2353
2359
|
x = ensure_expr_or_series(x)
|
2354
2360
|
z = (x / y).round(mode=mode) * y
|
2355
|
-
return z.round(decimals=number_of_decimals(y) + 1)
|
2361
|
+
return z.round(decimals=utilities.math.number_of_decimals(y) + 1)
|
2356
2362
|
|
2357
2363
|
|
2358
2364
|
##
|
@@ -2558,7 +2564,6 @@ __all__ = [
|
|
2558
2564
|
"ExprOrSeries",
|
2559
2565
|
"FiniteEWMMeanError",
|
2560
2566
|
"GetDataTypeOrSeriesTimeZoneError",
|
2561
|
-
"GetSeriesNumberOfDecimalsError",
|
2562
2567
|
"InsertAfterError",
|
2563
2568
|
"InsertBeforeError",
|
2564
2569
|
"InsertBetweenError",
|
@@ -2597,12 +2602,12 @@ __all__ = [
|
|
2597
2602
|
"get_data_type_or_series_time_zone",
|
2598
2603
|
"get_expr_name",
|
2599
2604
|
"get_frequency_spectrum",
|
2600
|
-
"get_series_number_of_decimals",
|
2601
2605
|
"increasing_horizontal",
|
2602
2606
|
"insert_after",
|
2603
2607
|
"insert_before",
|
2604
2608
|
"insert_between",
|
2605
2609
|
"integers",
|
2610
|
+
"is_close",
|
2606
2611
|
"is_false",
|
2607
2612
|
"is_near_event",
|
2608
2613
|
"is_true",
|
@@ -2612,6 +2617,7 @@ __all__ = [
|
|
2612
2617
|
"nan_sum_agg",
|
2613
2618
|
"nan_sum_cols",
|
2614
2619
|
"normal",
|
2620
|
+
"number_of_decimals",
|
2615
2621
|
"offset_datetime",
|
2616
2622
|
"one_column",
|
2617
2623
|
"order_of_magnitude",
|
@@ -79,6 +79,9 @@ type MaybeCoro[T] = T | Coro[T]
|
|
79
79
|
|
80
80
|
|
81
81
|
# collections.abc
|
82
|
+
type SupportsFloatOrIndex = SupportsFloat | SupportsIndex
|
83
|
+
|
84
|
+
|
82
85
|
@runtime_checkable
|
83
86
|
class SupportsKeysAndGetItem(Protocol[_T, _T_co]):
|
84
87
|
def keys(self) -> Iterable[_T]: ... # pragma: no cover
|
@@ -328,6 +331,7 @@ __all__ = [
|
|
328
331
|
"SupportsBytes",
|
329
332
|
"SupportsComplex",
|
330
333
|
"SupportsFloat",
|
334
|
+
"SupportsFloatOrIndex",
|
331
335
|
"SupportsGT",
|
332
336
|
"SupportsInt",
|
333
337
|
"SupportsInt",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/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.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.159.2 → dycw_utilities-0.159.4}/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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|