GeneralManager 0.16.1__py3-none-any.whl → 0.18.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/__init__.py +11 -1
- general_manager/_types/api.py +0 -1
- general_manager/_types/bucket.py +0 -1
- general_manager/_types/cache.py +0 -1
- general_manager/_types/factory.py +0 -1
- general_manager/_types/general_manager.py +0 -1
- general_manager/_types/interface.py +0 -1
- general_manager/_types/manager.py +0 -1
- general_manager/_types/measurement.py +0 -1
- general_manager/_types/permission.py +0 -1
- general_manager/_types/rule.py +0 -1
- general_manager/_types/utils.py +0 -1
- general_manager/api/__init__.py +13 -1
- general_manager/api/graphql.py +897 -147
- general_manager/api/graphql_subscription_consumer.py +432 -0
- general_manager/api/mutation.py +85 -23
- general_manager/api/property.py +39 -13
- general_manager/apps.py +336 -40
- general_manager/bucket/__init__.py +10 -1
- general_manager/bucket/calculationBucket.py +155 -53
- general_manager/bucket/databaseBucket.py +157 -45
- general_manager/bucket/groupBucket.py +133 -44
- general_manager/cache/__init__.py +10 -1
- general_manager/cache/dependencyIndex.py +303 -53
- general_manager/cache/signals.py +9 -2
- general_manager/factory/__init__.py +10 -1
- general_manager/factory/autoFactory.py +55 -13
- general_manager/factory/factories.py +110 -40
- general_manager/factory/factoryMethods.py +122 -34
- general_manager/interface/__init__.py +10 -1
- general_manager/interface/baseInterface.py +129 -36
- general_manager/interface/calculationInterface.py +35 -18
- general_manager/interface/databaseBasedInterface.py +71 -45
- general_manager/interface/databaseInterface.py +96 -38
- general_manager/interface/models.py +5 -5
- general_manager/interface/readOnlyInterface.py +94 -20
- general_manager/manager/__init__.py +10 -1
- general_manager/manager/generalManager.py +25 -16
- general_manager/manager/groupManager.py +21 -7
- general_manager/manager/meta.py +84 -16
- general_manager/measurement/__init__.py +10 -1
- general_manager/measurement/measurement.py +289 -95
- general_manager/measurement/measurementField.py +42 -31
- general_manager/permission/__init__.py +10 -1
- general_manager/permission/basePermission.py +120 -38
- general_manager/permission/managerBasedPermission.py +72 -21
- general_manager/permission/mutationPermission.py +14 -9
- general_manager/permission/permissionChecks.py +14 -12
- general_manager/permission/permissionDataManager.py +24 -11
- general_manager/permission/utils.py +34 -6
- general_manager/public_api_registry.py +36 -10
- general_manager/rule/__init__.py +10 -1
- general_manager/rule/handler.py +133 -44
- general_manager/rule/rule.py +178 -39
- general_manager/utils/__init__.py +10 -1
- general_manager/utils/argsToKwargs.py +34 -9
- general_manager/utils/filterParser.py +22 -7
- general_manager/utils/formatString.py +1 -0
- general_manager/utils/pathMapping.py +23 -15
- general_manager/utils/public_api.py +33 -2
- general_manager/utils/testing.py +49 -42
- {generalmanager-0.16.1.dist-info → generalmanager-0.18.0.dist-info}/METADATA +3 -1
- generalmanager-0.18.0.dist-info/RECORD +77 -0
- {generalmanager-0.16.1.dist-info → generalmanager-0.18.0.dist-info}/licenses/LICENSE +1 -1
- generalmanager-0.16.1.dist-info/RECORD +0 -76
- {generalmanager-0.16.1.dist-info → generalmanager-0.18.0.dist-info}/WHEEL +0 -0
- {generalmanager-0.16.1.dist-info → generalmanager-0.18.0.dist-info}/top_level.txt +0 -0
general_manager/utils/testing.py
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from contextlib import suppress
|
|
4
4
|
from importlib import import_module
|
|
5
|
-
from typing import Any, Callable, cast
|
|
5
|
+
from typing import Any, Callable, ClassVar, cast
|
|
6
6
|
|
|
7
7
|
from django.apps import AppConfig, apps as global_apps
|
|
8
8
|
from django.conf import settings
|
|
@@ -80,15 +80,18 @@ class GMTestCaseMeta(type):
|
|
|
80
80
|
attrs: dict[str, object],
|
|
81
81
|
) -> type:
|
|
82
82
|
"""
|
|
83
|
-
|
|
83
|
+
Create a new test case class that injects GeneralManager-specific initialization into `setUpClass`.
|
|
84
|
+
|
|
85
|
+
The constructed class replaces or wraps any user-defined `setUpClass` with logic that resets GraphQL and manager registries, configures an optional fallback app lookup, ensures database tables for managed models exist, initializes GeneralManager and GraphQL registrations, and then calls the standard GraphQL test setup.
|
|
84
86
|
|
|
85
87
|
Parameters:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
mcs (type[GMTestCaseMeta]): Metaclass constructing the new class.
|
|
89
|
+
name (str): Name of the class to create.
|
|
90
|
+
bases (tuple[type, ...]): Base classes for the new class.
|
|
91
|
+
attrs (dict[str, object]): Class namespace; may contain a user-defined `setUpClass` and `fallback_app`.
|
|
89
92
|
|
|
90
93
|
Returns:
|
|
91
|
-
type:
|
|
94
|
+
type: The newly created test case class whose `setUpClass` has been augmented for GeneralManager testing.
|
|
92
95
|
"""
|
|
93
96
|
user_setup = attrs.get("setUpClass")
|
|
94
97
|
fallback_app = cast(str | None, attrs.get("fallback_app", "general_manager"))
|
|
@@ -99,28 +102,27 @@ class GMTestCaseMeta(type):
|
|
|
99
102
|
cls: type["GeneralManagerTransactionTestCase"],
|
|
100
103
|
) -> None:
|
|
101
104
|
"""
|
|
102
|
-
Prepare the test
|
|
103
|
-
|
|
104
|
-
The method resets GraphQL registries, configures optional fallback app lookups, synchronises database tables for managed models, and finally invokes the parent `setUpClass`.
|
|
105
|
+
Prepare the test environment for GeneralManager GraphQL tests.
|
|
105
106
|
|
|
106
|
-
|
|
107
|
-
cls (type[GeneralManagerTransactionTestCase]): Test case subclass whose environment is being initialised.
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
None
|
|
107
|
+
Resets GraphQL and manager registries, optionally overrides Django's app-config lookup to use a fallback app, clears the default GraphQL URL pattern, creates missing database tables for models referenced by the test class's `general_manager_classes`, initializes GeneralManager classes and read-only interfaces, registers GraphQL types/fields, and then invokes the base class `setUpClass`.
|
|
111
108
|
"""
|
|
112
109
|
GraphQL._query_class = None
|
|
113
110
|
GraphQL._mutation_class = None
|
|
111
|
+
GraphQL._subscription_class = None
|
|
114
112
|
GraphQL._mutations = {}
|
|
115
113
|
GraphQL._query_fields = {}
|
|
114
|
+
GraphQL._subscription_fields = {}
|
|
116
115
|
GraphQL.graphql_type_registry = {}
|
|
117
116
|
GraphQL.graphql_filter_type_registry = {}
|
|
117
|
+
GraphQL._subscription_payload_registry = {}
|
|
118
|
+
GraphQL._page_type_registry = {}
|
|
119
|
+
GraphQL.manager_registry = {}
|
|
120
|
+
GraphQL._schema = None
|
|
118
121
|
|
|
119
122
|
if fallback_app is not None:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
createFallbackGetApp(fallback_app),
|
|
123
|
+
handler = createFallbackGetApp(fallback_app)
|
|
124
|
+
global_apps.get_containing_app_config = cast( # type: ignore[assignment]
|
|
125
|
+
Callable[[str], AppConfig | None], handler
|
|
124
126
|
)
|
|
125
127
|
|
|
126
128
|
# 1) user-defined setUpClass (if any)
|
|
@@ -143,11 +145,14 @@ class GMTestCaseMeta(type):
|
|
|
143
145
|
):
|
|
144
146
|
continue
|
|
145
147
|
model_class = cast(
|
|
146
|
-
type[models.Model],
|
|
148
|
+
type[models.Model],
|
|
149
|
+
manager_class.Interface._model, # type: ignore
|
|
147
150
|
)
|
|
148
151
|
if model_class._meta.db_table not in existing:
|
|
149
152
|
editor.create_model(model_class)
|
|
150
|
-
|
|
153
|
+
history_model = getattr(model_class, "history", None)
|
|
154
|
+
if history_model:
|
|
155
|
+
editor.create_model(history_model.model) # type: ignore[attr-defined]
|
|
151
156
|
# 4) GM & GraphQL initialization
|
|
152
157
|
GeneralmanagerConfig.initializeGeneralManagerClasses(
|
|
153
158
|
cls.general_manager_classes, cls.general_manager_classes
|
|
@@ -194,22 +199,20 @@ class LoggingCache(LocMemCache):
|
|
|
194
199
|
self,
|
|
195
200
|
key: str,
|
|
196
201
|
value: object,
|
|
197
|
-
timeout:
|
|
202
|
+
timeout: float | None = None,
|
|
198
203
|
version: int | None = None,
|
|
199
204
|
) -> None:
|
|
200
205
|
"""
|
|
201
|
-
Store a value in the cache and
|
|
206
|
+
Store a value in the cache and record the set operation in the cache's operation log.
|
|
202
207
|
|
|
203
208
|
Parameters:
|
|
204
|
-
key (str): Cache key
|
|
205
|
-
value (
|
|
206
|
-
timeout (
|
|
209
|
+
key (str): Cache key under which to store the value.
|
|
210
|
+
value (object): Value to store.
|
|
211
|
+
timeout (float | None): Expiration time in seconds, or None for no explicit timeout.
|
|
207
212
|
version (int | None): Optional cache version identifier.
|
|
208
|
-
|
|
209
|
-
Returns:
|
|
210
|
-
None
|
|
211
213
|
"""
|
|
212
|
-
|
|
214
|
+
timeout = int(timeout) if timeout is not None else timeout
|
|
215
|
+
super().set(key, value, timeout=timeout, version=version)
|
|
213
216
|
self.ops.append(("set", key))
|
|
214
217
|
|
|
215
218
|
|
|
@@ -219,35 +222,37 @@ class LoggingCache(LocMemCache):
|
|
|
219
222
|
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
|
|
220
223
|
"LOCATION": "test-cache",
|
|
221
224
|
}
|
|
222
|
-
}
|
|
225
|
+
},
|
|
226
|
+
CHANNEL_LAYERS={
|
|
227
|
+
"default": {
|
|
228
|
+
"BACKEND": "channels.layers.InMemoryChannelLayer",
|
|
229
|
+
}
|
|
230
|
+
},
|
|
223
231
|
)
|
|
224
232
|
class GeneralManagerTransactionTestCase(
|
|
225
233
|
GraphQLTransactionTestCase, metaclass=GMTestCaseMeta
|
|
226
234
|
):
|
|
227
|
-
|
|
228
|
-
|
|
235
|
+
GRAPHQL_URL = "/graphql/"
|
|
236
|
+
general_manager_classes: ClassVar[list[type[GeneralManager]]] = []
|
|
237
|
+
read_only_classes: ClassVar[list[type[GeneralManager]]] = []
|
|
229
238
|
fallback_app: str | None = "general_manager"
|
|
230
239
|
|
|
231
240
|
def setUp(self) -> None:
|
|
232
241
|
"""
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
The method installs `LoggingCache` as the default cache and clears any previous operation history so tests can assert cache behaviour.
|
|
242
|
+
Install a logging cache backend and reset its operation log for the test.
|
|
236
243
|
|
|
237
|
-
|
|
238
|
-
None
|
|
244
|
+
Replaces Django's default cache connection with a LoggingCache instance and clears any prior cache operation records so tests start with a fresh cache operation log.
|
|
239
245
|
"""
|
|
240
246
|
super().setUp()
|
|
241
|
-
|
|
247
|
+
caches._connections.default = LoggingCache("test-cache", {}) # type: ignore[attr-defined]
|
|
242
248
|
self.__resetCacheCounter()
|
|
243
249
|
|
|
244
250
|
@classmethod
|
|
245
251
|
def tearDownClass(cls) -> None:
|
|
246
252
|
"""
|
|
247
|
-
|
|
253
|
+
Tear down test-class state by removing dynamically created models and restoring patched global state.
|
|
248
254
|
|
|
249
|
-
|
|
250
|
-
None
|
|
255
|
+
Performs these actions: removes the GraphQL URL pattern added during setup; drops database tables for any models created for the test (including associated history models); unregisters those models from Django's app registry and clears the app cache; removes the test's GeneralManager classes from metaclass registries; restores the original app-config lookup function; and finally calls the superclass teardown.
|
|
251
256
|
"""
|
|
252
257
|
# remove GraphQL URL pattern added during setUpClass
|
|
253
258
|
_default_graphql_url_clear()
|
|
@@ -299,7 +304,9 @@ class GeneralManagerTransactionTestCase(
|
|
|
299
304
|
]
|
|
300
305
|
|
|
301
306
|
# reset fallback app lookup
|
|
302
|
-
|
|
307
|
+
global_apps.get_containing_app_config = cast( # type: ignore[assignment]
|
|
308
|
+
Callable[[str], AppConfig | None], _original_get_app
|
|
309
|
+
)
|
|
303
310
|
|
|
304
311
|
super().tearDownClass()
|
|
305
312
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.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
|
|
@@ -24,6 +24,7 @@ License: MIT License
|
|
|
24
24
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
25
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
26
|
SOFTWARE.
|
|
27
|
+
|
|
27
28
|
Project-URL: Homepage, https://github.com/TimKleindick/general_manager
|
|
28
29
|
Project-URL: Documentation, https://timkleindick.github.io/general_manager/
|
|
29
30
|
Project-URL: Repository, https://github.com/TimKleindick/general_manager
|
|
@@ -43,6 +44,7 @@ Requires-Python: >=3.12
|
|
|
43
44
|
Description-Content-Type: text/markdown
|
|
44
45
|
License-File: LICENSE
|
|
45
46
|
Requires-Dist: asgiref>=3.8.1
|
|
47
|
+
Requires-Dist: channels>=4.1.0
|
|
46
48
|
Requires-Dist: Django>=5.2.7
|
|
47
49
|
Requires-Dist: django-simple-history>=3.8.0
|
|
48
50
|
Requires-Dist: exrex>=0.12.0
|
|
@@ -0,0 +1,77 @@
|
|
|
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=kgUvJHcC8tilqf1JH2QvyG-158AT_rmuKf6pgUy1IBs,3406
|
|
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.18.0.dist-info/licenses/LICENSE,sha256=OcRwUgM4iiESN1oNELgyuwuah39XX-EPZiPDDHndNVI,1070
|
|
74
|
+
generalmanager-0.18.0.dist-info/METADATA,sha256=qOOxDFIO9f2lsbOClPId9ilSGOKwanGAVUhMXOS1NJQ,8215
|
|
75
|
+
generalmanager-0.18.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
76
|
+
generalmanager-0.18.0.dist-info/top_level.txt,sha256=sTDtExP9ga-YP3h3h42yivUY-A2Q23C2nw6LNKOho4I,16
|
|
77
|
+
generalmanager-0.18.0.dist-info/RECORD,,
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
general_manager/__init__.py,sha256=OmRYpjg3N9w0yX1eAq32WdLtcf8I55M3sqhO-Qrawjo,742
|
|
2
|
-
general_manager/apps.py,sha256=On2nTp2-QwNcOpYfIzjNE0Xnum4BMk_5YHbEloBIM-U,10351
|
|
3
|
-
general_manager/public_api_registry.py,sha256=xKfgbyvXB_oZZku9ksLNzOGQbmL5QfWuRGE2qH2FOtc,7338
|
|
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=EnEUKCr24Ac2klzZJvx17dJNxDRyfI9zEx9I0vCfpio,489
|
|
7
|
-
general_manager/_types/bucket.py,sha256=-kK46YX7mGwv3OVEjZTnmMqR9qpq8fT09Ez-wMF80nc,432
|
|
8
|
-
general_manager/_types/cache.py,sha256=KfHr6Pdg9WpWKs5iyNLA4vq9S9GRMGwDCjLe7zgIMRw,655
|
|
9
|
-
general_manager/_types/factory.py,sha256=2QZTc9jDbH55Jj-DuuuiWEdgqAFmlCqchsKB0EAwD5E,1653
|
|
10
|
-
general_manager/_types/general_manager.py,sha256=mImHmBX39Al2q9Uqkmzrrvcdk3b-DzfEbyaTxc_Qiyw,952
|
|
11
|
-
general_manager/_types/interface.py,sha256=mjrifUJyixgkjCVjcJokEs-pzxlssEJSXu7DsTK5Nzc,599
|
|
12
|
-
general_manager/_types/manager.py,sha256=hjmV5gtWDhy_XAaZ6jIRVLCWVwps90tL8SqnC2oS8OQ,501
|
|
13
|
-
general_manager/_types/measurement.py,sha256=5ZAsmjULrSe6Zh4-NyV1CXCAYJ75qqO_YWWQeeTao-Y,443
|
|
14
|
-
general_manager/_types/permission.py,sha256=BG-RMsGgVCRVHyJgns9a1VTcwtqS9WzbG2HOrXaBNaI,413
|
|
15
|
-
general_manager/_types/rule.py,sha256=Ju5t7NhGO76KnqwOElXk2cMI6cIYyMW5sEPayXExJPM,239
|
|
16
|
-
general_manager/_types/utils.py,sha256=jze1yRZQw_OKVOmJNMv4MEu92rP01CVtjLBCEMqxCqk,1026
|
|
17
|
-
general_manager/api/__init__.py,sha256=6Usf6aEc5RalaOE4xzqqSp7KChxi9W4Nts4nFIFHtt4,677
|
|
18
|
-
general_manager/api/graphql.py,sha256=4pox3eRXWtZG9VshSgCJVrJ_9ONUUuzWhmXwetV5EgI,42798
|
|
19
|
-
general_manager/api/mutation.py,sha256=6T-UHElnTxWubG99-Svy7AeFlHuXaKc8nKvRPADmI0E,7347
|
|
20
|
-
general_manager/api/property.py,sha256=tT-eAKcuPhy0q_v0fKL4gPXcCVASC5M15_DYWMCQXjc,4358
|
|
21
|
-
general_manager/bucket/__init__.py,sha256=Ay3kVmdxWC8nt3jYx3FFnND89ysD_z0GaD5rIr-v7Ec,690
|
|
22
|
-
general_manager/bucket/baseBucket.py,sha256=wSQijZrs1joA-8IGh2AwD4KARSgYqSL4AxXq3KwOz6A,8126
|
|
23
|
-
general_manager/bucket/calculationBucket.py,sha256=nH2VATcS3z07LGpKiWUEf3CiYnPjNeJPYhYo6ZSBNqk,25996
|
|
24
|
-
general_manager/bucket/databaseBucket.py,sha256=5k0Q7iDJUgnOqQMg2SG35nM16C7_E5TzNMGJc0BVzXM,17127
|
|
25
|
-
general_manager/bucket/groupBucket.py,sha256=-cN9jA_AOsnrpwmjiy6jTB_TFoUqLMeM1SdJ6DlSXag,12103
|
|
26
|
-
general_manager/cache/__init__.py,sha256=_jwrpqGzlwaL1moqG1B9XL9V-QW08VVdtDbkVDfN_sU,698
|
|
27
|
-
general_manager/cache/cacheDecorator.py,sha256=kgUvJHcC8tilqf1JH2QvyG-158AT_rmuKf6pgUy1IBs,3406
|
|
28
|
-
general_manager/cache/cacheTracker.py,sha256=rb637hGHOe79sehpTZLhfO979qrYLw3ATufo7kr_VvM,2991
|
|
29
|
-
general_manager/cache/dependencyIndex.py,sha256=gaSbEpw9qdIMgf_5jRryuTAvq9x3hwMxP2bi5S4xj84,13206
|
|
30
|
-
general_manager/cache/modelDependencyCollector.py,sha256=iFiuuQKO3-sEcUxbpA1svxL2TMkr8F6afAtRXK5fUBk,2645
|
|
31
|
-
general_manager/cache/signals.py,sha256=pKibv1EL7fYL4KB7O13TpqVTKZLnqo6A620vKlXaNkg,2015
|
|
32
|
-
general_manager/factory/__init__.py,sha256=t9RLlp_ZPU_0Xu5I7hg-xwo3yy1eSwnvfXMYvpGCFtE,714
|
|
33
|
-
general_manager/factory/autoFactory.py,sha256=j5jy5FASG8xhToE1yCwQ8c53XLsKBtPLFYPWS17K9Fk,8441
|
|
34
|
-
general_manager/factory/factories.py,sha256=7rmO7tIBDiBpRoXUbPleNHYuXs0owAMGcoOsFTKr3KA,8475
|
|
35
|
-
general_manager/factory/factoryMethods.py,sha256=gFHctepxvdNJKASuNvj5RrDCheIpBYQHh3D0n7OeIsM,5018
|
|
36
|
-
general_manager/interface/__init__.py,sha256=kLcHRvDb9_lxNgNEp4GXZ3qCZc5tHwruEt1tz3nDgtA,726
|
|
37
|
-
general_manager/interface/baseInterface.py,sha256=Gg1r1rzgn2AM2IC4lDUg2Q5m8AwlX-c_9RVKgALeGa4,10797
|
|
38
|
-
general_manager/interface/calculationInterface.py,sha256=5xr4pnn3XNYXlEBgsI9YbSjCXBGeVA11x7pgicPqgW8,5079
|
|
39
|
-
general_manager/interface/databaseBasedInterface.py,sha256=lRAmjaTUHKk250S4F2WKe--52xvYiip3pfIrG1mfB-g,24096
|
|
40
|
-
general_manager/interface/databaseInterface.py,sha256=vDj2mgWnIrsvcu1_HBq018303WndhqUL0o2qnNsQ6hM,8356
|
|
41
|
-
general_manager/interface/models.py,sha256=rtuhOKeSgD2DboeZIMAQU99JyCOT7SuiuGqWvDjAQqk,3576
|
|
42
|
-
general_manager/interface/readOnlyInterface.py,sha256=UcaCClVJv8IT-EBm__IN4jU6td_sXRRCN_Y_OKngs_4,11392
|
|
43
|
-
general_manager/manager/__init__.py,sha256=UwvLs13_UpYsq5igSY78cbyg11C6iTrHlr-rtDql43I,703
|
|
44
|
-
general_manager/manager/generalManager.py,sha256=A6kYjM2duxT0AAeN0er87gRWjLmcPmEjPmNHTQgACgs,9577
|
|
45
|
-
general_manager/manager/groupManager.py,sha256=3Wl40cBRc1hL35zBCQDi8V2AIERh_dtbUeL1h1ZCnak,6428
|
|
46
|
-
general_manager/manager/input.py,sha256=UoVU0FDXHDEmuOk7mppx63DuwbPK2_qolcILar2Kk6U,3031
|
|
47
|
-
general_manager/manager/meta.py,sha256=iGYwuVrM0SWyvzVPLTS0typ8VT38QoxFuWhA1b1FBnA,5032
|
|
48
|
-
general_manager/measurement/__init__.py,sha256=Tt2Es7J-dGWcd8bFK4PR2m4AKBlRoj2WGXcKy64fOTY,711
|
|
49
|
-
general_manager/measurement/measurement.py,sha256=FOtnOASNV6qhYsIsN-VX9JuGWwvpmJqusMgYxkEHhqE,16876
|
|
50
|
-
general_manager/measurement/measurementField.py,sha256=4W12etl4OukuQOf2K016KZ9K7LtzgEE1FEIW2jySzRM,13227
|
|
51
|
-
general_manager/permission/__init__.py,sha256=myUSLuG30I4OQa7CvKFuloKAAEJCir6ew27Tlc6653Q,730
|
|
52
|
-
general_manager/permission/basePermission.py,sha256=Gv-6HkX_MXqm1RZxKvK_J-9cuSOEOYn5yYWAzL8PjlA,6728
|
|
53
|
-
general_manager/permission/fileBasedPermission.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
-
general_manager/permission/managerBasedPermission.py,sha256=KgTUl7_oDjCuQlPrgTkjoduA9w04TWAK1jWZ1T0PiwE,7795
|
|
55
|
-
general_manager/permission/mutationPermission.py,sha256=QuGpdX8lyM-_xxclYXXwDVxJ_WSEKvwLIJaFdtcmvSE,4197
|
|
56
|
-
general_manager/permission/permissionChecks.py,sha256=l09zokWPwZKUTlJOxtE5r_ZdPDDIDxGoAbydL4wHmII,2253
|
|
57
|
-
general_manager/permission/permissionDataManager.py,sha256=Jf5JiqKH4CdnxeNGqfB3NnkjL5qzERaYvj7qprw_05c,3190
|
|
58
|
-
general_manager/permission/utils.py,sha256=gnKSSiet5U5Zm9o7E5-QdN29tX_VX6sv82K5evGVzPk,1629
|
|
59
|
-
general_manager/rule/__init__.py,sha256=BHTtPyZ6sCXBeJgToL5VGoxsGCdwEi5R5qcT4xMYL_k,690
|
|
60
|
-
general_manager/rule/handler.py,sha256=h85-Oazhc4gpWNl8ieR4pDEtu8a8lTeJcbiEj11C4Nw,11349
|
|
61
|
-
general_manager/rule/rule.py,sha256=uo1XT_5lN11t5AmFg5v5AsIC1-JkmqannQvAPHmyQXY,11303
|
|
62
|
-
general_manager/utils/__init__.py,sha256=BADJHiMBYpT1MKtnls3P0V6sdmd2UX8VgEAlQu_KliI,700
|
|
63
|
-
general_manager/utils/argsToKwargs.py,sha256=XYIEgPBeIvJoNWeqmO6djRrqo3IcnPcoSUbfWrUByI0,1294
|
|
64
|
-
general_manager/utils/filterParser.py,sha256=6GzcpCzMRkmJkNs6SttJqS4DQHa_-nYheyhSWDrhIrg,5100
|
|
65
|
-
general_manager/utils/formatString.py,sha256=McmsBaB1DnA4YVKswXn5rqNRPHUEiX6dID69YBzfoh0,1511
|
|
66
|
-
general_manager/utils/jsonEncoder.py,sha256=Jw7iA50GEOjxk_AiebXJ9PNl_KijnvEOLG7oISZ07KE,1048
|
|
67
|
-
general_manager/utils/makeCacheKey.py,sha256=T9YTHDW8VN50iW_Yzklm9Xw-mp1Q7PKMphQ8lLKkqdA,1252
|
|
68
|
-
general_manager/utils/noneToZero.py,sha256=e3zk8Ofh3AsYW8spYmZWiv7FjOsr0jvfB9AOQbaPMWY,665
|
|
69
|
-
general_manager/utils/pathMapping.py,sha256=3BWRUM1EimUKeh8i_UK6nYsKtOJDykgmZgCA9dgYjqU,9531
|
|
70
|
-
general_manager/utils/public_api.py,sha256=SNTI_tRMcbv0qMttm-wMBoAEkqSEFMTI6ZHMajOnDlg,1437
|
|
71
|
-
general_manager/utils/testing.py,sha256=BCquJ5RNiLbRFdcrgYP227TxSRfQKgpkvmWvsJqJAjk,13276
|
|
72
|
-
generalmanager-0.16.1.dist-info/licenses/LICENSE,sha256=OezwCA4X2-xXmRDvMaqHvHCeUmGtyCYjZ8F3XUxSGwc,1069
|
|
73
|
-
generalmanager-0.16.1.dist-info/METADATA,sha256=YHfoHcCYb9AdJH0_XkWeVXHmfmW6vzZ5AnBaral6Jrk,8175
|
|
74
|
-
generalmanager-0.16.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
75
|
-
generalmanager-0.16.1.dist-info/top_level.txt,sha256=sTDtExP9ga-YP3h3h42yivUY-A2Q23C2nw6LNKOho4I,16
|
|
76
|
-
generalmanager-0.16.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|