orionis 0.44.0__py3-none-any.whl → 0.46.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. orionis/cli_manager.py +16 -30
  2. orionis/contracts/bootstrap/i_command_bootstrapper.py +59 -0
  3. orionis/contracts/bootstrap/i_config_bootstrapper.py +112 -0
  4. orionis/contracts/bootstrap/i_environment_bootstrapper.py +33 -0
  5. orionis/{luminate/contracts/console/base/base_command_interface.py → contracts/console/base/i_command.py} +0 -1
  6. orionis/contracts/facades/config/i_config_facade.py +37 -0
  7. orionis/contracts/facades/environment/i_environment_facade.py +40 -0
  8. orionis/{luminate/contracts/facades/paths_interface.py → contracts/facades/files/i_path_facade.py} +27 -20
  9. orionis/contracts/facades/log/i_log_facade.py +83 -0
  10. orionis/{luminate/contracts/facades/tests_interface.py → contracts/facades/tests/i_tests_facade.py} +3 -6
  11. orionis/{luminate/contracts/console/scripts/management_interface.py → contracts/installer/i_installer_manager.py} +19 -16
  12. orionis/contracts/installer/i_installer_output.py +101 -0
  13. orionis/contracts/installer/i_installer_setup.py +59 -0
  14. orionis/contracts/providers/i_service_provider.py +27 -0
  15. orionis/contracts/services/config/i_config_service.py +37 -0
  16. orionis/contracts/services/files/i_path_service.py +31 -0
  17. orionis/contracts/services/log/i_log_service.py +89 -0
  18. orionis/{luminate/facades/environment.py → contracts/support/i_environment.py} +25 -32
  19. orionis/{luminate/contracts/tools/exception_to_dict_interface.py → contracts/support/i_exception_to_dict.py} +0 -9
  20. orionis/{luminate/contracts/tools/reflection_interface.py → contracts/support/i_reflection.py} +17 -8
  21. orionis/{luminate/contracts/tools/std_interface.py → contracts/support/i_std.py} +3 -16
  22. orionis/framework.py +1 -1
  23. orionis/{luminate/console/scripts/management.py → installer/installer_manager.py} +22 -16
  24. orionis/{luminate/installer/output.py → installer/installer_output.py} +16 -10
  25. orionis/{luminate/installer/setup.py → installer/installer_setup.py} +13 -25
  26. orionis/luminate/app.py +15 -11
  27. orionis/luminate/bootstrap/command_bootstrapper.py +150 -0
  28. orionis/luminate/bootstrap/config_bootstrapper.py +168 -0
  29. orionis/luminate/bootstrap/environment_bootstrapper.py +67 -0
  30. orionis/luminate/config/helpers.py +20 -0
  31. orionis/luminate/console/base/command.py +1 -3
  32. orionis/luminate/console/command_filter.py +2 -2
  33. orionis/luminate/console/commands/cache_clear.py +17 -5
  34. orionis/luminate/console/commands/help.py +19 -13
  35. orionis/luminate/console/commands/schedule_work.py +6 -3
  36. orionis/luminate/console/commands/tests.py +1 -6
  37. orionis/luminate/console/commands/version.py +0 -5
  38. orionis/luminate/console/exceptions/cli_exception.py +1 -4
  39. orionis/luminate/console/kernel.py +2 -2
  40. orionis/luminate/console/output/console.py +2 -2
  41. orionis/luminate/console/output/executor.py +1 -1
  42. orionis/luminate/console/output/progress_bar.py +1 -1
  43. orionis/luminate/console/parser.py +2 -2
  44. orionis/luminate/console/runner.py +127 -126
  45. orionis/luminate/console/tasks/scheduler.py +8 -7
  46. orionis/luminate/container/container.py +1 -1
  47. orionis/luminate/container/types.py +38 -12
  48. orionis/luminate/facades/config/config_facade.py +43 -0
  49. orionis/luminate/facades/environment/environment_facade.py +68 -0
  50. orionis/luminate/facades/{paths.py → files/path_facade.py} +50 -6
  51. orionis/luminate/facades/log/__init__.py +0 -0
  52. orionis/luminate/facades/log/log_facade.py +95 -0
  53. orionis/luminate/facades/tests/__init__.py +0 -0
  54. orionis/luminate/facades/{tests.py → tests/tests_facade.py} +1 -1
  55. orionis/luminate/patterns/__init__.py +0 -0
  56. orionis/luminate/pipelines/cli_pipeline.py +122 -116
  57. orionis/luminate/providers/__init__.py +0 -0
  58. orionis/luminate/providers/config/__init__.py +0 -0
  59. orionis/luminate/providers/config/config_service_provider.py +26 -0
  60. orionis/luminate/providers/files/__init__.py +0 -0
  61. orionis/luminate/providers/files/path_service_provider.py +26 -0
  62. orionis/luminate/providers/log/__init__.py +0 -0
  63. orionis/luminate/providers/log/log_service_provider.py +26 -0
  64. orionis/luminate/services/__init__.py +0 -0
  65. orionis/luminate/services/config/__init__.py +0 -0
  66. orionis/luminate/services/config/config_service.py +72 -0
  67. orionis/luminate/services/files/__init__.py +0 -0
  68. orionis/luminate/services/files/path_service.py +71 -0
  69. orionis/luminate/services/log/__init__.py +0 -0
  70. orionis/luminate/services/log/log_service.py +159 -0
  71. orionis/luminate/{config → support}/environment.py +21 -32
  72. orionis/luminate/{tools → support}/exception_to_dict.py +1 -1
  73. orionis/luminate/{tools → support}/reflection.py +1 -1
  74. orionis/luminate/{tools → support}/std.py +1 -1
  75. orionis/luminate/test/unit_test.py +1 -2
  76. {orionis-0.44.0.dist-info → orionis-0.46.0.dist-info}/METADATA +1 -1
  77. orionis-0.46.0.dist-info/RECORD +157 -0
  78. tests/tools/test_reflection.py +1 -1
  79. orionis/luminate/bootstrap/commands/bootstrapper.py +0 -101
  80. orionis/luminate/bootstrap/commands/register.py +0 -92
  81. orionis/luminate/bootstrap/config/bootstrapper.py +0 -79
  82. orionis/luminate/bootstrap/config/parser.py +0 -53
  83. orionis/luminate/bootstrap/config/register.py +0 -76
  84. orionis/luminate/cache/app/config.py +0 -91
  85. orionis/luminate/cache/console/commands.py +0 -97
  86. orionis/luminate/console/cache.py +0 -87
  87. orionis/luminate/console/command.py +0 -40
  88. orionis/luminate/contracts/bootstrap/commands/bootstrapper_interface.py +0 -44
  89. orionis/luminate/contracts/bootstrap/commands/register_interface.py +0 -33
  90. orionis/luminate/contracts/bootstrap/config/bootstrapper_interface.py +0 -40
  91. orionis/luminate/contracts/bootstrap/config/parser_interface.py +0 -46
  92. orionis/luminate/contracts/bootstrap/config/register_interface.py +0 -47
  93. orionis/luminate/contracts/cache/app/config_interface.py +0 -76
  94. orionis/luminate/contracts/cache/console/commands_interface.py +0 -78
  95. orionis/luminate/contracts/config/environment_interface.py +0 -64
  96. orionis/luminate/contracts/console/command_interface.py +0 -36
  97. orionis/luminate/contracts/console/runner_interface.py +0 -50
  98. orionis/luminate/contracts/facades/env_interface.py +0 -64
  99. orionis/luminate/contracts/facades/log_interface.py +0 -48
  100. orionis/luminate/contracts/files/paths_interface.py +0 -29
  101. orionis/luminate/contracts/installer/output_interface.py +0 -125
  102. orionis/luminate/contracts/installer/setup_interface.py +0 -29
  103. orionis/luminate/contracts/installer/upgrade_interface.py +0 -24
  104. orionis/luminate/contracts/log/logger_interface.py +0 -33
  105. orionis/luminate/contracts/pipelines/cli_pipeline_interface.py +0 -84
  106. orionis/luminate/contracts/publisher/pypi_publisher_interface.py +0 -36
  107. orionis/luminate/contracts/test/unit_test_interface.py +0 -51
  108. orionis/luminate/facades/config.py +0 -10
  109. orionis/luminate/facades/log.py +0 -56
  110. orionis/luminate/files/paths.py +0 -56
  111. orionis/luminate/installer/upgrade.py +0 -42
  112. orionis/luminate/log/logger.py +0 -116
  113. orionis/luminate/publisher/pypi.py +0 -215
  114. orionis-0.44.0.dist-info/RECORD +0 -156
  115. /orionis/{luminate/bootstrap/config → contracts}/__init__.py +0 -0
  116. /orionis/{luminate/cache → contracts/config}/__init__.py +0 -0
  117. /orionis/{luminate/contracts/config/config_interface.py → contracts/config/i_config.py} +0 -0
  118. /orionis/{luminate/cache/app → contracts/console}/__init__.py +0 -0
  119. /orionis/{luminate/cache/console → contracts/console/base}/__init__.py +0 -0
  120. /orionis/{luminate/contracts/console/command_filter_interface.py → contracts/console/i_command_filter.py} +0 -0
  121. /orionis/{luminate/contracts/console/kernel_interface.py → contracts/console/i_kernel.py} +0 -0
  122. /orionis/{luminate/contracts/console/parser_interface.py → contracts/console/i_parser.py} +0 -0
  123. /orionis/{luminate/contracts/console/task_manager_interface.py → contracts/console/i_task_manager.py} +0 -0
  124. /orionis/{luminate/config/dataclass → contracts/console/output}/__init__.py +0 -0
  125. /orionis/{luminate/contracts/console/output/console_interface.py → contracts/console/output/i_console.py} +0 -0
  126. /orionis/{luminate/contracts/console/output/executor_interface.py → contracts/console/output/i_executor.py} +0 -0
  127. /orionis/{luminate/contracts/console/output/progress_bar_interface.py → contracts/console/output/i_progress_bar.py} +0 -0
  128. /orionis/{luminate/console/scripts → contracts/console/tasks}/__init__.py +0 -0
  129. /orionis/{luminate/contracts/console/tasks/schedule_interface.py → contracts/console/tasks/i_schedule.py} +0 -0
  130. /orionis/{luminate/contracts/container/container_interface.py → contracts/container/i_container.py} +0 -0
  131. /orionis/{luminate/contracts/container/types_interface.py → contracts/container/i_types.py} +0 -0
  132. /orionis/{luminate/contracts → contracts/facades}/__init__.py +0 -0
  133. /orionis/{luminate/contracts/cache → contracts/facades/config}/__init__.py +0 -0
  134. /orionis/{luminate/contracts/config → contracts/facades/environment}/__init__.py +0 -0
  135. /orionis/{luminate/contracts/console → contracts/facades/files}/__init__.py +0 -0
  136. /orionis/{luminate/contracts/facades → contracts/facades/log}/__init__.py +0 -0
  137. /orionis/{luminate/contracts/files → contracts/facades/tests}/__init__.py +0 -0
  138. /orionis/{luminate/contracts → contracts}/installer/__init__.py +0 -0
  139. /orionis/{luminate/contracts/log → contracts/providers}/__init__.py +0 -0
  140. /orionis/{luminate/contracts/publisher → contracts/services}/__init__.py +0 -0
  141. /orionis/{luminate/contracts/test → contracts/services/config}/__init__.py +0 -0
  142. /orionis/{luminate/contracts/tools → contracts/services/files}/__init__.py +0 -0
  143. /orionis/{luminate/files → contracts/services/log}/__init__.py +0 -0
  144. /orionis/{luminate/installer → installer}/__init__.py +0 -0
  145. /orionis/luminate/bootstrap/{cli_exception.py → exception_bootstrapper.py} +0 -0
  146. /orionis/luminate/config/{dataclass/app.py → app.py} +0 -0
  147. /orionis/luminate/config/{dataclass/auth.py → auth.py} +0 -0
  148. /orionis/luminate/config/{dataclass/cache.py → cache.py} +0 -0
  149. /orionis/luminate/config/{dataclass/cors.py → cors.py} +0 -0
  150. /orionis/luminate/config/{dataclass/database.py → database.py} +0 -0
  151. /orionis/luminate/config/{dataclass/filesystems.py → filesystems.py} +0 -0
  152. /orionis/luminate/config/{dataclass/logging.py → logging.py} +0 -0
  153. /orionis/luminate/config/{dataclass/mail.py → mail.py} +0 -0
  154. /orionis/luminate/config/{dataclass/queue.py → queue.py} +0 -0
  155. /orionis/luminate/config/{dataclass/session.py → session.py} +0 -0
  156. /orionis/luminate/{log → facades/config}/__init__.py +0 -0
  157. /orionis/luminate/{publisher → facades/environment}/__init__.py +0 -0
  158. /orionis/luminate/{tools → facades/files}/__init__.py +0 -0
  159. /orionis/luminate/{tools → support}/dot_dict.py +0 -0
  160. /orionis/{luminate/installer → static/ascii}/icon.ascii +0 -0
  161. /orionis/{luminate/installer → static/ascii}/info.ascii +0 -0
  162. /orionis/{luminate/static → static}/bg/galaxy.jpg +0 -0
  163. /orionis/{luminate/static → static}/favicon/OrionisFrameworkFavicon.png +0 -0
  164. /orionis/{luminate/static → static}/logos/OrionisFramework.jpg +0 -0
  165. /orionis/{luminate/static → static}/logos/OrionisFramework.png +0 -0
  166. /orionis/{luminate/static → static}/logos/OrionisFramework.psd +0 -0
  167. /orionis/{luminate/static → static}/logos/OrionisFramework2.png +0 -0
  168. /orionis/{luminate/static → static}/logos/OrionisFramework3.png +0 -0
  169. {orionis-0.44.0.dist-info → orionis-0.46.0.dist-info}/LICENCE +0 -0
  170. {orionis-0.44.0.dist-info → orionis-0.46.0.dist-info}/WHEEL +0 -0
  171. {orionis-0.44.0.dist-info → orionis-0.46.0.dist-info}/entry_points.txt +0 -0
  172. {orionis-0.44.0.dist-info → orionis-0.46.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,72 @@
1
+ from typing import Any, Optional
2
+ from orionis.contracts.services.config.i_config_service import IConfigService
3
+ from orionis.luminate.container.container import Container
4
+
5
+ class ConfigService(IConfigService):
6
+
7
+ def __init__(self, container: Container) -> None:
8
+ """
9
+ Initializes the ConfigService with the provided configuration.
10
+
11
+ Args:
12
+ config (dict): A dictionary containing configuration settings.
13
+ """
14
+ self.container = container
15
+ self._config = self.container._config
16
+
17
+ def set(self, key: str, value: Any) -> None:
18
+ """
19
+ Dynamically sets a configuration value using dot notation.
20
+
21
+ Parameters
22
+ ----------
23
+ key : str
24
+ The configuration key (e.g., 'app.debug').
25
+ value : Any
26
+ The value to set.
27
+ """
28
+ keys = key.split(".")
29
+ section = keys[0]
30
+ sub_keys = keys[1:]
31
+
32
+ if section not in self._config:
33
+ self._config[section] = {}
34
+
35
+ current = self._config[section]
36
+ for sub_key in sub_keys[:-1]:
37
+ if sub_key not in current:
38
+ current[sub_key] = {}
39
+ current = current[sub_key]
40
+
41
+ current[sub_keys[-1]] = value
42
+
43
+ def get(self, key: str, default: Optional[Any] = None) -> Any:
44
+ """
45
+ Retrieves a configuration value using dot notation.
46
+
47
+ Parameters
48
+ ----------
49
+ key : str
50
+ The configuration key (e.g., 'app.debug').
51
+ default : Optional[Any]
52
+ The default value to return if the key is not found.
53
+
54
+ Returns
55
+ -------
56
+ Any
57
+ The configuration value or the default value if the key is not found.
58
+ """
59
+ keys = key.split(".")
60
+ section = keys[0]
61
+ sub_keys = keys[1:]
62
+
63
+ if section not in self._config:
64
+ return default
65
+
66
+ current = self._config[section]
67
+ for sub_key in sub_keys:
68
+ if sub_key not in current:
69
+ return default
70
+ current = current[sub_key]
71
+
72
+ return current
File without changes
@@ -0,0 +1,71 @@
1
+ import os
2
+ from pathlib import Path
3
+ from orionis.contracts.services.files.i_path_service import IPathService
4
+
5
+ class PathService(IPathService):
6
+ """
7
+ A service class for resolving and validating absolute paths.
8
+
9
+ This class resolves the absolute path for a given relative directory or file path
10
+ based on the script's execution directory. It ensures that the requested path is valid
11
+ (either a directory or a file) and provides methods to retrieve the resolved path.
12
+
13
+ Attributes
14
+ ----------
15
+ route : str
16
+ The resolved absolute path to the directory or file.
17
+
18
+ Methods
19
+ -------
20
+ __init__(route: str)
21
+ Initializes the `PathService` and resolves the absolute path.
22
+ resolve() -> str
23
+ Returns the resolved absolute path as a string.
24
+ __str__() -> str
25
+ Returns the resolved absolute path as a string (dunder method).
26
+ """
27
+
28
+ def __init__(self) -> None:
29
+ """
30
+ Initializes the `PathService` and resolves the absolute path for a given relative path.
31
+
32
+ The path is resolved relative to the script's execution directory. It validates
33
+ that the resolved path exists and is either a directory or a file.
34
+ """
35
+ self.base_path = Path(os.getcwd())
36
+
37
+
38
+ def resolve(self, route: str) -> str:
39
+ """
40
+ Resolves and returns the absolute path as a string.
41
+
42
+ This method combines the base path (current working directory) with the provided
43
+ relative path, resolves it to an absolute path, and validates that it exists
44
+ and is either a directory or a file.
45
+
46
+ Parameters
47
+ ----------
48
+ route : str
49
+ The relative directory or file path to be resolved.
50
+
51
+ Returns
52
+ -------
53
+ str
54
+ The absolute path to the directory or file.
55
+
56
+ Raises
57
+ ------
58
+ ValueError
59
+ If the resolved path does not exist or is neither a directory nor a file.
60
+ """
61
+
62
+ # Combine base path with the relative route
63
+ real_path = (self.base_path / route).resolve()
64
+
65
+ # Validate that the path exists and is either a directory or a file
66
+ if not real_path.exists():
67
+ raise ValueError(f"The requested path does not exist: {real_path}")
68
+ if not (real_path.is_dir() or real_path.is_file()):
69
+ raise ValueError(f"The requested path is neither a directory nor a file: {real_path}")
70
+
71
+ self.route = str(real_path)
File without changes
@@ -0,0 +1,159 @@
1
+ import os
2
+ import logging
3
+ from pathlib import Path
4
+ from typing import Optional
5
+ from orionis.contracts.services.log.i_log_service import ILogguerService
6
+
7
+ class LogguerService(ILogguerService):
8
+ """
9
+ A service class for logging messages with different severity levels.
10
+
11
+ This class initializes a logger that can write logs to a file. It supports
12
+ various log levels such as INFO, ERROR, SUCCESS, WARNING, and DEBUG.
13
+
14
+ Attributes
15
+ ----------
16
+ logger : logging.Logger
17
+ The logger instance used to log messages.
18
+
19
+ Methods
20
+ -------
21
+ __init__(path: Optional[str] = None, level: int = logging.INFO, filename: Optional[str] = 'orionis.log')
22
+ Initializes the logger with the specified path, log level, and filename.
23
+ _initialize_logger(path: Optional[str], level: int, filename: Optional[str] = 'orionis.log')
24
+ Configures the logger with the specified settings.
25
+ info(message: str) -> None
26
+ Logs an informational message.
27
+ error(message: str) -> None
28
+ Logs an error message.
29
+ success(message: str) -> None
30
+ Logs a success message (treated as info).
31
+ warning(message: str) -> None
32
+ Logs a warning message.
33
+ debug(message: str) -> None
34
+ Logs a debug message.
35
+ """
36
+
37
+ def __init__(self, path: Optional[str] = None, level: int = logging.INFO, filename: Optional[str] = 'orionis.log'):
38
+ """
39
+ Initializes the logger with the specified path, log level, and filename.
40
+
41
+ Parameters
42
+ ----------
43
+ path : Optional[str]
44
+ The directory path where the log file will be stored. If not provided,
45
+ it defaults to a 'logs' directory inside the 'storage' folder of the
46
+ current working directory.
47
+ level : int
48
+ The logging level (e.g., logging.INFO, logging.ERROR). Defaults to logging.INFO.
49
+ filename : Optional[str]
50
+ The name of the log file. Defaults to 'orionis.log'.
51
+ """
52
+ self._initialize_logger(path, level, filename)
53
+
54
+ def _initialize_logger(self, path: Optional[str], level: int, filename: Optional[str] = 'orionis.log'):
55
+ """
56
+ Configures the logger with the specified settings.
57
+
58
+ This method sets up the logger to write logs to a file. If the specified
59
+ directory does not exist, it creates it. The log format includes the
60
+ timestamp and the log message.
61
+
62
+ Parameters
63
+ ----------
64
+ path : Optional[str]
65
+ The directory path where the log file will be stored.
66
+ level : int
67
+ The logging level (e.g., logging.INFO, logging.ERROR).
68
+ filename : Optional[str]
69
+ The name of the log file.
70
+
71
+ Raises
72
+ ------
73
+ RuntimeError
74
+ If the logger cannot be initialized due to an error.
75
+ """
76
+ try:
77
+ # Resolve the log directory and file path
78
+ if path is None:
79
+ base_path = Path(os.getcwd())
80
+ log_dir = base_path / "storage" / "logs"
81
+
82
+ # Create the log directory if it does not exist
83
+ if not log_dir.exists():
84
+ log_dir.mkdir(parents=True, exist_ok=True)
85
+
86
+ path = log_dir / filename
87
+
88
+ # Configure the logger
89
+ logging.basicConfig(
90
+ level=level,
91
+ format="%(asctime)s - %(message)s",
92
+ datefmt="%Y-%m-%d %H:%M:%S",
93
+ encoding="utf-8",
94
+ handlers=[
95
+ logging.FileHandler(path) # Log to a file
96
+ # logging.StreamHandler() # Uncomment to also log to the console
97
+ ]
98
+ )
99
+
100
+ # Get the logger instance
101
+ self.logger = logging.getLogger(__name__)
102
+
103
+ except Exception as e:
104
+ raise RuntimeError(f"Failed to initialize logger: {e}")
105
+
106
+ def info(self, message: str) -> None:
107
+ """
108
+ Logs an informational message.
109
+
110
+ Parameters
111
+ ----------
112
+ message : str
113
+ The message to log.
114
+ """
115
+ self.logger.info(f"[INFO] - {message}")
116
+
117
+ def error(self, message: str) -> None:
118
+ """
119
+ Logs an error message.
120
+
121
+ Parameters
122
+ ----------
123
+ message : str
124
+ The message to log.
125
+ """
126
+ self.logger.error(f"[ERROR] - {message}")
127
+
128
+ def success(self, message: str) -> None:
129
+ """
130
+ Logs a success message (treated as info).
131
+
132
+ Parameters
133
+ ----------
134
+ message : str
135
+ The message to log.
136
+ """
137
+ self.logger.info(f"[SUCCESS] - {message}")
138
+
139
+ def warning(self, message: str) -> None:
140
+ """
141
+ Logs a warning message.
142
+
143
+ Parameters
144
+ ----------
145
+ message : str
146
+ The message to log.
147
+ """
148
+ self.logger.warning(f"[WARNING] - {message}")
149
+
150
+ def debug(self, message: str) -> None:
151
+ """
152
+ Logs a debug message.
153
+
154
+ Parameters
155
+ ----------
156
+ message : str
157
+ The message to log.
158
+ """
159
+ self.logger.debug(f"[DEBUG] - {message}")
@@ -1,42 +1,19 @@
1
1
  import os
2
- import threading
3
2
  from pathlib import Path
4
3
  from dotenv import set_key, unset_key, dotenv_values
5
- from orionis.luminate.contracts.config.environment_interface import IEnvironment
4
+ from orionis.contracts.support.i_environment import IEnvironment
5
+ from orionis.luminate.patterns.singleton import SingletonMeta
6
6
 
7
- class Environment(IEnvironment):
8
- """
9
- Singleton class to manage environment variables from a .env file.
10
- Ensures a single instance handles environment variable access,
11
- modification, and deletion.
12
- """
7
+ class Environment(IEnvironment, metaclass=SingletonMeta):
13
8
 
14
- # Singleton instance
15
- _instance = None
16
-
17
- # Thread lock to control instance creation
18
- _lock = threading.Lock()
19
-
20
- def __new__(cls, path: str = None):
9
+ def __init__(self, path: str = None):
21
10
  """
22
- Creates or returns the singleton instance.
23
- Ensures thread-safe initialization using a lock.
24
-
25
- Parameters
26
- ----------
27
- path : str, optional
28
- Path to the .env file. Defaults to None.
11
+ Initialize the environment configuration.
29
12
 
30
- Returns
31
- -------
32
- _Environment
33
- The singleton instance of _Environment.
13
+ Args:
14
+ path (str, optional): The path to the configuration file. Defaults to None.
34
15
  """
35
- with cls._lock:
36
- if cls._instance is None:
37
- cls._instance = super().__new__(cls)
38
- cls._instance._initialize(path)
39
- return cls._instance
16
+ self._initialize(path)
40
17
 
41
18
  def _initialize(self, path: str = None):
42
19
  """
@@ -48,9 +25,11 @@ class Environment(IEnvironment):
48
25
  path : str, optional
49
26
  Path to the .env file. Defaults to None.
50
27
  """
28
+
29
+ # Set the path to the .env file
51
30
  self.path = Path(path) if path else Path(os.getcwd()) / ".env"
52
31
 
53
- # Ensure the .env file exists
32
+ # Create the .env file if it does not exist
54
33
  if not self.path.exists():
55
34
  self.path.touch()
56
35
 
@@ -71,7 +50,11 @@ class Environment(IEnvironment):
71
50
  str
72
51
  The value of the environment variable or the default value.
73
52
  """
53
+
54
+ # Get the value from the .env file
74
55
  value = dotenv_values(self.path).get(key)
56
+
57
+ # Return the value or the default value
75
58
  return value if value is not None else os.getenv(key, default)
76
59
 
77
60
  def set(self, key: str, value: str) -> None:
@@ -85,6 +68,8 @@ class Environment(IEnvironment):
85
68
  value : str
86
69
  The value to set.
87
70
  """
71
+
72
+ # Set the value in the .env file
88
73
  set_key(str(self.path), key, value)
89
74
 
90
75
  def unset(self, key: str) -> None:
@@ -96,6 +81,8 @@ class Environment(IEnvironment):
96
81
  key : str
97
82
  The key of the environment variable to remove.
98
83
  """
84
+
85
+ # Remove the key from the .env file
99
86
  unset_key(str(self.path), key)
100
87
 
101
88
  def all(self) -> dict:
@@ -107,4 +94,6 @@ class Environment(IEnvironment):
107
94
  dict
108
95
  A dictionary of all environment variables and their values.
109
96
  """
97
+
98
+ # Return all environment variables
110
99
  return dotenv_values(self.path)
@@ -1,5 +1,5 @@
1
- from orionis.luminate.contracts.tools.exception_to_dict_interface import IExceptionsToDict
2
1
  import traceback
2
+ from orionis.contracts.support.i_exception_to_dict import IExceptionsToDict
3
3
 
4
4
  class ExceptionsToDict(IExceptionsToDict):
5
5
  """
@@ -3,7 +3,7 @@ import inspect
3
3
  import importlib
4
4
  from enum import Enum
5
5
  from typing import Any, List, Optional
6
- from orionis.luminate.contracts.tools.reflection_interface import IReflection
6
+ from orionis.contracts.support.i_reflection import IReflection
7
7
 
8
8
  class Reflection(IReflection):
9
9
  """
@@ -1,4 +1,4 @@
1
- from orionis.luminate.contracts.tools.std_interface import IStdClass
1
+ from orionis.contracts.support.i_std import IStdClass
2
2
 
3
3
  class StdClass(IStdClass):
4
4
  """
@@ -3,9 +3,8 @@ import re
3
3
  import unittest
4
4
  from contextlib import redirect_stdout
5
5
  from orionis.luminate.console.output.console import Console
6
- from orionis.luminate.contracts.test.unit_test_interface import IUnitTest
7
6
 
8
- class UnitTest(IUnitTest):
7
+ class UnitTest:
9
8
  """
10
9
  A testing framework for discovering and running unit tests in a structured way.
11
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.44.0
3
+ Version: 0.46.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
@@ -0,0 +1,157 @@
1
+ orionis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ orionis/cli_manager.py,sha256=0bM-hABXJSoPGuvEgnqeaj9qcLP8VjTQ3z9Mb0TSEUI,1381
3
+ orionis/framework.py,sha256=i_9PM0t-50ZKJ4wgi0wvjWQGYJP2A-J1ZMBPgcu-go0,1386
4
+ orionis/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ orionis/contracts/bootstrap/i_command_bootstrapper.py,sha256=kdabnjTRXcab0Kelcst8MhuJ_iP0XX8taChMupwzF1M,1901
6
+ orionis/contracts/bootstrap/i_config_bootstrapper.py,sha256=x38bXXX49ASm5yZ0O6vwssmtiLMsF-fkxFcq-Cqf5GM,3480
7
+ orionis/contracts/bootstrap/i_environment_bootstrapper.py,sha256=MEeZmh0XWvzvWHFB5ZOp5SKY89F1IHsIXJvdjmEncJU,1076
8
+ orionis/contracts/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ orionis/contracts/config/i_config.py,sha256=rbeojO2gm8XhSXIPY8EnUt4e0wO633OKF9Nx_tN5y60,785
10
+ orionis/contracts/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ orionis/contracts/console/i_command_filter.py,sha256=g66AlKNjTyQfdarO23r27nFqwiCnrP6kjaZ7tUGql-c,937
12
+ orionis/contracts/console/i_kernel.py,sha256=GtiGlWe7EQ9aeChHpQ-GlIJlJ5tEqpZYYkjNcrwXI94,945
13
+ orionis/contracts/console/i_parser.py,sha256=vMmTK0wMfTjt7H-tRf-WRLI8R-ghUzJauctwtgj0jFU,2082
14
+ orionis/contracts/console/i_task_manager.py,sha256=sOmeifoncpWCG2WYh4q3QZ7M7w7P9Onb3Jxw9X2lpXE,1197
15
+ orionis/contracts/console/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ orionis/contracts/console/base/i_command.py,sha256=godE5t2r5Vrc5jYu_bsJnlSj8DjFWqtZYe14S7sKxwE,12239
17
+ orionis/contracts/console/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ orionis/contracts/console/output/i_console.py,sha256=bkYTT5oIK3NP-p7XONgi1z_SO50ZvJu31Nv7cjs4t7s,8902
19
+ orionis/contracts/console/output/i_executor.py,sha256=MGMTTPSwF8dgCjHD3A4CKtYDaCcD-KU28dorC61Q04k,1411
20
+ orionis/contracts/console/output/i_progress_bar.py,sha256=sOkQzQsliFemqZHMyzs4fWhNJfXDTk5KH3aExReetSE,1760
21
+ orionis/contracts/console/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ orionis/contracts/console/tasks/i_schedule.py,sha256=_dsR0gCvJ7_67lwPUAzBwQFHNvWM6jVjcg1EdPqDIIo,10117
23
+ orionis/contracts/container/i_container.py,sha256=c_QRQHXGIujiDnYXyt--3J2LKXngVtoB3O-qchPmFDQ,6899
24
+ orionis/contracts/container/i_types.py,sha256=GCH7x3PjpXKPET3l84GcXbcM8cpne8AGrmTw-uFaT24,526
25
+ orionis/contracts/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ orionis/contracts/facades/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ orionis/contracts/facades/config/i_config_facade.py,sha256=Yzc0mB4W9XF8cZTdTO78AKUiyGaiShl1k8nJiecvKTc,970
28
+ orionis/contracts/facades/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ orionis/contracts/facades/environment/i_environment_facade.py,sha256=CFJ8mbPZceblufxzRJ3kMweRuG4KkJyx5JzAqQ91FXY,1221
30
+ orionis/contracts/facades/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ orionis/contracts/facades/files/i_path_facade.py,sha256=-6OWYFsXmQ2vOBlp6uBwN0TnwTB-otaBEJiYO7ZKVoQ,4497
32
+ orionis/contracts/facades/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ orionis/contracts/facades/log/i_log_facade.py,sha256=xkdR6nMAENv9NLOFUAnk1WRh9bYuisSAhnlkdlD5O7g,1894
34
+ orionis/contracts/facades/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ orionis/contracts/facades/tests/i_tests_facade.py,sha256=GM6d9skPZwynx1lu_abfuJ_L5GvG9b12vI-KX7phYJc,890
36
+ orionis/contracts/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ orionis/contracts/installer/i_installer_manager.py,sha256=Zfndhuyu0JaTKo3PsGsKmVsvotQMw8Pmt4KQp97elY8,1567
38
+ orionis/contracts/installer/i_installer_output.py,sha256=SQZeXg5HRu-x1697HCdoU1-RVJWEqCWY-zNboWnc_vs,2897
39
+ orionis/contracts/installer/i_installer_setup.py,sha256=enXOusaAJVWamTpH9FjXpJf-o35twEJPaEkHz7fvB48,1711
40
+ orionis/contracts/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ orionis/contracts/providers/i_service_provider.py,sha256=zoBAsGE-KrNfCsF3u876oxoa518zMuBD9npRK7BixUs,791
42
+ orionis/contracts/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ orionis/contracts/services/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ orionis/contracts/services/config/i_config_service.py,sha256=TdlEEsd8jvzBGozwaZtQ9KYHisY4ACL-VUOtydidHeE,989
45
+ orionis/contracts/services/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ orionis/contracts/services/files/i_path_service.py,sha256=Le5sax8c_PjUyb5Hg7AVQALGjxlym5cc6OSPvGCKBKk,866
47
+ orionis/contracts/services/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ orionis/contracts/services/log/i_log_service.py,sha256=1RD3u-a5ZDMbg7AYE8y2SW8QNRybAU3De0mEA0dAeNo,2167
49
+ orionis/contracts/support/i_environment.py,sha256=sng4uN4D74MGy71J45m1oRmkKpNWLn79OEuOsf9ZuWQ,1952
50
+ orionis/contracts/support/i_exception_to_dict.py,sha256=LZpbCNDYQJs3j2mIM-NRFl0IfA8I0GFHExgRSO6K2FQ,780
51
+ orionis/contracts/support/i_reflection.py,sha256=Ht5_FsFbCb-APRXX3HdsfKl3cDZU8DyXGXPWKTn05uQ,8429
52
+ orionis/contracts/support/i_std.py,sha256=IihREHnJ_D2LqsrwtnGsIRYr0UsJsQezYPSPO6UaBQ4,992
53
+ orionis/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ orionis/installer/installer_manager.py,sha256=Hb6T0bmSl39T30maY-nUWkrLhG77JdrKe4cZHF7epEY,3134
55
+ orionis/installer/installer_output.py,sha256=Vn8g5fKWYh6X2I44ERvrjuVAI6n1DYzWeTMIXEXumpk,7226
56
+ orionis/installer/installer_setup.py,sha256=c2HtVklSa-2_-YVonc7fwtoK-RTDqBS2Ybvbekgfqtc,6970
57
+ orionis/luminate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ orionis/luminate/app.py,sha256=VUJMl5G3UAY6DaG3oqS5a9J2mBGH0DTlLjssHub4fNw,3310
59
+ orionis/luminate/app_context.py,sha256=XREVkOHU6aP8UB2daA2QbFcOCB8HRmcGXjVbrlW1AHQ,1827
60
+ orionis/luminate/bootstrap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ orionis/luminate/bootstrap/command_bootstrapper.py,sha256=fXOvdeyNoB2oN_o1YzhWMbjLa3Nubgwo5QaTNAfm9N4,6297
62
+ orionis/luminate/bootstrap/config_bootstrapper.py,sha256=Ep300UwgJvatv4TUfPy6KeqrYKjCr13eFTbKtMBsHZs,6137
63
+ orionis/luminate/bootstrap/environment_bootstrapper.py,sha256=kBTpc5j01_O5hwTLpKxwx2kOwwjOgJlrqoxlYflmHlE,2758
64
+ orionis/luminate/bootstrap/exception_bootstrapper.py,sha256=wDKfEW295c7-bavr7YUHK2CLYcTSZgjT9ZRSBne6GOE,1356
65
+ orionis/luminate/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ orionis/luminate/config/app.py,sha256=7teuVPuaV2ao0M5Bv-jhSgjEwb9DtVwde2saTRmYru4,1737
67
+ orionis/luminate/config/auth.py,sha256=CG8F0pfVjKz4DY3d1Wi7gscdhnp4TT-Q8SJ2sdsHh18,523
68
+ orionis/luminate/config/cache.py,sha256=nBKmDFDb91sbBriEsVLjMhrNb__j7YsRzZGQRDdALtA,1338
69
+ orionis/luminate/config/cors.py,sha256=zWKUylPiaUzGXTJM3eLmwY0HcAD7iOLp9QiAoTyAL08,2275
70
+ orionis/luminate/config/database.py,sha256=oj-FQWtbwIYrJAQktSGBl96EZu78fr6IBcQxHbWDVBM,5619
71
+ orionis/luminate/config/filesystems.py,sha256=fAn4Wx6naIb8E4U2TXJhVnx0Ipxpxc_Ee2w_FWfwlHI,2444
72
+ orionis/luminate/config/helpers.py,sha256=qkWDmrfjCxaSJ3P8hJlJ32xSPnKyOnJhmUn2jigPtx0,585
73
+ orionis/luminate/config/logging.py,sha256=H110K6LyTCNgxZPqiGGn0z8FZ2I6kW5ZKfsVhoWB4KM,2832
74
+ orionis/luminate/config/mail.py,sha256=3iYXG72bXiVns4sEPZ_A3-cGcFjGEGDXkuLKkk-hKtY,2102
75
+ orionis/luminate/config/queue.py,sha256=DYjP5zD09ISsIX117wtOfjiG_iQrcrPoQVeeftmuO3c,1739
76
+ orionis/luminate/config/session.py,sha256=7mOC_DfGIBDqAClSiewHoTA9Kht_zdHApvALcZc7cfY,1861
77
+ orionis/luminate/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ orionis/luminate/console/command_filter.py,sha256=os5BxR6Rcmihrv34pD-fFTkRms_nZzCIrV7vr4RNuIU,1322
79
+ orionis/luminate/console/kernel.py,sha256=uh3IeR3qI3X0esyw9dxE0LzQ6ueSd_2suMijtQn3HWM,939
80
+ orionis/luminate/console/parser.py,sha256=qif0eR54bwaVOiugVQh-NUks35XD2VofWbJlRpfR8lg,5579
81
+ orionis/luminate/console/runner.py,sha256=7oLEZpJ4lPf4YkP9bj7wvgT9GJ2gUJv81JKXEdD0gA0,4820
82
+ orionis/luminate/console/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ orionis/luminate/console/base/command.py,sha256=YGHd5xVYILcNhQumi74IRnzvagvjufEO2Bx1CwHRToY,12544
84
+ orionis/luminate/console/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ orionis/luminate/console/commands/cache_clear.py,sha256=KyXVSwtLaV1O1cTEkNzX9czCwEoeQlAjiT0jUFMO8iE,2684
86
+ orionis/luminate/console/commands/help.py,sha256=jIcCs-yByFO7Xmv3QwCaOug1Jd-6G_wAezOrE8sIeEc,2363
87
+ orionis/luminate/console/commands/schedule_work.py,sha256=r9Q-CgX1N_R1qcy0gQuUS6P7ZmAcZ6SALVnJUZmWnQg,1981
88
+ orionis/luminate/console/commands/tests.py,sha256=Z7e6aM5Vu8C7R8iC8sJgUYVN9aJgtVMkqjUEFxPq91o,1281
89
+ orionis/luminate/console/commands/version.py,sha256=llVPK6ELtf8dIdPvLbybrtipWwZkzV0EXc9ShL-C-GY,1140
90
+ orionis/luminate/console/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ orionis/luminate/console/exceptions/cli_exception.py,sha256=T5rFjBEXWQf3RbpMb7KDoYayylm5DLPUPLC5OzkZ2-I,4623
92
+ orionis/luminate/console/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ orionis/luminate/console/output/console.py,sha256=khlnCmhGW3Iu2YYO8GG7YLtnLeqysy-olGED5zcTU6A,16338
94
+ orionis/luminate/console/output/executor.py,sha256=0_6AGM1vE5umdpVVogQUE5eW9cu5UUQwc-ZvuccTI8E,3362
95
+ orionis/luminate/console/output/progress_bar.py,sha256=ssi8Drryr-shl7OxweTgGOhvRvAlCVxjBGm1L1qyO84,3089
96
+ orionis/luminate/console/output/styles.py,sha256=2e1_FJdNpKaVqmdlCx-udzTleH_6uEFE9_TjH7T1ZUk,3696
97
+ orionis/luminate/console/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
+ orionis/luminate/console/tasks/scheduler.py,sha256=YdXOdpGaezuPymVh-QnI4lAT99dKDBADDyU3ceLjU_A,22732
99
+ orionis/luminate/container/container.py,sha256=92Vh6IRx6BSWucdg6ls5Oh41KhHkPeIRD_LIHio3nhc,16400
100
+ orionis/luminate/container/exception.py,sha256=ap1SqYEjQEEHXJJTNmL7V1jrmRjgT5_7geZ95MYkhMA,1691
101
+ orionis/luminate/container/types.py,sha256=BDcXN0__voRNHZ5Gr5dF0sWIYAQyNk4TxAwILBWyDAA,1735
102
+ orionis/luminate/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
+ orionis/luminate/facades/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ orionis/luminate/facades/config/config_facade.py,sha256=GLQ6JiD2dB7WLyhUZ4SGBSNo7VuwHpX_QrrQcvjoAi8,1429
105
+ orionis/luminate/facades/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ orionis/luminate/facades/environment/environment_facade.py,sha256=AgLeECJU8N2qcs6JAyGkQTF1Amq9co0Ser0SZerjx74,2236
107
+ orionis/luminate/facades/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
+ orionis/luminate/facades/files/path_facade.py,sha256=9cEi66nwW4RD8Xc8cTa2RE9YfqW1-fbD4HXPfwce6bE,9159
109
+ orionis/luminate/facades/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ orionis/luminate/facades/log/log_facade.py,sha256=r8D9T9MoHriq9Ro7vkrmoZUt774Go5Z9vbZh-ZRgVB4,2729
111
+ orionis/luminate/facades/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
+ orionis/luminate/facades/tests/tests_facade.py,sha256=eH_fyXjzEVw8aqEwxAgSujFUItz2woau6hc2Mf4VlkE,1660
113
+ orionis/luminate/patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ orionis/luminate/patterns/singleton.py,sha256=b3U0nubKSQWyal5wTXADVPtOztkaTk-M8Zwy-bje1L0,1425
115
+ orionis/luminate/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ orionis/luminate/pipelines/cli_pipeline.py,sha256=xpdwxArZrYqaeo4h375RQwY329V14S8DJC9z1w_Ar1s,4218
117
+ orionis/luminate/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ orionis/luminate/providers/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
+ orionis/luminate/providers/config/config_service_provider.py,sha256=B72XEIzbiFFojB3c361QFTVz3kuM9HEUHaW-whMgytw,946
120
+ orionis/luminate/providers/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ orionis/luminate/providers/files/path_service_provider.py,sha256=1FD87NxNogv0LFjOzZ7ts9b6JLh8HYVjcqm2Tk2oxsE,940
122
+ orionis/luminate/providers/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
+ orionis/luminate/providers/log/log_service_provider.py,sha256=ROvuiEaUAWN-KMZnW3CKoJMgPR8kP37kLB5y1ug03Jg,942
124
+ orionis/luminate/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
+ orionis/luminate/services/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ orionis/luminate/services/config/config_service.py,sha256=TZa3WZtDKEW6p0bMktzMXn85cOQy-q21myiYu3rZA34,2147
127
+ orionis/luminate/services/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ orionis/luminate/services/files/path_service.py,sha256=ttsa7wmw1Lm9eDJdXxUY4ZJYhDtpaPrGJgrTGNu9L3I,2519
129
+ orionis/luminate/services/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
+ orionis/luminate/services/log/log_service.py,sha256=OAqxr1I6GgylpuY6PXqXjAF1CXQaxzLp6bH3qnY5-AQ,5261
131
+ orionis/luminate/support/dot_dict.py,sha256=FVHfBuAGTTVMjNG01Fix645fRNKKUMmNx61pYkxPL5c,1253
132
+ orionis/luminate/support/environment.py,sha256=BkjZstF7TwRA13al20rqz-n5hcsDd6eypnfFHk0_IME,2973
133
+ orionis/luminate/support/exception_to_dict.py,sha256=jpQ-c7ud1JLm8dTWbvMT1dI-rL3yTB2P8VxNscAX71k,2098
134
+ orionis/luminate/support/reflection.py,sha256=VYpluTQJ0W_m6jYQ9_L02sYFrk2wlLYtLY2yp9rZMKA,11944
135
+ orionis/luminate/support/std.py,sha256=pOdpQBOxVAcS8GdkOYpyDKGVpICRd8IN8CE63q6WjGk,1383
136
+ orionis/luminate/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
+ orionis/luminate/test/exception.py,sha256=VJaZ7VMZfdKW1ov_GwKp2HAz_NYobujJxDt5RaPHuVQ,1395
138
+ orionis/luminate/test/unit_test.py,sha256=7pZWRYRtLRz5_EZBWuXHZShRm7y5ICtl-52FTrsUqso,3652
139
+ orionis/static/ascii/icon.ascii,sha256=B1TAXYes9sQVg284MdVYNJh2LvIH88-MuHUyyKaBsNM,714
140
+ orionis/static/ascii/info.ascii,sha256=DV0NZRDuYXujymer8YAbg0PC8xejDEh7LSLZFGuOdw0,773
141
+ orionis/static/bg/galaxy.jpg,sha256=_FuPghOe9LBrIWv1eKZ9fiZR72sEz5obvXGDnD7MzTc,172244
142
+ orionis/static/favicon/OrionisFrameworkFavicon.png,sha256=bvkLzn0PfYHY9f-AfgRzclt4RNSFaKhMCH_TgwqsMKU,31301
143
+ orionis/static/logos/OrionisFramework.jpg,sha256=ezZlrcoknKvtl6YFwSIVfecRFm9fjAMKXHmuabMpImM,716918
144
+ orionis/static/logos/OrionisFramework.png,sha256=nmS5HoYu4NwmrcTtVj8gtjutgnW8EstgRkli_Ks1Chs,291370
145
+ orionis/static/logos/OrionisFramework.psd,sha256=QFMRe_HENaIgQi9VWMvNV3OHKOFofFGOGwQk6fqebrU,2904849
146
+ orionis/static/logos/OrionisFramework2.png,sha256=Z_-yBHNSo33QeSTyi-8GfiFozdRqUomIZ28bGx6Py5c,256425
147
+ orionis/static/logos/OrionisFramework3.png,sha256=BPG9ZB58vDALavI9OMmr8Ym0DQa44s5NL_3M4M6dIYs,193734
148
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ tests/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
+ tests/tools/class_example.py,sha256=dIPD997Y15n6WmKhWoOFSwEldRm9MdOHTZZ49eF1p3c,1056
151
+ tests/tools/test_reflection.py,sha256=bhLQ7VGVod4B8sv-rW9AjnOumvaBVsoxieA3sdoM2yM,5244
152
+ orionis-0.46.0.dist-info/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
153
+ orionis-0.46.0.dist-info/METADATA,sha256=wE_Kr1LwGz1ybgfkFknD7EFVqzeNmO3nEkLftDDIAEA,2978
154
+ orionis-0.46.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
155
+ orionis-0.46.0.dist-info/entry_points.txt,sha256=eef1_CVewfokKjrGBynXa06KabSJYo7LlDKKIKvs1cM,53
156
+ orionis-0.46.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
157
+ orionis-0.46.0.dist-info/RECORD,,
@@ -1,6 +1,6 @@
1
1
  import os
2
2
  import unittest
3
- from orionis.luminate.tools.reflection import Reflection
3
+ from orionis.luminate.support.reflection import Reflection
4
4
  from tests.tools.class_example import BaseTestClass, TestClass, TestEnum
5
5
 
6
6
  class TestReflection(unittest.TestCase):