-
Notifications
You must be signed in to change notification settings - Fork 20
OpenFiscaフレームワークのTips
OpenFiscaフレームワークは高機能ですが、それゆえ想定と異なる挙動を示すこともあります。
公式のマニュアルに載っていない内容もあるため、それらを以下に記載します。
-
テスト実行
- 全てのテストを実行 (2023/2/14時点では失敗するため、下の「一部のテストを実行」でテストしてください)
make test
- 一部のテストを実行
openfisca test --country-package openfisca_japan openfisca_japan/tests/<実行したいテストファイル或いはディレクトリパス>
上記コマンド実行時にテストファイル(~.yaml)を読み込みます。そのため、テストファイルのみ修正する場合はそれ自身を修正してコマンド実行すれば良いです。
- 全てのテストを実行 (2023/2/14時点では失敗するため、下の「一部のテストを実行」でテストしてください)
-
内部計算方法の修正
openfisca_japan/variables/~.py等の計算方法を規定するファイルを修正する。
以下のコマンドでビルドを行わないとテスト時に修正が反映されない。
make build
その後、上述のテストを行う。 -
openfisca_japan/tests
以下のテストファイルでテストするとき、テストに成功した場合はopenfisca_japan/variables
以下のpythonファイル内で記載した標準出力(print関数の出力)はコンソールに表示されません。
テストに失敗した場合、標準出力は表示されます。そのため、デバッグのためにわざと失敗するテストファイルでテストするというやり方があります。
また、variablesのpythonファイル内でエラーが発生した場合はそのファイル内で宣言した変数の値も表示されます。
variablesのpythonファイル内でエラーが発生せず、出力された結果がtestsのテストファイルと一致しない場合は、print関数で明示的に出力した内容しか表示されません。 -
テストファイルに記載された小数の値を
対象世帯.members
等で読み出す際、classのvalue_typeをfloatにしていても、0.5単位で丸められて読み出されます。
丸めの範囲は、以下の通りです。- 閉区間[-0.25, 0.25] -> 0
- 開区間(0.25, 0.75) -> 0.5
-
yamlのテストファイル上での入力情報は、本来は途中で算出される値を手入力してもエラーになりません。
例えば、所得
は本来は収入
から給与所得控除
を差し引いて算出されますが、yamlファイルのinput
に所得
の値を手入力しても、正しくoutput
が算出されます。
これにより、各種手当等の算出方法をテストする際、所得制限額から所得ベースのテストを作成することができます。
ただし、openfiscaのAPIにjsonをポストする際は、途中で算出される値を入力するとエラーになるため、大元の情報を入力する必要があります。
フロントエンドを実装する際はこの点に注意してください。
- メソッド名 formula の代わりに forluma_{年} や formula_{年}_{月}_{日} を使うと、指定した時刻以降のperiodの場合にのみ呼び出されます。
つまり、periodの場合分けでif文を使わずに済むようになります。
(参考) https://github.com/openfisca/openfisca-core/blob/fad5f69a91435c767cb6bca73de6a7d1b666c082/openfisca_core/variables/variable.py#L246
-
(APIのURL)/spec から仕様のjsonをgetできる。
-
definitions.世帯.properties
: 世帯に関する変数 -
definitions.人物.properties
: 人物に関する変数 -
paths
: APIのエンドポイント
-
-
テスト用APIでは日付の月と日は0埋めの2桁でなくても正しく計算されるが、web APIでは月と日は0埋めの2桁でないと正しく計算されずエラーも出ない。
即ち、日付は「YYYY-MM-DD」のフォーマットで入力する必要がある。