googleapis / googleapis/google-cloud-python

IN operator with `__key__` property does not work

未关闭
#15,339 1 条评论 0 个 reaction 已指派 1 人 已被 @pcostell 认领 在 GitHub 查看
api: datastore
主要语言
Python
星标
5.4k
派生
1.8k
平均合并
3 天 4 小时
30 天内合并 PR
122

描述

Hello,
Sorry I'm not 100% if this should be a bug report or a feature request, but since the IN operator is working on the Datastore UI on the GCP Console I'm guessing it's a bug.

#### Environment details
I'm not allowed to share those, but I don't think it matters in this case

- OS type and version:
- Python version: `python --version`
- pip version: `pip --version`
- `google-cloud-datastore` version: `pip show google-cloud-datastore`

#### Steps to reproduce

1. Try to execute a query on the `__key__` property with the IN operator
2. Error : `ValueError: Invalid key: "[, ]"`

#### Code example

```python
query = client.query(kind=kind)
query.add_filter("__key__", "IN", [client.key(kind, key), client.key(kind, key2)])
```

#### Stack trace
```
# example
```
Sorry I'm not allowed to share the whole stack trace, but I investigated a bit and it seems to come from this condition :
```
if property_name == KEY_PROPERTY_NAME and not isinstance(value, Key):
raise ValueError('Invalid key: "%s"' % value)
```
In case `value` is a `List`, it should check that all elements from the list are Keys instead of raising an error

Making sure to follow these steps will guarantee the quickest resolution possible.

Thanks!

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。