osbot-utils 2.73.0__py3-none-any.whl → 2.74.0__py3-none-any.whl

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 (122) hide show
  1. osbot_utils/helpers/flows/actions/Flow__Data.py +1 -1
  2. osbot_utils/helpers/flows/models/Flow_Run__Event.py +6 -5
  3. osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py +1 -1
  4. osbot_utils/helpers/flows/models/Schema__Flow__Result.py +1 -1
  5. osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py +1 -1
  6. osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py +1 -1
  7. osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py +1 -1
  8. osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py +1 -1
  9. osbot_utils/helpers/generators/Generator_Manager.py +1 -1
  10. osbot_utils/helpers/generators/Model__Generator_Target.py +1 -1
  11. osbot_utils/helpers/html/schemas/Schema__Html_Document.py +1 -1
  12. osbot_utils/helpers/llms/actions/LLM_Request__Execute.py +2 -1
  13. osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py +10 -10
  14. osbot_utils/helpers/llms/builders/LLM_Request__Builder.py +3 -2
  15. osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py +2 -1
  16. osbot_utils/helpers/llms/builders/LLM_Request__Factory.py +1 -1
  17. osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py +7 -6
  18. osbot_utils/helpers/llms/cache/LLM_Request__Cache.py +10 -10
  19. osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py +5 -3
  20. osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py +2 -2
  21. osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py +7 -7
  22. osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py +7 -7
  23. osbot_utils/helpers/llms/schemas/Safe_Str__LLM__Model_Name.py +1 -1
  24. osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py +6 -5
  25. osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py +2 -1
  26. osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py +1 -1
  27. osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py +7 -6
  28. osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +1 -1
  29. osbot_utils/helpers/xml/rss/RSS__Item.py +1 -1
  30. osbot_utils/type_safe/Type_Safe.py +11 -10
  31. osbot_utils/type_safe/Type_Safe__Base.py +3 -3
  32. osbot_utils/{helpers → type_safe/primitives}/safe_float/Safe_Float__Engineering.py +2 -1
  33. osbot_utils/{helpers → type_safe/primitives}/safe_float/Safe_Float__Money.py +1 -2
  34. osbot_utils/{helpers → type_safe/primitives}/safe_float/Safe_Float__Percentage_Exact.py +1 -1
  35. osbot_utils/{helpers → type_safe/primitives}/safe_int/Safe_Int.py +3 -3
  36. osbot_utils/{helpers → type_safe/primitives}/safe_int/__init__.py +1 -1
  37. osbot_utils/{helpers → type_safe/primitives}/safe_str/Safe_Str.py +3 -3
  38. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/cryptography/hashes}/Safe_Str__Hash.py +3 -3
  39. osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1.py +26 -0
  40. osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1__Short.py +24 -0
  41. osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Private_Key.py +27 -0
  42. osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Public_Key.py +28 -0
  43. osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Schema__NaCl__Keys.py +8 -0
  44. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/filesystem}/Safe_Str__File__Name.py +1 -1
  45. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/filesystem}/Safe_Str__File__Path.py +1 -1
  46. osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Branch.py +27 -0
  47. osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref.py +63 -0
  48. osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref_Base.py +73 -0
  49. osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Tag.py +17 -0
  50. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/git}/Safe_Str__Version.py +2 -2
  51. osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo.py +46 -0
  52. osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Name.py +35 -0
  53. osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Owner.py +39 -0
  54. osbot_utils/type_safe/primitives/safe_str/github/__init__.py +0 -0
  55. osbot_utils/{helpers → type_safe/primitives}/safe_str/http/Safe_Str__Http__Content_Type.py +1 -1
  56. osbot_utils/{helpers → type_safe/primitives}/safe_str/http/Safe_Str__Http__ETag.py +1 -1
  57. osbot_utils/{helpers → type_safe/primitives}/safe_str/http/Safe_Str__Http__Last_Modified.py +1 -1
  58. osbot_utils/{helpers → type_safe/primitives}/safe_str/http/Safe_Str__Http__Text.py +1 -1
  59. osbot_utils/type_safe/primitives/safe_str/http/__init__.py +0 -0
  60. osbot_utils/{helpers → type_safe/primitives/safe_str/identifiers}/Guid.py +3 -2
  61. osbot_utils/type_safe/primitives/safe_str/identifiers/__init__.py +0 -0
  62. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/text}/Safe_Str__Text.py +1 -1
  63. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/text}/Safe_Str__Text__Dangerous.py +1 -1
  64. osbot_utils/type_safe/primitives/safe_str/text/__init__.py +0 -0
  65. osbot_utils/{helpers/safe_str/http → type_safe/primitives/safe_str/web}/Safe_Str__Html.py +1 -1
  66. osbot_utils/{helpers/safe_str → type_safe/primitives/safe_str/web}/Safe_Str__Url.py +1 -1
  67. osbot_utils/type_safe/primitives/safe_str/web/__init__.py +0 -0
  68. osbot_utils/{helpers/safe_int → type_safe/primitives/safe_uint}/Safe_UInt.py +2 -1
  69. osbot_utils/{helpers/safe_int → type_safe/primitives/safe_uint}/Safe_UInt__Byte.py +1 -1
  70. osbot_utils/{helpers/safe_int → type_safe/primitives/safe_uint}/Safe_UInt__FileSize.py +1 -1
  71. osbot_utils/{helpers/safe_int → type_safe/primitives/safe_uint}/Safe_UInt__Percentage.py +1 -1
  72. osbot_utils/{helpers/safe_int → type_safe/primitives/safe_uint}/Safe_UInt__Port.py +1 -1
  73. osbot_utils/type_safe/primitives/safe_uint/__init__.py +0 -0
  74. osbot_utils/type_safe/type_safe_core/__init__.py +0 -0
  75. osbot_utils/type_safe/{Type_Safe__Dict.py → type_safe_core/collections/Type_Safe__Dict.py} +4 -3
  76. osbot_utils/type_safe/type_safe_core/collections/__init__.py +0 -0
  77. osbot_utils/type_safe/type_safe_core/decorators/__init__.py +0 -0
  78. osbot_utils/type_safe/{decorators → type_safe_core/decorators}/type_safe.py +2 -1
  79. osbot_utils/type_safe/{Type_Safe__Method.py → type_safe_core/methods/Type_Safe__Method.py} +4 -5
  80. osbot_utils/type_safe/type_safe_core/methods/__init__.py +0 -0
  81. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Annotations.py +1 -1
  82. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Cache.py +3 -3
  83. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Convert.py +3 -3
  84. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Json_Compressor.py +6 -6
  85. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Raise_Exception.py +1 -1
  86. osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Validation.py +8 -7
  87. osbot_utils/type_safe/type_safe_core/shared/__init__.py +0 -0
  88. osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__Class_Kwargs.py +8 -7
  89. osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__Default_Value.py +6 -6
  90. osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__From_Json.py +16 -17
  91. osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__Init.py +7 -6
  92. osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__Set_Attr.py +7 -7
  93. osbot_utils/type_safe/type_safe_core/steps/__init__.py +0 -0
  94. osbot_utils/utils/Files.py +2 -3
  95. osbot_utils/version +1 -1
  96. {osbot_utils-2.73.0.dist-info → osbot_utils-2.74.0.dist-info}/METADATA +3 -3
  97. {osbot_utils-2.73.0.dist-info → osbot_utils-2.74.0.dist-info}/RECORD +122 -98
  98. /osbot_utils/{helpers/safe_float → type_safe/primitives}/__init__.py +0 -0
  99. /osbot_utils/{helpers → type_safe/primitives}/safe_float/Safe_Float.py +0 -0
  100. /osbot_utils/{helpers/safe_str → type_safe/primitives/safe_float}/__init__.py +0 -0
  101. /osbot_utils/{helpers → type_safe/primitives/safe_int}/Timestamp_Now.py +0 -0
  102. /osbot_utils/{helpers/safe_str/schemas → type_safe/primitives/safe_str}/Enum__Safe_Str__Regex_Mode.py +0 -0
  103. /osbot_utils/{helpers/safe_str/http → type_safe/primitives/safe_str}/__init__.py +0 -0
  104. /osbot_utils/{helpers/safe_str/schemas → type_safe/primitives/safe_str/cryptography}/__init__.py +0 -0
  105. /osbot_utils/type_safe/{decorators → primitives/safe_str/cryptography/hashes}/__init__.py +0 -0
  106. /osbot_utils/type_safe/{methods → primitives/safe_str/cryptography/nacl}/__init__.py +0 -0
  107. /osbot_utils/type_safe/{shared → primitives/safe_str/filesystem}/__init__.py +0 -0
  108. /osbot_utils/type_safe/{steps → primitives/safe_str/git}/__init__.py +0 -0
  109. /osbot_utils/{helpers → type_safe/primitives/safe_str/identifiers}/Random_Guid.py +0 -0
  110. /osbot_utils/{helpers → type_safe/primitives/safe_str/identifiers}/Random_Guid_Short.py +0 -0
  111. /osbot_utils/{helpers → type_safe/primitives/safe_str/identifiers}/Safe_Id.py +0 -0
  112. /osbot_utils/{helpers/safe_str/http → type_safe/primitives/safe_str/web}/Safe_Str__IP_Address.py +0 -0
  113. /osbot_utils/type_safe/{Type_Safe__List.py → type_safe_core/collections/Type_Safe__List.py} +0 -0
  114. /osbot_utils/type_safe/{Type_Safe__Set.py → type_safe_core/collections/Type_Safe__Set.py} +0 -0
  115. /osbot_utils/type_safe/{Type_Safe__Tuple.py → type_safe_core/collections/Type_Safe__Tuple.py} +0 -0
  116. /osbot_utils/type_safe/{methods → type_safe_core/methods}/type_safe_property.py +0 -0
  117. /osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Json_Compressor__Type_Registry.py +0 -0
  118. /osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Not_Cached.py +0 -0
  119. /osbot_utils/type_safe/{shared → type_safe_core/shared}/Type_Safe__Shared__Variables.py +0 -0
  120. /osbot_utils/type_safe/{steps → type_safe_core/steps}/Type_Safe__Step__Default_Kwargs.py +0 -0
  121. {osbot_utils-2.73.0.dist-info → osbot_utils-2.74.0.dist-info}/LICENSE +0 -0
  122. {osbot_utils-2.73.0.dist-info → osbot_utils-2.74.0.dist-info}/WHEEL +0 -0
@@ -1,10 +1,11 @@
1
- from typing import Dict, Any, Type
2
- from osbot_utils.helpers.Obj_Id import Obj_Id
3
- from osbot_utils.helpers.Random_Guid import Random_Guid
4
- from osbot_utils.type_safe.shared.Type_Safe__Cache import Type_Safe__Cache, type_safe_cache
5
- from osbot_utils.type_safe.shared.Type_Safe__Shared__Variables import IMMUTABLE_TYPES
6
- from osbot_utils.type_safe.shared.Type_Safe__Validation import type_safe_validation
7
- from osbot_utils.type_safe.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value
1
+ from typing import Dict, Any, Type
2
+ from osbot_utils.helpers.Obj_Id import Obj_Id
3
+ from osbot_utils.type_safe.primitives.safe_str.identifiers.Random_Guid import Random_Guid
4
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache, Type_Safe__Cache
5
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Shared__Variables import IMMUTABLE_TYPES
6
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Validation import type_safe_validation
7
+ from osbot_utils.type_safe.type_safe_core.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value
8
+
8
9
 
9
10
  class Type_Safe__Step__Class_Kwargs: # Handles class-level keyword arguments processing
10
11
 
@@ -1,12 +1,12 @@
1
1
  import sys
2
2
  import inspect
3
3
  import typing
4
- from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
5
- from osbot_utils.type_safe.Type_Safe__Tuple import Type_Safe__Tuple
6
- from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
7
- from osbot_utils.utils.Objects import default_value
8
- from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
9
- from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
4
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Dict import Type_Safe__Dict
5
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
6
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Set import Type_Safe__Set
7
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Tuple import Type_Safe__Tuple
8
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
9
+ from osbot_utils.utils.Objects import default_value
10
10
 
11
11
 
12
12
  # Backport implementations of get_args for Python 3.7 # todo: refactor into separate class (focused on past python version compatibility)
@@ -1,20 +1,21 @@
1
1
  import sys
2
2
  import types
3
- from decimal import Decimal
4
- from enum import EnumMeta
5
- from osbot_utils.helpers.Obj_Id import Obj_Id
6
- from osbot_utils.helpers.safe_str.Safe_Str__Hash import Safe_Str__Hash
7
- from osbot_utils.type_safe.Type_Safe import Type_Safe
8
- from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
9
- from osbot_utils.helpers.Random_Guid import Random_Guid
10
- from osbot_utils.helpers.Random_Guid_Short import Random_Guid_Short
11
- from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
12
- from osbot_utils.type_safe.shared.Type_Safe__Annotations import type_safe_annotations
13
- from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
14
- from osbot_utils.type_safe.shared.Type_Safe__Convert import type_safe_convert
15
- from osbot_utils.utils.Objects import enum_from_value
16
- from osbot_utils.helpers.Safe_Id import Safe_Id
17
- from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
3
+ from decimal import Decimal
4
+ from enum import EnumMeta
5
+ from osbot_utils.helpers.Obj_Id import Obj_Id
6
+ from osbot_utils.type_safe.Type_Safe import Type_Safe
7
+ from osbot_utils.type_safe.primitives.safe_str.identifiers.Random_Guid import Random_Guid
8
+ from osbot_utils.type_safe.primitives.safe_str.identifiers.Random_Guid_Short import Random_Guid_Short
9
+ from osbot_utils.type_safe.primitives.safe_str.cryptography.hashes.Safe_Str__Hash import Safe_Str__Hash
10
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Dict import Type_Safe__Dict
11
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
12
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Set import Type_Safe__Set
13
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Annotations import type_safe_annotations
14
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
15
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Convert import type_safe_convert
16
+ from osbot_utils.utils.Objects import enum_from_value
17
+ from osbot_utils.type_safe.primitives.safe_str.identifiers.Safe_Id import Safe_Id
18
+ from osbot_utils.type_safe.primitives.safe_int.Timestamp_Now import Timestamp_Now
18
19
 
19
20
  # todo; refactor all this python compatibility into the python_3_8 class
20
21
  if sys.version_info < (3, 8): # pragma: no cover
@@ -148,8 +149,6 @@ class Type_Safe__Step__From_Json:
148
149
  return value
149
150
 
150
151
  def deserialize_dict__using_key_value_annotations(self, _self, key, value):
151
- from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
152
-
153
152
  annotations = type_safe_cache.get_obj_annotations(_self)
154
153
  dict_annotations_tuple = get_args(annotations.get(key))
155
154
  if not dict_annotations_tuple: # happens when the value is a dict/Dict with no annotations
@@ -1,7 +1,12 @@
1
1
  from enum import EnumMeta
2
2
  from typing import ForwardRef
3
- from osbot_utils.type_safe.shared.Type_Safe__Annotations import type_safe_annotations
4
- from osbot_utils.type_safe.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value, get_args
3
+
4
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Dict import Type_Safe__Dict
5
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
6
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Set import Type_Safe__Set
7
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__Tuple import Type_Safe__Tuple
8
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Annotations import type_safe_annotations
9
+ from osbot_utils.type_safe.type_safe_core.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value, get_args
5
10
 
6
11
 
7
12
  class Type_Safe__Step__Init:
@@ -46,7 +51,6 @@ class Type_Safe__Step__Init:
46
51
  value = type_safe_step_default_value.default_value(__self.__class__, annotation) # Use default_value to create the proper type-safe container
47
52
  # Handle non-empty list
48
53
  elif origin is list and isinstance(value, list):
49
- from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
50
54
  item_type = get_args(annotation)[0]
51
55
  if isinstance(item_type, ForwardRef):
52
56
  forward_name = item_type.__forward_arg__
@@ -59,7 +63,6 @@ class Type_Safe__Step__Init:
59
63
 
60
64
  # Handle non-empty set
61
65
  elif origin is set and isinstance(value, set):
62
- from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
63
66
  item_type = get_args(annotation)[0]
64
67
  type_safe_set = Type_Safe__Set(expected_type=item_type)
65
68
  for item in value:
@@ -68,13 +71,11 @@ class Type_Safe__Step__Init:
68
71
 
69
72
  # Handle non-empty tuple
70
73
  elif origin is tuple and isinstance(value, tuple):
71
- from osbot_utils.type_safe.Type_Safe__Tuple import Type_Safe__Tuple
72
74
  item_types = get_args(annotation)
73
75
  return Type_Safe__Tuple(expected_types=item_types, items=value)
74
76
 
75
77
  # Handle non-empty dict
76
78
  elif origin is dict and isinstance(value, dict):
77
- from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
78
79
  key_type, value_type = get_args(annotation)
79
80
  type_safe_dict = Type_Safe__Dict(expected_key_type=key_type, expected_value_type=value_type)
80
81
  for k, v in value.items():
@@ -1,9 +1,9 @@
1
1
  from typing import get_origin, Annotated, get_args
2
- from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
3
2
  from osbot_utils.type_safe.Type_Safe__Primitive import Type_Safe__Primitive
4
- from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
5
- from osbot_utils.type_safe.shared.Type_Safe__Convert import type_safe_convert
6
- from osbot_utils.type_safe.shared.Type_Safe__Validation import type_safe_validation
3
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
4
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
5
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Convert import type_safe_convert
6
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Validation import type_safe_validation
7
7
  from osbot_utils.type_safe.validators.Type_Safe__Validator import Type_Safe__Validator
8
8
 
9
9
  class Type_Safe__Step__Set_Attr:
@@ -67,9 +67,9 @@ class Type_Safe__Step__Set_Attr:
67
67
  attribute.validate(value=value, field_name=name, target_type=target_type)
68
68
 
69
69
  def handle_get_class__dict(self, _self, name, value):
70
- if value: # todo: see side effects of doing this here (since going into deserialize_dict__using_key_value_annotations has performance hit)
71
- from osbot_utils.type_safe.steps.Type_Safe__Step__From_Json import Type_Safe__Step__From_Json # here because of circular dependencies
72
- value = Type_Safe__Step__From_Json().deserialize_dict__using_key_value_annotations(_self, name, value) # todo: refactor how this actually works since it is not good to having to use the deserialize_dict__using_key_value_annotations from here
70
+ if value: # todo: see side effects of doing this here (since going into deserialize_dict__using_key_value_annotations has performance hit)
71
+ from osbot_utils.type_safe.type_safe_core.steps.Type_Safe__Step__From_Json import Type_Safe__Step__From_Json # here because of circular dependencies
72
+ value = Type_Safe__Step__From_Json().deserialize_dict__using_key_value_annotations(_self, name, value) # todo: refactor how this actually works since it is not good to having to use the deserialize_dict__using_key_value_annotations from here
73
73
  return value
74
74
 
75
75
  def handle_get_class(self, _self, annotations, name, value):
File without changes
@@ -1,7 +1,6 @@
1
1
  import os
2
- from typing import Union, List
3
-
4
- from osbot_utils.helpers.safe_str.Safe_Str__File__Path import Safe_Str__File__Path
2
+ from typing import Union, List
3
+ from osbot_utils.type_safe.primitives.safe_str.filesystem.Safe_Str__File__Path import Safe_Str__File__Path
5
4
 
6
5
 
7
6
  class Files:
osbot_utils/version CHANGED
@@ -1 +1 @@
1
- v2.73.0
1
+ v2.74.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: osbot_utils
3
- Version: 2.73.0
3
+ Version: 2.74.0
4
4
  Summary: OWASP Security Bot - Utils
5
5
  License: MIT
6
6
  Author: Dinis Cruz
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
 
22
22
  # OSBot-Utils
23
23
 
24
- ![Current Release](https://img.shields.io/badge/release-v2.73.0-blue)
24
+ ![Current Release](https://img.shields.io/badge/release-v2.74.0-blue)
25
25
  ![Python](https://img.shields.io/badge/python-3.8+-green)
26
26
  ![Type-Safe](https://img.shields.io/badge/Type--Safe-✓-brightgreen)
27
27
  ![Caching](https://img.shields.io/badge/Caching-Built--In-orange)
@@ -61,7 +61,7 @@ pip install git+https://github.com/owasp-sbot/OSBot-Utils.git@dev
61
61
  ### Using Type-Safe Primitives
62
62
 
63
63
  ```python
64
- from osbot_utils.helpers.safe_str.Safe_Str import Safe_Str
64
+ from osbot_utils.type_safe.primitives.safe_str.Safe_Str import Safe_Str
65
65
 
66
66
  class Username(Safe_Str):
67
67
  max_length = 20
@@ -34,19 +34,14 @@ osbot_utils/helpers/CFormat.py,sha256=QviXlx3cQF7Wq6bNQmvWPHknDDMQXg5bh5dsRncrg-
34
34
  osbot_utils/helpers/CPrint.py,sha256=8iCkLaPozi3anzLQ-kPfJTtfLZdOrgpGNJs5UNjGJ9g,1346
35
35
  osbot_utils/helpers/Dependency_Manager.py,sha256=79YRYnVfchewq8iSMJ5dzwW2D5u8chWcIqYE-G9YrSo,1337
36
36
  osbot_utils/helpers/Dict_To_Attr.py,sha256=NdhXl5mJH7-NaBk213amzc5Nfy3tJgW-N_uYIRE4hoc,208
37
- osbot_utils/helpers/Guid.py,sha256=0Ay3TYYk2nPr-JRVRCMFxbr8OvoQomv5HjT7o5B7cos,827
38
37
  osbot_utils/helpers/Hashicorp_Secrets.py,sha256=e2fWWHK6bubpAm1sw5y8X5kh2Hk5d4JyZCnUovZip5A,4232
39
38
  osbot_utils/helpers/Local_Cache.py,sha256=67qmeVXUBhfqLUQhjFBE9Pjt5dcjpQYhqCTGQNWgVSU,3232
40
39
  osbot_utils/helpers/Local_Caches.py,sha256=LUeNJX07Ccnp1SIhYvhqqQFVF6r_Ez7bWha8ssomuvY,1957
41
40
  osbot_utils/helpers/Obj_Id.py,sha256=T6HF8khO7u1C688Ref_8Li2zxowRc9pIghUkMwb6H1c,1023
42
41
  osbot_utils/helpers/Print_Table.py,sha256=LEXbyqGg_6WSraI4cob4bNNSu18ddqvALp1zGK7bPhs,19126
43
42
  osbot_utils/helpers/Python_Audit.py,sha256=shpZlluJwqJBAlad6xN01FkgC1TsQ48RLvR5ZjmrKa4,1539
44
- osbot_utils/helpers/Random_Guid.py,sha256=86xnlevsiitCzFB-VjjBmXXV14pbcKd67YWEDsYTCFk,483
45
- osbot_utils/helpers/Random_Guid_Short.py,sha256=YP_k5OLuYvXWGU2OEnQHk_OGViBQofTWKm3pUdQaJao,404
46
43
  osbot_utils/helpers/Random_Seed.py,sha256=14btja8LDN9cMGWaz4fCNcMRU_eyx49gas-_PQvHgy4,634
47
- osbot_utils/helpers/Safe_Id.py,sha256=Mj66QVcEHqUKDFb0cdl7cbMOlQKxfFuRxnupmKo6UG8,696
48
44
  osbot_utils/helpers/Str_ASCII.py,sha256=PRqyu449XnKrLn6b9Miii1Hv-GO5OAa1UhhgvlRcC2M,704
49
- osbot_utils/helpers/Timestamp_Now.py,sha256=OZwSwmYA1pZAnVglpx2lBL5t8Pu_HxzmYdNEJnmTqKI,536
50
45
  osbot_utils/helpers/Type_Registry.py,sha256=Ajk3SyMSKDi2g9SJYUtTgg7PZkAgydaHcpbGuEN3S94,311
51
46
  osbot_utils/helpers/Zip_Bytes.py,sha256=Bf17NPS_yxrzI_4FsCxkjlhS9ELJK3kisY-jHQPQVgw,4287
52
47
  osbot_utils/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -150,7 +145,7 @@ osbot_utils/helpers/duration/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
150
145
  osbot_utils/helpers/flows/Flow.py,sha256=WxpaWrbLhlkHtZuiTaNE8S9ocpmLcVQQL0C4PGzcDMY,13970
151
146
  osbot_utils/helpers/flows/Task.py,sha256=RfccOCev5XTsNoKuDJzK1JItF-Lm7P6FGCGZyh9swyY,7116
152
147
  osbot_utils/helpers/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- osbot_utils/helpers/flows/actions/Flow__Data.py,sha256=rgUggQo_z6KLtNa92KfzRG6ORdT_8ic5zJVuhk_st38,5064
148
+ osbot_utils/helpers/flows/actions/Flow__Data.py,sha256=9Vzh78t9lmKVQswIjD_antJQVW4gVHXAq858LkASa8k,5065
154
149
  osbot_utils/helpers/flows/actions/Flow__Events.py,sha256=g7KBafFeA7tV-v31v_m3MT__cZEX63gh8CehnZwRYU0,2840
155
150
  osbot_utils/helpers/flows/actions/Flow__Stats__Collector.py,sha256=GCszqIGj8yVlr283ZXiejDCof-tbDgynjzAdmhEqBWg,4155
156
151
  osbot_utils/helpers/flows/actions/Task__Stats__Collector.py,sha256=rDYABaHpikIAK0Odleu8-dZ9ECJZYDmgFdd0KvsbByI,1462
@@ -159,26 +154,26 @@ osbot_utils/helpers/flows/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
159
154
  osbot_utils/helpers/flows/decorators/flow.py,sha256=7wj5TtUO_ffbACnagZtZ6LfFgclmbQSfn2lKkMMrnJI,670
160
155
  osbot_utils/helpers/flows/decorators/task.py,sha256=Z5GqoUirnm98HAyvRlVcoXLcmZNagXjOXon2kb5OHsY,755
161
156
  osbot_utils/helpers/flows/models/Flow_Run__Config.py,sha256=eW7uYZngnmEv1PZOi3sMyJ3jaTlD6S7juzxaDkNO88Y,588
162
- osbot_utils/helpers/flows/models/Flow_Run__Event.py,sha256=2E-T6XXvsF2RnbIt5qq0rktOVBpembYvQudhoyM_6vc,589
157
+ osbot_utils/helpers/flows/models/Flow_Run__Event.py,sha256=Qgsgy_ecMK6XwFzVZ211JlDnc0xv8dP3Xe75NJM-_r8,650
163
158
  osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py,sha256=zIAhfz1oUs0ocxbfCPmgj8tsXt2Ycjo0nFdeetKlnZ8,400
164
159
  osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py,sha256=4wYRGAtztlhSV6XZa6DIfAAf7ZLp95KOIGU8G1EC4jc,373
165
- osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py,sha256=kNPj0KKnfklGpbzQnUe7GVL4cZ8bmMKwymDaoliI6yQ,393
166
- osbot_utils/helpers/flows/models/Schema__Flow__Result.py,sha256=mdj9Y333HDFvAbfhnkSed0NmcMNIVeZx2Cc6rqSx0lE,337
160
+ osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py,sha256=SABmtv1JWahSxAIaQZnn_ZROvMYAOGYRplnIWwptaH8,415
161
+ osbot_utils/helpers/flows/models/Schema__Flow__Result.py,sha256=Z64mVV6kY8x8v_WYvFKXiY-PuCfqObxN4g9qkw0PBv8,338
167
162
  osbot_utils/helpers/flows/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
163
  osbot_utils/helpers/flows/schemas/Schema__Flow.py,sha256=x52KtIGp985g79VAq8zASDqbVeYDJc3iwuz3Yzol4sk,540
169
- osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py,sha256=cqSreXlumqPnM_DfF5W1SAwM7fobr3yyQxeOPmXFm1Q,1583
170
- osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py,sha256=aeoJotmkYgtEsxyLp6YxoblQFscdAzadI5WOsfYG6-s,616
164
+ osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py,sha256=oDKt8wqnHiiWCVthdDqTqhd5Z0x4_j9-L_snFjyTfAU,1584
165
+ osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py,sha256=uWiVOpzKfr1xcYC9qVNG3IRqigAgzDN9OX8HEh4DWSU,617
171
166
  osbot_utils/helpers/flows/schemas/Schema__Flow__Event__Data.py,sha256=ugevIeeNIcXiusQiw8BqXikpl_BXvKZrZLZjYg5J9SQ,567
172
- osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py,sha256=OUjnExtlHlDZYQ8o2wLl_oRCUBu7rEoAjX_5__yaRI8,392
167
+ osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py,sha256=FUyjLZivJY8BGnGTcbUOL1gT0ExXKkrJ6_XlL3oARoA,414
173
168
  osbot_utils/helpers/flows/schemas/Schema__Flow__Stats.py,sha256=2YeYHTs7rlA5wGt9Jowr0z3b4ZzZF-0GGx_tCSttjOs,1171
174
169
  osbot_utils/helpers/flows/schemas/Schema__Flow__Status.py,sha256=3DSUTPqggnJhpHQAtGhiWj8zT2yRbq6MIQk31ap_5ds,181
175
- osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py,sha256=BQQvR02n1YAT59I70GT06MBdJbgaDnZBGhaV9Q90oBQ,657
170
+ osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py,sha256=Lh2hYLEva8ASCUpIIKxgO4fgshv4GXrszJFzHqDs5NU,679
176
171
  osbot_utils/helpers/flows/schemas/Schema__Task__Stats.py,sha256=DSja48dPeQPBzzJMtKjJrwEEHb4MqBv0nvm2YC_pTpk,858
177
172
  osbot_utils/helpers/flows/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
173
  osbot_utils/helpers/generators/Generator_Context_Manager.py,sha256=STpCn2Zh5G2TmyYMjeLMjfpkSYUUeU6mzV_O6Hu4g4Q,863
179
- osbot_utils/helpers/generators/Generator_Manager.py,sha256=XxE7ZZvziorolEM5FoMq-5yOFUi3yVaWcPB_XWHtm30,11728
174
+ osbot_utils/helpers/generators/Generator_Manager.py,sha256=N6HSGuPn7lOGAqQL1a5VgzU9uXtzrcdJhQAIj7oLHpg,11762
180
175
  osbot_utils/helpers/generators/Model__Generator_State.py,sha256=cS9tigdBIAvexip2VC8B0meegslzlu-cOosTDiEpe54,903
181
- osbot_utils/helpers/generators/Model__Generator_Target.py,sha256=Sh_1J0_RYOBYKqg19DP4_e2MPx6CHCzydkA56F8SjRs,816
176
+ osbot_utils/helpers/generators/Model__Generator_Target.py,sha256=Iz4bR4iRneH7lv9ul0xc_p52djTR0moR1SdyC3dUZxI,850
182
177
  osbot_utils/helpers/generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
178
  osbot_utils/helpers/html/CSS_Dict__To__Css.py,sha256=ZDIVfFCYO4UQsRprbx9vCosFqrnHizZUH-JgP5oZcuA,1102
184
179
  osbot_utils/helpers/html/Html_Dict__To__Html.py,sha256=Xa5J1elZBK1a5ae75ckenTtNOZs1XX87s1qmu73JatE,4547
@@ -199,38 +194,38 @@ osbot_utils/helpers/html/Tag__Link.py,sha256=rQ-gZN8EkSv5x1S-smdjvFflwMQHACHQXiO
199
194
  osbot_utils/helpers/html/Tag__Style.py,sha256=wRZ8DN1HVCtrnL4Flz82oByqJOy8Th40EhYCrZsuk2c,872
200
195
  osbot_utils/helpers/html/Tag__Text.py,sha256=Pqf96QGwX9wdGqlwBvWYHWz9Qqi-oZrkgEzHQm6LzdY,241
201
196
  osbot_utils/helpers/html/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
202
- osbot_utils/helpers/html/schemas/Schema__Html_Document.py,sha256=227IP9kfQ7FH7bhd-LsPsppPo-mhwC58BcGYWsy0WwQ,381
197
+ osbot_utils/helpers/html/schemas/Schema__Html_Document.py,sha256=tQJLc0rf2CuG1sGNB04cPyVV7KpCGXYDt0wEnFtWohg,403
203
198
  osbot_utils/helpers/html/schemas/Schema__Html_Node.py,sha256=iMGClwil99_KoeLuft53DQLu9Jw-PCqRjBXpfInd7rM,794
204
199
  osbot_utils/helpers/html/schemas/Schema__Html_Node__Data.py,sha256=GiAZY5mO3DNasUO_oNM4ndTvRU2VpjPxOi7kYzu2DHE,568
205
200
  osbot_utils/helpers/html/schemas/Schema__Html_Node__Data__Type.py,sha256=mbYivcm6BfN5-oeCyl6gjbnSKs_b_t-G2H1rpSK6nUY,90
206
201
  osbot_utils/helpers/html/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
202
  osbot_utils/helpers/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- osbot_utils/helpers/llms/actions/LLM_Request__Execute.py,sha256=IsC5gzQXG__j5M2dSWVCmV77Kf133pKbZRvbiQyeihU,2453
209
- osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py,sha256=em9RoSZqSSo6BQBZvEKH8Qv8f8f8oubNpy0LIDsak-E,12024
203
+ osbot_utils/helpers/llms/actions/LLM_Request__Execute.py,sha256=mgibU74brzKsO4lZEuQrs2AADDRik6WjZEb3KxiGUfE,2454
204
+ osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py,sha256=SfatdVI7sbFXSiEY--6FkW9amLrYUFhZw1xvgKrE_-s,12064
210
205
  osbot_utils/helpers/llms/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
- osbot_utils/helpers/llms/builders/LLM_Request__Builder.py,sha256=d9TnJmA1KbEypvCdgFXWcg684n-TGIrumxigsTOMECE,4008
212
- osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py,sha256=JwyPDeBUQd70Ltm801y5qvS883IIC7TcfG04D3LWdGI,3430
213
- osbot_utils/helpers/llms/builders/LLM_Request__Factory.py,sha256=bpFXVTKpalBL7ZONjaHU5c0-2Rwzzd2vgdD1FpYxfGw,6291
206
+ osbot_utils/helpers/llms/builders/LLM_Request__Builder.py,sha256=9DTjtpTDCSBnZJelemOsGhLFaETOhyzUl8CFfwnzn_Q,4009
207
+ osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py,sha256=j9m99MS0NwJPqHj85Q4FOhhyIPKHnx2wj6RJLOOKlls,3431
208
+ osbot_utils/helpers/llms/builders/LLM_Request__Factory.py,sha256=OQW0nIfmXvc2RdT84GtMM-BlMp04iQOUsgIieU8NKcs,6291
214
209
  osbot_utils/helpers/llms/builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
- osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py,sha256=7kDY-aaUWR4Da6lj5RPwjqTLUTGrOUYhbNfOPM30e40,4442
216
- osbot_utils/helpers/llms/cache/LLM_Request__Cache.py,sha256=T20vqDuIbSJ0n2yUBRfSQfd86KHmGb8OtIbGiwQhoCE,7669
217
- osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py,sha256=BWuWDZw-V2uamEJ39clWu9Jox63uaSHGdY6EIrkYw34,15497
218
- osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py,sha256=0ok7z2kGiK3edlgD0hwD5z2hYFZ91Viar1JgD7SNoxg,5434
219
- osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py,sha256=-ggOMO2wu8T1qIK4tWdxkZtbZ3zTdPZTtToo0LG8zYg,3055
220
- osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py,sha256=j8EWuKFVMtDBxrCEi8yNdpzwvTxO6Bri2Bi4-KwO-3s,4638
210
+ osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py,sha256=Cc9fhBlw-mAklsth3uGOam-vJC0cqQ1fQCLnC4XDuzw,4587
211
+ osbot_utils/helpers/llms/cache/LLM_Request__Cache.py,sha256=OwGnMxk4y2KZBzNPxD7NZErLF1EjyznT-I2fsuW9oDc,7829
212
+ osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py,sha256=dmskyxXHnh-4v2SuVGdp8GfShKRrqlzEBLxDMVuUzHI,15499
213
+ osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py,sha256=JAIHPpU-0veMuOToZvkA9JwJXvAAoWJoznGloliCt7E,5434
214
+ osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py,sha256=2DD-lZK8a-rKNwf3D8A10yVBeIRyOzm5ggGaQlRP9lI,3132
215
+ osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py,sha256=v2gppFQp12ZQcJ3muQwiDXOyOWcc-mJQe6liQObQirs,4715
221
216
  osbot_utils/helpers/llms/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
217
  osbot_utils/helpers/llms/platforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
218
  osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py,sha256=Yyy2ZnIS6CfxXepP9pZNsOYx02d-5EnK1IFeFf8myyk,2148
224
219
  osbot_utils/helpers/llms/platforms/open_ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
- osbot_utils/helpers/llms/schemas/Safe_Str__LLM__Model_Name.py,sha256=AKLfBv65ELl6XvSsLKMVS-y9LefSVNf8GNrEWKVd_TY,358
226
- osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py,sha256=12dUUSFhWRZvqEkNivqajqMPApPWhfSI7jWnHyBuxNw,717
220
+ osbot_utils/helpers/llms/schemas/Safe_Str__LLM__Model_Name.py,sha256=DzQmAe_8IEDKYjUAAbzRYx23g_wGqgd9bT5zc0FBrr8,371
221
+ osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py,sha256=GNzOvihBlQ9QWWYAF_-70IkWdquGdhm5QyPXZRMWaNQ,848
227
222
  osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py,sha256=UUiqZQ5mj16SPdlzef7_j3myLaKKCZdAUjsWUJnK1Ag,378
228
- osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py,sha256=oLrvmngkDVX2KB2gVR1DwvJQcxWMbBxomjs_IBFQtzc,1489
223
+ osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py,sha256=dcgiEF5lKvNpC4JLa76AH4_HO0SkTDOSgD_2K04cK2A,1489
229
224
  osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py,sha256=VJgWi4aK-DJmuJvfY2qZUZuLkrLlmu5lgyzxZrrp3hM,440
230
225
  osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py,sha256=nl-16yz4G_72ViACKE9CvGStrKxw2Gm_JcaU8wVcJXI,521
231
226
  osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py,sha256=T99w0cRrDPXQqPT-Nw7_14tMr4vKpUlhw74UJZL6w6w,168
232
- osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py,sha256=R62zjoUqu9sbtbFcOX7vG1t0vTaAhS_3Z9CkxESrTjI,298
233
- osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py,sha256=hdG_KRKkPYUqwEtpLUPLFdXSpTL3nofcTg4P2XKuleY,821
227
+ osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py,sha256=8LisqVWlqEgatgGGk1lkoyQiq7v6JEUqGN0oDiExm5g,320
228
+ osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py,sha256=rNEcO029xaQ5MMWSGEXMoVAEJqm-yB1N3OgwE0sHW9Q,955
234
229
  osbot_utils/helpers/llms/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
230
  osbot_utils/helpers/pubsub/Event__Queue.py,sha256=bCtIdVlAuG-jvFEnz14oNhgRScEUrd8v9BqLcZleGks,5038
236
231
  osbot_utils/helpers/pubsub/PubSub__Client.py,sha256=6K3l4H-Tc0DhktrxpYzLVur1uZ532pQsHWprLNRXFJE,2316
@@ -249,36 +244,6 @@ osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py,sha256=yOQSn4o1bIsE
249
244
  osbot_utils/helpers/pubsub/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
245
  osbot_utils/helpers/python_compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
246
  osbot_utils/helpers/python_compatibility/python_3_8.py,sha256=kh846vs3ir8xD0RSARJBOL0xufnt3L_Td3K45lDfqng,161
252
- osbot_utils/helpers/safe_float/Safe_Float.py,sha256=qgmO8S8wFHXA4O3hm4bdamFZ0HkaN_r59hSbUNevHhc,6687
253
- osbot_utils/helpers/safe_float/Safe_Float__Engineering.py,sha256=2XLh8sLs49WXqyRUzPbZnTQGok-CKR6jjxZCXi5py2A,330
254
- osbot_utils/helpers/safe_float/Safe_Float__Money.py,sha256=Abh_CX8849rtKgAu-hCxwVxBytb7-I9-chkbYXpQr74,378
255
- osbot_utils/helpers/safe_float/Safe_Float__Percentage_Exact.py,sha256=l_nGfa2-VCgdBeUXYQAR2wawc4362A9GsCOpWZ3Sdd4,286
256
- osbot_utils/helpers/safe_float/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
- osbot_utils/helpers/safe_int/Safe_Int.py,sha256=Bx_PDuGoLqNgjKMIdmMObAv7u4fw1ISWJlSNkK9kbXI,3168
258
- osbot_utils/helpers/safe_int/Safe_UInt.py,sha256=lU8TiNNpa9Vwg-FK0btk_bRaV_GYcGpBjHjFAdw5f08,317
259
- osbot_utils/helpers/safe_int/Safe_UInt__Byte.py,sha256=850zWYmowGE7NlkVocNewphWGXzBeWtVRV_zs2XFrxI,328
260
- osbot_utils/helpers/safe_int/Safe_UInt__FileSize.py,sha256=pj1_Gf48JVXbnnvx5-YqbQfUsyV_PChVzh1Nnk7PuBY,602
261
- osbot_utils/helpers/safe_int/Safe_UInt__Percentage.py,sha256=Ck-jiu6NK57Y3ruAjIJ0k-maiKcB2Q7M3t9nKf-8ga8,357
262
- osbot_utils/helpers/safe_int/Safe_UInt__Port.py,sha256=uISrh8VKXiEQULQ1POU9YK8Di6z_vr0HWjCTpjA0YaY,482
263
- osbot_utils/helpers/safe_int/__init__.py,sha256=kMU2WMsdQmayBEZugxnJV_wRW3O90bc118sx6iIm_mQ,310
264
- osbot_utils/helpers/safe_str/Safe_Str.py,sha256=lVrji7bTDzJIRr20tjsKLEZsKVFrx5AlCQnj-pIe32k,4616
265
- osbot_utils/helpers/safe_str/Safe_Str__File__Name.py,sha256=9Evl4P45GCyyR2ywze29GzmqWhyTCcgI-o2CItMsOHo,358
266
- osbot_utils/helpers/safe_str/Safe_Str__File__Path.py,sha256=K0yBcvH_Ncqiw7tMqjGqaNyWQh1Zs9qxZ-TR8nEIAow,550
267
- osbot_utils/helpers/safe_str/Safe_Str__Hash.py,sha256=IpYdYwXey5WZWa6QfysmsiDP-4L-wP-_EKbkeXhFRH4,1252
268
- osbot_utils/helpers/safe_str/Safe_Str__Text.py,sha256=QxuWqF8hNYdOPDn3Yac86h_1ZaX-THbTBDakberiJcs,313
269
- osbot_utils/helpers/safe_str/Safe_Str__Text__Dangerous.py,sha256=6-fkXBuWgjz70eQicD07f38eEuKqNzJzaFFY6hozhNQ,388
270
- osbot_utils/helpers/safe_str/Safe_Str__Url.py,sha256=4l46AAe5Dy_P_W6d-_3pwtXuehG_Wczq1dC5sOOzg_g,549
271
- osbot_utils/helpers/safe_str/Safe_Str__Version.py,sha256=atUpMDUbDQWUXUHKkmeMEqSlZGkhNgVInDiOXXQV3kM,1387
272
- osbot_utils/helpers/safe_str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
- osbot_utils/helpers/safe_str/http/Safe_Str__Html.py,sha256=4_UxGEIkqV_Zeh77nXoO2OUy5SS6gvN3xSwA32DyWs0,662
274
- osbot_utils/helpers/safe_str/http/Safe_Str__Http__Content_Type.py,sha256=HURT4n17LmKbcqODsNwhu_D0lI5LpUL8I5t9aqGAZhQ,516
275
- osbot_utils/helpers/safe_str/http/Safe_Str__Http__ETag.py,sha256=5cAfIqebraUnVKZJq3CzXzsFdHGy06TznO36Dc6b5A0,477
276
- osbot_utils/helpers/safe_str/http/Safe_Str__Http__Last_Modified.py,sha256=FBcPM4h3ldN0F_cSISGZgdidWpjKLCOOPq9sWVGUCzg,438
277
- osbot_utils/helpers/safe_str/http/Safe_Str__Http__Text.py,sha256=w0UPkVnQz41BN9asgDUZ4q6pSQUtzNa-4Sjcl56WTCM,1788
278
- osbot_utils/helpers/safe_str/http/Safe_Str__IP_Address.py,sha256=wOcEt0adsE6-CX08erlRYyGyOLoe4QRaAYdI6sKyKlM,1672
279
- osbot_utils/helpers/safe_str/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
- osbot_utils/helpers/safe_str/schemas/Enum__Safe_Str__Regex_Mode.py,sha256=15y_afYIf_LsweutaVVdIJ0qClbVITJGWNEqfRKapNI,120
281
- osbot_utils/helpers/safe_str/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
282
247
  osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py,sha256=GSuRYgs1yKQjxMszPoaI7fsfMfuUqhb64AaIysRE6Cs,1747
283
248
  osbot_utils/helpers/sqlite/Sqlite__Cursor.py,sha256=4Im0pCOiERX6Nnf6iagRlSvTR3CPjyPVkdx4NMQV0P0,3342
284
249
  osbot_utils/helpers/sqlite/Sqlite__Database.py,sha256=ORjRUD-xSvf89kDMQ70q7wBlbV5pdKtDerjE6gDN_fg,5616
@@ -347,9 +312,9 @@ osbot_utils/helpers/xml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
347
312
  osbot_utils/helpers/xml/rss/RSS__Channel.py,sha256=BpkP4OMV_H6usvXhdQ8ahJFxYbtwfkRuoP37_gcIP-A,605
348
313
  osbot_utils/helpers/xml/rss/RSS__Enclosure.py,sha256=9lUsIVJ4TkR_mBFDc6-ISMg7fPXe8FiKFSWjpnlWIMY,139
349
314
  osbot_utils/helpers/xml/rss/RSS__Feed.py,sha256=W4T2rmJoZr4kfOPSkZXkkKPnOk5bPlZfLzOf7pah9LQ,422
350
- osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py,sha256=1pFzZeN50bUNW-w7p9cDXiwezkqVyx9BvSS2bGXfnVc,5425
315
+ osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py,sha256=YmaIEdd_-K2rWAsS-9LY9kGj9ppKxPfePwgMOZ9WZ8s,5459
351
316
  osbot_utils/helpers/xml/rss/RSS__Image.py,sha256=13k8K03VTZbP0efeDL07oZF7Lg0CQccXBd1Qk965mHY,168
352
- osbot_utils/helpers/xml/rss/RSS__Item.py,sha256=K6YF3EVUu6E-_ISke98QXgnJlfOI5YAIO4pBzUZq7gE,608
317
+ osbot_utils/helpers/xml/rss/RSS__Item.py,sha256=yWl0BIr4zClf0blYeIl-SQevI-Bpc0KbGwS0qr9th1k,642
353
318
  osbot_utils/testing/Catch.py,sha256=HdNoKnrPBjvVj87XYN-Wa1zpo5z3oByURT6TKbd5QpQ,2229
354
319
  osbot_utils/testing/Custom_Handler_For_Http_Tests.py,sha256=LKscFEcuwTQQ9xl4q71PR5FA8U-q8OtfTkCJoIgQIoQ,5358
355
320
  osbot_utils/testing/Hook_Method.py,sha256=QoxdbxnVLa4-VYrMCMmo66BoR6nR2BP0Q15asaJXacs,4405
@@ -376,36 +341,95 @@ osbot_utils/testing/performance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
376
341
  osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py,sha256=xT_uKzbSYo9AGiJgNmCHSt3ApneNNyKh8vsMVN6IJQ0,1127
377
342
  osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py,sha256=k9HJYNLmW6sjRVsfpduSxHFiVANc1zmYtO_Oz9azpW8,755
378
343
  osbot_utils/testing/performance/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
379
- osbot_utils/type_safe/Type_Safe.py,sha256=LOWRGOGpnRU2iTRLP47vUoyalK0vjFrWlnaghBIogWg,6267
380
- osbot_utils/type_safe/Type_Safe__Base.py,sha256=UTMipTL6mXoetAEUCI5hs8RqXp4NDYOvoAiYoFOt5jg,8807
381
- osbot_utils/type_safe/Type_Safe__Dict.py,sha256=QB200L5eNWT3FnUv8sm5kncj1wXJsJ9uRycNFl9xb6Y,3077
382
- osbot_utils/type_safe/Type_Safe__List.py,sha256=y_lp7Ai0HfQCqC8Bxn0g6_M9MP5lPOXy5Dhkuj2fJvQ,1891
383
- osbot_utils/type_safe/Type_Safe__Method.py,sha256=K100jAq1wmskuXcTd_9vt-XodSKJkDowJselmnDFCN8,16643
344
+ osbot_utils/type_safe/Type_Safe.py,sha256=G0HCBk52ehaJGhLYnt4cKUBsqfnxyRDxrY7_7YhktZg,6390
345
+ osbot_utils/type_safe/Type_Safe__Base.py,sha256=IQ7ZRXG8k0mFz4bSfYZwnxdPifXaiTm2X3pHLvGc17A,8849
384
346
  osbot_utils/type_safe/Type_Safe__Primitive.py,sha256=-GBUcuFBBBKrVRSf7cmjPRbAxo7vnL4tOvr9ktmbVj4,3829
385
- osbot_utils/type_safe/Type_Safe__Set.py,sha256=j12fc8cbd9-s_a13ysaz723rNEW4Dt6hObCd0S-AjIg,1432
386
- osbot_utils/type_safe/Type_Safe__Tuple.py,sha256=Kx7C4YfHybRbMmVMcmV6yFLi4T48pb592vEZfjjyLxo,1710
387
347
  osbot_utils/type_safe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
388
- osbot_utils/type_safe/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
389
- osbot_utils/type_safe/decorators/type_safe.py,sha256=3jVwrO46s6xpS1Uc4gTrbWc2TnrHCfWJUZ8FIS8mwEo,1772
390
- osbot_utils/type_safe/methods/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
- osbot_utils/type_safe/methods/type_safe_property.py,sha256=DcJkOIs6swJtkglsZVKLyFSczCGSJISOVwAmvjCOQvo,1425
392
- osbot_utils/type_safe/shared/Type_Safe__Annotations.py,sha256=nmVqCbhk4kUYrw_mdYqugxQlv4gM3NUUH89FYTHUg-c,1133
393
- osbot_utils/type_safe/shared/Type_Safe__Cache.py,sha256=G03pmpds9sTwU5z5pNLssD_GTvVSIR11nGYbkV5KaiY,7913
394
- osbot_utils/type_safe/shared/Type_Safe__Convert.py,sha256=q1ds7AqgNhZX1pW0SNq_VNWIudfJWHGY60oYvd3YWlo,2849
395
- osbot_utils/type_safe/shared/Type_Safe__Json_Compressor.py,sha256=TDbot_NNzCPXBQv0l5mksWueJNfxlVFDBGxIH8Jf_XY,5426
396
- osbot_utils/type_safe/shared/Type_Safe__Json_Compressor__Type_Registry.py,sha256=wYOCg7F1nTrRn8HlnZvrs_8A8WL4gxRYRLnXZpGIiuk,1119
397
- osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py,sha256=25FAl6SOLxdStco_rm9tgOYLfuKyBWheGdl7vVa56UU,800
398
- osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py,sha256=TMO4uqPLzie79kSqPAP3s6Xa3LtBI_Sql1ou3-3_XBo,896
399
- osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py,sha256=SuZGl9LryQX6IpOE0I_lbzClT-h17UNylC__-M8ltTY,129
400
- osbot_utils/type_safe/shared/Type_Safe__Validation.py,sha256=1XvbWJmRfyqBcdOTuYZ5fiItyMF0ttSPFnWjqZTGbYE,19542
401
- osbot_utils/type_safe/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
402
- osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py,sha256=hlKJi2hVFntOoQJNlcyDk4JdnkZfEmnIhQNA0c8keCs,6993
403
- osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py,sha256=tzKXDUc0HVP5QvCWsmcPuuZodNvQZ9FeMDNI2x00Ngw,1943
404
- osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py,sha256=b5vsgM8eg9yq2KM0wRMntVHma6OhN_HnU76LxhEIpoA,4483
405
- osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py,sha256=jeRj7dNDObDv_wz0EELX_hTprVJ2Ddi_UG3_ZZUL-74,15013
406
- osbot_utils/type_safe/steps/Type_Safe__Step__Init.py,sha256=6TKpIiwuYcQRUS5Wc0j_y0oToKBah2yc0q8jcDwEZ7U,4938
407
- osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py,sha256=k7GX3q0ps4R1Z3w5JMFHB0w19zVXtO1VS11wpFVI19o,6680
408
- osbot_utils/type_safe/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
+ osbot_utils/type_safe/primitives/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
+ osbot_utils/type_safe/primitives/safe_float/Safe_Float.py,sha256=qgmO8S8wFHXA4O3hm4bdamFZ0HkaN_r59hSbUNevHhc,6687
350
+ osbot_utils/type_safe/primitives/safe_float/Safe_Float__Engineering.py,sha256=f8Vehyn7yb2bMHo8jf_PhrhY2H68VpirN1-9MyxiMwI,344
351
+ osbot_utils/type_safe/primitives/safe_float/Safe_Float__Money.py,sha256=FEeMMm3GwXwjtlT23I8sSa5TX8um2CtmZyMKzWsepSw,368
352
+ osbot_utils/type_safe/primitives/safe_float/Safe_Float__Percentage_Exact.py,sha256=Lp8OSo7cDa1gbgW1eQVCJ_KWDI93JlXM_cdD65JZhNg,299
353
+ osbot_utils/type_safe/primitives/safe_float/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
+ osbot_utils/type_safe/primitives/safe_int/Safe_Int.py,sha256=IB_ZVtuQlAfRWZH1teZOYuYDR9H1XPhjoCpz8rwZNjQ,3204
355
+ osbot_utils/type_safe/primitives/safe_int/Timestamp_Now.py,sha256=OZwSwmYA1pZAnVglpx2lBL5t8Pu_HxzmYdNEJnmTqKI,536
356
+ osbot_utils/type_safe/primitives/safe_int/__init__.py,sha256=Prle-pyYi8l4hjbzGACVxX89Uc5aAhYjGRojywWysQM,323
357
+ osbot_utils/type_safe/primitives/safe_str/Enum__Safe_Str__Regex_Mode.py,sha256=15y_afYIf_LsweutaVVdIJ0qClbVITJGWNEqfRKapNI,120
358
+ osbot_utils/type_safe/primitives/safe_str/Safe_Str.py,sha256=ywgETbj2zzOod3mUETI3hO4S-tZcjUz0DHojHA8wHKc,4631
359
+ osbot_utils/type_safe/primitives/safe_str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
+ osbot_utils/type_safe/primitives/safe_str/cryptography/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
+ osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__Hash.py,sha256=4BVxxXQsOD5x96jOSkSZvDsR9x6Ne33cPhYS3uFKsSM,1291
362
+ osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1.py,sha256=g1ZB7FlljyhgdKa9-Z4MHgSomofEhLlDbckhTu9Tq70,900
363
+ osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1__Short.py,sha256=_nSpeZXio6Yei5HOdJKSMsGuvycRl8tQk2U8a6ownU4,825
364
+ osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
+ osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Private_Key.py,sha256=GH8Unh0m3SDgqwEyUf2iAIau5WLWk7dlZCO9PCk7HIE,1205
366
+ osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Public_Key.py,sha256=gBC4y8EJvLfCrwSQvvkCy3r5yXCiElHeRDTxdzHHFUA,1307
367
+ osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Schema__NaCl__Keys.py,sha256=jYFBpUHZ94ouW0yHsEO3mUKnmSif9jB71kNNH1oA-2I,507
368
+ osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
369
+ osbot_utils/type_safe/primitives/safe_str/filesystem/Safe_Str__File__Name.py,sha256=ceL7iiIg_KqVs9xZRYk8QvREkBLlE8RHSlVECe7LbNg,371
370
+ osbot_utils/type_safe/primitives/safe_str/filesystem/Safe_Str__File__Path.py,sha256=bOihPzsLce2mv-g6BpsfhfLaQ3UEoYXaK8FbdpMGuYs,563
371
+ osbot_utils/type_safe/primitives/safe_str/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
372
+ osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Branch.py,sha256=npoKUzforQCLqblCWfx2H_hZtq0CCybg5O_3RpZkOXE,870
373
+ osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref.py,sha256=U-tEcNsgcZvhhDUYz506L3fgOijsd1IE8R0TPZ-lo7A,3133
374
+ osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref_Base.py,sha256=XMDTfFy45aQp4db1Dn1eUVu5uLmN1ucexQNjjNa4H_A,3275
375
+ osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Tag.py,sha256=imUY7CkrJ_aBJ0tIuV5OSD6eqF7aSzPERfEhdaWejbY,440
376
+ osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Version.py,sha256=5z0oQVHUP2qefDS5uEzKo-3n0PgWSC3TOjcEESuytsA,1397
377
+ osbot_utils/type_safe/primitives/safe_str/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
378
+ osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo.py,sha256=q-dIzhfih4RD6JIvN3Dg_kRVto_4upHU7eqy2jQBMlA,2467
379
+ osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Name.py,sha256=1rTtP2OemGHMUTVb1puwM9sRjKg7W3E9irBV2blS7QM,1268
380
+ osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Owner.py,sha256=Grjrji9dIIm4zkvq_rdcZoiuRt3bK-yUjiDW2u2WzuE,1784
381
+ osbot_utils/type_safe/primitives/safe_str/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
382
+ osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Content_Type.py,sha256=NEFSbKDw3EJG-N5PMCgpPC2Z8c7yDBj5QWlZ_HEceTk,529
383
+ osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__ETag.py,sha256=9dOX5mGCBaKmrgIp6uXFCpVyyhel42mUQgbLyN5cKMk,490
384
+ osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Last_Modified.py,sha256=LfA6ayIXaSjwVGrZUO4HIV1gbFXKc54omDJAZ_ZPtjI,451
385
+ osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Text.py,sha256=miVh53YT6VJla5XiZjzsgVSoMWiYXy-tml3a8HG8yM8,1801
386
+ osbot_utils/type_safe/primitives/safe_str/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
387
+ osbot_utils/type_safe/primitives/safe_str/identifiers/Guid.py,sha256=-WeQzrNj98ay-8rWCBuM-FnhccmygDzZKW1LZ0Frm3M,945
388
+ osbot_utils/type_safe/primitives/safe_str/identifiers/Random_Guid.py,sha256=86xnlevsiitCzFB-VjjBmXXV14pbcKd67YWEDsYTCFk,483
389
+ osbot_utils/type_safe/primitives/safe_str/identifiers/Random_Guid_Short.py,sha256=YP_k5OLuYvXWGU2OEnQHk_OGViBQofTWKm3pUdQaJao,404
390
+ osbot_utils/type_safe/primitives/safe_str/identifiers/Safe_Id.py,sha256=Mj66QVcEHqUKDFb0cdl7cbMOlQKxfFuRxnupmKo6UG8,696
391
+ osbot_utils/type_safe/primitives/safe_str/identifiers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
392
+ osbot_utils/type_safe/primitives/safe_str/text/Safe_Str__Text.py,sha256=0oyn8xs8mabFkzyOdn_HV6UYsH7oHHNrmWM4z3TKwMU,326
393
+ osbot_utils/type_safe/primitives/safe_str/text/Safe_Str__Text__Dangerous.py,sha256=WrEvoXeHWuevzgbfUkm2xisGUMIlDS39Nte3P2_hyHg,401
394
+ osbot_utils/type_safe/primitives/safe_str/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
+ osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__Html.py,sha256=HnCnKUBPB0IfEXSoeK4XFB08qjnAaOYyd-s1smvI2pQ,675
396
+ osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__IP_Address.py,sha256=wOcEt0adsE6-CX08erlRYyGyOLoe4QRaAYdI6sKyKlM,1672
397
+ osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__Url.py,sha256=9xVINemoNS2LtXshAZdhEzKHyneB7Ml4AELqFHJfWWw,562
398
+ osbot_utils/type_safe/primitives/safe_str/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
399
+ osbot_utils/type_safe/primitives/safe_uint/Safe_UInt.py,sha256=8cCS9wI0w1w5YuWIhrVHJKzczHiK3cw_dnXhMgnQAto,331
400
+ osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Byte.py,sha256=yRYzj42EpuLU46l-azYEeszbUBdfgnA_Pb6m_41D7Us,342
401
+ osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__FileSize.py,sha256=fXZLmClfu9o_CwkbC2qk2FZimidwXaCdzoVTk9OweKA,616
402
+ osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Percentage.py,sha256=MKD2AVwVlmCvnJx6oAHh-12xN22HhcXyvOQSUH9G-oU,371
403
+ osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Port.py,sha256=gcqi3UaWaFNSktqUTrfdgRKVI5JKWnqxcpi5FlX75J0,496
404
+ osbot_utils/type_safe/primitives/safe_uint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
+ osbot_utils/type_safe/type_safe_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
406
+ osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Dict.py,sha256=TYb1nXbVqn4bGoagGqr4U__LofpjDllKxiVJCL705PI,3159
407
+ osbot_utils/type_safe/type_safe_core/collections/Type_Safe__List.py,sha256=y_lp7Ai0HfQCqC8Bxn0g6_M9MP5lPOXy5Dhkuj2fJvQ,1891
408
+ osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Set.py,sha256=j12fc8cbd9-s_a13ysaz723rNEW4Dt6hObCd0S-AjIg,1432
409
+ osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Tuple.py,sha256=Kx7C4YfHybRbMmVMcmV6yFLi4T48pb592vEZfjjyLxo,1710
410
+ osbot_utils/type_safe/type_safe_core/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
+ osbot_utils/type_safe/type_safe_core/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
412
+ osbot_utils/type_safe/type_safe_core/decorators/type_safe.py,sha256=wOTMvZBl5hWMz-HuIRZpPBGN0oSbXWd9wH5xxZkfLlA,1796
413
+ osbot_utils/type_safe/type_safe_core/methods/Type_Safe__Method.py,sha256=5Kf6vRrU_SRV88dN7HRtM-OdT2ZeoNVy5KLhbs0Cz0Q,16807
414
+ osbot_utils/type_safe/type_safe_core/methods/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
415
+ osbot_utils/type_safe/type_safe_core/methods/type_safe_property.py,sha256=DcJkOIs6swJtkglsZVKLyFSczCGSJISOVwAmvjCOQvo,1425
416
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Annotations.py,sha256=kabSiRPYPjpMBJxfjDB5AFRTx-hX17tOznZAd_qQID4,1147
417
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Cache.py,sha256=2qqYkicDyfLCdA7YOHWi77aV1lfLuPMl6HSAu-1kSaA,7955
418
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Convert.py,sha256=g2lo_11BFSIVp7dxqtv1Cif-JUvffi-gi9I32r9K410,2891
419
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Json_Compressor.py,sha256=L5EiMPP-7vvzesW-Zs1YRPv1C544NiMTMag2saUnPrc,5522
420
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Json_Compressor__Type_Registry.py,sha256=wYOCg7F1nTrRn8HlnZvrs_8A8WL4gxRYRLnXZpGIiuk,1119
421
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Not_Cached.py,sha256=25FAl6SOLxdStco_rm9tgOYLfuKyBWheGdl7vVa56UU,800
422
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Raise_Exception.py,sha256=lEwW5bhOKnOB8KfuMkheLQy1Xb7iDtTOXIvActRDtD0,911
423
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Shared__Variables.py,sha256=SuZGl9LryQX6IpOE0I_lbzClT-h17UNylC__-M8ltTY,129
424
+ osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Validation.py,sha256=aKtlqYU5uaobgpoOnzU4kKqR7mzVLeG8YcUUbWp7n-g,19648
425
+ osbot_utils/type_safe/type_safe_core/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
426
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Class_Kwargs.py,sha256=zyPnzvN9DWTpiqn7ljr12TaZWp0YjhDCDFWSNXBtLko,7099
427
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Default_Kwargs.py,sha256=tzKXDUc0HVP5QvCWsmcPuuZodNvQZ9FeMDNI2x00Ngw,1943
428
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Default_Value.py,sha256=mRu0yV3w7Ch1H8SOfXMRqMBp3ooY95yR_oni7JafJBc,4603
429
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__From_Json.py,sha256=GTZnGC7DvEBA_LxgLw_KZZ1iVUV0EwyIgcZzoh14Bro,15453
430
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Init.py,sha256=lZpQCCTNt6JcqyWwDoj-9Zgrq10vHXIUBh9lx37vRkE,4990
431
+ osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Set_Attr.py,sha256=24uezozenxBx3jGokdOwiOcksGocDejeebKK7YSIZmc,6723
432
+ osbot_utils/type_safe/type_safe_core/steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
409
433
  osbot_utils/type_safe/validators/Type_Safe__Validator.py,sha256=cJIPSBarjV716SZUOLvz7Mthjk-aUYKUQtRDtKUBmN4,779
410
434
  osbot_utils/type_safe/validators/Validator__Max.py,sha256=pCvYF5Jb_cBgn1ArGhf6FNUB-NGCXPq3D36oYDCyAzg,1275
411
435
  osbot_utils/type_safe/validators/Validator__Min.py,sha256=_-9MdAX2Jc2U0VzCHpEQLA8OVxuNe2y8uaJ6bQttimE,1981
@@ -418,7 +442,7 @@ osbot_utils/utils/Csv.py,sha256=oHLVpjRJqrLMz9lubMCNEoThXWju5rNTprcwHc1zq2c,1012
418
442
  osbot_utils/utils/Dev.py,sha256=eaQ87ZcMRRcxgzA-f7OO8HjjWhbE6L_edwvXiwFZvIQ,1291
419
443
  osbot_utils/utils/Env.py,sha256=rBksAy6k-J5oAJp-S_JedVlcj1b2VK8V3zsQbacopMc,6076
420
444
  osbot_utils/utils/Exceptions.py,sha256=KyOUHkXQ_6jDTq04Xm261dbEZuRidtsM4dgzNwSG8-8,389
421
- osbot_utils/utils/Files.py,sha256=Zg8TV8RpKv3ytnZvvT17DWeEJCisSkO8zzyP_Twhcww,23449
445
+ osbot_utils/utils/Files.py,sha256=W6bac42w3fYBwpxPdPK_eKfcq1M7yiF2deVHjx2hDGE,23539
422
446
  osbot_utils/utils/Functions.py,sha256=VoTrAbCHt6hulz6hVz3co8w2xoOS8wE04wyHc5_cC1c,3671
423
447
  osbot_utils/utils/Http.py,sha256=cbymd0YJjflI0K0gfq_ie4Speq-Ugko753VCSlYZuf4,8101
424
448
  osbot_utils/utils/Int.py,sha256=PmlUdU4lSwf4gJdmTVdqclulkEp7KPCVUDO6AcISMF4,116
@@ -438,8 +462,8 @@ osbot_utils/utils/Toml.py,sha256=Rxl8gx7mni5CvBAK-Ai02EKw-GwtJdd3yeHT2kMloik,166
438
462
  osbot_utils/utils/Version.py,sha256=Ww6ChwTxqp1QAcxOnztkTicShlcx6fbNsWX5xausHrg,422
439
463
  osbot_utils/utils/Zip.py,sha256=mG42lgTY0tnm14T3P1-DSAIZKkTiYoO3odZ1aOUdc1I,14394
440
464
  osbot_utils/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
- osbot_utils/version,sha256=VCxgw8bSna_rDix4JFMV7Wb8rA3m_O27X41oEA5IP7c,8
442
- osbot_utils-2.73.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
443
- osbot_utils-2.73.0.dist-info/METADATA,sha256=XGCwVDdvQ37eGSObzfovrfDGt-F4hJNsXsyeyRYh5X4,7892
444
- osbot_utils-2.73.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
445
- osbot_utils-2.73.0.dist-info/RECORD,,
465
+ osbot_utils/version,sha256=Hh7DgaX3ZQajaSIvFEOMRoqJXUw_aeyoA1gzj_OJSZk,8
466
+ osbot_utils-2.74.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
467
+ osbot_utils-2.74.0.dist-info/METADATA,sha256=6sQ5TtiuRR_virvWkZC5xrr8_aXuas-pO4YMF5wwdlA,7905
468
+ osbot_utils-2.74.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
469
+ osbot_utils-2.74.0.dist-info/RECORD,,