# February 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
- Consolidating gitter channels
- delete gsoc, mpl-altair, community since they're dormant
- named roles
- roll-off procedure
- blog PR/merge guidelines
- mission statement/vision
- ownership of notebook backends?
- Small dev grant: who to hire/how to spend the money -
# Feb 24
- Tom & Hannah at CZI EOSS Meeting
- [ ] These two together (`axline`)
- https://github.com/matplotlib/matplotlib/pull/15330
- https://github.com/matplotlib/matplotlib/pull/16337
- https://github.com/matplotlib/matplotlib/pull/15065#discussion_r363302100
# Feb 17
President's Day, (just Hannah & Anthony)
## Agenda
- [ ] These two together (`axline`)
- https://github.com/matplotlib/matplotlib/pull/15330
- https://github.com/matplotlib/matplotlib/pull/16337
## Notes
### Gridspec Easy API
- set up and change the grid easily (w/o having to recompute gridspec layout)
- lot's of interest in mpl version of https://github.com/thomasp85/patchwork
- use Python idioms:
- `[[ax1, ax2], [ax3, ax3]]` == `[[ax1, ax2], [ax3]]`
- `[[ax1, ax2], [ax3, ax2]]`
- subplot spec can create new access the reassign location
- lets you reassign in grid where access is
- tricky part is moving the axes where we want
- implementation is trivial but can degenerate into impossible API discussions
- wrapping gridspec & ability to move axes around (`change_geometry`)
- create axes w/ subplots, then call `ax.change_geometry(2, 2, 3)` to move it
- create axes, parse list into positions, send
- `ax.change_geometry` doesn't currently support spans
- not very hard but needs knowledge of mpl internals (possibly needs mentor)
### GSOC
- May to August
- Testing Project
- MPL cairo could use it too, broke polar plots
- tests run against mpl suite w/ huge tolerance
- don't want to download huge level of baseline images
- tests not catching break in polar plots
- pain to bisect 'cause mpl cairo
- MPL is not using pytest mpl
- should mpl maybe migrate to pytest-mpl?
- should pytest-mpl even exist?
- was there before mpl used pytest
- uses mpl internal API anyway
- anyone using it needs to be importing mpl anyway
- have to evolve the tools in lockstep
- either have to go to both repos or mpl needs to be migrated to mpl-pytest
- Time commitment
- 1-2hr weekly chat once a week
- availablity on mpl gitter
- selecting the students: (throw up banner for GSOC)
- Google Application
- reviewing PRs from students
- Phase 1, Phase 2, Final Evaluaton
- Projects:
- Anntzer has a detailed write up in issue
- https://github.com/matplotlib/matplotlib/issues/16447
# Feb 10
## Agenda
- [x] jupyter notebook / jlab integration work
- [x] NF Small Development Grant: https://numfocus.typeform.com/to/mbtH7w
- [ ] still need to spend the money from the last round
- [x] GSOC Projects/mentors?
- [x] 3.2.0 on Friday?
- [x] scipy talk?
- [x] SymmetricLogScale and SymLogNorm decision
- Keep symlogscale?
- who will document?
- SymLogNorm
- base e to base 10
- https://github.com/matplotlib/matplotlib/pull/16457
- Alternatives?
- arcsinh
- [x] Baseline image proposal
- https://github.com/matplotlib/matplotlib/issues/16447#issuecomment-583901154
## Notes
### need to do something about notebook backends
- https://github.com/matplotlib/jupyter-matplotlib/issues/16
- nbagg still works correctly in classic notebook
- ipympl works interactively, but when you save does not include a static representanion
- @anntzer should maybe talk to Sylvain Corlay (ipympl) about this?
- gather requirements from them about what you need?
- Does it need to be fixed?
- new users brought in on ipympl via lab where notebook won't work
- need a working interactive backend for jupyter cause loads of folks use it
- **YES**
- talk at JupyterCon Berlin?
- https://blog.jupyter.org/jupytercon-2020-is-a-go-47c82b281fa8
### small grants
- maybe try to solve the above the problem via grant?
- @anntzer will email Sylvain, cc TAC
- table discusion of how to spend the one we have until next week
### CZI update
- interviews are underway
### GSOC
- jlab stuff maybe too complicated
- pitch our self as co-mentors for a down-stream project
- email to dev list & post on discourse about people interested in mentoring
### Communication w/ broader dev community
- send out weekly reminder about call notes w/ invite for feedback
- alternate meeting times for US/Asia & US/Europe folks?
- Europe folks are fine w/ night
### v3.2.0 at end of this week
- https://github.com/matplotlib/matplotlib/milestone/43
### symlog norm
- definitly need to document what the transform is
- see https://gitter.im/matplotlib/matplotlib?at=5e3c9cafea9ba00b84b7933b
- have call with @Tillsten about use cases
- merged https://github.com/matplotlib/matplotlib/pull/16392
- reviewed https://github.com/matplotlib/matplotlib/pull/16404
- punt re-write / overhaul / eviction to third-party package to later date
### scipy talk
- here's the challenges we're looking at & approachs we're looking at
- array like in Python is hard right now
- turn data model part of CZI into a talk abstract
### baseline image management
- pins us to an old freetype
- makes repository big
- instead of storing images in repo, assume that when something lands on master the images are correct.
- run the test suite on the previous commit and the run the tests against those images
- have some system for tracking when the images are expected to change
- special file listing filename--version #, bump the version # on the file
- generate canonical set for a release: mpl-test-data w/ known version of freetype
- need tooling to manage cache on CI to avoid doubling the length of a run
- on releases, publish list of blessed images
- incremental consistency from one commit to the next:
- pass if commit_n == commit_{n-1}
- GSOC ?
# Feb 3
## Agenda
- [x] 2.2.5, 3.1.3, 3.2.0rc3 tagged and published to pypi!
- still need to send out emails / discourse postings / twitter
- conda-forge has re-build 3.1.3, do we want to get 2.2.5 also rebuilt?
- [x] https://github.com/matplotlib/matplotlib/issues/16376 `SymLogNorm` is *wrong*
- should be fixed or removed?
- https://github.com/matplotlib/matplotlib/pull/16391
- [x] Colorbar: https://github.com/matplotlib/matplotlib/pull/16392
- [x] https://github.com/matplotlib/matplotlib/pull/14916 (get rid of `scalex/y`)
- [x] https://github.com/matplotlib/matplotlib/pull/16005#issuecomment-578400682 (artist handles in x/y labels)
- [x] https://github.com/matplotlib/matplotlib/pull/16347 (too sketchy with warnings?)
## Notes
### 16376: Broken SymLogNorm
* use natural log not log10
* uses some funny logic to edges
* claimed that the linear region was 1 decade wide
* actually e-ade wide (1 base e )
* old manual tick marks were at correct places
* @dstansby has a PR to re-write symlognorm
* also a linked paper for how to do this is a way that makes the derivative smooth (ish)
* **decisions**
* update docs to describe what it is actually doing
* add a None default kwarg `base`
* if none set to `np.e` and warn that
1. pass explicitly to sush warning
2. currently defaulting to `np.e`
3. may change to 10 in 3.3
* defer full re-write to 3.3
### 16392: colorbars also broken
* fixes for color bar with contour plots broke color bar in other contexts
* only an 3.2+
* https://github.com/matplotlib/matplotlib/pull/16392 is fix.
* minor review comments (make more private, improve type checking)
### Release
- do we want to get CF to build 2.2.5: **no**
### Pandas deprecation warning handling
- https://github.com/matplotlib/matplotlib/pull/16379
- fixed stacklevel on warning, so needed to catch at correct level.
- is filtering warning too sketchy?
- should maybe use `obj.values` to identify / handle pandas objects
- created https://github.com/matplotlib/matplotlib/issues/16402
-
### *x and *y parameters
- source of names is lost to time
- possibly to de-conflict in `loglog`, but wanting to set x and y different is rare enough, not a fast path we need to support
- greatly simplifies our code and user code.
- https://github.com/matplotlib/matplotlib/pull/14916/files
### 16005: legend on xlabel/ylabel
- good idea, but not in the top level API / pyplot
- @anntzer: allow the text/label to accept any artist
- provide helper to pack handle + text into a (maybe) Text subclass to pass
to `set_*`
- rotated legend on it's side - vertical text & artist (position='xlabel'/'ylabel')
- can get that functionality via: ax.legend(rotation=), ax.set_xlabel(artist), therefore `ax.set_ylabel(ax.legend(orientation='v'))`
- also extend to `ax.set_title`