`pipenv update`の`--dry-run`オプションと`--outdated`オプションに違いはありますか？またどちらを使うべきですか?


# 環境

  * pipenv 2018.11.26
  * python 3.7

# 質問

`pipenv update`コマンドの`--dry-run`オプションと`--outdated`オプションの説明は、どちらも"List out-of-
date dependencies."と書かかれていました。

[code]

    $ pipenv update --help
    Usage: pipenv update [OPTIONS] [PACKAGES]...
    
      Runs lock, then sync.
    
    Options:
      --bare                   Minimal output.
      --outdated               List out-of-date dependencies.
      --dry-run                List out-of-date dependencies.
    ...
    
[/code]

<https://pipenv.readthedocs.io/en/latest/#pipenv-update>

`--dry-run`オプションと`--outdated`オプションに違いはありますか？  
また違いがない場合、どちらを使った方がよいでしょうか？

なんとなくですが、どちらか一方のオプションが古くて、その内「非推奨オプション」になるのかなと思いました。




# 回答

`pipenv update` に限っていえば、 **内容は等価であり、片方または両方指定しても同様である**
、というのが回答になります。また、内容が等価であるため、どちらを選ぶべきというのもなく、好みで良さそうです。

また、今後非推奨になる可能性についてですが、調べた限りそのような内容は見つかりませんでした。一般論として、行儀の良いアプリケーションはcliの操作体系でdeprecatedになる予定があるものは表示しない（が完全に非対応になるまで使用はできる）、またはその旨を併記するものと考えます。このため、近い将来にどちらか一方のオプションが突然使用不可能になる、ということは考えにくいでしょう。

# 補足

該当する `update` のcli実装が下記の通りになっており、484-485行目で `outdated` または `dry-run`
がTrueなら`outdated`の操作（List out-of-date dependencies.）を行う、というようになっています。

<https://github.com/pypa/pipenv/blob/b5643760e3581ce04df9e96e023e4f46dacf5994/pipenv/cli/command.py#L457-L531>

>
[code]

>         if not outdated:
>             outdated = bool(dry_run)
>  
[/code]

>
> [pipenv/command.py
> 484-485行目](https://github.com/pypa/pipenv/blob/b5643760e3581ce04df9e96e023e4f46dacf5994/pipenv/cli/command.py#L484-L485)より抜粋

ただし、`pipenv update`以外のサブコマンドについては、等価ではないようです（`--dry-run`は `pipenv clean`
でも使えるようです）。




# 回答

`pipenv update` に限っていえば、 **内容は等価であり、片方または両方指定しても同様である**
、というのが回答になります。また、内容が等価であるため、どちらを選ぶべきというのもなく、好みで良さそうです。

また、今後非推奨になる可能性についてですが、調べた限りそのような内容は見つかりませんでした。一般論として、行儀の良いアプリケーションはcliの操作体系でdeprecatedになる予定があるものは表示しない（が完全に非対応になるまで使用はできる）、またはその旨を併記するものと考えます。このため、近い将来にどちらか一方のオプションが突然使用不可能になる、ということは考えにくいでしょう。

# 補足

該当する `update` のcli実装が下記の通りになっており、484-485行目で `outdated` または `dry-run`
がTrueなら`outdated`の操作（List out-of-date dependencies.）を行う、というようになっています。

<https://github.com/pypa/pipenv/blob/b5643760e3581ce04df9e96e023e4f46dacf5994/pipenv/cli/command.py#L457-L531>

>
[code]

>         if not outdated:
>             outdated = bool(dry_run)
>  
[/code]

>
> [pipenv/command.py
> 484-485行目](https://github.com/pypa/pipenv/blob/b5643760e3581ce04df9e96e023e4f46dacf5994/pipenv/cli/command.py#L484-L485)より抜粋

ただし、`pipenv update`以外のサブコマンドについては、等価ではないようです（`--dry-run`は `pipenv clean`
でも使えるようです）。

