功能变动:
- 现在,对象在初始化时会对其有效性进行检查,并在检查不通过时抛出 `InputError`(链接格式不合法)或 `ResourceError`(资源状态异常),因此对象的创建时间成本提高,目前不支持手动禁用检查
- 在 `objects` 模块中新增函数 `get_cache_items_count`、`get_cache_status`、`set_cache_status` 和 `clear_cache`,用于对 `objects` 模块的全局缓存进行操作
- `objects` 模块中的 `DISABLE_CACHE` 常量被重命名为 `_DISABLE_CACHE`,请使用 `objects.get_cache_status` 函数获取缓存状态,`objects.set_cache_status` 设置缓存状态
- `objects` 模块中的每个对象都新增了 `from_url` 和 `from_slug` 类方法,用于以特定方式构建资源对象
- 优化了错误信息展示,现在大部分错误信息都会包含引起错误的资源 URL
- 现在,`assets_funcs.py` 中所有关于链接有效性判断的函数均变为基于正则进行判断
- 为所有模块加入 `__all__` 变量,使用 `from JianshuResearchTools.module_name import *` 导入时,不再会导入无关的函数
- 支持使用 `objects.Article.markdown` 获取 Markdown 格式的文章内容
- 优化对象初始化逻辑
- 内部模块 `headers` 中的变量 `jianshu_request_header` 更名为 `api_request_header`
错误修复:
- 修复面向对象模块中缓存逻辑错误导致缓存跨对象生效的问题
- 修复部分函数因参数顺序错误导致在某些情况下报错的问题
- 修复测试用例中的 Type Hints 错误
性能优化:
- 通过对正则表达式的优化,提升了 `article.GetArticleHtml` 函数的性能
代码重构:
- 新增内部模块 `utils`,包含供包内共享的工具函数
- 将面向对象模块中 `__str__` 字符串的生成逻辑抽象成单独函数 `utils.NameValueMappingToString`
- 将 `objects` 模块中禁用检查调用函数的逻辑抽象成单独的函数 `utils.CallWithoutCheck`
- 将对象初始化时判断传入参数是否合法的逻辑抽象成单独的函数 `utils.OnlyOne`
文档更改:
- 更新 `README.md` 中的部分代码示例
- 为 `objects.Article` 类中关于获取文章内容的属性加入了风险提示
- 规范了代码注释中 `URL` 的写法,为保证兼容性,函数名将延迟到下一个大版本中进行修改
- 为 `utils.NameValueMappingToString` 函数加入了注释
依赖变动:
- 更新 `usjon` 到 v5.3.0 以修复 CVE-2021-45958 漏洞
- 在 `Pipfile` 中加入缺失的开发依赖 `pyyaml==6.0.0`
- 为避免依赖版本问题导致的异常,我们固定了 `Pipfile` 和 `setup.py` 文件中所有依赖库的版本
测试用例:
- 更新部分测试用例
- 移除已废弃函数的测试代码