core.utils
--- 工具函数¶
-
class
core.utils.
AdvancedJSONEncoder
(skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)¶ 基类:
json.encoder.JSONEncoder
定义ApiController JSON解析器
-
default
(obj)¶ Implement this method in a subclass such that it returns a serializable object for
o
, or calls the base implementation (to raise aTypeError
).For example, to support arbitrary iterators, you could implement default like this:
def default(self, o): try: iterable = iter(o) except TypeError: pass else: return list(iterable) # Let the base class default method raise the TypeError return JSONEncoder.default(self, o)
-
find_dict
= {'Decimal': <function AdvancedJSONEncoder.<lambda>>, 'date': <function AdvancedJSONEncoder.<lambda>>, 'datetime': <function AdvancedJSONEncoder.<lambda>>}¶
-
-
class
core.utils.
UpdateList
(*args, **kwargs)¶ 基类:
list
主要方法update(),该方法是对list类型拓展, 当update的数据对象存在时对其更新,注意请保证UpdateList 的子项是dict类型而不要使用值类型,值类型对于UpdateList毫无意义
on_update hook函数,接收old_val(旧数据), p_object(新数据),需要返回更新数据 on_append hook函数,接收p_object(添加数据),需要返回添加数据 on_fetch_key hook函数,当key属性定义为函数时需要同时定义如何捕获key值
- key 支持字符串,字符串指定子元素中的更新参考值
- 支持函数,接收val(当前数据),key(参考key值)该key值由on_fetch_key返回,函数返回bool值True为更新,False为添加
on_fetch_key作用:
复杂场景下我们可能需要up[("home2", True)]这样来找到响应的item,这样显示传递key值没有什么问题,key函数可以获取到 相应的key数据以供我们处理,但是当我们调用update时,update需要判断该内容是更新还是添加,这时我们传入的内容是数据,显然 update无法知晓如何获取我们想要的类型key值,如("home2", True),所以我们要定义on_fetch_key来告知update如何捕获我们 想要的类型的key值,on_fetch_key只有当key属性定义为函数时才有意义。
-
find
(callback)¶ 返回满足回调函数的内容
参数: callback -- 回调函数,返回布尔类型用于判断是否满足要求 返回: (索引,值)
-
update
(p_object)¶ 类似于append方法,不同的是当内容存在时会对内容进行更新,更新逻辑遵从update_callback 而当内容不存在时与append方法一致进行末尾加入内容
参数: p_object -- 内容对象 返回: None
-
core.utils.
find
(iterable: Iterable[IT], func: Callable[IT, bool]) → Tuple[int, Optional[IT]]¶ 查找可迭代对象的指定项,匹配第一个子项并返回,无匹配项时返回(-1,None)
参数: - func -- 匹配函数
- iterable -- 可迭代对象
返回: 索引,子对象
-
core.utils.
find_key
(obj: Union[Dict, List], key: str)¶ 根据字符串查找对象值,字符串形式如a.b.0, 查找对象,如:
{"a":{"b":["val"]}}
val值将被查出
参数: - obj -- 查找key值的对象
- key -- 查找key
返回: 查找到的值
-
core.utils.
inin
(content: str, pool: List[str]) → Optional[str]¶ 查找指定内容是否存在于列表的字符串中,这种情况content一定要比列表中字符串短
举例:
inin("a",["asdf","fsfsdf"]) 将返回 "asdf"
参数: - content -- 内容
- pool -- 列表
返回: 匹配内容
-
core.utils.
retry
(freq: int = 3, retry_hook: Optional[Callable[int, None]] = None) → Callable¶ 装饰器,为函数添加此装饰器当函数抛出异常时会对函数重新调用,重新调用次数取决于freq指定的参数
参数: - freq -- 重试次数
- retry_hook -- 钩子函数,当函数重调用时回调的函数
返回: 原函数返回值
-
core.utils.
rinin
(content: str, pool: List[str]) → Optional[str]¶ 查找指定内容是否存在于列表的字符串中,这种情况content一定要比列表中字符串长
举例:
inin("asdf",["a","fsfsdf"]) 将返回 "a"
参数: - content -- 内容
- pool -- 列表
返回: 匹配内容