aws-python-helper 1.15.2__tar.gz → 1.15.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 (68) hide show
  1. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/PKG-INFO +1 -1
  2. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/utils/json_encoder.py +10 -1
  3. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper.egg-info/PKG-INFO +1 -1
  4. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper.egg-info/SOURCES.txt +1 -0
  5. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/pyproject.toml +1 -1
  6. aws_python_helper-1.15.3/tests/test_json_encoder.py +51 -0
  7. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/README.md +0 -0
  8. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/__init__.py +0 -0
  9. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/__init__.py +0 -0
  10. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/auth_middleware.py +0 -0
  11. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/auth_validators.py +0 -0
  12. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/base.py +0 -0
  13. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/dispatcher.py +0 -0
  14. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/exceptions.py +0 -0
  15. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/fetcher.py +0 -0
  16. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/handler.py +0 -0
  17. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/api/jwt_keys.py +0 -0
  18. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/context/__init__.py +0 -0
  19. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/context/session.py +0 -0
  20. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/context/state_validator.py +0 -0
  21. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/database/__init__.py +0 -0
  22. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/database/database_proxy.py +0 -0
  23. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/database/external_database_proxy.py +0 -0
  24. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/database/external_mongo_manager.py +0 -0
  25. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/database/mongo_manager.py +0 -0
  26. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/fargate/__init__.py +0 -0
  27. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/fargate/executor.py +0 -0
  28. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/fargate/fetcher.py +0 -0
  29. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/fargate/handler.py +0 -0
  30. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/fargate/task_base.py +0 -0
  31. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/invoker/__init__.py +0 -0
  32. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/invoker/api_client.py +0 -0
  33. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/invoker/exceptions.py +0 -0
  34. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/invoker/lambda_invoker.py +0 -0
  35. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/lambda_standalone/__init__.py +0 -0
  36. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/lambda_standalone/base.py +0 -0
  37. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/lambda_standalone/fetcher.py +0 -0
  38. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/lambda_standalone/handler.py +0 -0
  39. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/model_index_sync/__init__.py +0 -0
  40. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/model_index_sync/base.py +0 -0
  41. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/model_query/__init__.py +0 -0
  42. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/model_query/base.py +0 -0
  43. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/monitoring/__init__.py +0 -0
  44. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/monitoring/run.py +0 -0
  45. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/permissions/__init__.py +0 -0
  46. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/permissions/catalog.py +0 -0
  47. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/repository/__init__.py +0 -0
  48. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/repository/audit.py +0 -0
  49. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/repository/base.py +0 -0
  50. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/settings.py +0 -0
  51. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sns/__init__.py +0 -0
  52. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sns/publisher.py +0 -0
  53. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sqs/__init__.py +0 -0
  54. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sqs/consumer_base.py +0 -0
  55. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sqs/fetcher.py +0 -0
  56. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/sqs/handler.py +0 -0
  57. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/utils/__init__.py +0 -0
  58. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/utils/response.py +0 -0
  59. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper/utils/serializer.py +0 -0
  60. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper.egg-info/dependency_links.txt +0 -0
  61. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper.egg-info/requires.txt +0 -0
  62. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/aws_python_helper.egg-info/top_level.txt +0 -0
  63. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/setup.cfg +0 -0
  64. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/tests/test_audit_stamp.py +0 -0
  65. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/tests/test_jwt_keys.py +0 -0
  66. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/tests/test_model_query_schema.py +0 -0
  67. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/tests/test_settings.py +0 -0
  68. {aws_python_helper-1.15.2 → aws_python_helper-1.15.3}/tests/test_sns_publisher.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-python-helper
3
- Version: 1.15.2
3
+ Version: 1.15.3
4
4
  Summary: AWS Python Helper Framework
5
5
  Author-email: Fabian Claros <neufabiae@gmail.com>
6
6
  License-Expression: MIT
@@ -3,7 +3,7 @@ MongoDB JSON Encoder - Custom JSON encoder to handle MongoDB types
3
3
  """
4
4
 
5
5
  import json
6
- from datetime import datetime, date
6
+ from datetime import datetime, date, timezone
7
7
  from decimal import Decimal
8
8
  from typing import Any
9
9
 
@@ -68,6 +68,15 @@ class MongoJSONEncoder(json.JSONEncoder):
68
68
 
69
69
  # Python datetime
70
70
  if isinstance(obj, datetime):
71
+ # Sin zona se asume UTC, que es lo que Mongo guarda y lo que el
72
+ # driver devuelve —naive— salvo que se lo configure para otra cosa.
73
+ #
74
+ # Sin esto la cadena sale sin marca y quien la lee la toma como hora
75
+ # local: en un navegador en UTC-5, un servicio que se anunció hace
76
+ # un minuto aparecía anunciándose "dentro de 5 horas". No falla
77
+ # nada, simplemente dice otra cosa.
78
+ if obj.tzinfo is None:
79
+ obj = obj.replace(tzinfo=timezone.utc)
71
80
  return obj.isoformat()
72
81
 
73
82
  # Python date
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-python-helper
3
- Version: 1.15.2
3
+ Version: 1.15.3
4
4
  Summary: AWS Python Helper Framework
5
5
  Author-email: Fabian Claros <neufabiae@gmail.com>
6
6
  License-Expression: MIT
@@ -59,6 +59,7 @@ aws_python_helper/utils/json_encoder.py
59
59
  aws_python_helper/utils/response.py
60
60
  aws_python_helper/utils/serializer.py
61
61
  tests/test_audit_stamp.py
62
+ tests/test_json_encoder.py
62
63
  tests/test_jwt_keys.py
63
64
  tests/test_model_query_schema.py
64
65
  tests/test_settings.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aws-python-helper"
7
- version = "1.15.2"
7
+ version = "1.15.3"
8
8
  description = "AWS Python Helper Framework"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -0,0 +1,51 @@
1
+ """Una fecha que sale de acá dice en qué zona está.
2
+
3
+ Mongo guarda UTC y el driver la devuelve sin marca de zona. Mandada así, quien
4
+ la lee la toma como hora local: en un navegador en UTC-5, algo que pasó hace un
5
+ minuto se mostraba como "dentro de 5 horas". No falla nada — dice otra cosa.
6
+
7
+ ../constitution-core/venv/bin/python tests/test_json_encoder.py
8
+ """
9
+
10
+ import json
11
+ import os
12
+ import sys
13
+ from datetime import datetime, timedelta, timezone
14
+
15
+ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
16
+
17
+ from aws_python_helper.utils.json_encoder import MongoJSONEncoder
18
+
19
+ failures = []
20
+
21
+
22
+ def check(label, condition):
23
+ print(f" {'ok ' if condition else 'FALLA'} {label}")
24
+ if not condition:
25
+ failures.append(label)
26
+
27
+
28
+ print("== una fecha sin zona sale como UTC ==")
29
+ naive = datetime(2026, 10, 1, 17, 25, 55)
30
+ salida = json.loads(json.dumps({"at": naive}, cls=MongoJSONEncoder))["at"]
31
+ print(f" {salida}")
32
+ check("lleva la marca de zona", salida.endswith("+00:00") or salida.endswith("Z"))
33
+ check("no corre la hora", salida.startswith("2026-10-01T17:25:55"))
34
+
35
+ print("\n== una que ya la trae se respeta ==")
36
+ aware = datetime(2026, 10, 1, 17, 25, 55, tzinfo=timezone(timedelta(hours=-5)))
37
+ salida = json.loads(json.dumps({"at": aware}, cls=MongoJSONEncoder))["at"]
38
+ print(f" {salida}")
39
+ check("conserva su propia zona", salida.endswith("-05:00"))
40
+
41
+ print("\n== y una fecha sin hora no se toca ==")
42
+ from datetime import date as _date
43
+ salida = json.loads(json.dumps({"on": _date(2026, 10, 1)}, cls=MongoJSONEncoder))["on"]
44
+ print(f" {salida}")
45
+ check("sigue siendo una fecha", salida == "2026-10-01")
46
+
47
+ print()
48
+ if failures:
49
+ print(f"{len(failures)} fallas")
50
+ sys.exit(1)
51
+ print("all good")