danielutils 1.0.46__tar.gz → 1.0.51__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.
Files changed (283) hide show
  1. {danielutils-1.0.46/danielutils.egg-info → danielutils-1.0.51}/PKG-INFO +2 -2
  2. {danielutils-1.0.46 → danielutils-1.0.51}/README.md +1 -1
  3. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database_initializer.py +1 -1
  4. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/file_specifications/__init__.py +2 -1
  5. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/logger.py +1 -1
  6. danielutils-1.0.51/danielutils/reflection/__init__.py +6 -0
  7. danielutils-1.0.51/danielutils/reflection/info_classes/__init__.py +6 -0
  8. {danielutils-1.0.46/danielutils/reflection → danielutils-1.0.51/danielutils/reflection/info_classes}/argument_info.py +10 -3
  9. {danielutils-1.0.46/danielutils/reflection → danielutils-1.0.51/danielutils/reflection/info_classes}/class_info.py +17 -9
  10. danielutils-1.0.46/danielutils/reflection/decoration_info.py → danielutils-1.0.51/danielutils/reflection/info_classes/decorator_info.py +7 -6
  11. danielutils-1.0.51/danielutils/reflection/info_classes/file_info.py +1163 -0
  12. danielutils-1.0.51/danielutils/reflection/info_classes/folder_info.py +592 -0
  13. danielutils-1.0.51/danielutils/reflection/info_classes/function_info.py +495 -0
  14. danielutils-1.0.51/danielutils/reflection/info_classes/import_info.py +207 -0
  15. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/windows/win32_ctime.py +1 -1
  16. {danielutils-1.0.46 → danielutils-1.0.51/danielutils.egg-info}/PKG-INFO +2 -2
  17. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils.egg-info/SOURCES.txt +8 -4
  18. {danielutils-1.0.46 → danielutils-1.0.51}/pyproject.toml +1 -1
  19. danielutils-1.0.46/danielutils/reflection/__init__.py +0 -53
  20. danielutils-1.0.46/danielutils/reflection/function_info.py +0 -103
  21. {danielutils-1.0.46 → danielutils-1.0.51}/LICENSE +0 -0
  22. {danielutils-1.0.46 → danielutils-1.0.51}/MANIFEST.in +0 -0
  23. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/__init__.py +0 -0
  24. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/__init__.py +0 -0
  25. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/__init__.py +0 -0
  26. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database.py +0 -0
  27. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database_definitions.py +0 -0
  28. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database_exceptions.py +0 -0
  29. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database_factory.py +0 -0
  30. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/database_models.py +0 -0
  31. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/dependencies.py +0 -0
  32. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/implementations/__init__.py +0 -0
  33. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/implementations/in_memory_database.py +0 -0
  34. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/implementations/persistent_in_memory_database.py +0 -0
  35. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/implementations/redis_database.py +0 -0
  36. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/db/implementations/sqlite_database.py +0 -0
  37. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/multiprogramming/__init__.py +0 -0
  38. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/multiprogramming/multi_id.py +0 -0
  39. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/multiprogramming/worker.py +0 -0
  40. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/multiprogramming/worker_pool.py +0 -0
  41. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/abstractions/repl.py +0 -0
  42. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/aliases.py +0 -0
  43. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/__init__.py +0 -0
  44. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/async_cmd.py +0 -0
  45. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/async_layered_command.py +0 -0
  46. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/async_retry_executor.py +0 -0
  47. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/async_worker_pool.py +0 -0
  48. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/time_strategy.py +0 -0
  49. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/async_/utils.py +0 -0
  50. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/__init__.py +0 -0
  51. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/counter.py +0 -0
  52. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/frange.py +0 -0
  53. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/__init__.py +0 -0
  54. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/factory.py +0 -0
  55. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/tdict.py +0 -0
  56. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/tlist.py +0 -0
  57. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/tset.py +0 -0
  58. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/better_builtins/typed_builtins/ttuple.py +0 -0
  59. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/colors.py +0 -0
  60. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/__init__.py +0 -0
  61. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/attr_context.py +0 -0
  62. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/multi_context.py +0 -0
  63. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/optional_context.py +0 -0
  64. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/state_context.py +0 -0
  65. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/context_managers/temporary_file.py +0 -0
  66. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/convenience.py +0 -0
  67. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/conversions/__init__.py +0 -0
  68. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/conversions/main_conversions.py +0 -0
  69. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/conversions/specialized_conversions/__init__.py +0 -0
  70. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/conversions/specialized_conversions/to_hex.py +0 -0
  71. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/conversions/specialized_conversions/to_int.py +0 -0
  72. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/custom_types.py +0 -0
  73. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/__init__.py +0 -0
  74. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/algorithms.py +0 -0
  75. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/comparer.py +0 -0
  76. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/default_dict.py +0 -0
  77. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/functions.py +0 -0
  78. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/graph/__init__.py +0 -0
  79. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/graph/binary_node.py +0 -0
  80. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/graph/graph.py +0 -0
  81. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/graph/multinode.py +0 -0
  82. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/graph/node.py +0 -0
  83. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/heap/__init__.py +0 -0
  84. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/heap/heap.py +0 -0
  85. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/heap/max_heap.py +0 -0
  86. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/heap/min_heap.py +0 -0
  87. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/queue/__init__.py +0 -0
  88. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/queue/atomic_queue.py +0 -0
  89. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/queue/priority_queue.py +0 -0
  90. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/queue/queue.py +0 -0
  91. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/stack.py +0 -0
  92. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/trees/__init__.py +0 -0
  93. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/trees/binary_syntax_tree.py +0 -0
  94. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/data_structures/trees/binary_tree.py +0 -0
  95. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/date.py +0 -0
  96. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/date_time.py +0 -0
  97. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/__init__.py +0 -0
  98. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/atomic.py +0 -0
  99. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/attach.py +0 -0
  100. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/chain_decorators.py +0 -0
  101. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/decorate_conditionally.py +0 -0
  102. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/delay_call.py +0 -0
  103. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/deprecate.py +0 -0
  104. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/final.py +0 -0
  105. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/limit_recursion.py +0 -0
  106. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/memo.py +0 -0
  107. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/normalize_decorator.py +0 -0
  108. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/overload.py +0 -0
  109. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/partially_implemented.py +0 -0
  110. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/processify.py +0 -0
  111. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/property.py +0 -0
  112. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/singleton.py +0 -0
  113. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/threadify.py +0 -0
  114. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/timeout.py +0 -0
  115. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/total_ordering.py +0 -0
  116. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/decorators/validate.py +0 -0
  117. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/exceptions.py +0 -0
  118. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/__init__.py +0 -0
  119. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/areoneof.py +0 -0
  120. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/check_foreach.py +0 -0
  121. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/factorial.py +0 -0
  122. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/flatten.py +0 -0
  123. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/foreach.py +0 -0
  124. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/isoftype.py +0 -0
  125. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/isoneof.py +0 -0
  126. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/multiloop.py +0 -0
  127. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/parallel_for.py +0 -0
  128. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/partition.py +0 -0
  129. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/powerset.py +0 -0
  130. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/subseteq.py +0 -0
  131. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/functions/types_subseteq.py +0 -0
  132. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/generators/__init__.py +0 -0
  133. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/generators/conditional_generator.py +0 -0
  134. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/generators/generator_from_stream.py +0 -0
  135. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/generators/join_generators.py +0 -0
  136. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/internet.py +0 -0
  137. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/io_.py +0 -0
  138. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/java/__init__.py +0 -0
  139. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/java/interfaces/__init__.py +0 -0
  140. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/java/interfaces/comparable.py +0 -0
  141. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/java/java_interface.py +0 -0
  142. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/__init__.py +0 -0
  143. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/builtin_impls/__init__.py +0 -0
  144. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/builtin_impls/file_logger.py +0 -0
  145. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/builtin_impls/print_logger.py +0 -0
  146. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/log_level.py +0 -0
  147. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/logging_/logger_strategy_impl_base.py +0 -0
  148. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/lombok/__init__.py +0 -0
  149. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/lombok/builder.py +0 -0
  150. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/math_/__init__.py +0 -0
  151. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/math_/constants.py +0 -0
  152. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/math_/functions.py +0 -0
  153. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/math_/math_print.py +0 -0
  154. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/math_/math_symbols.py +0 -0
  155. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/__init__.py +0 -0
  156. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/atomic_class_meta.py +0 -0
  157. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/implicit_data_deleter_meta.py +0 -0
  158. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/instance_cache_meta.py +0 -0
  159. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/interface.py +0 -0
  160. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/metaclasses/overload_meta.py +0 -0
  161. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/mock_/__init__.py +0 -0
  162. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/mock_/mock_module.py +0 -0
  163. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/path.py +0 -0
  164. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/print_.py +0 -0
  165. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/progress_bar/__init__.py +0 -0
  166. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/progress_bar/ascii_progress_bar.py +0 -0
  167. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/progress_bar/progress_bar.py +0 -0
  168. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/progress_bar/progress_bar_pool.py +0 -0
  169. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/protocols/__init__.py +0 -0
  170. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/protocols/dictable.py +0 -0
  171. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/protocols/evaluable.py +0 -0
  172. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/protocols/serializable.py +0 -0
  173. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/py.typed +0 -0
  174. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/random_.py +0 -0
  175. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/class_/__init__.py +0 -0
  176. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/class_/class_reflection.py +0 -0
  177. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/file/__init__.py +0 -0
  178. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/file/file_reflection.py +0 -0
  179. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/function/__init__.py +0 -0
  180. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/function/function_reflections.py +0 -0
  181. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/__init__.py +0 -0
  182. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/callstack.py +0 -0
  183. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/get_traceback.py +0 -0
  184. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/interpreter.py +0 -0
  185. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/is_debugging.py +0 -0
  186. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/os_.py +0 -0
  187. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/packages.py +0 -0
  188. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/python_version.py +0 -0
  189. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/signals.py +0 -0
  190. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/interpreter/tracer.py +0 -0
  191. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/module/__init__.py +0 -0
  192. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/module/module_reflections.py +0 -0
  193. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/reflection/module/package_reflection.py +0 -0
  194. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/__init__.py +0 -0
  195. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/__init__.py +0 -0
  196. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/constant_backoff.py +0 -0
  197. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/exponential_backoff.py +0 -0
  198. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/functional_backoff.py +0 -0
  199. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/linear_backoff.py +0 -0
  200. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/multiplicative_backoff.py +0 -0
  201. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategies/no_backoff.py +0 -0
  202. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/backoff_strategy.py +0 -0
  203. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/retry_executor/retry_executor.py +0 -0
  204. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/snippets/__init__.py +0 -0
  205. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/snippets/try_get.py +0 -0
  206. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/__init__.py +0 -0
  207. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/independent.py +0 -0
  208. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/layered_command.py +0 -0
  209. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/windows/__init__.py +0 -0
  210. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/windows/utils/__init__.py +0 -0
  211. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/windows/utils/filetime.py +0 -0
  212. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/system/windows/windows.py +0 -0
  213. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/testing/__init__.py +0 -0
  214. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/testing/unittest_/__init__.py +0 -0
  215. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/testing/unittest_/always_teardown_testcase.py +0 -0
  216. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/testing/unittest_/auto_cwd_testcase.py +0 -0
  217. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/text.py +0 -0
  218. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/time.py +0 -0
  219. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/__init__.py +0 -0
  220. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/__init__.py +0 -0
  221. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/discreate_finite_automaton.py +0 -0
  222. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/languages/__init__.py +0 -0
  223. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/languages/language.py +0 -0
  224. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/languages/sat.py +0 -0
  225. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/computability_and_complexity/turing_machine.py +0 -0
  226. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/databases/__init__.py +0 -0
  227. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/databases/all.py +0 -0
  228. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/__init__.py +0 -0
  229. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/__init__.py +0 -0
  230. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/encoding.py +0 -0
  231. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossless/__init__.py +0 -0
  232. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossless/huffman.py +0 -0
  233. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossless/lossless_encoding.py +0 -0
  234. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossless/lzw.py +0 -0
  235. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossless/run_length.py +0 -0
  236. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossy/__init__.py +0 -0
  237. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/encoding/lossy/lossy_encoding.py +0 -0
  238. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/__init__.py +0 -0
  239. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/gaussian.py +0 -0
  240. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/gradient.py +0 -0
  241. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/hough.py +0 -0
  242. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/laplacian.py +0 -0
  243. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/image_proccesing/tansformations/transformation.py +0 -0
  244. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/linear_algebra/__init__.py +0 -0
  245. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/linear_algebra/matrix.py +0 -0
  246. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/machine_learning/__init__.py +0 -0
  247. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/machine_learning/activation_functions/__init__.py +0 -0
  248. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/machine_learning/activation_functions/activation_function.py +0 -0
  249. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/machine_learning/activation_functions/relu.py +0 -0
  250. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/machine_learning/neuron.py +0 -0
  251. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/oop/__init__.py +0 -0
  252. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/oop/observer.py +0 -0
  253. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/oop/strategy.py +0 -0
  254. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/__init__.py +0 -0
  255. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/__init__.py +0 -0
  256. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/conditional_variable.py +0 -0
  257. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/continuous/__init__.py +0 -0
  258. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/__init__.py +0 -0
  259. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/bernoulli.py +0 -0
  260. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/binomial.py +0 -0
  261. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/conditional_from_discrete_probability_func.py +0 -0
  262. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/discrete.py +0 -0
  263. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/geometric.py +0 -0
  264. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/poisson.py +0 -0
  265. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/conditional_variable/discrete/uniform.py +0 -0
  266. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/distributions.py +0 -0
  267. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/expressions/__init__.py +0 -0
  268. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/expressions/accumulation_expression.py +0 -0
  269. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/expressions/probability_expression.py +0 -0
  270. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/funcs/__init__.py +0 -0
  271. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/funcs/covariance.py +0 -0
  272. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/funcs/expected_value.py +0 -0
  273. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/funcs/probability_function.py +0 -0
  274. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/funcs/variance.py +0 -0
  275. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/operator.py +0 -0
  276. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/protocols.py +0 -0
  277. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/supp.py +0 -0
  278. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/university/probability/transformation.py +0 -0
  279. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils/versioned_imports.py +0 -0
  280. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils.egg-info/dependency_links.txt +0 -0
  281. {danielutils-1.0.46 → danielutils-1.0.51}/danielutils.egg-info/top_level.txt +0 -0
  282. {danielutils-1.0.46 → danielutils-1.0.51}/setup.cfg +0 -0
  283. {danielutils-1.0.46 → danielutils-1.0.51}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: danielutils
3
- Version: 1.0.46
3
+ Version: 1.0.51
4
4
  Summary: A python utils library for things I find useful
5
5
  Author-email: danielnachumdev <danielnachumdev@gmail.com>
6
6
  License: MIT License
@@ -41,7 +41,7 @@ Dynamic: license-file
41
41
  [![gitleaks](https://github.com/danielnachumdev/danielutils/actions/workflows/gitleaks.yml/badge.svg)](https://github.com/danielnachumdev/danielutils/actions/workflows/gitleaks.yml)
42
42
  [![CodeQL](https://github.com/danielnachumdev/danielutils/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/danielnachumdev/danielutils/actions/workflows/github-code-scanning/codeql)
43
43
 
44
- # danielutils v1.0.46
44
+ # danielutils v1.0.51
45
45
 
46
46
  A comprehensive Python utilities library designed to enhance your development workflow with powerful tools for type safety, async programming, database operations, and much more.
47
47
 
@@ -4,7 +4,7 @@
4
4
  [![gitleaks](https://github.com/danielnachumdev/danielutils/actions/workflows/gitleaks.yml/badge.svg)](https://github.com/danielnachumdev/danielutils/actions/workflows/gitleaks.yml)
5
5
  [![CodeQL](https://github.com/danielnachumdev/danielutils/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/danielnachumdev/danielutils/actions/workflows/github-code-scanning/codeql)
6
6
 
7
- # danielutils v1.0.46
7
+ # danielutils v1.0.51
8
8
 
9
9
  A comprehensive Python utilities library designed to enhance your development workflow with powerful tools for type safety, async programming, database operations, and much more.
10
10
 
@@ -238,7 +238,7 @@ class DatabaseInitializer(ABC):
238
238
  await db.create_table(expected_schema)
239
239
  else:
240
240
  logger.info(f"Validating table '{table_name}'")
241
- if not validate_schema(db, table_name, expected_schema):
241
+ if not await validate_schema(db, table_name, expected_schema):
242
242
  raise ValueError(
243
243
  f"Schema validation failed for table '{table_name}'. "
244
244
  "Please check the logs for details."
@@ -53,7 +53,8 @@ class FileSpecification:
53
53
 
54
54
  def open(self, path: str):
55
55
  if not path.endswith(self.extension):
56
- raise ValueError(f"Invalid file extension, expected {self.extension}")
56
+ raise ValueError(
57
+ f"Invalid file extension, expected {self.extension}")
57
58
  with open(path, "rb") as f:
58
59
  lines = f.readlines()
59
60
  for line in lines:
@@ -70,7 +70,7 @@ class _LoggerImpl:
70
70
 
71
71
  class Logger:
72
72
  @classmethod
73
- def __init_subclass__(cls, **kwargs):
73
+ def __init_subclass__(cls, **kwargs) -> None:
74
74
  cls._logger = _LoggerImpl(cls)
75
75
  cls._registered_loggers: List[LoggerStrategyImplBase] = []
76
76
  cls.init_subscribers()
@@ -0,0 +1,6 @@
1
+ from .interpreter import * # this has to be first, the order matters!
2
+ from .file import *
3
+ from .function import *
4
+ from .info_classes import *
5
+ from .class_ import *
6
+ from .module import *
@@ -0,0 +1,6 @@
1
+ from .argument_info import *
2
+ from .class_info import *
3
+ from .decorator_info import *
4
+ from .file_info import *
5
+ from .function_info import *
6
+ from .import_info import *
@@ -53,7 +53,8 @@ class ArgumentInfo:
53
53
 
54
54
  @property
55
55
  def is_parameterized(self) -> bool:
56
- return self._parameters is not None and len(self.parameters) > 0 # type: ignore
56
+ # type: ignore
57
+ return self._parameters is not None and len(self.parameters) > 0
57
58
 
58
59
  def __repr__(self) -> str:
59
60
  res = f"{self.__class__.__name__}(name=\"{self.name}\""
@@ -62,7 +63,7 @@ class ArgumentInfo:
62
63
  if self.default is not None:
63
64
  res += f", default={self.default}"
64
65
  if self.is_parameterized:
65
- res+=f", parameters={self.parameters}"
66
+ res += f", parameters={self.parameters}"
66
67
  return res + ")"
67
68
 
68
69
  def __str__(self) -> str:
@@ -75,8 +76,11 @@ class ArgumentInfo:
75
76
  raise ValueError(f"Invalid argument info string: {string}")
76
77
 
77
78
  kwargs, args, kwarg_only, pname, parameters, name, type, default_value = m.groups()
79
+ type = None if type is None else type.strip()
80
+ default_value = None if default_value is None else default_value.strip()
78
81
  return ArgumentInfo(
79
- name=name or pname,
82
+ name=name or pname or (args.strip("*") if args else None) or (
83
+ kwargs.strip("*") if kwargs else None) or (kwarg_only.strip("/") if kwarg_only else None) or None,
80
84
  type=type,
81
85
  default=default_value,
82
86
  is_kwargs=kwargs is not None,
@@ -90,6 +94,9 @@ class ArgumentInfo:
90
94
  if string is None:
91
95
  return []
92
96
  string = string.strip()
97
+ if not string:
98
+ return []
99
+ string = string.strip()
93
100
  indices = [-1]
94
101
  stack: List[str] = []
95
102
  for i, c in enumerate(string):
@@ -1,16 +1,17 @@
1
1
  import inspect
2
2
  import json
3
3
  import re
4
- from typing import Optional, List, Iterable, Type, TypeVar, Generic, get_origin
4
+ from typing import List, Iterable, Type, TypeVar, Generic, get_origin
5
5
  from .function_info import FunctionInfo
6
- from .decoration_info import DecorationInfo
6
+ from .decorator_info import DecoratorInfo
7
7
  from .argument_info import ArgumentInfo
8
- from ..functions import isoftype
8
+ from ...functions import isoftype
9
9
 
10
10
  T = TypeVar("T")
11
11
 
12
12
 
13
- class _A(Generic[T]): ...
13
+ class _A(Generic[T]):
14
+ ...
14
15
 
15
16
 
16
17
  _GenericAlias = type(_A[int])
@@ -34,7 +35,7 @@ class ClassInfo:
34
35
  self._name: str = ""
35
36
  self._bases: List[ArgumentInfo] = []
36
37
  self._functions: List[FunctionInfo] = []
37
- self._decorations: List[DecorationInfo] = []
38
+ self._decorations: List[DecoratorInfo] = []
38
39
  self._parse_src_code()
39
40
 
40
41
  def _parse_src_code(self) -> None:
@@ -49,7 +50,8 @@ class ClassInfo:
49
50
 
50
51
  if decorators is not None:
51
52
  for substr in decorators.strip().splitlines():
52
- self._decorations.append(DecorationInfo.from_str(substr.strip()))
53
+ self._decorations.append(
54
+ DecoratorInfo.from_str(substr.strip()))
53
55
 
54
56
  def _parse_body(self) -> None:
55
57
  for attr in dir(self._cls):
@@ -62,10 +64,16 @@ class ClassInfo:
62
64
  elif inspect.isdatadescriptor(obj):
63
65
  inspect.getsource(obj.fget) # type:ignore
64
66
  else:
65
- raise Exception()
67
+ continue
66
68
  except:
67
69
  continue
68
- self._functions.append(FunctionInfo(obj, self._cls))
70
+
71
+ try:
72
+ self._functions.append(FunctionInfo(
73
+ obj, self._cls)) # type: ignore
74
+ except Exception as e:
75
+ raise Exception(
76
+ f"Error parsing function '{attr}' of class '{self._name}': {e}", e) from e
69
77
 
70
78
  def __str__(self) -> str:
71
79
  body = json.dumps({
@@ -86,7 +94,7 @@ class ClassInfo:
86
94
  return self._name
87
95
 
88
96
  @property
89
- def decorations(self) -> List[DecorationInfo]:
97
+ def decorations(self) -> List[DecoratorInfo]:
90
98
  return self._decorations
91
99
 
92
100
  @property
@@ -5,8 +5,9 @@ from typing import Optional, List
5
5
  from .argument_info import ArgumentInfo
6
6
 
7
7
 
8
- class DecorationInfo:
9
- DECORATOR_INFO_REGEX: re.Pattern = re.compile(r"^@?(?P<name>\w[\w\d]*)(?:\((?P<arguments>.*)\))?")
8
+ class DecoratorInfo:
9
+ DECORATOR_INFO_REGEX: re.Pattern = re.compile(
10
+ r"^@?(?P<name>\w[\w\d]*)(?:\((?P<arguments>.*)\))?")
10
11
 
11
12
  def __init__(self, name: str, arguments: List[ArgumentInfo]):
12
13
  self._name = name
@@ -21,14 +22,14 @@ class DecorationInfo:
21
22
  return self._arguments
22
23
 
23
24
  @staticmethod
24
- def from_str(string: str) -> 'DecorationInfo':
25
- m = DecorationInfo.DECORATOR_INFO_REGEX.match(string)
25
+ def from_str(string: str) -> 'DecoratorInfo':
26
+ m = DecoratorInfo.DECORATOR_INFO_REGEX.match(string)
26
27
  if m is None:
27
28
  raise ValueError()
28
29
 
29
30
  name, arguments = m.groups()
30
31
  args = ArgumentInfo.from_str(arguments)
31
- return DecorationInfo(name, args)
32
+ return DecoratorInfo(name, args)
32
33
 
33
34
  def __str__(self) -> str:
34
35
  return repr(self)
@@ -40,5 +41,5 @@ class DecorationInfo:
40
41
 
41
42
 
42
43
  __all__ = [
43
- 'DecorationInfo',
44
+ 'DecoratorInfo',
44
45
  ]