fastgenerateapi 0.0.23__py2.py3-none-any.whl → 0.0.26__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.

Files changed (38) hide show
  1. fastgenerateapi/__init__.py +1 -0
  2. fastgenerateapi/__version__.py +1 -1
  3. fastgenerateapi/api_view/base_view.py +29 -14
  4. fastgenerateapi/api_view/delete_filter_view.py +67 -0
  5. fastgenerateapi/api_view/delete_tree_view.py +13 -11
  6. fastgenerateapi/api_view/delete_view.py +12 -11
  7. fastgenerateapi/api_view/get_tree_view.py +2 -1
  8. fastgenerateapi/api_view/mixin/base_mixin.py +1 -1
  9. fastgenerateapi/api_view/mixin/dbmodel_mixin.py +5 -3
  10. fastgenerateapi/channel/consumer.py +5 -0
  11. fastgenerateapi/channel/websocket_view.py +3 -0
  12. fastgenerateapi/controller/ws_controller.py +8 -6
  13. fastgenerateapi/example/models.py +19 -11
  14. fastgenerateapi/example/routers.py +3 -3
  15. fastgenerateapi/example/schemas.py +1 -1
  16. fastgenerateapi/example/views.py +46 -10
  17. fastgenerateapi/my_fields/__init__.py +4 -0
  18. fastgenerateapi/my_fields/aes_field.py +166 -0
  19. fastgenerateapi/my_fields/enum_field.py +215 -0
  20. fastgenerateapi/my_fields/pk_field.py +68 -0
  21. fastgenerateapi/my_fields/pwd_field.py +81 -0
  22. fastgenerateapi/my_fields/soft_delete_field.py +54 -0
  23. fastgenerateapi/pydantic_utils/base_model.py +3 -1
  24. fastgenerateapi/schemas_factory/common_function.py +2 -1
  25. fastgenerateapi/schemas_factory/common_schema_factory.py +1 -1
  26. fastgenerateapi/schemas_factory/create_schema_factory.py +9 -3
  27. fastgenerateapi/schemas_factory/get_all_schema_factory.py +7 -0
  28. fastgenerateapi/schemas_factory/get_one_schema_factory.py +8 -0
  29. fastgenerateapi/schemas_factory/get_tree_schema_factory.py +8 -0
  30. fastgenerateapi/schemas_factory/update_schema_factory.py +9 -3
  31. fastgenerateapi/settings/settings.py +13 -7
  32. fastgenerateapi/utils/aes.py +93 -0
  33. fastgenerateapi/utils/snowflake.py +148 -0
  34. {fastgenerateapi-0.0.23.dist-info → fastgenerateapi-0.0.26.dist-info}/METADATA +1 -1
  35. {fastgenerateapi-0.0.23.dist-info → fastgenerateapi-0.0.26.dist-info}/RECORD +38 -29
  36. {fastgenerateapi-0.0.23.dist-info → fastgenerateapi-0.0.26.dist-info}/WHEEL +1 -1
  37. {fastgenerateapi-0.0.23.dist-info → fastgenerateapi-0.0.26.dist-info}/LICENSE +0 -0
  38. {fastgenerateapi-0.0.23.dist-info → fastgenerateapi-0.0.26.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,93 @@
1
+ from typing import Union
2
+
3
+ from Crypto import Random
4
+ from Crypto.Cipher import AES
5
+ import base64
6
+
7
+
8
+ class AESCipher(object):
9
+ """
10
+ 可用于二进制(文件)和字符串加密
11
+ """
12
+ def __init__(self, salt):
13
+ '''
14
+ CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)
15
+ '''
16
+ self.salt = self.check_key(salt)
17
+ # 这里使用随机偏移量
18
+ # self.iv = self.check_key(iv) if iv else self.salt
19
+ # 数据块的大小 16位
20
+ self.BS = AES.block_size
21
+ # CBC模式 相对安全 因为有偏移向量 iv 也是16位字节的
22
+ self.mode = AES.MODE_CBC
23
+ # 填充函数 因为AES加密是一段一段加密的 每段都是BS位字节,不够的话是需要自己填充的
24
+ self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS).encode('utf-8')
25
+ # 将填充的数据剔除
26
+ self.unpad = lambda s: s[:-ord(s[len(s) - 1:])]
27
+
28
+ def encrypt(self, text: Union[bytes, str]) -> bytes:
29
+ text = self.check_data(text)
30
+ text = self.pad(text)
31
+ # 随机获取iv
32
+ iv = Random.new().read(AES.block_size)
33
+ # 初始化自定义
34
+ cipher = AES.new(self.salt, self.mode, iv)
35
+ # 此处是将密文和iv一起 base64 解密的时候就可以根据这个iv来解密
36
+ return base64.b64encode(iv + cipher.encrypt(text))
37
+ # return base64.b64encode(iv + cipher.encrypt(text)).decode("utf-8")
38
+
39
+ def decrypt(self, text: Union[bytes, str, int]) -> bytes:
40
+ text = self.check_data(text)
41
+ # 先将密文进行base64解码
42
+ text = base64.b64decode(text)
43
+ # 取出iv值
44
+ iv = text[:self.BS]
45
+ # 初始化自定义
46
+ cipher = AES.new(self.salt, self.mode, iv)
47
+ return self.unpad(cipher.decrypt(text[self.BS:]))
48
+ # return self.unpad(cipher.decrypt(text[self.BS:])).decode("utf-8")
49
+
50
+ def check_key(self, key: Union[bytes, str]) -> bytes:
51
+ '''
52
+ 检测key的长度是否为16,24或者32bytes的长度
53
+ '''
54
+ if isinstance(key, bytes):
55
+ assert len(key) in [16, 24, 32]
56
+ return key
57
+ elif isinstance(key, str):
58
+ assert len(key.encode("utf-8")) in [16, 24, 32]
59
+ return key.encode("utf-8")
60
+ else:
61
+ raise Exception(f'密钥必须为str或bytes,不能为{type(key)}')
62
+
63
+ def check_data(self, data: Union[bytes, str, int]) -> bytes:
64
+ '''
65
+ 检测加密的数据类型
66
+ '''
67
+ if isinstance(data, int):
68
+ data = str(data).encode('utf-8')
69
+ elif isinstance(data, str):
70
+ data = data.encode('utf-8')
71
+ elif isinstance(data, bytes):
72
+ pass
73
+ else:
74
+ raise Exception(f'加密的数据必须为str或bytes,不能为{type(data)}')
75
+ return data
76
+
77
+
78
+ # if __name__ == '__main__':
79
+ # # 加密字符串
80
+ # import json
81
+ # # aes_encrypt = AESCipher('ningbozhihuirend') # 自己设定的密钥
82
+ # aes_encrypt = AESCipher('ningbozhihuirend') # 自己设定的密钥
83
+ # data = json.dumps({"mobile": "1312345646", "content": "xczczczc"})
84
+ # print(type(data))
85
+ # print(data)
86
+ # e = aes_encrypt.encrypt(data).decode("utf-8") # 加密内容
87
+ # print(type(e))
88
+ # print(e)
89
+ # d = aes_encrypt.decrypt(e).decode("utf-8")
90
+ # print(type(d))
91
+ # print(json.loads(d))
92
+ # print(len(e))
93
+ # print("加密后%s,解密后%s" % (e, d))
@@ -0,0 +1,148 @@
1
+ import time
2
+ from typing import Any
3
+
4
+ from fastapi.exceptions import RequestValidationError
5
+
6
+
7
+ # 64位ID的划分
8
+ from fastgenerateapi.settings.register_settings import settings
9
+
10
+ WORKER_ID_BITS = 5 # 机器位
11
+ DATACENTER_ID_BITS = 5 # 数据位
12
+ SEQUENCE_BITS = 12 # 循环位
13
+
14
+ # 最大取值计算
15
+ MAX_WORKER_ID = -1 ^ (-1 << WORKER_ID_BITS)
16
+ MAX_DATACENTER_ID = -1 ^ (-1 << DATACENTER_ID_BITS)
17
+
18
+ # 移位偏移计算
19
+ WOKER_ID_SHIFT = SEQUENCE_BITS
20
+ DATACENTER_ID_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS
21
+ TIMESTAMP_LEFT_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS + DATACENTER_ID_BITS
22
+
23
+ # 序号循环掩码
24
+ SEQUENCE_MASK = -1 ^ (-1 << SEQUENCE_BITS)
25
+
26
+ # Twitter元年时间戳
27
+ # TWEPOCH = 1288834974657
28
+ # 2022年10月24号00:00
29
+ TWEPOCH = 1666540800000
30
+
31
+
32
+ class InvalidSystemClock(Exception):
33
+ def __init__(
34
+ self,
35
+ status_code: int = 400,
36
+ message: str = "请求失败",
37
+ detail: Any = None,
38
+ ) -> None:
39
+ self.status_code = status_code
40
+ self.message = message
41
+ self.detail = detail
42
+
43
+
44
+ class IdWorker(object):
45
+ """
46
+ 用于生成IDs
47
+ """
48
+
49
+ def __init__(self, datacenter_id=1, worker_id=1, sequence=0):
50
+ """
51
+ 初始化
52
+ :param datacenter_id: 数据中心(机器区域)ID
53
+ :param worker_id: 机器ID
54
+ :param sequence: 其实序号
55
+ """
56
+ # sanity check
57
+ if worker_id > MAX_WORKER_ID or worker_id < 0:
58
+ raise ValueError('worker_id值越界')
59
+
60
+ if datacenter_id > MAX_DATACENTER_ID or datacenter_id < 0:
61
+ raise ValueError('datacenter_id值越界')
62
+
63
+ self.worker_id = worker_id
64
+ self.datacenter_id = datacenter_id
65
+ self.sequence = sequence
66
+
67
+ self.last_timestamp = -1 # 上次计算的时间戳
68
+
69
+ def _gen_timestamp(self):
70
+ """
71
+ 生成整数时间戳
72
+ :return:int timestamp
73
+ """
74
+ return int(time.time() * 1000)
75
+
76
+ def get_post_id(self):
77
+ """
78
+ 获取新ID
79
+ :return:
80
+ """
81
+ timestamp = self._gen_timestamp()
82
+
83
+ # 时钟回拨
84
+ if timestamp < self.last_timestamp:
85
+ raise RequestValidationError
86
+
87
+ if timestamp == self.last_timestamp:
88
+ self.sequence = (self.sequence + 1) & SEQUENCE_MASK
89
+ if self.sequence == 0:
90
+ timestamp = self._til_next_millis(self.last_timestamp)
91
+ else:
92
+ self.sequence = 0
93
+
94
+ self.last_timestamp = timestamp
95
+
96
+ # new_id = ((timestamp - TWEPOCH) << TIMESTAMP_LEFT_SHIFT) | (self.datacenter_id << DATACENTER_ID_SHIFT) | \
97
+ # (self.worker_id << WOKER_ID_SHIFT) | self.sequence
98
+ new_id = ((timestamp - TWEPOCH) << TIMESTAMP_LEFT_SHIFT) | self.sequence
99
+ return 'PT' + str(new_id)
100
+
101
+ def get_id(self):
102
+ """
103
+ 获取新ID
104
+ :return:
105
+ """
106
+ timestamp = self._gen_timestamp()
107
+
108
+ # 时钟回拨
109
+ if timestamp < self.last_timestamp:
110
+ # logging.error('clock is moving backwards. Rejecting requests until {}'.format(self.last_timestamp))
111
+ raise InvalidSystemClock(
112
+ status_code=500,
113
+ message='时钟回拨异常',
114
+ detail='clock is moving backwards. Rejecting requests until {}'.format(self.last_timestamp))
115
+
116
+ if timestamp == self.last_timestamp:
117
+ self.sequence = (self.sequence + 1) & SEQUENCE_MASK
118
+ if self.sequence == 0:
119
+ timestamp = self._til_next_millis(self.last_timestamp)
120
+ else:
121
+ self.sequence = 0
122
+
123
+ self.last_timestamp = timestamp
124
+
125
+ new_id = ((timestamp - TWEPOCH) << TIMESTAMP_LEFT_SHIFT) | (self.datacenter_id << DATACENTER_ID_SHIFT) | \
126
+ (self.worker_id << WOKER_ID_SHIFT) | self.sequence
127
+ return new_id
128
+
129
+ def _til_next_millis(self, last_timestamp):
130
+ """
131
+ 等到下一毫秒
132
+ """
133
+ timestamp = self._gen_timestamp()
134
+ while timestamp <= last_timestamp:
135
+ timestamp = self._gen_timestamp()
136
+ return timestamp
137
+
138
+
139
+ worker = IdWorker(datacenter_id=settings.app_settings.DATACENTER_ID, worker_id=settings.app_settings.WORKER_ID)
140
+
141
+
142
+ # if __name__ == '__main__':
143
+ # # worker = IdWorker()
144
+ # pk = worker.get_id()
145
+ # print(pk)
146
+ # print(len(str(pk)), len("9223372036854775807"))
147
+ # print(bin(pk))
148
+ # print(len(bin(pk)))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 0.0.23
3
+ Version: 0.0.26
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -1,22 +1,23 @@
1
- fastgenerateapi/__init__.py,sha256=vD8nsRX72c8qMUK32Nfw7HlNkPJHmq9WUDza2jDGu_c,1190
2
- fastgenerateapi/__version__.py,sha256=fyDYKIRfLQQyFKzw60yjAqlpke8ZCF9m8_BKmy5vDBY,497
1
+ fastgenerateapi/__init__.py,sha256=70KtJJxhQcntZJTt2ilIR2pvokI4X6Xp200nHGZ5dkU,1264
2
+ fastgenerateapi/__version__.py,sha256=8Y5ui80id1BS57BcGr_KGOGJN0kvqVqW_BRkGxzU_es,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
- fastgenerateapi/api_view/base_view.py,sha256=1RoDnHJfZaaORYHWWoYfue1a802HqtjY4OKfmyJ7meM,9043
5
+ fastgenerateapi/api_view/base_view.py,sha256=EvEVPJIkJNQct-s_DtN1YdRA3r97RDRYmLsPGbZOPzU,9245
6
6
  fastgenerateapi/api_view/create_view.py,sha256=q8vlTvJfjmhqLKA4WAiIzpSSgKEvo96Ftkaa2cGwUSo,4409
7
- fastgenerateapi/api_view/delete_tree_view.py,sha256=f_8xfsL4e8e9d-5nnMduIz7mneciQJ_EsxICUqaEErA,3625
8
- fastgenerateapi/api_view/delete_view.py,sha256=mqLtiWK6j_77ihUt5ikOQZhz8OIi952B9kRocSObWCE,3036
7
+ fastgenerateapi/api_view/delete_filter_view.py,sha256=QSrFEjYmhCkSJIZw6XYl7elJr4PycxqkhMmT1D8JjJk,2479
8
+ fastgenerateapi/api_view/delete_tree_view.py,sha256=11kdktfLuUAnI381_uVoBw_PwCTquigQjADG7JPJEuo,3695
9
+ fastgenerateapi/api_view/delete_view.py,sha256=BuZ4hZ1wSGHBlWTS4wKFA1w5IfEaFDdgzUFvHKv3WBo,3104
9
10
  fastgenerateapi/api_view/get_all_view.py,sha256=bokoPbB1yPZqxVuH8gQSz_2CrMyS3aQBNCMFgZTAccw,8313
10
11
  fastgenerateapi/api_view/get_one_view.py,sha256=BhhQMdcD85W2FgGiJBCdQfI1TYldVAGREK1ZQFPXjnc,3359
11
12
  fastgenerateapi/api_view/get_relation_view.py,sha256=h8D6N71L51Ifu2SkM3DcmYIICQTprrNmdW1Wbl_qeoM,9583
12
- fastgenerateapi/api_view/get_tree_view.py,sha256=TDrbJM7SZzdbbLbQS9XEpDvF5SIuDGLVPYpUA9cLPd8,9110
13
+ fastgenerateapi/api_view/get_tree_view.py,sha256=VRg9xqBcxXfrHrDeOUshsbEuOX8UExvB-WMWaa9-Ad8,9129
13
14
  fastgenerateapi/api_view/sql_get_view.py,sha256=wxYI0JuH8Gw99LfMMwA4rQ_a_tBrKYxYhA7MNGQOx3A,6691
14
15
  fastgenerateapi/api_view/switch_view.py,sha256=TSkvNDzYXZJbdUmh505-YInFdniCgAYUuElBWh4BsIw,3023
15
16
  fastgenerateapi/api_view/update_relation_view.py,sha256=UvCdnhazEein2jSRx-KFbMe7LK4ojoFXAwRwxCumOZQ,3550
16
17
  fastgenerateapi/api_view/update_view.py,sha256=9b5-RxfSAGJIiQheM_qgin8Tkd9-Nz8LOCHw6IPatJk,3894
17
18
  fastgenerateapi/api_view/mixin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- fastgenerateapi/api_view/mixin/base_mixin.py,sha256=AqAWsS2obNt7e1cwzUccGas1ifqrit6PyTXtEpH325k,6577
19
- fastgenerateapi/api_view/mixin/dbmodel_mixin.py,sha256=PDhPzGCPPUHhbCksn-BkgTNfUWeBMkEEljnCp_H9kg4,4196
19
+ fastgenerateapi/api_view/mixin/base_mixin.py,sha256=JI9xFkWCTLVKI7aP92v2cXCIY8GPAIE46JxJgNKSbEw,6595
20
+ fastgenerateapi/api_view/mixin/dbmodel_mixin.py,sha256=2JY04R3_d_mxK_yp4iS746L8Gd4iONqOWHLpGerwyRk,4258
20
21
  fastgenerateapi/api_view/mixin/get_mixin.py,sha256=cpyTHaKFNsAhbtnLkz057rGcaKJXipNS-m9ftITsz1I,266
21
22
  fastgenerateapi/api_view/mixin/response_mixin.py,sha256=zhWK6aqJtSvsjm6vkaDRXpYPGzh7FgLPyQS_SIoZWNc,2888
22
23
  fastgenerateapi/api_view/mixin/save_mixin.py,sha256=inRppAov9ruKqTgGhxPto84ETp1T1WP62n6OgEBIgyU,317
@@ -25,14 +26,14 @@ fastgenerateapi/cache/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
25
26
  fastgenerateapi/cache/cache_decorator.py,sha256=Mbxev-3BuTb61AsQ1x9iu29zOSN5SsdVhPgn7RonxUU,584
26
27
  fastgenerateapi/cache/key_builder.py,sha256=6Vudd19EGg1IUGT5ftPDqLUNCCqXzmQNV69zBfjGf9A,503
27
28
  fastgenerateapi/channel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- fastgenerateapi/channel/consumer.py,sha256=R4VIG5knuEZJ9eHryTK6tPcs7XRUR1ZQhX7Y7LYyPfM,2995
29
- fastgenerateapi/channel/websocket_view.py,sha256=GE-R9tNYS0SMW_WGYFhMMZGY9eoIsRFUCMKAAyOojno,738
29
+ fastgenerateapi/channel/consumer.py,sha256=qaxv2M750EFxuWSnu-T74D-mBBL_pIn7zbA-3GUoOso,3069
30
+ fastgenerateapi/channel/websocket_view.py,sha256=3oGppnu1HTQbK-HquGFT04AKj1T7lDkW0lmMQYeh5yI,795
30
31
  fastgenerateapi/controller/__init__.py,sha256=eM5a3k_G0bf-k_WcwfcBbI-M3kLFJIITBWX85lVyClE,316
31
32
  fastgenerateapi/controller/filter_controller.py,sha256=yqeOJpXeNYUQc_ueWM1cZgP4rIOyvO-LnQqX-eNavJs,3391
32
33
  fastgenerateapi/controller/router_controller.py,sha256=yq7oz8oiHKGbxWT5RvFXNQXYewzGaH0ODJFBrZewJEA,5321
33
34
  fastgenerateapi/controller/rpc_controller.py,sha256=keH9U5zWOaO3QArTl6uR6PxTNEh0Vb0uZ6gbE5_ugu4,2298
34
35
  fastgenerateapi/controller/search_controller.py,sha256=7L4aOF6s6XAVk7swP7KYS57fXiSu8VCBOibzgPlczrc,873
35
- fastgenerateapi/controller/ws_controller.py,sha256=olxJaPpa68nnyOdPOqDcTJz8Qxr3bRUbd10jQ1XO7yw,1589
36
+ fastgenerateapi/controller/ws_controller.py,sha256=QUJVsPo-M8s9bbewmIN_9oIOZGUXYh0YEqUZvAWfIqA,1667
36
37
  fastgenerateapi/data_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
38
  fastgenerateapi/data_type/data_type.py,sha256=mWxnXck-QkjmdkhFxjvr7GOQtyzuMIlSJfb4QsVuYBM,727
38
39
  fastgenerateapi/data_type/mysql_data_type.py,sha256=DOa-9DdyzG_Pvg1ESmSFa-e_fP_SP5KzDu9JLr1b2vw,233
@@ -41,33 +42,41 @@ fastgenerateapi/deps/filter_params_deps.py,sha256=v1DRbufhwza6qnk-5LWdx84OXdAy_c
41
42
  fastgenerateapi/deps/paginator_deps.py,sha256=SWXXNK9f9PXDzccHieNICSgPAG-5qMOKX2WRS4ZxHeY,3171
42
43
  fastgenerateapi/deps/tree_params_deps.py,sha256=qpDc_HEg9FJqxJkmiGMGm04qvRs4cwII63t-aGHWTA4,1264
43
44
  fastgenerateapi/example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- fastgenerateapi/example/models.py,sha256=uucsWcTbKEbbXShCFTlM2ZRm8Mf2SM4puuNUyeOSAow,1723
45
- fastgenerateapi/example/routers.py,sha256=hxwMFxF12ACLM03gRHaeFVasdxWP17cTX5EIdwypTP4,419
46
- fastgenerateapi/example/schemas.py,sha256=l-nPnocW5sqTpF3RRbpKOwJzBbrkORIjqw_O2lcVGng,1674
47
- fastgenerateapi/example/views.py,sha256=Dm_5fJVVOYFTVZ64_Ar-ya0wJjXfVhjQxXtWfdm4oNI,2223
45
+ fastgenerateapi/example/models.py,sha256=ewtkl_JcBaPXPvVxhKW98jYaED3PS7GYarfdrjrch1o,2134
46
+ fastgenerateapi/example/routers.py,sha256=gsmViGNqO1JbVc0M8tZPvD46kReOYJ5I457WwBHt4l4,437
47
+ fastgenerateapi/example/schemas.py,sha256=MRtyfWUjRSNPJKWPUHGXyMFUugGY8kylPAdq9gJE2CU,1682
48
+ fastgenerateapi/example/views.py,sha256=vj-Nk3z8tA0q8_blyAKzg_s7OEByPBos-2T-9ksl3Gc,3276
49
+ fastgenerateapi/my_fields/__init__.py,sha256=StbTm3_2IBZ8U5kEWxtNyZ3I-Qs-pCFd5vtAZTq52wA,202
50
+ fastgenerateapi/my_fields/aes_field.py,sha256=r4_Jhuq5lgwmITWjUYcFrv5uBR57GPGCVMgy3yNDvp4,4518
51
+ fastgenerateapi/my_fields/enum_field.py,sha256=uTzYFexX1uCPxVzvrCXSSqvpw134vlZDKBrzElmvDuw,7672
52
+ fastgenerateapi/my_fields/pk_field.py,sha256=JUjIpLb2qoNhAMELSOIahlNEk2gTe7KL3DaEZJBWrQk,1376
53
+ fastgenerateapi/my_fields/pwd_field.py,sha256=eUnarxEyHgpOzTBmsl0KxsI8lR7FzUDjxyFCKTqJDBU,2191
54
+ fastgenerateapi/my_fields/soft_delete_field.py,sha256=aZ1ThTzRmB3OF0ffVCzT5pQ8nFVEOPvOHHz3lyf5ZBE,1450
48
55
  fastgenerateapi/pydantic_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- fastgenerateapi/pydantic_utils/base_model.py,sha256=9D6Co19IRix35hjltTmnMuDTpSe5lqa7EDLHFkc83-M,694
56
+ fastgenerateapi/pydantic_utils/base_model.py,sha256=Yg7929Q4Zsquijc2sKt6T81aU-djqMWJ4HMYgpUHhjY,781
50
57
  fastgenerateapi/pydantic_utils/json_encoders.py,sha256=yzmezJk1FsLtuZ7gEM-xW1YWAO0aBf4615V6AgMrK4M,2814
51
58
  fastgenerateapi/schemas_factory/__init__.py,sha256=X9U96fiyRfCY0u6SzaCYG62RdpEGFX7yOZh_cJl6R2E,472
52
- fastgenerateapi/schemas_factory/common_function.py,sha256=yMOx_QILhsdd9Z9ddAv4DK7u0dPYKe2C3IJJFGDgJak,5214
53
- fastgenerateapi/schemas_factory/common_schema_factory.py,sha256=ATmCpgn4948Knw4sKf2hvUQuy7i7UUy3OEL5ws2hWoo,2896
54
- fastgenerateapi/schemas_factory/create_schema_factory.py,sha256=aDEHZf0NM6kBF0CnlQLIuQVixIBL4CvwEMXJprUf8bE,3293
59
+ fastgenerateapi/schemas_factory/common_function.py,sha256=zU46EbMm0NQndMpUuDSuxe2WcEr4puibehZMudbrifo,5229
60
+ fastgenerateapi/schemas_factory/common_schema_factory.py,sha256=3m8FgnjzTNacetspLG4m6mM25XO7rHmwUC2aExXkVlU,2910
61
+ fastgenerateapi/schemas_factory/create_schema_factory.py,sha256=4yQUerLMcIIs9dqVTvKSvEMpWlL_xkOh4Ufdui3l60Y,3739
55
62
  fastgenerateapi/schemas_factory/filter_schema_factory.py,sha256=d_fiiY5Oo8iiPgQaxlt9BrME3cObHsZgVNrv8qs1OoA,1284
56
- fastgenerateapi/schemas_factory/get_all_schema_factory.py,sha256=kazZE8zsZv3vYUuM3NXgKkbBsqit1n8Okqn_iZA3Q2s,4755
57
- fastgenerateapi/schemas_factory/get_one_schema_factory.py,sha256=z7_n1dr6L1RBPrWxgbeeIQuLsGld6OydMJ8gNzqbn84,2927
63
+ fastgenerateapi/schemas_factory/get_all_schema_factory.py,sha256=H2V0u04YfvhwyT0jhv4X4vFXa67niDaNbjV7E-1Z4RU,5175
64
+ fastgenerateapi/schemas_factory/get_one_schema_factory.py,sha256=8rrIzAnp5ZxWdVjGxCmcUxUPWmv7hFgHLhkEmvQCMIs,3373
58
65
  fastgenerateapi/schemas_factory/get_relation_schema_factory.py,sha256=00Mpz6kO4pH-fPoTv3HGT7P9XS0Q0Zi48WfAGy5YrNE,3117
59
- fastgenerateapi/schemas_factory/get_tree_schema_factory.py,sha256=DcaDbFENtet_jg63WkBqaA0NlVNwdc1ceiTY7n-ptm8,6819
66
+ fastgenerateapi/schemas_factory/get_tree_schema_factory.py,sha256=6HSXOKu73p4o2ugf4LnY8SJ18npdIGMqZ0itZVOATHU,7265
60
67
  fastgenerateapi/schemas_factory/response_factory.py,sha256=E5NAUcI9IWkH9xT517udWzOexF7U6sgVomcnHh2PxVc,1647
61
68
  fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py,sha256=fr-_J2FdLfhAQTXZHMwhF56KIf_y7suI9TCOmAV4zI8,1816
62
- fastgenerateapi/schemas_factory/update_schema_factory.py,sha256=B1Tsrbrrc9dx1C_MuCrMOA1D2XewUsnfgrnckjZvjhc,3289
69
+ fastgenerateapi/schemas_factory/update_schema_factory.py,sha256=_PRSNn8gy_DYoEFEQKWMYBMzyksJeKM2AyFUrVcYmFU,3737
63
70
  fastgenerateapi/settings/__init__.py,sha256=rqUtJyMLicobcyhmr74TepjmUQAEmlazKT3vjV_n3aA,6
64
71
  fastgenerateapi/settings/register_settings.py,sha256=yeVkXuarA_OdxPQ6F4y1eW-_OuFAm9eJcFaz-YZwodg,97
65
- fastgenerateapi/settings/settings.py,sha256=fQslDNJOSyjgufy8-cs2NfO4rE2hAH9vBwuyE7mScis,6393
72
+ fastgenerateapi/settings/settings.py,sha256=A0smBQ8YpDfvo6jjD4ztRhS2A_9stqS5hwsODwdu4Xw,6881
66
73
  fastgenerateapi/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ fastgenerateapi/utils/aes.py,sha256=2ewx-qc7wAN68iExyNM97F8dB1sXhfGYVpNWFYR_a1k,3569
67
75
  fastgenerateapi/utils/exception.py,sha256=dnBmVpHLUS_PZ2cwIvpAJ3ncswZnn31L98gNmCoe8_k,121
68
76
  fastgenerateapi/utils/parse_str.py,sha256=vDUjx_Fx0nOHwtkWnOauN21NB_ecNglr5bVBKrLL33g,850
69
- fastgenerateapi-0.0.23.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
70
- fastgenerateapi-0.0.23.dist-info/METADATA,sha256=TPJtI1NCL__uCXSz6SoFsC6A8K2EyUdbB1ENtCB4TXw,4887
71
- fastgenerateapi-0.0.23.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
72
- fastgenerateapi-0.0.23.dist-info/top_level.txt,sha256=7RBBRe1lBEnxZtP89_Wj1QwI2KE8r3Pi9IwywUHTdVg,16
73
- fastgenerateapi-0.0.23.dist-info/RECORD,,
77
+ fastgenerateapi/utils/snowflake.py,sha256=ufr6aayY0McRp6epw2AGMqSA-CEzvXwSF5VmnIzPhLo,4539
78
+ fastgenerateapi-0.0.26.dist-info/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
79
+ fastgenerateapi-0.0.26.dist-info/METADATA,sha256=MIHAsAPOCdXlqZ87-uhoqpgrgUWI6b02dpvIQg1oh7U,4887
80
+ fastgenerateapi-0.0.26.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
81
+ fastgenerateapi-0.0.26.dist-info/top_level.txt,sha256=7RBBRe1lBEnxZtP89_Wj1QwI2KE8r3Pi9IwywUHTdVg,16
82
+ fastgenerateapi-0.0.26.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.40.0)
2
+ Generator: bdist_wheel (0.41.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any