※当サイトの記事には、広告・プロモーションが含まれます。

PythonでGit操作のできるライブラリは、どんなものがあるのか

www.itmedia.co.jp

 フランスのコートダジュール大学とInstitut Universitaire de Franceに所属する研究者らが発表した論文「Leidenfrost jets」は、液体の噴流(液体ジェット)が高温の表面に触れることなく跳ね返る現象が新たに発見された研究報告である。

液体ジェットが熱い表面に“一切触れることなく跳ね返る”新発見 フランスの研究者らが発表:Innovative Tech - ITmedia NEWS

 熱々のフライパンに水滴を落とすと、水滴がコロコロと転がり回る様子を見たことがあるだろうか。これは「ライデンフロスト効果」と呼ばれる現象で、高温の表面に落ちた液体が、瞬時に気化して表面との間に蒸気の層を作り、その蒸気のクッションによって液体が浮遊する仕組みである。

液体ジェットが熱い表面に“一切触れることなく跳ね返る”新発見 フランスの研究者らが発表:Innovative Tech - ITmedia NEWS

⇧ 液体が空中浮遊していたとは...

蒸気の層のクッション力、半端ない...

Pythonの処理を高速化するのにC言語に依存させるしかないんか...

Pythonが遅いという話が、ネット上で見受けられるわけですが、

qiita.com

qiita.com

⇧ とあり、「Cython」のような「C言語」の機能を利用することがパフォーマンスを上げるにあたっての最適解のような話が出ていらっしゃる...

Wikipediaによりますと、

Cython(サイソン)は、C言語によるPythonの拡張モジュールの作成の労力を軽減することを目的として開発されたプログラミング言語である。その言語仕様はほとんどPythonのものと同じ (上位互換) だが、Cの関数を直接呼び出したり、C言語の変数の型やクラスを宣言できるなどの拡張が行われている。

Cython - Wikipedia

Cythonの処理系ではソースファイルをCのコードに変換し、コンパイルすればPythonの拡張モジュールになるようにして出力する

Cython - Wikipedia

このようにCとPythonをシームレスに取り混ぜて扱うCythonの利点の一つは、既にあるPythonコードを、いくつかの静的な型 (static type) を宣言して律速なループをうまく書き直すだけで、コンパイル後のコードの実行速度がC言語並みに高速化されることである。複雑なC言語インターフェイスを使う必要はない。コーディングのしやすさと可読性はPythonと変わらない、つまりPythonic英語版なままである。

Cython - Wikipedia

数値計算/配列操作では、多くの場合実行速度がおおよそ100倍になる。PythonJITコンパイラであるPsycoの場合はおおよそ4倍である。

Cython - Wikipedia

CythonはPyrex言語から派生したもので、Pyrexに比べると様々な機能や高度な最適化が加えられている。

Cython - Wikipedia

⇧ とありますと。

でも、「Python」が遅いって話が出てくるってことは、「Cython」などの「C言語」の機能を導入できていないってことだと思うからして、

複雑なC言語インターフェイスを使う必要はない。コーディングのしやすさと可読性はPythonと変わらない、つまりPythonic英語版なままである。

に対する疑念が湧き上がるわけですな...

後は、

gigazine.net

japan.zdnet.com

⇧「メモリ安全性」を気にせずコードディングが可能なのかも気になるところですな。

いくら、パフォーマンスが向上したとて、システムがダウンする可能性を作り込むリスクが高くなるなら躊躇せざるを得ないんよね...

逆に言うと、「C言語」の経験が豊富なエンジニアにとっては、「Python」の開発が向いているということになるんかね?

何やら、

codezine.jp

⇧『爆速Python』なる書籍も出てきてるからして、「Python」が遅いのは周知の事実といった感じなんですかね...

Pythonのバージョンは、

codezine.jp

devguide.python.org

⇧ 2024年11月20日(水)時点では、3.13までがLTSの安定板といった感じなのかね?

PythonでGit操作のできるライブラリは、どんなものがあるのか

まぁ、余力があれば、「Cython」とか導入して「Python」を「爆速」にしたいところなのだが、「Git」の操作を「Python」で行いたいということで、「Python」で利用できる「Git」の操作ができるライブラリにはどんなものがあるのか?

statckoverflowでは、

stackoverflow.com

⇧「GitPython」なるものが紹介されていたのですが、他にどんなものがあるのか、ChatGPTに質問してみたところ、以下の回答が返ってきた。

No ライブラリ 性能 メモリ安全性 コメント
1 GitPython
  • 高レベルなラッパーで、Git操作を簡単に実行できるが、低レベルでのパフォーマンスは劣ることがある。
  • メモリ安全性は高いが、外部コマンド(Git)を利用するため、プロセス間通信で若干のオーバーヘッドが発生。
2 pygit2
  • Cライブラリlibgit2を使用しており、非常に高速。低レベルな操作が可能で、大規模なリポジトリでも高パフォーマンス。
  • メモリ安全性はC言語ベースでやや低いため、適切なメモリ管理が必要。
3 dulwich
  • Pythonで書かれたGitライブラリ。依存関係が少ないが、パフォーマンスはlibgit2ベースのライブラリより劣る。
  • 完全にPythonで実装されており、メモリ安全性は非常に高い。
4 gitdb
  • 主に低レベルのGitオブジェクト操作を行うため、GitPythonと組み合わせて使うことが多い。
  • Gitオブジェクトに特化しており、メモリ管理が適切に行われているため、メモリ安全性は高い。
5 subprocess
  • gitコマンドを直接実行するため、パフォーマンスは非常に高い。
  • 外部プロセスを起動するため、メモリ安全性は低く、予期しないエラーやリソース管理が発生する可能性がある。
6 pygit
  • pygit2のラッパーライブラリとして動作。基本的にはpygit2のパフォーマンスを引き継ぐが、若干のオーバーヘッド。
  • Pythonで書かれているため、メモリ安全性は高いが、Cライブラリの影響を受けるため注意が必要。

ネット上の情報によりますと、

piptrends.com

⇧「GitPython」の「STAR」の数が一番多いっぽい。

とりあえず、「GitPython」を使うようにしておくのが無難な感じなんかな?

ただ、

github.com

⇧「メンテナンスモード」らしいので、新しい機能の開発は行われないと。

「git config」コマンド相当のことが必要なので、ChatGPTに改めて質問したところ、

⇧ という回答が返ってきた。

何か、

docs.python.org

Python標準のライブラリ「subprocess」で十分な感じという気がしなくもない。

gitコマンド系なら、「OS(Operation System)」に依存とか無さそうな気がするので、「クロスプラットフォーム」の問題とかも気にしなくて良さそうな気がしますしな。

あんまり、非標準のライブラリを入れても運用が大変になりそうですし...

実際の挙動を確認してみないと何とも言えませんが...

毎度モヤモヤ感が半端ない…

今回はこのへんで。