---
# System prepended metadata

title: February 2020
tags: [2020 dev call]

---

# 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`