Skip to content

Instantly share code, notes, and snippets.

@sinhrks
Last active October 23, 2017 10:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sinhrks/611d1a887968832f20294b27129a33a1 to your computer and use it in GitHub Desktop.
Save sinhrks/611d1a887968832f20294b27129a33a1 to your computer and use it in GitHub Desktop.
PyCon JP 2017 pandas sprint

目的

  • pandas にプルリクエスト (PR) を送りたい

Git/GitHubの設定

pandasリポジトリのクローン

  • GitHubの pandas リポジトリを開く

  • 右上にある "Fork" ボタンを押す

  • 自分のアカウントにフォークされたリポジトリを、ローカルにクローン

    • https://github.com/yourgithubaccount/pandas
$ git clone git@github.com:yourgithubaccount/pandas.git

直したい issue を探す

着手すると決めた issue はホワイトボード(あれば)で周知

簡単そうなもの

コードを直す

  • まずはブランチを切る
$ git checkout -b whateveryoulike
  • 直す場所を探す (おそらくこの辺)

    • core: メインのロジックが集中
      • core/frame.py: DataFrame
      • core/series.py: Series
      • core/indexes/*.py: 各種 Index
      • core/groupby.py: group_by
      • core/reshape/*.py: 変形 (ピボット、マージ等)
    • io: 入出力関連 (Excel, CSV...)
    • tseries: 時系列周り
  • コードを直す

    • できるだけ NumPy や pandasに定義済みの関数を使って書く (よく使うのはこの辺)
      • pandas/core/common.py
      • pandas/core/dtypes/*.py 
    • 10分ほど考えてわからなければ聞いてください
  • テストを書く

    • 既存のテストが何処かにあるので検索して追加
      • pandas/tests あたり
    • テスト用の assert_* 関数を使う
      • pandas/util/testing.py
        • assert_index_equal: pd.Index の比較
        • assert_series_equal: pd.Series の比較
        • assert_frame_equal: pd.DataFrame の比較
        • assert_raises_regex: 異常ケースで期待するエラー/エラーメッセージが発生するかチェック
        • assert_produces_warning: 期待する警告が発生するかチェック
    • テストには issue 番号をコメントで書いたほうがよい (# GH 10000 など)
  • リリースノートを書く

    • doc/source/whatsnew/0.21.0.txt
    • 他のリリースノートの記載に合わせる。文末の番号は Issueの番号
    • バグ修正の場合、何の機能を使ったときにどういった問題が起きていたかを書く
    • ビルド確認は doc/make.py (環境によっては sudo が必要)
      • リリースノートに一行追加する程度であれば、ビルドせず目視確認でもOK (リリース前にまとめてフォーマットを直すので)
  • 修正をコミットする

    • メッセージのサンプルは他のプルリクエストを参照
$ git commit -a -m 'yourcommitmessage'

Travis CIの設定

  • GitHub側

    • 自分のアカウントにフォークされたリポジトリのタブ右側にある "Settings" を開く
    • "Integration & Services" -> "Add service" から "Travis CI" を追加
  • Travis CI側

    • https://travis-ci.org/
    • Accounts の画面で、自分の pandas リポジトリのテストを有効に (スライドバー)
      • 表示されていなければ "Sync account" する

リポジトリのプッシュ

$ git push origin yourbranchname
  • Travis CIでテストが実行されていることを確認する。結果を待つ (30分ほど)

プルリクエストを送る

  • "New pull request" ボタン
  • 書き方は他のプルリクエスト参考。必ず元となった issue へリンクを貼る (マークダウンで #1111 のように番号を書けばリンクになる)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment