GeneralManager 0.16.1__tar.gz → 0.18.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of GeneralManager might be problematic. Click here for more details.

Files changed (98) hide show
  1. {generalmanager-0.16.1 → generalmanager-0.18.0}/LICENSE +1 -1
  2. {generalmanager-0.16.1/src/GeneralManager.egg-info → generalmanager-0.18.0}/PKG-INFO +3 -1
  3. {generalmanager-0.16.1 → generalmanager-0.18.0}/pyproject.toml +86 -1
  4. {generalmanager-0.16.1 → generalmanager-0.18.0/src/GeneralManager.egg-info}/PKG-INFO +3 -1
  5. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/GeneralManager.egg-info/SOURCES.txt +3 -1
  6. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/GeneralManager.egg-info/requires.txt +1 -0
  7. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/__init__.py +11 -1
  8. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/api.py +0 -1
  9. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/bucket.py +0 -1
  10. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/cache.py +0 -1
  11. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/factory.py +0 -1
  12. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/general_manager.py +0 -1
  13. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/interface.py +0 -1
  14. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/manager.py +0 -1
  15. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/measurement.py +0 -1
  16. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/permission.py +0 -1
  17. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/rule.py +0 -1
  18. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/utils.py +0 -1
  19. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/api/__init__.py +13 -1
  20. generalmanager-0.18.0/src/general_manager/api/graphql.py +1856 -0
  21. generalmanager-0.18.0/src/general_manager/api/graphql_subscription_consumer.py +432 -0
  22. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/api/mutation.py +85 -23
  23. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/api/property.py +39 -13
  24. generalmanager-0.18.0/src/general_manager/apps.py +527 -0
  25. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/bucket/__init__.py +10 -1
  26. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/bucket/calculationBucket.py +155 -53
  27. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/bucket/databaseBucket.py +157 -45
  28. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/bucket/groupBucket.py +133 -44
  29. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/cache/__init__.py +10 -1
  30. generalmanager-0.18.0/src/general_manager/cache/dependencyIndex.py +640 -0
  31. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/cache/signals.py +9 -2
  32. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/factory/__init__.py +10 -1
  33. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/factory/autoFactory.py +55 -13
  34. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/factory/factories.py +110 -40
  35. generalmanager-0.18.0/src/general_manager/factory/factoryMethods.py +234 -0
  36. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/__init__.py +10 -1
  37. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/baseInterface.py +129 -36
  38. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/calculationInterface.py +35 -18
  39. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/databaseBasedInterface.py +71 -45
  40. generalmanager-0.18.0/src/general_manager/interface/databaseInterface.py +279 -0
  41. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/models.py +5 -5
  42. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/interface/readOnlyInterface.py +94 -20
  43. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/manager/__init__.py +10 -1
  44. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/manager/generalManager.py +25 -16
  45. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/manager/groupManager.py +21 -7
  46. generalmanager-0.18.0/src/general_manager/manager/meta.py +195 -0
  47. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/measurement/__init__.py +10 -1
  48. generalmanager-0.18.0/src/general_manager/measurement/measurement.py +640 -0
  49. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/measurement/measurementField.py +42 -31
  50. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/__init__.py +10 -1
  51. generalmanager-0.18.0/src/general_manager/permission/basePermission.py +261 -0
  52. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/managerBasedPermission.py +72 -21
  53. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/mutationPermission.py +14 -9
  54. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/permissionChecks.py +14 -12
  55. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/permissionDataManager.py +24 -11
  56. generalmanager-0.18.0/src/general_manager/permission/utils.py +74 -0
  57. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/public_api_registry.py +36 -10
  58. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/rule/__init__.py +10 -1
  59. generalmanager-0.18.0/src/general_manager/rule/handler.py +408 -0
  60. generalmanager-0.18.0/src/general_manager/rule/rule.py +467 -0
  61. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/__init__.py +10 -1
  62. generalmanager-0.18.0/src/general_manager/utils/argsToKwargs.py +58 -0
  63. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/filterParser.py +22 -7
  64. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/formatString.py +1 -0
  65. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/pathMapping.py +23 -15
  66. generalmanager-0.18.0/src/general_manager/utils/public_api.py +80 -0
  67. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/testing.py +49 -42
  68. {generalmanager-0.16.1 → generalmanager-0.18.0}/tests/test_settings.py +8 -1
  69. generalmanager-0.18.0/tests/testing_asgi.py +22 -0
  70. generalmanager-0.16.1/src/general_manager/api/graphql.py +0 -1106
  71. generalmanager-0.16.1/src/general_manager/apps.py +0 -231
  72. generalmanager-0.16.1/src/general_manager/cache/dependencyIndex.py +0 -390
  73. generalmanager-0.16.1/src/general_manager/factory/factoryMethods.py +0 -146
  74. generalmanager-0.16.1/src/general_manager/interface/databaseInterface.py +0 -221
  75. generalmanager-0.16.1/src/general_manager/manager/meta.py +0 -127
  76. generalmanager-0.16.1/src/general_manager/measurement/measurement.py +0 -446
  77. generalmanager-0.16.1/src/general_manager/permission/basePermission.py +0 -179
  78. generalmanager-0.16.1/src/general_manager/permission/utils.py +0 -46
  79. generalmanager-0.16.1/src/general_manager/rule/handler.py +0 -319
  80. generalmanager-0.16.1/src/general_manager/rule/rule.py +0 -328
  81. generalmanager-0.16.1/src/general_manager/utils/argsToKwargs.py +0 -33
  82. generalmanager-0.16.1/src/general_manager/utils/public_api.py +0 -49
  83. {generalmanager-0.16.1 → generalmanager-0.18.0}/README.md +0 -0
  84. {generalmanager-0.16.1 → generalmanager-0.18.0}/setup.cfg +0 -0
  85. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  86. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/GeneralManager.egg-info/top_level.txt +0 -0
  87. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/_types/__init__.py +0 -0
  88. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/bucket/baseBucket.py +0 -0
  89. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/cache/cacheDecorator.py +0 -0
  90. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/cache/cacheTracker.py +0 -0
  91. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/cache/modelDependencyCollector.py +0 -0
  92. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/manager/input.py +0 -0
  93. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/permission/fileBasedPermission.py +0 -0
  94. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/py.typed +0 -0
  95. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/jsonEncoder.py +0 -0
  96. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/makeCacheKey.py +0 -0
  97. {generalmanager-0.16.1 → generalmanager-0.18.0}/src/general_manager/utils/noneToZero.py +0 -0
  98. {generalmanager-0.16.1 → generalmanager-0.18.0}/tests/test_urls.py +0 -0
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.16.1
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "GeneralManager"
7
- version = "0.16.1"
7
+ version = "0.18.0"
8
8
  description = "Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching."
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Tim Kleindick", email = "tkleindick@yahoo.de" }]
@@ -32,6 +32,7 @@ classifiers = [
32
32
  ]
33
33
  dependencies = [
34
34
  "asgiref>=3.8.1",
35
+ "channels>=4.1.0",
35
36
  "Django>=5.2.7",
36
37
  "django-simple-history>=3.8.0",
37
38
  "exrex>=0.12.0",
@@ -85,3 +86,87 @@ upload_to_release = true
85
86
 
86
87
  [tool.semantic_release.remote]
87
88
  ignore_token_for_push = true
89
+
90
+ [tool.ruff]
91
+
92
+ target-version = "py312"
93
+ line-length = 88
94
+ src = ["src", "tests"]
95
+ extend-exclude = ["example_project"]
96
+
97
+ [tool.ruff.lint]
98
+ select = [
99
+ "F", # Pyflakes
100
+ "B", # flake8-bugbear
101
+ "S", # flake8-bandit (Security)
102
+ "BLE", # blind except
103
+ "T10", # debugger
104
+ "EXE", # executable
105
+ "ARG", # unused arguments
106
+ "TRY", # tryceratops
107
+ "RUF", # Ruff-own rules
108
+ "E7", # pycodestyle: Syntax
109
+ "E9", # pycodestyle: Runtime
110
+ ]
111
+
112
+ ignore = [
113
+ "F401",
114
+ "I001",
115
+ "Q000",
116
+ "UP006",
117
+ "E501",
118
+ "S101",
119
+ "ARG001",
120
+ "ARG002",
121
+ "ARG003",
122
+ "ARG004",
123
+ ]
124
+
125
+ [tool.ruff.lint.per-file-ignores]
126
+ "**/__init__.py" = ["E402"]
127
+ "**/conftest.py" = ["E402"]
128
+ "example_project/manage.py" = ["TRY003"]
129
+ "example_project/**/migrations/*.py" = ["RUF012"]
130
+
131
+ [tool.ruff.format]
132
+ quote-style = "double"
133
+ indent-style = "space"
134
+ line-ending = "lf"
135
+ skip-magic-trailing-comma = false
136
+ docstring-code-format = true
137
+
138
+ [tool.mypy]
139
+ python_version = "3.12"
140
+ explicit_package_bases = true
141
+ namespace_packages = true
142
+ mypy_path = ["src"]
143
+ files = ["src"]
144
+ exclude = ["^build/", "^dist/", "^docs/", "^example_project/", "^site/"]
145
+
146
+ [[tool.mypy.overrides]]
147
+ module = [
148
+ "channels",
149
+ "channels.*",
150
+ "channels.layers",
151
+ "channels.auth",
152
+ "channels.routing",
153
+ "django",
154
+ "django.*",
155
+ "django_simple_history",
156
+ "simple_history",
157
+ "simple_history.*",
158
+ "exrex",
159
+ "factory",
160
+ "factory.*",
161
+ "faker",
162
+ "faker.*",
163
+ "graphene",
164
+ "graphene.*",
165
+ "graphql",
166
+ "graphql.*",
167
+ "numpy",
168
+ "pint",
169
+ "pint.*",
170
+ "promise",
171
+ ]
172
+ ignore_missing_imports = true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.16.1
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
@@ -24,6 +24,7 @@ src/general_manager/_types/rule.py
24
24
  src/general_manager/_types/utils.py
25
25
  src/general_manager/api/__init__.py
26
26
  src/general_manager/api/graphql.py
27
+ src/general_manager/api/graphql_subscription_consumer.py
27
28
  src/general_manager/api/mutation.py
28
29
  src/general_manager/api/property.py
29
30
  src/general_manager/bucket/__init__.py
@@ -78,4 +79,5 @@ src/general_manager/utils/pathMapping.py
78
79
  src/general_manager/utils/public_api.py
79
80
  src/general_manager/utils/testing.py
80
81
  tests/test_settings.py
81
- tests/test_urls.py
82
+ tests/test_urls.py
83
+ tests/testing_asgi.py
@@ -1,4 +1,5 @@
1
1
  asgiref>=3.8.1
2
+ channels>=4.1.0
2
3
  Django>=5.2.7
3
4
  django-simple-history>=3.8.0
4
5
  exrex>=0.12.0
@@ -12,9 +12,19 @@ __all__ = list(GENERAL_MANAGER_EXPORTS)
12
12
  _MODULE_MAP = GENERAL_MANAGER_EXPORTS
13
13
 
14
14
  if TYPE_CHECKING:
15
- from general_manager._types.general_manager import * # noqa: F401,F403
15
+ from general_manager._types.general_manager import * # noqa: F403
16
+
16
17
 
17
18
  def __getattr__(name: str) -> Any:
19
+ """
20
+ Dynamically resolve and return a requested export when a module attribute is accessed but not defined.
21
+
22
+ Parameters:
23
+ name (str): The attribute name being accessed on the module.
24
+
25
+ Returns:
26
+ Any: The resolved export object or value corresponding to `name`.
27
+ """
18
28
  return resolve_export(
19
29
  name,
20
30
  module_all=__all__,
@@ -15,4 +15,3 @@ from general_manager.api.graphql import MeasurementScalar
15
15
  from general_manager.api.graphql import MeasurementType
16
16
  from general_manager.api.mutation import graphQlMutation
17
17
  from general_manager.api.property import graphQlProperty
18
-
@@ -13,4 +13,3 @@ from general_manager.bucket.baseBucket import Bucket
13
13
  from general_manager.bucket.calculationBucket import CalculationBucket
14
14
  from general_manager.bucket.databaseBucket import DatabaseBucket
15
15
  from general_manager.bucket.groupBucket import GroupBucket
16
-
@@ -17,4 +17,3 @@ from general_manager.cache.cacheDecorator import cached
17
17
  from general_manager.cache.dependencyIndex import invalidate_cache_key
18
18
  from general_manager.cache.dependencyIndex import record_dependencies
19
19
  from general_manager.cache.dependencyIndex import remove_cache_key_from_index
20
-
@@ -41,4 +41,3 @@ from general_manager.factory.factoryMethods import LazyMeasurement
41
41
  from general_manager.factory.factoryMethods import LazyProjectName
42
42
  from general_manager.factory.factoryMethods import LazySequence
43
43
  from general_manager.factory.factoryMethods import LazyUUID
44
-
@@ -25,4 +25,3 @@ from general_manager.interface.readOnlyInterface import ReadOnlyInterface
25
25
  from general_manager.rule.rule import Rule
26
26
  from general_manager.api.mutation import graphQlMutation
27
27
  from general_manager.api.property import graphQlProperty
28
-
@@ -15,4 +15,3 @@ from general_manager.interface.databaseBasedInterface import DBBasedInterface
15
15
  from general_manager.interface.databaseInterface import DatabaseInterface
16
16
  from general_manager.interface.baseInterface import InterfaceBase
17
17
  from general_manager.interface.readOnlyInterface import ReadOnlyInterface
18
-
@@ -15,4 +15,3 @@ from general_manager.manager.meta import GeneralManagerMeta
15
15
  from general_manager.manager.groupManager import GroupManager
16
16
  from general_manager.manager.input import Input
17
17
  from general_manager.api.property import graphQlProperty
18
-
@@ -13,4 +13,3 @@ from general_manager.measurement.measurement import Measurement
13
13
  from general_manager.measurement.measurementField import MeasurementField
14
14
  from general_manager.measurement.measurement import currency_units
15
15
  from general_manager.measurement.measurement import ureg
16
-
@@ -11,4 +11,3 @@ __all__ = [
11
11
  from general_manager.permission.basePermission import BasePermission
12
12
  from general_manager.permission.managerBasedPermission import ManagerBasedPermission
13
13
  from general_manager.permission.mutationPermission import MutationPermission
14
-
@@ -9,4 +9,3 @@ __all__ = [
9
9
 
10
10
  from general_manager.rule.handler import BaseRuleHandler
11
11
  from general_manager.rule.rule import Rule
12
-
@@ -27,4 +27,3 @@ from general_manager.utils.filterParser import parse_filters
27
27
  from general_manager.utils.formatString import pascal_to_snake
28
28
  from general_manager.utils.formatString import snake_to_camel
29
29
  from general_manager.utils.formatString import snake_to_pascal
30
-
@@ -12,10 +12,22 @@ __all__ = list(API_EXPORTS)
12
12
  _MODULE_MAP = API_EXPORTS
13
13
 
14
14
  if TYPE_CHECKING:
15
- from general_manager._types.api import * # noqa: F401,F403
15
+ from general_manager._types.api import * # noqa: F403
16
16
 
17
17
 
18
18
  def __getattr__(name: str) -> Any:
19
+ """
20
+ Dynamically resolve and return a named export from this module.
21
+
22
+ Parameters:
23
+ name (str): The attribute name to resolve from the module's public API.
24
+
25
+ Returns:
26
+ The resolved exported object corresponding to `name`.
27
+
28
+ Raises:
29
+ AttributeError: If `name` is not a registered export for this module.
30
+ """
19
31
  return resolve_export(
20
32
  name,
21
33
  module_all=__all__,