# April 2020
###### tags: `2020 dev call`
Call co-ordinates: Mondays @ 15:00 Eastern US time (UTC -05:00) https://zoom.us/j/384435716
Previous Notes: [2020 Meeting Agenda](/zljR-pZrQ0O5J_j4NZ-9yw)
Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement)
# Needs Discussion At Some Point
- parallel coordinates plot (PCP)
- https://matplotlib.org/devel/MEP/index.html
- GSOC: https://github.com/matplotlib/matplotlib/projects/12
- named roles
- roll-off procedure
- blog PR/merge guidelines
- mission statement/vision
- ownership of notebook backends?
- provisional API
- semantics of when the cycler gets consulted.
# April 30
## Agenda:
3.3 triage
## Notes
- @hdDmug0OQW-_NVgO6Oa8xQ did the 3.2.x -> master merge up, seeing how tests go locally to decide if to just push or to go through a PR
- https://github.com/matplotlib/matplotlib/pull/9240 <- punted to 3.4 and removed rc label. This may be better done in ipympl as well.
- https://github.com/matplotlib/matplotlib/pull/10762 seems to need more discussions, bumping to 3.4
- https://github.com/matplotlib/matplotlib/pull/11730 is WIP, bumping to 3.4
- https://github.com/matplotlib/matplotlib/pull/11732 is WIP, bumping to 3.4
- https://github.com/matplotlib/matplotlib/pull/12679 is WIP, bumping to 3.4
- https://github.com/matplotlib/matplotlib/pull/14960 should be ready, and is approved, but doc build is failing
- rebased https://github.com/matplotlib/matplotlib/pull/15275 and merged (turbo colormap)
- https://github.com/matplotlib/matplotlib/pull/15435 <- needs feedback from @pXw4hSgTQF2--OciPYwa1w
- https://github.com/matplotlib/matplotlib/pull/16457 deprecation in `SymLogNorm` was bumped to 3.4, so bumped this PR as well
- https://github.com/matplotlib/matplotlib/pull/16975 merged
- https://github.com/matplotlib/matplotlib/pull/17030 merged
- https://github.com/matplotlib/matplotlib/pull/17049 is WIP again, so bumping to 3.4
- https://github.com/matplotlib/matplotlib/pull/17111 merged
- https://github.com/matplotlib/matplotlib/pull/17174 merged
- https://github.com/matplotlib/matplotlib/pull/17175 merged
- https://github.com/matplotlib/matplotlib/pull/17222 <- has one bare except that should be fixed and a question, but ready to go
- executive decision to merge https://github.com/matplotlib/matplotlib/pull/17242 with just @hdDmug0OQW-_NVgO6Oa8xQ review
### discussion about argument counting
```python
test_function = lambda x, y: None
try:
test_function(*my_args)
except TypeError:
print("wrong signature")
else:
print("right signature")
```
[signature adaptor](https://github.com/bluesky/ophyd/blob/1c5f79b96895747cfe551b39317c09412aaa6b85/ophyd/utils/__init__.py#L143-L175)
## TODO
### Need an OSX machine
- [ ] https://github.com/matplotlib/matplotlib/pull/16992
- [x] https://github.com/matplotlib/matplotlib/pull/17263
- [ ] https://github.com/matplotlib/matplotlib/pull/17084
### release notes
- pick highlights
# April 27
## Agenda
### Project management
- [x] Numfocus grant
- [x] Update on CZI work?
- [x] Elliott @ey3AIr8wSl2d1PPfOb9K1w
- [x] Hannah @story645
- [x] Tom @hdDmug0OQW-_NVgO6Oa8xQ
- [ ] Release work?
- [ ] Organization of next_api_changes -> api_changes_3.3
### PR Review:
- [x] 16715: [Automagic Formatters](https://github.com/matplotlib/matplotlib/pull/16715)
- [x] 11413: [Rename cm to colormaps](https://github.com/matplotlib/matplotlib/pull/11413)
- @hdDmug0OQW-_NVgO6Oa8xQ is blocking (where somehow Thomas is hdDmug0OQW-_NVgO6Oa8xQ)
- [x] 14421: [Gridspec.add_subplots](https://github.com/matplotlib/matplotlib/pull/14421)
- This is a reasonable helper and easy review
- [x] 16985: [normalize kwarg for pie()](https://github.com/matplotlib/matplotlib/pull/16985)
- Good to go modulo rebase.
## Notes
### Numfocus small grant
- 3k$ small grant for 3yrs of mac-mini submitted
### Update on CZI work (Monthly?):
- Caswell:
- hiring Elliott
- having a bit of troubling balancing DAMA vs BNL work with full time WFH
- Hannah
- working on reverse engineering Matplotlib architceture backed by theory
- go back to Codd's algebra to describe the data, think of artists as functional transforms from data space -> artists -> cw simplex (pixels on screen)
- have a working demo of 2D array -> {series of lines, heatmap/image, series of bars}
- starting to work on dataframe -> the same
- https://github.com/story645/proposal
- people can comment, but still rough
- might be best if @story645 flags things they want comments on
- Elliott
- only ~2 months in
- lots of maintenance and review
- 100something reviews last month
- CI background work
- 3.2.1 release
- effort on JS cleanup
- PR count was down, but back up again
### Release work (3.3)
#### 16798: [zoom rectangle black & white](https://github.com/matplotlib/matplotlib/pull/16798)
- questions: to shade or not?
- pro shading: does not rely on getting the edges just right
- con shading: changes the pixels in your data as you zoom
- use black & white dashes or lines (inkscape style)
#### 14421: [Gridspec.add_subplots](https://github.com/matplotlib/matplotlib/pull/14421)
- ping Ernest for comment in next week or two
- hierarchical plot elements are not well organized, creates issues for layout management
- gridspecs are theory, should they be used to instantiate something on the figure?
- theory version not used that often
- nested gridspecs are useful, also gridspecbases
- gridspecs can also be used to template layouts for plot types
- simplication: either figure or subplot spec as parent
- warn if gridspec is created without the figure
- look ahead for gridspec being attached to figure or subplot
- two uses:
- layout specificaton ``(figure=None)``
- when that's actually used to generate plots ``(figure = ?)``
- new gridspec from existing gridspec in figure
#### 16985: [normalize kwarg for pie()](https://github.com/matplotlib/matplotlib/pull/16985)
- needs second approval
#### 11413: [Rename cm to colormaps](https://github.com/matplotlib/matplotlib/pull/11413)
- closed with no action
#### 16715: [Automagic Formatters](https://github.com/matplotlib/matplotlib/pull/16715)
- document the easier one where possible, don't need to necessarily point people to more complicated ones so long as its documented somewhere
- @story645 is on this
#### 16603 [Axes Collage](https://github.com/matplotlib/matplotlib/pull/16603)
- in house or 3rd party package
- skepticism that users will install 3pp
- in house provisional API
- name
- build grid
- grid subplots
- named subplots
- like `numpy.block` matrix
- takes 2d array and lays it out in matrix
- patchwork since inspired by R patchwork
- should at least be mentioned in docs/examples to be discoverable
- persistent container?
- returns a dictionary of ``{names:axes}``
- where does this go?
- users might want to do this before or after they've done their plotting
- should this go on gridspec?
- or top level function?
- nested into subplots?
#### 15008: [add variable epoch](https://github.com/matplotlib/matplotlib/pull/15008)
- tests written against old epoch, need to make sure they still work
- add epoch to style?
- styles should modify appearance not behavior
- probably wouldn't work since epochs are locked
- added to internal classic used for tests
- could put correct epoch at tops of tests
- can use setup/cleanup fixture and can use inside magic way to reset tests
# April 20
## Agenda
### NumFOCUS business
- https://numfocus.typeform.com/to/juD3Tu
- can anyone think of things to do with AWS credits?
### PR review
- [PRs requiring discussion](https://github.com/matplotlib/matplotlib/pulls?q=is%3Aopen+is%3Apr+label%3A%22Needs+comment%2Fdiscussion%22) (as we get to them):
- `GridSpec.add_subplots`:
- https://github.com/matplotlib/matplotlib/pull/14421
- dates: variable epoch:
- https://github.com/matplotlib/matplotlib/pull/15008
- Decide API for `Axes` sub-labels:
- https://github.com/matplotlib/matplotlib/pull/15771
- Normalization of multiple images:
- https://github.com/matplotlib/matplotlib/pull/11380
- Rename `cm` to `colormaps`:
- https://github.com/matplotlib/matplotlib/pull/11413
- Line labels: Do we think this can evolve into a feature meeting our quality standards? If so, we'd need a champion to guide them through; if not we should communicate our reservation:
- https://github.com/matplotlib/matplotlib/issues/12939
- functions & strings in set_{major,minor}_formatter
- https://github.com/matplotlib/matplotlib/pull/16715
- concern about repeated detail in docs
- performance (and pybind11):
- https://github.com/matplotlib/matplotlib/pull/17165
- MixedModeRenderer rasterization alignment
- https://github.com/matplotlib/matplotlib/pull/17182
- Best implemented on top of some of the Path PRs
- Might be most efficient to just have a separate call to discuss This+Path API?
- Potentially document our use of DPI in the vectorized renderers (where it's a unit conversion, and has nothing to do with "dots")
- Split up #17182 into two PRs, one for the MixedModeRenderer call to `draw_image` and one for the \_ImageBase calls to `draw_image`.
- 16715: Automagic Formatters
- https://github.com/matplotlib/matplotlib/pull/16715
- 17190: ipython autocomplete does not work anymore since we changed the doc format
- https://github.com/matplotlib/matplotlib/issues/17190
## Notes
### AWS credits?
- tests. Too long and too many
- side discussion about what tests we can drop / are redundent
- Performance tests?
- no, we can't think of anything quickly actionable
### Small dev grant
- renting a mac mini
- Caswell will write and submit
### MixedModeRenderer rasterization alignment
- rounding error when rasterized image is going into vector pile,
- raster/vectorized dpi * requested dpi
- unconverting pixels back to point creates offset errors that mess w/ layout
- potential solutions
- keep track of elements bounding boxes and render fully only on final output
- had mixed mode renderer overwrite draws to keep bounding boxes on track
- upsample target dpi then downsample to real dpi
- other todo: clean up usage of DPI so it's consistent
- seperate DPI from points per pixels
- 72 DPI originally because SVGs spec'd to 72 points per coordinate system
- 72 gets transforms to output correct unit transforms
- for rasters it snaps to correct pixel numbers
- for vectors it's floating
# April 13
## Agenda
- https://discourse.matplotlib.org/t/how-to-engage-more-contributors-to-matplotlib/21059/11
- Put everyone with commit rights on matplotlib-devel mailing list?
- or discourse group?
- Anything blocking for 3.3?
- GSOC update
- [PRs requiring discussion](https://github.com/matplotlib/matplotlib/pulls?q=is%3Aopen+is%3Apr+label%3A%22Needs+comment%2Fdiscussion%22) (as we get to them):
- How much functionality do we want in the GUI?
- https://github.com/matplotlib/matplotlib/pull/13772
- Decide API for `Axes` sub-labels:
- https://github.com/matplotlib/matplotlib/pull/15771
- Naming `VectorTransform`:
- https://github.com/matplotlib/matplotlib/pull/13696
- Decide on `.ax` vs `.axes`:
- https://github.com/matplotlib/matplotlib/pull/16058
- Normalization of multiple images:
- https://github.com/matplotlib/matplotlib/pull/11380
- Rename `cm` to `colormaps`:
- https://github.com/matplotlib/matplotlib/pull/11413
- `GridSpec.add_subplots`:
- https://github.com/matplotlib/matplotlib/pull/14421
- dates: variable epoch:
- https://github.com/matplotlib/matplotlib/pull/15008
- Line labels: Do we think this can evolve into a feature meeting our quality standards? If so, we'd need a champion to guide them through; if not we should communicate our reservation:
- https://github.com/matplotlib/matplotlib/issues/12939
- functions & strings in set_{major,minor}_formatter
- https://github.com/matplotlib/matplotlib/pull/16715
- concern about repeated detail in docs
## Notes
- We have 10k followers on twitter and 900 contributors!
### Engage more contributors
- https://discourse.matplotlib.org/t/how-to-engage-more-contributors-to-matplotlib/21059/11
- Bruno left long comment
- Update PR template
- discussion about how we configure flake8-docstring
- in particular we want to start multi-line docstrings on the line after the live with `"""`
- inherited API don't get forwarded to children in built docs
- missing a high-level "road map"
- https://matplotlib.org/api/axes_api.html better
- class-level documentation should have examples of intended usage / motivation for existing
- sphinx-coverage maybe
- assignment/champions
- @tcaswell asks folks to do it
- folks should also assign themselves
### 3.3 blocking issues?
- https://github.com/matplotlib/matplotlib/pull/16832
- if you can add labels / milestones please label as release critical or punt to 3.4
### GSOC
- going well
### PRs that need discussion
#### 13696: Naming `VectorTransform`
- all transforms are on vectors (of points)
- this transform is meant to transform the delta vector between a pair of points
- @tacaswell proposes `AffineDeltaTransform`
#### 16058: Decide on .ax vs .axes
- deprecate the `.ax` attribute but will bring back if folks complain
#### 14421: gridspec->create the subplots
- can use `plt.subplots(gridspec_kw={})`
- cases where creating the gridspec first and then subplots is nicer, especially on nested subplots
- is it a good idea to put it into gridspec?
- punt to next week/@jody
#### 13772: GUIs
- should everything in the plot be configurable via gui?
- https://github.com/matplotlib/matplotlib/pull/13772/
- requires user to type font name
- 17105 adds edit_parameters for native mpl GUIS
#### 16253: move version links to sidebar
- https://github.com/matplotlib/matplotlib/issues/16253
- `versions.html` is at https://github.com/matplotlib/matplotlib.github.com/blob/master/versions.html
- hand edited every release cycle
- leaving it in matplotlib.github.org lets old versions of the docs always point to the most recent doc links
- https://matplotlib.org/devel/release_guide.html#build-and-deploy-documentation
- should maybe move banners and stuff there too
# April 6
## Agenda
- GSOD: https://opensource.googleblog.com/2020/03/announcing-season-of-docs-2020.html?m=1
- Application: April - May 4
- GSOC
- 3.3 schedule
- if before June 23 -> py36 minimum
- if after June 23 -> py37 minimum
- The path related PRs (followup)
- https://github.com/matplotlib/matplotlib/pull/16832
- https://github.com/matplotlib/matplotlib/pull/16859
- https://github.com/matplotlib/matplotlib/pull/16888
- https://github.com/matplotlib/matplotlib/pull/16889
- https://github.com/matplotlib/matplotlib/pull/16891
- <---->
- https://github.com/matplotlib/matplotlib/pull/16773
- color map mutability (followup)
- https://github.com/matplotlib/matplotlib/pull/16943
- https://github.com/matplotlib/matplotlib/issues/16296
- Units interface (if not decided yet)
- https://github.com/matplotlib/matplotlib/pull/16922
- Increasing visibility of style issues in PRs
- toggle LGTM settings?
- may not be possible
- add [pep8speaks](https://github.com/OrkoHunter/pep8speaks)? (used by Pandas)
- doesn't support [per-file ignores](https://github.com/OrkoHunter/pep8speaks/pull/151)
- add [stickler-ci](https://stickler-ci.com/)? (used by Cartopy)
- plugins are paid, so maybe no per-file ignores
- add [reviewdog](https://github.com/reviewdog/reviewdog)? (basis for [wemake-python-styleguide](https://github.com/wemake-services/wemake-python-styleguide), which may be too opinionated for us)
- not Python-specific, but possibly more flexible
- [PRs requiring discussion](https://github.com/matplotlib/matplotlib/pulls?q=is%3Aopen+is%3Apr+label%3A%22Needs+comment%2Fdiscussion%22) (as we get to them):
- How much functionality do we want in the GUI?
- https://github.com/matplotlib/matplotlib/pull/13772
- Decide API for `Axes` sub-labels:
- https://github.com/matplotlib/matplotlib/pull/15771
- Naming `VectorTransform`:
- https://github.com/matplotlib/matplotlib/pull/13696
- Decide on `.ax` vs `.axes`:
- https://github.com/matplotlib/matplotlib/pull/16058
- Normalization of multiple images:
- https://github.com/matplotlib/matplotlib/pull/11380
- Rename `cm` to `colormaps`:
- https://github.com/matplotlib/matplotlib/pull/11413
- `GridSpec.add_subplots`:
- https://github.com/matplotlib/matplotlib/pull/14421
- dates: variable epoch:
- https://github.com/matplotlib/matplotlib/pull/15008
- Line labels: Do we think this can evolve into a feature meeting our quality standards? If so, we'd need a champion to guide them through; if not we should communicate our reservation:
- https://github.com/matplotlib/matplotlib/issues/12939
- functions & strings in set_{major,minor}_formatter
- https://github.com/matplotlib/matplotlib/pull/16715
- concern about repeated detail in docs
## Notes
### GSOC
- discussion about candidates
### GSOD
- @story645 and @tacaswell will draft something for next week
### 3.3 schedule
- rc next week or so or wait end of june
- py 3.7 plus end of june.
- 3.7 helps the color map deprecation the most, but we can push that to 3.4
- and there are ways to do it without py3.7 anyway
- probably can't get this done in the next week as well
- concern about dropping 3.7 on master would lead to a bunch of needless thrash PRs to re-write things using 3.7 features
- are going to need a big gap to 3.4 anyway to give deprecations enough wall time to percolate
- *final release end of May timeframe*
- RC: May 1
- Final 15-20 May
### 16922: Units change
PI change: renames things, class methods rather than static methods
- unconvert reasonable ask
- two concerns:
- renames make logic hard to think about/judge
- unclear about deterministic unconvert back to compatible object
- optional unconvert defined as unimplemented in base class
### Path stuff
- went to the weeds
- how to allow user to normalize markers so they look compariably sized for markerwidth=x?
- #16891, #16773
- @importanceofbeingernest took some steps for custom sized markers
- [Docs for BezierSegment.arc_area](https://33914-1385122-gh.circle-artifacts.com/0/doc/build/html/api/bezier_api.html#matplotlib.bezier.BezierSegment.arc_area)
### Sidharth introduction
### Style issues in PRs
- automate pep8 reporting so @Y-wLuq1aShOQmYPoL-pf1g does not have to do it
- also need some automatic checking on the docstrings
- we are running pydocstyle, but having issue with much of the docs not being
- https://github.com/life4/flakehell
- if you install pydocstlye, flake8 will automatically warn you
-Next step options:
1) remove new excludes and put back ignores for stuff that hasn't been fixed
2) give in on docstring type fixes and do a max cleanup down the line
3) put in new rules and exclude old files
4) maintainers can push styles fixes & explain to new contributors that we just pushed the head
5) change PR template line "docstyle compliant" to add checkbox run pyflake + run pytest -
6) use bot, run pyflakes, report back (all in github actions) - all in github actions & reports as own check - bot wins
### concepts section of the docs
- we need to put in a "philosohpy" or "concept" sections-
### 16715 functions & strings in set_{major,minor}_formatter
- https://github.com/matplotlib/matplotlib/pull/16715
- canonical explaination in set_major_formatter & everything crosslinks
### 17035: lable lines directly
- https://github.com/matplotlib/matplotlib/pull/17035
- needs to be implemented roboustly to zooming, animation, updates, etc