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.

Files changed (64) hide show
  1. general_manager/_types/api.py +4 -4
  2. general_manager/_types/bucket.py +4 -4
  3. general_manager/_types/cache.py +6 -6
  4. general_manager/_types/factory.py +35 -35
  5. general_manager/_types/general_manager.py +11 -9
  6. general_manager/_types/interface.py +5 -5
  7. general_manager/_types/manager.py +4 -4
  8. general_manager/_types/measurement.py +1 -1
  9. general_manager/_types/permission.py +3 -3
  10. general_manager/_types/utils.py +12 -12
  11. general_manager/api/graphql.py +207 -98
  12. general_manager/api/mutation.py +9 -9
  13. general_manager/api/property.py +4 -4
  14. general_manager/apps.py +120 -65
  15. general_manager/bucket/{baseBucket.py → base_bucket.py} +5 -5
  16. general_manager/bucket/{calculationBucket.py → calculation_bucket.py} +10 -10
  17. general_manager/bucket/{databaseBucket.py → database_bucket.py} +16 -19
  18. general_manager/bucket/{groupBucket.py → group_bucket.py} +8 -8
  19. general_manager/cache/{cacheDecorator.py → cache_decorator.py} +27 -6
  20. general_manager/cache/{cacheTracker.py → cache_tracker.py} +1 -1
  21. general_manager/cache/{dependencyIndex.py → dependency_index.py} +24 -8
  22. general_manager/cache/{modelDependencyCollector.py → model_dependency_collector.py} +4 -4
  23. general_manager/cache/signals.py +1 -1
  24. general_manager/factory/{autoFactory.py → auto_factory.py} +24 -19
  25. general_manager/factory/factories.py +10 -13
  26. general_manager/factory/{factoryMethods.py → factory_methods.py} +19 -17
  27. general_manager/interface/{baseInterface.py → base_interface.py} +30 -22
  28. general_manager/interface/{calculationInterface.py → calculation_interface.py} +10 -10
  29. general_manager/interface/{databaseBasedInterface.py → database_based_interface.py} +42 -42
  30. general_manager/interface/{databaseInterface.py → database_interface.py} +21 -21
  31. general_manager/interface/models.py +3 -3
  32. general_manager/interface/{readOnlyInterface.py → read_only_interface.py} +34 -25
  33. general_manager/logging.py +133 -0
  34. general_manager/manager/{generalManager.py → general_manager.py} +75 -17
  35. general_manager/manager/{groupManager.py → group_manager.py} +6 -6
  36. general_manager/manager/input.py +1 -1
  37. general_manager/manager/meta.py +63 -17
  38. general_manager/measurement/measurement.py +3 -3
  39. general_manager/permission/{basePermission.py → base_permission.py} +55 -32
  40. general_manager/permission/{managerBasedPermission.py → manager_based_permission.py} +21 -21
  41. general_manager/permission/{mutationPermission.py → mutation_permission.py} +12 -12
  42. general_manager/permission/{permissionChecks.py → permission_checks.py} +2 -2
  43. general_manager/permission/{permissionDataManager.py → permission_data_manager.py} +6 -6
  44. general_manager/permission/utils.py +6 -6
  45. general_manager/public_api_registry.py +76 -66
  46. general_manager/rule/handler.py +2 -2
  47. general_manager/rule/rule.py +102 -11
  48. general_manager/utils/{filterParser.py → filter_parser.py} +3 -3
  49. general_manager/utils/{jsonEncoder.py → json_encoder.py} +1 -1
  50. general_manager/utils/{makeCacheKey.py → make_cache_key.py} +1 -1
  51. general_manager/utils/{noneToZero.py → none_to_zero.py} +1 -1
  52. general_manager/utils/{pathMapping.py → path_mapping.py} +14 -14
  53. general_manager/utils/public_api.py +19 -0
  54. general_manager/utils/testing.py +14 -14
  55. {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/METADATA +1 -1
  56. generalmanager-0.20.0.dist-info/RECORD +78 -0
  57. generalmanager-0.19.1.dist-info/RECORD +0 -77
  58. /general_manager/measurement/{measurementField.py → measurement_field.py} +0 -0
  59. /general_manager/permission/{fileBasedPermission.py → file_based_permission.py} +0 -0
  60. /general_manager/utils/{argsToKwargs.py → args_to_kwargs.py} +0 -0
  61. /general_manager/utils/{formatString.py → format_string.py} +0 -0
  62. {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/WHEEL +0 -0
  63. {generalmanager-0.19.1.dist-info → generalmanager-0.20.0.dist-info}/licenses/LICENSE +0 -0
  64. {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.baseBucket import Bucket
9
- from general_manager.manager.generalManager import GeneralManager
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 goTo on a PathMap without a start instance."
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 goTo on a PathMap without a start instance.")
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.createPathMapping()
43
+ cls.create_path_mapping()
44
44
  return cls.instance
45
45
 
46
46
  @classmethod
47
- def createPathMapping(cls) -> None:
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 goTo(
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.traversePath(self.start_instance)
136
+ return tracer.traverse_path(self.start_instance)
137
137
 
138
- def getAllConnected(self) -> set[str]:
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.createPath(start_class, [])
176
+ self.path = self.create_path(start_class, [])
177
177
 
178
- def createPath(
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.getAttributeTypes().items()
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.createPath(attr_type, [*path, attr])
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 traversePath(
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
 
@@ -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.cacheDecorator import _SENTINEL
19
- from general_manager.manager.generalManager import GeneralManager
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 createFallbackGetApp(fallback_app: str) -> Callable[[str], AppConfig | None]:
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], Any]: Function returning either the resolved configuration or the fallback app configuration when available.
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 = createFallbackGetApp(fallback_app)
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.initializeGeneralManagerClasses(
157
+ GeneralmanagerConfig.initialize_general_manager_classes(
158
158
  cls.general_manager_classes, cls.general_manager_classes
159
159
  )
160
- GeneralmanagerConfig.handleReadOnlyInterface(cls.read_only_classes)
161
- GeneralmanagerConfig.handleGraphQL(cls.general_manager_classes)
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.__resetCacheCounter()
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 assertCacheMiss(self) -> None:
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.__resetCacheCounter()
331
+ self.__reset_cache_counter()
332
332
 
333
- def assertCacheHit(self) -> None:
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.__resetCacheCounter()
355
+ self.__reset_cache_counter()
356
356
 
357
- def __resetCacheCounter(self) -> None:
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.19.1
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,,