1.はじめに
- Google Bardで関数にdocstringと型ヒントを追加してもらった。
2.経緯
- pythonでdocstringと型ヒントを追加しなきゃいけないのは重々承知しているのだけど、いつもその場しのぎで関数など作成してました。喉元過ぎれば熱さを忘れるをしてたけど、さすがにまずいと思い、docstringと型ヒントを追加していこうと思います。
- ただ、自力ですぐに実行できないので、なんとかできないかと考えてGoogle Bardに聞いてみることに。お手本としてどんな感じに出してくれるのか。
3. 入出力
関数自体は、ここに載っている特許分類(IPC)の階層構造をxmlで取得して、BeautifulSoupでパースした後にかける処理。
- 最初の関数
def get_undersymbol(kaiso_list, kaiso_num):
under_kaiso_list = []
for present_symbol in kaiso_list:
under_symbol = present_symbol.split("->")[-1] # 下の階層のみ取得
under_symbol_obj = soup.find("ipcEntry", {"kind": str(kaiso_num), "symbol": under_symbol})
if under_symbol_obj is not None:
pass
#under_kaiso_list.append([present_symbol])
if is_list_iterator_empty(under_symbol_obj.children):
pass
#under_kaiso_list.append([present_symbol])
else:
under_kaiso_list.append([under_symbol + "->" + tag["symbol"] for tag in under_symbol_obj.children])
return list(itertools.chain.from_iterable(under_kaiso_list))
- Bardにはこんな感じにかなりアバウトに入れる。
この関数にdocstringと型ヒントを入れてください。
####上記の関数をはりつけ###
- Bardに追加してもらった結果:
from typing import List
def get_undersymbol(kaiso_list: List[str], kaiso_num: int) -> List[str]:
"""
Get the undersymbol list of the given kaiso list.
Args:
kaiso_list: The kaiso list.
kaiso_num: The kaiso number.
Returns:
The undersymbol list.
"""
under_kaiso_list = []
for present_symbol in kaiso_list:
under_symbol = present_symbol.split("->")[-1] # 下の階層のみ取得
under_symbol_obj = soup.find("ipcEntry", {"kind": str(kaiso_num), "symbol": under_symbol})
if under_symbol_obj is not None:
pass
#under_kaiso_list.append([present_symbol])
if is_list_iterator_empty(under_symbol_obj.children):
pass
#under_kaiso_list.append([present_symbol])
else:
under_kaiso_list.append([under_symbol + "->" + tag["symbol"] for tag in under_symbol_obj.children])
return list(itertools.chain.from_iterable(under_kaiso_list))
ちゃんと追加してくれる!Argsなどは日本語でもう少し説明してもいいかも。
Bardさまありがたや。
docstringと型ヒントあれば昔の自分も怖くない!
今後もちゃんと毎回使わせてもらおう。