orionis 0.222.0__py3-none-any.whl → 0.224.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.
orionis/framework.py CHANGED
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.222.0"
8
+ VERSION = "0.224.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -10,7 +10,7 @@ from orionis.luminate.foundation.environment.environment_bootstrapper import Env
10
10
  from orionis.luminate.foundation.exceptions.exception_bootstrapper import BootstrapRuntimeError
11
11
  from orionis.luminate.foundation.providers.service_providers_bootstrapper import ServiceProvidersBootstrapper
12
12
  from orionis.luminate.patterns.singleton import SingletonMeta
13
- from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
13
+ from orionis.luminate.support.async.async_io import AsyncExecutor
14
14
 
15
15
  class Application(metaclass=SingletonMeta):
16
16
  """
@@ -1,7 +1,7 @@
1
1
  from typing import Any, Callable
2
2
  from orionis.luminate.container.container import Container
3
3
  from orionis.luminate.container.exception import OrionisContainerValueError
4
- from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
4
+ from orionis.luminate.support.async.async_io import AsyncExecutor
5
5
 
6
6
  class Resolve:
7
7
  """
@@ -1,5 +1,5 @@
1
1
  from orionis.luminate.container.container import Container
2
- from orionis.luminate.support.async_io.async_coroutine import AsyncExecutor
2
+ from orionis.luminate.support.async.async_io import AsyncExecutor
3
3
 
4
4
  class FacadeMeta(type):
5
5
  """
@@ -1,25 +1,20 @@
1
1
  import asyncio
2
2
  from inspect import iscoroutine
3
3
  from typing import Any, Coroutine, TypeVar, Union
4
- from orionis.luminate.support.async_io.contracts.async_coroutine import IAsyncCoroutine
4
+ from orionis.luminate.support.asynchrony.contracts.async_coroutine import IAsyncIO
5
5
 
6
6
  T = TypeVar("T")
7
7
 
8
- class AsyncCoroutine(IAsyncCoroutine):
8
+ class AsyncIO(IAsyncIO):
9
9
  """
10
10
  A utility class for executing coroutine objects in various asynchronous and synchronous contexts.
11
11
  This class provides a static method to execute coroutine objects, handling different scenarios
12
12
  such as running within an active event loop (e.g., in Jupyter notebooks or Starlette) or in a
13
- synchronous context without an active event loop.
14
-
15
- Methods
16
- -------
17
- execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]
18
- Executes the given coroutine object, adapting to the current execution context.
13
+ synchronous context without an active event
19
14
  """
20
15
 
21
16
  @staticmethod
22
- def execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
17
+ def run(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
23
18
  """
24
19
  Executes the given coroutine object, adapting to the current execution context.
25
20
  If there is an active event loop, it uses `asyncio.ensure_future` to schedule the coroutine.
@@ -3,18 +3,13 @@ from typing import Any, Coroutine, TypeVar, Union
3
3
 
4
4
  T = TypeVar("T")
5
5
 
6
- class IAsyncCoroutine:
6
+ class IAsyncIO:
7
7
  """
8
8
  Interface for executing asynchronous coroutines.
9
-
10
- Methods
11
- -------
12
- execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]
13
- Executes the given coroutine.
14
9
  """
15
10
 
16
11
  @staticmethod
17
- def execute(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
12
+ def run(coro: Coroutine[Any, Any, T]) -> Union[T, asyncio.Future]:
18
13
  """
19
14
  Execute the given coroutine.
20
15
 
File without changes
File without changes
@@ -0,0 +1,67 @@
1
+ from abc import ABC, abstractmethod
2
+ from typing import Optional
3
+
4
+ class IResolver(ABC):
5
+ """
6
+ Interface for a utility class that resolves file and directory paths relative to a base path.
7
+ """
8
+
9
+ @abstractmethod
10
+ def __init__(self, root_path: Optional[str] = None):
11
+ """
12
+ Initializes the resolver with an optional root path.
13
+
14
+ Parameters
15
+ ----------
16
+ root_path : str, optional
17
+ The root directory to resolve relative paths from.
18
+ """
19
+ pass
20
+
21
+ @abstractmethod
22
+ def relativePath(self, relative_path: str):
23
+ """
24
+ Resolves a relative path into an absolute one and validates its existence.
25
+
26
+ Parameters
27
+ ----------
28
+ relative_path : str
29
+ The relative path to resolve.
30
+
31
+ Returns
32
+ -------
33
+ ResolverInterface
34
+ The instance itself for method chaining.
35
+
36
+ Raises
37
+ ------
38
+ FileNotFoundError
39
+ If the resolved path does not exist.
40
+ ValueError
41
+ If the resolved path is neither a file nor a directory.
42
+ """
43
+ pass
44
+
45
+ @abstractmethod
46
+ def toString(self) -> str:
47
+ """
48
+ Returns the resolved path as a string.
49
+
50
+ Returns
51
+ -------
52
+ str
53
+ The resolved path.
54
+ """
55
+ pass
56
+
57
+ @abstractmethod
58
+ def __str__(self) -> str:
59
+ """
60
+ Returns the resolved path as a string (for print or str()).
61
+
62
+ Returns
63
+ -------
64
+ str
65
+ The resolved path.
66
+ """
67
+ pass
@@ -0,0 +1,83 @@
1
+ import os
2
+ from pathlib import Path
3
+ from orionis.luminate.support.paths.contracts.resolver import IResolver
4
+
5
+ class Resolver(IResolver):
6
+ """
7
+ A utility class for resolving file and directory paths relative to the project's root directory.
8
+ """
9
+
10
+ def __init__(self, root_path: str = None):
11
+ """
12
+ Initializes the Resolver instance with the project's root directory.
13
+
14
+ Parameters
15
+ ----------
16
+ root_path : str, optional
17
+ The root directory of the project. If not provided, it defaults to the current working directory.
18
+ """
19
+ self.base_path = Path(root_path).resolve() if root_path else Path(os.getcwd()).resolve()
20
+ self.resolved_path = None
21
+
22
+ def relativePath(self, relative_path: str) -> 'Resolver':
23
+ """
24
+ Resolves a given relative path to an absolute path and validates its existence.
25
+
26
+ This method combines the project's root directory with the provided relative path,
27
+ resolves it to an absolute path, and ensures it exists as either a directory or a file.
28
+
29
+ Parameters
30
+ ----------
31
+ relative_path : str
32
+ The relative path to a directory or file to be resolved.
33
+
34
+ Returns
35
+ -------
36
+ Resolver
37
+ The current instance of the Resolver class with the resolved path.
38
+
39
+ Raises
40
+ ------
41
+ FileNotFoundError
42
+ If the resolved path does not exist.
43
+ ValueError
44
+ If the resolved path is neither a valid directory nor a file.
45
+ """
46
+ # Combine the base path with the relative path and resolve it
47
+ resolved_path = (self.base_path / relative_path).resolve()
48
+
49
+ # Validate that the path exists
50
+ if not resolved_path.exists():
51
+ raise FileNotFoundError(f"The requested path does not exist: {resolved_path}")
52
+
53
+ # Validate that the path is either a directory or a file
54
+ if not (resolved_path.is_dir() or resolved_path.is_file()):
55
+ raise ValueError(f"The requested path is neither a valid directory nor a file: {resolved_path}")
56
+
57
+ # Store the resolved path in the instance variable
58
+ self.resolved_path = resolved_path
59
+
60
+ # Return the current instance
61
+ return self
62
+
63
+ def toString(self) -> str:
64
+ """
65
+ Returns the string representation of the resolved path.
66
+
67
+ Returns
68
+ -------
69
+ str
70
+ The resolved path as a string.
71
+ """
72
+ return str(self.resolved_path)
73
+
74
+ def __str__(self) -> str:
75
+ """
76
+ Returns the string representation of the resolved path.
77
+
78
+ Returns
79
+ -------
80
+ str
81
+ The resolved path as a string.
82
+ """
83
+ return str(self.resolved_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.222.0
3
+ Version: 0.224.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -1,6 +1,6 @@
1
1
  orionis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  orionis/console.py,sha256=4gYWxf0fWYgJ4RKwARvnTPh06FL3GJ6SAZ7R2NzOICw,1342
3
- orionis/framework.py,sha256=T5uOVNWXAXf5Ssgp3qGAFy2qDZ7losAqpvXtGBN-nlg,1458
3
+ orionis/framework.py,sha256=3F5KZQ8W8qdPtBHjubSoVCZkgsoMLL27SKYH_ao6JwA,1458
4
4
  orionis/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  orionis/installer/manager.py,sha256=Li4TVziRXWfum02xNG4JHwbnLk-u8xzHjdqKz-D894k,2755
6
6
  orionis/installer/output.py,sha256=7O9qa2xtXMB_4ZvVi-Klneom9YazwygAd_4uYAoxhbU,8548
@@ -10,7 +10,7 @@ orionis/installer/contracts/manager.py,sha256=Zfndhuyu0JaTKo3PsGsKmVsvotQMw8Pmt4
10
10
  orionis/installer/contracts/output.py,sha256=t1KLw610-hHy63UbFFE2BYwWHWRbW8_ofuEvRLx_IUE,983
11
11
  orionis/installer/contracts/setup.py,sha256=aWYkCv-z48bXXZynYapc3uMIE1gyO6XnkTw3b4MTBq4,784
12
12
  orionis/luminate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- orionis/luminate/application.py,sha256=j6aEhCZhmann6HiuhoWmnJQbNTqZdu3oegPt0SQtJX4,9542
13
+ orionis/luminate/application.py,sha256=q48CQ79vuSjg1WbU6cqMnxdyQctCtqxyvLyGuo_C7Go,9532
14
14
  orionis/luminate/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  orionis/luminate/config/app.py,sha256=o-Ons0LMp77_E18e_dx_DqGVbjaY2l-5RdVSCILxgfg,1655
16
16
  orionis/luminate/config/auth.py,sha256=ivAUgoEYEtfdC49vDwOl_MXFUVAQnUJTc8iG3Lu0Stc,430
@@ -48,7 +48,7 @@ orionis/luminate/container/container.py,sha256=9xdODX1h4YK6V-THrfgm5XN95imobExzr
48
48
  orionis/luminate/container/container_integrity.py,sha256=6d9FsGk-Rm1AXgqBS3Nww49dR7n1ptXTTNyGUuBHgNY,10111
49
49
  orionis/luminate/container/exception.py,sha256=ap1SqYEjQEEHXJJTNmL7V1jrmRjgT5_7geZ95MYkhMA,1691
50
50
  orionis/luminate/container/lifetimes.py,sha256=2lbdiV7R2WlJf1cLD6eBxLnJud_lZvX1IhQH2Djy3Ww,375
51
- orionis/luminate/container/resolve.py,sha256=3wyMgJ0hQVAW_-Tx5nmXx3_nTjV_gSGNmqLZXUthgc8,2322
51
+ orionis/luminate/container/resolve.py,sha256=JZCCwdGOHkd7gc8t7AMars2dmbqEr_k2XnNbNU6kTlk,2312
52
52
  orionis/luminate/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  orionis/luminate/contracts/application.py,sha256=FIR6WMY0y-Hkjp0jWfjJV9kwIqBb-RB1-Jl0GWCk9eI,1077
54
54
  orionis/luminate/contracts/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -67,7 +67,7 @@ orionis/luminate/contracts/console/output/progress_bar.py,sha256=sOkQzQsliFemqZH
67
67
  orionis/luminate/contracts/container/container.py,sha256=rLOS1eYir1e1e06OVNTGESbR24rFOIU1CVni_8AbHgs,8802
68
68
  orionis/luminate/contracts/container/container_integrity.py,sha256=xigWcyxLUaFoWXEI75ucJ50Ypw2NtOiRp_CgOY3Qk20,4408
69
69
  orionis/luminate/contracts/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- orionis/luminate/contracts/facades/facade.py,sha256=LOACtfRduXo-0_de7smacMIGQHlap4D1y4oVTzsIK-Y,1516
70
+ orionis/luminate/contracts/facades/facade.py,sha256=LYrZ8tE86w6GpFqMpBQE49KZShL5xAk3qhsig8jh8RQ,1506
71
71
  orionis/luminate/contracts/facades/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  orionis/luminate/contracts/facades/commands/commands_facade.py,sha256=LpSfZb3lTmhgMx0H42NmFbKLvcOqSDIbpQrkQpF9RPY,1274
73
73
  orionis/luminate/contracts/facades/commands/scheduler_facade.py,sha256=CR2E7WbYGt8ZMpekUzWBHCor3FEnBmYMDwPfKSYPq84,947
@@ -160,9 +160,10 @@ orionis/luminate/services/log/log_service.py,sha256=jrCrKz7Uj6n_ri-v5A4YOILQGUQ9
160
160
  orionis/luminate/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
161
  orionis/luminate/support/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
162
  orionis/luminate/support/adapters/dot_dict.py,sha256=FVHfBuAGTTVMjNG01Fix645fRNKKUMmNx61pYkxPL5c,1253
163
- orionis/luminate/support/async_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
- orionis/luminate/support/async_io/async_coroutine.py,sha256=gOs9S_ath2BY6NV1s9whD0JXJa4qeRaaZgFyHqoqTm0,1808
165
- orionis/luminate/support/async_io/contracts/async_coroutine.py,sha256=D2NhVwPO_TKQ9UjLn61aeC0n7GmIXHtVpdel8pruXcI,763
163
+ orionis/luminate/support/asynchrony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
+ orionis/luminate/support/asynchrony/async_io.py,sha256=IkgVrJnnvNExkhy9brfZpTq2EXptyg3ZB2_ZSH9xDe8,1591
165
+ orionis/luminate/support/asynchrony/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
+ orionis/luminate/support/asynchrony/contracts/async_coroutine.py,sha256=lwtDa6r7I6qbxzKr5MyJtMRaYW6e5j2dbymEPNaNIEo,614
166
167
  orionis/luminate/support/inspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
168
  orionis/luminate/support/inspection/container_integrity.py,sha256=6d9FsGk-Rm1AXgqBS3Nww49dR7n1ptXTTNyGUuBHgNY,10111
168
169
  orionis/luminate/support/inspection/functions.py,sha256=4wDT7iNp-5l4vuHk0UsIxN9wakASJRD4V0KY24uMDzk,7227
@@ -181,6 +182,10 @@ orionis/luminate/support/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
181
182
  orionis/luminate/support/parsers/exception_parser.py,sha256=6MTeql76c1Muh9Nn-jz2jJdzb9_F7SLdoFjqBD5F8lY,3642
182
183
  orionis/luminate/support/parsers/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
184
  orionis/luminate/support/parsers/contracts/exception_parser.py,sha256=HcWN7nJrvD7xLREPKEnBhyG30IkkAB7Bx_hGpcfb0ZE,912
185
+ orionis/luminate/support/paths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
+ orionis/luminate/support/paths/resolver.py,sha256=hsJCY0kvYGqSGuiZL-IdVp2YShiaOvbWKcbwqTHc9X0,2829
187
+ orionis/luminate/support/paths/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
+ orionis/luminate/support/paths/contracts/resolver.py,sha256=v7uTgByE2nQS2ZM_b1rtMzY6HH03MNKfAYQoTswPf9o,1627
184
189
  orionis/luminate/support/patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
190
  orionis/luminate/support/patterns/singleton.py,sha256=b3U0nubKSQWyal5wTXADVPtOztkaTk-M8Zwy-bje1L0,1425
186
191
  orionis/luminate/support/standard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -217,7 +222,7 @@ tests/support/adapters/test_doct_dict.py,sha256=Rh0wUZLBErqrzwoRSUa7t1rpRm-Qp-HR
217
222
  tests/support/adapters/fakes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
223
  tests/support/adapters/fakes/fake_dict.py,sha256=KD48_xBc8pqj3LAe1_v1esu-1Fdz8fL5eZ70LSqkcbg,393
219
224
  tests/support/async_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
- tests/support/async_io/test_async_coroutine.py,sha256=lxbkcJJV-B-pxexSxNpmFypFcBK3zLPI18ySngZI3zk,1584
225
+ tests/support/async_io/test_async_coroutine.py,sha256=qXmpfyqaeNUSRQFdKVViGiF2FsRQle9VqyFeR-jAetg,1532
221
226
  tests/support/inspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
227
  tests/support/inspection/test_reflection_abstract.py,sha256=6w8vm8H_fR4Z-KYjQGm8bq-HcetlpQl0EsDmDy3WzQ8,9311
223
228
  tests/support/inspection/test_reflection_concrete.py,sha256=3BWSU7MkFEv2UgAVAwhiaMrzEwAyDBBJCa6edOENKSU,6782
@@ -234,13 +239,15 @@ tests/support/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
234
239
  tests/support/parsers/test_exception_parser.py,sha256=s-ZRbxyr9bs5uis2SM0IN-vCc-AJhWqRnEMIVgeEFXE,2363
235
240
  tests/support/parsers/fakes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
241
  tests/support/parsers/fakes/fake_custom_error.py,sha256=BD8tQPhmIYFYVcaeMpEQ6uK1d6pcU4EGbwRkVfCZp7c,802
242
+ tests/support/path/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
+ tests/support/path/test_resolver.py,sha256=VkHeHu87Hmmq4_mHB6jM8OsjxDyWgB-5E7KGAn-dRe0,1258
237
244
  tests/support/patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
245
  tests/support/patterns/test_singleton.py,sha256=U5uwpgGcP7-fIazsnFLwg30mmc24S62udhVIHuL-scY,634
239
246
  tests/support/standard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
247
  tests/support/standard/test_std.py,sha256=bJ5LV_OKEEZa_Bk3PTk9Kapk6qECLzcKf0hfR_x2QqM,2042
241
- orionis-0.222.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
242
- orionis-0.222.0.dist-info/METADATA,sha256=9b5uvIW1eXpHWKp4SRp9xaimfAyPZnJSo7XHkd0o1H4,3003
243
- orionis-0.222.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
244
- orionis-0.222.0.dist-info/entry_points.txt,sha256=a_e0faeSqyUCVZd0MqljQ2oaHHdlsz6g9sU_bMqi5zQ,49
245
- orionis-0.222.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
246
- orionis-0.222.0.dist-info/RECORD,,
248
+ orionis-0.224.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
249
+ orionis-0.224.0.dist-info/METADATA,sha256=VRshDyImo10teazzW8pRZqjFDyKlT0pbXPJArTE2hKM,3003
250
+ orionis-0.224.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
251
+ orionis-0.224.0.dist-info/entry_points.txt,sha256=a_e0faeSqyUCVZd0MqljQ2oaHHdlsz6g9sU_bMqi5zQ,49
252
+ orionis-0.224.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
253
+ orionis-0.224.0.dist-info/RECORD,,
@@ -1,7 +1,7 @@
1
- from orionis.luminate.support.async_io.async_coroutine import AsyncCoroutine
1
+ from orionis.luminate.support.asynchrony.async_io import AsyncIO
2
2
  from orionis.luminate.test.test_case import TestCase
3
3
 
4
- class TestsAsyncCoroutine(TestCase):
4
+ class TestsAsyncIO(TestCase):
5
5
 
6
6
  async def testExecuteWithActiveEventLoop(self):
7
7
  """
@@ -12,7 +12,7 @@ class TestsAsyncCoroutine(TestCase):
12
12
  async def sample_coroutine():
13
13
  return "Hello, World!"
14
14
 
15
- result = await AsyncCoroutine.execute(sample_coroutine())
15
+ result = await AsyncIO.run(sample_coroutine())
16
16
  self.assertEqual(result, "Hello, World!")
17
17
 
18
18
  def testExecuteWithoutActiveEventLoop(self):
@@ -23,7 +23,7 @@ class TestsAsyncCoroutine(TestCase):
23
23
  async def sample_coroutine():
24
24
  return "Hello, World!"
25
25
 
26
- result = AsyncCoroutine.execute(sample_coroutine())
26
+ result = AsyncIO.run(sample_coroutine())
27
27
  self.assertEqual(result, "Hello, World!")
28
28
 
29
29
  def testExecuteWithNonCoroutine(self):
@@ -35,4 +35,4 @@ class TestsAsyncCoroutine(TestCase):
35
35
  return "Hello, World!"
36
36
 
37
37
  with self.assertRaises(TypeError):
38
- AsyncCoroutine.execute(sample_no_coroutine())
38
+ AsyncIO.run(sample_no_coroutine())
File without changes
@@ -0,0 +1,33 @@
1
+ from orionis.luminate.support.paths.resolver import Resolver
2
+ from orionis.luminate.test.test_case import TestCase
3
+
4
+ class TestsResolver(TestCase):
5
+
6
+ async def testFileNotFound(self):
7
+ """
8
+ Test the Resolver class for a non-existent file path.
9
+ """
10
+ file_path = "non_existent_file.txt"
11
+ with self.assertRaises(FileNotFoundError):
12
+ Resolver().relativePath(file_path)
13
+
14
+ async def testValidFilePath(self):
15
+ """
16
+ Test the Resolver class for a valid file path.
17
+ """
18
+ path = Resolver().relativePath('orionis/luminate/test/test_suite.py').toString()
19
+ self.assertTrue(path.endswith('test_suite.py'))
20
+
21
+ async def testOtherBasePath(self):
22
+ """
23
+ Test the Resolver class for a different base path.
24
+ """
25
+ path = Resolver('orionis/luminate/test').relativePath('test_suite.py').toString()
26
+ self.assertTrue(path.endswith('test_suite.py'))
27
+
28
+ async def testEqualOutputString(self):
29
+ """
30
+ Test the Resolver class for a string representation of the resolved path.
31
+ """
32
+ path = Resolver().relativePath('orionis/luminate/test/test_suite.py')
33
+ self.assertEqual(path.toString(), str(path))