dycw-utilities 0.109.16__tar.gz → 0.109.17__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.16 → dycw_utilities-0.109.17}/PKG-INFO +1 -1
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/pyproject.toml +2 -2
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_hypothesis.py +2 -1
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_numpy.py +73 -1
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_orjson.py +2 -1
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/numpy.py +89 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/.gitignore +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/LICENSE +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/README.md +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/click.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/git.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/http.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/math.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/os.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/period.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/random.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/re.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/text.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/types.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/version.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/utilities/zoneinfo.py +0 -0
@@ -92,7 +92,7 @@ dependencies = [
|
|
92
92
|
name = "dycw-utilities"
|
93
93
|
readme = "README.md"
|
94
94
|
requires-python = ">= 3.12"
|
95
|
-
version = "0.109.
|
95
|
+
version = "0.109.17"
|
96
96
|
|
97
97
|
[project.optional-dependencies]
|
98
98
|
test = [
|
@@ -335,7 +335,7 @@ zzz-test-zoneinfo = [
|
|
335
335
|
# bump-my-version
|
336
336
|
[tool.bumpversion]
|
337
337
|
allow_dirty = true
|
338
|
-
current_version = "0.109.
|
338
|
+
current_version = "0.109.17"
|
339
339
|
|
340
340
|
[[tool.bumpversion.files]]
|
341
341
|
filename = "src/utilities/__init__.py"
|
@@ -29,7 +29,7 @@ from hypothesis.strategies import (
|
|
29
29
|
from luigi import Task
|
30
30
|
from numpy import inf, int64, isfinite, isinf, isnan, ravel, rint
|
31
31
|
from pathvalidate import validate_filepath
|
32
|
-
from pytest import raises
|
32
|
+
from pytest import mark, raises
|
33
33
|
from sqlalchemy import Column, Integer, MetaData, Table, insert, select
|
34
34
|
from sqlalchemy.ext.asyncio import AsyncEngine
|
35
35
|
|
@@ -1033,6 +1033,7 @@ class TestTempPaths:
|
|
1033
1033
|
assert len(set(path.iterdir())) == 0
|
1034
1034
|
|
1035
1035
|
@given(path=temp_paths(), contents=sets(text_ascii(min_size=1), max_size=10))
|
1036
|
+
@mark.flaky
|
1036
1037
|
def test_writing_files(self, *, path: Path, contents: AbstractSet[str]) -> None:
|
1037
1038
|
assert len(set(path.iterdir())) == 0
|
1038
1039
|
as_set = set(maybe_yield_lower_case(contents))
|
@@ -27,7 +27,7 @@ from numpy.random import Generator
|
|
27
27
|
from numpy.testing import assert_equal
|
28
28
|
from pytest import mark, param, raises
|
29
29
|
|
30
|
-
from utilities.hypothesis import float_arrays
|
30
|
+
from utilities.hypothesis import float_arrays, pairs
|
31
31
|
from utilities.numpy import (
|
32
32
|
DEFAULT_RNG,
|
33
33
|
AsIntError,
|
@@ -36,8 +36,13 @@ from utilities.numpy import (
|
|
36
36
|
NDArrayF,
|
37
37
|
NDArrayI,
|
38
38
|
ShiftError,
|
39
|
+
SigmoidError,
|
40
|
+
_BoxCarLocationsError,
|
41
|
+
_BoxCarLowerBoundSlopeError,
|
42
|
+
_BoxCarUpperBoundSlopeError,
|
39
43
|
array_indexer,
|
40
44
|
as_int,
|
45
|
+
boxcar,
|
41
46
|
discretize,
|
42
47
|
fillna,
|
43
48
|
filter_frequencies,
|
@@ -94,6 +99,7 @@ from utilities.numpy import (
|
|
94
99
|
minimum,
|
95
100
|
shift,
|
96
101
|
shift_bool,
|
102
|
+
sigmoid,
|
97
103
|
)
|
98
104
|
|
99
105
|
if TYPE_CHECKING:
|
@@ -252,6 +258,56 @@ class TestDiscretize:
|
|
252
258
|
assert_equal(result, expected)
|
253
259
|
|
254
260
|
|
261
|
+
class TestBoxCar:
|
262
|
+
@given(
|
263
|
+
locs=pairs(floats(-10.0, 10.0), sorted=True),
|
264
|
+
slope_low=floats(0.1, 10.0),
|
265
|
+
slope_high=floats(0.1, 10.0),
|
266
|
+
)
|
267
|
+
def test_main(
|
268
|
+
self, *, locs: tuple[float, float], slope_low: float, slope_high: float
|
269
|
+
) -> None:
|
270
|
+
loc_low, loc_high = locs
|
271
|
+
n = 1000
|
272
|
+
x = linspace(0, 2 * pi, n)
|
273
|
+
y = boxcar(
|
274
|
+
x,
|
275
|
+
loc_low=loc_low,
|
276
|
+
slope_low=slope_low,
|
277
|
+
loc_high=loc_high,
|
278
|
+
slope_high=slope_high,
|
279
|
+
)
|
280
|
+
assert y.shape == (n,)
|
281
|
+
assert is_between(y, 0.0, 1.0).all()
|
282
|
+
|
283
|
+
def test_error_locations(self) -> None:
|
284
|
+
n = 1000
|
285
|
+
x = linspace(0, 2 * pi, n)
|
286
|
+
with raises(
|
287
|
+
_BoxCarLocationsError,
|
288
|
+
match="Location parameters must be consistent; got 1.0 and -1.0",
|
289
|
+
):
|
290
|
+
_ = boxcar(x, loc_low=1.0, loc_high=-1.0)
|
291
|
+
|
292
|
+
def test_error_lower_bound_slope(self) -> None:
|
293
|
+
n = 1000
|
294
|
+
x = linspace(0, 2 * pi, n)
|
295
|
+
with raises(
|
296
|
+
_BoxCarLowerBoundSlopeError,
|
297
|
+
match="Lower-bound slope parameter must be positive; got 0.0",
|
298
|
+
):
|
299
|
+
_ = boxcar(x, slope_low=0.0)
|
300
|
+
|
301
|
+
def test_error_upper_bound_slope(self) -> None:
|
302
|
+
n = 1000
|
303
|
+
x = linspace(0, 2 * pi, n)
|
304
|
+
with raises(
|
305
|
+
_BoxCarUpperBoundSlopeError,
|
306
|
+
match="Upper-bound slope parameter must be positive; got 0.0",
|
307
|
+
):
|
308
|
+
_ = boxcar(x, slope_high=0.0)
|
309
|
+
|
310
|
+
|
255
311
|
class TestFillNa:
|
256
312
|
@mark.parametrize(
|
257
313
|
("init", "value", "expected_v"),
|
@@ -1078,3 +1134,19 @@ class TestShiftBool:
|
|
1078
1134
|
[fill_value if e is None else e for e in expected_v], dtype=bool
|
1079
1135
|
)
|
1080
1136
|
assert_equal(result, expected)
|
1137
|
+
|
1138
|
+
|
1139
|
+
class TestSigmoid:
|
1140
|
+
@given(loc=floats(-10.0, 10.0), slope=floats(-10.0, -0.1) | floats(0.1, 10.0))
|
1141
|
+
def test_main(self, *, loc: float, slope: float) -> None:
|
1142
|
+
n = 1000
|
1143
|
+
x = linspace(0, 2 * pi, n)
|
1144
|
+
y = sigmoid(x, loc=loc, slope=slope)
|
1145
|
+
assert y.shape == (n,)
|
1146
|
+
assert is_between(y, 0.0, 1.0).all()
|
1147
|
+
|
1148
|
+
def test_error(self) -> None:
|
1149
|
+
n = 1000
|
1150
|
+
x = linspace(0, 2 * pi, n)
|
1151
|
+
with raises(SigmoidError, match="Slope must be non-zero"):
|
1152
|
+
_ = sigmoid(x, slope=0.0)
|
@@ -23,7 +23,7 @@ from hypothesis.strategies import (
|
|
23
23
|
)
|
24
24
|
from orjson import JSONDecodeError
|
25
25
|
from polars import Object, String, UInt64
|
26
|
-
from pytest import approx, raises
|
26
|
+
from pytest import approx, mark, raises
|
27
27
|
|
28
28
|
from tests.conftest import SKIPIF_CI_AND_WINDOWS
|
29
29
|
from tests.test_operator import (
|
@@ -204,6 +204,7 @@ class TestGetLogRecords:
|
|
204
204
|
min_log_file_line_num=integers() | none(),
|
205
205
|
max_log_file_line_num=integers() | none(),
|
206
206
|
)
|
207
|
+
@mark.flaky
|
207
208
|
def test_filter(
|
208
209
|
self,
|
209
210
|
*,
|
@@ -14,6 +14,7 @@ from numpy import (
|
|
14
14
|
digitize,
|
15
15
|
dtype,
|
16
16
|
errstate,
|
17
|
+
exp,
|
17
18
|
flatnonzero,
|
18
19
|
float64,
|
19
20
|
floating,
|
@@ -133,6 +134,65 @@ class AsIntError(Exception): ...
|
|
133
134
|
##
|
134
135
|
|
135
136
|
|
137
|
+
def boxcar(
|
138
|
+
array: NDArray[floating[Any]],
|
139
|
+
/,
|
140
|
+
*,
|
141
|
+
loc_low: float = -1.0,
|
142
|
+
slope_low: float = 1.0,
|
143
|
+
loc_high: float = 1.0,
|
144
|
+
slope_high: float = 1.0,
|
145
|
+
rtol: float | None = None,
|
146
|
+
atol: float | None = None,
|
147
|
+
) -> NDArray[floating[Any]]:
|
148
|
+
"""Construct a boxcar function."""
|
149
|
+
if not is_at_most(loc_low, loc_high, rtol=rtol, atol=atol):
|
150
|
+
raise _BoxCarLocationsError(low=loc_low, high=loc_high)
|
151
|
+
if not is_positive(slope_low, rtol=rtol, atol=atol):
|
152
|
+
raise _BoxCarLowerBoundSlopeError(slope=slope_low)
|
153
|
+
if not is_positive(slope_high, rtol=rtol, atol=atol):
|
154
|
+
raise _BoxCarUpperBoundSlopeError(slope=slope_high)
|
155
|
+
return (
|
156
|
+
sigmoid(array, loc=loc_low, slope=slope_low)
|
157
|
+
+ sigmoid(array, loc=loc_high, slope=-slope_high)
|
158
|
+
) / 2
|
159
|
+
|
160
|
+
|
161
|
+
@dataclass(kw_only=True, slots=True)
|
162
|
+
class BoxCarError(Exception): ...
|
163
|
+
|
164
|
+
|
165
|
+
@dataclass(kw_only=True, slots=True)
|
166
|
+
class _BoxCarLocationsError(BoxCarError):
|
167
|
+
low: float
|
168
|
+
high: float
|
169
|
+
|
170
|
+
@override
|
171
|
+
def __str__(self) -> str:
|
172
|
+
return f"Location parameters must be consistent; got {self.low} and {self.high}"
|
173
|
+
|
174
|
+
|
175
|
+
@dataclass(kw_only=True, slots=True)
|
176
|
+
class _BoxCarLowerBoundSlopeError(BoxCarError):
|
177
|
+
slope: float
|
178
|
+
|
179
|
+
@override
|
180
|
+
def __str__(self) -> str:
|
181
|
+
return f"Lower-bound slope parameter must be positive; got {self.slope}"
|
182
|
+
|
183
|
+
|
184
|
+
@dataclass(kw_only=True, slots=True)
|
185
|
+
class _BoxCarUpperBoundSlopeError(BoxCarError):
|
186
|
+
slope: float
|
187
|
+
|
188
|
+
@override
|
189
|
+
def __str__(self) -> str:
|
190
|
+
return f"Upper-bound slope parameter must be positive; got {self.slope}"
|
191
|
+
|
192
|
+
|
193
|
+
##
|
194
|
+
|
195
|
+
|
136
196
|
def discretize(x: NDArrayF, bins: int | Iterable[float], /) -> NDArrayF:
|
137
197
|
"""Discretize an array of floats.
|
138
198
|
|
@@ -847,6 +907,31 @@ def shift_bool(
|
|
847
907
|
##
|
848
908
|
|
849
909
|
|
910
|
+
def sigmoid(
|
911
|
+
array: NDArray[floating[Any]],
|
912
|
+
/,
|
913
|
+
*,
|
914
|
+
loc: float = 0.0,
|
915
|
+
slope: float = 1.0,
|
916
|
+
rtol: float | None = None,
|
917
|
+
atol: float | None = None,
|
918
|
+
) -> NDArray[floating[Any]]:
|
919
|
+
"""Construct a sigmoid function."""
|
920
|
+
if is_zero(slope, rtol=rtol, atol=atol):
|
921
|
+
raise SigmoidError
|
922
|
+
return 1 / (1 + exp(-slope * (array - loc)))
|
923
|
+
|
924
|
+
|
925
|
+
@dataclass(kw_only=True, slots=True)
|
926
|
+
class SigmoidError(Exception):
|
927
|
+
@override
|
928
|
+
def __str__(self) -> str:
|
929
|
+
return "Slope must be non-zero"
|
930
|
+
|
931
|
+
|
932
|
+
##
|
933
|
+
|
934
|
+
|
850
935
|
def _is_close(
|
851
936
|
x: Any,
|
852
937
|
y: Any,
|
@@ -869,6 +954,7 @@ def _is_close(
|
|
869
954
|
__all__ = [
|
870
955
|
"DEFAULT_RNG",
|
871
956
|
"AsIntError",
|
957
|
+
"BoxCarError",
|
872
958
|
"FlatN0EmptyError",
|
873
959
|
"FlatN0Error",
|
874
960
|
"FlatN0MultipleError",
|
@@ -878,8 +964,10 @@ __all__ = [
|
|
878
964
|
"NDArrayI",
|
879
965
|
"NDArrayO",
|
880
966
|
"ShiftError",
|
967
|
+
"SigmoidError",
|
881
968
|
"array_indexer",
|
882
969
|
"as_int",
|
970
|
+
"boxcar",
|
883
971
|
"datetime64D",
|
884
972
|
"datetime64M",
|
885
973
|
"datetime64W",
|
@@ -948,4 +1036,5 @@ __all__ = [
|
|
948
1036
|
"maximum",
|
949
1037
|
"minimum",
|
950
1038
|
"shift_bool",
|
1039
|
+
"sigmoid",
|
951
1040
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/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.16 → dycw_utilities-0.109.17}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/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.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_async_service/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/scripts/test_queue_processor/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/decorated_sync.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/error_bind.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/recursive.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/task_group_one.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/task_group_two.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_traceback_funcs/untraced.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.109.16 → dycw_utilities-0.109.17}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|