dycw-utilities 0.131.14__tar.gz → 0.131.15__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.131.14 → dycw_utilities-0.131.15}/PKG-INFO +1 -1
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/pyproject.toml +2 -2
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_luigi.py +16 -31
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/__init__.py +1 -1
- dycw_utilities-0.131.15/src/utilities/luigi.py +195 -0
- dycw_utilities-0.131.14/src/utilities/luigi.py +0 -228
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/.gitignore +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/LICENSE +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/README.md +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_whenever2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/whenever2.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/utilities/zoneinfo.py +0 -0
@@ -95,7 +95,7 @@ dependencies = [
|
|
95
95
|
name = "dycw-utilities"
|
96
96
|
readme = "README.md"
|
97
97
|
requires-python = ">= 3.12"
|
98
|
-
version = "0.131.
|
98
|
+
version = "0.131.15"
|
99
99
|
|
100
100
|
[project.optional-dependencies]
|
101
101
|
logging = [
|
@@ -122,7 +122,7 @@ test = [
|
|
122
122
|
# bump-my-version
|
123
123
|
[tool.bumpversion]
|
124
124
|
allow_dirty = true
|
125
|
-
current_version = "0.131.
|
125
|
+
current_version = "0.131.15"
|
126
126
|
|
127
127
|
[[tool.bumpversion.files]]
|
128
128
|
filename = "src/utilities/__init__.py"
|
@@ -1,28 +1,25 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from pathlib import Path
|
4
|
-
from typing import TYPE_CHECKING, Any, cast, override
|
4
|
+
from typing import TYPE_CHECKING, Any, Literal, cast, override
|
5
5
|
|
6
6
|
from hypothesis import given
|
7
|
-
from hypothesis.strategies import
|
8
|
-
from luigi import BoolParameter,
|
7
|
+
from hypothesis.strategies import booleans
|
8
|
+
from luigi import BoolParameter, Task
|
9
|
+
from pytest import mark, param
|
9
10
|
|
10
|
-
from utilities.hypothesis import namespace_mixins, temp_paths,
|
11
|
+
from utilities.hypothesis import namespace_mixins, temp_paths, zoned_datetimes_whenever
|
11
12
|
from utilities.luigi import (
|
12
|
-
DateHourParameter,
|
13
|
-
DateMinuteParameter,
|
14
|
-
DateSecondParameter,
|
15
13
|
ExternalFile,
|
16
14
|
ExternalTask,
|
17
15
|
PathTarget,
|
18
|
-
|
16
|
+
ZonedDateTimeParameter,
|
19
17
|
_ExternalTaskDummyTarget,
|
20
18
|
build,
|
21
19
|
)
|
22
|
-
from utilities.whenever import serialize_time, serialize_zoned_datetime
|
23
20
|
|
24
21
|
if TYPE_CHECKING:
|
25
|
-
|
22
|
+
from whenever import ZonedDateTime
|
26
23
|
|
27
24
|
|
28
25
|
class TestBuild:
|
@@ -34,20 +31,17 @@ class TestBuild:
|
|
34
31
|
|
35
32
|
|
36
33
|
class TestDateTimeParameter:
|
37
|
-
@given(
|
38
|
-
|
39
|
-
param_cls=sampled_from([
|
40
|
-
DateHourParameter,
|
41
|
-
DateMinuteParameter,
|
42
|
-
DateSecondParameter,
|
43
|
-
]),
|
44
|
-
datetime=zoned_datetimes(),
|
45
|
-
)
|
34
|
+
@given(datetime=zoned_datetimes_whenever())
|
35
|
+
@mark.parametrize("type_", [param("datetime"), param("str")])
|
46
36
|
def test_main(
|
47
|
-
self, *,
|
37
|
+
self, *, datetime: ZonedDateTime, type_: Literal["datetime", "str"]
|
48
38
|
) -> None:
|
49
|
-
param =
|
50
|
-
|
39
|
+
param = ZonedDateTimeParameter()
|
40
|
+
match type_:
|
41
|
+
case "datetime":
|
42
|
+
input_ = datetime
|
43
|
+
case "str":
|
44
|
+
input_ = datetime.format_common_iso()
|
51
45
|
norm = param.normalize(input_)
|
52
46
|
assert param.parse(param.serialize(norm)) == norm
|
53
47
|
|
@@ -90,12 +84,3 @@ class TestPathTarget:
|
|
90
84
|
assert not target.exists()
|
91
85
|
path.touch()
|
92
86
|
assert target.exists()
|
93
|
-
|
94
|
-
|
95
|
-
class TestTimeParameter:
|
96
|
-
@given(data=data(), time=times())
|
97
|
-
def test_main(self, *, data: DataObject, time: dt.time) -> None:
|
98
|
-
param = TimeParameter()
|
99
|
-
input_ = data.draw(sampled_from([time, serialize_time(time)]))
|
100
|
-
norm = param.normalize(input_)
|
101
|
-
assert param.parse(param.serialize(norm)) == time
|
@@ -0,0 +1,195 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from abc import ABC, abstractmethod
|
4
|
+
from pathlib import Path
|
5
|
+
from typing import (
|
6
|
+
TYPE_CHECKING,
|
7
|
+
Any,
|
8
|
+
Literal,
|
9
|
+
TypeVar,
|
10
|
+
assert_never,
|
11
|
+
cast,
|
12
|
+
overload,
|
13
|
+
override,
|
14
|
+
)
|
15
|
+
|
16
|
+
import luigi
|
17
|
+
from luigi import Parameter, PathParameter, Target, Task
|
18
|
+
from luigi import build as _build
|
19
|
+
from luigi.parameter import ParameterVisibility, _no_value
|
20
|
+
from whenever import ZonedDateTime
|
21
|
+
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from collections.abc import Callable, Iterable
|
24
|
+
|
25
|
+
from luigi.execution_summary import LuigiRunResult
|
26
|
+
|
27
|
+
from utilities.types import DateTimeRoundUnit, LogLevel, PathLike, ZonedDateTimeLike
|
28
|
+
|
29
|
+
|
30
|
+
_T = TypeVar("_T")
|
31
|
+
|
32
|
+
|
33
|
+
# parameters
|
34
|
+
|
35
|
+
|
36
|
+
class ZonedDateTimeParameter(Parameter):
|
37
|
+
"""A parameter which takes the value of a zoned datetime."""
|
38
|
+
|
39
|
+
_unit: DateTimeRoundUnit
|
40
|
+
_increment: int
|
41
|
+
|
42
|
+
@override
|
43
|
+
def __init__(
|
44
|
+
self,
|
45
|
+
default: Any = _no_value,
|
46
|
+
is_global: bool = False,
|
47
|
+
significant: bool = True,
|
48
|
+
description: str | None = None,
|
49
|
+
config_path: None = None,
|
50
|
+
positional: bool = True,
|
51
|
+
always_in_help: bool = False,
|
52
|
+
batch_method: Callable[[Iterable[_T]], _T] | None = None,
|
53
|
+
visibility: ParameterVisibility = ParameterVisibility.PUBLIC,
|
54
|
+
*,
|
55
|
+
unit: DateTimeRoundUnit = "second",
|
56
|
+
increment: int = 1,
|
57
|
+
) -> None:
|
58
|
+
super().__init__(
|
59
|
+
default,
|
60
|
+
is_global,
|
61
|
+
significant,
|
62
|
+
description,
|
63
|
+
config_path,
|
64
|
+
positional,
|
65
|
+
always_in_help,
|
66
|
+
batch_method,
|
67
|
+
visibility,
|
68
|
+
)
|
69
|
+
self._unit = unit
|
70
|
+
self._increment = increment
|
71
|
+
|
72
|
+
@override
|
73
|
+
def normalize(self, x: ZonedDateTimeLike) -> ZonedDateTime:
|
74
|
+
match x:
|
75
|
+
case ZonedDateTime() as date_time:
|
76
|
+
...
|
77
|
+
case str() as text:
|
78
|
+
date_time = ZonedDateTime.parse_common_iso(text)
|
79
|
+
case _ as never:
|
80
|
+
assert_never(never)
|
81
|
+
return date_time.round(self._unit, increment=self._increment, mode="floor")
|
82
|
+
|
83
|
+
@override
|
84
|
+
def parse(self, x: str) -> ZonedDateTime:
|
85
|
+
return ZonedDateTime.parse_common_iso(x)
|
86
|
+
|
87
|
+
@override
|
88
|
+
def serialize(self, x: ZonedDateTime) -> str:
|
89
|
+
return x.format_common_iso()
|
90
|
+
|
91
|
+
|
92
|
+
# targets
|
93
|
+
|
94
|
+
|
95
|
+
class PathTarget(Target):
|
96
|
+
"""A local target whose `path` attribute is a Pathlib instance."""
|
97
|
+
|
98
|
+
def __init__(self, path: PathLike, /) -> None:
|
99
|
+
super().__init__()
|
100
|
+
self.path = Path(path)
|
101
|
+
|
102
|
+
@override
|
103
|
+
def exists(self) -> bool: # pyright: ignore[reportIncompatibleMethodOverride]
|
104
|
+
"""Check if the target exists."""
|
105
|
+
return self.path.exists()
|
106
|
+
|
107
|
+
|
108
|
+
# tasks
|
109
|
+
|
110
|
+
|
111
|
+
class ExternalTask(ABC, luigi.ExternalTask):
|
112
|
+
"""An external task with `exists()` defined here."""
|
113
|
+
|
114
|
+
@abstractmethod
|
115
|
+
def exists(self) -> bool:
|
116
|
+
"""Predicate on which the external task is deemed to exist."""
|
117
|
+
msg = f"{self=}" # pragma: no cover
|
118
|
+
raise NotImplementedError(msg) # pragma: no cover
|
119
|
+
|
120
|
+
@override
|
121
|
+
def output(self) -> _ExternalTaskDummyTarget: # pyright: ignore[reportIncompatibleMethodOverride]
|
122
|
+
return _ExternalTaskDummyTarget(self)
|
123
|
+
|
124
|
+
|
125
|
+
class _ExternalTaskDummyTarget(Target):
|
126
|
+
"""Dummy target for `ExternalTask`."""
|
127
|
+
|
128
|
+
def __init__(self, task: ExternalTask, /) -> None:
|
129
|
+
super().__init__()
|
130
|
+
self._task = task
|
131
|
+
|
132
|
+
@override
|
133
|
+
def exists(self) -> bool: # pyright: ignore[reportIncompatibleMethodOverride]
|
134
|
+
return self._task.exists()
|
135
|
+
|
136
|
+
|
137
|
+
class ExternalFile(ExternalTask):
|
138
|
+
"""Await an external file on the local disk."""
|
139
|
+
|
140
|
+
path: Path = cast("Any", PathParameter())
|
141
|
+
|
142
|
+
@override
|
143
|
+
def exists(self) -> bool:
|
144
|
+
return self.path.exists()
|
145
|
+
|
146
|
+
|
147
|
+
# functions
|
148
|
+
|
149
|
+
|
150
|
+
@overload
|
151
|
+
def build(
|
152
|
+
task: Iterable[Task],
|
153
|
+
/,
|
154
|
+
*,
|
155
|
+
detailed_summary: Literal[False] = False,
|
156
|
+
local_scheduler: bool = False,
|
157
|
+
log_level: LogLevel | None = None,
|
158
|
+
workers: int | None = None,
|
159
|
+
) -> bool: ...
|
160
|
+
@overload
|
161
|
+
def build(
|
162
|
+
task: Iterable[Task],
|
163
|
+
/,
|
164
|
+
*,
|
165
|
+
detailed_summary: Literal[True],
|
166
|
+
local_scheduler: bool = False,
|
167
|
+
log_level: LogLevel | None = None,
|
168
|
+
workers: int | None = None,
|
169
|
+
) -> LuigiRunResult: ...
|
170
|
+
def build(
|
171
|
+
task: Iterable[Task],
|
172
|
+
/,
|
173
|
+
*,
|
174
|
+
detailed_summary: bool = False,
|
175
|
+
local_scheduler: bool = False,
|
176
|
+
log_level: LogLevel | None = None,
|
177
|
+
workers: int | None = None,
|
178
|
+
) -> bool | LuigiRunResult:
|
179
|
+
"""Build a set of tasks."""
|
180
|
+
return _build(
|
181
|
+
task,
|
182
|
+
detailed_summary=detailed_summary,
|
183
|
+
local_scheduler=local_scheduler,
|
184
|
+
**({} if log_level is None else {"log_level": log_level}),
|
185
|
+
**({} if workers is None else {"workers": workers}),
|
186
|
+
)
|
187
|
+
|
188
|
+
|
189
|
+
__all__ = [
|
190
|
+
"ExternalFile",
|
191
|
+
"ExternalTask",
|
192
|
+
"PathTarget",
|
193
|
+
"ZonedDateTimeParameter",
|
194
|
+
"build",
|
195
|
+
]
|
@@ -1,228 +0,0 @@
|
|
1
|
-
from __future__ import annotations
|
2
|
-
|
3
|
-
from abc import ABC, abstractmethod
|
4
|
-
from pathlib import Path
|
5
|
-
from typing import TYPE_CHECKING, Any, Literal, cast, overload, override
|
6
|
-
|
7
|
-
import luigi
|
8
|
-
from luigi import Parameter, PathParameter, Target, Task
|
9
|
-
from luigi import build as _build
|
10
|
-
|
11
|
-
from utilities.datetime import EPOCH_UTC
|
12
|
-
|
13
|
-
if TYPE_CHECKING:
|
14
|
-
import datetime as dt
|
15
|
-
from collections.abc import Iterable
|
16
|
-
|
17
|
-
from luigi.execution_summary import LuigiRunResult
|
18
|
-
|
19
|
-
from utilities.types import LogLevel, MaybeStr, PathLike
|
20
|
-
|
21
|
-
|
22
|
-
# parameters
|
23
|
-
|
24
|
-
|
25
|
-
class DateHourParameter(luigi.DateHourParameter):
|
26
|
-
"""A parameter which takes the value of an hourly `dt.datetime`."""
|
27
|
-
|
28
|
-
def __init__(self, interval: int = 1, **kwargs: Any) -> None:
|
29
|
-
super().__init__(interval, EPOCH_UTC, **kwargs)
|
30
|
-
|
31
|
-
@override
|
32
|
-
def normalize(self, dt: MaybeStr[dt.datetime]) -> dt.datetime:
|
33
|
-
from utilities.whenever import ensure_zoned_datetime
|
34
|
-
|
35
|
-
return ensure_zoned_datetime(dt)
|
36
|
-
|
37
|
-
@override
|
38
|
-
def parse(self, s: str) -> dt.datetime:
|
39
|
-
from utilities.whenever import parse_zoned_datetime
|
40
|
-
|
41
|
-
return parse_zoned_datetime(s)
|
42
|
-
|
43
|
-
@override
|
44
|
-
def serialize(self, dt: dt.datetime) -> str:
|
45
|
-
from utilities.whenever import serialize_zoned_datetime
|
46
|
-
|
47
|
-
return serialize_zoned_datetime(dt)
|
48
|
-
|
49
|
-
|
50
|
-
class DateMinuteParameter(luigi.DateMinuteParameter):
|
51
|
-
"""A parameter which takes the value of a minutely `dt.datetime`."""
|
52
|
-
|
53
|
-
def __init__(self, interval: int = 1, **kwargs: Any) -> None:
|
54
|
-
super().__init__(interval=interval, start=EPOCH_UTC, **kwargs)
|
55
|
-
|
56
|
-
@override
|
57
|
-
def normalize(self, dt: MaybeStr[dt.datetime]) -> dt.datetime:
|
58
|
-
from utilities.whenever import ensure_zoned_datetime
|
59
|
-
|
60
|
-
return ensure_zoned_datetime(dt)
|
61
|
-
|
62
|
-
@override
|
63
|
-
def parse(self, s: str) -> dt.datetime:
|
64
|
-
from utilities.whenever import parse_zoned_datetime
|
65
|
-
|
66
|
-
return parse_zoned_datetime(s)
|
67
|
-
|
68
|
-
@override
|
69
|
-
def serialize(self, dt: dt.datetime) -> str:
|
70
|
-
from utilities.whenever import serialize_zoned_datetime
|
71
|
-
|
72
|
-
return serialize_zoned_datetime(dt)
|
73
|
-
|
74
|
-
|
75
|
-
class DateSecondParameter(luigi.DateSecondParameter):
|
76
|
-
"""A parameter which takes the value of a secondly `dt.datetime`."""
|
77
|
-
|
78
|
-
def __init__(self, interval: int = 1, **kwargs: Any) -> None:
|
79
|
-
super().__init__(interval, EPOCH_UTC, **kwargs)
|
80
|
-
|
81
|
-
@override
|
82
|
-
def normalize(self, dt: MaybeStr[dt.datetime]) -> dt.datetime:
|
83
|
-
from utilities.whenever import ensure_zoned_datetime
|
84
|
-
|
85
|
-
return ensure_zoned_datetime(dt)
|
86
|
-
|
87
|
-
@override
|
88
|
-
def parse(self, s: str) -> dt.datetime:
|
89
|
-
from utilities.whenever import parse_zoned_datetime
|
90
|
-
|
91
|
-
return parse_zoned_datetime(s)
|
92
|
-
|
93
|
-
@override
|
94
|
-
def serialize(self, dt: dt.datetime) -> str:
|
95
|
-
from utilities.whenever import serialize_zoned_datetime
|
96
|
-
|
97
|
-
return serialize_zoned_datetime(dt)
|
98
|
-
|
99
|
-
|
100
|
-
class TimeParameter(Parameter):
|
101
|
-
"""A parameter which takes the value of a `dt.time`."""
|
102
|
-
|
103
|
-
@override
|
104
|
-
def normalize(self, x: MaybeStr[dt.time]) -> dt.time:
|
105
|
-
from utilities.whenever import ensure_time
|
106
|
-
|
107
|
-
return ensure_time(x)
|
108
|
-
|
109
|
-
@override
|
110
|
-
def parse(self, x: str) -> dt.time:
|
111
|
-
from utilities.whenever import parse_time
|
112
|
-
|
113
|
-
return parse_time(x)
|
114
|
-
|
115
|
-
@override
|
116
|
-
def serialize(self, x: dt.time) -> str:
|
117
|
-
from utilities.whenever import serialize_time
|
118
|
-
|
119
|
-
return serialize_time(x)
|
120
|
-
|
121
|
-
|
122
|
-
# targets
|
123
|
-
|
124
|
-
|
125
|
-
class PathTarget(Target):
|
126
|
-
"""A local target whose `path` attribute is a Pathlib instance."""
|
127
|
-
|
128
|
-
def __init__(self, path: PathLike, /) -> None:
|
129
|
-
super().__init__()
|
130
|
-
self.path = Path(path)
|
131
|
-
|
132
|
-
@override
|
133
|
-
def exists(self) -> bool: # pyright: ignore[reportIncompatibleMethodOverride]
|
134
|
-
"""Check if the target exists."""
|
135
|
-
return self.path.exists()
|
136
|
-
|
137
|
-
|
138
|
-
# tasks
|
139
|
-
|
140
|
-
|
141
|
-
class ExternalTask(ABC, luigi.ExternalTask):
|
142
|
-
"""An external task with `exists()` defined here."""
|
143
|
-
|
144
|
-
@abstractmethod
|
145
|
-
def exists(self) -> bool:
|
146
|
-
"""Predicate on which the external task is deemed to exist."""
|
147
|
-
msg = f"{self=}" # pragma: no cover
|
148
|
-
raise NotImplementedError(msg) # pragma: no cover
|
149
|
-
|
150
|
-
@override
|
151
|
-
def output(self) -> _ExternalTaskDummyTarget: # pyright: ignore[reportIncompatibleMethodOverride]
|
152
|
-
return _ExternalTaskDummyTarget(self)
|
153
|
-
|
154
|
-
|
155
|
-
class _ExternalTaskDummyTarget(Target):
|
156
|
-
"""Dummy target for `ExternalTask`."""
|
157
|
-
|
158
|
-
def __init__(self, task: ExternalTask, /) -> None:
|
159
|
-
super().__init__()
|
160
|
-
self._task = task
|
161
|
-
|
162
|
-
@override
|
163
|
-
def exists(self) -> bool: # pyright: ignore[reportIncompatibleMethodOverride]
|
164
|
-
return self._task.exists()
|
165
|
-
|
166
|
-
|
167
|
-
class ExternalFile(ExternalTask):
|
168
|
-
"""Await an external file on the local disk."""
|
169
|
-
|
170
|
-
path: Path = cast("Any", PathParameter())
|
171
|
-
|
172
|
-
@override
|
173
|
-
def exists(self) -> bool:
|
174
|
-
return self.path.exists()
|
175
|
-
|
176
|
-
|
177
|
-
# functions
|
178
|
-
|
179
|
-
|
180
|
-
@overload
|
181
|
-
def build(
|
182
|
-
task: Iterable[Task],
|
183
|
-
/,
|
184
|
-
*,
|
185
|
-
detailed_summary: Literal[False] = False,
|
186
|
-
local_scheduler: bool = False,
|
187
|
-
log_level: LogLevel | None = None,
|
188
|
-
workers: int | None = None,
|
189
|
-
) -> bool: ...
|
190
|
-
@overload
|
191
|
-
def build(
|
192
|
-
task: Iterable[Task],
|
193
|
-
/,
|
194
|
-
*,
|
195
|
-
detailed_summary: Literal[True],
|
196
|
-
local_scheduler: bool = False,
|
197
|
-
log_level: LogLevel | None = None,
|
198
|
-
workers: int | None = None,
|
199
|
-
) -> LuigiRunResult: ...
|
200
|
-
def build(
|
201
|
-
task: Iterable[Task],
|
202
|
-
/,
|
203
|
-
*,
|
204
|
-
detailed_summary: bool = False,
|
205
|
-
local_scheduler: bool = False,
|
206
|
-
log_level: LogLevel | None = None,
|
207
|
-
workers: int | None = None,
|
208
|
-
) -> bool | LuigiRunResult:
|
209
|
-
"""Build a set of tasks."""
|
210
|
-
return _build(
|
211
|
-
task,
|
212
|
-
detailed_summary=detailed_summary,
|
213
|
-
local_scheduler=local_scheduler,
|
214
|
-
**({} if log_level is None else {"log_level": log_level}),
|
215
|
-
**({} if workers is None else {"workers": workers}),
|
216
|
-
)
|
217
|
-
|
218
|
-
|
219
|
-
__all__ = [
|
220
|
-
"DateHourParameter",
|
221
|
-
"DateMinuteParameter",
|
222
|
-
"DateSecondParameter",
|
223
|
-
"ExternalFile",
|
224
|
-
"ExternalTask",
|
225
|
-
"PathTarget",
|
226
|
-
"TimeParameter",
|
227
|
-
"build",
|
228
|
-
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/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.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/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
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.14 → dycw_utilities-0.131.15}/src/tests/test_asyncio_classes/loopers.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
|