graphql-python / graphql-python/graphene

Failed to print schema with InputObjectType with DateTime field with default_value

オープン
#1,293 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
🐛 bug
主要言語
Python
スター
8.2k
フォーク
818
PR マージ指標
30日以内にマージされた PR はありません

説明

Declaring a DateTime with default_value in InputObjectType makes schema unprintable due to unsupported conversion in `graphql/utils/ast_from_value.py`

InputObjectType declared as:
```
class Filters(InputObjectType):
datetime_after = DateTime(required=False, default_value=datetime.min)
datetime_before = DateTime(required=False, default_value=datetime.max)
```

normally attached to the Query
causes `print(schema)` failing with:

```
(...)
File "lib/python3.8/site-packages/graphql/utils/schema_printer.py", line 205, in _print_input_value
default_value = " = " + print_ast(ast_from_value(arg.default_value, arg.type))
File "lib/python3.8/site-packages/graphql/utils/ast_from_value.py", line 53, in ast_from_value
assert isinstance(value, dict)
AssertionError
```

Without default_value it works.
I'm using default values like shown in #856 but even without this support in ast_from_value is clearly missing.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

issue に示されている Filters InputObjectType と DateTime のデフォルト値を使って、スキーマの出力に失敗する問題を再現します。graphql/utils/ast_from_value.py から始め、次に schema_printer.py の呼び出し箇所を調べます。DateTime フィールドに default_value の値がある場合に print(schema) が成功すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
graphql, python
領域
api, backend
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。