GeneralManager 0.19.1__py3-none-any.whl → 0.20.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.
Potentially problematic release.
This version of GeneralManager might be problematic. Click here for more details.
- general_manager/_types/api.py +4 -4
- general_manager/_types/bucket.py +4 -4
- general_manager/_types/cache.py +6 -6
- general_manager/_types/factory.py +35 -35
- general_manager/_types/general_manager.py +11 -9
- general_manager/_types/interface.py +5 -5
- general_manager/_types/manager.py +4 -4
- general_manager/_types/measurement.py +1 -1
- general_manager/_types/permission.py +3 -3
- general_manager/_types/utils.py +12 -12
- general_manager/api/graphql.py +207 -98
- general_manager/api/mutation.py +9 -9
- general_manager/api/property.py +4 -4
- general_manager/apps.py +120 -65
- general_manager/bucket/{baseBucket.py → base_bucket.py} +5 -5
- general_manager/bucket/{calculationBucket.py → calculation_bucket.py} +10 -10
- general_manager/bucket/{databaseBucket.py → database_bucket.py} +16 -19
- general_manager/bucket/{groupBucket.py → group_bucket.py} +8 -8
- general_manager/cache/{cacheDecorator.py → cache_decorator.py} +27 -6
- general_manager/cache/{cacheTracker.py → cache_tracker.py} +1 -1
- general_manager/cache/{dependencyIndex.py → dependency_index.py} +24 -8
- general_manager/cache/{modelDependencyCollector.py → model_dependency_collector.py} +4 -4
- general_manager/cache/signals.py +1 -1
- general_manager/factory/{autoFactory.py → auto_factory.py} +24 -19
- general_manager/factory/factories.py +10 -13
- general_manager/factory/{factoryMethods.py → factory_methods.py} +19 -17
- general_manager/interface/{baseInterface.py → base_interface.py} +30 -22
- general_manager/interface/{calculationInterface.py → calculation_interface.py} +10 -10
- general_manager/interface/{databaseBasedInterface.py → database_based_interface.py} +42 -42
- general_manager/interface/{databaseInterface.py → database_interface.py} +21 -21
- general_manager/interface/models.py +3 -3
- general_manager/interface/{readOnlyInterface.py → read_only_interface.py} +34 -25
- general_manager/logging.py +133 -0
- general_manager/manager/{generalManager.py → general_manager.py} +75 -17
- general_manager/manager/{groupManager.py → group_manager.py} +6 -6
- general_manager/manager/input.py +1 -1
- general_manager/manager/meta.py +63 -17
- general_manager/measurement/measurement.py +3 -3
- general_manager/permission/{basePermission.py → base_permission.py} +55 -32
- general_manager/permission/{managerBasedPermission.py → manager_based_permission.py} +21 -21
- general_manager/permission/{mutationPermission.py → mutation_permission.py} +12 -12
- general_manager/permission/{permissionChecks.py → permission_checks.py} +2 -2
- general_manager/permission/{permissionDataManager.py → permission_data_manager.py} +6 -6
- general_manager/permission/utils.py +6 -6
- general_manager/public_api_registry.py +76 -66
- general_manager/rule/handler.py +2 -2
- general_manager/rule/rule.py +102 -11
- general_manager/utils/{filterParser.py → filter_parser.py} +3 -3
- general_manager/utils/{jsonEncoder.py → json_encoder.py} +1 -1
- general_manager/utils/{makeCacheKey.py → make_cache_key.py} +1 -1
- general_manager/utils/{noneToZero.py → none_to_zero.py} +1 -1
- general_manager/utils/{pathMapping.py → path_mapping.py} +14 -14
- general_manager/utils/public_api.py +19 -0
- general_manager/utils/testing.py +14 -14
- {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/METADATA +1 -1
- generalmanager-0.20.0.dist-info/RECORD +78 -0
- generalmanager-0.19.1.dist-info/RECORD +0 -77
- /general_manager/measurement/{measurementField.py → measurement_field.py} +0 -0
- /general_manager/permission/{fileBasedPermission.py → file_based_permission.py} +0 -0
- /general_manager/utils/{argsToKwargs.py → args_to_kwargs.py} +0 -0
- /general_manager/utils/{formatString.py → format_string.py} +0 -0
- {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/WHEEL +0 -0
- {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/licenses/LICENSE +0 -0
- {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/top_level.txt +0 -0
|
@@ -5,8 +5,8 @@ from typing import TYPE_CHECKING, Any, ClassVar, cast, get_args
|
|
|
5
5
|
from general_manager.manager.meta import GeneralManagerMeta
|
|
6
6
|
from general_manager.api.property import GraphQLProperty
|
|
7
7
|
|
|
8
|
-
from general_manager.bucket.
|
|
9
|
-
from general_manager.manager.
|
|
8
|
+
from general_manager.bucket.base_bucket import Bucket
|
|
9
|
+
from general_manager.manager.general_manager import GeneralManager
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
type PathStart = str
|
|
@@ -20,9 +20,9 @@ class MissingStartInstanceError(ValueError):
|
|
|
20
20
|
"""
|
|
21
21
|
Create the MissingStartInstanceError with its default message.
|
|
22
22
|
|
|
23
|
-
This initializer constructs the exception with the message: "Cannot call
|
|
23
|
+
This initializer constructs the exception with the message: "Cannot call go_to on a PathMap without a start instance."
|
|
24
24
|
"""
|
|
25
|
-
super().__init__("Cannot call
|
|
25
|
+
super().__init__("Cannot call go_to on a PathMap without a start instance.")
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class PathMap:
|
|
@@ -40,11 +40,11 @@ class PathMap:
|
|
|
40
40
|
"""
|
|
41
41
|
if not hasattr(cls, "instance"):
|
|
42
42
|
cls.instance = super().__new__(cls)
|
|
43
|
-
cls.
|
|
43
|
+
cls.create_path_mapping()
|
|
44
44
|
return cls.instance
|
|
45
45
|
|
|
46
46
|
@classmethod
|
|
47
|
-
def
|
|
47
|
+
def create_path_mapping(cls) -> None:
|
|
48
48
|
"""
|
|
49
49
|
Populate the path mapping with tracers for every distinct pair of managed classes.
|
|
50
50
|
|
|
@@ -110,7 +110,7 @@ class PathMap:
|
|
|
110
110
|
return None
|
|
111
111
|
return tracer
|
|
112
112
|
|
|
113
|
-
def
|
|
113
|
+
def go_to(
|
|
114
114
|
self, path_destination: PathDestination | type[GeneralManager] | str
|
|
115
115
|
) -> GeneralManager | Bucket | None:
|
|
116
116
|
"""
|
|
@@ -133,9 +133,9 @@ class PathMap:
|
|
|
133
133
|
return None
|
|
134
134
|
if self.start_instance is None:
|
|
135
135
|
raise MissingStartInstanceError()
|
|
136
|
-
return tracer.
|
|
136
|
+
return tracer.traverse_path(self.start_instance)
|
|
137
137
|
|
|
138
|
-
def
|
|
138
|
+
def get_all_connected(self) -> set[str]:
|
|
139
139
|
"""
|
|
140
140
|
Return the set of destination class names that are reachable from the configured start.
|
|
141
141
|
|
|
@@ -173,9 +173,9 @@ class PathTracer:
|
|
|
173
173
|
if self.start_class == self.destination_class:
|
|
174
174
|
self.path: list[str] | None = []
|
|
175
175
|
else:
|
|
176
|
-
self.path = self.
|
|
176
|
+
self.path = self.create_path(start_class, [])
|
|
177
177
|
|
|
178
|
-
def
|
|
178
|
+
def create_path(
|
|
179
179
|
self, current_manager: type[GeneralManager], path: list[str]
|
|
180
180
|
) -> list[str] | None:
|
|
181
181
|
"""
|
|
@@ -190,7 +190,7 @@ class PathTracer:
|
|
|
190
190
|
"""
|
|
191
191
|
current_connections = {
|
|
192
192
|
attr_name: attr_value["type"]
|
|
193
|
-
for attr_name, attr_value in current_manager.Interface.
|
|
193
|
+
for attr_name, attr_value in current_manager.Interface.get_attribute_types().items()
|
|
194
194
|
}
|
|
195
195
|
for attr_name, attr_value in current_manager.__dict__.items():
|
|
196
196
|
if not isinstance(attr_value, GraphQLProperty):
|
|
@@ -211,13 +211,13 @@ class PathTracer:
|
|
|
211
211
|
continue
|
|
212
212
|
if attr_type == self.destination_class:
|
|
213
213
|
return [*path, attr]
|
|
214
|
-
result = self.
|
|
214
|
+
result = self.create_path(attr_type, [*path, attr])
|
|
215
215
|
if result:
|
|
216
216
|
return result
|
|
217
217
|
|
|
218
218
|
return None
|
|
219
219
|
|
|
220
|
-
def
|
|
220
|
+
def traverse_path(
|
|
221
221
|
self, start_instance: GeneralManager | Bucket
|
|
222
222
|
) -> GeneralManager | Bucket | None:
|
|
223
223
|
"""
|
|
@@ -5,6 +5,8 @@ from __future__ import annotations
|
|
|
5
5
|
from importlib import import_module
|
|
6
6
|
from typing import Any, Iterable, Mapping, MutableMapping, overload
|
|
7
7
|
|
|
8
|
+
from general_manager.logging import get_logger
|
|
9
|
+
|
|
8
10
|
|
|
9
11
|
class MissingExportError(AttributeError):
|
|
10
12
|
"""Raised when a requested export is not defined in the public API."""
|
|
@@ -24,6 +26,7 @@ class MissingExportError(AttributeError):
|
|
|
24
26
|
|
|
25
27
|
ModuleTarget = tuple[str, str]
|
|
26
28
|
ModuleMap = Mapping[str, str | ModuleTarget]
|
|
29
|
+
logger = get_logger("utils.public_api")
|
|
27
30
|
|
|
28
31
|
|
|
29
32
|
@overload
|
|
@@ -63,11 +66,27 @@ def resolve_export(
|
|
|
63
66
|
MissingExportError: If `name` is not present in `module_all`.
|
|
64
67
|
"""
|
|
65
68
|
if name not in module_all:
|
|
69
|
+
logger.warning(
|
|
70
|
+
"missing public api export",
|
|
71
|
+
context={
|
|
72
|
+
"module": module_globals["__name__"],
|
|
73
|
+
"export": name,
|
|
74
|
+
},
|
|
75
|
+
)
|
|
66
76
|
raise MissingExportError(module_globals["__name__"], name)
|
|
67
77
|
module_path, attr_name = _normalize_target(name, module_map[name])
|
|
68
78
|
module = import_module(module_path)
|
|
69
79
|
value = getattr(module, attr_name)
|
|
70
80
|
module_globals[name] = value
|
|
81
|
+
logger.debug(
|
|
82
|
+
"resolved public api export",
|
|
83
|
+
context={
|
|
84
|
+
"module": module_globals["__name__"],
|
|
85
|
+
"export": name,
|
|
86
|
+
"target_module": module_path,
|
|
87
|
+
"target_attribute": attr_name,
|
|
88
|
+
},
|
|
89
|
+
)
|
|
71
90
|
return value
|
|
72
91
|
|
|
73
92
|
|
general_manager/utils/testing.py
CHANGED
|
@@ -15,8 +15,8 @@ from unittest.mock import ANY
|
|
|
15
15
|
|
|
16
16
|
from general_manager.api.graphql import GraphQL
|
|
17
17
|
from general_manager.apps import GeneralmanagerConfig
|
|
18
|
-
from general_manager.cache.
|
|
19
|
-
from general_manager.manager.
|
|
18
|
+
from general_manager.cache.cache_decorator import _SENTINEL
|
|
19
|
+
from general_manager.manager.general_manager import GeneralManager
|
|
20
20
|
from general_manager.manager.meta import GeneralManagerMeta
|
|
21
21
|
|
|
22
22
|
_original_get_app: Callable[[str], AppConfig | None] = (
|
|
@@ -24,7 +24,7 @@ _original_get_app: Callable[[str], AppConfig | None] = (
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def
|
|
27
|
+
def create_fallback_get_app(fallback_app: str) -> Callable[[str], AppConfig | None]:
|
|
28
28
|
"""
|
|
29
29
|
Create an app-config lookup that falls back to a specific Django app.
|
|
30
30
|
|
|
@@ -32,7 +32,7 @@ def createFallbackGetApp(fallback_app: str) -> Callable[[str], AppConfig | None]
|
|
|
32
32
|
fallback_app (str): App label used when the default lookup cannot resolve the object.
|
|
33
33
|
|
|
34
34
|
Returns:
|
|
35
|
-
Callable[[str],
|
|
35
|
+
Callable[[str], AppConfig | None]: Function returning either the resolved configuration or the fallback app configuration when available.
|
|
36
36
|
"""
|
|
37
37
|
|
|
38
38
|
def _fallback_get_app(object_name: str) -> AppConfig | None:
|
|
@@ -120,7 +120,7 @@ class GMTestCaseMeta(type):
|
|
|
120
120
|
GraphQL._schema = None
|
|
121
121
|
|
|
122
122
|
if fallback_app is not None:
|
|
123
|
-
handler =
|
|
123
|
+
handler = create_fallback_get_app(fallback_app)
|
|
124
124
|
global_apps.get_containing_app_config = cast( # type: ignore[assignment]
|
|
125
125
|
Callable[[str], AppConfig | None], handler
|
|
126
126
|
)
|
|
@@ -154,11 +154,11 @@ class GMTestCaseMeta(type):
|
|
|
154
154
|
if history_model:
|
|
155
155
|
editor.create_model(history_model.model) # type: ignore[attr-defined]
|
|
156
156
|
# 4) GM & GraphQL initialization
|
|
157
|
-
GeneralmanagerConfig.
|
|
157
|
+
GeneralmanagerConfig.initialize_general_manager_classes(
|
|
158
158
|
cls.general_manager_classes, cls.general_manager_classes
|
|
159
159
|
)
|
|
160
|
-
GeneralmanagerConfig.
|
|
161
|
-
GeneralmanagerConfig.
|
|
160
|
+
GeneralmanagerConfig.handle_read_only_interface(cls.read_only_classes)
|
|
161
|
+
GeneralmanagerConfig.handle_graph_ql(cls.general_manager_classes)
|
|
162
162
|
# 5) GraphQLTransactionTestCase.setUpClass
|
|
163
163
|
base_setup.__func__(cls)
|
|
164
164
|
|
|
@@ -245,7 +245,7 @@ class GeneralManagerTransactionTestCase(
|
|
|
245
245
|
"""
|
|
246
246
|
super().setUp()
|
|
247
247
|
caches._connections.default = LoggingCache("test-cache", {}) # type: ignore[attr-defined]
|
|
248
|
-
self.
|
|
248
|
+
self.__reset_cache_counter()
|
|
249
249
|
|
|
250
250
|
@classmethod
|
|
251
251
|
def tearDownClass(cls) -> None:
|
|
@@ -311,7 +311,7 @@ class GeneralManagerTransactionTestCase(
|
|
|
311
311
|
super().tearDownClass()
|
|
312
312
|
|
|
313
313
|
#
|
|
314
|
-
def
|
|
314
|
+
def assert_cache_miss(self) -> None:
|
|
315
315
|
"""
|
|
316
316
|
Assert that a cache retrieval missed and was followed by a write.
|
|
317
317
|
|
|
@@ -328,9 +328,9 @@ class GeneralManagerTransactionTestCase(
|
|
|
328
328
|
"Cache.get should have been called and found nothing",
|
|
329
329
|
)
|
|
330
330
|
self.assertIn(("set", ANY), ops, "Cache.set should have stored the value")
|
|
331
|
-
self.
|
|
331
|
+
self.__reset_cache_counter()
|
|
332
332
|
|
|
333
|
-
def
|
|
333
|
+
def assert_cache_hit(self) -> None:
|
|
334
334
|
"""
|
|
335
335
|
Assert that a cache lookup succeeded without triggering a write.
|
|
336
336
|
|
|
@@ -352,9 +352,9 @@ class GeneralManagerTransactionTestCase(
|
|
|
352
352
|
ops,
|
|
353
353
|
"Cache.set should not have stored anything",
|
|
354
354
|
)
|
|
355
|
-
self.
|
|
355
|
+
self.__reset_cache_counter()
|
|
356
356
|
|
|
357
|
-
def
|
|
357
|
+
def __reset_cache_counter(self) -> None:
|
|
358
358
|
"""
|
|
359
359
|
Clear the log of cache operations recorded by the LoggingCache instance.
|
|
360
360
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
4
4
|
Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
|
|
5
5
|
Author-email: Tim Kleindick <tkleindick@yahoo.de>
|
|
6
6
|
License: MIT License
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
general_manager/__init__.py,sha256=Xy4_fFjChIYtlBPDv7K3JEHOulq9_IFXkCc4CElS32Q,1035
|
|
2
|
+
general_manager/apps.py,sha256=bz_A2IfgVba2b8lZC5aeQqe40IH7GaavpTEg828Ltm4,27343
|
|
3
|
+
general_manager/logging.py,sha256=bL2dEdNnxo74qRmhOCG06lbPtVCOozfF3GS133T9HH8,4250
|
|
4
|
+
general_manager/public_api_registry.py,sha256=mDpKIE3fmFAMTbQnQdLAZGc_CKNNA6p22Jrql9R6Y4w,7817
|
|
5
|
+
general_manager/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
general_manager/_types/__init__.py,sha256=RmS0Ok-1-CwWOZL_socLWksEk9MfsshL9eQx879I4mU,60
|
|
7
|
+
general_manager/_types/api.py,sha256=i5fi7O3C3frI74oqPT-tAoztDplgNDOShyvPNxhw7CY,496
|
|
8
|
+
general_manager/_types/bucket.py,sha256=DZ3GC-1iR4RiNBKydsMhp_R4GTaYMfsonwe7MCADVP4,435
|
|
9
|
+
general_manager/_types/cache.py,sha256=jMbIEXDq1pUvVxTN8hvD8rSH7QRjE3ewrMx2gEhYP3w,660
|
|
10
|
+
general_manager/_types/factory.py,sha256=cPG_td05KCWv2j6_h_vYCKETPol3k_nXkEMWCcUdNHM,1726
|
|
11
|
+
general_manager/_types/general_manager.py,sha256=Izs47-pOnYJqPmMF7m5DRodSISEztXKSxtBGIHgN8sA,1031
|
|
12
|
+
general_manager/_types/interface.py,sha256=JlPn3G3ompn1PRfFQfsrIJv2Pf0I3n1RL2ki5_fDX54,605
|
|
13
|
+
general_manager/_types/manager.py,sha256=rXM6NrQaPdfE9CQoRV_jhbI3SK23rvdpvyBpybVgWi8,506
|
|
14
|
+
general_manager/_types/measurement.py,sha256=Unkpf3H7TGaUKfkjmFDR7QWBU4lPp5I2A4GlK8pps-Y,443
|
|
15
|
+
general_manager/_types/permission.py,sha256=HJBEOIDYbkYSZkEbT4_6qRDyUk2Ek153K_RchmeYd5I,416
|
|
16
|
+
general_manager/_types/rule.py,sha256=aNbx3jlVinAYQGJlmFwW8rOwTjf19F6khq5xbGTdD3U,238
|
|
17
|
+
general_manager/_types/utils.py,sha256=8VyD6EKkcRIzdVs6FANP5Ri71eT4BT4c3dTUeyjDr40,1043
|
|
18
|
+
general_manager/api/__init__.py,sha256=ChV1UPCUjW1Lci0BajmXVtE-3C-WLQTvjO058BMu1Bs,1020
|
|
19
|
+
general_manager/api/graphql.py,sha256=MqNvIWAlHpnRy4WYf6I4bjFLkL29rWWyQls2oS3b1b0,83122
|
|
20
|
+
general_manager/api/graphql_subscription_consumer.py,sha256=cA-pQNjeF4o92yc2IHtNob6z1CNhHoGxIw2Fgoj24-U,17492
|
|
21
|
+
general_manager/api/mutation.py,sha256=-zZ_zdyCQW46ihP0kC9BiNGRMPyLYVimxqOKNvP_s48,10155
|
|
22
|
+
general_manager/api/property.py,sha256=dWRTg8CECSYkIqTBwSbM8CCDEqB_-Zfbtfhxzag7qJI,5690
|
|
23
|
+
general_manager/bucket/__init__.py,sha256=0VbGdLveCYBvbDBdOCwNDJ1SmxrVyd5-Xv-X0JZXwb4,949
|
|
24
|
+
general_manager/bucket/base_bucket.py,sha256=UN_O5AmOfHtN6y6xMdsLDzKowRzcMBCm-JtCxw6ASKo,8131
|
|
25
|
+
general_manager/bucket/calculation_bucket.py,sha256=TpZOJP42CFwsqeQWOrltouClA9Xl9-jRMKlBXlUc3Pk,30952
|
|
26
|
+
general_manager/bucket/database_bucket.py,sha256=Hh__H3E-7tFaUvA5WiKbHmyafyFTzc72HgCvsTgawfU,23008
|
|
27
|
+
general_manager/bucket/group_bucket.py,sha256=nr2_3rJizOhhbtF5WPiLtZn8lnP2JQ40ehPgYKpwR1M,16369
|
|
28
|
+
general_manager/cache/__init__.py,sha256=1qLNRTHScsXDoIXKdwvHwyoi7pIb5phv7ASS1AP4Xc8,1014
|
|
29
|
+
general_manager/cache/cache_decorator.py,sha256=SpXZE89lRqI2jD4iWKbdkvGXp3BBWULvRbG9jM0e4Fs,4203
|
|
30
|
+
general_manager/cache/cache_tracker.py,sha256=AyDgc_PbxvfE3AJZilKaFCh9Dgg883pMRCXqZxWiILU,2992
|
|
31
|
+
general_manager/cache/dependency_index.py,sha256=-1NM13y6OIakw52bvXtWQOz55Mbq4EGq28aXvfpKxO8,26248
|
|
32
|
+
general_manager/cache/model_dependency_collector.py,sha256=T0g1-0KaEKE8xRNBJj3qsEWKIVlaDZq_MoDn1mCpXv0,2649
|
|
33
|
+
general_manager/cache/signals.py,sha256=FP_axmdeoJh9ZxjriNgz5zCEQRrVT__KvsHO4eAqdFg,2553
|
|
34
|
+
general_manager/factory/__init__.py,sha256=A-if6AxDHIejg9S2ObJXGolBfD5xfG9P1aUqT-KEGf0,943
|
|
35
|
+
general_manager/factory/auto_factory.py,sha256=UcX0mxqLyeccuIhjnE8uHYEJ24bMRCZjzsFsNUBrIYw,10493
|
|
36
|
+
general_manager/factory/factories.py,sha256=yVqLSFWuFFTEE9mQGMA9uTRETIruKv0vj6DrUlRoasU,12092
|
|
37
|
+
general_manager/factory/factory_methods.py,sha256=ZwUQwuLbs1NgVxkjK6idzmWAZY3-9F8wah05bSf14bQ,8407
|
|
38
|
+
general_manager/interface/__init__.py,sha256=L0IQUHOJehJbX6hzX9nomMhT8f1tqrPtLDgINIpe5-w,1010
|
|
39
|
+
general_manager/interface/base_interface.py,sha256=TREetLDX_BAtqrnsvZ9qHUkxl86JCCPzI_eky2bTLwg,16194
|
|
40
|
+
general_manager/interface/calculation_interface.py,sha256=dsu2pjFgaOv-Kif5YbrsbEvH8Q1n_XfUabPv3CusbtE,5965
|
|
41
|
+
general_manager/interface/database_based_interface.py,sha256=1L0Q22nEWiO_i--3AtuseAytiXMEkIUF4HL5rTB0s0M,25623
|
|
42
|
+
general_manager/interface/database_interface.py,sha256=ALFQKl7jXNQMHegmUkNKyDGJruMmAmprDiiyYsfZZ_A,11825
|
|
43
|
+
general_manager/interface/models.py,sha256=MWCgr-Qzauu7jq-15_iEdI0C9B99MsRONV9jUcjkkMU,3699
|
|
44
|
+
general_manager/interface/read_only_interface.py,sha256=pOi2KNE_eyAMDZMsphaMfsXWa8sy4A-_xVzAV7FZVDM,15177
|
|
45
|
+
general_manager/manager/__init__.py,sha256=Dbka86jtcS2NIxKXA0mohqnLZwLb6NDRX-HeD1_R6UQ,933
|
|
46
|
+
general_manager/manager/general_manager.py,sha256=GperYpkoTg_CZlwYBsqGhnaMFENR6jyxanKYdHsvZjg,12083
|
|
47
|
+
general_manager/manager/group_manager.py,sha256=EhiW2cEnr7J4Ft-FBfuW4hCT5mYg_RCD_-mYF4an9dw,7320
|
|
48
|
+
general_manager/manager/input.py,sha256=e2M7TSZgNwQz0P1pD_rOpm6-wDUUTjga6kb3nJBR9js,3032
|
|
49
|
+
general_manager/manager/meta.py,sha256=kkuwKJlbahUMAkh3Gqefbzdm0rnwhD-jbeR2XhveLLs,11391
|
|
50
|
+
general_manager/measurement/__init__.py,sha256=38-6kTERbw7EeOQAw3eZ9DDEu6hwwqkGJIfJy1D5fx0,993
|
|
51
|
+
general_manager/measurement/measurement.py,sha256=ArEnntLu3ffHID71uFbXwiB5e5tpsBT2_TbBPJfCWJI,26070
|
|
52
|
+
general_manager/measurement/measurement_field.py,sha256=zQbyLZT7E9Lx4f3u_wQ-rEoLPqH0FWhfWyOd1BaW--M,13950
|
|
53
|
+
general_manager/permission/__init__.py,sha256=s4Ka11uYBrymM5O-n5kIxOjwUprZ394jTuzGf5prO_8,981
|
|
54
|
+
general_manager/permission/base_permission.py,sha256=IKi5n8t1sKUP_F2eZnzTC8lg7HI8OVo5p1jxCBpyCgw,11961
|
|
55
|
+
general_manager/permission/file_based_permission.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
general_manager/permission/manager_based_permission.py,sha256=OdDGKwutkHTT13bhSeGGycd3xr7wGhuRXsYym3Z9j2A,10613
|
|
57
|
+
general_manager/permission/mutation_permission.py,sha256=5JV6pluIFPGzJPQ_pr-44zwFg_TgzNwDTHcdpwHettU,4606
|
|
58
|
+
general_manager/permission/permission_checks.py,sha256=4OVQz0QVnmHN-KPge4pz2Zm_oMxo2PUytW7JoDoHjL0,2297
|
|
59
|
+
general_manager/permission/permission_data_manager.py,sha256=vNWbPrcw1NUZ-oTRjc3PME479ubbOqxlKx020GY5wzQ,3905
|
|
60
|
+
general_manager/permission/utils.py,sha256=yojrcF1kD6KjKugrGyiaf8XOyS_tUA4yB5_RideKJeg,2905
|
|
61
|
+
general_manager/rule/__init__.py,sha256=dFQLJNr0qpkpuzuBbMY-74jz_Y033YyB9X_OfeJYhSs,1026
|
|
62
|
+
general_manager/rule/handler.py,sha256=qSBXmXvl7fRgjxUo4wyUOzdZm14a8Umd2Jec4zPXJQc,16309
|
|
63
|
+
general_manager/rule/rule.py,sha256=41VXFTSWkBEOj8045vZTezm38VEGimjrk22J4YRl144,22691
|
|
64
|
+
general_manager/utils/__init__.py,sha256=a72hkiV4_c3wQN-NK-q3Dw25irbzoTTfyKm173WtjwQ,1003
|
|
65
|
+
general_manager/utils/args_to_kwargs.py,sha256=uvc0YkfeKvny4SGWNVqFioIxajBHrSkzoqrzonu7jeU,2128
|
|
66
|
+
general_manager/utils/filter_parser.py,sha256=qVkCM5M-gtVrQ3kbHApHjChwSm6Soz60hj41jJdvMvE,5676
|
|
67
|
+
general_manager/utils/format_string.py,sha256=Da7aJMjP_vH85N4O8iqMflQHNWJqZChXp4vFC-3kXUw,1512
|
|
68
|
+
general_manager/utils/json_encoder.py,sha256=0jyjBsZNYGl54hQRkig_5_a20bIN2mV0jlh92ZF8wbM,1049
|
|
69
|
+
general_manager/utils/make_cache_key.py,sha256=Uvf7duph8FkqmWWuc4vVdB5Dztur490hPGIFtlkVuT4,1253
|
|
70
|
+
general_manager/utils/none_to_zero.py,sha256=Z2KVXBKCz02V2ZBs-7tIs_32n7YDxiXyoodW8JbXTDY,667
|
|
71
|
+
general_manager/utils/path_mapping.py,sha256=f3sd3OFh9aJgyF-ayqr22mHnCo-uoIXqio5DRQmziGM,9931
|
|
72
|
+
general_manager/utils/public_api.py,sha256=bas4SKchJUg2dI2SLRQwkF_CoXJKKwkzQx_JOjMJ2VY,3272
|
|
73
|
+
general_manager/utils/testing.py,sha256=_V4Y5SXvu-ocoq-AntPFPd140igclUJUT2xVXxhRrSs,14954
|
|
74
|
+
generalmanager-0.20.0.dist-info/licenses/LICENSE,sha256=OcRwUgM4iiESN1oNELgyuwuah39XX-EPZiPDDHndNVI,1070
|
|
75
|
+
generalmanager-0.20.0.dist-info/METADATA,sha256=dpVHVlqT7Mp593hrJnPwNztTzT2E_xf10n-91hrMARE,8266
|
|
76
|
+
generalmanager-0.20.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
77
|
+
generalmanager-0.20.0.dist-info/top_level.txt,sha256=sTDtExP9ga-YP3h3h42yivUY-A2Q23C2nw6LNKOho4I,16
|
|
78
|
+
generalmanager-0.20.0.dist-info/RECORD,,
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
general_manager/__init__.py,sha256=Xy4_fFjChIYtlBPDv7K3JEHOulq9_IFXkCc4CElS32Q,1035
|
|
2
|
-
general_manager/apps.py,sha256=wFxRLEqyFbBlOB5yvQXjNX_Yc4DPsl0xD5-PIWvhPdk,25785
|
|
3
|
-
general_manager/public_api_registry.py,sha256=zR-pOl5-X1IEt-Q6eF8FT-6mQiQi3Tsmvkfi1nxIKp8,7544
|
|
4
|
-
general_manager/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
general_manager/_types/__init__.py,sha256=RmS0Ok-1-CwWOZL_socLWksEk9MfsshL9eQx879I4mU,60
|
|
6
|
-
general_manager/_types/api.py,sha256=WO5b0MT85LaVsi_KE45onWX1R75iENM4Q-3qMEZCbdk,488
|
|
7
|
-
general_manager/_types/bucket.py,sha256=bMsZFsh3kiUrtmtK10X_oA2LVCIHXbub4xDVBzYw5sQ,431
|
|
8
|
-
general_manager/_types/cache.py,sha256=J49VQLm-UChQOPal1mbd5vB2JtjIhS_HT-7Yl1jDtVE,654
|
|
9
|
-
general_manager/_types/factory.py,sha256=ovjtOLjZNHxWjt6q5xT1n-3nlE2JcqxZfR5GXLhnpY8,1652
|
|
10
|
-
general_manager/_types/general_manager.py,sha256=Y-L_CdzM54pB_q-gZR3mp--md9sbQOA8UtTkiII4kac,951
|
|
11
|
-
general_manager/_types/interface.py,sha256=Fuo9-PcUwyNLI-dw4S1T2l_K5-Ndhz_ed-_vswksgaY,598
|
|
12
|
-
general_manager/_types/manager.py,sha256=WaTh3F2r5IdG7tQsbJkO2h0Sf1uv4jQllJ-upG3rCLU,500
|
|
13
|
-
general_manager/_types/measurement.py,sha256=CIgWAWM1UNEh1pKTG5Tj0XKiktdhY6dIgm3WbxG5IlM,442
|
|
14
|
-
general_manager/_types/permission.py,sha256=i8E7O6NENjkbXVf4k4TQgHo9V74yEH-KVcbQrsW9GBk,412
|
|
15
|
-
general_manager/_types/rule.py,sha256=aNbx3jlVinAYQGJlmFwW8rOwTjf19F6khq5xbGTdD3U,238
|
|
16
|
-
general_manager/_types/utils.py,sha256=p2U0R0G0qviA5tmgfYggD4wRmIiCQGU7XF4Lqtoa_aM,1025
|
|
17
|
-
general_manager/api/__init__.py,sha256=ChV1UPCUjW1Lci0BajmXVtE-3C-WLQTvjO058BMu1Bs,1020
|
|
18
|
-
general_manager/api/graphql.py,sha256=Ma4fb_1YWEP_pBXVBfCjp6D2oSOl3yUFp5hk9kIwZ9E,79451
|
|
19
|
-
general_manager/api/graphql_subscription_consumer.py,sha256=cA-pQNjeF4o92yc2IHtNob6z1CNhHoGxIw2Fgoj24-U,17492
|
|
20
|
-
general_manager/api/mutation.py,sha256=A7Z5UPn_ln8VJIF9NHLdA9jAXqT0p7dB0u2WDjtis2I,10130
|
|
21
|
-
general_manager/api/property.py,sha256=vBoOSBtqMV9uwWdgiYLoAt2f_aL7h6fCnwdjgPcm2LE,5683
|
|
22
|
-
general_manager/bucket/__init__.py,sha256=0VbGdLveCYBvbDBdOCwNDJ1SmxrVyd5-Xv-X0JZXwb4,949
|
|
23
|
-
general_manager/bucket/baseBucket.py,sha256=wSQijZrs1joA-8IGh2AwD4KARSgYqSL4AxXq3KwOz6A,8126
|
|
24
|
-
general_manager/bucket/calculationBucket.py,sha256=x6wl71C1lt6BDIIcPDg06JL5Nyp7igAS6Lrb1YeitjQ,30934
|
|
25
|
-
general_manager/bucket/databaseBucket.py,sha256=Ud0ailMQPoBbt0hsnpIm4urhrTAuw12xbowPD2Mh7Zg,23075
|
|
26
|
-
general_manager/bucket/groupBucket.py,sha256=mOyYyYKP53eIk2iaTES0J_HxABbUtoJtcHlyGeg-WvM,16354
|
|
27
|
-
general_manager/cache/__init__.py,sha256=1qLNRTHScsXDoIXKdwvHwyoi7pIb5phv7ASS1AP4Xc8,1014
|
|
28
|
-
general_manager/cache/cacheDecorator.py,sha256=IAf9KW0hOQRIScBqSHmP5Bn4O2JwqwVxmMtEHKlNO3Q,3493
|
|
29
|
-
general_manager/cache/cacheTracker.py,sha256=rb637hGHOe79sehpTZLhfO979qrYLw3ATufo7kr_VvM,2991
|
|
30
|
-
general_manager/cache/dependencyIndex.py,sha256=7PWYbeeMCPCP3_xUSCTkrStr50csE4bgHiW81IMalsg,25599
|
|
31
|
-
general_manager/cache/modelDependencyCollector.py,sha256=iFiuuQKO3-sEcUxbpA1svxL2TMkr8F6afAtRXK5fUBk,2645
|
|
32
|
-
general_manager/cache/signals.py,sha256=0EQjBkhydObwOFpVm4le8nh4KxMfk_1hzSFZSQ0DiBE,2552
|
|
33
|
-
general_manager/factory/__init__.py,sha256=A-if6AxDHIejg9S2ObJXGolBfD5xfG9P1aUqT-KEGf0,943
|
|
34
|
-
general_manager/factory/autoFactory.py,sha256=ueO38ns0Z-NZtuVKk0BmqURxngxCyuP5Y6_UUvllrxg,10398
|
|
35
|
-
general_manager/factory/factories.py,sha256=9dIQygfvkaBCKgE8CFMTsamYn3aaTuQHY7lN-IQN6ng,12158
|
|
36
|
-
general_manager/factory/factoryMethods.py,sha256=sNxyoMzmSDHeEo11yhzNmUGFSt9AapXAjLpGkrsR594,8373
|
|
37
|
-
general_manager/interface/__init__.py,sha256=L0IQUHOJehJbX6hzX9nomMhT8f1tqrPtLDgINIpe5-w,1010
|
|
38
|
-
general_manager/interface/baseInterface.py,sha256=JgI5FpyArINVVFhGqDVtVijilrs1UUt-5RfYPmc96PE,15799
|
|
39
|
-
general_manager/interface/calculationInterface.py,sha256=mkoBXalFaktqz34zFPB0Eo0lmdMGCWVShtdm8NcK4y8,5952
|
|
40
|
-
general_manager/interface/databaseBasedInterface.py,sha256=U_9Q1uD03JXSdlgjW4-Evica2NsbP8Wg1FNN0j0aYPY,25543
|
|
41
|
-
general_manager/interface/databaseInterface.py,sha256=NVtwsGKffXVOo6D3UNkR496y-2Y7KTq2AjRhxxsjj-c,11731
|
|
42
|
-
general_manager/interface/models.py,sha256=RPvjw56IZyvrSH_-Hr9evO5Zkc6NrOUtAsKM0G0vb7o,3693
|
|
43
|
-
general_manager/interface/readOnlyInterface.py,sha256=9hmDh5SnZSsWkjlphKL_OtyorHjeRwzBrxXGobkMO1E,14912
|
|
44
|
-
general_manager/manager/__init__.py,sha256=Dbka86jtcS2NIxKXA0mohqnLZwLb6NDRX-HeD1_R6UQ,933
|
|
45
|
-
general_manager/manager/generalManager.py,sha256=98LR4TBJsGaQDcfhQOH_2HfZngZK9c0jYMn1W03Qblo,10217
|
|
46
|
-
general_manager/manager/groupManager.py,sha256=-e7Zvd4JQSvBhYVVnO7p8FarXE6YE4CzaTXgUGYzoGw,7313
|
|
47
|
-
general_manager/manager/input.py,sha256=UoVU0FDXHDEmuOk7mppx63DuwbPK2_qolcILar2Kk6U,3031
|
|
48
|
-
general_manager/manager/meta.py,sha256=gh2FEvSvyYTRU2mIOR-Vw2OM1PtNZ8CNqHE2ST87who,9614
|
|
49
|
-
general_manager/measurement/__init__.py,sha256=38-6kTERbw7EeOQAw3eZ9DDEu6hwwqkGJIfJy1D5fx0,993
|
|
50
|
-
general_manager/measurement/measurement.py,sha256=PRsR7KZiZ-m8pwR1DVlBxnetEkWcmHbzsXT2s5tfXs8,26067
|
|
51
|
-
general_manager/measurement/measurementField.py,sha256=zQbyLZT7E9Lx4f3u_wQ-rEoLPqH0FWhfWyOd1BaW--M,13950
|
|
52
|
-
general_manager/permission/__init__.py,sha256=s4Ka11uYBrymM5O-n5kIxOjwUprZ394jTuzGf5prO_8,981
|
|
53
|
-
general_manager/permission/basePermission.py,sha256=9XC62LvbvX6LTmPG2z_y-Q16zwgo2sqtxRoEtViYI3A,11101
|
|
54
|
-
general_manager/permission/fileBasedPermission.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
general_manager/permission/managerBasedPermission.py,sha256=Vju6lriBDgieOt_rVpn2EVtX4762DHtAO7799A1EveQ,10577
|
|
56
|
-
general_manager/permission/mutationPermission.py,sha256=LvUuozjcaQtcCmyO_8VZ_hCW-Ah-TYqRyqU-ghTh7LI,4584
|
|
57
|
-
general_manager/permission/permissionChecks.py,sha256=ax7OucBgm__-sFdmTP95eCllSmtd7M9JVoq9XmIJCEM,2294
|
|
58
|
-
general_manager/permission/permissionDataManager.py,sha256=m3ZP58iuuKSRNuTWZtz6mPbFKw7oALorHKu9AyIwwFA,3899
|
|
59
|
-
general_manager/permission/utils.py,sha256=BePKYjaThY2rFElOaaSWA5ZIOkH_psRF67N9odhziDM,2895
|
|
60
|
-
general_manager/rule/__init__.py,sha256=dFQLJNr0qpkpuzuBbMY-74jz_Y033YyB9X_OfeJYhSs,1026
|
|
61
|
-
general_manager/rule/handler.py,sha256=H7XX3reM5Wc3FxzHLZvB9npQo5yuuOAUNuG12ojp-zM,16316
|
|
62
|
-
general_manager/rule/rule.py,sha256=RMxrH8BdQwQmzuUxUMoWbbfn5nh2wR2uoOdxLZYntNc,19620
|
|
63
|
-
general_manager/utils/__init__.py,sha256=a72hkiV4_c3wQN-NK-q3Dw25irbzoTTfyKm173WtjwQ,1003
|
|
64
|
-
general_manager/utils/argsToKwargs.py,sha256=uvc0YkfeKvny4SGWNVqFioIxajBHrSkzoqrzonu7jeU,2128
|
|
65
|
-
general_manager/utils/filterParser.py,sha256=c8rmUXiTky3rHwqfNtvUgtUyM3pFOJaCVQzncI1b3AY,5684
|
|
66
|
-
general_manager/utils/formatString.py,sha256=Da7aJMjP_vH85N4O8iqMflQHNWJqZChXp4vFC-3kXUw,1512
|
|
67
|
-
general_manager/utils/jsonEncoder.py,sha256=Jw7iA50GEOjxk_AiebXJ9PNl_KijnvEOLG7oISZ07KE,1048
|
|
68
|
-
general_manager/utils/makeCacheKey.py,sha256=T9YTHDW8VN50iW_Yzklm9Xw-mp1Q7PKMphQ8lLKkqdA,1252
|
|
69
|
-
general_manager/utils/noneToZero.py,sha256=e3zk8Ofh3AsYW8spYmZWiv7FjOsr0jvfB9AOQbaPMWY,665
|
|
70
|
-
general_manager/utils/pathMapping.py,sha256=WnCY43pFQrpdUN8DyO6QsOpDB3MPIyXf7q6wms7bHws,9913
|
|
71
|
-
general_manager/utils/public_api.py,sha256=VvsJWJkJ9HIVu5xSQ_IhX2SROSbORXeGARpGVSGo9r4,2732
|
|
72
|
-
general_manager/utils/testing.py,sha256=DhWeOqtANpKEmvyfn7ihjKEAllXHMWdNOgJ7aw8EBcU,14913
|
|
73
|
-
generalmanager-0.19.1.dist-info/licenses/LICENSE,sha256=OcRwUgM4iiESN1oNELgyuwuah39XX-EPZiPDDHndNVI,1070
|
|
74
|
-
generalmanager-0.19.1.dist-info/METADATA,sha256=HWoVuO__B3zZF8TNItaGeZL6Nh0xYydFZdMTxMamno0,8266
|
|
75
|
-
generalmanager-0.19.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
76
|
-
generalmanager-0.19.1.dist-info/top_level.txt,sha256=sTDtExP9ga-YP3h3h42yivUY-A2Q23C2nw6LNKOho4I,16
|
|
77
|
-
generalmanager-0.19.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|