Aug 5 2021 – Dec 23 2021
Call co-ordinates: Thursdays @ 20:00 UTC https://zoom.us/j/384435716?pwd=WFpxVWxoYXArTDFzN1lWaHNoOE8xZz09
Previous notes: Meeting Agendas
Archive: matplotlib/ProjectManagement
Dec 23 2021
Agenda
New Business
Issues and PRs
LogLocator
respecting numticks
#21177
- LayoutEngine:
Notes
Layout engine PR
- trying to put in an API for setting the engine rather than being baked in to Figure
- the way colorbars are handled is not consistent between tight layout and constrained layout
- figure needs to know what layout engine is being used so that color bars are made "Right" for that layout
- what if user wants to change engine?
- one extreme: set at init time, can not changed
- pro: simple
- con: bit less flexible than we tend to be
- allow to change if color bar is compatible (with levels of tracking )
- pro: flexible
- con: complex
- just walking at set time not hard
- adapt existing colorbars on the fly if engine changed
- just let the user shoot them selves in the foot
Other colorbar things:
-
make everything LocatableAxes
-
move colorbar logic to the Axes rather than the Figure
- maybe start fresh with this?
- axes can have more than 1 colorbar
-
maybe attach to the mappable rather than the axes?
-
Make static properties instead of method.
Dec 16 2021
Agenda
New Business
Issues and PRs
- 63 or so non-draft PRs! Please help review!
- layout engine:
- dealing with conflicting colorbar layouts when changing layout engines midstream.
Notes
dpi issues
- currently our cannonical coordinate system (what the Identity transform takes you to) is "pixels"
- "pixels" depends on DPI which in the world of high-DPI screens and variable save DPI
- proposal is to move to "pts" (or some sort of logical DPI) as the "cannonical"
- do final scaling at last possible time
- move 72 -> actual DPI scaling to canvas
- concerns about when we do rounding / snapping
- question is what to do about users are are now intentionally using
Identity
transform
- scatter markers are currently scaled in square points
- virtual pixel / pt -> real pixels will be on canvas
- intial mpl work was targetting GUI tool kits that were very pixel foward
- pixels work well with hardware and xwindows
- post script / PDF / svg
- physical units
- all vector
- possible to have the internal units be
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- but want to document as fixed for documentation purposes
- pts
- inches / 100
- inches
- cm
- need to preserve
- strong support for physical units
- strong support for targetting explict pixel size
- possible fall out
- tests that check bounding boxes
- users that actually did want to set pixels
- may need to document to use the knob to fix it
- would likely fix a bunch of weird pdf bugs
- would have to sort out when image resampling happens
- would have to check when path simplification happens
- mixed mode may be fun?
- blitting will require some thought
- we puth the dpi ratio factor (for high-dpi) in the wrong place
- we put it as early as possible
- should have been done as late as possible (what is proposed here)
- discussion about labeling transforms with what their dest/target is
Actions
- change names
- move pixel ratio dpi change as late as possbile (in draw?)
- investigate how hard the internal virtual physical units would be
- investigate add source/test attributes to instances
Dec 9 2021
Agenda
New Business
- release:
- 3.5.1?
- release cadence
- 3.6 roadmap
- PDF docs?
- Can @anntzer redirect mplcairo general support to the main matplotlib forums?
Issues and PRs
Notes
3.5.1
release cadence
- currently about monthly for minor releases.
- maybe cutoff earlier
- downstream testing easier
- a little bit quicker?
- need to do nightly builds…
- commit to actually hit 6mo cadence
- start process earlier.
pdf docs
- we know people use it
- issues with too big images, mostly fixed now
- can not get numbers from either GA or cloudflare for usage
- PDF may be best size-wise for full off-line access
- downloading the full PDF
3.6 roadmap
- 1st week may, so beginning of march feature freeze + branch
- mplcairo into main?
- qustion about support for OSX < 10.15 (gcc related issues)
- can we push up the minimum OSX up?
- need gcc 7
- solve manylinux1 via static linking (and we are going to drop manylinux1 soon anyway)
- collisions with existing XYCairo backends?
- @qulogic will look into wheel constraints
- layout manager
- finish Aitik's font fallback work
- fraction viculum alignment
- concerns about both changing many images and the concerns about quality of images
- categorical mappables (@dstansby)
mplcairo into discourse
Dec 2 2021
Agenda
New Business
- releases
- 3.5.1?
- 3.6 roadmap?
- release cadence?
Issues and PRs
- Colorbar inherit from Axes?
- OO versus pyplot terminology:
Notes
mpl_gui
- Need to keep hard references
show
triggers rendering to GUI
- but if done in function, the figure would go away.
- can we spin up more than one manager?
- be hard to make multiple ones interactive though because they each need to get passes
- can't just move the renderered image because they are sized
- https://tacaswell.github.io/mpl-gui/
- ideally keep ability to "draw" so we can do get_tightlayout, particularly on text
- need to keep track of figures so figures in notebooks don't get garbage collected and lose their interactivity (if the user has named them all
fig
for instance.)
Nov 25 2021
Agenda
New business
- NF maintainers summit next week
Issues and PRs
- pcolormesh remove grid deprecation: #21723
- Colorbar inherit from Axes?
- hexbin mincnt #21381
Notes
pcolormesh
- grid goes beyond pcolormesh <- can't fix
- problem triggered by style
- consensus: change deprecationwarning to only occur if grid is explicitly
hexbin
- decide #21381, then discuss @anntzer's refactor
Nov 18 2021
Agenda
Old business
New business
- PRs:
- NASA update?
- Organizing ideas for grants
PRs and Issues for discussion
Notes
time
- agree we should move with DST
- need to pick if we follow US or Europe (1 week off)
webpage
landing page
- @dorafc will take a look at typography, may need to push stuff up to mpl-sphinx-theme
built docs
NASA
- money not figured out yet
- draft job proposal to NASA
- authorized research to work in US
- foreign contracts OK for engineering
- RSE : mostly units, and data pipelinig
- https://hackmd.io/@matplotlib/HJIj1bjvY
- will also do bug triage etc
- 3 years
Pre-commit
Nov 11 2021
Agenda
Old business
New business
PRs
Notes
3.5:
- largely docs; release notes
- astropy problem #21569
- needs some thought about the architecture of how gridlines get put onto non-linear projections..
- Issue: cartopy axis artists on new projections
- ticks as well could benefit from global approach to ticks and grids.
- possibly in scope for NASA grant.
- https://github.com/matplotlib/matplotlib/pull/21317
- can keep it pinned to old pyparsing until they settle down. Probably 3.5.1?
- probably works…
- https://github.com/matplotlib/matplotlib/issues/21509
- shortcuts have names that can clash with valid eps commands…
Nov 4 2021
Agenda
Old business
New business
PRs
Oct 28 2021
Agenda
Old business
New business
- 3.5.0:
- PRs:
- 282
is:pr is:open draft:false
: 43
PRs
Notes
Oct 21 2021
Agenda
New business
- master is now main and history rewrite
- PRs:
PRs
Notes
- History rewrite
- seemed to work relatively well
- @tacaswell and @QuLogic manually informed PRs that were affected.
main
is now the important branch
- mpl-data status
- debian pulls this out into its own package
- already pull the fonts out
- do not put the files where we think they are, and patch our functions to look at their new location
- propose they use symlinks to put things back
- because they build the docs, have 2 versions of Matplotlib which is odd
- consenus: tell debian that mpl-data is now a required subdir
- @ey3AIr8wSl2d1PPfOb9K1w will write API note for down-stream packagers highlighting that matplotlibrc is now a read/parsed at run-time file (not just docs)
- docs re-org
- merged, may have more follow-ups for minor re-arrangements
- 3.5
- waiting on numpy wheels (went up yesterday)
- one outstanding bug
- brochure site
- switched to bulding with sphinx
- use mpl-sphinx-theme
- landing site need binder
Oct 14 2021
Agenda
New business
- let into GH issues beta: https://github.com/features/issues
- PRs
- 282 open
is:pr is:open draft:false
: 36
- 19 merged
- Purge bad commits: (suggest at end)
- cover pydata sprint
- Oct 28-30, @tacaswell may have un-avoidable personal conflicts
PRs and other
Notes
- 3.5 ?
- Common style:
- @tacaswell will make a subproject
- inset_axes
- inset axes is fine, might have been better as something else (child_axes, dependent_axes)
- axes grid example should stay where it is.
- asinh
- good as remedy to existing symlog
- shoudl cross-link symlog to point to new scale if goes in.
- should have a decade-locator, probably just symlog locator
- Greg Lucas will comment
- cut bad commits:
- probably simple, but all existing PRs will need to trim the bad commits
- @Greg and @anntzer are going to investigate tech to flag bad commits…
- doc PRs, and do tomorrow.
Oct 7 2021
Old Business
- Hacktoberfest: Note guidelines for overlapping PRs
- 3.5rc01 released
New Business
- PRs:
- 279 open
is:pr is:open draft:false
: 34
- 54 closed in last week
PRs and Issues
Website
Other
Notes
Front page
- need new pictures
- uses the 4 we have as baseline
- need binder link
- some duplication?
Webpage reorg
None in list
- hard API to support; we dont' want to have to figure out everywhere.
- folks want None as default in iterables, but we want to evaluate early
None
on its own is troublesome enough
- User can supply a list and its not that hard to include the defaults
- Issues with
NaN
vs None
.
- @tacaswell will write
Sept 30 2021
Old Business
- Hacktoberfest participation
New Business
- v3.5 status?
- pydata global sprint
- The conference will take place (online) during the weekend of 28 to 30 October 2021
PRs and Issues
- Layout Engine (3.6)
- use Pillow for image resampling instead of Agg (3.6)? #21231
- how to deal with missing filters?
Notes
Hacktoberfest
Pydata global
- @tacaswell going
- sprints…on weekend, at least caswell will cover
- let @tacaswell know if you can help
3.5:
Layout engine
- makes the layout engine pluggable
- refactors our layouts to be plugins
switch to pillow for resampling
- #21231
- pillow already has resampling logic for 32bit floats with no limits!
- set_resampler (per AxesImage)
Nasa grant
- 6-8 weeks, can pay someone at that point.
- need job ad up..
- person would (likely) need to be based in US… (citizen or green card)
- please get edits to job description by Monday to send in for comment
Sept 23 2021
New Business
Notes
3.5
- 3.5 open issues -> move to 3.6
- RC tagged maybe by end of week
- 21126: Deprecation of stem fmt parameters
- left note asking Tim how he wants this resolved
- 19343: left to Elliott
- 20945: needs one line removed by PR author
- 20740: GSOC: failing ubuntu test-> pitched to 3.6
- font distribution error: missing/broken noto
Sept 16 2021
Old Business
- 3.5 release (waiting on docs?)
New Business
- PRs:
- 283 open
is:pr is:open draft:false
: 38
- Were selected for NASA roses
PRs and issues
Notes
3.5
- waiting on cartopy (@greglucas will release tomorrow!)
- @qulogic has a few more fixes coming
- waiting on docs on mpl side
- did PR reviews
Sept 9 2021
New business
-
Student contributors:
-
docoverhaul (documentation: overhaul) tag
-
blog author/community participant guidelines
- does spamming github get your contributions revoked? no new contributions/any consequences
-
specified cursive font family isn't available on CI
PRs and issues
Notes
Student contributors
- no one has time and is jumping at taking this on
- the requested work overlaps greatly with the CZI DEI CEL job description
- respond to them with
- would like to defer answering to after CEL starts
- ask about their timelines
- suggest that familiarity with using Matplotlib as a user very very helpful to contributing
docoverhaul tag
- sure
- also use this tag to say "needs 2 reviews"
CoC violations by blog/third party
- case by case
- spammy PRs -> just block
- serious behaviour issues -> remove their blog posts
- as always handle with compassion / empathy and response that fits the infraction
Issues with pgf fonts
- the docs suggest in multiple places that setting
rcParams['font.serif'] = []
will cause pgf to fallback to the default latex serif font, but the code is currently falling back to dejavu sans in this case
- @anntzer is running an auto bisect
image resample
- downsample - agg accepts 2**15, if someone passes higher warn and downsample
- rcparams.copy returns plain dict including deprecated ones,
- when they restore, mpl emits working
- instead copy will return a new rcparams instance
- don't need to emit new warnings on update
- concern: rely on validators w/ sideeffects
- date.formatter which globally sets default formatter
- validators need to know if they're working on installed or other rcparams
- when an rcparam is set, the validitor can/does set global state
- validators should only be validators
- shouldn't have side effects,
- should be allowed to convert values
- changing state should be a different function
- dictionary of sideeffects/call backs
- conclusion:
- remove side effects from validators
- change .copy behavior to return instance, skip warning and revalidate
Sept 2 2021
New business
-
3.5.0b1 aftermath
-
ipympl contract signed
Notes
update on docs
- Caswell did not make suffient progress, but should be possible, will continue to work on
3.5.0b1 fallout
- starting to do dependent builds on koschei (fedora)
- most issues posted to gitter, big things are seaborn issues
- cartopy issues
- more fallout from changing the order of the artists
- used to be stable zorder sort based on what sub-list they were in
- now stable sort based on order added
- unfortunately contour and coastlines are same z-order and if you add coastlines first, then the render order is switched in 3.5
- maybe fixable on the cartopy side by changing default z-order to depend on line vs filled
- 3 or 4 packages that fail, but their upstreams have fixed themselves!
- discussed proposal to add small (multiples of 1e-7) to zorder passed
- can adjust the z-order on the way in
- could add z-bias to the classe
- could just make clear in the docs
- could just warn if order has changed
- core of the problem is we used to to z-sorting on (z-order, type, added-order), now it is only (z-order, added-order)
- this change fixes (very old) bug in errorbar when caps/lines had different relative z-order
- seems hard to both warn / give back compat in cases when this breaks a user and not when it fixes the user (like errorbar)
Approximatly old order:
https://github.com/matplotlib/matplotlib/issues/1622
consensus :
- get cartopy release out
- Accept the breakage which is really a fix, but make sure it is well documented
Aug 26 2021
Agenda
Old Business
- ipympl contract is moving, target start of Sept 1!
New Business
PRs and issues
3.5 relevant
Notes
3.5 relevant
-
colormap registry as experimental?
- pro: gives us a chance to tweak the API as we see its use
- con: would have to back out a bunch of docs
- conclusion: will add note that this might be changed
-
consider adopting a sklearn style "turn the experimental stuff on" helper functions (more general)
-
do we want to add plt.colormaps
which provides access to the registry
- can probably never deprecate
plt.get_cmap
- is it worth providing 2 ways
plt.get_cmap(name)
vs plt.colormaps[name]
- already have a version of this duality in
plt.rcParams[]
and plt.rc()
- do we want to delay to 3.6?
- pro delay: delay exposing new stuff out
- con delay: there is no API freedom here, might as well do it now
-
draw_no_output
vs compose
draw
-> walks tree + renders
- suggestions:
draw_no_render
or draw_without_render
- consensus:
draw_without_rendering
-
change return type contour
-
box plot return instability
- previously
- box plot always went to artists (as Line2D)
- now can show up in patches list if using
patch_artist
keyword
- transition path
- remember the
patch_artist
keyword to direct traffic
- keep it in both?
- on artists can warn if adding a special artist, but plan is to consolidate to
add_artist
- consensus:
- check that there is an API note that things added to artists may appear in special artist type list
website
-
inner index
-
We have 4 types, 3 of them are 'top level', explanation is burried a layer deep
-
FAQ should be scattered to the winds other sections
-
top level in contents
- usage
- plot types
- tutorials
- gallery
- explanation
- how-to
- API
- external learning resources
- back matter
- contributing (change to Development maybe?)
- release notes
-
top bar
- plot types
- gallery examples
- tutorials
- reference
- usage guide
- develop/contributing
- release notes (maybe)
-
inner index and inner pages should have same top bar
-
rename "back matter" to "project info"
-
Reference section
-
dedent, drop extra tool_ktis, rename API Reference -> "complete docs"
-
re-work underestanding to point to "advnaced and intermediate tutorials"
-
home page
Aug 19 2021
- Meeting canceled due to low attendance
- informal PR review session for 3.5 PRs
Aug 12 2021
Agenda
Old Business
New Business
- Small Dev Grant, $5000, due September 3, 2021
PRs and issues
Notes
Ipympl
- draft statment of work to Sylvain Corlay
Small dev grant
- $5k numfocus…
- previous: macmini access
- 1000 words total (750 what, 400 why)
20518: pgf sketch params
- pgf and non pgf scaling of wiggles should ballpark look the same
20611: spanselector
- rectangleselector used to give the click and release points
- now tells the extents of rectangle - (upper right, lower left?)
- encapsulated as mouse event
- fixed to go back to start/end, but for interactive breaks if you want location
- rectangleselector shouldn't care about order of creation, just size + position
- options:
- change docs: always get how rectangle looks but not where user clicked
- two events: one is location, second is how rectangle was effected
- close w/o merging
- #9608:
- needs to either be closed or a comment on what's the actionable next step
- actual fix might be new feature: vectorselector widget?
- grabbers on ends of vector
- order cares about start/stop
- zoom provides keyboard short cuts to only go in x or y
- fix docs & treat as feature request
ax.cla
- init: axes cleared when created
- not defined what it does when clearing an axes
- what is a pristine axes?
- does clearing go back to creation (including projections/kwargs) (clear all)
- projection is part of classes
- maybe recreate w/ it's kwargs?
- w/o kwarg about clearing to remove recursiveness
- how do changes to rcparam factor in?
- clear w/ rcparams as they are at call time/context
- is it just remove artists/data? (clear children)
- does that propagate down to ticks/how?
- everything is stored on the axes object (in axis children)
- end up forgetting shared axes
- label contents or also styling?
- Tom: go back down to what was passed into init
- what does this mean when styling like facecolor is passed in?
- change names/add
- reset/reinit: go back to new object w/params
- kill children/relim/clear data: remove child artists
Aug 5 2021
Agenda
Old Business
New Business
- cross Numfocus projects user forum
- donation from Junolabs?
- PR Status:
is:pr created:>2021-07-21 draft:false
: 17 Opened, 13 closed
is:pr merged:>2021-07-21
: 20
is:pr is:open
: 280
is:pr is:open draft:false
: 32
is:pr is:open draft:false -author:anntzer
: 23
PRs and issues
Notes
forum for numfocus projects
- cross-project forum for discussion of intersecting problems.
- one monolithic place for users to ask for help.
- move our discourse there?
- Hannah let them know we are in favour, theoretically.
- dpi could be because not being passed down correctly.
constrained_layout at draw
colorbar work
- https://github.com/matplotlib/matplotlib/pull/19553
- callback or weakrefs to the a list of colorbars…
- current behavior:
- ScalerMabble.set_clim()
- sets values on norms,
- change callback: notifies listeners that it's changed (draw, caches, etc)
- doesn't happen when you change norm, but passing in data does trigger SM.set_clim chain
- forward propagating happens in .set_clim, can also update the vmin/vmax norm passed into SM directly
- change in PR:
- adds change callback to norm so it doesn't need to be in set_clim
- benefit is listner gets moved to Norm
- suggestions:
- add tests to ensure that callback chain is correct
https://github.com/matplotlib/matplotlib/pull/19515
- should changing the min/max on the colorbar induce a change on the norms vmin/vmax
- if zoom on region, grab the x,y as your x/y lower limits, would autorelim the scale
- removed the ability to do that on contour sets
- in cbar init, set interactive on the axes depending on the mappable & the norm
- discrete norms don't have zoom
- still same zoom controls/behavior on axes
- colorbar ticks/labels (data) stay same but colors can be moved around
- https://github.com/matplotlib/matplotlib/pull/20115
- important change is adds **kwargs to
def __init__(self, **kwargs):
- what is the scope of set?
- goes through every set_* in whatever artists it is being applied to
- set documentation rewrite looks for all .set_* methods too
- sidenote: is set rather than properties b/c many attributes have multiple properties
- ex: title has string, fontproperties, location, etc