internal 1.0.29__py3-none-any.whl → 1.0.30__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.

Potentially problematic release.


This version of internal might be problematic. Click here for more details.

@@ -1,13 +1,44 @@
1
- from dataclasses import dataclass, asdict, fields
1
+ from dataclasses import dataclass, field, asdict, fields
2
2
  from typing import Optional
3
3
 
4
4
 
5
5
  @dataclass
6
6
  class InternalBaseInterface:
7
+ def __post_init__(self):
8
+ # 初始化 __explicitly_set_fields__ 集合
9
+ self.__explicitly_set_fields__ = set()
10
+
11
+ for f in fields(self):
12
+ value = getattr(self, f.name)
13
+ if f.name in self.__explicitly_set_fields__ or value is not f.default:
14
+ self.__explicitly_set_fields__.add(f.name)
15
+
7
16
  def __init__(self, **kwargs):
8
- valid_fields = {f.name: kwargs.get(f.name) for f in fields(self)}
9
- for name, value in valid_fields.items():
10
- setattr(self, name, value)
17
+ # 初始化 __explicitly_set_fields__ 集合
18
+ self.__explicitly_set_fields__ = set()
19
+
20
+ for f in fields(self):
21
+ if f.name in kwargs:
22
+ value = kwargs[f.name]
23
+ setattr(self, f.name, value)
24
+ self.__explicitly_set_fields__.add(f.name)
25
+ else:
26
+ setattr(self, f.name, f.default)
27
+
28
+ def to_dict(self, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False):
29
+ # 將 dataclass 轉換為字典
30
+ data = asdict(self)
31
+
32
+ if exclude_unset:
33
+ # 過濾掉那些未被明確設置的欄位
34
+ data = {k: v for k, v in data.items() if k in self.__explicitly_set_fields__ or v is not None}
35
+
36
+ if exclude_defaults:
37
+ # 過濾掉那些設置為預設值的欄位
38
+ data = {k: v for k, v in data.items() if v != self.__dataclass_fields__[k].default}
39
+
40
+ if exclude_none:
41
+ # 過濾掉那些值為 None 的欄位
42
+ data = {k: v for k, v in data.items() if v is not None}
11
43
 
12
- def to_dict(self):
13
- return {k: v for k, v in asdict(self).items() if v is not None}
44
+ return data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: internal
3
- Version: 1.0.29
3
+ Version: 1.0.30
4
4
  Summary:
5
5
  Author: Ray
6
6
  Author-email: ray@cruisys.com
@@ -20,13 +20,13 @@ internal/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  internal/http/requests.py,sha256=4Mdu_HIGDEgpgey8IPusqBn9s-3-oYGU0S49NK-khc4,1821
21
21
  internal/http/responses.py,sha256=SV9TZPNXZnzvPjEtvuHWcZT9tgY0U7N0H3P6fOZlWHk,2541
22
22
  internal/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- internal/interface/base_interface.py,sha256=92sZDc729PPQ62ezCAvTg7i1wP-Qmur3RO2NxoQUAqI,412
23
+ internal/interface/base_interface.py,sha256=s9eWT61i8NKQU34j9sG-2AQKoaLLUMN82p1Fd_sNr1M,1603
24
24
  internal/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  internal/middleware/log_request.py,sha256=bXAxmvvsYDhObXzfUw4ZNreKAWOo8ee_vpb6Xin5ztc,854
26
26
  internal/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  internal/model/base_model.py,sha256=Oc33c8AnPQcJEiEMQM_g3KT1b7iaa1IxgBMavds-_Ns,3010
28
28
  internal/model/operate.py,sha256=luEoP_Asvso_11qz1SAE1Kn5KxAnDRptM0VylC5tNik,1493
29
29
  internal/utils.py,sha256=0SubS0iUhDvjSX1F4TykasA5-enYJzt2VH-f7_0BnjI,1509
30
- internal-1.0.29.dist-info/METADATA,sha256=kJHfOEe_LKIJHvMGkFSP20Cxh10AgmVG_bz-aSFSdYA,625
31
- internal-1.0.29.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
- internal-1.0.29.dist-info/RECORD,,
30
+ internal-1.0.30.dist-info/METADATA,sha256=skZVne0jgpuDry8NM6AMFzxtWf3mMWm_QZffi4icZEI,625
31
+ internal-1.0.30.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
+ internal-1.0.30.dist-info/RECORD,,