orionis 0.405.0__py3-none-any.whl → 0.407.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 (175) hide show
  1. orionis/console/base/command.py +57 -50
  2. orionis/console/base/contracts/command.py +68 -0
  3. orionis/console/dynamic/contracts/progress_bar.py +3 -3
  4. orionis/console/dynamic/progress_bar.py +8 -8
  5. orionis/console/output/console.py +8 -2
  6. orionis/console/output/contracts/console.py +1 -1
  7. orionis/container/container.py +2 -2
  8. orionis/container/context/scope.py +4 -1
  9. orionis/container/contracts/service_provider.py +2 -2
  10. orionis/container/entities/binding.py +31 -44
  11. orionis/container/enums/lifetimes.py +22 -1
  12. orionis/container/facades/facade.py +1 -2
  13. orionis/container/providers/service_provider.py +2 -2
  14. orionis/foundation/application.py +542 -248
  15. orionis/foundation/config/app/entities/app.py +107 -90
  16. orionis/foundation/config/auth/entities/auth.py +4 -33
  17. orionis/foundation/config/cache/entities/cache.py +18 -41
  18. orionis/foundation/config/cache/entities/file.py +8 -35
  19. orionis/foundation/config/cache/entities/stores.py +17 -38
  20. orionis/foundation/config/cors/entities/cors.py +41 -54
  21. orionis/foundation/config/database/entities/connections.py +40 -56
  22. orionis/foundation/config/database/entities/database.py +11 -38
  23. orionis/foundation/config/database/entities/mysql.py +48 -76
  24. orionis/foundation/config/database/entities/oracle.py +30 -57
  25. orionis/foundation/config/database/entities/pgsql.py +45 -61
  26. orionis/foundation/config/database/entities/sqlite.py +26 -53
  27. orionis/foundation/config/filesystems/entitites/aws.py +28 -49
  28. orionis/foundation/config/filesystems/entitites/disks.py +27 -47
  29. orionis/foundation/config/filesystems/entitites/filesystems.py +15 -37
  30. orionis/foundation/config/filesystems/entitites/local.py +9 -35
  31. orionis/foundation/config/filesystems/entitites/public.py +14 -41
  32. orionis/foundation/config/logging/entities/channels.py +56 -86
  33. orionis/foundation/config/logging/entities/chunked.py +9 -9
  34. orionis/foundation/config/logging/entities/daily.py +8 -8
  35. orionis/foundation/config/logging/entities/hourly.py +6 -6
  36. orionis/foundation/config/logging/entities/logging.py +12 -18
  37. orionis/foundation/config/logging/entities/monthly.py +7 -7
  38. orionis/foundation/config/logging/entities/stack.py +5 -5
  39. orionis/foundation/config/logging/entities/weekly.py +6 -6
  40. orionis/foundation/config/mail/entities/file.py +9 -36
  41. orionis/foundation/config/mail/entities/mail.py +22 -40
  42. orionis/foundation/config/mail/entities/mailers.py +29 -44
  43. orionis/foundation/config/mail/entities/smtp.py +47 -48
  44. orionis/foundation/config/queue/entities/brokers.py +19 -41
  45. orionis/foundation/config/queue/entities/database.py +24 -46
  46. orionis/foundation/config/queue/entities/queue.py +28 -40
  47. orionis/foundation/config/roots/paths.py +272 -468
  48. orionis/foundation/config/session/entities/session.py +23 -53
  49. orionis/foundation/config/startup.py +165 -135
  50. orionis/foundation/config/testing/entities/testing.py +137 -122
  51. orionis/foundation/config/testing/enums/__init__.py +6 -2
  52. orionis/foundation/config/testing/enums/drivers.py +16 -0
  53. orionis/foundation/config/testing/enums/verbosity.py +18 -0
  54. orionis/foundation/contracts/application.py +152 -362
  55. orionis/foundation/providers/console_provider.py +24 -2
  56. orionis/foundation/providers/dumper_provider.py +24 -2
  57. orionis/foundation/providers/logger_provider.py +24 -2
  58. orionis/foundation/providers/path_resolver_provider.py +25 -2
  59. orionis/foundation/providers/progress_bar_provider.py +24 -2
  60. orionis/foundation/providers/testing_provider.py +39 -0
  61. orionis/foundation/providers/workers_provider.py +24 -2
  62. orionis/metadata/framework.py +1 -1
  63. orionis/services/asynchrony/contracts/coroutines.py +13 -5
  64. orionis/services/asynchrony/coroutines.py +33 -29
  65. orionis/services/asynchrony/exceptions/exception.py +9 -1
  66. orionis/services/environment/core/dot_env.py +46 -34
  67. orionis/services/environment/enums/__init__.py +0 -0
  68. orionis/services/environment/enums/cast_type.py +42 -0
  69. orionis/services/environment/helpers/functions.py +1 -2
  70. orionis/services/environment/key/__init__.py +0 -0
  71. orionis/services/environment/key/key_generator.py +37 -0
  72. orionis/services/environment/serializer/__init__.py +0 -0
  73. orionis/services/environment/serializer/values.py +21 -0
  74. orionis/services/environment/validators/__init__.py +0 -0
  75. orionis/services/environment/validators/key_name.py +46 -0
  76. orionis/services/environment/validators/types.py +45 -0
  77. orionis/services/system/contracts/imports.py +38 -18
  78. orionis/services/system/contracts/workers.py +29 -12
  79. orionis/services/system/imports.py +65 -25
  80. orionis/services/system/runtime/imports.py +18 -9
  81. orionis/services/system/workers.py +49 -16
  82. orionis/support/entities/__init__.py +0 -0
  83. orionis/support/entities/base.py +104 -0
  84. orionis/support/facades/testing.py +15 -0
  85. orionis/support/facades/workers.py +1 -1
  86. orionis/test/cases/asynchronous.py +0 -11
  87. orionis/test/cases/synchronous.py +0 -9
  88. orionis/test/contracts/dumper.py +11 -4
  89. orionis/test/contracts/kernel.py +5 -110
  90. orionis/test/contracts/logs.py +27 -65
  91. orionis/test/contracts/printer.py +16 -128
  92. orionis/test/contracts/test_result.py +100 -0
  93. orionis/test/contracts/unit_test.py +87 -150
  94. orionis/test/core/unit_test.py +608 -554
  95. orionis/test/entities/result.py +22 -2
  96. orionis/test/enums/__init__.py +0 -2
  97. orionis/test/enums/status.py +14 -9
  98. orionis/test/exceptions/config.py +9 -1
  99. orionis/test/exceptions/failure.py +34 -11
  100. orionis/test/exceptions/persistence.py +10 -2
  101. orionis/test/exceptions/runtime.py +9 -1
  102. orionis/test/exceptions/value.py +13 -1
  103. orionis/test/kernel.py +87 -289
  104. orionis/test/output/dumper.py +83 -18
  105. orionis/test/output/printer.py +399 -156
  106. orionis/test/records/logs.py +203 -82
  107. orionis/test/validators/__init__.py +33 -0
  108. orionis/test/validators/base_path.py +45 -0
  109. orionis/test/validators/execution_mode.py +45 -0
  110. orionis/test/validators/fail_fast.py +37 -0
  111. orionis/test/validators/folder_path.py +34 -0
  112. orionis/test/validators/module_name.py +31 -0
  113. orionis/test/validators/name_pattern.py +40 -0
  114. orionis/test/validators/pattern.py +36 -0
  115. orionis/test/validators/persistent.py +42 -0
  116. orionis/test/validators/persistent_driver.py +43 -0
  117. orionis/test/validators/print_result.py +37 -0
  118. orionis/test/validators/tags.py +37 -0
  119. orionis/test/validators/throw_exception.py +39 -0
  120. orionis/test/validators/verbosity.py +37 -0
  121. orionis/test/validators/web_report.py +35 -0
  122. orionis/test/validators/workers.py +31 -0
  123. orionis/test/view/render.py +48 -54
  124. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/METADATA +1 -1
  125. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/RECORD +170 -112
  126. tests/container/__init__.py +0 -0
  127. tests/container/context/__init__.py +0 -0
  128. tests/container/context/test_manager.py +27 -0
  129. tests/container/context/test_scope.py +23 -0
  130. tests/container/entities/__init__.py +0 -0
  131. tests/container/entities/test_binding.py +133 -0
  132. tests/container/enums/__init__.py +0 -0
  133. tests/container/enums/test_lifetimes.py +63 -0
  134. tests/container/facades/__init__.py +0 -0
  135. tests/container/facades/test_facade.py +61 -0
  136. tests/container/mocks/__init__.py +0 -0
  137. tests/container/mocks/mock_complex_classes.py +482 -0
  138. tests/container/mocks/mock_simple_classes.py +32 -0
  139. tests/container/providers/__init__.py +0 -0
  140. tests/container/providers/test_providers.py +48 -0
  141. tests/container/resolver/__init__.py +0 -0
  142. tests/container/resolver/test_resolver.py +55 -0
  143. tests/container/test_container.py +254 -0
  144. tests/container/test_singleton.py +98 -0
  145. tests/container/test_thread_safety.py +217 -0
  146. tests/container/validators/__init__.py +0 -0
  147. tests/container/validators/test_implements.py +140 -0
  148. tests/container/validators/test_is_abstract_class.py +99 -0
  149. tests/container/validators/test_is_callable.py +73 -0
  150. tests/container/validators/test_is_concrete_class.py +97 -0
  151. tests/container/validators/test_is_instance.py +105 -0
  152. tests/container/validators/test_is_not_subclass.py +117 -0
  153. tests/container/validators/test_is_subclass.py +115 -0
  154. tests/container/validators/test_is_valid_alias.py +113 -0
  155. tests/container/validators/test_lifetime.py +75 -0
  156. tests/example/test_example.py +2 -2
  157. tests/foundation/config/testing/test_foundation_config_testing.py +1 -1
  158. tests/metadata/test_metadata_framework.py +89 -24
  159. tests/metadata/test_metadata_package.py +55 -10
  160. tests/services/asynchrony/test_services_asynchrony_coroutine.py +52 -7
  161. tests/services/system/test_services_system_imports.py +119 -16
  162. tests/services/system/test_services_system_workers.py +71 -30
  163. tests/testing/test_testing_result.py +117 -117
  164. tests/testing/test_testing_unit.py +209 -209
  165. orionis/foundation/config/base.py +0 -112
  166. orionis/test/arguments/parser.py +0 -187
  167. orionis/test/contracts/parser.py +0 -43
  168. orionis/test/entities/arguments.py +0 -38
  169. orionis/test/enums/execution_mode.py +0 -16
  170. /orionis/{test/arguments → console/base/contracts}/__init__.py +0 -0
  171. /orionis/foundation/config/testing/enums/{test_mode.py → mode.py} +0 -0
  172. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/WHEEL +0 -0
  173. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/licenses/LICENCE +0 -0
  174. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/top_level.txt +0 -0
  175. {orionis-0.405.0.dist-info → orionis-0.407.0.dist-info}/zip-safe +0 -0
@@ -5,7 +5,14 @@ from orionis.test.enums import TestStatus
5
5
  @dataclass(frozen=True, kw_only=True)
6
6
  class TestResult:
7
7
  """
8
- Represents the result of a test execution, including status, timing, and error details.
8
+ Data class representing the outcome of a test execution.
9
+
10
+ This class encapsulates all relevant information about a test's execution,
11
+ including its unique identifier, name, execution status, timing, and any
12
+ error details if the test did not pass. It also stores optional metadata
13
+ such as the class, method, module, file path, and docstring associated
14
+ with the test, if applicable.
15
+
9
16
  Attributes:
10
17
  id (Any): Unique identifier for the test result.
11
18
  name (str): Name of the test.
@@ -18,33 +25,40 @@ class TestResult:
18
25
  module (Optional[str]): Name of the module containing the test, if applicable.
19
26
  file_path (Optional[str]): Path to the file containing the test, if applicable.
20
27
  doc_string (Optional[str]): Docstring of the test, if applicable.
21
- """
22
28
 
29
+ Returns:
30
+ TestResult: An immutable instance containing all details about a single test execution.
31
+ """
23
32
 
33
+ # Unique identifier for the test result
24
34
  id: Any = field(
25
35
  metadata={
26
36
  "description": "Unique identifier for the test result."
27
37
  }
28
38
  )
29
39
 
40
+ # Name of the test
30
41
  name: str = field(
31
42
  metadata={
32
43
  "description": "Name of the test."
33
44
  }
34
45
  )
35
46
 
47
+ # Status of the test execution (e.g., passed, failed)
36
48
  status: TestStatus = field(
37
49
  metadata={
38
50
  "description": "Status of the test execution (e.g., passed, failed)."
39
51
  }
40
52
  )
41
53
 
54
+ # Time taken to execute the test, in seconds
42
55
  execution_time: float = field(
43
56
  metadata={
44
57
  "description": "Time taken to execute the test, in seconds."
45
58
  }
46
59
  )
47
60
 
61
+ # Error message if the test failed, otherwise None
48
62
  error_message: Optional[str] = field(
49
63
  default=None,
50
64
  metadata={
@@ -52,6 +66,7 @@ class TestResult:
52
66
  }
53
67
  )
54
68
 
69
+ # Traceback information if an error occurred, otherwise None
55
70
  traceback: Optional[str] = field(
56
71
  default=None,
57
72
  metadata={
@@ -59,6 +74,7 @@ class TestResult:
59
74
  }
60
75
  )
61
76
 
77
+ # Name of the class containing the test, if applicable
62
78
  class_name: Optional[str] = field(
63
79
  default=None,
64
80
  metadata={
@@ -66,6 +82,7 @@ class TestResult:
66
82
  }
67
83
  )
68
84
 
85
+ # Name of the method representing the test, if applicable
69
86
  method: Optional[str] = field(
70
87
  default=None,
71
88
  metadata={
@@ -73,6 +90,7 @@ class TestResult:
73
90
  }
74
91
  )
75
92
 
93
+ # Name of the module containing the test, if applicable
76
94
  module: Optional[str] = field(
77
95
  default=None,
78
96
  metadata={
@@ -80,6 +98,7 @@ class TestResult:
80
98
  }
81
99
  )
82
100
 
101
+ # Path to the file containing the test, if applicable
83
102
  file_path: Optional[str] = field(
84
103
  default=None,
85
104
  metadata={
@@ -87,6 +106,7 @@ class TestResult:
87
106
  }
88
107
  )
89
108
 
109
+ # Docstring of the test, if applicable
90
110
  doc_string: Optional[str] = field(
91
111
  default=None,
92
112
  metadata={
@@ -1,7 +1,5 @@
1
- from .execution_mode import ExecutionMode
2
1
  from .status import TestStatus
3
2
 
4
3
  __all__ = [
5
- "ExecutionMode",
6
4
  "TestStatus"
7
5
  ]
@@ -3,20 +3,25 @@ from enum import Enum, auto
3
3
  class TestStatus(Enum):
4
4
  """
5
5
  TestStatus(Enum)
6
- Enum representing the possible statuses of a test.
6
+ An enumeration representing the possible statuses that a test can have during its execution.
7
7
 
8
8
  Attributes
9
9
  ----------
10
10
  PASSED : auto()
11
- Indicates that the test was executed successfully without any issues.
11
+ The test completed successfully without any errors or failures.
12
12
  FAILED : auto()
13
- Indicates that the test was executed but did not meet the expected outcome.
13
+ The test ran to completion but did not produce the expected results.
14
14
  ERRORED : auto()
15
- Indicates that an error occurred during the execution of the test.
15
+ An unexpected error occurred during the execution of the test, preventing it from completing.
16
16
  SKIPPED : auto()
17
- Indicates that the test was intentionally skipped and not executed.
17
+ The test was intentionally not executed, typically due to configuration or conditional logic.
18
+
19
+ Returns
20
+ -------
21
+ TestStatus
22
+ An instance of the TestStatus enumeration indicating the current status of a test.
18
23
  """
19
- PASSED = auto()
20
- FAILED = auto()
21
- ERRORED = auto()
22
- SKIPPED = auto()
24
+ PASSED = auto() # Test executed successfully
25
+ FAILED = auto() # Test executed but failed
26
+ ERRORED = auto() # Error occurred during test execution
27
+ SKIPPED = auto() # Test was intentionally skipped
@@ -2,18 +2,26 @@ class OrionisTestConfigException(Exception):
2
2
 
3
3
  def __init__(self, msg: str):
4
4
  """
5
+ Initializes the OrionisTestConfigException with a descriptive error message.
6
+
5
7
  Parameters
6
8
  ----------
7
9
  msg : str
8
10
  Descriptive error message explaining the cause of the exception.
9
11
  """
12
+
13
+ # Call the base Exception class constructor with the message
10
14
  super().__init__(msg)
11
15
 
12
16
  def __str__(self) -> str:
13
17
  """
18
+ Returns a formatted string representation of the exception message.
19
+
14
20
  Returns
15
21
  -------
16
22
  str
17
- Formatted string describing the exception.
23
+ The error message provided during exception initialization.
18
24
  """
25
+
26
+ # Return the first argument as the exception message
19
27
  return str(self.args[0])
@@ -4,7 +4,11 @@ class OrionisTestFailureException(Exception):
4
4
 
5
5
  def __init__(self, result: unittest.TestResult):
6
6
  """
7
- Initialize the exception with details about failed and errored tests.
7
+ Initializes the OrionisTestFailureException with details about failed and errored tests.
8
+
9
+ This constructor extracts information from the provided unittest.TestResult object,
10
+ including the IDs of tests that failed or encountered errors. It then formats a summary
11
+ message listing all such tests and passes this message to the base Exception class.
8
12
 
9
13
  Parameters
10
14
  ----------
@@ -13,38 +17,57 @@ class OrionisTestFailureException(Exception):
13
17
 
14
18
  Attributes
15
19
  ----------
16
- failed_tests : list
17
- List of IDs for tests that failed.
18
- errored_tests : list
19
- List of IDs for tests that encountered errors.
20
- error_messages : list
21
- List of formatted error messages for failed and errored tests.
20
+ failed_tests : list of str
21
+ List of test IDs that failed.
22
+ errored_tests : list of str
23
+ List of test IDs that encountered errors.
24
+ error_messages : list of str
25
+ List of formatted error messages for each failed or errored test.
22
26
  text : str
23
- Formatted string summarizing the test failures and errors.
27
+ Formatted string summarizing all test failures and errors.
28
+
29
+ Returns
30
+ -------
31
+ None
32
+ This method does not return a value. It initializes the exception instance.
24
33
 
25
34
  Raises
26
35
  ------
27
- Exception
28
- If there are failed or errored tests, raises an exception with a summary message.
36
+ OrionisTestFailureException
37
+ Raised when there are failed or errored tests, with a summary message.
29
38
  """
39
+
40
+ # Collect IDs of failed tests
30
41
  failed_tests = [test.id() for test, _ in result.failures]
42
+
43
+ # Collect IDs of tests that encountered errors
31
44
  errored_tests = [test.id() for test, _ in result.errors]
32
45
 
33
46
  error_messages = []
47
+
48
+ # Add formatted messages for failed tests
34
49
  for test in failed_tests:
35
50
  error_messages.append(f"Test Fail: {test}")
51
+
52
+ # Add formatted messages for errored tests
36
53
  for test in errored_tests:
37
54
  error_messages.append(f"Test Error: {test}")
38
55
 
56
+ # Combine all error messages into a single string
39
57
  text = "\n".join(error_messages)
40
58
 
59
+ # Initialize the base Exception with the summary message
41
60
  super().__init__(f"{len(failed_tests) + len(errored_tests)} test(s) failed or errored:\n{text}")
42
61
 
43
62
  def __str__(self) -> str:
44
63
  """
64
+ Returns a formatted string describing the exception.
65
+
45
66
  Returns
46
67
  -------
47
68
  str
48
- Formatted string describing the exception.
69
+ The summary message containing the number and details of failed and errored tests.
49
70
  """
71
+
72
+ # Return the first argument passed to the exception as a string
50
73
  return str(self.args[0])
@@ -2,18 +2,26 @@ class OrionisTestPersistenceError(Exception):
2
2
 
3
3
  def __init__(self, msg: str):
4
4
  """
5
+ Initializes the OrionisTestPersistenceError with a descriptive error message.
6
+
5
7
  Parameters
6
8
  ----------
7
9
  msg : str
8
- Descriptive error message explaining the cause of the exception.
10
+ A descriptive error message that explains the cause of the exception.
9
11
  """
12
+
13
+ # Call the base Exception class constructor with the message
10
14
  super().__init__(msg)
11
15
 
12
16
  def __str__(self) -> str:
13
17
  """
18
+ Returns a formatted string representation of the exception message.
19
+
14
20
  Returns
15
21
  -------
16
22
  str
17
- Formatted string describing the exception.
23
+ The error message provided when the exception was raised.
18
24
  """
25
+
26
+ # Return the first argument passed to the exception as a string
19
27
  return str(self.args[0])
@@ -2,18 +2,26 @@ class OrionisTestRuntimeError(Exception):
2
2
 
3
3
  def __init__(self, msg: str):
4
4
  """
5
+ Initializes the OrionisTestRuntimeError with a descriptive error message.
6
+
5
7
  Parameters
6
8
  ----------
7
9
  msg : str
8
10
  Descriptive error message explaining the cause of the exception.
9
11
  """
12
+
13
+ # Call the base class constructor with the error message
10
14
  super().__init__(msg)
11
15
 
12
16
  def __str__(self) -> str:
13
17
  """
18
+ Returns a formatted string representation of the exception.
19
+
14
20
  Returns
15
21
  -------
16
22
  str
17
- Formatted string describing the exception.
23
+ The error message provided during exception initialization.
18
24
  """
25
+
26
+ # Return the error message stored in the first argument
19
27
  return str(self.args[0])
@@ -2,18 +2,30 @@ class OrionisTestValueError(Exception):
2
2
 
3
3
  def __init__(self, msg: str):
4
4
  """
5
+ Initializes the OrionisTestValueError with a descriptive error message.
6
+
5
7
  Parameters
6
8
  ----------
7
9
  msg : str
8
10
  Descriptive error message explaining the cause of the exception.
9
11
  """
12
+
13
+ # Call the base class constructor with the error message
10
14
  super().__init__(msg)
11
15
 
12
16
  def __str__(self) -> str:
13
17
  """
18
+ Returns a formatted string representation of the exception.
19
+
20
+ This method retrieves the error message provided during initialization
21
+ and returns it as a string. It ensures that when the exception is
22
+ converted to a string, the descriptive message is displayed.
23
+
14
24
  Returns
15
25
  -------
16
26
  str
17
- Formatted string describing the exception.
27
+ The descriptive error message associated with this exception.
18
28
  """
29
+
30
+ # Return the error message stored in the first argument
19
31
  return str(self.args[0])