Try   HackMD

Aug 5 2021 Dec 23 2021

tags: 2021 dev call

Call co-ordinates: Thursdays @ 20:00 UTC https://zoom.us/j/384435716?pwd=WFpxVWxoYXArTDFzN1lWaHNoOE8xZz09

Previous notes: Meeting Agendas Archive: matplotlib/ProjectManagement

Needs discussion at some point


Dec 23 2021

Agenda

New Business

  • Sponsor page?

Issues and PRs

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
      • con: very complex!
    • just let the user shoot them selves in the foot
      • pro: simplest!

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 →
    • could have a knob
  • 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
    • type annotitons?

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

  • Good, need to fix units

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

  • yes

Dec 2 2021

Agenda

New Business

  • releases
    • 3.5.1?
    • 3.6 roadmap?
    • release cadence?

Issues and PRs

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

  • 3.5.0: Released! Thanks @tacaswell and @Qulogic!

New business

  • PRs:
    • 60 non-draft
  • 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; 54 non-draft

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

  • 3.5.0

New business

PRs


Oct 28 2021

Agenda

Old business

New business

PRs

Notes

  • mathtext parser:

    • somehow broke on 3.5 backport, probably in pyparsing 3.0.0 -> 3.0.3 transition
    • Tim Hoffman will look at the 3.5 backport. #21454 and revise to unbreak C.
    • Action: we should test on pyparsing RCs as part of our bleeding edge build.
  • https://github.com/matplotlib/mpl-brochure-site/pull/21

    • binder:
      • interactivity is laggy
      • startup slow.
      • ACTION: talk to binder folks. @hannah
      • Action: ask @dopplershift
      • credits from microsoft or Amazon?

Oct 21 2021

Agenda

New business

  • master is now main and history rewrite
  • PRs:
    • non-draft: 48!

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

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
  • sprintson 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

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

21015: https://github.com/matplotlib/matplotlib/pull/21015

  • 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:

    def get_children(self):
        # docstring inherited.
        return [
            *self.collections,
            *self.patches,
            *self.lines,
            *self.texts,
            *self.artists,
            *self.spines.values(),
            *self._get_axis_list(),
            self.title, self._left_title, self._right_title,
            *self.tables,
            *self.images,
            *self.child_axes,
            *([self.legend_] if self.legend_ is not None else []),
            self.patch,
        ]

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
      • alt is fig.canvas.draw()
    • consensus: draw_without_rendering
  • change return type contour

    • needs API note

    • backcompat shims? LineCollection->PathCollection

      • add a get_segments function that raises warning/error
      • add a LineCollection keyword argument to change the return type?
        • allows a longer deprecation cycle for downstream libraries
    • consensus: API note, revisit backshim if needed

  • 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.

subfigures and dpi

  • dpi could be because not being passed down correctly.

constrained_layout at draw

  • @QuLogic will consider.

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

add set_XYZ kwargs to FigureBase, SubFigure, Figure

  • 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