Skip to content

Commit

Permalink
Docs: Docコメントを詳しく記載+一部戻り値の型を追記
Browse files Browse the repository at this point in the history
  • Loading branch information
getset-fujisawa committed May 21, 2022
1 parent 5cc23a0 commit 800ace7
Showing 1 changed file with 54 additions and 28 deletions.
82 changes: 54 additions & 28 deletions src/sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@
INPUT_URL = './input' if IS_DEVCONTAINER else '../input' # 入力パス(devcontainerで実行時 <=> コンテナ内で実行時)
OUTPUT_URL = "./output" if IS_DEVCONTAINER else '../output' # 出力パス(devcontainerで実行時 <=> コンテナ内で実行時)

"""
メインロジック
"""
def main():
"""メインロジック
"""
files = glob.glob(f"{INPUT_URL}/*")
# START_workbook単位のループ
for file_path in files:
Expand Down Expand Up @@ -76,19 +75,27 @@ def main():
write_wb.close()
# END_workbook単位のループ

"""
Excleシートを初期化
・header列を作成
"""
def initSheet(sheet):
"""シートを基本フォーマットに初期化する
・header列を作成
Args:
sheet: 初期化対象シート
"""
headers = ['Date(UTC)', 'Market', 'Type', 'Price', 'Amount', 'Total', 'Fee', 'Fee Coin']
for i, v in enumerate(headers):
sheet.cell(row=1, column=i+1).value = v

"""
Binanace取引所の取引データを1行取得する
"""
def getBinanceRowData(row, sheet):
def getBinanceRowData(row, sheet)->dict:
"""Binanace取引所の取引データを1行取得する
Args:
row : 取得対象行
sheet : 取得対象シート
Returns:
dict: 取得した行
"""
date_str = sheet.cell(row, 1).value
if date_str == None:
return None
Expand All @@ -100,27 +107,42 @@ def getBinanceRowData(row, sheet):
data[v] = sheet.cell(row, i+1).value
return data

"""
1行分記載を行う
"""
def writeRow(row: int, sheet, row_data: dict):
"""1行分の書き込みを行う
Args:
row (int): 書き込み対象の行番号
sheet : 書き込み対象シート
row_data (dict): 書き込み対象行データ
"""
for i, (k, v) in enumerate(row_data.items()):
sheet.cell(row, i+1).value = v

"""
以下を全て満たす時、2つの行を1つに取りまとめる判定とする
・取引日時の差が設定時間以下
・通貨ペアが同一
・売買タイプが同一
"""
def isRegardedAsSame(row_1, row_2)->bool:
"""以下を全て満たす時、2つの行を1つに取りまとめる判定とする
・取引日時の差が設定時間以下
・通貨ペアが同一
・売買タイプが同一
Args:
row_1 : 比較対象行1
row_2 : 比較対象行2
Returns:
bool: true: 取りまとめる
"""
delta_seconds = (row_1["date"]-row_2["date"]).total_seconds()
return delta_seconds < TIME_REGARDED_AS_SAME and row_1["market"] == row_2["market"] and row_1["type"] == row_2["type"]

"""
複数行を1行にまとめる
"""
def roundUpIntoRow(data: dict)->dict:
"""複数の売買データを1行にまとめる
Args:
data (dict): 複数の売買データ
Returns:
dict: 複数の売買データをまとめた1行
"""
result: dict[str, any] = {}
result["date"] = format(data["date"][0], '%Y-%m-%d %H:%M:%S') # 売買日時
result["market"] = data["market"][0] # 通貨ペア
Expand All @@ -132,10 +154,15 @@ def roundUpIntoRow(data: dict)->dict:
result["fee_coin"] = data["fee_coin"][0] # 手数料通貨
return result

"""
ストックした行を1行にまとめる
"""
def summarizeStocks(stocks_row: list)->dict:
"""ストックした行を1行にまとめる
Args:
stocks_row (list): ストックした行
Returns:
dict: 1行にまとめた結果
"""
group: dict[str, list] = {}
result: dict[str, any] = {}
# グループの各keyに各行の値をlistとしてまとめる(処理がわかりやすくなるように)
Expand All @@ -154,7 +181,6 @@ def summarizeStocks(stocks_row: list)->dict:

return result


"メインロジック起動"
# メインロジック起動
if __name__ == "__main__":
main()

0 comments on commit 800ace7

Please sign in to comment.