SessionSmith 0.1.4__tar.gz → 2.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. sessionsmith-2.0.0/PKG-INFO +420 -0
  2. sessionsmith-2.0.0/SessionSmith/__init__.py +173 -0
  3. sessionsmith-2.0.0/SessionSmith/cli.py +1029 -0
  4. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/compare.py +19 -18
  5. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/core.py +225 -68
  6. sessionsmith-2.0.0/SessionSmith/error_handling.py +287 -0
  7. sessionsmith-2.0.0/SessionSmith/exceptions.py +374 -0
  8. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/formats.py +77 -75
  9. sessionsmith-2.0.0/SessionSmith/i18n.py +315 -0
  10. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/info.py +28 -30
  11. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/jupyter_utils.py +8 -9
  12. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/manager.py +178 -245
  13. sessionsmith-2.0.0/SessionSmith/py.typed +3 -0
  14. sessionsmith-2.0.0/SessionSmith/resource_manager.py +336 -0
  15. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/serializers.py +19 -19
  16. sessionsmith-2.0.0/SessionSmith/ssm.py +2893 -0
  17. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/tracer.py +79 -80
  18. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/utils.py +16 -19
  19. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/visualizer.py +40 -39
  20. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/visualizer_arrays.py +33 -33
  21. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith/visualizer_generic.py +14 -14
  22. sessionsmith-2.0.0/SessionSmith.egg-info/PKG-INFO +420 -0
  23. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith.egg-info/SOURCES.txt +14 -2
  24. sessionsmith-2.0.0/SessionSmith.egg-info/entry_points.txt +2 -0
  25. sessionsmith-2.0.0/SessionSmith.egg-info/requires.txt +15 -0
  26. sessionsmith-2.0.0/pyproject.toml +162 -0
  27. sessionsmith-2.0.0/readme.md +370 -0
  28. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/setup.py +11 -3
  29. sessionsmith-2.0.0/tests/test_cli.py +101 -0
  30. sessionsmith-2.0.0/tests/test_core.py +197 -0
  31. sessionsmith-2.0.0/tests/test_ssm.py +676 -0
  32. sessionsmith-0.1.4/PKG-INFO +0 -274
  33. sessionsmith-0.1.4/SessionSmith/__init__.py +0 -33
  34. sessionsmith-0.1.4/SessionSmith/version_control.py +0 -356
  35. sessionsmith-0.1.4/SessionSmith.egg-info/PKG-INFO +0 -274
  36. sessionsmith-0.1.4/SessionSmith.egg-info/requires.txt +0 -6
  37. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/LICENSE +0 -0
  38. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith.egg-info/dependency_links.txt +0 -0
  39. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/SessionSmith.egg-info/top_level.txt +0 -0
  40. {sessionsmith-0.1.4 → sessionsmith-2.0.0}/setup.cfg +0 -0
@@ -0,0 +1,420 @@
1
+ Metadata-Version: 2.4
2
+ Name: SessionSmith
3
+ Version: 2.0.0
4
+ Summary: Git-style session management for Python. Save, restore, and track your variables with ease.
5
+ Home-page: https://github.com/yut0takagi/SessionSmith
6
+ Author: YutoTAKAGI
7
+ Author-email: YutoTAKAGI <yutotkg.1040@gmail.com>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/yut0takagi/SessionSmith
10
+ Project-URL: Documentation, https://github.com/yut0takagi/SessionSmith/tree/main/docs
11
+ Project-URL: Repository, https://github.com/yut0takagi/SessionSmith.git
12
+ Project-URL: Issues, https://github.com/yut0takagi/SessionSmith/issues
13
+ Project-URL: Changelog, https://github.com/yut0takagi/SessionSmith/blob/main/CHANGELOG.md
14
+ Keywords: jupyter,notebook,session,save,load,pickle,serialization,algorithm,tracer,visualization,cli,git,version-control,checkpoint,machine-learning,long-running,recovery
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Framework :: Jupyter
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Intended Audience :: Science/Research
20
+ Classifier: License :: OSI Approved :: MIT License
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3.9
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Topic :: Scientific/Engineering
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Classifier: Topic :: Software Development :: Version Control
30
+ Classifier: Typing :: Typed
31
+ Requires-Python: >=3.9
32
+ Description-Content-Type: text/markdown
33
+ License-File: LICENSE
34
+ Provides-Extra: visualization
35
+ Requires-Dist: matplotlib>=3.5.0; extra == "visualization"
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
38
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
39
+ Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
40
+ Requires-Dist: black>=23.0.0; extra == "dev"
41
+ Requires-Dist: isort>=5.12.0; extra == "dev"
42
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
43
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
44
+ Provides-Extra: all
45
+ Requires-Dist: matplotlib>=3.5.0; extra == "all"
46
+ Dynamic: author
47
+ Dynamic: home-page
48
+ Dynamic: license-file
49
+ Dynamic: requires-python
50
+
51
+ # SessionSmith
52
+
53
+ **SessionSmith** は、Jupyter Notebook や Python 実行時のセッション(変数・オブジェクト)を Git 風に管理できる堅牢なライブラリです。機械学習の長時間学習にも対応したチェックポイント機能を備えています。
54
+
55
+ ## ⚠️ セキュリティ警告
56
+
57
+ **重要**: このライブラリは`pickle`を使用しています。信頼できないソースからのセッションファイルをロードしないでください。悪意のあるpickleファイルは任意のコードを実行する可能性があります。
58
+
59
+ - ✅ 信頼できるソースからのファイルのみをロードしてください
60
+ - ✅ 不審なファイルをロードする前に、`verify_session()`で検証してください
61
+ - ✅ 本番環境では、セッションファイルの保存場所へのアクセスを制限してください
62
+
63
+ ## 特徴
64
+
65
+ - 🚀 **簡単**: たった2行で保存&復元
66
+ - 🔧 **SSM**: Git風のセッション管理(`.ssm/` ディレクトリベース)
67
+ - 🔄 **常時記録**: クラッシュ対策の自動保存
68
+ - ⏱️ **チェックポイント**: 機械学習の長時間学習に対応(定期自動保存、中断時復元)
69
+ - 📦 **複数形式対応**: pickle(デフォルト)、JSON、MessagePack、HDF5
70
+ - 🔍 **自動検出**: ファイル拡張子から形式を自動検出
71
+ - 🗜️ **圧縮対応**: gzip/bz2圧縮でディスク容量を節約
72
+ - 📊 **情報表示**: セッションの詳細情報を確認
73
+ - 🔄 **比較機能**: 2つのセッションを比較
74
+ - 💾 **自動バックアップ**: 定期的な自動保存
75
+ - 🏷️ **バージョン管理**: Git風のコミット・チェックアウト機能
76
+ - 📈 **アルゴリズムトレーサー**: 1行ごとの変数状態記録・可視化
77
+ - 🎨 **可視化**: アルゴリズムの実行をアニメーションで表示
78
+ - 🚀 **拡張機能対応**: Cursor/VSCode拡張機能でコードを書かずに実行可能
79
+ - 🌐 **多言語対応**: 日本語・英語のエラーメッセージに対応
80
+ - 🛡️ **堅牢なエラーハンドリング**: リトライ、詳細なエラー情報、コンテキスト管理
81
+
82
+ ## インストール
83
+
84
+ ### pip でインストール(推奨)
85
+
86
+ ```bash
87
+ pip install SessionSmith
88
+ ```
89
+
90
+ ### Homebrew でインストール
91
+
92
+ ```bash
93
+ # 現在のリポジトリから直接インストール
94
+ brew install yut0takagi/SessionSmith/sessionsmith
95
+
96
+ # または、ローカルファイルからインストール
97
+ brew install --build-from-source ./Formula/sessionsmith.rb
98
+ ```
99
+
100
+ 可視化機能を使う場合:
101
+
102
+ ```bash
103
+ pip install SessionSmith[visualization]
104
+ # または
105
+ pip install matplotlib
106
+ ```
107
+
108
+ ## クイックスタート
109
+
110
+ ### SSM - Git風セッション管理(推奨)
111
+
112
+ ```python
113
+ from SessionSmith import ssm
114
+
115
+ # 初期化(.ssm/ ディレクトリを作成)
116
+ ssm.init()
117
+
118
+ # 変数を作成
119
+ a = 1
120
+ b = [1, 2, 3]
121
+ model = train_model()
122
+
123
+ # コミット
124
+ ssm.commit("Initial state")
125
+
126
+ # 履歴を見る
127
+ ssm.log()
128
+
129
+ # ブランチ機能
130
+ ssm.branch('feature', create=True) # ブランチ作成
131
+ ssm.checkout_branch('feature') # ブランチ切り替え
132
+
133
+ # マージ機能
134
+ ssm.merge('feature') # ブランチをマージ
135
+
136
+ # タグ機能
137
+ ssm.tag('v1.0.0') # タグ作成
138
+ ssm.checkout_tag('v1.0.0') # タグからチェックアウト
139
+
140
+ # リモート機能
141
+ ssm.remote_add('origin', '/path/to/remote') # リモート追加
142
+ ssm.push('origin', 'main') # プッシュ
143
+ ssm.pull('origin', 'main') # プル
144
+
145
+ # 常時記録を有効化(クラッシュ対策)
146
+ ssm.continuous()
147
+
148
+ # 以前の状態に復元
149
+ ssm.checkout("abc123")
150
+
151
+ # クラッシュ後の復元
152
+ ssm.recover()
153
+ ```
154
+
155
+ ### チェックポイント(長時間学習対応)
156
+
157
+ 機械学習の学習ループなど、長時間実行されるタスクに最適です。
158
+
159
+ ```python
160
+ from SessionSmith import ssm
161
+
162
+ ssm.init()
163
+
164
+ # 5分ごとに自動チェックポイント
165
+ with ssm.checkpoint(interval=300) as cp:
166
+ for epoch in range(1000):
167
+ loss = train()
168
+ acc = validate()
169
+
170
+ # 手動チェックポイント + メトリクス記録
171
+ cp.step(loss=loss, accuracy=acc)
172
+
173
+ # 学習が長くなっても自動保存される
174
+ # Ctrl+C で中断しても自動保存される
175
+
176
+ # 中断後に復元
177
+ ssm.restore_checkpoint()
178
+
179
+ # チェックポイント一覧
180
+ ssm.list_checkpoints()
181
+ ```
182
+
183
+ **チェックポイントの特徴:**
184
+ - ⏱️ 定期的な自動保存(バックグラウンド)
185
+ - 🛑 シグナル(Ctrl+C)での中断時に自動保存
186
+ - 💥 例外発生時に緊急保存
187
+ - 📊 メトリクスの追跡(loss, accuracy など)
188
+ - 🧹 古いチェックポイントの自動削除
189
+
190
+ ### 形式変換(.pkl/.json との互換性)
191
+
192
+ ```python
193
+ from SessionSmith import ssm
194
+
195
+ ssm.init()
196
+ ssm.commit("checkpoint")
197
+
198
+ # SSM → 従来形式へエクスポート
199
+ ssm.export("backup.pkl")
200
+ ssm.export("data.json")
201
+
202
+ # 従来形式 → SSMへインポート
203
+ ssm.import_session("old_session.pkl")
204
+
205
+ # 形式変換
206
+ ssm.convert("data.pkl", "data.json")
207
+ ```
208
+
209
+ ### 多言語対応(日本語・英語)
210
+
211
+ ```python
212
+ from SessionSmith import set_language, get_language
213
+
214
+ # 日本語に設定
215
+ set_language('ja')
216
+ # または環境変数で設定: export SESSIONSMITH_LANG=ja
217
+
218
+ # 英語に設定
219
+ set_language('en')
220
+
221
+ # 自動検出(システムのロケールから判定)
222
+ set_language('auto')
223
+
224
+ # 現在の言語を確認
225
+ lang = get_language() # 'ja' または 'en'
226
+ ```
227
+
228
+ エラーメッセージや情報メッセージが設定した言語で表示されます。
229
+ SSMが初期化されている場合、言語設定は自動的に `.ssm/config` に保存されます。
230
+
231
+ ### レガシーAPI(後方互換性)
232
+
233
+ > ⚠️ 以下のAPIは後方互換性のために残されています。新規開発では `ssm` の使用を推奨します。
234
+ >
235
+ > **注意**: `save_session()` と `load_session()` は、デフォルトでSSM(`.ssm/`ディレクトリ)に統合されています。
236
+ > 全てのセッションは`.ssm/`ディレクトリ内に保存され、バージョン管理されます。
237
+
238
+ ```python
239
+ from SessionSmith import save_session, load_session
240
+
241
+ # セッション保存(.ssm/ディレクトリに自動保存、バージョン管理付き)
242
+ save_session("my_session.pkl") # SSMにコミット + オプションで.pklにもエクスポート
243
+
244
+ # セッション復元(SSMの最新コミットから読み込み)
245
+ load_session() # ファイルパスなしで最新コミットから読み込み
246
+ load_session("my_session.pkl") # ファイルが存在する場合はインポートしてから読み込み
247
+
248
+ # JSON形式で保存(安全、可読性)
249
+ save_session("my_session.json") # SSMにコミット + オプションで.jsonにもエクスポート
250
+
251
+ # 従来通りファイルに直接保存する場合(use_ssm=False)
252
+ save_session("my_session.pkl", use_ssm=False)
253
+ load_session("my_session.pkl", use_ssm=False)
254
+ ```
255
+
256
+ ### CLI ツール
257
+
258
+ ```bash
259
+ # 初期化
260
+ ssm init
261
+
262
+ # 状態確認
263
+ ssm status
264
+
265
+ # コミット
266
+ ssm commit -m "Add training data"
267
+
268
+ # 履歴
269
+ ssm log --oneline
270
+
271
+ # 監視モード(定期スナップショット)
272
+ ssm watch --interval 10
273
+
274
+ # ダッシュボード(Webブラウザ)
275
+ ssm dashboard
276
+
277
+ # 統計
278
+ ssm stats --graph
279
+ ```
280
+
281
+ ## 主な機能
282
+
283
+ ### 1. SSM(Git風セッション管理)
284
+ - `.ssm/` ディレクトリベースのセッション管理
285
+ - コミット、履歴、チェックアウト
286
+ - ブランチ機能(分岐・切り替え)
287
+ - マージ機能(複数ブランチの統合)
288
+ - タグ機能(コミットへの名前付け)
289
+ - リモートリポジトリとの同期(push/pull)
290
+ - 常時記録(クラッシュ対策)
291
+ - CLIツール `ssm` コマンド
292
+
293
+ ### 2. チェックポイント(長時間学習対応)
294
+ - 定期的な自動保存
295
+ - 中断・例外時の緊急保存
296
+ - メトリクス追跡
297
+ - 復元機能
298
+
299
+ ### 3. 基本的な保存・復元
300
+ - 変数の選択的保存・復元
301
+ - 圧縮サポート(gzip/bz2)
302
+ - Jupyter Notebook内部変数の自動除外
303
+
304
+ ### 4. SessionManagerクラス
305
+ - セッション管理の簡素化
306
+ - 自動バックアップ機能
307
+ - 常時記録機能
308
+
309
+ ### 5. CLI ツール
310
+ - `ssm watch` - 監視モード
311
+ - `ssm stats` - 統計分析
312
+ - `ssm dashboard` - Webダッシュボード
313
+
314
+ ### 6. セッション情報・比較
315
+ - セッション情報の表示
316
+ - 2つのセッションの比較
317
+ - セッションファイルの検証
318
+
319
+ ### 7. アルゴリズム実行トレーサー
320
+ - 1行ごとの変数状態記録
321
+ - 可視化(アニメーション)
322
+ - トレースデータの保存・読み込み
323
+
324
+ ## ⚠️ 複数ファイル使用時の注意事項
325
+
326
+ Python notebookで複数のファイルからインポートしたり、複数のファイルで同一変数名を使用する場合、変数名の衝突に注意してください。
327
+
328
+ - **変数名の衝突**: 複数のnotebookファイルから同じ`.ssm/`ディレクトリを使用する場合、同じ変数名が使われると衝突が発生する可能性があります
329
+ - **自動検出**: SSMは異なるファイルからのコミットを自動的に検出し、変数名の衝突を警告します
330
+ - **推奨**: ファイルごとに異なる変数名を使用するか、ファイル名をプレフィックスとして使用してください
331
+
332
+ 詳細は [基本的な使い方](docs/getting-started.md#複数ファイル使用時の注意事項) を参照してください。
333
+
334
+ ## 詳細なドキュメント
335
+
336
+ 詳細な使い方は以下のドキュメントを参照してください:
337
+
338
+ - 🚀 [SSM - Git風セッション管理](docs/ssm-guide.md) - `.ssm/` ディレクトリベースの管理
339
+ - 💻 [CLI リファレンス](docs/cli-reference.md) - コマンドラインツールの使い方
340
+ - 📖 [基本的な使い方](docs/getting-started.md) - 保存・復元の詳細
341
+ - 📈 [アルゴリズムトレーサー](docs/algorithm-tracer.md) - トレース・可視化機能
342
+ - 🌐 [国際化(i18n)ガイド](docs/i18n-guide.md) - 多言語対応(日本語・英語)
343
+ - 📚 [APIリファレンス](docs/api-reference.md) - 全APIの詳細
344
+
345
+ ## 使用例
346
+
347
+ ### 機械学習ワークフロー
348
+
349
+ ```python
350
+ from SessionSmith import ssm
351
+
352
+ # 初期化
353
+ ssm.init()
354
+
355
+ # データ準備
356
+ X_train, y_train = load_data()
357
+ model = create_model()
358
+
359
+ ssm.commit("Data loaded")
360
+
361
+ # モデル学習(長時間)
362
+ with ssm.checkpoint(interval=600) as cp: # 10分ごと
363
+ for epoch in range(100):
364
+ for batch in dataloader:
365
+ loss = model.train_step(batch)
366
+
367
+ val_loss = validate(model)
368
+ cp.step(epoch=epoch, loss=loss, val_loss=val_loss)
369
+
370
+ print(f"Epoch {epoch}: loss={loss:.4f}")
371
+
372
+ # 学習完了時にコミット
373
+ ssm.commit("Training complete")
374
+
375
+ # バックアップをエクスポート
376
+ ssm.export("trained_model.pkl")
377
+ ```
378
+
379
+ ### アルゴリズム可視化
380
+
381
+ ```python
382
+ from SessionSmith import AlgorithmTracer, visualize_algorithm_trace
383
+
384
+ with AlgorithmTracer(target_variables=["arr"]) as tracer:
385
+ bubble_sort(arr)
386
+
387
+ visualize_algorithm_trace(
388
+ trace_data=tracer.get_trace_data(),
389
+ output_file="animation.gif",
390
+ target_variables=["arr"]
391
+ )
392
+ ```
393
+
394
+ ## Cursor/VSCode拡張機能
395
+
396
+ SessionSmithには、Cursor/VSCode用の拡張機能が用意されています。コードを書かずに、GUIからセッションの保存・復元が可能です。
397
+
398
+ ### インストール
399
+
400
+ **Open VSX Registryから:**
401
+ 1. Cursor/VSCodeでコマンドパレット(Cmd+Shift+P / Ctrl+Shift+P)を開く
402
+ 2. `Extensions: Install Extension` を選択
403
+ 3. `SessionSmith` を検索してインストール
404
+
405
+ または、以下のURLから直接インストール:
406
+ - https://open-vsx.org/extension/yut0takagi/sessionsmith
407
+
408
+ ### 機能
409
+
410
+ - ✅ **Save Session**: 現在のPythonセッション(変数)を保存
411
+ - ✅ **Load Session**: セッションファイルを選択して変数を復元
412
+ - ✅ **Show Session Info**: セッションファイルの情報を表示
413
+ - ✅ **Notebook対応**: Jupyter Notebookでセルを追加せずに実行
414
+ - ✅ **自動検出**: Pythonインタープリターを自動検出(仮想環境対応)
415
+
416
+ 詳細は [extension/README.md](extension/README.md) を参照してください。
417
+
418
+ ## ライセンス
419
+
420
+ MIT
@@ -0,0 +1,173 @@
1
+ """
2
+ SessionSmith - Git風セッション管理ライブラリ
3
+
4
+ .ssm/ ディレクトリベースでセッションを管理します。
5
+ Jupyter Notebook環境での使用に最適化されています。
6
+
7
+ 基本的な使い方:
8
+ >>> from SessionSmith import ssm
9
+ >>> ssm.init() # 初期化
10
+ >>> ssm.commit("Initial state") # コミット
11
+ >>> ssm.log() # 履歴表示
12
+ >>> ssm.checkout("abc123") # 復元
13
+ >>> ssm.continuous() # 常時記録モード
14
+
15
+ 長時間実行(機械学習など):
16
+ >>> with ssm.checkpoint(interval=300) as cp: # 5分ごとに自動保存
17
+ ... for epoch in range(1000):
18
+ ... loss = train()
19
+ ... cp.step(loss=loss) # 手動チェックポイント + メトリクス
20
+ >>>
21
+ >>> ssm.restore_checkpoint() # 最新から復元
22
+ >>> ssm.list_checkpoints() # チェックポイント一覧
23
+
24
+ 形式変換:
25
+ >>> ssm.export("backup.pkl") # .pkl/.json へエクスポート
26
+ >>> ssm.import_session("old.pkl") # .pkl/.json からインポート
27
+ >>> ssm.convert("a.pkl", "b.json") # 形式変換
28
+
29
+ Note:
30
+ save_session/load_session および SessionManager は後方互換性のために
31
+ 残されていますが、新規開発では ssm モジュールの使用を推奨します。
32
+ """
33
+
34
+ # 主要API(推奨)
35
+ from . import i18n, ssm
36
+
37
+ # ユーティリティ
38
+ from .compare import compare_sessions, print_comparison
39
+
40
+ # 後方互換性のためのAPI(非推奨)
41
+ from .core import load_session, save_session
42
+ from .error_handling import (
43
+ ErrorHandler,
44
+ error_context,
45
+ format_error_message,
46
+ get_default_error_handler,
47
+ get_error_summary,
48
+ retry,
49
+ safe_execute,
50
+ set_default_error_handler,
51
+ )
52
+ from .exceptions import (
53
+ CheckpointError,
54
+ CheckpointRestoreError,
55
+ CheckpointSaveError,
56
+ MemoryLimitError,
57
+ ResourceError,
58
+ SerializationError,
59
+ SessionCorruptedError,
60
+ SessionError,
61
+ SessionLoadError,
62
+ SessionSaveError,
63
+ SessionSmithError,
64
+ SSMBranchNotFoundError,
65
+ SSMCommitNotFoundError,
66
+ SSMConfigError,
67
+ SSMError,
68
+ SSMMergeConflictError,
69
+ SSMNoCommitsError,
70
+ SSMNotInitializedError,
71
+ SSMRemoteNotFoundError,
72
+ SSMTagNotFoundError,
73
+ StorageLimitError,
74
+ ValidationError,
75
+ VariableSerializationError,
76
+ )
77
+ from .i18n import Language, get_language, set_language, t, translate
78
+ from .info import get_session_info, list_session_variables, print_session_info
79
+ from .manager import SessionManager
80
+ from .serializers import CustomSerializer
81
+ from .ssm import (
82
+ branch,
83
+ checkout_branch,
84
+ checkout_tag,
85
+ get_current_branch,
86
+ list_tags,
87
+ merge,
88
+ pull,
89
+ push,
90
+ remote_add,
91
+ remote_list,
92
+ tag,
93
+ )
94
+
95
+ # アルゴリズムトレーサー
96
+ from .tracer import AlgorithmTracer
97
+ from .utils import verify_session
98
+ from .visualizer import print_trace_summary, visualize_algorithm_trace
99
+
100
+ __version__ = "2.0.0"
101
+
102
+ __all__ = [
103
+ # 主要API(推奨)
104
+ "ssm",
105
+ # 後方互換性(非推奨: ssm を使用してください)
106
+ "save_session", # → ssm.export() または ssm.commit()
107
+ "load_session", # → ssm.checkout() または ssm.import_session()
108
+ "SessionManager", # → ssm モジュール
109
+ # ユーティリティ
110
+ "get_session_info",
111
+ "list_session_variables",
112
+ "print_session_info",
113
+ "compare_sessions",
114
+ "print_comparison",
115
+ "verify_session",
116
+ "CustomSerializer",
117
+ # アルゴリズムトレーサー
118
+ "AlgorithmTracer",
119
+ "visualize_algorithm_trace",
120
+ "print_trace_summary",
121
+ # 国際化(i18n)
122
+ "i18n",
123
+ "set_language",
124
+ "get_language",
125
+ "translate",
126
+ "t",
127
+ "Language",
128
+ # エラーハンドリング
129
+ "retry",
130
+ "error_context",
131
+ "safe_execute",
132
+ "get_error_summary",
133
+ "format_error_message",
134
+ "ErrorHandler",
135
+ "set_default_error_handler",
136
+ "get_default_error_handler",
137
+ # ブランチ・マージ・タグ・リモート機能
138
+ "branch",
139
+ "checkout_branch",
140
+ "get_current_branch",
141
+ "merge",
142
+ "tag",
143
+ "list_tags",
144
+ "checkout_tag",
145
+ "remote_add",
146
+ "remote_list",
147
+ "push",
148
+ "pull",
149
+ # 例外クラス
150
+ "SessionSmithError",
151
+ "SSMError",
152
+ "SSMNotInitializedError",
153
+ "SSMCommitNotFoundError",
154
+ "SSMNoCommitsError",
155
+ "SSMConfigError",
156
+ "SSMBranchNotFoundError",
157
+ "SSMTagNotFoundError",
158
+ "SSMRemoteNotFoundError",
159
+ "SSMMergeConflictError",
160
+ "SessionError",
161
+ "SessionSaveError",
162
+ "SessionLoadError",
163
+ "SessionCorruptedError",
164
+ "CheckpointError",
165
+ "CheckpointSaveError",
166
+ "CheckpointRestoreError",
167
+ "SerializationError",
168
+ "VariableSerializationError",
169
+ "ValidationError",
170
+ "ResourceError",
171
+ "MemoryLimitError",
172
+ "StorageLimitError",
173
+ ]