GitHub Actions を活用した Python プロジェクトの CI

この記事は CAMPHOR- Advent Calendar 2019 17日目の記事です.16日目の記事は @kmconner の「家の電気使用量を可視化する」でした.

この記事では,先日公開された CI/CD ツール GitHub Actions を Python のプロジェクトの CI に利用する方法を紹介します.主に GitHub Actions 上での以下の内容についてカバーします:

  • tox を使ったマルチプラットフォーム・バージョンでのテスト
  • C言語拡張モジュールを扱う際の注意点
  • バイナリを含む wheel のビルド

ここでは WSGI アプリケーションのためのラインプロファイラ wsgi_lineprof で利用している設定を紹介します.説明は不要なのでとにかく設定を知りたいという方は,直接こちらのリポジトリをチェックしてみてください.

“GitHub Actions を活用した Python プロジェクトの CI” の続きを読む

Python ウェブアプリのためのプロファイラ wsgi_lineprof の仕組み

この記事は CAMPHOR- Advent Calendar 2018 20日目の記事です.昨日の記事は @lotz 氏の「“アルゴリズムこうしん”のアルゴリズムをHaskellで実装する」でした.

wsgi_lineprof は WSGI ミドルウェアとして実装された Python のラインプロファイラです.この記事では wsgi_lineprof がどのようにして実装されているかを,WSGI や CPython の内部実装の簡単な説明とともに紹介します.プロファイラの実装について興味がある人や,Python 処理系,WSGI の裏側に興味がある人の参考になれば幸いです.

“Python ウェブアプリのためのプロファイラ wsgi_lineprof の仕組み” の続きを読む

PEP 561 に準拠した型ヒントを含むパッケージの作り方

この記事では Python 3.7 で採択された PEP 561 Distributing and Packaging Type Information について簡単に解説し,PEP 561 に準拠した,型ヒントを含むパッケージの作成方法について紹介します.
“PEP 561 に準拠した型ヒントを含むパッケージの作り方” の続きを読む

パッケージマネージャがパッケージをインストールする仕組み

この記事は CAMPHOR- Advent Calendar 2017 の20日目の記事です.

Python では pip,Ruby では Bundler,JavaScript (Node.js) では npm と様々なパッケージマネージャが存在します.これらを使うと,パッケージをいい感じにインストールして使えるようにしてくれますが,どのようにしてパッケージがインストールされているのかあまりよく把握していない人もいると思います.また,Ruby では GemfileGemfile.lock, Python では requirements.txt,Node.js では package.jsonpackage-lock.jsonyarn.lock といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.

この記事では,パッケージマネージャがどのようにパッケージをインストールしているのかを紹介します.まず,パッケージマネージャが存在しない場合を仮定してみて,そこから様々な機能を追加していくことでパッケージマネージャが何をしているかを順に見ていきます.

“パッケージマネージャがパッケージをインストールする仕組み” の続きを読む

ISUCON7 本選で学生枠1位になりました

チームMLとして @ishiy1993 と2人で ISUCON7 の本選に出て,学生枠の1位 (全体の7位) になりました.使用した言語は Python で,最終スコアは 19,172 でした.満足のいくスコアではありませんでしたが,我々が今持っている力は出し切れたかなあと思っています.

“ISUCON7 本選で学生枠1位になりました” の続きを読む