fastgenerateapi 1.1.18__py2.py3-none-any.whl → 1.1.21__py2.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 fastgenerateapi might be problematic. Click here for more details.

@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 1, 18)
11
+ VERSION = (1, 1, 21)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -174,7 +174,10 @@ class GetAllView(BaseView, GetMixin):
174
174
  for key, value in self.prefetch_related_fields.items():
175
175
  if value and type(value) in [list, tuple, set]:
176
176
  for val in value:
177
- get_all_schema_include.append(key + "__" + val)
177
+ val_str = val
178
+ if type(val) in [list, tuple, set]:
179
+ val_str = val[0]
180
+ get_all_schema_include.append(key + "__" + val_str)
178
181
  self.get_all_schema = self.get_all_schema or get_all_schema_factory(
179
182
  self.model_class, include=get_all_schema_include
180
183
  ) or self.get_one_schema if hasattr(self, "get_one_schema") else get_one_schema_factory(self.model_class)
@@ -71,7 +71,10 @@ class GetOneView(BaseView, GetMixin):
71
71
  for key, value in self.prefetch_related_fields.items():
72
72
  if value and type(value) in [list, tuple, set]:
73
73
  for val in value:
74
- get_one_schema_include.append(key + "__" + val)
74
+ val_str = val
75
+ if type(val) in [list, tuple, set]:
76
+ val_str = val[0]
77
+ get_one_schema_include.append(key + "__" + val_str)
75
78
  self.get_one_schema = self.schema or self.get_one_schema or get_one_schema_factory(
76
79
  model_class=self.model_class,
77
80
  include=get_one_schema_include,
@@ -5,5 +5,3 @@ from .file_settings import *
5
5
  from .jwt_settings import *
6
6
  from .sms_settings import *
7
7
 
8
-
9
-
@@ -66,9 +66,7 @@ class SettingsModel(BaseModel):
66
66
  content += f" # {v.description}\n"
67
67
  content += "\n"
68
68
  if etcd_settings and etcd_settings.ETCD_SETTING_KEY:
69
- import etcd3
70
- etcd = etcd3.client(**etcd_settings.model_dump(exclude_unset=True))
71
- etcd.put(etcd_settings.ETCD_SETTING_KEY, content)
69
+ etcd_settings.client.put(etcd_settings.ETCD_SETTING_KEY, content)
72
70
  else:
73
71
  with open(file=path, mode='w', encoding='utf-8') as f:
74
72
  f.writelines(content)
@@ -94,19 +92,25 @@ class SettingsModel(BaseModel):
94
92
  if isinstance(v, FieldInfo):
95
93
  setting_dict[k] = v.annotation(_env_file=str(path))
96
94
  elif str(path).__contains__('.yaml'):
95
+ data_dict = None
97
96
  if os.path.isfile(path):
98
97
  with open(path, 'r', encoding='utf-8') as file:
99
98
  data_dict = yaml.safe_load(file)
100
- elif etcd_settings and etcd_settings.ETCD_SETTING_KEY:
101
- import etcd3
102
- etcd = etcd3.client(**etcd_settings.model_dump(exclude_unset=True))
103
- res, metadata = etcd.get(etcd_settings.ETCD_SETTING_KEY)
104
- data_dict = yaml.safe_load(res)
105
99
  else:
100
+ if not etcd_settings:
101
+ etcd_settings = EtcdSettings()
102
+ if etcd_settings.ETCD_SETTING_KEY:
103
+ res, metadata = etcd_settings.client.get(etcd_settings.ETCD_SETTING_KEY)
104
+ data_dict = yaml.safe_load(res)
105
+ if not data_dict:
106
106
  raise ValidationException(errors="配置错误")
107
107
  for k, v in setting_models.items():
108
108
  if isinstance(v, FieldInfo):
109
- setting_dict[k] = v.annotation(**data_dict.get(v.annotation.__name__, {}))
109
+ if hasattr(v.annotation, "Config") and v.annotation.Config.env_prefix:
110
+ annotation_dict = {k_i.removeprefix(v.annotation.Config.env_prefix): v_i for k_i, v_i in data_dict.get(v.annotation.__name__, {}).items()}
111
+ else:
112
+ annotation_dict = data_dict.get(v.annotation.__name__, {})
113
+ setting_dict[k] = v.annotation(**annotation_dict)
110
114
 
111
115
  setting_data = cls(**setting_dict)
112
116
  global settings
@@ -115,6 +119,14 @@ class SettingsModel(BaseModel):
115
119
  settings.redis_settings = setting_data.redis_settings
116
120
  return setting_data
117
121
 
122
+ def watch(self):
123
+ """
124
+ 监听文件或这etcd变化,待完善
125
+ 借用 etcd.watch(target)
126
+ :return:
127
+ """
128
+ ...
129
+
118
130
 
119
131
  settings = SettingsModel()
120
132
 
@@ -23,9 +23,17 @@ class EtcdSettings(BaseSettings):
23
23
  env_prefix="",
24
24
  env_file=".env",
25
25
  case_sensitive=True,
26
- extra='ignore'
26
+ extra='ignore',
27
+ frozen=True,
27
28
  )
28
29
 
30
+ @property
31
+ def client(self):
32
+ import etcd3
33
+ etcd_dict = self.model_dump(exclude_unset=True, by_alias=True, exclude={"ETCD_SETTING_KEY", })
34
+ etcd = etcd3.client(**{key.removeprefix("ETCD_").lower(): value for key, value in etcd_dict.items()})
35
+
36
+ return etcd
29
37
 
30
38
 
31
39
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.1.18
3
+ Version: 1.1.21
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -1,5 +1,5 @@
1
1
  fastgenerateapi/__init__.py,sha256=eh2qtp7FbjrgaRX5b3H3UWpasFdNHbVFqLUhpqVbaTU,1287
2
- fastgenerateapi/__version__.py,sha256=gGiH1aF2jZOpi5oIq-BQ3smPy88ykxJZykKfGpmDlVM,497
2
+ fastgenerateapi/__version__.py,sha256=0xRZ1CfqeRcMqpMktZAkQScpQ6OE77bWp9qqmkahXwg,497
3
3
  fastgenerateapi/api_view/__init__.py,sha256=zkaTX5JxsNfjF-dFeEbHfUB58vhPMjm6Iiqx9HgJOrY,14
4
4
  fastgenerateapi/api_view/api_view.py,sha256=mfD8GB-hnyI2XO3tkSOlEa2FfBLdq0_Wqvp8gFrXFKU,1160
5
5
  fastgenerateapi/api_view/base_view.py,sha256=AUWMd2Ys5mVwifN5iOs7BjpBqCF_ktv23oEp7sHR1g0,9984
@@ -7,8 +7,8 @@ fastgenerateapi/api_view/create_view.py,sha256=NvJ0ocD2UMHcdipA4W7MYamxAw8sYeXAc
7
7
  fastgenerateapi/api_view/delete_filter_view.py,sha256=ZP9pmRNeCTu_Go4ErfnDPnkPMShEh_Ql18iNCfMNJ3s,2838
8
8
  fastgenerateapi/api_view/delete_tree_view.py,sha256=oqkWQNlA7TNZHHRTJJwxidOHxOgmvUpcnu81cT3oTA0,4083
9
9
  fastgenerateapi/api_view/delete_view.py,sha256=FvaltPR1ttLfUvBoRoSHP-dGb79LRZlEMSEbYzE_W1E,3497
10
- fastgenerateapi/api_view/get_all_view.py,sha256=KnbjEZZ6FxxoVDbIqkgL4DoVmzqVjelmeLOZCcg-FOI,9721
11
- fastgenerateapi/api_view/get_one_view.py,sha256=N54M5F_vtjDlB7XlnPNhIbzEJ-KHyN5q4_jnIGkZ5eo,4201
10
+ fastgenerateapi/api_view/get_all_view.py,sha256=Wg8NxFU61BuJz2kicaTXcPSUR1oJZ8lrWIVvFCdV-5k,9871
11
+ fastgenerateapi/api_view/get_one_view.py,sha256=gCzkoJsBMxdD-bUwNtJvv2I2c5tpUtE2B_MY2BkjRqY,4351
12
12
  fastgenerateapi/api_view/get_relation_view.py,sha256=coVqhD29WW7SzdAeqM5LFtNzMulzzJyELT2En-56CF4,9780
13
13
  fastgenerateapi/api_view/get_tree_view.py,sha256=8BQomoOU954bXrqGzeFrKS8ydHL9VPxQfwvhV59rQxg,9312
14
14
  fastgenerateapi/api_view/sql_get_view.py,sha256=wxYI0JuH8Gw99LfMMwA4rQ_a_tBrKYxYhA7MNGQOx3A,6691
@@ -82,11 +82,11 @@ fastgenerateapi/schemas_factory/get_tree_schema_factory.py,sha256=v0DAf7kwB-17rH
82
82
  fastgenerateapi/schemas_factory/response_factory.py,sha256=C-E3lqIdfIJCIZhvmSaAiNJpYVOs6AGVyl90B5KRo4M,1655
83
83
  fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py,sha256=dhgMvXZIq4av7puIMiQOTuVqNOuBoMvBZVd98GWJTRg,1810
84
84
  fastgenerateapi/schemas_factory/update_schema_factory.py,sha256=E-86vF98Ed92Q2VFqtS35xqxr_c34du9ok42JBfnj1g,3729
85
- fastgenerateapi/settings/__init__.py,sha256=dlyJb7BNh8Svau-UOrV4pxfoSYnNTA6eE41fu43vlT8,173
86
- fastgenerateapi/settings/all_settings.py,sha256=X-qzZ3bkZhgILDk4l6y7fQkT83D4ZBwbaa5HCezIdZI,4913
85
+ fastgenerateapi/settings/__init__.py,sha256=n6ZGy9R99ln330mshMqav6XRTAfDR1SP5eV8LshI6OQ,169
86
+ fastgenerateapi/settings/all_settings.py,sha256=bPUrQSZkwtREMfwcTb656u8tcXQn_rHqNhU5HqoQa1w,5375
87
87
  fastgenerateapi/settings/app_settings.py,sha256=kq0O4FZMveiLdzwRkkH1E1byccoNGlLyz7G4fNTZm6w,7357
88
88
  fastgenerateapi/settings/db_settings.py,sha256=duTgLjMHO6MTDfEZ2tkAGiSXrTKuHSLBJW00l5_rv7g,1570
89
- fastgenerateapi/settings/etcd_settings.py,sha256=z93EoutIrrbc0ZMae-6lA2Vik1z3D_hO9OXtjtfRV5I,1205
89
+ fastgenerateapi/settings/etcd_settings.py,sha256=agPHJmIp_w_3iWCKKLIWSdp22cbJtc6kBSoa8fB5IXM,1526
90
90
  fastgenerateapi/settings/file_settings.py,sha256=8Ra5H0nxRp1r_Ib_RGbNO0rUFaxqYMjuJT9A4fHE3Oo,857
91
91
  fastgenerateapi/settings/jwt_settings.py,sha256=mRtzLZz1bntrl6UXAnIq6xilEEN8NS8oJSv62CGXOEs,971
92
92
  fastgenerateapi/settings/otlp_settings.py,sha256=4haWpSdJBeor-rq_rBOgQl6oYRv9eppdwm1yWGt6GyE,3161
@@ -104,8 +104,8 @@ fastgenerateapi/utils/snowflake.py,sha256=GiFVkE10sPiqJ094sMfrPsaV7Y9Y3c1djrSfgs
104
104
  fastgenerateapi/utils/str_util.py,sha256=c-jUlCFw-Dz4W1W9Jc1TqGZw3JXu-qN5ovnE6fjc9j0,3445
105
105
  fastgenerateapi/utils/swagger_to_js.py,sha256=pPPTag6TYtxdbKMHD3m8lJvc8Gv9HC97CGHt4esU1-E,530
106
106
  script/__init__.py,sha256=26UWatnbm6ZIwQMuu9NNzQ0IW1ACO4Oe9caModuTpWM,4
107
- fastgenerateapi-1.1.18.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
108
- fastgenerateapi-1.1.18.dist-info/METADATA,sha256=oGrQjDP8H9tk33ek2X-_Q7fg3pfkZmyu5g3rAK3juh8,6025
109
- fastgenerateapi-1.1.18.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
110
- fastgenerateapi-1.1.18.dist-info/top_level.txt,sha256=CW2SlpYjTRdacF-5ufnPMtwpYcR0XYn_bDxa2ZrrTBI,23
111
- fastgenerateapi-1.1.18.dist-info/RECORD,,
107
+ fastgenerateapi-1.1.21.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
108
+ fastgenerateapi-1.1.21.dist-info/METADATA,sha256=VOKh5AZkjuZodjO2trRXxsLP2RM5J9vk7CEgi42ScMg,6025
109
+ fastgenerateapi-1.1.21.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
110
+ fastgenerateapi-1.1.21.dist-info/top_level.txt,sha256=CW2SlpYjTRdacF-5ufnPMtwpYcR0XYn_bDxa2ZrrTBI,23
111
+ fastgenerateapi-1.1.21.dist-info/RECORD,,