fred-oss 0.18.0__tar.gz → 0.19.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.
Files changed (66) hide show
  1. {fred_oss-0.18.0/src/main/fred_oss.egg-info → fred_oss-0.19.0}/PKG-INFO +1 -1
  2. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/comp/_keyval.py +16 -3
  3. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/comp/_queue.py +23 -0
  4. fred_oss-0.19.0/src/main/fred/dao/service/_stdlib.py +54 -0
  5. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/service/catalog.py +2 -0
  6. fred_oss-0.19.0/src/main/fred/version +1 -0
  7. {fred_oss-0.18.0 → fred_oss-0.19.0/src/main/fred_oss.egg-info}/PKG-INFO +1 -1
  8. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred_oss.egg-info/SOURCES.txt +1 -0
  9. fred_oss-0.18.0/src/main/fred/version +0 -1
  10. {fred_oss-0.18.0 → fred_oss-0.19.0}/MANIFEST.in +0 -0
  11. {fred_oss-0.18.0 → fred_oss-0.19.0}/NOTICE.txt +0 -0
  12. {fred_oss-0.18.0 → fred_oss-0.19.0}/README.md +0 -0
  13. {fred_oss-0.18.0 → fred_oss-0.19.0}/requirements.txt +0 -0
  14. {fred_oss-0.18.0 → fred_oss-0.19.0}/setup.cfg +0 -0
  15. {fred_oss-0.18.0 → fred_oss-0.19.0}/setup.py +0 -0
  16. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/cli/__init__.py +0 -0
  17. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/cli/__main__.py +0 -0
  18. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/cli/interface.py +0 -0
  19. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/cli/main.py +0 -0
  20. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/__init__.py +0 -0
  21. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/comp/__init__.py +0 -0
  22. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/comp/catalog.py +0 -0
  23. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/comp/interface.py +0 -0
  24. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/service/__init__.py +0 -0
  25. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/service/_redis.py +0 -0
  26. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/service/interface.py +0 -0
  27. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/dao/service/utils.py +0 -0
  28. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/__init__.py +0 -0
  29. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/cli_ext.py +0 -0
  30. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/runtime.py +0 -0
  31. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/runtimes/__init__.py +0 -0
  32. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/runtimes/scanner.py +0 -0
  33. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/runtimes/sync.py +0 -0
  34. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/wrappers/__init__.py +0 -0
  35. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/databricks/wrappers/dbutils.py +0 -0
  36. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/runpod/__init__.py +0 -0
  37. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/runpod/cli_ext.py +0 -0
  38. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/integrations/runpod/helper.py +0 -0
  39. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/maturity.py +0 -0
  40. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/settings.py +0 -0
  41. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/utils/__init__.py +0 -0
  42. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/utils/dateops.py +0 -0
  43. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/utils/runtime.py +0 -0
  44. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/version.py +0 -0
  45. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/__init__.py +0 -0
  46. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/interface.py +0 -0
  47. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/__init__.py +0 -0
  48. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/client.py +0 -0
  49. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/handler.py +0 -0
  50. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/info.py +0 -0
  51. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/plugins/__init__.py +0 -0
  52. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/plugins/_local.py +0 -0
  53. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/plugins/catalog.py +0 -0
  54. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/plugins/interface.py +0 -0
  55. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/__init__.py +0 -0
  56. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/cli_ext.py +0 -0
  57. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/routers/__init__.py +0 -0
  58. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/routers/_runner.py +0 -0
  59. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/routers/catalog.py +0 -0
  60. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/routers/interface.py +0 -0
  61. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/rest/server.py +0 -0
  62. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred/worker/runner/utils.py +0 -0
  63. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred_oss.egg-info/dependency_links.txt +0 -0
  64. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred_oss.egg-info/entry_points.txt +0 -0
  65. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred_oss.egg-info/requires.txt +0 -0
  66. {fred_oss-0.18.0 → fred_oss-0.19.0}/src/main/fred_oss.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fred-oss
3
- Version: 0.18.0
3
+ Version: 0.19.0
4
4
  Summary: FREDOSS
5
5
  Home-page: https://fred.fahera.mx
6
6
  Author: Fahera Research, Education, and Development
@@ -1,9 +1,12 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Optional
3
3
 
4
+ from fred.settings import logger_manager
4
5
  from fred.dao.service.catalog import ServiceCatalog
5
6
  from fred.dao.comp.interface import ComponentInterface
6
7
 
8
+ logger = logger_manager.get_logger(name=__name__)
9
+
7
10
 
8
11
  @dataclass(frozen=True, slots=True)
9
12
  class FredKeyVal(ComponentInterface):
@@ -34,6 +37,11 @@ class FredKeyVal(ComponentInterface):
34
37
  expire = kwargs.get("expire")
35
38
  if expire and isinstance(expire, int):
36
39
  self._srv.client.expire(key, expire)
40
+ case ServiceCatalog.STDLIB:
41
+ self._srv.client._memstore_keyval[key] = value
42
+ # TODO: Implement expiration logic
43
+ if "expire" in kwargs:
44
+ logger.warning("Expiration not implemented for STDLIB service.")
37
45
  case _:
38
46
  raise NotImplementedError(f"Set method not implemented for service {self._nme}")
39
47
 
@@ -53,14 +61,17 @@ class FredKeyVal(ComponentInterface):
53
61
  NotImplementedError: If the method is not implemented for the current service.
54
62
  """
55
63
  key = key or self.key
64
+ result = None
56
65
  match self._cat:
57
66
  case ServiceCatalog.REDIS:
58
67
  result = self._srv.client.get(key)
59
- if result is None and fail:
60
- raise KeyError(f"Key {key} not found.")
61
- return result
68
+ case ServiceCatalog.STDLIB:
69
+ result = self._srv.client._memstore_keyval.get(key)
62
70
  case _:
63
71
  raise NotImplementedError(f"Get method not implemented for service {self._nme}")
72
+ if fail and result is None:
73
+ raise KeyError(f"Key {key} not found.")
74
+ return result
64
75
 
65
76
  def delete(self, key: Optional[str] = None) -> None:
66
77
  """Deletes a key-value pair from the store.
@@ -76,5 +87,7 @@ class FredKeyVal(ComponentInterface):
76
87
  match self._cat:
77
88
  case ServiceCatalog.REDIS:
78
89
  self._srv.client.delete(key)
90
+ case ServiceCatalog.STDLIB:
91
+ self._srv.client._memstore_keyval.pop(key, None)
79
92
  case _:
80
93
  raise NotImplementedError(f"Delete method not implemented for service {self._nme}")
@@ -1,9 +1,12 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Optional
3
3
 
4
+ from fred.settings import logger_manager
4
5
  from fred.dao.service.catalog import ServiceCatalog
5
6
  from fred.dao.comp.interface import ComponentInterface
6
7
 
8
+ logger = logger_manager.get_logger(name=__name__)
9
+
7
10
 
8
11
  @dataclass(frozen=True, slots=True)
9
12
  class FredQueue(ComponentInterface):
@@ -29,6 +32,9 @@ class FredQueue(ComponentInterface):
29
32
  match self._cat:
30
33
  case ServiceCatalog.REDIS:
31
34
  return self._srv.client.llen(self.name)
35
+ case ServiceCatalog.STDLIB:
36
+ q = self._srv.client._memstore_queue.get(self.name, None)
37
+ return q.qsize() if q else 0
32
38
  case _:
33
39
  raise NotImplementedError(f"Size method not implemented for service {self._nme}")
34
40
 
@@ -43,6 +49,9 @@ class FredQueue(ComponentInterface):
43
49
  match self._cat:
44
50
  case ServiceCatalog.REDIS:
45
51
  self._srv.client.delete(self.name)
52
+ case ServiceCatalog.STDLIB:
53
+ if (q := self._srv.client._memstore_queue.pop(self.name, None)):
54
+ del q
46
55
  case _:
47
56
  raise NotImplementedError(f"Clear method not implemented for service {self._nme}")
48
57
 
@@ -59,6 +68,11 @@ class FredQueue(ComponentInterface):
59
68
  match self._cat:
60
69
  case ServiceCatalog.REDIS:
61
70
  self._srv.client.lpush(self.name, item)
71
+ case ServiceCatalog.STDLIB:
72
+ from queue import Queue
73
+ qs = self._srv.client._memstore_queue
74
+ q = qs[self.name] = qs.get(self.name, None) or Queue()
75
+ q.put(item)
62
76
  case _:
63
77
  raise NotImplementedError(f"Add method not implemented for service {self._srv._nme}")
64
78
 
@@ -75,5 +89,14 @@ class FredQueue(ComponentInterface):
75
89
  match self._cat:
76
90
  case ServiceCatalog.REDIS:
77
91
  return self._srv.client.rpop(self.name)
92
+ case ServiceCatalog.STDLIB:
93
+ from queue import Empty
94
+ if not (q := self._srv.client._memstore_queue.get(self.name, None)):
95
+ return None
96
+ try:
97
+ return q.get_nowait()
98
+ except Empty:
99
+ logger.info(f"Queue '{self.name}' is empty.")
100
+ return None
78
101
  case _:
79
102
  raise NotImplementedError(f"Pop method not implemented for service {self._srv._nme}")
@@ -0,0 +1,54 @@
1
+ from queue import Queue
2
+ from dataclasses import dataclass
3
+ from typing import Optional
4
+
5
+ from fred.utils.runtime import RuntimeInfo
6
+ from fred.dao.service.interface import ServiceConnectionPoolInterface, ServiceInterface
7
+
8
+
9
+ class StdLibSingleton:
10
+ _instance: Optional["StdLib"] = None
11
+
12
+ @classmethod
13
+ def get_instance(cls, **kwargs) -> "StdLib":
14
+ if cls._instance is None:
15
+ cls._instance = StdLib.auto(**kwargs)
16
+ return cls._instance
17
+
18
+
19
+ @dataclass(frozen=True, slots=True)
20
+ class StdLib:
21
+ runtime_info: RuntimeInfo
22
+ _memstore_keyval: dict[str, str]
23
+ _memstore_queue: dict[str, Queue]
24
+
25
+ @classmethod
26
+ def auto(cls, **kwargs) -> "StdLib":
27
+ _memstore_keyval = kwargs.pop("memstore_keyval", {})
28
+ _memstore_queue = kwargs.pop("memstore_queue", {})
29
+ return cls(
30
+ runtime_info=RuntimeInfo.auto(**kwargs),
31
+ _memstore_keyval=_memstore_keyval,
32
+ _memstore_queue=_memstore_queue,
33
+ )
34
+
35
+
36
+ class StdLibConnectionPool(ServiceConnectionPoolInterface[StdLibSingleton]):
37
+
38
+ @classmethod
39
+ def _create_pool(cls, **kwargs) -> StdLibSingleton:
40
+ return StdLibSingleton(**kwargs)
41
+
42
+
43
+ class StdLibService(ServiceInterface[StdLib]):
44
+ instance: StdLib
45
+
46
+ @classmethod
47
+ def _create_instance(cls, **kwargs) -> StdLib:
48
+ pool = StdLibConnectionPool.get_or_create_pool(**kwargs)
49
+ return pool.get_instance(**kwargs)
50
+
51
+ @classmethod
52
+ def auto(cls, **kwargs) -> "StdLib":
53
+ cls.instance = cls._create_instance(**kwargs)
54
+ return cls(**kwargs)
@@ -4,11 +4,13 @@ from typing import TypeVar, Optional
4
4
 
5
5
  from fred.dao.service.interface import ServiceInterface
6
6
  from fred.dao.service._redis import RedisService
7
+ from fred.dao.service._stdlib import StdLibService
7
8
 
8
9
  T = TypeVar("T")
9
10
 
10
11
 
11
12
  class ServiceCatalog(enum.Enum):
13
+ STDLIB = StdLibService
12
14
  REDIS = RedisService
13
15
 
14
16
  @classmethod
@@ -0,0 +1 @@
1
+ 0.19.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fred-oss
3
- Version: 0.18.0
3
+ Version: 0.19.0
4
4
  Summary: FREDOSS
5
5
  Home-page: https://fred.fahera.mx
6
6
  Author: Fahera Research, Education, and Development
@@ -19,6 +19,7 @@ src/main/fred/dao/comp/catalog.py
19
19
  src/main/fred/dao/comp/interface.py
20
20
  src/main/fred/dao/service/__init__.py
21
21
  src/main/fred/dao/service/_redis.py
22
+ src/main/fred/dao/service/_stdlib.py
22
23
  src/main/fred/dao/service/catalog.py
23
24
  src/main/fred/dao/service/interface.py
24
25
  src/main/fred/dao/service/utils.py
@@ -1 +0,0 @@
1
- 0.18.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes