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

Roadmap for v1.0.0 #198

Open
10 of 22 tasks
ConorMacBride opened this issue Apr 3, 2023 · 2 comments
Open
10 of 22 tasks

Roadmap for v1.0.0 #198

ConorMacBride opened this issue Apr 3, 2023 · 2 comments
Labels
Milestone

Comments

@ConorMacBride
Copy link
Member

ConorMacBride commented Apr 3, 2023

I reviewed all the configuration options which are used in the code and found quite a few inconsistencies. I have listed proposed fixes for them, separated into breaking and non-breaking changes. We can add warning for the breaking changes now, and then change in v1.0.0.

Let's discuss these lists. Are there any items which should be added or removed? For the breaking changes, how long of a warning period should we have? For any of them, should we only start warning in v1.0.0 and then change in v1.1.0?

Review of configuration options

Option kwarg CLI ini default
Enable testing N/A --mpl N/A False
Enable baseline image generation, at specified directory path (relative to where pytest was run) N/A --mpl-generate-path N/A None
Enable baseline hash generation, at specified file path (relative to where pytest was run) N/A --mpl-generate-hash-library N/A None
Directory containing baseline images
(relative to the test file)
baseline_dir --mpl-baseline-path
(relative to where pytest was run)
baseline/
Whether --mpl-baseline-path should also be relative to the test file N/A --mpl-baseline-relative N/A False
Filename of the baseline image filename N/A N/A test name
Whether to include the module name in the baseline image filename ? mpl-use-full-test-name False
File containing baseline hashes
(relative to the test file)
hash_library --mpl-hash-library no hash comparison
RMS tolerance tolerance 2
Whether to standardise metadata deterministic True (PNG: False)
kwargs to pass to savefig savefig_kwargs N/A N/A {}
Matplotlib style style classic
Whether to remove axis tick labels remove_text False
Matplotlib backend backend agg
Directory to write testing artifacts to
(relative to where pytest was run)
N/A --mpl-results-path mpl-results-path temp dir
Whether to save result images for passing tests N/A --mpl-results-always mpl-results-always False (True if generating a HTML summary)
Which test summaries to generate, if any N/A --mpl-generate-summary={html,json,basic-html} None

Notes

  1. N/A are options which we don't think should exist.
  2. Empty boxes are options which we do think should exist.
  3. ? are options which could exist but would be of limited use.
  4. Due to how paths are computed by Python, the baseline directory and hash library paths can be absolute. In this case --mpl-baseline-relative and what directory the paths are interpreted to be relative to does not have any effect.
  5. Path specified in kwargs should be relative to the test file, and paths specified in CLI and ini options should be relative to where pytest was run.

Non-breaking changes

Breaking changes

  • --mpl-hash-library should be relative to where pytest was run (to match --mpl-baseline-path).
  • Local hash_library kwarg should take precedence over global --mpl-hash-library CLI option. decorator hash_library kwarg option precedence  #154
  • Deprecate the use of multiple hash libraries in the same pytest run (not necessary because files are small and include the full module path anyway). decorator hash_library kwarg option precedence  #154
  • Deprecate the use of multiple testing modes in the same pytest run (e.g. warn if one test only has hash comparison while the others only have image comparison)
  • Use Matplotlib's default style instead of 'classic'.
  • Change the default RMS tolerance to 0.
  • Enable deterministic PNG files by default.
  • Deprecate remove_text kwarg and replace with better named remove_ticks_and_titles
  • (???) Add a remove_text kwarg that actually removes all text.
  • (???) Rename baseline_dir/--mpl-baseline-path to have consistent name.
@bjlittle
Copy link
Contributor

bjlittle commented Oct 17, 2023

@ConorMacBride This is brilliant! Thanks for putting this together.

I'm spinning back up on pytest-mpl. I've cleared the decks and pretty much secured some free time to dedicate to finally getting #150 across the line.

In the process of getting my head back in the space I'm going to cross-reference your table above with the codebase and also any observations that I previously made to make sure that we've captured everything up for discussion in the v1.0.0 roadmap 👍

@bjlittle bjlittle pinned this issue Oct 17, 2023
@bjlittle
Copy link
Contributor

bjlittle commented Oct 23, 2023

@ConorMacBride The only additionally changes that I've noticed not captured above are:

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

No branches or pull requests

2 participants