Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make explicit input variables temporal inferences #460

Closed
3 tasks
MattiSG opened this issue Feb 23, 2017 · 5 comments · Fixed by #813
Closed
3 tasks

Make explicit input variables temporal inferences #460

MattiSG opened this issue Feb 23, 2017 · 5 comments · Fixed by #813
Assignees

Comments

@MattiSG
Copy link
Member

MattiSG commented Feb 23, 2017

This issue handles a part of #458.

For base_function, the issue rose with the formula rsa, where macrosimulation (where missing values should be the default ones (or raise warnings, @benjello?) and production (where missing values should be inferred) expected behaviours differ.

Default values in input variables are the source of the issue: if a formula needs values that are undefined (e.g. because they are in previous months from the calculation), it won't crash nor log anything because the input variables return their default values. This inference behaviour seems to be fine for macrosimulation, but production would expect a time-based inference, where the value is copied from its closest defined value rather than a global default one. Changing the inference mode means changing the base_function, but that raises conflicts between uses.

There is a consensus between @cbenz @michelbl @fpagnoux that base_function is incomprehensible and counterintuitive. It is at least misnamed and it should be more explicit that it is currently used purely as an extrapolation mechanism.

There is also a consensus that defaulting to the simulation period when requesting to compute a formula is not a proper behaviour: this piece of information should be mandatory to avoid incomprehensible behaviour on omission.

Discussed possible solutions

Candidates

  • Remove the default period of the input variables: it is currently the period of the simulation, while it could be totally explicit. This solution seems to be the preferred one. For example, it is “well-known” that the revenue tax is defined on the year 2 years ago, not the current one. Documenting the requested definition periods in each formula and forcing the inputs to explicitly state their period could solve the problem.
  • Change the default period of the input variables: it is currently the period of the simulation, while it could be “at all times”. This needs defining “at all times” in Core.

Eliminated

  • Configuration switch to alternate between the two behaviours in the input variables. This solution does not scale and increases complexity.
  • Implement two different formulas, each one implementing one specific behaviour. Considering that callers would need to define which version to call, that would cascade upwards with each caller formula also having an alternate version, which would end up being the same as having a configuration switch.
  • Improve debugging tools to report used inputs. The produced data would be irrelevant because of the size of the dependency graph, which would make it too hard to identify the pertinent parts.
  • Stop providing default values for inputs, which would make computations report errors if they don't define necessary values. This solution is probably not viable since the dependency graph is quickly huge, and that would mean defining very large amounts of disconnected values in order to achieve the simplest computations. Since there is no point in providing different “default values” sets, there is no point either in a solution where default values would be an opt-in provided by a file, for example.

Suggested action plan

  • Remove base_function, check how many tests fail and evaluate the amount of work to refactor the inputs.
  • Make it mandatory to specify input variable periods in test cases.
  • Recommend to document input periods in the formula documentation whenever those periods do not match the formula computation period.
@benjello
Copy link
Member

Some comments:

  • When computing an individual variable, it might be doable to specify sufficient input variables. But when you look at the whole system (decompositions, fiche de paie, even mes-aides as a whole etc) to identify the different pass-through it is very painful to provide sufficient initialized variables. Defaulting to the least harmful default value seems a reasonable choice. But I can understand that one may want to have a mode where errors pop up when a variable is missing, but the user should have the option to choose the first behavior (I just saw that you rejected that option and I do not need it).
  • I agree on the consensus on base_function and defaulting to the simulation period.
  • I greatly suggest that the time-based inference should be provided as an option per variable.
  • A backstop date or period of time might also be implemented. We have some variable whose calculation undergoing infinite loops in the pas (X(t) needs Y(t-1) which in turn needs X(t-2)) that could be halted by requiring that passing a certain date/period the default (or custom default) or the last known value is used (We should get rid of the confusing max_nb_cycles).
  • Choosing the input setter should be possible. For example I know that salaire_imposable is a monthly variable but I will provide yearly variable (eventually for some past years), I should be able to config the fact that the value should be divided by 12 (and avoiding multiple periods storing).

I hope this helps and keep on the good work !

@MattiSG
Copy link
Member Author

MattiSG commented Mar 1, 2017

Choosing the input setter should be possible.

This could be interesting, but is out of the scope of this specific issue on base_function and default simulation period.
This is set_input, which will be treated in another issue, and enriches #458.

A backstop date or period of time might also be implemented.

This could be interesting, but is out of the scope of this specific issue on base_function and default simulation period.
This is an alternative to max_nb_cycles, which is not an inference and thus won't be treated in #458.

I greatly suggest that the time-based inference should be provided as an option per variable.

Do you have an example of a computing that would be impossible to do without such an inference? If not, a case where it would be very cumbersome?
The conclusion of previous discussions seemed to be more that the engine itself should be dumb and leave it to case-specific preprocessing to add the necessary inferred values from the context-specific provided inputs.

@benjello
Copy link
Member

benjello commented Mar 1, 2017

I disagree on one point:
max_nb_cycles is an implicit inference, since it may block the computation toward the past and thus doesn't allow some values to be computed.

For your last remark, I think of the obvious is_permanent for date_naissance but it seems to be treated by the proposal.

My suggestion was to recognize that the need of extrapolating a value to the past or future without having it permanent may be a good option to replace

base_function = requested_period_last_or_next_value

@MattiSG
Copy link
Member Author

MattiSG commented Mar 2, 2017

Very clear, thank you! I updated #458 accordingly 🙂

@Morendil
Copy link
Contributor

I think we'll want to look at this again in the context of #749 and openfisca/openfisca-france#1211

In Core 24.9.8 and running the YAML tests for France 32.0.1, I disabled the following two lines (commenting them out):

if array is None and variable.base_function:
array = variable.base_function(holder, period, *extra_params)

This results in 21 failures, listed below.

The France model as of 32.0.1 has 18 variables with a base_function explicitly assigned:

  • age
  • age_en_mois
  • garde_alternee
  • rsa_isolement_recent
  • contrat_de_travail_debut
  • contrat_de_travail_fin
  • effectif_entreprise
  • nombre_tickets_restaurant
  • prevoyance_obligatoire_cadre_taux_employe
  • prevoyance_obligatoire_cadre_taux_employeur
  • livret_a
  • epargne_revenus_non_imposables
  • epargne_revenus_imposables
  • valeur_patrimoine_loue
  • valeur_immo_non_loue
  • valeur_locative_immo_non_loue
  • valeur_terrains_non_loues
  • valeur_locative_terrains_non_loues

However, the reliance on base_function is much broader, as variables of types other than int and float are assigned the base function requested_period_last_value by default.

ERROR:openfisca_core.tools.test_runner:aides_logement_2018.yaml: aides_logement_2018_01 - 2018-01
ERROR:openfisca_core.tools.test_runner:exoneration_cotisations_employeur_apprenti.yaml: exoneration_cotisations_employeur_apprenti - 2015-03
ERROR:openfisca_core.tools.test_runner:exoneration_cotisations_employeur_zrd.yaml: Exonération cotisations employeur zone de restructuration défense (ZRD) : SMIC - 2014
ERROR:openfisca_core.tools.test_runner:exoneration_cotisations_employeur_zrr.yaml: Exonération cotisations employeur zone de revitalisation rurale (ZRR) - 1.4 SMIC - 2014
ERROR:openfisca_core.tools.test_runner:exoneration_is_creation_zrr.yaml: Exonération d'impôt sur les sociétés pour les créations en zone de revitalisation rurale (ZRR) - 2014
ERROR:openfisca_core.tools.test_runner:garde_alternee.yaml: Infer from future values - 2015-04
ERROR:openfisca_core.tools.test_runner:remuneration_apprenti.yaml: remuneration_apprenti - 2015-03
ERROR:openfisca_core.tools.test_runner:rsa.yaml: RSA Cas N°7 - 2018-05
ERROR:openfisca_core.tools.test_runner:rsa.yaml: RSA Cas N°8 - 2018-05
ERROR:openfisca_core.tools.test_runner:rsa_2017.yaml: Parent isolé, majoration et déduction de l'ASF - 2017-01
ERROR:openfisca_core.tools.test_runner:rsa_2017.yaml: Effets figés introduits en 2017 (exemple inspiré du suivi législatif) - 2017-01
ERROR:openfisca_core.tools.test_runner:rsa_couple.yaml: RSA couple, salaire_net = [5000, 0] - 2014
ERROR:openfisca_core.tools.test_runner:test_mes_aides_54212b32fb35830200b31327.yaml: [patrimoine, rsa] Montant soustrait de 50% de la valeur locative des biens immobiliers non loués - 2014-09
ERROR:openfisca_core.tools.test_runner:test_mes_aides_54212b9dfb35830200b3132e.yaml: [patrimoine, rsa] Montant soustrait de 80% de la valeur locative des terrains non loués - 2014-09
ERROR:openfisca_core.tools.test_runner:test_mes_aides_542134d3fb35830200b31345.yaml: [patrimoine, rsa] Base ressource RSA - 2014-09
ERROR:openfisca_core.tools.test_runner:test_mes_aides_5421356afb35830200b3134c.yaml: [patrimoine, rsa] Montant soustrait de 3% des revenus théoriques de l'épargne ne générant pas de revenus - 2014-09
ERROR:openfisca_core.tools.test_runner:test_mes_aides_54367da883a4916e4d5a13a3.yaml: [base ressources, cmu-c/acs, patrimoine] La valeur locative des biens immobiliers non loués est prise en compte à 50% - 2014-10
ERROR:openfisca_core.tools.test_runner:test_mes_aides_5436807f2f6a1b774dad2a71.yaml: [base ressources, cmu-c/acs, patrimoine] La valeur locative des terrains non loués est prise en compte à 80% - 2014-10
ERROR:openfisca_core.tools.test_runner:test_mes_aides_545a3741d550a12d2ae7b68c.yaml: [rsa] 2_Patrimoine sur livret - 2014-11
ERROR:openfisca_core.tools.test_runner:test_mes_aides_546490a716951c7e7065a5a1.yaml: [aspa, base ressources, patrimoine] Prise en compte à 3% de la valeur vénale des résidences secondaires - 2014-11
ERROR:openfisca_core.tools.test_runner:test_mes_aides_54bfdaf4d337b5d372377d30.yaml: [patrimoine, rsa] 119_Immeuble non loué - 2015-01

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'aides_logement@2018: '[293.52] differs from [3522.] with an absolute margin [3228.48] > 1

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'apprenti@2015-01: '[0.] differs from [1.] with an absolute margin [1.] > 0

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'exoneration_cotisations_employeur_zrd@2015-01: '[0.] differs from [409.5622] with an absolute margin [409.5622] > 0.005

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'exoneration_cotisations_employeur_zrr@2015-01: '[0.] differs from [541.759] with an absolute margin [541.759] > 0.005

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'exoneration_is_creation_zrr@2015: '[0.] differs from [1.] with a relative margin [1.] > [1.e-04]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'garde_alternee@2015-04: '[0.] differs from [1.] with an absolute margin [1.] > 0

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'apprenti@2015-01: '[0.] differs from [1.] with an absolute margin [1.] > 0

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'rsa@2018-05: '[444.06046] differs from [560.17] with an absolute margin [116.10953] > 0.03

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'rsa@2018-05: '[335.2269] differs from [521.42] with an absolute margin [186.19308] > 0.03

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2017-01: '[491.26157] differs from [676.3] with a relative margin [185.03842] > [6.7629995]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2017-01: '[217.67842] differs from [376.9] with a relative margin [159.22157] > [7.5379996]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 48, in assert_near
    diff, absolute_error_margin)
AssertionError: b'rsa_forfait_logement@2014-06: '[0.] differs from [119.83] with an absolute margin [119.83] > 0.005

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2014-09: '[448.184] differs from [48.18] with a relative margin [400.004] > [0.9636]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2014-09: '[448.184] differs from [128.18] with a relative margin [320.004] > [2.5635998]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2014-09: '[448.184] differs from [364.85] with a relative margin [83.333984] > [7.297]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2014-09: '[448.184] differs from [373.18] with a relative margin [75.004] > [7.4635997]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'cmu_c@2014-10: '[1.] differs from [0.] with a relative margin [1.] > [0.]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'cmu_c@2014-10: '[1.] differs from [0.] with a relative margin [1.] > [0.]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2014-11: '[448.184] differs from [398.18] with a relative margin [50.003998] > [7.9635997]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'aspa@2014-11: '[400.] differs from [0.] with a relative margin [400.] > [0.]

======================================================================
FAIL: unittest.case.FunctionTestCase (check)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 153, in check
    _run_test(period_str, test, verbose, only_variables, ignore_variables, options)
  File "/app/openfisca-core/openfisca_core/tools/test_runner.py", line 250, in _run_test
    relative_error_margin = relative_error_margin,
  File "/app/openfisca-core/openfisca_core/tools/__init__.py", line 52, in assert_near
    diff, abs(relative_error_margin * target_value))
AssertionError: b'rsa@2015-01: '[452.21442] differs from [243.88] with a relative margin [208.33441] > [4.8776]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants