danielutils 1.0.35__tar.gz → 1.0.37__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.
- {danielutils-1.0.35/danielutils.egg-info → danielutils-1.0.37}/PKG-INFO +1 -1
- danielutils-1.0.37/danielutils/async_/__init__.py +5 -0
- danielutils-1.0.37/danielutils/async_/async_cmd.py +23 -0
- danielutils-1.0.37/danielutils/async_/async_layered_command.py +109 -0
- danielutils-1.0.35/danielutils/async_/async_retry_executor_base.py → danielutils-1.0.37/danielutils/async_/async_retry_executor.py +3 -3
- danielutils-1.0.35/danielutils/async_/async_worker_pool_base.py → danielutils-1.0.37/danielutils/async_/async_worker_pool.py +15 -14
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/class_/class_reflection.py +4 -4
- {danielutils-1.0.35 → danielutils-1.0.37/danielutils.egg-info}/PKG-INFO +1 -1
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils.egg-info/SOURCES.txt +4 -2
- {danielutils-1.0.35 → danielutils-1.0.37}/pyproject.toml +1 -1
- danielutils-1.0.35/danielutils/async_/__init__.py +0 -4
- {danielutils-1.0.35 → danielutils-1.0.37}/LICENSE +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/MANIFEST.in +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/README.md +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/cached_database.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/database.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/redis_database.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/multi_id.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/worker.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/worker_pool.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/repl.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/aliases.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/async_/time_strategy.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/async_/utils.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/counter.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/frange.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/factory.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tdict.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tlist.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tset.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/ttuple.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/colors.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/attr_context.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/multi_context.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/optional_context.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/state_context.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/context_managers/temporary_file.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/convenience.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/main_conversions.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/specialized_conversions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/specialized_conversions/to_hex.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/specialized_conversions/to_int.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/custom_types.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/algorithms.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/comparer.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/default_dict.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/functions.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/graph/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/graph/binary_node.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/graph/graph.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/graph/multinode.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/graph/node.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/heap/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/heap/heap.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/heap/max_heap.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/heap/min_heap.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/queue/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/queue/atomic_queue.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/queue/priority_queue.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/queue/queue.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/stack.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/trees/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/trees/binary_syntax_tree.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/trees/binary_tree.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/date.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/date_time.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/atomic.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/attach.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/chain_decorators.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/decorate_conditionally.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/delay_call.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/deprecate.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/final.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/limit_recursion.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/memo.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/normalize_decorator.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/overload.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/partially_implemented.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/processify.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/property.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/singleton.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/threadify.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/timeout.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/total_ordering.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/decorators/validate.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/exceptions.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/file_specifications/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/areoneof.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/check_foreach.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/factorial.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/flatten.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/foreach.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/isoftype.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/isoneof.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/multiloop.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/parallel_for.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/partition.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/powerset.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/subseteq.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/functions/types_subseteq.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/generators/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/generators/conditional_generator.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/generators/generator_from_stream.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/generators/join_generators.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/internet.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/io_.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/java/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/java/interfaces/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/java/interfaces/comparable.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/java/java_interface.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/builtin_impls/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/builtin_impls/file_logger.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/builtin_impls/print_logger.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/log_level.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/logger.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/logger_strategy_impl_base.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/lombok/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/lombok/builder.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/math_/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/math_/constants.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/math_/functions.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/math_/math_print.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/math_/math_symbols.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/atomic_class_meta.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/implicit_data_deleter_meta.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/instance_cache_meta.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/interface.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/metaclasses/overload_meta.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/mock_/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/mock_/mock_database.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/mock_/mock_module.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/path.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/print_.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/progress_bar/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/progress_bar/ascii_progress_bar.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/progress_bar/progress_bar.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/progress_bar/progress_bar_pool.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/protocols/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/protocols/dictable.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/protocols/evaluable.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/protocols/serializable.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/py.typed +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/random_.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/argument_info.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/class_/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/class_info.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/decoration_info.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/file/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/file/file_reflection.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/function/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/function/function_reflections.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/function_info.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/callstack.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/get_traceback.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/interpreter.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/is_debugging.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/os_.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/packages.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/python_version.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/signals.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/interpreter/tracer.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/module/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/module/module_reflections.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/reflection/module/package_reflection.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/constant_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/exponential_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/functional_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/linear_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/multiplicative_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategies/no_backoff.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/backoff_strategy.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/retry_executor/retry_executor.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/snippets/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/snippets/try_get.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/independent.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/layered_command.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/windows/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/windows/utils/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/windows/utils/filetime.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/windows/win32_ctime.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/system/windows/windows.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/testing/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/testing/unittest_/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/testing/unittest_/always_teardown_testcase.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/testing/unittest_/auto_cwd_testcase.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/text.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/time.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/discreate_finite_automaton.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/languages/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/languages/language.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/languages/sat.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/computability_and_complexity/turing_machine.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/databases/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/databases/all.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/encoding.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossless/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossless/huffman.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossless/lossless_encoding.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossless/lzw.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossless/run_length.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossy/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/encoding/lossy/lossy_encoding.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/gaussian.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/gradient.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/hough.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/laplacian.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/image_proccesing/tansformations/transformation.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/linear_algebra/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/linear_algebra/matrix.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/machine_learning/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/machine_learning/activation_functions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/machine_learning/activation_functions/activation_function.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/machine_learning/activation_functions/relu.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/machine_learning/neuron.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/oop/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/oop/observer.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/oop/strategy.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/conditional_variable.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/continuous/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/bernoulli.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/binomial.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/conditional_from_discrete_probability_func.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/discrete.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/geometric.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/poisson.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/conditional_variable/discrete/uniform.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/distributions.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/expressions/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/expressions/accumulation_expression.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/expressions/probability_expression.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/funcs/__init__.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/funcs/covariance.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/funcs/expected_value.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/funcs/probability_function.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/funcs/variance.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/operator.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/protocols.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/supp.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/university/probability/transformation.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils/versioned_imports.py +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils.egg-info/dependency_links.txt +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/danielutils.egg-info/top_level.txt +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/setup.cfg +0 -0
- {danielutils-1.0.35 → danielutils-1.0.37}/setup.py +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from typing import Tuple, Optional
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
async def async_cmd(
|
|
6
|
+
cmd: str,
|
|
7
|
+
*,
|
|
8
|
+
capture_stdout: bool = False,
|
|
9
|
+
capture_stderr: bool = False
|
|
10
|
+
) -> Tuple[int, Optional[bytes], Optional[bytes]]:
|
|
11
|
+
kwargs = {}
|
|
12
|
+
if capture_stdout:
|
|
13
|
+
kwargs['stdout'] = asyncio.subprocess.PIPE
|
|
14
|
+
if capture_stderr:
|
|
15
|
+
kwargs['stderr'] = asyncio.subprocess.PIPE
|
|
16
|
+
process = await asyncio.create_subprocess_shell(cmd, **kwargs) # type:ignore
|
|
17
|
+
stdout, stderr = await process.communicate()
|
|
18
|
+
return process.returncode, stdout, stderr
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
'async_cmd',
|
|
23
|
+
]
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import sys, os
|
|
2
|
+
from typing import Optional, Tuple, List
|
|
3
|
+
|
|
4
|
+
from .async_cmd import async_cmd
|
|
5
|
+
from danielutils.context_managers import TemporaryFile
|
|
6
|
+
import random
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AsyncLayeredCommand:
|
|
10
|
+
class_capture_stdout: bool = True
|
|
11
|
+
class_capture_stderr: bool = True
|
|
12
|
+
class_raise_on_fail: bool = False
|
|
13
|
+
class_verbose: bool = False
|
|
14
|
+
_class_prev_instance: Optional['AsyncLayeredCommand'] = None
|
|
15
|
+
_id: int = 0
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def prev(self):
|
|
19
|
+
return self._prev_instance
|
|
20
|
+
|
|
21
|
+
@prev.setter
|
|
22
|
+
def prev(self, value: Optional['AsyncLayeredCommand'] = None):
|
|
23
|
+
self._prev_instance = value
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
command: Optional[str] = None,
|
|
28
|
+
*,
|
|
29
|
+
prev_instance: Optional['AsyncLayeredCommand'] = None,
|
|
30
|
+
instance_capture_stdout: Optional[bool] = None,
|
|
31
|
+
instance_capture_stderr: Optional[bool] = None,
|
|
32
|
+
instance_raise_on_fail: Optional[bool] = None,
|
|
33
|
+
instance_verbose: Optional[bool] = None
|
|
34
|
+
):
|
|
35
|
+
self._command = command if command is not None else ""
|
|
36
|
+
self._instance_capture_stdout = instance_capture_stdout
|
|
37
|
+
self._instance_capture_stderr = instance_capture_stderr
|
|
38
|
+
self._instance_raise_on_fail = instance_raise_on_fail
|
|
39
|
+
self._instance_verbose = instance_verbose
|
|
40
|
+
self._prev_instance = prev_instance if prev_instance is not None else AsyncLayeredCommand._class_prev_instance
|
|
41
|
+
self._cur_class_prev_instance = AsyncLayeredCommand._class_prev_instance
|
|
42
|
+
AsyncLayeredCommand._class_prev_instance = self
|
|
43
|
+
self._has_entered: bool = False
|
|
44
|
+
|
|
45
|
+
def __enter__(self):
|
|
46
|
+
self._open()
|
|
47
|
+
return self
|
|
48
|
+
|
|
49
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
50
|
+
if self.prev is self._cur_class_prev_instance:
|
|
51
|
+
AsyncLayeredCommand._class_prev_instance = self.prev
|
|
52
|
+
|
|
53
|
+
def _open(self) -> None:
|
|
54
|
+
self._has_entered = True
|
|
55
|
+
|
|
56
|
+
def _build_command(self, *commands: str) -> str:
|
|
57
|
+
res = ""
|
|
58
|
+
if self.prev is not None:
|
|
59
|
+
prev = self.prev._build_command()
|
|
60
|
+
res += f"{prev} & " if prev != "" else ""
|
|
61
|
+
if self._command != "":
|
|
62
|
+
return res + " & ".join([self._command, *commands])
|
|
63
|
+
return res + " & ".join(commands)
|
|
64
|
+
|
|
65
|
+
def _error(self, predicate: bool, command: str, code: int, command_verbose: Optional[bool]) -> None:
|
|
66
|
+
if predicate:
|
|
67
|
+
verbose = self._merge_values(command_verbose, self._instance_verbose, AsyncLayeredCommand.class_verbose)
|
|
68
|
+
if verbose:
|
|
69
|
+
raise RuntimeError(f"command '{command}' failed with exit code {code}")
|
|
70
|
+
sys.exit(1)
|
|
71
|
+
|
|
72
|
+
@staticmethod
|
|
73
|
+
def _merge_values(command: Optional[bool], instance: Optional[bool], class_: bool) -> bool:
|
|
74
|
+
return command if command is not None else (instance if instance is not None else class_)
|
|
75
|
+
|
|
76
|
+
async def execute(
|
|
77
|
+
self,
|
|
78
|
+
*commands: str,
|
|
79
|
+
command_capture_stdout: Optional[bool] = None,
|
|
80
|
+
command_capture_stderr: Optional[bool] = None,
|
|
81
|
+
command_raise_on_fail: Optional[bool] = None,
|
|
82
|
+
command_verbose: Optional[bool] = None
|
|
83
|
+
) -> Tuple[int, List[str], List[str]]:
|
|
84
|
+
if not self._has_entered:
|
|
85
|
+
raise RuntimeError(
|
|
86
|
+
"LayeredCommand must be used with a context manager. Use as: `with LayeredCommand(...) as l1:`")
|
|
87
|
+
capture_stdout = self._merge_values(command_capture_stdout, self._instance_capture_stdout,
|
|
88
|
+
self.class_capture_stdout)
|
|
89
|
+
capture_stderr = self._merge_values(command_capture_stderr, self._instance_capture_stderr,
|
|
90
|
+
self.class_capture_stderr)
|
|
91
|
+
raise_on_fail = self._merge_values(command_raise_on_fail, self._instance_raise_on_fail,
|
|
92
|
+
self.class_raise_on_fail)
|
|
93
|
+
|
|
94
|
+
command = self._build_command(*commands)
|
|
95
|
+
if not capture_stdout and not capture_stderr:
|
|
96
|
+
code = (await async_cmd(command))[0]
|
|
97
|
+
self._error(raise_on_fail and code != 0, command, code, command_verbose)
|
|
98
|
+
return code, [], []
|
|
99
|
+
|
|
100
|
+
code, stdout, stderr = await async_cmd(command, capture_stdout=True, capture_stderr=True)
|
|
101
|
+
return code, stdout.decode().splitlines(), stderr.decode().splitlines()
|
|
102
|
+
|
|
103
|
+
async def __call__(self, *args, **kwargs) -> Tuple[int, List[str], List[str]]:
|
|
104
|
+
return await self.execute(*args, **kwargs)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
__all__ = [
|
|
108
|
+
'AsyncLayeredCommand'
|
|
109
|
+
]
|
|
@@ -12,7 +12,7 @@ from ..versioned_imports import ParamSpec
|
|
|
12
12
|
P = ParamSpec("P")
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class AsyncRetryExecutor:
|
|
16
16
|
def __init__(
|
|
17
17
|
self,
|
|
18
18
|
timeout_strategy: Supplier[float] = LinearTimeStrategy(30, 5),
|
|
@@ -75,7 +75,7 @@ class AsyncRetryExecutorBase:
|
|
|
75
75
|
|
|
76
76
|
@normalize_decorator
|
|
77
77
|
def with_async_retry(func, *retry_executor_args, max_tries: int = 5, **retry_executor_kwargs):
|
|
78
|
-
retry_executor =
|
|
78
|
+
retry_executor = AsyncRetryExecutor(*retry_executor_args, **retry_executor_kwargs)
|
|
79
79
|
|
|
80
80
|
@functools.wraps(func)
|
|
81
81
|
async def wrapper(*args, **kwargs):
|
|
@@ -85,6 +85,6 @@ def with_async_retry(func, *retry_executor_args, max_tries: int = 5, **retry_exe
|
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
__all__ = [
|
|
88
|
-
"
|
|
88
|
+
"AsyncRetryExecutor",
|
|
89
89
|
"with_async_retry"
|
|
90
90
|
]
|
|
@@ -2,33 +2,33 @@ import asyncio
|
|
|
2
2
|
import json
|
|
3
3
|
from typing import Callable, Literal, Optional, Coroutine
|
|
4
4
|
|
|
5
|
-
from .async_retry_executor_base import AsyncRetryExecutorBase
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def __init__(self, num_workers: int, retry_executor: Optional[AsyncRetryExecutorBase] = None) -> None:
|
|
6
|
+
class AsyncWorkerPool:
|
|
7
|
+
def __init__(self, pool_name: str, num_workers: int = 5) -> None:
|
|
10
8
|
self.num_workers = num_workers
|
|
9
|
+
self.pool_name = pool_name
|
|
11
10
|
self.queue = asyncio.Queue()
|
|
12
11
|
self.workers = []
|
|
13
|
-
self.retry_executor = retry_executor
|
|
14
12
|
|
|
15
13
|
async def worker(self, worker_id) -> None:
|
|
16
14
|
"""Worker coroutine that continuously fetches and executes tasks from the queue."""
|
|
17
|
-
|
|
15
|
+
task_count = 0
|
|
18
16
|
while True:
|
|
19
17
|
task = await self.queue.get()
|
|
20
18
|
if task is None: # Sentinel value to shut down the worker
|
|
21
19
|
break
|
|
22
|
-
|
|
20
|
+
task_count += 1
|
|
23
21
|
func, args, kwargs = task
|
|
24
|
-
self.info(f"Worker {worker_id} started with task {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
else:
|
|
22
|
+
self.info(f"Worker {worker_id} started with task {task_count}")
|
|
23
|
+
|
|
24
|
+
try:
|
|
28
25
|
await func(*args, **kwargs)
|
|
29
|
-
|
|
26
|
+
except Exception as e:
|
|
27
|
+
self.error(f"Worker {worker_id} failed task {task_count}", exception=e)
|
|
28
|
+
|
|
29
|
+
self.info(f"Worker {worker_id} finished with task {task_count}")
|
|
30
30
|
self.queue.task_done()
|
|
31
|
-
self.info(f"Worker {worker_id} done.")
|
|
31
|
+
self.info(f"Worker {worker_id} done executed {task_count} tasks.")
|
|
32
32
|
|
|
33
33
|
async def start(self) -> None:
|
|
34
34
|
"""Starts the worker pool."""
|
|
@@ -48,6 +48,7 @@ class AsyncWorkerPoolBase:
|
|
|
48
48
|
def log(self, level: Literal["INFO", "WARNING", "ERROR"], message: str, **kwargs) -> None:
|
|
49
49
|
kwargs["level"] = level
|
|
50
50
|
kwargs["message"] = message
|
|
51
|
+
kwargs["pool"] = self.pool_name
|
|
51
52
|
print(json.dumps(kwargs, default=str))
|
|
52
53
|
|
|
53
54
|
def info(self, message: str, **kwargs) -> None:
|
|
@@ -61,5 +62,5 @@ class AsyncWorkerPoolBase:
|
|
|
61
62
|
|
|
62
63
|
|
|
63
64
|
__all__ = [
|
|
64
|
-
"
|
|
65
|
+
"AsyncWorkerPool",
|
|
65
66
|
]
|
|
@@ -115,7 +115,7 @@ class FunctionDeclaration:
|
|
|
115
115
|
generics=self.generics,
|
|
116
116
|
)
|
|
117
117
|
dct.update(override_kwargs)
|
|
118
|
-
return FunctionDeclaration(**dct)
|
|
118
|
+
return FunctionDeclaration(**dct) # type:ignore
|
|
119
119
|
|
|
120
120
|
@property
|
|
121
121
|
def has_generics(self) -> bool:
|
|
@@ -141,13 +141,13 @@ class FunctionDeclaration:
|
|
|
141
141
|
parameters.append(arg)
|
|
142
142
|
res = []
|
|
143
143
|
for code, name, args, ret in func_pattern.findall(src):
|
|
144
|
-
name: str = name.strip()
|
|
145
|
-
args: Optional[str] = remove_whitespace(args) if args is not None else None
|
|
144
|
+
name: str = name.strip() # type:ignore
|
|
145
|
+
args: Optional[str] = remove_whitespace(args) if args is not None else None # type:ignore
|
|
146
146
|
arguments = []
|
|
147
147
|
if args is not None:
|
|
148
148
|
for arg in split_args(args):
|
|
149
149
|
arguments.append(Argument(*arg_pattern.match(remove_whitespace(arg)).groups()))
|
|
150
|
-
ret: Optional[str] = ret.strip() if ret is not None and len(ret) != 0 else None
|
|
150
|
+
ret: Optional[str] = ret.strip() if ret is not None and len(ret) != 0 else None # type:ignore
|
|
151
151
|
res.append(FunctionDeclaration(name, tuple(arguments), ret, decorators=None, generics=tuple(parameters)))
|
|
152
152
|
|
|
153
153
|
return res
|
|
@@ -35,8 +35,10 @@ danielutils/abstractions/multiprogramming/multi_id.py
|
|
|
35
35
|
danielutils/abstractions/multiprogramming/worker.py
|
|
36
36
|
danielutils/abstractions/multiprogramming/worker_pool.py
|
|
37
37
|
danielutils/async_/__init__.py
|
|
38
|
-
danielutils/async_/
|
|
39
|
-
danielutils/async_/
|
|
38
|
+
danielutils/async_/async_cmd.py
|
|
39
|
+
danielutils/async_/async_layered_command.py
|
|
40
|
+
danielutils/async_/async_retry_executor.py
|
|
41
|
+
danielutils/async_/async_worker_pool.py
|
|
40
42
|
danielutils/async_/time_strategy.py
|
|
41
43
|
danielutils/async_/utils.py
|
|
42
44
|
danielutils/better_builtins/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/cached_database.py
RENAMED
|
File without changes
|
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/database/redis_database.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/__init__.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/multi_id.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/worker.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/abstractions/multiprogramming/worker_pool.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
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/__init__.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/factory.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tdict.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tlist.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/tset.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/better_builtins/typed_builtins/ttuple.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
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/specialized_conversions/to_hex.py
RENAMED
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/conversions/specialized_conversions/to_int.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
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/queue/priority_queue.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/data_structures/trees/binary_syntax_tree.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
|
{danielutils-1.0.35 → danielutils-1.0.37}/danielutils/logging_/builtin_impls/print_logger.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
|