haystack-ml-stack 0.3.2__tar.gz → 0.3.3__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 (24) hide show
  1. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/PKG-INFO +1 -1
  2. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/pyproject.toml +1 -1
  3. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/__init__.py +1 -1
  4. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/app.py +2 -1
  5. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/utils.py +1 -1
  6. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack.egg-info/PKG-INFO +1 -1
  7. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/tests/test_utils.py +52 -0
  8. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/README.md +0 -0
  9. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/setup.cfg +0 -0
  10. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/_serializers.py +0 -0
  11. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/cache.py +0 -0
  12. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/dynamo.py +0 -0
  13. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/exceptions.py +0 -0
  14. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/generated/__init__.py +0 -0
  15. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/generated/v1/__init__.py +0 -0
  16. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/generated/v1/features_pb2.py +0 -0
  17. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/generated/v1/features_pb2.pyi +0 -0
  18. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/model_store.py +0 -0
  19. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack/settings.py +0 -0
  20. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack.egg-info/SOURCES.txt +0 -0
  21. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack.egg-info/dependency_links.txt +0 -0
  22. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack.egg-info/requires.txt +0 -0
  23. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/src/haystack_ml_stack.egg-info/top_level.txt +0 -0
  24. {haystack_ml_stack-0.3.2 → haystack_ml_stack-0.3.3}/tests/test_serializers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haystack-ml-stack
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Functions related to Haystack ML
5
5
  Author-email: Oscar Vega <oscar@haystack.tv>
6
6
  License: MIT
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "haystack-ml-stack"
8
- version = "0.3.2"
8
+ version = "0.3.3"
9
9
  description = "Functions related to Haystack ML"
10
10
  readme = "README.md"
11
11
  authors = [{ name = "Oscar Vega", email = "oscar@haystack.tv" }]
@@ -11,4 +11,4 @@ from ._serializers import SerializerRegistry, FeatureRegistryId
11
11
 
12
12
  __all__ = [*__all__, "SerializerRegistry", "FeatureRegistryId"]
13
13
 
14
- __version__ = "0.3.2"
14
+ __version__ = "0.3.3"
@@ -6,6 +6,7 @@ from http import HTTPStatus
6
6
  from typing import Any, Dict, List, Optional
7
7
  import time
8
8
  from contextlib import asynccontextmanager, AsyncExitStack
9
+ import traceback
9
10
 
10
11
  import aiobotocore.session
11
12
  from aiobotocore.config import AioConfig
@@ -253,7 +254,7 @@ def create_app(
253
254
  model_output = model["predict"](model_input, model["params"])
254
255
  predict_end = time.perf_counter_ns()
255
256
  except Exception as e:
256
- logger.error("Model prediction failed: %s", e)
257
+ logger.error("Model prediction failed: \n%s", traceback.format_exc())
257
258
  raise HTTPException(
258
259
  status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
259
260
  detail="Model prediction failed",
@@ -204,7 +204,7 @@ def device_watched_count_cleanups(
204
204
 
205
205
  counts_obj: StreamPWatched = stream.get(
206
206
  f"PWATCHED#24H#{device_type}", StreamPWatched()
207
- )
207
+ ).data
208
208
  if out is None:
209
209
  out = {}
210
210
  out = _cleanup_entry_context_counts(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: haystack-ml-stack
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Functions related to Haystack ML
5
5
  Author-email: Oscar Vega <oscar@haystack.tv>
6
6
  License: MIT
@@ -372,6 +372,58 @@ def test_stream_pwatched_cleanup():
372
372
  assert (actual == expected).all()
373
373
 
374
374
 
375
+ def test_device_stream_pwatched_cleanup():
376
+ stream_pwatched_data = {
377
+ "version": 1,
378
+ "data": {
379
+ "autoplay": {"attempts": 1, "watched": 1},
380
+ "ch_swtch": {"attempts": 2, "watched": 0},
381
+ },
382
+ }
383
+ stream_pwatched = features_pb2_v1.StreamPWatched()
384
+ ProtoParseDict(js_dict=stream_pwatched_data, message=stream_pwatched)
385
+ stream = {"PWATCHED#24H#TV": stream_pwatched}
386
+ out = {}
387
+ utils.device_watched_count_cleanups(
388
+ stream=stream,
389
+ entry_contexts=["autoplay", "ch_swtch", "sel_thumb"],
390
+ device_type="TV",
391
+ out=out,
392
+ )
393
+ expected = pd.Series(
394
+ {
395
+ "STREAM_AUTOPLAY_TV_24H_TOTAL_ATTEMPTS": 1,
396
+ "STREAM_AUTOPLAY_TV_24H_TOTAL_WATCHED": 1,
397
+ "STREAM_CH_SWTCH_TV_24H_TOTAL_ATTEMPTS": 2,
398
+ "STREAM_CH_SWTCH_TV_24H_TOTAL_WATCHED": 0,
399
+ "STREAM_SEL_THUMB_TV_24H_TOTAL_ATTEMPTS": 0,
400
+ "STREAM_SEL_THUMB_TV_24H_TOTAL_WATCHED": 0,
401
+ }
402
+ )
403
+ actual = pd.Series(out).loc[expected.index]
404
+ assert (actual == expected).all()
405
+ stream = {"PWATCHED#24H#MOBILE": stream_pwatched}
406
+ out = {}
407
+ utils.device_watched_count_cleanups(
408
+ stream=stream,
409
+ entry_contexts=["autoplay", "ch_swtch", "sel_thumb"],
410
+ device_type="MOBILE",
411
+ out=out,
412
+ )
413
+ expected = pd.Series(
414
+ {
415
+ "STREAM_AUTOPLAY_MOBILE_24H_TOTAL_ATTEMPTS": 1,
416
+ "STREAM_AUTOPLAY_MOBILE_24H_TOTAL_WATCHED": 1,
417
+ "STREAM_CH_SWTCH_MOBILE_24H_TOTAL_ATTEMPTS": 2,
418
+ "STREAM_CH_SWTCH_MOBILE_24H_TOTAL_WATCHED": 0,
419
+ "STREAM_SEL_THUMB_MOBILE_24H_TOTAL_ATTEMPTS": 0,
420
+ "STREAM_SEL_THUMB_MOBILE_24H_TOTAL_WATCHED": 0,
421
+ }
422
+ )
423
+ actual = pd.Series(out).loc[expected.index]
424
+ assert (actual == expected).all()
425
+
426
+
375
427
  def test_stream_global_pselect_cleanup():
376
428
  stream_pselect_data = {
377
429
  "version": 1,