nlbone 0.9.3__py3-none-any.whl → 0.9.5__py3-none-any.whl

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.
@@ -35,7 +35,7 @@ class AuthService(BaseAuthService):
35
35
  def get_client_id(self, token: str):
36
36
  data = self.verify_token(token)
37
37
  if data:
38
- return data["sub"] if data["sub"].startswith("service-account") else None
38
+ return data["preferred_username"] if data["preferred_username"].startswith("service-account") else None
39
39
  return None
40
40
 
41
41
  def get_client_token(self) -> dict | None:
@@ -1,3 +1,4 @@
1
+ import json
1
2
  from decimal import Decimal
2
3
  from enum import Enum
3
4
  from typing import Any, Dict, List, Literal, Optional, Union
@@ -66,13 +67,20 @@ class CalculatePriceOut(RootModel[Union[List[PricingRule], Dict[str, PricingRule
66
67
  pass
67
68
 
68
69
 
70
+ class DecimalEncoder(json.JSONEncoder):
71
+ def default(self, obj):
72
+ if isinstance(obj, Decimal):
73
+ return float(obj)
74
+ return super(DecimalEncoder, self).default(obj)
75
+
76
+
69
77
  class PricingService:
70
78
  def __init__(
71
- self,
72
- token_provider: ClientTokenProvider,
73
- base_url: Optional[str] = None,
74
- timeout_seconds: Optional[float] = None,
75
- client: httpx.Client | None = None,
79
+ self,
80
+ token_provider: ClientTokenProvider,
81
+ base_url: Optional[str] = None,
82
+ timeout_seconds: Optional[float] = None,
83
+ client: httpx.Client | None = None,
76
84
  ) -> None:
77
85
  s = get_settings()
78
86
  self._base_url = normalize_https_base(base_url or str(s.PRICING_SERVICE_URL), enforce_https=False)
@@ -81,7 +89,11 @@ class PricingService:
81
89
  self._token_provider = token_provider
82
90
 
83
91
  def calculate(self, items: list[CalculatePriceIn], response: Literal["list", "dict"] = "dict") -> CalculatePriceOut:
84
- body = {"items": [i.model_dump() for i in items]}
92
+ body = json.dumps(
93
+ {"items": [i.model_dump() for i in items]},
94
+ cls=DecimalEncoder
95
+ )
96
+ body = json.loads(body)
85
97
 
86
98
  r = self._client.post(
87
99
  f"{self._base_url}/price/calculate",
@@ -65,11 +65,11 @@ def user_authenticated(func):
65
65
 
66
66
 
67
67
  def user_has_access_func(*, permissions=None):
68
- if bypass_authz():
69
- return True
70
68
  request = current_request()
71
69
  if not current_user_id():
72
70
  raise UnauthorizedException()
71
+ if bypass_authz():
72
+ return True
73
73
  if not get_auth_service().has_access(request.state.token, permissions=permissions):
74
74
  raise ForbiddenException(f"Forbidden {permissions}")
75
75
  return True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nlbone
3
- Version: 0.9.3
3
+ Version: 0.9.5
4
4
  Summary: Backbone package for interfaces and infrastructure in Python projects
5
5
  Author-email: Amir Hosein Kahkbazzadeh <a.khakbazzadeh@gmail.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ nlbone/types.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  nlbone/adapters/__init__.py,sha256=NzUmk4XPyp3GJOw7VSE86xkQMZLtG3MrOoXLeoB551M,41
5
5
  nlbone/adapters/snowflake.py,sha256=eC5eXWgkTIJlO5J44VFbD1-MXj8HYs0lCNp37paSfXY,2324
6
6
  nlbone/adapters/auth/__init__.py,sha256=hkDHvsFhw_UiOHG9ZSMqjiAhK4wumEforitveSZswVw,42
7
- nlbone/adapters/auth/auth_service.py,sha256=l8SyskSyswas940i-hXEnJ-gboTpjsXURm_GiAMQwMY,2591
7
+ nlbone/adapters/auth/auth_service.py,sha256=CYfOX5M19SGsteHOTNiRLFohaVXx5X5NwmKQI2WLjCQ,2621
8
8
  nlbone/adapters/auth/keycloak.py,sha256=IhEriaFl5mjIGT6ZUCU9qROd678ARchvWgd4UJ6zH7s,4925
9
9
  nlbone/adapters/auth/token_provider.py,sha256=kzjFAaFY8SPnU0Tn6l-YVrhEOAiFV0QE3eit3D7u2VQ,1438
10
10
  nlbone/adapters/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -26,7 +26,7 @@ nlbone/adapters/db/redis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
26
26
  nlbone/adapters/db/redis/client.py,sha256=cT9TCigE-ndB-ckcpuh8cTS1AOVKS3rWNG_WYxD0CAM,930
27
27
  nlbone/adapters/http_clients/__init__.py,sha256=w-Yr9CLuXMU71N0Ada5HbvP1DB53wqeP6B-i5rALlTo,150
28
28
  nlbone/adapters/http_clients/pricing/__init__.py,sha256=ElA9NFcAR9u4cqb_w3PPqKU3xGeyjNLQ8veJ0ql2iz0,81
29
- nlbone/adapters/http_clients/pricing/pricing_service.py,sha256=VJxOyatABcVN6Gjj01h-yN_2PqTdrC_2g6WvTDGMo4k,3441
29
+ nlbone/adapters/http_clients/pricing/pricing_service.py,sha256=EIHxOPEJRGzUKwI3zaFQAawM15xt2Ox3D0Z_mu541_A,3764
30
30
  nlbone/adapters/http_clients/uploadchi/__init__.py,sha256=uBzEOuVtY22teWW2b36Pitkdk5yVdSqa6xbg22JfTNg,105
31
31
  nlbone/adapters/http_clients/uploadchi/uploadchi.py,sha256=erpjOees25FW0nuK1PkYS-oU0h8MeRV9Rhs1cf3gaEs,4881
32
32
  nlbone/adapters/http_clients/uploadchi/uploadchi_async.py,sha256=PQbVNeaYde5CmgT3vcnQoI1PGeSs9AxHlPFuB8biOmU,4717
@@ -82,7 +82,7 @@ nlbone/interfaces/api/additional_filed/default_field_rules/__init__.py,sha256=LU
82
82
  nlbone/interfaces/api/additional_filed/default_field_rules/image_field_rules.py,sha256=ecKqPeXZ-YiF14RK9PmK7ln3PCzpCUc18S5zm5IF3fw,339
83
83
  nlbone/interfaces/api/dependencies/__init__.py,sha256=rnYRrFVZCfICQrp_PVFlzNg3BeC57yM08wn2DbOHCfk,359
84
84
  nlbone/interfaces/api/dependencies/async_auth.py,sha256=TZlFzT-mnPz1WBL0wh3nOlBXDjY-7B0-b4wBT8O6pLM,1890
85
- nlbone/interfaces/api/dependencies/auth.py,sha256=4WrjR3UgHI4S-HnBwdyLKEKBtofHkNuJ63Piayu9Dh4,3200
85
+ nlbone/interfaces/api/dependencies/auth.py,sha256=H7xsvYfcnrgBR4mjhyMnfAMRHFf4QC18vAQ_c52rJUI,3200
86
86
  nlbone/interfaces/api/dependencies/client_credential.py,sha256=Bo4dYx75Qw0JzTKD9ZfV5EXDEOuwndJk2D-V37K2ePg,1293
87
87
  nlbone/interfaces/api/dependencies/db.py,sha256=-UD39J_86UU7ZJs2ZncpdND0yhAG0NeeeALrgSDuuFw,466
88
88
  nlbone/interfaces/api/dependencies/uow.py,sha256=QfLEvLYLNWZJQN1k-0q0hBVtUld3D75P4j39q_RjcnE,1181
@@ -116,8 +116,8 @@ nlbone/utils/normalize_mobile.py,sha256=sGH4tV9gX-6eVKozviNWJhm1DN1J28Nj-ERldCYk
116
116
  nlbone/utils/read_files.py,sha256=mx8dfvtaaARQFRp_U7OOiERg-GT62h09_lpTzIQsVhs,291
117
117
  nlbone/utils/redactor.py,sha256=-V4HrHmHwPi3Kez587Ek1uJlgK35qGSrwBOvcbw8Jas,1279
118
118
  nlbone/utils/time.py,sha256=DjjyQ9GLsfXoT6NK8RDW2rOlJg3e6sF04Jw6PBUrSvg,1268
119
- nlbone-0.9.3.dist-info/METADATA,sha256=jBFvMHyALb-EjiTWG-9pCxKc-urXlztY-_hsah-4IgI,2294
120
- nlbone-0.9.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
121
- nlbone-0.9.3.dist-info/entry_points.txt,sha256=CpIL45t5nbhl1dGQPhfIIDfqqak3teK0SxPGBBr7YCk,59
122
- nlbone-0.9.3.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
- nlbone-0.9.3.dist-info/RECORD,,
119
+ nlbone-0.9.5.dist-info/METADATA,sha256=lc5St2IMS1hkjpvAtPsrJWihPiUUD4NFS5V2y3ntg74,2294
120
+ nlbone-0.9.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
121
+ nlbone-0.9.5.dist-info/entry_points.txt,sha256=CpIL45t5nbhl1dGQPhfIIDfqqak3teK0SxPGBBr7YCk,59
122
+ nlbone-0.9.5.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
+ nlbone-0.9.5.dist-info/RECORD,,
File without changes