fred-oss 0.35.0__tar.gz → 0.37.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 (92) hide show
  1. {fred_oss-0.35.0/src/main/fred_oss.egg-info → fred_oss-0.37.0}/PKG-INFO +1 -1
  2. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/impl.py +9 -1
  3. fred_oss-0.37.0/src/main/fred/version +1 -0
  4. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/client.py +31 -8
  5. {fred_oss-0.35.0 → fred_oss-0.37.0/src/main/fred_oss.egg-info}/PKG-INFO +1 -1
  6. fred_oss-0.35.0/src/main/fred/version +0 -1
  7. {fred_oss-0.35.0 → fred_oss-0.37.0}/MANIFEST.in +0 -0
  8. {fred_oss-0.35.0 → fred_oss-0.37.0}/NOTICE.txt +0 -0
  9. {fred_oss-0.35.0 → fred_oss-0.37.0}/README.md +0 -0
  10. {fred_oss-0.35.0 → fred_oss-0.37.0}/requirements.txt +0 -0
  11. {fred_oss-0.35.0 → fred_oss-0.37.0}/setup.cfg +0 -0
  12. {fred_oss-0.35.0 → fred_oss-0.37.0}/setup.py +0 -0
  13. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/cli/__init__.py +0 -0
  14. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/cli/__main__.py +0 -0
  15. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/cli/interface.py +0 -0
  16. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/cli/main.py +0 -0
  17. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/__init__.py +0 -0
  18. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/comp/__init__.py +0 -0
  19. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/comp/_keyval.py +0 -0
  20. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/comp/_queue.py +0 -0
  21. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/comp/catalog.py +0 -0
  22. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/comp/interface.py +0 -0
  23. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/__init__.py +0 -0
  24. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/_redis.py +0 -0
  25. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/_stdlib.py +0 -0
  26. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/catalog.py +0 -0
  27. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/interface.py +0 -0
  28. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/dao/service/utils.py +0 -0
  29. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/__init__.py +0 -0
  30. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/callback/__init__.py +0 -0
  31. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/callback/_function.py +0 -0
  32. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/callback/catalog.py +0 -0
  33. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/callback/interface.py +0 -0
  34. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/result.py +0 -0
  35. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/settings.py +0 -0
  36. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/future/utils.py +0 -0
  37. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/__init__.py +0 -0
  38. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/cli_ext.py +0 -0
  39. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/runtime.py +0 -0
  40. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/runtimes/__init__.py +0 -0
  41. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/runtimes/scanner.py +0 -0
  42. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/runtimes/sync.py +0 -0
  43. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/wrappers/__init__.py +0 -0
  44. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/databricks/wrappers/dbutils.py +0 -0
  45. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/runpod/__init__.py +0 -0
  46. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/runpod/cli_ext.py +0 -0
  47. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/integrations/runpod/helper.py +0 -0
  48. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/maturity.py +0 -0
  49. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/monad/__init__.py +0 -0
  50. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/monad/_either.py +0 -0
  51. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/monad/catalog.py +0 -0
  52. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/monad/interface.py +0 -0
  53. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/settings.py +0 -0
  54. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/utils/__init__.py +0 -0
  55. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/utils/dateops.py +0 -0
  56. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/utils/runtime.py +0 -0
  57. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/version.py +0 -0
  58. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/__init__.py +0 -0
  59. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/interface.py +0 -0
  60. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/__init__.py +0 -0
  61. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/backend.py +0 -0
  62. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/handler.py +0 -0
  63. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/__init__.py +0 -0
  64. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/_handler.py +0 -0
  65. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/_item.py +0 -0
  66. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/_request.py +0 -0
  67. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/_runner_spec.py +0 -0
  68. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/catalog.py +0 -0
  69. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/model/interface.py +0 -0
  70. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/plugins/__init__.py +0 -0
  71. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/plugins/_local.py +0 -0
  72. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/plugins/_runpod.py +0 -0
  73. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/plugins/catalog.py +0 -0
  74. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/plugins/interface.py +0 -0
  75. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/__init__.py +0 -0
  76. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/auth.py +0 -0
  77. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/cli_ext.py +0 -0
  78. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/routers/__init__.py +0 -0
  79. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/routers/_runner.py +0 -0
  80. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/routers/catalog.py +0 -0
  81. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/routers/interface.py +0 -0
  82. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/server.py +0 -0
  83. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/rest/settings.py +0 -0
  84. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/settings.py +0 -0
  85. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/signal.py +0 -0
  86. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/status.py +0 -0
  87. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred/worker/runner/utils.py +0 -0
  88. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred_oss.egg-info/SOURCES.txt +0 -0
  89. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred_oss.egg-info/dependency_links.txt +0 -0
  90. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred_oss.egg-info/entry_points.txt +0 -0
  91. {fred_oss-0.35.0 → fred_oss-0.37.0}/src/main/fred_oss.egg-info/requires.txt +0 -0
  92. {fred_oss-0.35.0 → fred_oss-0.37.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.35.0
3
+ Version: 0.37.0
4
4
  Summary: FREDOSS
5
5
  Home-page: https://fred.fahera.mx
6
6
  Author: Fahera Research, Education, and Development
@@ -228,12 +228,20 @@ class Future(MonadInterface[A]):
228
228
  def map(self, function: Callable[[A], B]) -> 'Future[B]':
229
229
  """Applies a function to the result of the future, returning a new future.
230
230
  This method allows for transforming the result of a future without blocking.
231
+
232
+ Original implementation:
233
+ return self.flat_map(function=lambda value: type(self).from_value(function(value)))
234
+
235
+ However, that implementation would create an intermediate Future just to
236
+ hold the transformed value, which is unnecessary overhead. Instead, we can directly create a new Future
237
+ that applies the transformation function to the result of the current future.
238
+
231
239
  Args:
232
240
  function (Callable[[A], B]): A function that takes the result of the current future
233
241
  and returns a new value.
234
242
  Returns: Future[B]: A new Future containing the transformed result.
235
243
  """
236
- return self.flat_map(function=lambda value: type(self).from_value(function(value)))
244
+ return Future(function=lambda: function(self.wait_and_resolve()))
237
245
 
238
246
  @classmethod
239
247
  def pullsync(
@@ -0,0 +1 @@
1
+ 0.37.0
@@ -88,6 +88,34 @@ class RunnerClient:
88
88
  def fetch_status(request_id: str) -> Optional[str]:
89
89
  return FutureResult._get_status_key(future_id=request_id).get()
90
90
 
91
+ def _pullsync(
92
+ self,
93
+ request_id: str,
94
+ retry_sync: int = 10,
95
+ retry_delay: float = 0.2,
96
+ retry_backoff_rate: float = 0.1,
97
+ **kwargs,
98
+ ):
99
+ from fred.future.utils import pull_future_result
100
+
101
+ if not self._is_ready_for_pullsync(
102
+ request_id=request_id,
103
+ retry_sync=retry_sync,
104
+ retry_delay=retry_delay,
105
+ retry_backoff_rate=retry_backoff_rate,
106
+ # Always fail in pullsync to raise an exception if not ready.
107
+ # In addition, this will be caught by the Future to propagate the exception.
108
+ fail=True,
109
+ ):
110
+ raise ValueError(f"The provided request_id '{request_id}' is not ready for pullsync.")
111
+
112
+ return pull_future_result(
113
+ future_id=request_id,
114
+ retry_delay=retry_delay,
115
+ retry_backoff_rate=retry_backoff_rate,
116
+ **kwargs
117
+ )
118
+
91
119
  def pullsync(
92
120
  self,
93
121
  request_id: str,
@@ -96,18 +124,13 @@ class RunnerClient:
96
124
  retry_backoff_rate: float = 0.1,
97
125
  **kwargs,
98
126
  ) -> Future:
99
- # TODO: Once the broadcast method is implemented, we can add a warning notice regarding
100
- # the pullsync metho adding extra load to the backend service
101
- future = Future(
102
- function=self._is_ready_for_pullsync,
127
+ return Future(
128
+ function=self._pullsync,
103
129
  request_id=request_id,
104
130
  retry_sync=retry_sync,
105
131
  retry_delay=retry_delay,
106
132
  retry_backoff_rate=retry_backoff_rate,
107
- fail=True, # Always fail inside the future to propagate the exception
108
- )
109
- return future.flat_map(
110
- lambda _: Future.pullsync(future_id=request_id, **kwargs)
133
+ **kwargs
111
134
  )
112
135
 
113
136
  def _is_ready_for_pullsync(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fred-oss
3
- Version: 0.35.0
3
+ Version: 0.37.0
4
4
  Summary: FREDOSS
5
5
  Home-page: https://fred.fahera.mx
6
6
  Author: Fahera Research, Education, and Development
@@ -1 +0,0 @@
1
- 0.35.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes