# Matplotlib Weekly Meeting
[![hackmd-github-sync-badge](https://hackmd.io/jd_7FjxNQ4y7XgNknvmvGQ/badge)](https://hackmd.io/jd_7FjxNQ4y7XgNknvmvGQ)
**A regular sync meeting for the project's maintainers, which is open to the community.** Everyone is welcome to attend and contribute to conversations.
## February 22 2024 -
###### tags: `2024 dev call`
Call co-ordinates: Thursdays @ 21:00 Berlin time (20:00 UTC during winter, 19:00 UTC during summer) https://zoom.us/j/384435716?pwd=WFpxVWxoYXArTDFzN1lWaHNoOE8xZz09
Previous notes: [Meeting Agendas](https://hackmd.io/zljR-pZrQ0O5J_j4NZ-9yw)
Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement)
#### [Needs discussion at some point](https://hackmd.io/uzWviu8zSUChq3XhI2FqPg)
#### [Medium sized projects](https://hackmd.io/GgtrcXTlTfuoyHO76_LMLg)
#### [RSE worklog](https://hackmd.io/@matplotlib/HyVoUHlSo)
```
2023-04-20 19:00:00+00:00
Europe/Berlin 2023-04-06 21:00:00+02:00
UTC 2023-04-06 19:00:00+00:00
America/New_York 2023-04-06 15:00:00-04:00
America/Vancouver 2023-04-06 12:00:00-07:00
US/Hawaii 2023-04-06 09:00:00-10:00
```
# May 16
_attending_: @efiring, @QuLogic, @tacaswell, @ksunden, @story645
## Agenda
### Old business
- [ ] RSE updates
- [x] GSOC update
### new business
- [x] 3.9 is out!
- [x] SDG followup
## Notes
### 3.9
- we added an import that seems to break, but we think that is a local install issue.
- promote `:mpltype:` to be public (otherwise downstream packages that inherit our docstrings will break)
- what else do we need to make public?
- The set of thing that look like roles the show up in our source (generated via ``set($(ack ':[^:]*:`' -o -h --python).split())`` )
```
{'::`',
':align:`',
':alt:`',
':attr:`',
':caption:`',
':class:`',
':context:`',
':data:`',
':doc:`',
':download:`',
':envvar:`',
':file:`',
':format:`',
':func:`',
':height:`',
':include-source:`',
':math:`',
':mathmpl:`',
':meth:`',
':mod:`',
':mpltype:`',
':nofigs:`',
':program:`',
':rc:`',
':ref:`',
':scale:`',
':show-source-link:`',
':sup:`',
':target:`',
':width:`'}
```
We think only rc, or mpltype need to be moved up. (@qulogic will do).
## GSOC
- Had kickoff meeting before start of main coding period (starts week after next)
- need plan for how to get in
- maybe do not do auto inference at all
- how to handle complex data?
- sequencing
- first PR: 1 norm, 1 colormap
- follow on PR: additional colormaps
- follow on PR: complex support
- follow on PR: add more norms
- follow on PR: how to combine VectorMappable and ScalarMappable?
- open questions
- don't have "over" and "under" but still need "in bounds" vs "bad"
- to handle out of bounds:
- fixed color
- pick "closest" point and use that
- cartesian or polar coordinates in color space?
- how to handle categorical
- legend/colorbar
## SDG
- still being drafted
- focus on accessibility
- embedding alt text into output meta-data (as discussed last week)
- font overhaul work
## RSE update
- Tom
- grant work + avoiding grantwork by doing issue review
- Kyle
- some grant work, data prototype stuff
- Elliott
- Jury duty selection
- 3.9 release
# May 9
_attending_: @tacaswell, @greglucas, @QuLogic, @ksunden, @story645, @trygve
## Agenda
### Old Business
- [x] RSE
- [x] 3.9
- [ ] 3.10
### New Business
- [ ] [name=hannah][numfocus small dev grant](https://numfocus.typeform.com/to/mbtH7w) due May 31st
## Notes
### old business
- Kyle
- planning meeting for developer summit
- meet with a NASA project on Monday
- working on data prototype
- helping with on 3.9 wrapup
- Elliott
- developer summit meeting
- array protocol, supply chain validation work
- 3.9 doc wrapup
- mpl-sphinx-theme tagging
- waiting for backports
- maybe bug with old (>1yr) IPythons
- tag today or tomorrow
- Tom
- mostly off
### small development grants
- Hannah will talk to Jni about feasibility of visual search
- hatches
- RFB work
- pull small/medium projects from CZI grant
- saving alt text in image metadata
- needs a plan for figuring out how screen readers read images
- Elliot is drafting proposal
# May 2
_attending_: @tacaswell @story645 Ian Thomas @ksunden @QuLogic
## Agenda
### Old Business
- [x] RSE
- [x] 3.9
- [ ] 3.10
### New Business
## Notes
### old business
#### RSE
- Kyle
- writing new NASA grant work
- continuing interacitvity and contains in dataprototype
- GSOC has been annouced, got 1 slot, need to reach out to start work
- Elliott
- reviewing Ian's PR
- went through all the 3.9rc failures and opened issues or PRs for everything
- working on getting api changes / whats new rolled up
- do we want rc3?
- IPython is happy without one
- so no RC
- planning meeting for scientific python developers summit tomorrwo
- Tom
- some issue/PR review
- work on NASA grant.
### New business
#### anyone going to pycon
- Pavel (social media) and Chahak
#### IPython integration
- almost done
- last thing for 3.9 final
#### appveyor failures due to sphinx gallery
- due to upstream changes in sphinx/sphinx-gallery
- only see on appveyor because other CI systems do not install sphinx+sphinx-gallery
- install from conda environment file
- PR existing to fix it (#28103)
# April 25
_attending_: @tacaswell @QWhXj01mSwmTjk5kN1H_qQ (Eric) @QuLogic @ksunden @story645
## Agenda
### Old Business
- [x] RSE updates
- [x] GSOC updates
### New Business
- [x] NASA propsoal
- [x] 3.9 status
- [ ] 3.10 piorities
## Notes
### RSE updates
- Kyle:
- data prototype work, pushing on interactivity and contains
- issue / PR work
- some 3.9 issues down stream w/ Elliott
- Elliott:
- catch up from vacation
- no 3.9rc reports
- do we know if it actually being tested?
- ran rebuild in fedora
- https://copr.fedorainfracloud.org/coprs/qulogic/mpl39/builds/ vs https://copr.fedorainfracloud.org/coprs/qulogic/mpl39.checker/builds/
- only 10/130 new failures due to our RC
- use of mpl.cm.get_cmap which was removed
- use of plt.cm.get_cmap
- new warning in python-mne (on legend with no entry)
- mplcursors text changed, fixed upstream need a release
- animatplot-ng sees effects of 3D limits change
- may have broken pandas (preexisting unrelated failure on fedora, so did not test)
- seaborn looks good with 3.9!
- https://www.pepy.tech/projects/matplotlib?versions=3.8.4&versions=3.8.3&versions=3.8.2&versions=3.9.0rc2
- Tom
- more progress on NASA grant
### GSOC
- have submited our ranking
- not heard anything back
### NASA
- headline projects
- cartopy to new data/artist model
- work into how to integrate into existing structued data in that space
- go all-in on pyodide (https://github.com/matplotlib/matplotlib/issues/27870)
- https://github.com/pyodide/matplotlib-pyodide both agg and htmlCanvas backends exist
- partner with a NASA mission to wrap interesting data
- lots of maintence and support
### 3.10 priorities
- colormapping work
-
# April 18
_attending_: @tacaswell @ksunden @QWhXj01mSwmTjk5kN1H_qQ (Efiring) @story645
## Agenda
### Old business
- [ ] RSE
### New Business
- [x] [name=hannah] noting meeting attendance
- [ ] [name=hannah] [dedup hatch validation](https://github.com/matplotlib/matplotlib/pull/28076)
## Notes
### RSE
- Tom:
- grant work
- issues review
- Kyle
- little bit of issues review
- data prototype work
### attendance
Please remember to take attendance at meetings
### hatch validation
* https://github.com/matplotlib/matplotlib/pull/28076
### Data prototype
Just in time data + encoding and transform graph = visualizing large high dimensional multivariate datasets more consistently in less lines of code.
just in time computation:
1. computational graph w/ delayed evaluation
2. querying and subsampling such that:
1. computational datasets can be shown at various resolutions
1. only subset needs to be loaded in memory/visualized
dynamic encoding:
1. more consistent way to give mappings in multiple artists ([Hullman & Qu](https://ieeexplore.ieee.org/abstract/document/8017651/))
2. treats the data fields more consistently with respect to encodings
property syncing on artist:
1. artists can be reused
2. don't need to be manually updated individually
why graph:
1. doing transformations, need to maintain/keep track of order for consistency
2. its inspectable in a way current isn't
3. can be broken down into smaller chunks, can add custom mapping
4. moves current implementation graph to data structure
tradeoff:
1. lots of encodings across different axes and artists - easier to reuse/share be
* it's currently named different things in different artists
* attaching the encoding function/mapping/$\nu$ to the artist
* ex: color coding by category in line and scatter plot
Draw time querying + reducing the amount of info artists need to know about themselves facilitates real time data and reusing parts of the visualization.
# April 11
_attending_: @tacaswell @jklymak @pXw4hSgTQF2--OciPYwa1w @QWhXj01mSwmTjk5kN1H_qQ (Anntzer), @IGuKs80UTJCig4yt6Zos7w (Efiring) @ksunden @QWhXj01mSwmTjk5kN1H_qQ
## Agenda
### Old business
- [x] RSE updates
- [x] GSOC/GSOD
### New business
- [x] [name=tacaswell] default to RGBA stage interpolation https://github.com/matplotlib/matplotlib/issues/21167
- [ ] [name=saranti] [orientation parameter to violinplot](https://github.com/matplotlib/matplotlib/pull/27998)
## Notes
### grant recap
### RSE updates
- Kyle
- data prototype
- clipping and images in new system
- some 3.9
- GSOC
- Tom
- grant stuff
- review
### GSOC updates
- reviews mostly done
### RGBA interpolation
- should remove clipping anyway
- should look Antony's suggestion of how to filter AA's data to clean up "fuzz" on constant data
- look into making the deault interplotaion stage depend on ratio between data pixels and screen pixels
- conclusion:
- we will look at how to add an 'antialiased' interpolation stage
- use same criteria as current antilaised flip
- data space when upsampling
- RGBA spacing when down sampling
# April 04
_attending_: @efiring, @ksunden, @tacaswell, @rcomer, @story645, @timhoffm, @QuLogic
## Agenda
### Old business
- [x] RSE updates
- [x] GSOC / GSOD updates
### New business
- [x] 3.8.4 out!
- [x] 3.9.0 status?
- [x] NASA ROSES 2024 F7
- [ ] Colorbar snapping https://github.com/matplotlib/matplotlib/pull/26307
## Notes
### old
#### RSE updates
Kyle:
- got 3.8.4 out
- general review
- data-prototype work
- thinking about next NASA grant
Tom:
- NASA grant
- issue / bug review
Elliott:
- prep for 3.9
#### GSOC / GSOD
- missed GSOD deadline
- GSOC
- have 6 propsoals, look good
- (not including detailed notes as these are public and do not want to break GSOC rules)
- need more mentors
### new
#### 3.9.0rc status
- was waiting on 3.8.x mergeup
- should branch and tag today
#### NASA funding
- trying to make formal friends
- looking for citations from all SMD
- looking for reviewers
- cartopy may also may be putting one in
#### singular colorbars
- https://github.com/matplotlib/matplotlib/pull/26307#issuecomment-2038181561
# March 28
_attending_: @efiring, @ksunden, @story645, @trygvard, @QuLogic,
## Agenda
### old business
- [X] RSE updates
- [x] [name=hannah] GSOC apps due April 2nd, 1800UTC (next Tuesday)
### new business
- [ ] [name=ksunden] Last item I'd like for 3.8.4 [#27955](https://github.com/matplotlib/matplotlib/pull/27955)
## Notes
### RSE
- qulogic: working on Mac bugs; other PR reviews to finish off 3.9
- ksunden: also working on Mac bugs; tracking numpy 2; pybind11 fix for np2 released; all of blockers are gone for np2 micro-release; Ian released contourpy for np2; work on data prototype (lines, clipping, images); thinking about next NASA grant.
### New business
# March 21st
_attending_: @efiring, @ksunden, @QuLogic, @trygvard, @story645
## Agenda
### old business
- [ ] RSE updates
### new business
- [ ] [name=timhoffm] https://github.com/matplotlib/matplotlib/pull/26307
## Notes
### RSE
- qulogic: m1, pybind11, wrapping up 3.9, bouncing tasks to 3.10
- ksunden:
- pybind11, numpy 2.0, m1 (ksunden has it locally),
- dataprototype - dijkstra's algorithm & visualizing graph
- 3.9 : beta/rc soft deadline is next week
- 3.8.4: numpy2.0 compliance, is on numpy timeline
### singular colorbars
- milestoned to 3.9, needs a decision from @tacaswell and @timhoffm
### multivariate colorbars
- gsoc proposal draft, scope of project & components
### 3.9 followups
- follow up about sphinx-tags multiline
-
# March 14th
_attending_: @tacaswell, @efiring, @timhoffm, @QuLogic, @ksunden, @rcomer, @story645, @artemkislovskiy
## Agenda
### old business
- [x] RSE updates
- [ ] [name=hannah] steering council deadlines/turnaround
- discuss at end of call
### new business
- [x] numpy 2.0 status
- [x] 3.8.4 release?
- [x] 3.9 status
- [x] [name=QuLogic] [Cursor coordinates on twinned Axes](https://github.com/matplotlib/matplotlib/pull/25556)
- [x] [name=QuLogic] [Avoiding levels in AutoDateLocator](https://github.com/matplotlib/matplotlib/issues/26363)
- [x] [name=QuLogic] [Decide what to do with `cycler` duplicates](https://github.com/matplotlib/matplotlib/issues/26868)
- [x] [name=QuLogic] [Return filename from save_figure](https://github.com/matplotlib/matplotlib/pull/27766)
- [x] [name=Hannah] [branch protection w/ labels](https://github.com/matplotlib/matplotlib/pull/27668)
- [x] [name=Tim] [Revert renaming labels to tick_labels in boxplot_stats()](https://github.com/matplotlib/matplotlib/pull/27916)
## Notes
### Intros
### RSE updates
- Elliott
- mostly getting ready for 3.9
- macos M1 CI jobs (lots of low tolerance image failures)
- big triage push of 3.9 issues/PRs
- took out 1/3, lots of docs left so not blockers for branching
- pushed updates / rebases to existing PRs
- Kyle
- 3.9 wrap up work
- continuing work on data prototype work
- numpy 2.0 fallout
- mostly via pybind11, but may need to add a #define
- some waiting on dependencies
- in trianuglation and non-default contouring modes
- Tom
- 3.9 help
- issue/PR review
### numpy 2.0 status
- holding pattern for now
### 3.8.4 release
- main reason is for numpy
- waiting for pybind11 to sort some stuff out for 3.8.4rc
### PR review
- twinned axes cursors
- https://github.com/matplotlib/matplotlib/pull/25556
- last discussed 8mo ago
- call likes the examples, will merge when test pass
- internals of autodatelocator logic
- issue is if one of the levels is empty skip
- API wise it makes sense to be able to skip levels
- take propsoed patch, look into fallout in this particualr case off call
- two cyclers
- we re-export `cycler` from `cycler` and we have a custom wrapper of `cycler` that does extra validation
- also have a PR that cleans up imports and removes aliases
- questions
1. should we still have both?
2. should we expose either
- we do not use `plt.cycler` internally
- is in a whats-new
- our trend is to simplify so don't import
- but pyplot should be mostly self-contained and a cycler is useful for setting rcparams
- set_propcycle will make the cycler for you
- on net, deprecate
- consensus
- deprecate, but be willing to back off if disruptive
- return value of toolbar.save_fig
- nice way to do this (matches most dialog implementations):
- `None` -> No file saved
- SENTENIL -> can't tell if a file was saved
- happy-path -> string to path
- implementation (backwards compatible paranoid safe)
- `None` -> don't know if a file was savef
- SENTINEL -> actively did not save
- happy-path -> string to path
- currently return `None` everywhere
- proposed implemenatio n
- one usecase
- https://github.com/kivy-garden/garden.matplotlib/blob/024d5c47f86577873de0939c169f369dd46ba595/backend_kivy.py#L939-L940\
- consenus
- go with the "nice way"
- make sure API change note is clear that thrid-party backends will have to implement this
- open an issue with Kivy backend when merged
- branch label rules
- consenus
- try it out
- previously talked about on call and we agreed to do it
- no user facing impact, low risk and we can always turn it off if we hate it
- bxp tick label revert
- https://github.com/matplotlib/matplotlib/pull/27916
- the parameter name and then key in the returned dict no longer match
- attempt was made to replace dict with DataClass, but gets messy in this case
- propsoal:
- leave bxp_stats alone
- migrate to something more static in the future
- consenus
- go with this
- also change the docstring to be clearer what it is
### SC timeline
- one week response window then ping once a week
# March 7th
_attending_: @tacaswell, @QWhXj01mSwmTjk5kN1H_qQ (efiring), @rcomer, @ksunden, @story645, @QuLogic, @timhoffm
## Agenda
### old business
- [x] RSE
- [x] 3.9
### new business
- [x] [name=tacaswell] grant updates
- [x] [name=hannah] triage team
### Issues and PRs
## Notes
### RSE updates
Kyle:
- putting is scipy talk propsoal (on dataproto type)
- data prototype work, thinking about Artist class tree
- QoL improvements in repo to make less verbose
- issue and PR review
- pushing on yet more mac OSX segfaults / objectiveC level exceptions
- new or pre-existing? Hard to go back to old versions of OSX so very hard to debug
- behavior is as documented, but did not notice this behavior before
- only see when running as a subprocess, test was marked xfail because flaky, lightly tested / under used feature (singleshot timers), test sometimes passes before object crashes
- subtle interaction with Python GC to produce an invalid pointer
Elliott:
- Catching up from forced vacation
- bit more pybind11 work (waiting for cgywin test to pass (just merged!))
- started to work on performance benchmarks
- working on windows + arm box
Tom:
- some issue review + scipy talk discussions
### 3.9 updates
- worked on clearing out milestone yesterday
- no major items that should get a madrush to get in
- RC in 2 weeks
- how does this interact with numpy 2.0
- do not hold our RC for numpy beta
- do another RC as soon as they have an RC
- hold our 3.9 final for numpy2.0 rc
- david got new pydata sphinx theme working, please look at devdocs due to big changes in upstream themes
- use social to drive eyeballs at this
### numpy 2.0
https://github.com/numpy/numpy/issues/25918#issuecomment-1980214917
- asking for sequence of:
- numpy beta
- mpl/scipy/... rc (of _something_)
- numpy rc
- mpl/scipy/... finals (of something)
### grant updates
### triage team
SC needs to be prompt or delegate authority
### repo to hold API automation from social
- good idea, start in @story645 's account and migrate when working
### DST is coming
Remember we follow the German schedule.
### rgba nan handling + extra copies
https://github.com/matplotlib/matplotlib/pull/27848
Conclusion: only copy if we have to mutate the user input
# 29 Feb 2024
_attending_: @ksunden, @QuLogic, @tacaswell, @story645
## Agenda
### old business
- [x] RSE reports
- [x] 3.9 progress
### new business
## Notes
### RSE report
- Tom: swamped with other work
- Kyle:
- preparing for scipy submissions
- getting examples in data-prototype working again
- issue triage / PR review
- Elliott:
- on vacation
- made progress on pybind11 work, no PR yet
### 3.9
- Still looking on target for RC in March
- currently 73 open things in milestone
### numpy 2.0
- things are going slowly
- do micro release when rc to drop upper pin
# 22 Feb 2024
_attending_: @efiring, @ksunden, @QuLogic, @greglucas, @story645
## Agenda
### Old business
- [x] RSE reports
- [x] 3.9 progress
- [x] scipy tutorial planning
### new business
## notes
### PRs
- [x] [name=hannah] [seperate edgecolor + hatchcolor](https://github.com/matplotlib/matplotlib/pull/26993)
## notes
### RSE reports
- ksunden: macOS, data prototype, general issue & PR review
- qulogic: pr review, finished animation->vid in docs (needs sphinx gallery reviews)
### separate edge + hatch
- setting hatch.color to 'inherit' from edgecolor
- needs an API behavior note probably
- use facecolor tracking edgecolor as model
- on set alpha adjust hatch color?
- needs an API behavior note probably
- setting alpha after setting edgecolor will overwrite current, preserve with users hatchcolor
- Check for parallel behavior, if possible, between Patch and Collection.
### side convo on hatch api
- figuring out which customizations to allow - color, density, etc
- https://github.com/leejjoon/mpl-pe-pattern-usgs
- https://github.com/leejjoon/mpl-pe-pattern-monster
- custom registry to allow strings but avoiding naming conflicts
- similar to MarkerStyle -> HatchStyle
- SDG scope/level project
### pybind11 review
- can we go through w/ one proficient in pybind11 reviewer?
- can we just get through with "is this ported correctly?"
- benchmarking?