# May 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](https://hackmd.io/zljR-pZrQ0O5J_j4NZ-9yw)
Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement)
# May 25
## Agenda
* Merge rules for longer doc PRs
* is it better more complicated for longer prose, cause can introduce confusion too
* https://github.com/matplotlib/matplotlib/pull/16908
* FuncNorm:
* #7631 & #7294 & #16391
* https://github.com/matplotlib/matplotlib/issues/16263
* https://github.com/matplotlib/matplotlib/issues/16463
* https://github.com/matplotlib/matplotlib/issues/17172
## Notes
### Longer doc PR
- do we want to make major new content docs 2 reviewer rather than 1?
- Con: Long docs PR are hard to get reviewed
- Pro: new content can do more harm than good
- Con: 2 reviewer is to avoid locking us into poor APIs that we can't back out of
- How can we make sure we get more eyes on things?
- Resolution: go with judgement, get more attention on bigger PRs
### [16908: 2d support to quadmesh set_array](https://github.com/matplotlib/matplotlib/pull/16908)
Merged!
### [16363: NEP29 (time-limited support) to IPython](https://github.com/matplotlib/matplotlib/issues/16263)
* approx ~4 functions to set up event loop detection in ipython using stable APIS
* don't need to warn that it doesn't work on old versions
* but yell if it breaks and tell 'em to upgrade
* push to 3.4 'cause status quo is fine
### [figsize & axes3D](https://github.com/matplotlib/matplotlib/issues/16463)
*
* TCaswell is going to look at these this afternoon
### GSOD
* applications start June 9th end July 9th
* https://developers.google.com/season-of-docs/docs/timeline
* please look at:
* https://discourse.matplotlib.org/tag/gsod
### [16603:axes collage name](https://github.com/matplotlib/matplotlib/pull/16603)
* `subplots_from_dict`
* `subplots_from_mosaic`
* `subplots_from_tiled`
* `subplot_mosaic`
* `subplot_tiles`
* `subplot_gridridrid`
* grid,layout, are already part of library
* later extension maybe is passing in projections...
# May 18
## Agenda
* Season of Docs
* https://discourse.matplotlib.org/tag/gsod
* do we want a style guide
* https://github.com/numpy/numpy/issues/16262
* Issues
* https://github.com/matplotlib/matplotlib/issues/15474 This is a confirmed memory leak, which I think should therefore be high priority for getting attention.
* PRs
* `subplots(n, m, (j, k))` check (https://github.com/matplotlib/matplotlib/pull/17350)
* update testing helpers (https://github.com/matplotlib/matplotlib/pull/16990)
* [MEP30? (if there's time)](https://github.com/matplotlib/matplotlib/pull/17446)
## Notes
### [15474: memory leak]( https://github.com/matplotlib/matplotlib/issues/15474)
* `axes.set_yscale('log')` on `AxesImage` objects
* may be related to [9141: Qt5Agg leak](https://github.com/matplotlib/matplotlib/issues/9141)
* theory is leaking in agg transform resample code in `AxesImage` code path
* also leaking with Cairo which uses agg resample code
### [17350: `subplots(n, m, (j, k))` check](https://github.com/matplotlib/matplotlib/pull/17350)
* @Qulogic blocking on `ax0 is ax1`
```python
ax0 = fig.add_subplot(111)
ax1 = fig.add_subplot(1,1,1)
ax2 = fig.add_subplot(111)
ax3 = fig.add_subplot(1,1,1)
```
* currently in process of deprecating `ax1` is a pointer to `ax0`
* 9024 discusses deprecation
* this PR creates new ax1 on top of ax0 as there are now two overlapping axes in position 1
* Deprecation warning that ``(111)`` is no longer equal to `(1,1,1)``
* `ax2` a pointer to `ax0`
* `ax3` a pointer to `ax1`
* `ax0` not a pointer to `(ax1,ax3)`
* Can force everything is a pointer to everything (deprecated) by putting checking logic upfront
### [16990: update testing helpers](https://github.com/matplotlib/matplotlib/pull/16990)
* concern was freetype but is called inside pytest configure inside conftest
### MEP 30
* user level canonical references for matplotlib primatives + parameters:
* linestyle, collections, etc
* little bit of narrative explaination + API reference + examples
* proposal to make class whose docstring has this documentation - maybe
### Are MEPs deprecated?
:shrugs:
### GSOD
* https://discourse.matplotlib.org/tag/gsod
* let Tom/Hannah know if you want to mentor
* style guide?
* no formal one, but should document informal ones
* informal one exists under contributing->developer docs
* pep + numpydoc + things we specified
* add more there
* lots of stuff there is PEP recommended
* capitalization should be nailed down there
* double spacing after dots (PEP8)
# May 11
## Agenda
* PRs
* FuncFormatter modification: https://github.com/matplotlib/matplotlib/pull/17288 perhaps not urgent, but controversial; clarification via discussion might be helpful.
* https://github.com/matplotlib/matplotlib/pull/17266 has 2 approvals, ready to merge
* https://github.com/matplotlib/matplotlib/pull/15127 has 3 approvals; is it ready, or is there some hesitation in view of other proposals regarding colormap copying and mutation?
* https://github.com/matplotlib/matplotlib/pull/15104 needs reviews, but seems to fix a bug, and replaces a bunch of C++ with more compact Python
* https://github.com/matplotlib/matplotlib/pull/15029 matplotlibrc as source of defaults; 2 approvals, but there was some controversy--maybe resolved now?
* https://github.com/matplotlib/matplotlib/pull/14471 very small change, 2 approvals, but seems to have run into trouble; Thomas, can this be resolved, or should it be closed, or punted to 3.4?
* Violinplot and KDEplot: structure stats package?
## Notes
### GSOD
* We got season of docs
### 17288: Funcformat
* https://github.com/matplotlib/matplotlib/pull/17288 `FuncFormatter`
* move @tacaswell's try catch to setter
### 17266: ticklabels in sync with ticks
* non-deterministic tests in the code
* lines of codes in the tests not running
* code coverage needs to get sorted out
### 15127: register_cmap
* needs rebase and working tests
* move to 3.4
### 15104: multiprocessing on mac
# May 4
## Agenda
* Social Media List: https://hackmd.io/@matplotlib/HkkVGQTtU
* Please do not feed the trolls / help vampires
* GSOD: https://developers.google.com/season-of-docs - due at 4:00PM
* last year: overview (maybe usage guide as overview with more links?)
* add: light doc restructuring - more detailed TOC/Documentation w/ reprioritization
* https://docs.google.com/forms/d/e/1FAIpQLSfMZ3yCf24PFUbvpSOkVy4sZUJFY5oS7HbGyXTNXzFg2btp4Q/viewform
* GSOC
* Specialised Formatters: https://github.com/matplotlib/matplotlib/pull/7482
* savefig background color: https://github.com/matplotlib/matplotlib/pull/15111
* 3.3 work
* PRs, picking some from the 3.3 milestone:
* 13656 (https://github.com/matplotlib/matplotlib/pull/13656)
* GridSpec.subplots() (https://github.com/matplotlib/matplotlib/pull/14421)
* Sync ticklabels with ticks (https://github.com/matplotlib/matplotlib/pull/17266)
* WX key press handling (https://github.com/matplotlib/matplotlib/pull/15177)
* Do we have any other WX experts?
* 15127: 3 approvals, just needs rebase (TAC)
## Notes
### social
- add things to list to be tweeted
- add your name to the list if you can do non-english
### trolls / help vampires
- disengage quickly, state it's a COC violation, and lock the issue
### GSOC
- we accepted @sidharth
- request that we do the blog posts for gsoc through matplotblog
- will cross-post to matplotblog and NF blog
- currently in community engagement period
- https://developers.google.com/open-source/gsoc/timeline
- June 1st start day
### GSOD
- applied
- https://discourse.matplotlib.org/t/google-season-of-docs-2020/21146
- looking to get 1 technical writer
### 7482: specialized formatters
- https://github.com/matplotlib/matplotlib/pull/7482/
- orthogonal to EngFormatter: https://github.com/matplotlib/matplotlib/pull/17315
### 15111: savefig background color
- https://github.com/matplotlib/matplotlib/pull/15111 (merged)
### 3.3
#### 13656: hist return bar container instead of silent_list
- changes the return type to list of bar, but already unstable
- collections participate in draw tree, containers don't
- exchanging list for fancy tuple, latter is what's actually stored on the axes
- can do everything but modification
#### 14421: gridspec.subplots()
- tim wants layout classes bound to figures
- need to import gridspec to build unbound gridspec
- bound is `fig.add_gridspec()`
- long term should find a way to pull them apart
- maybe add `rebind`
- pull out template/data structure out - create `GridSpecLayout`
- example usecase for the templating
- gs.GridLayout.copy()
- merged
#### 17266: set_ticklabels
- set_ticklabels can get out of sync with actual ticks on zoom/subsampling 'cause used fixedformatter`
- calling set_ticklabels now uses FuncFormatter sets up `{locs:labels}`
- `pos` arg is the index of the tick value in the lists of ticks
- `x` is the data value at that tick
- locator params should probably be after set ticklabels in tests
- - bug shows up when someone calls ax.locator_params after setting ticks
- fixed locator isn't actually fixed locator, it's set you're allowed to use & then it downsamples
- set_ticks/set_tick labels are a matched pair, but then can't change ticks with locator params
- in set_ticklabels raise an error if len(ticks) != len(ticklabels)