PyBacklogPy
これは何?
BacklogAPI を Python から簡単に呼べるようにラップしたものです。
必須環境
Python 3.5以上typingモジュールを使用しているため- 開発およびテスト環境は
Python 3.7.3を使用
使い方
詳細な仕様についてはドキュメントを参照してください
インストール
pip からインストールします。
pip install pybacklogpy
ドメインおよびシークレットキーの登録
ドメイン及びシークレットキーを登録するには以下の2種類の方法があります。
- プログラム上で指定する
- 設定ファイルを置く
なお、どちらも設定していた場合、 プログラム上で指定する の方が優先されます。
プログラム上で設定する場合
Backlogのドメイン別に以下3種類のクラスを用意しています。
- BacklogComConfigure (backlog.com)
- BacklogJpConfigure (backlog.jp)
- BacklogToolConfigure (backlogtool.com)
このクラスのコンストラクタ引数として、スペースID と API のキーを渡すことで設定を行えます。
例えば、下記のような場合
- Backlogドメイン:
kitadakyou.backlog.com - API キー:
qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp
コードは次のようになります。
from pybacklogpy.BacklogConfigure import BacklogComConfigure
from pybacklogpy.Issue import Issue
# Configure クラスのインスタンスを生成
config = BacklogComConfigure(space_key='kitadakyou',
api_key='qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp')
issue_api = Issue(config) # API を呼ぶクラスのコンストラクタ引数として Configure クラスのインスタンスは使用可能
response = issue_api.get_issue_list()
設定ファイルで指定する場合
使用するプロジェクトの直下に secrets というファイルを作り、以下のように値を入れておいてください。
なお、当プロジェクト直下にある secrets_sample をコピーすると楽です。
なお、このファイルは誤ってリポジトリにあげないよう、 .gitignore に追加しておくことを推奨します
[backlog]
Host = kitadakyou.backlog.com
ApiKey = qwertyuiopasdfghjklzxcvbnmqazwsxedcrfvtgbyhnujmikolp
secrets を指定した場合、先ほどの例で使用した configure クラスは省略して、以下のように書くことが出来ます
from pybacklogpy.Issue import Issue
issue_api_2 = Issue() # Configure クラスを渡さなかった場合は、設定ファイルの情報を読みに行く
response_2 = issue_api_2.get_issue_list()
なお、 configure クラスを渡さず、 secrets も設置していない場合は実行エラーとなります。
モジュールを読み込み、インスタンス生成
使用するモジュールをロードします。 それぞれはクラスになっているので、そのインスタンスを生成します。
例として、Wiki の API を呼びたいと考えます。
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
API を呼ぶ
どのような API があるかは PyBacklogPy のドキュメント、もしくは BacklogAPI のドキュメントを参照してください。 また、プロジェクトID や Wiki ID 等の調べ方は…ググればすぐに出てきます
Wiki を追加するサンプル
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
response = wiki_api.add_wiki_page(
project_id=1000,
name='SampleWikiName',
content='サンプル Wiki 本文',
mail_notify=False,
)
Wiki を更新するサンプル
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
response = wiki_api.update_wiki_page(
wiki_id=12345,
name='TestWikiName',
content='テスト 本文',
mail_notify=False,
)
返り値を見る
全ての関数は request の レスポンスオブジェクト を返します。
リクエストが成功しているかを確認するには、 response.ok を見るのが1番早いです。
Wiki の更新が成功しているか確認するサンプル
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
response = wiki_api.update_wiki_page(
wiki_id=12345,
name='TestWikiName',
content='テスト 本文',
mail_notify=False,
)
if not response.ok:
raise ValueError('Wiki の更新に失敗')
また、レスポンス本文は response.text の中身に生(=テキストの)の JSON が入っています。標準ライブラリ json を使って parse してあげれば、簡単に使えます。
Wiki の内容を取得するサンプル
import json
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
response = wiki_api.get_wiki_page(
wiki_id=12345,
)
if not response.ok:
raise ValueError('Wiki ページ情報の取得に失敗')
wiki_data = json.loads(response.text)
wiki_name = wiki_data['name']
wiki_content = wiki_data['content']
ファイルの取得
ファイル取得については、特殊な返り値のため、別途こちらで説明します。
ファイルを取得する関数を使用する場合は、まずディレクトリを作成する必要があります。
デフォルトではプロジェクト直下の /tmp ディレクトリにファイルがダウンロードされます。(今の所、変更不可💦)
ファイルを取得する関数は「1番目がファイルのPATH」、「2番目がレスポンスオブジェクト」のタプルを返します。 そのため、一度に受け取るには、以下のように返り値を受け取る変数を2つ用意する必要があります。
from pybacklogpy.Wiki import Wiki
wiki_api = Wiki()
downloaded_file_path, response = self.wiki_attachment.get_wiki_page_attachment(
wiki_id=12345,
attachment_id=987654,
)
print(downloaded_file_path)
バグを見つけたら
自由にブランチを切って、 PullRequest を出してください。Issue を上げるだけでも大丈夫です。 一週間に一回くらいは見るようにするので、対応出来たら対応します。(全て対応するとは言っていない)
もし、PR出しても全くリアクションがない場合は Twitter の kitadakyou 、若しくは作者のメール宛にご連絡ください。
おまけ: なんでこんな名前なの?
PyBacklog も BacklogPy も既に存在したので、苦肉の策で Py で挟みました。
もし、PyBacklogPy も存在したら、 PyBacklogXPyBacklog という HUNTER×HUNTER 方式で行こうと考えていました。
Release files for pybacklogpy 0.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pybacklogpy-0.12.tar.gz | 29.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pybacklogpy-0.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.1 kB
Release files / pybacklogpy-0.12.tar.gz
| Download URL | pybacklogpy-0.12.tar.gz |
|---|---|
| Size | 29.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b001dff0067caf1c4be3192f8d99525baa65a2a1261f04b5667acac8f22bdf97
|
|
BLAKE2b-256 checksum How to use checksums |
c8fd13f8e30f46c25f1ed112071eb7e9ab61c033376256a8ffadfe08dd3d2518
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.7.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10
|
Release files / pybacklogpy-0.12-py3-none-any.whl
| Download URL | pybacklogpy-0.12-py3-none-any.whl |
|---|---|
| Size | 42.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1b1c02c696de60503fd516ae0c4d492d9a709cc98b7a1a5d7c5bc4e0df2a1271
|
|
BLAKE2b-256 checksum How to use checksums |
7dfd64a99835bf8addadb729d341d5e749bbaa13d179dbbeb08f114c70e7ebc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.7.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10
|