---
# System prepended metadata

title: April 2020
tags: [2020 dev call]

---

# 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
