orionis 0.75.0__tar.gz → 0.76.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. {orionis-0.75.0/orionis.egg-info → orionis-0.76.0}/PKG-INFO +1 -1
  2. {orionis-0.75.0 → orionis-0.76.0}/orionis/framework.py +1 -1
  3. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/app.py +14 -2
  4. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/config/config_service_provider.py +3 -4
  5. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/config/config_service.py +3 -2
  6. {orionis-0.75.0 → orionis-0.76.0/orionis.egg-info}/PKG-INFO +1 -1
  7. {orionis-0.75.0 → orionis-0.76.0}/LICENCE +0 -0
  8. {orionis-0.75.0 → orionis-0.76.0}/MANIFEST.in +0 -0
  9. {orionis-0.75.0 → orionis-0.76.0}/README.md +0 -0
  10. {orionis-0.75.0 → orionis-0.76.0}/orionis/__init__.py +0 -0
  11. {orionis-0.75.0 → orionis-0.76.0}/orionis/cli_manager.py +0 -0
  12. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/__init__.py +0 -0
  13. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/bootstrap/i_command_bootstrapper.py +0 -0
  14. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/bootstrap/i_config_bootstrapper.py +0 -0
  15. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/bootstrap/i_environment_bootstrapper.py +0 -0
  16. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/config/__init__.py +0 -0
  17. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/config/i_config.py +0 -0
  18. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/__init__.py +0 -0
  19. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/base/__init__.py +0 -0
  20. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/base/i_command.py +0 -0
  21. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/i_command_filter.py +0 -0
  22. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/i_kernel.py +0 -0
  23. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/i_parser.py +0 -0
  24. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/i_task_manager.py +0 -0
  25. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/output/__init__.py +0 -0
  26. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/output/i_console.py +0 -0
  27. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/output/i_executor.py +0 -0
  28. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/output/i_progress_bar.py +0 -0
  29. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/tasks/__init__.py +0 -0
  30. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/console/tasks/i_schedule.py +0 -0
  31. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/container/i_container.py +0 -0
  32. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/container/i_types.py +0 -0
  33. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/__init__.py +0 -0
  34. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/config/__init__.py +0 -0
  35. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/config/i_config_facade.py +0 -0
  36. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/environment/__init__.py +0 -0
  37. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/environment/i_environment_facade.py +0 -0
  38. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/files/__init__.py +0 -0
  39. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/files/i_path_facade.py +0 -0
  40. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/log/__init__.py +0 -0
  41. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/log/i_log_facade.py +0 -0
  42. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/tests/__init__.py +0 -0
  43. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/facades/tests/i_tests_facade.py +0 -0
  44. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/installer/__init__.py +0 -0
  45. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/installer/i_installer_manager.py +0 -0
  46. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/installer/i_installer_output.py +0 -0
  47. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/installer/i_installer_setup.py +0 -0
  48. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/providers/__init__.py +0 -0
  49. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/providers/i_service_provider.py +0 -0
  50. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/__init__.py +0 -0
  51. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/config/__init__.py +0 -0
  52. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/config/i_config_service.py +0 -0
  53. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/environment/__init__.py +0 -0
  54. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/environment/i_environment_service.py +0 -0
  55. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/files/__init__.py +0 -0
  56. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/files/i_path_resolver_service.py +0 -0
  57. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/log/__init__.py +0 -0
  58. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/services/log/i_log_service.py +0 -0
  59. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/support/i_exception_to_dict.py +0 -0
  60. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/support/i_reflection.py +0 -0
  61. {orionis-0.75.0 → orionis-0.76.0}/orionis/contracts/support/i_std.py +0 -0
  62. {orionis-0.75.0 → orionis-0.76.0}/orionis/installer/__init__.py +0 -0
  63. {orionis-0.75.0 → orionis-0.76.0}/orionis/installer/installer_manager.py +0 -0
  64. {orionis-0.75.0 → orionis-0.76.0}/orionis/installer/installer_output.py +0 -0
  65. {orionis-0.75.0 → orionis-0.76.0}/orionis/installer/installer_setup.py +0 -0
  66. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/__init__.py +0 -0
  67. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/app_context.py +0 -0
  68. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/__init__.py +0 -0
  69. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/command_bootstrapper.py +0 -0
  70. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/config_bootstrapper.py +0 -0
  71. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/environment_bootstrapper.py +0 -0
  72. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/exception_bootstrapper.py +0 -0
  73. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/bootstrap/service_providers_bootstrapper.py +0 -0
  74. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/__init__.py +0 -0
  75. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/app.py +0 -0
  76. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/auth.py +0 -0
  77. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/cache.py +0 -0
  78. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/cors.py +0 -0
  79. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/database.py +0 -0
  80. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/filesystems.py +0 -0
  81. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/logging.py +0 -0
  82. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/mail.py +0 -0
  83. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/queue.py +0 -0
  84. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/config/session.py +0 -0
  85. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/__init__.py +0 -0
  86. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/base/__init__.py +0 -0
  87. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/base/command.py +0 -0
  88. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/command_filter.py +0 -0
  89. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/__init__.py +0 -0
  90. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/cache_clear.py +0 -0
  91. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/help.py +0 -0
  92. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/schedule_work.py +0 -0
  93. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/tests.py +0 -0
  94. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/commands/version.py +0 -0
  95. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/exceptions/__init__.py +0 -0
  96. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/exceptions/cli_exception.py +0 -0
  97. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/kernel.py +0 -0
  98. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/output/__init__.py +0 -0
  99. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/output/console.py +0 -0
  100. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/output/executor.py +0 -0
  101. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/output/progress_bar.py +0 -0
  102. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/output/styles.py +0 -0
  103. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/parser.py +0 -0
  104. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/runner.py +0 -0
  105. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/tasks/__init__.py +0 -0
  106. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/console/tasks/scheduler.py +0 -0
  107. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/container/container.py +0 -0
  108. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/container/exception.py +0 -0
  109. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/container/types.py +0 -0
  110. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/__init__.py +0 -0
  111. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/app.py +0 -0
  112. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/config/__init__.py +0 -0
  113. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/config/config_facade.py +0 -0
  114. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/environment/__init__.py +0 -0
  115. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/environment/environment_facade.py +0 -0
  116. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/files/__init__.py +0 -0
  117. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/files/path_facade.py +0 -0
  118. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/log/__init__.py +0 -0
  119. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/log/log_facade.py +0 -0
  120. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/tests/__init__.py +0 -0
  121. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/facades/tests/tests_facade.py +0 -0
  122. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/patterns/__init__.py +0 -0
  123. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/patterns/singleton.py +0 -0
  124. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/pipelines/__init__.py +0 -0
  125. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/pipelines/cli_pipeline.py +0 -0
  126. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/__init__.py +0 -0
  127. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/config/__init__.py +0 -0
  128. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/environment/__init__.py +0 -0
  129. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/environment/environment__service_provider.py +0 -0
  130. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/log/__init__.py +0 -0
  131. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/log/log_service_provider.py +0 -0
  132. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/providers/service_provider.py +0 -0
  133. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/__init__.py +0 -0
  134. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/config/__init__.py +0 -0
  135. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/environment/__init__.py +0 -0
  136. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/environment/environment_service.py +0 -0
  137. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/files/__init__.py +0 -0
  138. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/files/path_resolver_service.py +0 -0
  139. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/log/__init__.py +0 -0
  140. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/services/log/log_service.py +0 -0
  141. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/support/dot_dict.py +0 -0
  142. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/support/exception_to_dict.py +0 -0
  143. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/support/reflection.py +0 -0
  144. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/support/std.py +0 -0
  145. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/test/__init__.py +0 -0
  146. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/test/exception.py +0 -0
  147. {orionis-0.75.0 → orionis-0.76.0}/orionis/luminate/test/unit_test.py +0 -0
  148. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/ascii/icon.ascii +0 -0
  149. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/ascii/info.ascii +0 -0
  150. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/bg/galaxy.jpg +0 -0
  151. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/favicon/OrionisFrameworkFavicon.png +0 -0
  152. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/logos/OrionisFramework.jpg +0 -0
  153. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/logos/OrionisFramework.png +0 -0
  154. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/logos/OrionisFramework.psd +0 -0
  155. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/logos/OrionisFramework2.png +0 -0
  156. {orionis-0.75.0 → orionis-0.76.0}/orionis/static/logos/OrionisFramework3.png +0 -0
  157. {orionis-0.75.0 → orionis-0.76.0}/orionis.egg-info/SOURCES.txt +0 -0
  158. {orionis-0.75.0 → orionis-0.76.0}/orionis.egg-info/dependency_links.txt +0 -0
  159. {orionis-0.75.0 → orionis-0.76.0}/orionis.egg-info/entry_points.txt +0 -0
  160. {orionis-0.75.0 → orionis-0.76.0}/orionis.egg-info/requires.txt +0 -0
  161. {orionis-0.75.0 → orionis-0.76.0}/orionis.egg-info/top_level.txt +0 -0
  162. {orionis-0.75.0 → orionis-0.76.0}/setup.cfg +0 -0
  163. {orionis-0.75.0 → orionis-0.76.0}/setup.py +0 -0
  164. {orionis-0.75.0 → orionis-0.76.0}/tests/__init__.py +0 -0
  165. {orionis-0.75.0 → orionis-0.76.0}/tests/tools/__init__.py +0 -0
  166. {orionis-0.75.0 → orionis-0.76.0}/tests/tools/class_example.py +0 -0
  167. {orionis-0.75.0 → orionis-0.76.0}/tests/tools/test_reflection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.75.0
3
+ Version: 0.76.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
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.75.0"
8
+ VERSION = "0.76.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -3,7 +3,9 @@ from orionis.luminate.bootstrap.config_bootstrapper import ConfigBootstrapper
3
3
  from orionis.luminate.bootstrap.command_bootstrapper import CommandsBootstrapper
4
4
  from orionis.luminate.bootstrap.environment_bootstrapper import EnvironmentBootstrapper
5
5
  from orionis.luminate.patterns.singleton import SingletonMeta
6
- from orionis.luminate.providers.environment.environment__service_provider import EnvironmentProvider
6
+ from orionis.luminate.providers.environment.environment__service_provider import EnvironmentServiceProvider
7
+ from orionis.luminate.providers.config.config_service_provider import ConfigServiceProvider
8
+ from orionis.luminate.services.config.config_service import ConfigService
7
9
 
8
10
  class Application(metaclass=SingletonMeta):
9
11
 
@@ -27,10 +29,13 @@ class Application(metaclass=SingletonMeta):
27
29
  # Registrrar los comandos en el contenedor
28
30
  self._registerCommands()
29
31
 
32
+ # Cargar de provedores core
33
+ self._loadServiceProviderCore()
34
+
30
35
  def _loadServiceProviderEnvironment(self):
31
36
 
32
37
  # Cargar el proveedor de entorno
33
- _environment_provider = EnvironmentProvider(app=self.container)
38
+ _environment_provider = EnvironmentServiceProvider(app=self.container)
34
39
  _environment_provider.register()
35
40
  _environment_provider.boot()
36
41
 
@@ -57,3 +62,10 @@ class Application(metaclass=SingletonMeta):
57
62
  for command in self._commands:
58
63
  _key_instance_container = self.container.bind(self._commands[command].get('concrete'))
59
64
  self.container.alias(alias=command, concrete=_key_instance_container)
65
+
66
+ def _loadServiceProviderCore(self):
67
+
68
+ # Cargar el proveedor de configuracion
69
+ _environment_provider = ConfigServiceProvider(app=self.container)
70
+ _environment_provider.register(config=self._config)
71
+ _environment_provider.boot()
@@ -3,12 +3,11 @@ from orionis.luminate.services.config.config_service import ConfigService
3
3
 
4
4
  class ConfigServiceProvider(ServiceProvider):
5
5
 
6
- def register(self, config: dict = {}) -> None:
6
+ def register(self) -> None:
7
7
  """
8
8
  Registers services or bindings into the given container.
9
9
  """
10
- config = ConfigService(config)
11
- self._container_id = self.app.instance(config)
10
+ self._container_id = self.app.scoped(ConfigService)
12
11
 
13
12
  def boot(self,) -> None:
14
13
  """
@@ -17,4 +16,4 @@ class ConfigServiceProvider(ServiceProvider):
17
16
  This method is intended to be overridden by subclasses to perform
18
17
  any necessary bootstrapping or initialization tasks.
19
18
  """
20
- pass
19
+ self.app.make(self._container_id)
@@ -1,16 +1,17 @@
1
1
  from typing import Any, Optional
2
2
  from orionis.contracts.services.config.i_config_service import IConfigService
3
+ from orionis.luminate.bootstrap.config_bootstrapper import ConfigBootstrapper
3
4
 
4
5
  class ConfigService(IConfigService):
5
6
 
6
- def __init__(self, config: dict = {}) -> None:
7
+ def __init__(self, config_bootstrapper: ConfigBootstrapper) -> None:
7
8
  """
8
9
  Initializes the ConfigService with the provided configuration.
9
10
 
10
11
  Args:
11
12
  config (dict): A dictionary containing configuration settings.
12
13
  """
13
- self._config = config
14
+ self._config = config_bootstrapper.get()
14
15
 
15
16
  def set(self, key: str, value: Any) -> None:
16
17
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: orionis
3
- Version: 0.75.0
3
+ Version: 0.76.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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes