Standard conform method overrides
Good practice for method overrides in Python would be that an inheriting method has exactly the same parameters as the method in the superclass it inherits from and all additional parameters are optional (have a default value). We're violating this by having:
1. methods which are missing parameters
e.g. SNPE-B's _log_prob_proposal_posterior
https://github.com/sbi-dev/sbi/blob/db91f59c746a4d3f79475f99364bee325bf1efc1/sbi/inference/snpe/snpe_b.py#L42-L44
is missing the proposal of its base method
https://github.com/sbi-dev/sbi/blob/db91f59c746a4d3f79475f99364bee325bf1efc1/sbi/inference/snpe/snpe_base.py#L553-L558
This may actually be an easy fix of just introducing the default value None.
1.1. methods which are missing parameters of their superclass but have others instead (this is by far the most common problem)
SNPE-A is an example where this is happening. After reordering parameters, we see that PosteriorEstimator of snpe_base has the parameters force_first_round_loss and discard_prior_samples which SNPE-A doesn't implement. The additional optional parameters component_perturbation and final_round alone would be fine, so this is really a variant of 1.
sbi/inference/snpe/snpe_a.py:97:9 - error: Method "train" overrides class "PosteriorEstimator" in an incompatible manner
Parameter 10 name mismatch: base parameter is named "force_first_round_loss", override parameter is named "component_perturbation"
Parameter 11 name mismatch: base parameter is named "discard_prior_samples", override parameter is named "final_round" (reportIncompatibleMethodOverride)
https://github.com/sbi-dev/sbi/blob/db91f59c746a4d3f79475f99364bee325bf1efc1/sbi/inference/snpe/snpe_base.py#L204-L219
https://github.com/sbi-dev/sbi/blob/db91f59c746a4d3f79475f99364bee325bf1efc1/sbi/inference/snpe/snpe_a.py#L97-L112