# September 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](https://hackmd.io/zljR-pZrQ0O5J_j4NZ-9yw) Archive: [matplotlib/ProjectManagement](https://github.com/matplotlib/ProjectManagement) #### [Needs discussion at some point](https://hackmd.io/uzWviu8zSUChq3XhI2FqPg) # 28 September 2020 ## Agenda: ### Old business: - [x] Code of Conduct (@jklymak) - https://github.com/matplotlib/matplotlib/pull/18538 : in draft form comment period announced by @dstansby. Closed 13 Oct - [x] Security (@QuLogic) - https://github.com/matplotlib/matplotlib/pull/18537 - [ ] Axes API movement (@tacaswell) - [x] pcolorfast benchmarks (@anntzer) ### Issues - [ ] https://github.com/matplotlib/matplotlib/issues/18481 - how old browsers to support? - [ ] https://github.com/matplotlib/matplotlib/issues/18597 - Line2D and PathPatch have different defaults for capstyle and drawstyle - Change default or just document? ### PRs - [ ] https://github.com/matplotlib/matplotlib/pull/17270 Date ticker factory ## Notes: ### Zoom - designate more hosts... ### Security Policy - PR in (https://github.com/matplotlib/matplotlib/pull/18537) - use an external management system? - start simple - expand if needed... ### Browsers: - `ResizeObserver` not implemented in FF69 until last year, in Chrome 3-4 y. - Extended support release: - do we need to support this? - not part of packaging system - how big is it? - would need to add a shim... - if self contained, seems reasonable. - versus documenting incompatibility - suggest similar amount of time to python support: 3.5 y ### Consistency of defaults `capstyle` and `joinstyle` https://github.com/matplotlib/matplotlib/issues/18597 - `PathPatch` and `Line2D` incompatible defaults - `PathPatch` hard coded. Line off rcParam. Add an rcParam? - arrows seem hard coded - does it need to be on universal default? - specific patches need specific @bruno: open issue on circle patch ### date ticker factory: - https://github.com/matplotlib/matplotlib/pull/17270 - not particularly used. Entry in whats new 2005 - just deprecate. ### Stair test fixes... - change data: user must call `relim()`... - can be useful. ### Collections color logic - https://github.com/matplotlib/matplotlib/pull/18480 - make more reversible - clarify - allow changing the arry to go back to None - needs review. Doesn't change any tests, and adds a bunch of tests. ### 18573: axes_class - https://github.com/matplotlib/matplotlib/pull/18573 # 21 September 2020 ## Agenda ### Governance - [x] small dev grant due Oct 19th - [x] concrete next steps for a MPL flavored CoC - (from 2016) https://github.com/matplotlib/governance/issues/2 - https://github.com/matplotlib/governance/blob/master/communications_guidelines.md - https://github.com/matplotlib/matplotlib/pull/18535 was just merged... - missing reporting & enforcement mechanisms - [x] https://github.com/matplotlib/matplotlib/security * matplotlib@numfocus or private email group? - [x] Meta: are governance things really best discussed on dev call? ### PRs: - [x] Needs naming decision https://github.com/matplotlib/matplotlib/pull/18356 - subpanel, panel, subfigure - re-organizes figure, so rebases are challenging - [x] sync shared axes tick marks - https://github.com/matplotlib/matplotlib/pull/18529 - https://github.com/matplotlib/matplotlib/issues/8946 - Do we really want this? - [x] camelCase drives somePeople nuts: - https://github.com/matplotlib/matplotlib/pull/11051 - is this *really* something we need to change? If not, we should close. - [x] function-based API: - seems to have fizzled. https://github.com/matplotlib/matplotlib/pull/14058 ## Notes ### Code of conduct - concern is that it is actionable - perceived as problematic to have to go through back-channels. - can be problematic - do we value it? - EDI kick? @dstansby - @jklymak: will move this forward... - back up ombudsman - leah at NumFOCUS? - - try and have under unmbrella ### Small dev grant - small dev grant: - $5k if something useful we should propose... ### security email - matplotlib@numfocus.org email as well... ### PRs - `subfigure` is the name.... - shared axis: - sharing ticks and formatters are supposed to be the same... - currently should both be shared.... - should just be `set_xlim`? rather than looping... - pcolorfast, - should be faster than pcolormesh.... - but how much? - @anntzer will look at benchmarks and check that new all-numpy version is close to C version... - Axes api discussion: - subfigure useful to allow libraries that have control of figures... - decorator: global state versus non-global - explicit better than implicit generally - context manager? - agreed on call that this is an important project. - @tacaswell will put some cycles into moving this forward. ```python if ax is None: ax=plt.gca(); ``` # 14 September 2020 ## Agenda - [x] 3.3.2 update - [x] Default pcolormesh handling: - https://github.com/matplotlib/matplotlib/issues/18317, https://github.com/matplotlib/matplotlib/pull/18398, https://github.com/matplotlib/matplotlib/issues/18399 - Should we find grid centers in display space - Warn if non-monotonic? - Give kwarg way to get old behaviour or just ask people to drop whichever row/column they want e.g.`Z=Z[:-1, :-1]` - [x] Imshow round tripping (again) - https://github.com/matplotlib/matplotlib/pull/18458 - [x] Numfocus mentored sprint ## Notes ### Pcolormesh handling * panning and zooming in non-cartesian coords * interpolation should be in data space, creates issues w/ 0-360 wrap * folks expect that pcolormesh works like imshow, except pcolormesh doesn't - needs to guess edges - creates issues in wrapped coordinate systems (globes!) * user can pass in boundaries * projection can provide function for doing wrapping on non-cartesian coords * this sorta exists as transform * is periodic boundary problem * not sure if there's a canonical way of doing * previously dropped data, would create piecewise linear condition that usually would follow circle * want lat/lon grid or projection informed nearest neighbor * two projections * native projection system for the axes * specificy alternate projection for plotting * original report: * stereopolar stored in lat lon (plattecarrer) that they wanted plotted in polarstereo - interpolation created jumps * cartopy side solution * cartopy heuristic is nan for missing 1/2 grid * they plan to develop algorithm that defaults over pcolormesh #### to do * warning: [#18398](https://github.com/matplotlib/matplotlib/pull/18398) ### imshow roundtrip * value =/= inverse cmap(norm(v)) * switched to interpolation in dataspace * agg clips hard at 0-1, so mpl internally resamples .25-.75 so rest can be mapped for over/under * log(100*10^20) doesn't work properly - clip transform eps to 1/20 * problem restatement * input data < vmax * via interpolation gets rounded up >vmax * gets aggressively clipped * is now nan #### proposals * special case log * clip to be >+0 * 3.4 proposal: add an episilon to vmin/vmax * close over values (<vmax+epsilon) will get marked as valid * discrete boundary on the data * boundarynorm does this fuzzyness * moves around implementation details * concern about domain specific boundary values * current path: * resample (rescale/unscale - linear [0-1]) -> norm(rescale) -> colormap * rewrite interpolator * sort out the current implementation (agg implementation details) - walk through agg templates * for every point in kernal window, apply kernal to get interpolated point * still doing floating points, still mapping to integer (color mapping) * need to preserve input values- shouldn't happen in nearest 'cause interpolater shouldn't be doing math * resample & norm order are really scale/domain dependent #### To Do * special case log * clip to be >+0 * document resample/interpolation/rescaling path & floating point issues ### mentored sprint let @story645 know if you want to be involved # 07 September 2020 ## Agenda * seaborn get a section in our discourse? * https://discourse.matplotlib.org/t/what-are-3rd-party-packages/20666/2 * pydata sphinx theme * https://pydata-sphinx-theme.readthedocs.io/en/latest/ * sphinx multiversion * https://github.com/Holzhaus/sphinx-multiversion * small dev grant for information architecture? * intersects w/ GSOD work but not same * ### PRs and Issues - [x] TH: Naming the "good" step function. After careful consideration I've come to the conclusion that the best name is one of `stair()` / `stairs()` (https://github.com/matplotlib/matplotlib/pull/18275#issuecomment-687929859). I'd like to get short feedback if singular or plural is better. ## Notes ### naming of "step" - primary goal to avoid user confusion - avoid collision with step -> no 'step' in name even though 'step' would be the best plot - checked what other names were already used in this context (google "<name> plot") - other names already have different usage - no one was strongly against - outstanding question: stair vs stairs - no one can think of ambigquity with 'stairs' - consenuss is that "stairs" scans better than "stair" even though most other plot name are singular because in spoken english "stairs" is a weird word. ### seaborn wants a section on discourse * Sounds good! * @hannah will set it up ### pydata theme - should we move to pydata theme? - maybe, but want to be able customize the colors (our colors are part of our branding) - this should also let us use the version selector ### logo - keep the cicle - change the font ### small development grant for information architecture - needs a champion who has bandwidth to lead this