Need Updates for python 3.10, using `collections.Iterable` as an example
- 主要语言
- Python
- 星标
- 1.7k
- 派生
- 545
- PR 合并指标
- 30 天内没有已合并 PR
描述
System Info:
```
Python 3.10.0 | packaged by conda-forge | (default, Nov 20 2021, 02:25:18) [GCC 9.4.0]
pyhive 0.6.4 | pyhd8ed1ab_0 | conda-forge
```
Logs:
```
~/anaconda3/envs/****/lib/python3.10/site-packages/pyhive/hive.py in execute(self, operation, parameters, **kwargs)
442 sql = operation
443 else:
--> 444 sql = operation % _escaper.escape_args(parameters)
445
446 self._reset_state()
~/anaconda3/envs/****/lib/python3.10/site-packages/pyhive/common.py in escape_args(self, parameters)
211 return {k: self.escape_item(v) for k, v in parameters.items()}
212 elif isinstance(parameters, (list, tuple)):
--> 213 return tuple(self.escape_item(x) for x in parameters)
214 else:
215 raise exc.ProgrammingError("Unsupported param format: {}".format(parameters))
~/anaconda3/envs/****/lib/python3.10/site-packages/pyhive/common.py in (.0)
211 return {k: self.escape_item(v) for k, v in parameters.items()}
212 elif isinstance(parameters, (list, tuple)):
--> 213 return tuple(self.escape_item(x) for x in parameters)
214 else:
215 raise exc.ProgrammingError("Unsupported param format: {}".format(parameters))
~/anaconda3/envs/****/lib/python3.10/site-packages/pyhive/common.py in escape_item(self, item)
246 elif isinstance(item, basestring):
247 return self.escape_string(item)
--> 248 elif isinstance(item, collections.Iterable):
249 return self.escape_sequence(item)
250 elif isinstance(item, datetime.datetime):
AttributeError: module 'collections' has no attribute 'Iterable'
```
This is because `collections.Iterable` is deprecated and we should use `collections.abc.Iterable` instead.
In fact, there has always been an `DeprecationWarning` in place:
```
DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
```
Are there any plans for a code review for such updates?
贡献指南
这个仓库没有索引到贡献指南
调研方向
回溯指向 pyhive/common.py,尤其是第 248 行的 escape_item,它是通过 hive.py execute 和 escape_args 到达的。首先阅读这条调用路径,并在 Python 3.10 下复现参数转义失败的问题;当示例不再针对 Iterable 引发 AttributeError 时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- databases
- Issue 类型
- 缺陷
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 活跃度
- 停滞
- 描述清晰度
- 描述清楚
- 新手友好度
- 48/100