ipulse-shared-core-ftredge 6.3.1__tar.gz → 6.6.1__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.

Potentially problematic release.


This version of ipulse-shared-core-ftredge might be problematic. Click here for more details.

Files changed (34) hide show
  1. {ipulse_shared_core_ftredge-6.3.1/src/ipulse_shared_core_ftredge.egg-info → ipulse_shared_core_ftredge-6.6.1}/PKG-INFO +2 -1
  2. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/setup.py +2 -1
  3. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/__init__.py +1 -1
  4. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/dependencies/auth_router.py +8 -8
  5. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/base_api_response.py +1 -1
  6. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/base_data_model.py +1 -1
  7. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/services/fastapiservicemon.py +13 -11
  8. ipulse_shared_core_ftredge-6.6.1/src/ipulse_shared_core_ftredge/utils/__init__.py +1 -0
  9. ipulse_shared_core_ftredge-6.6.1/src/ipulse_shared_core_ftredge/utils/json_encoder.py +13 -0
  10. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1/src/ipulse_shared_core_ftredge.egg-info}/PKG-INFO +2 -1
  11. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge.egg-info/SOURCES.txt +3 -1
  12. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge.egg-info/requires.txt +1 -0
  13. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/LICENCE +0 -0
  14. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/README.md +0 -0
  15. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/pyproject.toml +0 -0
  16. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/setup.cfg +0 -0
  17. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/dependencies/__init__.py +0 -0
  18. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/dependencies/authorization_api.py +0 -0
  19. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/dependencies/database.py +0 -0
  20. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/dependencies/token_validation.py +0 -0
  21. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/__init__.py +0 -0
  22. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/organization_profile.py +0 -0
  23. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/resource_catalog_item.py +0 -0
  24. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/subscription.py +0 -0
  25. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/user_auth.py +0 -0
  26. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/user_profile.py +0 -0
  27. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/user_profile_update.py +0 -0
  28. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/models/user_status.py +0 -0
  29. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/services/__init__.py +0 -0
  30. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/services/base_exceptions.py +0 -0
  31. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/services/base_firestore_service.py +0 -0
  32. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge/services/servicemon.py +0 -0
  33. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge.egg-info/dependency_links.txt +0 -0
  34. {ipulse_shared_core_ftredge-6.3.1 → ipulse_shared_core_ftredge-6.6.1}/src/ipulse_shared_core_ftredge.egg-info/top_level.txt +0 -0
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ipulse_shared_core_ftredge
3
- Version: 6.3.1
3
+ Version: 6.6.1
4
4
  Summary: Shared Core models and Logger util for the Pulse platform project. Using AI for financial advisory and investment management.
5
5
  Home-page: https://github.com/TheFutureEdge/ipulse_shared_core
6
6
  Author: Russlan Ramdowar
7
7
  License-File: LICENCE
8
8
  Requires-Dist: pydantic[email]~=2.5
9
9
  Requires-Dist: python-dateutil~=2.8
10
+ Requires-Dist: fastapi~=0.115.8
10
11
  Requires-Dist: pytest~=7.1
11
12
  Requires-Dist: ipulse_shared_base_ftredge>=5.2.1
12
13
  Dynamic: author
@@ -3,13 +3,14 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name='ipulse_shared_core_ftredge',
6
- version='6.3.1',
6
+ version='6.6.1',
7
7
  package_dir={'': 'src'}, # Specify the source directory
8
8
  packages=find_packages(where='src'), # Look for packages in 'src'
9
9
  install_requires=[
10
10
  # List your dependencies here
11
11
  'pydantic[email]~=2.5',
12
12
  'python-dateutil~=2.8',
13
+ 'fastapi~=0.115.8',
13
14
  'pytest~=7.1',
14
15
  'ipulse_shared_base_ftredge>=5.2.1',
15
16
  ],
@@ -6,4 +6,4 @@ from .models import ( UserAuth, UserProfile,Subscription,
6
6
 
7
7
 
8
8
  from .services import (BaseFirestoreService,BaseServiceException, ResourceNotFoundError, AuthorizationError,
9
- ValidationError)
9
+ ValidationError)
@@ -10,12 +10,12 @@ def create_protected_router(
10
10
  ) -> APIRouter:
11
11
  """
12
12
  Creates an APIRouter with authentication enabled by default.
13
-
13
+
14
14
  Args:
15
15
  prefix: Router prefix
16
16
  tags: OpenAPI tags
17
17
  public_paths: List of paths that should be public (no auth required)
18
-
18
+
19
19
  Example:
20
20
  router = create_protected_router(
21
21
  prefix="/api/v1",
@@ -25,10 +25,10 @@ def create_protected_router(
25
25
  """
26
26
  public_paths = public_paths or []
27
27
  router = APIRouter(prefix=prefix, tags=tags)
28
-
28
+
29
29
  # Store the original route registration method
30
30
  original_add_api_route = router.add_api_route
31
-
31
+
32
32
  def add_api_route_with_auth(
33
33
  path: str,
34
34
  endpoint: Callable,
@@ -40,10 +40,10 @@ def create_protected_router(
40
40
  if path not in public_paths:
41
41
  dependencies = dependencies or []
42
42
  # Fix: Check if verify_firebase_token is already in dependencies
43
- if not any(getattr(dep.dependency, '__name__', None) == 'verify_firebase_token'
43
+ if not any(getattr(dep.dependency, '__name__', None) == 'verify_firebase_token'
44
44
  for dep in dependencies):
45
45
  dependencies.append(Depends(verify_firebase_token))
46
-
46
+
47
47
  return original_add_api_route(
48
48
  path,
49
49
  endpoint,
@@ -51,8 +51,8 @@ def create_protected_router(
51
51
  dependencies=dependencies,
52
52
  **kwargs
53
53
  )
54
-
54
+
55
55
  # Replace the route registration method with our custom one
56
56
  router.add_api_route = add_api_route_with_auth # type: ignore
57
-
57
+
58
58
  return router
@@ -2,7 +2,7 @@ from typing import Generic, TypeVar, Optional, Any, Dict, List
2
2
  from pydantic import BaseModel, ConfigDict
3
3
  import datetime as dt
4
4
  from fastapi.responses import JSONResponse
5
- from ipulse_shared_core_ftredge.utils.json_encoder import CustomJSONEncoder
5
+ from ipulse_shared_core_ftredge.utils import CustomJSONEncoder
6
6
  import json
7
7
 
8
8
 
@@ -1,5 +1,5 @@
1
1
  from datetime import datetime
2
- from typing import ClassVar, Optional
2
+ from typing import ClassVar
3
3
  from pydantic import BaseModel, Field, ConfigDict, field_validator
4
4
  import dateutil.parser
5
5
 
@@ -41,7 +41,7 @@ class FastAPIServiceMon(Servicemon):
41
41
  return await call_next(request)
42
42
 
43
43
  # Initialize ServiceMon
44
- svcmon = Servicemon(
44
+ servicemon = Servicemon(
45
45
  logger=logger,
46
46
  base_context=f"API: {path}\nMethod: {method}",
47
47
  service_name=f"API_{method}_{path.replace('/', '_')}"
@@ -50,11 +50,11 @@ class FastAPIServiceMon(Servicemon):
50
50
  # Start monitoring
51
51
  client_ip = request.client.host if request.client else "unknown"
52
52
  user_agent = request.headers.get("user-agent", "unknown")
53
- svcmon.start(f"API Request {method} {path}")
53
+ servicemon.start(f"API Request {method} {path}")
54
54
 
55
55
 
56
56
  # Add request info
57
- svcmon.log(
57
+ servicemon.log(
58
58
  level=LogLevel.INFO,
59
59
  description=f"Request received for {method} {path}. Client IP: {client_ip}. User Agent: {user_agent}",
60
60
  resource=DataResource.API_INTERNAL,
@@ -65,7 +65,7 @@ class FastAPIServiceMon(Servicemon):
65
65
  # Process the request and catch any errors
66
66
  try:
67
67
  # Store ServiceMon in request state for handlers to access
68
- request.state.svcmon = svcmon
68
+ request.state.svcmon = servicemon
69
69
 
70
70
  # Process request
71
71
  start_time = time.time()
@@ -86,7 +86,7 @@ class FastAPIServiceMon(Servicemon):
86
86
  else LogLevel.INFO
87
87
  )
88
88
 
89
- svcmon.log(
89
+ servicemon.log(
90
90
  level=log_level,
91
91
  description=f"Response sent: {status_code} in {process_time}ms for {method} {path}",
92
92
  resource=DataResource.API_INTERNAL,
@@ -96,18 +96,20 @@ class FastAPIServiceMon(Servicemon):
96
96
  )
97
97
 
98
98
  # Finalize monitoring
99
- svcmon.end(status=progress_status)
99
+ servicemon.end(status=progress_status)
100
100
  return response
101
101
 
102
102
  except Exception as exc:
103
- svcmon.error(
104
- f"Error processing request: {str(exc)}",
103
+ # Log error and re-raise
104
+ servicemon.log(
105
+ level=LogLevel.ERROR,
106
+ description=f"Error processing request: {exc}",
105
107
  resource=DataResource.API_INTERNAL,
106
108
  action=Action.EXECUTE,
107
- progress_status=ProgressStatus.FAILED,
108
- e=exc
109
+ progress_status=ProgressStatus.FAILED
109
110
  )
110
- svcmon.end(status=ProgressStatus.FAILED)
111
+
112
+ servicemon.end(status=ProgressStatus.FAILED)
111
113
  raise
112
114
 
113
115
  return ServiceMonMiddleware
@@ -0,0 +1 @@
1
+ from .json_encoder import CustomJSONEncoder
@@ -0,0 +1,13 @@
1
+ import json
2
+ from datetime import datetime
3
+ from google.cloud.firestore_v1._helpers import DatetimeWithNanoseconds
4
+ from google.api_core import datetime_helpers
5
+
6
+ class CustomJSONEncoder(json.JSONEncoder):
7
+ """Custom JSON encoder that handles Firestore datetime types."""
8
+ def default(self, obj):
9
+ if isinstance(obj, (datetime, DatetimeWithNanoseconds)):
10
+ return obj.isoformat()
11
+ if isinstance(obj, datetime_helpers.DatetimeWithNanoseconds):
12
+ return obj.isoformat()
13
+ return super().default(obj)
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ipulse_shared_core_ftredge
3
- Version: 6.3.1
3
+ Version: 6.6.1
4
4
  Summary: Shared Core models and Logger util for the Pulse platform project. Using AI for financial advisory and investment management.
5
5
  Home-page: https://github.com/TheFutureEdge/ipulse_shared_core
6
6
  Author: Russlan Ramdowar
7
7
  License-File: LICENCE
8
8
  Requires-Dist: pydantic[email]~=2.5
9
9
  Requires-Dist: python-dateutil~=2.8
10
+ Requires-Dist: fastapi~=0.115.8
10
11
  Requires-Dist: pytest~=7.1
11
12
  Requires-Dist: ipulse_shared_base_ftredge>=5.2.1
12
13
  Dynamic: author
@@ -27,4 +27,6 @@ src/ipulse_shared_core_ftredge/services/__init__.py
27
27
  src/ipulse_shared_core_ftredge/services/base_exceptions.py
28
28
  src/ipulse_shared_core_ftredge/services/base_firestore_service.py
29
29
  src/ipulse_shared_core_ftredge/services/fastapiservicemon.py
30
- src/ipulse_shared_core_ftredge/services/servicemon.py
30
+ src/ipulse_shared_core_ftredge/services/servicemon.py
31
+ src/ipulse_shared_core_ftredge/utils/__init__.py
32
+ src/ipulse_shared_core_ftredge/utils/json_encoder.py
@@ -1,4 +1,5 @@
1
1
  pydantic[email]~=2.5
2
2
  python-dateutil~=2.8
3
+ fastapi~=0.115.8
3
4
  pytest~=7.1
4
5
  ipulse_shared_base_ftredge>=5.2.1