@@ -325,6 +325,50 @@ and articles or link to it from your website!
325325Coding guidelines
326326=================
327327
328+ API changes
329+ -----------
330+
331+ Changes to the public API must follow a standard deprecation procedure to
332+ prevent unexpected breaking of code that uses Matplotlib.
333+
334+ - Deprecations must be announced via an entry in `doc/api/next_api_changes `.
335+ - Deprecations are targeted at the next point-release (i.e. 3.x.0).
336+ - The deprecated API should, to the maximum extent possible, remain fully
337+ functional during the deprecation period. In cases where this is not
338+ possible, the deprecation must never make a given piece of code do something
339+ different than it was before; at least an exception should be raised.
340+ - If possible, usage of an deprecated API should emit a
341+ `MatplotlibDeprecationWarning `. There are a number of helper tools for this:
342+
343+ - Use `.cbook.warn_deprecated() ` for general deprecation warnings.
344+ - Use the decorator ``@cbook.deprecated `` to deprecate classes, functions,
345+ methods, or properties.
346+ - To warn on changes of the function signature, use the decorators
347+ ``@cbook._delete_parameter ``, ``@cbook._rename_parameter ``, and
348+ ``@cbook._make_keyword_only ``.
349+
350+ - Deprecated API may be removed two point-releases after they were deprecated.
351+
352+
353+ Adding new API
354+ --------------
355+
356+ Every new function, parameter and attribute that is not explicitly marked as
357+ private (i.e., starts with an underscore) becomes part of Matplotlib's public
358+ API. As discussed above, changing the existing API is cumbersome. Therefore,
359+ take particular care when adding new API:
360+
361+ - Mark helper functions and internal attributes as private by prefixing them
362+ with an underscore.
363+ - Carefully think about good names for your functions and variables.
364+ - Try to adopt patterns and naming conventions from existing parts of the
365+ Matplotlib API.
366+ - Consider making as many arguments keyword-only as possible. See also
367+ `API Evolution the Right Way -- Add Parameters Compatibly `__.
368+
369+ __ https://emptysqua.re/blog/api-evolution-the-right-way/#adding-parameters
370+
371+
328372New modules and files: installation
329373-----------------------------------
330374
0 commit comments