# *October* 2020 ###### tags: `2020 dev call` Call co-ordinates: Tuesdays @ 15:00 Eastern US time (UTC = 19:00) https://zoom.us/j/384435716?pwd=WFpxVWxoYXArTDFzN1lWaHNoOE8xZz09 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) # 27 Oct (Tuesday) ## Agenda ### Old Business ### New Business - [ ] Should MatplotlibDeprecationWarning move to deriving from DeprecationWarning instead of UserWarning? - Originally, we derived from UserWarning to make sure that the warnings are always visible. - Now that https://www.python.org/dev/peps/pep-0565/ is implemented, core Python is taking responsibility for making sure that DeprecationWarning *is* visible when running interactively (Python, IPython, Jupyter), but not to end-users (e.g. running a script written by a labmate). - Given how often we deprecate, we may want to keep the current behavior instead, but I think it would be cleaner to simply derive from DeprecationWarning and add a `warnings.filterwarnings("default", category=DeprecationWarning)` to make them always visible that way. ### PRs - [ ] Encapsulating styles in classes: - https://github.com/matplotlib/matplotlib/pull/18544 - Is get/set type symmetry necessary? - Currently we *take* \[historical inputs\], *store* the `WhateverStyle` object, *return* \[backcompat "cleaned" version of historical input\] - for example, `LineStyle` accepts short strings (e.g. ":"), long strings (e.g. "dashed"), and on-off seq (e.g. `(0, (2, 1, 3))`). We store a `LineStyle` object but return whatever the user originally passed us. - Alternatively, we could *return* `WhateverStyle`. - [x] UI events metadata: - https://github.com/matplotlib/matplotlib/pull/16931 ## Notes ### NASA application for (geospatial?) open source - [solicitation](https://nspires.nasaprs.com/external/viewrepositorydocument/cmdocumentid=731335/solicitationId=%7B958CF134-D655-E512-B5AD-84501D14A0C1%7D/viewSolicitationDocument=1/E.7%20OS%20tools%20Amend%2059.pdf) ### Deprecations: - We currently use `UserWarning` - deprecations only on interactive use `DeprecationWarning` - scripts would not get a deprecation warning. - we can modify the global state. - probably shelve for now as our warnings are different from python warnings. - our doc build needs to fail on matplotlib warnings, not just Sphinx - docs need to discuss how to filter warnings... ### UI events and metadata - https://github.com/matplotlib/matplotlib/pull/16931 - button events. last keypress is passed as a parameter. - modifier keys are kept track of better than character keys - if key is pressed when code is outside window then it is not recognized - some API changes, but users should not be using these functions at the `super` level. - make `._process` private # 19 Oct ## Agenda ### Old Business ### New Business - [ ] 3.3.3 release planning - [ ] 3.4.0 release planning - [ ] GSoC status - [x] Meeting schedule: move one hour earlier when Daylight Savings Time ends? ### PRs - [x] https://github.com/matplotlib/matplotlib/pull/18647 data-slope lines locked in viewport position. - Just for grids? - just add to `axline`? - [x] https://github.com/matplotlib/matplotlib/pull/18749 image anti-aliasing - we apply pre-RGBA, but likely want `antialiased=True` to do after RGBA step. - There is disagreement about the framing of the question - https://github.com/matplotlib/matplotlib/issues/18747 - [ ] https://github.com/matplotlib/matplotlib/pull/17453 Dealing with non-linear norms (and scales) - [ ] https://github.com/matplotlib/matplotlib/pull/18772 Should Artists that aren't included in the `draw()` at *all* count towards `get_window_extents`? `get_tightbbox`? - [ ] https://github.com/matplotlib/matplotlib/pull/18614 Returning bytes data from savefig: `bytestring = savefig(None, format='png')` reads a little awkward ### Notes #### Meeting schedule: - Tuesday at 15:00EDT next week. Will switch with Daylights savings time end., - Conflicts with GSOD ### Release schedule - 3.3.3: release this week - numtick = 1 problem - datetime performance regression - add to benchmark repo @jklymak - https://github.com/matplotlib/matplotlib/pull/18754 ### PRs #### Data slope lines locked in viewport - use transforms in already extant `axline` - use `transform` kwarg for intercept - slopetransform? maybe future... #### Imshow[padding around NaN values](https://github.com/matplotlib/matplotlib/issues/18735) - current path: data -> resampled (data space) -> normalized -> render - antialising artifacts when downsampling - users should apply antialiasing if they know it'll be a problem - we offer interpolation kwarg to do that filtering - also used when oversampling for smoothing - applied in data space b/f RGB mapping - we end up downsampling for output to PNG in dataspace - imagebox - here RGBA values, downsample to right size to fit on screen window ##### add second downsample space in RGB space for render - interpolation w/o changing resolution (low pass filter, w/o subsample) - norm, cmap into RGBA by original size - antialiasing (subsample) out by render ##### alt - if size(x)>>>(y) or size(y)>>>(x) and you want to project on a grid where the aspect ratio is poorly matched to the original data: - upsample do it {before, after} , downsample do it {before, after} colormapping - upsample is resample than filter - downsample is filter than resample - colormapping goes after resample here - allow non-linear and user based filters, etc ##### Example: - data - [-1:blue, 0:white, 1:Red] - tom & ryan - all white 'cause oversampled - assume average 0 - jody & anthony - purple - issue is more data than pixels w/ default anti-aliasing: - throw a warning that we can't do this? - was losing hot pixels - data - [.1, 10] - should be purple or white, probably not red ##### main:take-away * add more knobs to control the imshow pipeline * maybe just let user set where they do the resampleing: * norm - resample - colormap * resample - norm - colormap * norm - colormap - resample # 12 Oct - no meeting: Columbus Day/Indigenous Peoples Day, Thanksgiving # 5 Oct 2020 ## Agenda ### Old business - [ ] Axes API movement (@tacaswell) - [ ] CoC follow up https://github.com/matplotlib/matplotlib/pull/18538 ### New Business * hacktoberfest is now opt in - do we want to participate? (Add hacktoberfest label) *https://hacktoberfest.digitalocean.com/hacktoberfest-update ### PRs and Issues - [x] https://github.com/matplotlib/matplotlib/issues/18648 drop urls from imread. - why do we still have `imread`? - [x] https://github.com/matplotlib/matplotlib/issues/18609 close_event semantics - [x] https://github.com/matplotlib/matplotlib/pull/18544 : `JoinStyle` and `CapStyle`: - should these new classes be public? - if not, how to inject the documentation? - In particular: How do we want HTML and plain-text docs to look like? - Tim's take in https://github.com/matplotlib/matplotlib/pull/18544#issuecomment-703231507 - Bruno's take in https://github.com/matplotlib/matplotlib/pull/18544#issuecomment-703336724 - [ ] https://github.com/matplotlib/matplotlib/pull/18647 data-slope lines locked in viewport position. - Just for grids? - just add to `axline`? ## Notes ### Zoom - @tacaswell - [ ] add more hosts to zoom - [x] remove waiting room? ### subfigure - OK to not do `figimage` in subfigure. ### CoC - guiding principle is folks should feel comfortable and not make others feel uncomfortable. - other projects - not our problem. - email folks who own repos under github/matplotlib that their repos fall under CoC ### Hacktober - opt-in and postively tag or merge PR. - matplotblog is participating ### matplotlib/matplotblog - pin on github ### url for imread - `certifi` is now a dependency - reading style files from url also an issue. - helpful while teaching - `urllib.open` returns a file handle. - todo: style files as well - support i/o or don't. - soft deprecate `imread`/`imsave`... - should use a proper library. - ### close_event... - `fig.close` : `close_event` when figure closes animation closes - when should we actually fire this? - currently when canvas torn down. - on C++ delete event. - Testing close event on agg backend? - nothing is deleted because no interactive canvas ever existed - What does close_event mean - gc of canvas? - or pyplot system when unregistered from gcf.... - not fired if independent of pyplot. - add a `figure.close` method? - gives an explicit way to call this. ### Style wrappers - class in documentation - Tim H wants to hide enums... - @Bruno will work with @Y-wLuq1aShOQmYPoL-pf1g on polishing this ### Style guide for gallery - define what idiomatic mpl looks like - https://matplotlib.org/devel/documenting_mpl.html#writing-examples-and-tutorials