pycodestyleがassignment operator(:=)を誤判定してしまうので、GitHubからインストールする

Python3.8からの新機能である、assignment operator(セイウチ演算子)を、pycodestyle 2.5.0ではエラーとして検出してしまうらしい。

GitHubから最新版をインストールすればとりあえず解決しそうなので、今回はそれで対応することにする。そのうちPython3.8対応版がでたらちゃんとPyPIからインストールする。

検出されるエラー

members = ['Taro', 'Hanako', 'Shun', 'Aya']
if n := len(members):
    print(f'name count: {n}')
else:
    print('No name')

これはpython3.8の有効なコードですが、これにpycodestyle 2.5.0をかけると、「コロンのあとにスペースがない」とか言われます。かといって、そこにスペースを入れると今度は「コロンの前にスペースがある!」とかいろいろ言われます。

そもそもそこにスペースを入れるとPython3.8として正しくないコードになってしまいます。

要は、PyPI から引っ張ってきたpycodestyle 2.5.0 だとassignment operatorに対応してないらしい、ということです。

pipコマンドでGitHubからインストールする

https://github.com/PyCQA/pycodestyle/blob/master/testsuite/python38.py

ここのコードを見る限り、master branchにはPython3.8用の変更はされているようだけど、まだPyPIではリリースされていないっぽい。

なので、GitHubからmasterブランチのpycodestyleをインストールします。もしかしたら、-Uよりも--force-reinstallのほうが適切だったかもしれません。

pip install -U git+https://github.com/PyCQA/pycodestyle.git

これでオッケーでした。

かず猫

インターネット初心者です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください