autonomous-app 0.2.10__tar.gz → 0.2.12__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.
Files changed (43) hide show
  1. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/PKG-INFO +1 -1
  2. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/__init__.py +1 -1
  3. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/model/automodel.py +26 -11
  4. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/model/serializer.py +3 -0
  5. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous_app.egg-info/PKG-INFO +1 -1
  6. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/LICENSE +0 -0
  7. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/README.md +0 -0
  8. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/pyproject.toml +0 -0
  9. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/requirements.txt +0 -0
  10. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/setup.cfg +0 -0
  11. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/setup.py +0 -0
  12. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/ai/__init__.py +0 -0
  13. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/ai/oaiagent.py +0 -0
  14. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/auth/__init__.py +0 -0
  15. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/auth/autoauth.py +0 -0
  16. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/auth/github.py +0 -0
  17. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/auth/google.py +0 -0
  18. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/auth/user.py +0 -0
  19. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/cli.py +0 -0
  20. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/db/__init__.py +0 -0
  21. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/db/autodb.py +0 -0
  22. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/db/table.py +0 -0
  23. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/errors/__init__.py +0 -0
  24. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/errors/danglingreferenceerror.py +0 -0
  25. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/logger.py +0 -0
  26. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/model/__init__.py +0 -0
  27. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/model/autoattribute.py +0 -0
  28. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/model/orm.py +0 -0
  29. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/__init__.py +0 -0
  30. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/imagestorage.py +0 -0
  31. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/localstorage.py +0 -0
  32. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/markdown.py +0 -0
  33. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/version_control/GHCallbacks.py +0 -0
  34. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/version_control/GHOrganization.py +0 -0
  35. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/version_control/GHRepo.py +0 -0
  36. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/version_control/GHVersionControl.py +0 -0
  37. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/storage/version_control/__init__.py +0 -0
  38. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/tasks/__init__.py +0 -0
  39. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous/tasks/autotask.py +0 -0
  40. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous_app.egg-info/SOURCES.txt +0 -0
  41. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous_app.egg-info/dependency_links.txt +0 -0
  42. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous_app.egg-info/requires.txt +0 -0
  43. {autonomous_app-0.2.10 → autonomous_app-0.2.12}/src/autonomous_app.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autonomous-app
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: Containerized application framework built on Flask with additional libraries and tools for rapid development of web applications.
5
5
  Author-email: Steven A Moore <samoore@binghamton.edu>
6
6
  License: MIT License
@@ -1,4 +1,4 @@
1
- __version__ = "0.2.10"
1
+ __version__ = "0.2.12"
2
2
 
3
3
  from .logger import log
4
4
  from .model.automodel import AutoModel
@@ -20,11 +20,16 @@ class DelayedModel:
20
20
  assert model
21
21
  assert pk
22
22
  module_name, class_name = model.rsplit(".", 1)
23
- module = importlib.import_module(module_name)
24
- model = getattr(module, class_name)
25
- object.__setattr__(self, "_delayed_model", model)
26
- object.__setattr__(self, "_delayed_pk", pk)
27
- object.__setattr__(self, "_delayed_obj", None)
23
+ try:
24
+ module = importlib.import_module(module_name)
25
+ except ModuleNotFoundError as e:
26
+ log(e)
27
+ raise DanglingReferenceError(model, pk, None)
28
+ else:
29
+ model = getattr(module, class_name)
30
+ object.__setattr__(self, "_delayed_model", model)
31
+ object.__setattr__(self, "_delayed_pk", pk)
32
+ object.__setattr__(self, "_delayed_obj", None)
28
33
 
29
34
  def _instance(self):
30
35
  #### DO NOT TO ANY LOGGING IN THIS METHOD; IT CAUSES INFINITE RECURSION ####
@@ -137,28 +142,38 @@ class AutoModel(ABC):
137
142
  super().__setattr__(name, result)
138
143
 
139
144
  elif isinstance(obj, list):
145
+ results = []
146
+ scrubbed = False
140
147
  for i, item in enumerate(obj):
141
148
  if isinstance(item, DelayedModel):
142
149
  try:
143
150
  result = item._instance()
144
151
  except DanglingReferenceError as e:
145
152
  log(e)
146
- obj[i] = None
147
- self.save()
153
+ scrubbed = True
148
154
  else:
149
- obj[i] = result
155
+ results.append(result)
156
+ if scrubbed:
157
+ super().__setattr__(name, results)
158
+ obj = results
159
+ self.save()
150
160
 
151
161
  elif isinstance(obj, dict):
162
+ results = {}
163
+ scrubbed = False
152
164
  for key, item in obj.items():
153
165
  if isinstance(item, DelayedModel):
154
166
  try:
155
167
  result = item._instance()
156
168
  except DanglingReferenceError as e:
157
169
  log(e)
158
- obj[key] = None
159
- self.save()
170
+ scrubbed = True
160
171
  else:
161
- obj[key] = result
172
+ results[key] = result
173
+ if scrubbed:
174
+ super().__setattr__(name, results)
175
+ obj = results
176
+ self.save()
162
177
  return obj
163
178
 
164
179
  def __str__(self) -> str:
@@ -91,6 +91,9 @@ class AutoDecoder:
91
91
  if not obj["pk"]:
92
92
  raise KeyError
93
93
  return DelayedModel(obj["_automodel"], obj["pk"])
94
+ except DanglingReferenceError as e:
95
+ log(e)
96
+ return None
94
97
  except KeyError:
95
98
  log(
96
99
  "AutoModel",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autonomous-app
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: Containerized application framework built on Flask with additional libraries and tools for rapid development of web applications.
5
5
  Author-email: Steven A Moore <samoore@binghamton.edu>
6
6
  License: MIT License
File without changes