weather_cache

天気情報の JSON キャッシュ管理モジュール。

exception mike.weather_cache.CacheError

Bases: Exception

キャッシュ操作エラーを表す例外クラス。

class mike.weather_cache.WeatherCache(cache_file: str, logger)

Bases: object

天気情報のキャッシュを管理するクラス。

日次でのキャッシュ管理を行い、JSONファイルに永続化します。 前日以前のデータは自動的に削除されます。

clean_old_cache()

本日以外のキャッシュエントリを削除します。

前日以前のデータは自動的に削除されます。 削除後、ファイルに保存します。

clear_all() int

全てのキャッシュをクリアします。

Returns:

クリアされたエントリ数

Return type:

int

Raises:

CacheError – キャッシュファイルの保存に失敗した場合

get(city: str) dict | None

指定された都市のキャッシュされた天気データを取得します。

本日のデータのみを返します。前日以前のデータは返しません。

Parameters:

city (str) – 都市名

Returns:

キャッシュされたデータ、キャッシュなしの場合は None

Return type:

dict or None

get_stats() dict

キャッシュの統計情報を取得します。

本日のエントリ数、キャッシュされている都市リストなどを返します。

Returns:

統計情報を含む辞書

Return type:

dict

戻り値の構造:

{
    'total_entries': int,  # 総エントリ数
    'today_entries': int,  # 本日のエントリ数
    'cities': list,        # キャッシュされている都市名リスト
    'date': str            # 現在の日付
}
load_cache()

キャッシュファイルからデータを読み込みます。

ファイルが存在しない場合は新規作成します。 読み込み後、古いキャッシュを自動削除します。

:raises なし(エラーは内部でログされます)

save_cache()

キャッシュデータをファイルに保存します。

ディレクトリが存在しない場合は自動作成します。

Raises:

CacheError – ファイル保存に失敗した場合

set(city: str, data: dict)

天気データをキャッシュに登録し、ファイルに保存します。

タイムスタンプ付きで登録されます。

Parameters:
  • city (str) – 都市名

  • data (dict) – キャッシュするデータ