orionis 0.370.0__py3-none-any.whl → 0.372.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/__init__.py +7 -0
- orionis/container/container.py +46 -47
- orionis/container/contracts/container.py +23 -0
- orionis/foundation/application.py +55 -32
- orionis/foundation/contracts/application.py +58 -0
- orionis/foundation/providers/dumper_provider.py +1 -1
- orionis/metadata/framework.py +1 -1
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/METADATA +1 -1
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/RECORD +13 -12
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/WHEEL +1 -1
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/licenses/LICENCE +0 -0
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/top_level.txt +0 -0
- {orionis-0.370.0.dist-info → orionis-0.372.0.dist-info}/zip-safe +0 -0
orionis/__init__.py
CHANGED
orionis/container/container.py
CHANGED
|
@@ -20,83 +20,82 @@ from orionis.services.introspection.callables.reflection import ReflectionCallab
|
|
|
20
20
|
|
|
21
21
|
class Container(IContainer):
|
|
22
22
|
|
|
23
|
-
#
|
|
24
|
-
# This
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Lock for thread-safe singleton instantiation
|
|
28
|
-
# This lock ensures that only one thread can create
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
# Class variable to track if the container has been initialized.
|
|
33
|
-
# This is used to ensure that the initialization logic runs only once,
|
|
34
|
-
# regardless of how many times the class is instantiated.
|
|
35
|
-
_initialized = False
|
|
36
|
-
|
|
37
|
-
def __new__(
|
|
38
|
-
cls
|
|
39
|
-
) -> 'Container':
|
|
23
|
+
# Dictionary to hold singleton instances for each class
|
|
24
|
+
# This allows proper inheritance of the singleton pattern
|
|
25
|
+
_instances = {}
|
|
26
|
+
|
|
27
|
+
# Lock for thread-safe singleton instantiation and access
|
|
28
|
+
# This lock ensures that only one thread can create or access instances at a time
|
|
29
|
+
_lock = threading.RLock() # RLock allows reentrant locking
|
|
30
|
+
|
|
31
|
+
def __new__(cls) -> 'Container':
|
|
40
32
|
"""
|
|
41
|
-
Creates and returns a singleton instance
|
|
33
|
+
Creates and returns a singleton instance for each specific class.
|
|
42
34
|
|
|
43
|
-
This method implements
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
existing instance.
|
|
35
|
+
This method implements a truly thread-safe singleton pattern with proper
|
|
36
|
+
inheritance support, ensuring that each class in the hierarchy has its own
|
|
37
|
+
singleton instance. Uses double-checked locking with proper memory barriers.
|
|
47
38
|
|
|
48
39
|
Returns
|
|
49
40
|
-------
|
|
50
41
|
Container
|
|
51
|
-
The singleton instance of the class.
|
|
42
|
+
The singleton instance of the specific class.
|
|
43
|
+
|
|
44
|
+
Notes
|
|
45
|
+
-----
|
|
46
|
+
This implementation is completely thread-safe and guarantees that:
|
|
47
|
+
- Only one instance per class exists across all threads
|
|
48
|
+
- Memory visibility is properly handled
|
|
49
|
+
- No race conditions can occur
|
|
50
|
+
- Inheritance is properly supported
|
|
52
51
|
"""
|
|
53
52
|
|
|
54
|
-
#
|
|
55
|
-
if cls
|
|
53
|
+
# First check without lock for performance (fast path)
|
|
54
|
+
if cls in cls._instances:
|
|
55
|
+
return cls._instances[cls]
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
# Acquire the lock for the slow path (instance creation)
|
|
58
|
+
with cls._lock:
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
# Double-check if the instance was created by another thread
|
|
61
|
+
# while we were waiting for the lock
|
|
62
|
+
if cls in cls._instances:
|
|
63
|
+
return cls._instances[cls]
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
# Create a new instance for this specific class
|
|
66
|
+
instance = super(Container, cls).__new__(cls)
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
# Store the instance in the class-specific dictionary
|
|
69
|
+
# This write is protected by the lock, ensuring memory visibility
|
|
70
|
+
cls._instances[cls] = instance
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
) -> None:
|
|
72
|
+
return instance
|
|
73
|
+
|
|
74
|
+
def __init__(self) -> None:
|
|
72
75
|
"""
|
|
73
76
|
Initializes a new instance of the container.
|
|
74
77
|
|
|
75
78
|
This constructor sets up the internal dictionaries for bindings and aliases,
|
|
76
|
-
ensuring that these are only initialized once per
|
|
77
|
-
is guarded by the
|
|
78
|
-
The container also registers itself as a service to allow for injection.
|
|
79
|
+
ensuring that these are only initialized once per instance. The initialization
|
|
80
|
+
is guarded by checking if the instance already has the required attributes.
|
|
79
81
|
|
|
80
82
|
Notes
|
|
81
83
|
-----
|
|
82
84
|
- The `__bindings` dictionary is used to store service bindings.
|
|
83
85
|
- The `__aliasses` dictionary is used to store service aliases.
|
|
84
|
-
- Initialization occurs only once per
|
|
86
|
+
- Initialization occurs only once per instance, regardless of how many times __init__ is called.
|
|
85
87
|
- The container registers itself under the IContainer interface to allow for dependency injection.
|
|
86
88
|
"""
|
|
87
89
|
|
|
88
|
-
# Check if the
|
|
89
|
-
if not self
|
|
90
|
+
# Check if the instance has already been initialized
|
|
91
|
+
if not hasattr(self, '_Container__initialized'):
|
|
90
92
|
|
|
91
93
|
# Initialize the container's internal state
|
|
92
94
|
self.__bindings = {}
|
|
93
95
|
self.__aliasses = {}
|
|
94
96
|
|
|
95
|
-
#
|
|
96
|
-
self.
|
|
97
|
-
|
|
98
|
-
# Register the container itself as a service
|
|
99
|
-
self.instance(IContainer, self)
|
|
97
|
+
# Mark this instance as initialized
|
|
98
|
+
self.__initialized = True
|
|
100
99
|
|
|
101
100
|
def transient(
|
|
102
101
|
self,
|
|
@@ -245,4 +245,27 @@ class IContainer(ABC):
|
|
|
245
245
|
alias : str, optional
|
|
246
246
|
The alias of the service to be removed.
|
|
247
247
|
"""
|
|
248
|
+
pass
|
|
249
|
+
|
|
250
|
+
@abstractmethod
|
|
251
|
+
def createContext(self):
|
|
252
|
+
"""
|
|
253
|
+
Creates a new context for managing scoped services.
|
|
254
|
+
|
|
255
|
+
This method returns a context manager that can be used with a 'with' statement
|
|
256
|
+
to control the lifecycle of scoped services.
|
|
257
|
+
|
|
258
|
+
Returns
|
|
259
|
+
-------
|
|
260
|
+
ScopeManager
|
|
261
|
+
A context manager for scoped services.
|
|
262
|
+
|
|
263
|
+
Usage
|
|
264
|
+
-------
|
|
265
|
+
with container.createContext():
|
|
266
|
+
# Scoped services created here will be disposed when exiting this block
|
|
267
|
+
service = container.make(IScopedService)
|
|
268
|
+
...
|
|
269
|
+
# Scoped services are automatically disposed here
|
|
270
|
+
"""
|
|
248
271
|
pass
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from typing import Type, List
|
|
2
2
|
from orionis.container.container import Container
|
|
3
3
|
from orionis.container.contracts.service_provider import IServiceProvider
|
|
4
|
+
from orionis.foundation.contracts.application import IApplication
|
|
4
5
|
|
|
5
|
-
class
|
|
6
|
+
class Application(Container, IApplication):
|
|
6
7
|
"""
|
|
7
8
|
Application container that manages service providers.
|
|
8
9
|
|
|
@@ -33,10 +34,60 @@ class App(Container):
|
|
|
33
34
|
Initialize a new App instance.
|
|
34
35
|
|
|
35
36
|
Sets up the container and initializes the provider tracking system.
|
|
37
|
+
This method ensures that initialization only happens once per instance,
|
|
38
|
+
even in a singleton context.
|
|
36
39
|
"""
|
|
40
|
+
|
|
41
|
+
# Call parent constructor first
|
|
37
42
|
super().__init__()
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
|
|
44
|
+
# Check if this specific instance has already been initialized
|
|
45
|
+
if not hasattr(self, '_Application__initialized'):
|
|
46
|
+
|
|
47
|
+
# Initialize provider-specific attributes
|
|
48
|
+
self.__providers: List[IServiceProvider] = []
|
|
49
|
+
self.__booted: bool = False
|
|
50
|
+
|
|
51
|
+
# Mark this instance as initialized
|
|
52
|
+
self.__initialized = True
|
|
53
|
+
|
|
54
|
+
# Bootstrap core services
|
|
55
|
+
self.__bootFramework()
|
|
56
|
+
|
|
57
|
+
def __bootFramework(self) -> None:
|
|
58
|
+
"""
|
|
59
|
+
Bootstrap the application by loading internal framework providers.
|
|
60
|
+
|
|
61
|
+
This method should be called once to ensure that core services
|
|
62
|
+
required by the framework are registered before user-defined
|
|
63
|
+
providers are loaded.
|
|
64
|
+
"""
|
|
65
|
+
if not self.__booted:
|
|
66
|
+
self.__loadFrameworkProviders()
|
|
67
|
+
|
|
68
|
+
def __loadFrameworkProviders(self) -> None:
|
|
69
|
+
"""
|
|
70
|
+
Load internal framework service providers.
|
|
71
|
+
|
|
72
|
+
This method should register core services required by the framework
|
|
73
|
+
before user-defined providers are loaded.
|
|
74
|
+
"""
|
|
75
|
+
from orionis.foundation.providers.console_provider import ConsoleProvider
|
|
76
|
+
from orionis.foundation.providers.dumper_provider import DumperProvider
|
|
77
|
+
from orionis.foundation.providers.path_resolver_provider import PathResolverProvider
|
|
78
|
+
from orionis.foundation.providers.progress_bar_provider import ProgressBarProvider
|
|
79
|
+
from orionis.foundation.providers.workers_provider import WorkersProvider
|
|
80
|
+
|
|
81
|
+
core_providers = [
|
|
82
|
+
ConsoleProvider,
|
|
83
|
+
DumperProvider,
|
|
84
|
+
PathResolverProvider,
|
|
85
|
+
ProgressBarProvider,
|
|
86
|
+
WorkersProvider
|
|
87
|
+
]
|
|
88
|
+
|
|
89
|
+
for provider_cls in core_providers:
|
|
90
|
+
self.__registerProvider(provider_cls)
|
|
40
91
|
|
|
41
92
|
def __registerProvider(
|
|
42
93
|
self,
|
|
@@ -90,32 +141,7 @@ class App(Container):
|
|
|
90
141
|
|
|
91
142
|
self.__booted = True
|
|
92
143
|
|
|
93
|
-
def
|
|
94
|
-
"""
|
|
95
|
-
Load internal framework service providers.
|
|
96
|
-
|
|
97
|
-
This method should register core services required by the framework
|
|
98
|
-
before user-defined providers are loaded.
|
|
99
|
-
"""
|
|
100
|
-
from orionis.foundation.providers.console_provider import ConsoleProvider
|
|
101
|
-
from orionis.foundation.providers.dumper_provider import DumperProvider
|
|
102
|
-
from orionis.foundation.providers.path_resolver_provider import PathResolverProvider
|
|
103
|
-
from orionis.foundation.providers.progress_bar_provider import ProgressBarProvider
|
|
104
|
-
from orionis.foundation.providers.workers_provider import WorkersProvider
|
|
105
|
-
|
|
106
|
-
core_providers = [
|
|
107
|
-
ConsoleProvider,
|
|
108
|
-
DumperProvider,
|
|
109
|
-
PathResolverProvider,
|
|
110
|
-
ProgressBarProvider,
|
|
111
|
-
WorkersProvider
|
|
112
|
-
]
|
|
113
|
-
|
|
114
|
-
for provider_cls in core_providers:
|
|
115
|
-
self.__registerProvider(provider_cls)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def load(self, providers: List[Type[IServiceProvider]]) -> None:
|
|
144
|
+
def load(self, providers: List[Type[IServiceProvider]] = []) -> None:
|
|
119
145
|
"""
|
|
120
146
|
Load and boot a list of service providers.
|
|
121
147
|
|
|
@@ -131,9 +157,6 @@ class App(Container):
|
|
|
131
157
|
None
|
|
132
158
|
"""
|
|
133
159
|
|
|
134
|
-
# Load internal framework providers first
|
|
135
|
-
self.__loadFrameworkProviders()
|
|
136
|
-
|
|
137
160
|
# Register and boot each provided service provider
|
|
138
161
|
for provider_cls in providers:
|
|
139
162
|
self.__registerProvider(provider_cls)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from abc import abstractmethod
|
|
2
|
+
from typing import List, Type
|
|
3
|
+
from orionis.container.contracts.service_provider import IServiceProvider
|
|
4
|
+
from orionis.container.contracts.container import IContainer
|
|
5
|
+
|
|
6
|
+
class IApplication(IContainer):
|
|
7
|
+
"""
|
|
8
|
+
Abstract interface for application containers that manage service providers.
|
|
9
|
+
|
|
10
|
+
This interface extends IContainer to provide application-level functionality
|
|
11
|
+
including service provider management and application lifecycle operations.
|
|
12
|
+
|
|
13
|
+
By inheriting from IContainer, this interface provides access to all container
|
|
14
|
+
methods while adding application-specific functionality.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
@abstractmethod
|
|
19
|
+
def isBooted(self) -> bool:
|
|
20
|
+
"""
|
|
21
|
+
Check if the application providers have been booted.
|
|
22
|
+
|
|
23
|
+
Returns
|
|
24
|
+
-------
|
|
25
|
+
bool
|
|
26
|
+
True if providers are booted, False otherwise
|
|
27
|
+
"""
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def load(self, providers: List[Type[IServiceProvider]] = []) -> None:
|
|
32
|
+
"""
|
|
33
|
+
Load and boot a list of service providers.
|
|
34
|
+
|
|
35
|
+
This method registers each provider and then boots all providers.
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
providers : List[Type[IServiceProvider]]
|
|
40
|
+
List of service provider classes to register and boot
|
|
41
|
+
|
|
42
|
+
Returns
|
|
43
|
+
-------
|
|
44
|
+
None
|
|
45
|
+
"""
|
|
46
|
+
pass
|
|
47
|
+
|
|
48
|
+
@abstractmethod
|
|
49
|
+
def getProviders(self) -> List[IServiceProvider]:
|
|
50
|
+
"""
|
|
51
|
+
Get the list of registered providers.
|
|
52
|
+
|
|
53
|
+
Returns
|
|
54
|
+
-------
|
|
55
|
+
List[IServiceProvider]
|
|
56
|
+
The list of registered service providers
|
|
57
|
+
"""
|
|
58
|
+
pass
|
orionis/metadata/framework.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
orionis/__init__.py,sha256=
|
|
1
|
+
orionis/__init__.py,sha256=dtNpLau0gNc-o1gLiwsQiI0-XAK7EGGV70OaQSsdICU,194
|
|
2
2
|
orionis/unittesting.py,sha256=_ukXPOOQTaaBxmWScsCO0FdlEC0uYFIxlytBXQpl1Bk,2030
|
|
3
3
|
orionis/_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
orionis/_console/command_filter.py,sha256=bn0fcWfQg13DrQBaV4NopNxdP-6up0G54Qmhg7r_BKA,1211
|
|
@@ -113,12 +113,12 @@ orionis/console/output/contracts/console.py,sha256=F2c1jC_O61o7jDiXwAeZAOEodEhuC
|
|
|
113
113
|
orionis/console/output/enums/__init__.py,sha256=LAaAxg-DpArCjf_jqZ0_9s3p8899gntDYkSU_ppTdC8,66
|
|
114
114
|
orionis/console/output/enums/styles.py,sha256=6a4oQCOBOKMh2ARdeq5GlIskJ3wjiylYmh66tUKKmpQ,4053
|
|
115
115
|
orionis/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
-
orionis/container/container.py,sha256=
|
|
116
|
+
orionis/container/container.py,sha256=HgUoQrAz9sM2QLfiDbz2Lm_pqhZ0TRkPtGynVs7TgVU,23176
|
|
117
117
|
orionis/container/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
118
|
orionis/container/context/manager.py,sha256=9yODWkHBoJ2kgJZ5ONLqcEcex50vaWuMcxsvmDgnQo4,2437
|
|
119
119
|
orionis/container/context/scope.py,sha256=CWFiLLTAC_IdmeFKWX-jrphdxB0_TMEVBlz6lQVMPC8,937
|
|
120
120
|
orionis/container/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
-
orionis/container/contracts/container.py,sha256=
|
|
121
|
+
orionis/container/contracts/container.py,sha256=QV_seo8mKrZJG2Ytr2u0RSiRaTaSPw6zUxgJ_tq6oP4,8301
|
|
122
122
|
orionis/container/contracts/resolver.py,sha256=mR7lztPAQDwyspoQewaTMQPxJaoOCA88euDevaZYHGo,1712
|
|
123
123
|
orionis/container/contracts/service_provider.py,sha256=hXp-l4iP7q0FhsCcQAKoYcJ_zxCzIgTdfmO4F0Bbssg,896
|
|
124
124
|
orionis/container/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -147,7 +147,7 @@ orionis/container/validators/is_subclass.py,sha256=4sBaGLoRs8nUhuWjlP0VJqyTwVHYq
|
|
|
147
147
|
orionis/container/validators/is_valid_alias.py,sha256=4uAYcq8xov7jZbXnpKpjNkxcZtlTNnL5RRctVPMwJes,1424
|
|
148
148
|
orionis/container/validators/lifetime.py,sha256=IQ43fDNrxYHMlZH2zlYDJnlkLO_eS4U7Fs3UJgQBidI,1844
|
|
149
149
|
orionis/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
|
-
orionis/foundation/application.py,sha256=
|
|
150
|
+
orionis/foundation/application.py,sha256=XQzYpmPg6yvKct24E71jcgFsEBaKt3dktWH_bs-xZZw,5720
|
|
151
151
|
orionis/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
152
152
|
orionis/foundation/config/startup.py,sha256=zutF-34DkW68bpiTxH9xrmIe1iJdXCF9Y6wueXS6qys,8265
|
|
153
153
|
orionis/foundation/config/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -236,18 +236,19 @@ orionis/foundation/config/testing/entities/testing.py,sha256=keU7dSuRv0rgaG-T4Vo
|
|
|
236
236
|
orionis/foundation/config/testing/enums/__init__.py,sha256=tCHed6wBzqHx8o3kWBGm8tZYkYOKdSAx8TvgC-Eauv0,75
|
|
237
237
|
orionis/foundation/config/testing/enums/test_mode.py,sha256=IbFpauu7J-iSAfmC8jDbmTEYl8eZr-AexL-lyOh8_74,337
|
|
238
238
|
orionis/foundation/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
239
|
+
orionis/foundation/contracts/application.py,sha256=vgvUnzQAQlpzkfOBDR-H4Y7mL9cPZuy5QduFayx__FQ,1693
|
|
239
240
|
orionis/foundation/contracts/config.py,sha256=Rpz6U6t8OXHO9JJKSTnCimytXE-tfCB-1ithP2nG8MQ,628
|
|
240
241
|
orionis/foundation/exceptions/__init__.py,sha256=XtG3MJ_MFNY_dU5mmTyz_N_4QG1jYrcv5RegBso7wuY,163
|
|
241
242
|
orionis/foundation/exceptions/integrity.py,sha256=mc4pL1UMoYRHEmphnpW2oGk5URhu7DJRREyzHaV-cs8,472
|
|
242
243
|
orionis/foundation/exceptions/value.py,sha256=hQhXybXEnaa59ba7JxG65jceHt3mnql9MyekF-TChpM,465
|
|
243
244
|
orionis/foundation/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
244
245
|
orionis/foundation/providers/console_provider.py,sha256=pAIklY1QKx2HKjTp7YyJT6KbJPlEEyzWSr79RTFkEK0,700
|
|
245
|
-
orionis/foundation/providers/dumper_provider.py,sha256=
|
|
246
|
+
orionis/foundation/providers/dumper_provider.py,sha256=_CjIZoa1EkITkJqFFWQuLeVpagSnb6TuSwcpvqdM-Bc,684
|
|
246
247
|
orionis/foundation/providers/path_resolver_provider.py,sha256=rXvaVc5sSqmDgRzWJoattAW0ikO_SF3H7WBddVxwmhw,717
|
|
247
248
|
orionis/foundation/providers/progress_bar_provider.py,sha256=75Jr4iEgUOUGl8Di1DioeP5_HRQlR-1lVzPmS96sWjA,737
|
|
248
249
|
orionis/foundation/providers/workers_provider.py,sha256=WWlji3C69_-Y0c42aZDbR_bmcE_qZEh2SaA_cNkCivI,702
|
|
249
250
|
orionis/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
250
|
-
orionis/metadata/framework.py,sha256=
|
|
251
|
+
orionis/metadata/framework.py,sha256=8ADjfPeSm8Z1yby-YerBK9JuHdcFjHbH4lp1fqPYgcs,4960
|
|
251
252
|
orionis/metadata/package.py,sha256=tqLfBRo-w1j_GN4xvzUNFyweWYFS-qhSgAEc-AmCH1M,5452
|
|
252
253
|
orionis/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
253
254
|
orionis/services/asynchrony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -379,7 +380,7 @@ orionis/test/output/dumper.py,sha256=3EV-G3KgEV4O0M4yl-4klPKc1etWOPZvPAcYhUQyXnI
|
|
|
379
380
|
orionis/test/output/printer.py,sha256=WGjGW2lgu_l5wWJ6Z8qTTV7NAObhoTBcvhM1TcNvwU4,16938
|
|
380
381
|
orionis/test/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
381
382
|
orionis/test/view/render.py,sha256=jXZkbITBknbUwm_mD8bcTiwLDvsFkrO9qrf0ZgPwqxc,4903
|
|
382
|
-
orionis-0.
|
|
383
|
+
orionis-0.372.0.dist-info/licenses/LICENCE,sha256=-_4cF2EBKuYVS_SQpy1uapq0oJPUU1vl_RUWSy2jJTo,1111
|
|
383
384
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
384
385
|
tests/example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
385
386
|
tests/example/test_example.py,sha256=kvWgiW3ADEZf718dGsMPtDh_rmOSx1ypEInKm7_6ZPQ,601
|
|
@@ -480,8 +481,8 @@ tests/support/wrapper/test_services_wrapper_docdict.py,sha256=hIVqGt19vbW22xPjQS
|
|
|
480
481
|
tests/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
481
482
|
tests/testing/test_testing_result.py,sha256=1O_8xjsFPnzwZOpLT6ImqjO9HY5_jIgP7DTVBsgHvQA,4335
|
|
482
483
|
tests/testing/test_testing_unit.py,sha256=S3anwYcF2DBWYh_UfqKcZq2FgNpQjP0SfYVRd5sD5rI,7442
|
|
483
|
-
orionis-0.
|
|
484
|
-
orionis-0.
|
|
485
|
-
orionis-0.
|
|
486
|
-
orionis-0.
|
|
487
|
-
orionis-0.
|
|
484
|
+
orionis-0.372.0.dist-info/METADATA,sha256=VBCV-xWsB9MHdjLDwJTFMwA8s0RFg_X9p5c1tFfHhSM,4772
|
|
485
|
+
orionis-0.372.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
486
|
+
orionis-0.372.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
|
|
487
|
+
orionis-0.372.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
|
488
|
+
orionis-0.372.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|