This list is closed, nobody may subscribe to it.
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(13) |
Sep
(2) |
Oct
(3) |
Nov
(8) |
Dec
(9) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2015 |
Jan
|
Feb
(5) |
Mar
(6) |
Apr
(17) |
May
(3) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
(10) |
Jun
(2) |
Jul
|
Aug
(8) |
Sep
|
Oct
|
Nov
(3) |
Dec
(14) |
| 2017 |
Jan
(9) |
Feb
(9) |
Mar
(1) |
Apr
(1) |
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(7) |
| 2018 |
Jan
(20) |
Feb
(1) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(16) |
Aug
|
Sep
(2) |
Oct
|
Nov
(4) |
Dec
(16) |
| 2019 |
Jan
(8) |
Feb
(2) |
Mar
(9) |
Apr
(19) |
May
(13) |
Jun
(18) |
Jul
(5) |
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
(13) |
| 2020 |
Jan
(10) |
Feb
|
Mar
(5) |
Apr
(1) |
May
(13) |
Jun
(1) |
Jul
(18) |
Aug
(27) |
Sep
|
Oct
(3) |
Nov
(2) |
Dec
(38) |
| 2021 |
Jan
(39) |
Feb
(21) |
Mar
(23) |
Apr
(16) |
May
(3) |
Jun
(3) |
Jul
|
Aug
(2) |
Sep
(2) |
Oct
|
Nov
(11) |
Dec
(11) |
| 2022 |
Jan
(3) |
Feb
|
Mar
(5) |
Apr
(5) |
May
(11) |
Jun
(4) |
Jul
(2) |
Aug
(6) |
Sep
(1) |
Oct
(7) |
Nov
(11) |
Dec
(34) |
| 2023 |
Jan
(2) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(14) |
Jun
(27) |
Jul
(8) |
Aug
|
Sep
(5) |
Oct
(2) |
Nov
(4) |
Dec
(5) |
| 2024 |
Jan
(6) |
Feb
(2) |
Mar
(10) |
Apr
(4) |
May
(7) |
Jun
(6) |
Jul
(8) |
Aug
(12) |
Sep
(7) |
Oct
(2) |
Nov
(4) |
Dec
(10) |
| 2025 |
Jan
(10) |
Feb
(15) |
Mar
(6) |
Apr
(1) |
May
|
Jun
(3) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
| 2026 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
(3) |
Jul
(1) |
Aug
(7) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
|
From: Richard M. <mu...@cd...> - 2015-05-17 15:30:30
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 12e8147e8633910acfe237da1ec9cafc90a47e03 https://github.com/python-control/python-control/commit/12e8147e8633910acfe237da1ec9cafc90a47e03 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: R control/matlab.py A control/matlab/__init__.py Log Message: ----------- Change matlab module to sub-package Commit: 33ca2db591d54b5a98c2b9ca3fd7930ac4cab893 https://github.com/python-control/python-control/commit/33ca2db591d54b5a98c2b9ca3fd7930ac4cab893 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/matlab/__init__.py M control/statesp.py Log Message: ----------- Move ss, tf2ss, etc into statesp module Commit: 5cf3e021a70121dcc3f479d6e7781996bca48451 https://github.com/python-control/python-control/commit/5cf3e021a70121dcc3f479d6e7781996bca48451 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/matlab/__init__.py M control/statesp.py Log Message: ----------- fixup! Move ss, tf2ss, etc into statesp module Commit: aeba73c8d4508d8adff655c042d77496b96456ef https://github.com/python-control/python-control/commit/aeba73c8d4508d8adff655c042d77496b96456ef Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/matlab/__init__.py M control/xferfcn.py Log Message: ----------- Move tf, ss2tf, etc into xferfcn module Commit: d1d66599db5d8a7d3424ea4e1ec87de89cb14b98 https://github.com/python-control/python-control/commit/d1d66599db5d8a7d3424ea4e1ec87de89cb14b98 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/matlab/__init__.py A control/matlab/timeresp.py M control/timeresp.py Log Message: ----------- Move Matlab versions of time response routines Commit: 1b9070a6acc460a275efa796e35d3cacf1089d04 https://github.com/python-control/python-control/commit/1b9070a6acc460a275efa796e35d3cacf1089d04 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/frdata.py M control/matlab/__init__.py Log Message: ----------- Move matlab.frd to frdata module Commit: 456fcaf5762c14231c9ac0d236a11f8a3c78fe1d https://github.com/python-control/python-control/commit/456fcaf5762c14231c9ac0d236a11f8a3c78fe1d Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/lti.py M control/matlab/__init__.py Log Message: ----------- Move pole, zero, evalfr, freqresp to lti module Commit: 689c59d7c05f9df6ce7900fa8f1f731199f16d15 https://github.com/python-control/python-control/commit/689c59d7c05f9df6ce7900fa8f1f731199f16d15 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/matlab/__init__.py A control/matlab/plots.py M control/nichols.py M control/rlocus.py M control/tests/matlab_test.py Log Message: ----------- Move Matlab plots to new module matlab.plots Commit: a3fb4f583c48adbede0ec4953c153a94f1c3bdb4 https://github.com/python-control/python-control/commit/a3fb4f583c48adbede0ec4953c153a94f1c3bdb4 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/dtime.py M control/lti.py M control/margins.py M control/matlab/__init__.py M control/matlab/plots.py M control/rlocus.py Log Message: ----------- Move damp, c2d, rlocus from matlab into control Commit: 9ded2bd4879dfba67b5730a6eef9557de6f212fc https://github.com/python-control/python-control/commit/9ded2bd4879dfba67b5730a6eef9557de6f212fc Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/delay.py Log Message: ----------- Fix whitespace in delay Commit: c2bf84d93283d6842315c52ba889ba78318f4c96 https://github.com/python-control/python-control/commit/c2bf84d93283d6842315c52ba889ba78318f4c96 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/__init__.py M control/bdalg.py M control/canonical.py M control/delay.py M control/freqplot.py M control/mateqn.py M control/matlab/__init__.py M control/modelsimp.py M control/phaseplot.py M control/pzmap.py M control/statefbk.py Log Message: ----------- Clean up imports Define __all__ variables in the modules so that from .<module> import * imports only the functions/classes we use. This is probably a little better than listing them explicitly in __init__.py, since then if we add a new function to a module, we only need to change the __all__ variable in the same module, rather than edit __init__.py. Furthermore it avoids duplicating some of these listings in matlab/__init__.py. Commit: c51d665748ddbf5f0a1667ecd7ddfd77b8111a05 https://github.com/python-control/python-control/commit/c51d665748ddbf5f0a1667ecd7ddfd77b8111a05 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/lti.py M control/matlab/__init__.py R control/matlab/plots.py A control/matlab/wrappers.py M control/statesp.py A control/tests/lti_test.py M control/tests/matlab_test.py M control/tests/statesp_test.py M control/tests/test_control_matlab.py M control/tests/xferfcn_test.py M control/xferfcn.py Log Message: ----------- Implement dcgain outside of matlab module The dcgain function is now implemented as a method of the StateSpace and TransferFunction classes. There is also a routine lti.dcgain(sys) that simply calls sys.dcgain(). Note that the DC gain is now returned as a numpy array (not a matrix), and furthermore, single dimensions are removed with np.squeeze. This is a change from the previous implementation in matlab.dcgain(). The new convention makes it easier to deal with SISO systems (a common case), since instead of referring to a gain as g[0][0], you can refer to it simply as g. This seems preferable to me than returning a np.matrix. (The new convention is also more consistent with Matlab.) Commit: f48161b90ca40ba426c7d1f35c7dc008e63ab07a https://github.com/python-control/python-control/commit/f48161b90ca40ba426c7d1f35c7dc008e63ab07a Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/matlab/__init__.py M doc/control.rst M doc/matlab.rst Log Message: ----------- Update documentaion for Matlab module Matlab module documentation is now in the same format as the main module, with one routine per html page. Commit: ebf83643d67126102caea9c0fd6940f6a4c8cfac https://github.com/python-control/python-control/commit/ebf83643d67126102caea9c0fd6940f6a4c8cfac Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M control/matlab/__init__.py Log Message: ----------- Use Matlab defaults for Bode plots Commit: 06e5c34bf22f576a84b800021f59298619e040c0 https://github.com/python-control/python-control/commit/06e5c34bf22f576a84b800021f59298619e040c0 Author: Clancy Rowley <cwr...@pr...> Date: 2015-05-16 (Sat, 16 May 2015) Changed paths: M control/freqplot.py M control/tests/discrete_test.py Log Message: ----------- Always return phase in radians in bode_plot Previously, bode_plot returned phase and magnitude in different units (dB/absolute magnitude, radians/degrees) depending on the values of boolean flags. This was inconsistent with the documentation and the tests. This is now made consistent, so that bode_plot always returns absolute magnitude and phase in radians, and the documentation is consistent with the behavior. Commit: cd87eda72c95bda132bf4965fb361a918b8eb60f https://github.com/python-control/python-control/commit/cd87eda72c95bda132bf4965fb361a918b8eb60f Author: Richard Murray <mu...@cd...> Date: 2015-05-17 (Sun, 17 May 2015) Changed paths: M control/__init__.py M control/bdalg.py M control/canonical.py M control/delay.py M control/dtime.py M control/frdata.py M control/freqplot.py M control/lti.py M control/margins.py M control/mateqn.py R control/matlab.py A control/matlab/__init__.py A control/matlab/timeresp.py A control/matlab/wrappers.py M control/modelsimp.py M control/nichols.py M control/phaseplot.py M control/pzmap.py M control/rlocus.py M control/statefbk.py M control/statesp.py M control/tests/discrete_test.py A control/tests/lti_test.py M control/tests/matlab_test.py M control/tests/statesp_test.py M control/tests/test_control_matlab.py M control/tests/xferfcn_test.py M control/timeresp.py M control/xferfcn.py M doc/control.rst M doc/matlab.rst Log Message: ----------- Merge pull request #62 from cwrowley/matlab Move matlab compatibility routines to subpackage. Reviewed all changes and confirmed that these should give the same functionality, modulo the changes @cwrowley noted in the PR. Compare: https://github.com/python-control/python-control/compare/58c7f85e3811...cd87eda72c95 |
|
From: Richard M. <mu...@cd...> - 2015-04-26 20:22:29
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 262479061bcdaee2cc570c955ea0f96912030e88 https://github.com/python-control/python-control/commit/262479061bcdaee2cc570c955ea0f96912030e88 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M control/statefbk.py Log Message: ----------- Update docstring for lqr Commit: f498f0f2cb315836956f68e807c62abbad05ee4f https://github.com/python-control/python-control/commit/f498f0f2cb315836956f68e807c62abbad05ee4f Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/matlab.py M control/timeresp.py Log Message: ----------- Update documentation about keyword args in lsim Keyword arguments are no longer used in lsim (forced_response), or the routines step_response, initial_response, impulse_response, because forced_response no longer calls scipy.integrate.odeint Commit: fa439364b732f355d379573c4c9706aebf5cb82b https://github.com/python-control/python-control/commit/fa439364b732f355d379573c4c9706aebf5cb82b Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M .gitignore M control/__init__.py M control/matlab.py M control/timeresp.py M doc/Makefile R doc/analysis.rst R doc/bdalg_strings.rst R doc/class_strings.rst A doc/classes.rst M doc/conf.py A doc/control.rst R doc/creation.rst R doc/examples.rst R doc/freqplot.rst M doc/index.rst M doc/intro.rst A doc/matlab.rst R doc/matlab_strings.rst R doc/modsimp_strings.rst R doc/modules.rst R doc/synthesis.rst R doc/timeresp.rst R doc/utilities.rst Log Message: ----------- Reorganize documentation Previously, the modules were documented on separate pages (in the html version), with one html page per module. This commit changes the organization of the documentation, so that there are concise tables of functions (or classes), plus one html page per function or class. This is consistent with how numpy, scipy, and other projects handle their documentation. Commit: 3f3c9f5547b0000ce710e2ba8a87d484b7d9acf1 https://github.com/python-control/python-control/commit/3f3c9f5547b0000ce710e2ba8a87d484b7d9acf1 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/bdalg.py Log Message: ----------- Fix minor documentation bugs in bdalg Commit: 20bd90a3f52ce554928f70244c72c7ce226cdd11 https://github.com/python-control/python-control/commit/20bd90a3f52ce554928f70244c72c7ce226cdd11 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/canonical.py Log Message: ----------- Improve documentation for canonical forms Also makes `form` an optional argument for canonical_form, with the default as reachable form (which is the only one implemented so far). Commit: a5bfafcfd2e3a9b96204812d5ccada052ccf7b35 https://github.com/python-control/python-control/commit/a5bfafcfd2e3a9b96204812d5ccada052ccf7b35 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/ctrlutil.py M control/frdata.py M control/freqplot.py M control/lti.py M control/margins.py M control/matlab.py M control/nichols.py M control/pzmap.py M control/rlocus.py M control/statefbk.py M control/statesp.py M control/tests/test_control_matlab.py M control/timeresp.py M control/xferfcn.py M doc/classes.rst Log Message: ----------- Change Lti to LTI This change is just cosmetic, and shouldn't affect any user code, since the Lti base class is not exposed to the user. (Well, technically it is exposed to the user, but it isn't in the `control` namespace, isn't used in any tests, and probably shouldn't be exposed to the user.) Commit: 2f90b031451632ce4febd29f96e8c757b4c3a34f https://github.com/python-control/python-control/commit/2f90b031451632ce4febd29f96e8c757b4c3a34f Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/frdata.py M control/matlab.py M control/statesp.py M control/xferfcn.py M doc/classes.rst Log Message: ----------- Improve documentation for LTI system classes Commit: 56939a55dd65d77032e027ad68ec5a49f41faab6 https://github.com/python-control/python-control/commit/56939a55dd65d77032e027ad68ec5a49f41faab6 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/matlab.py Log Message: ----------- Provide better example system for margin docstring Commit: 01ff7ac593fa008b9f3129473b134a00ff489f57 https://github.com/python-control/python-control/commit/01ff7ac593fa008b9f3129473b134a00ff489f57 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-20 (Mon, 20 Apr 2015) Changed paths: M control/__init__.py M control/matlab.py M doc/control.rst Log Message: ----------- Move documentation into doc/ The tables of functions/classes were previously defined in control/__init__.py. This commit moves those to doc/control.rst. This is consistent with what is done in scikit-learn, for example, and seems cleaner to me, as most of the .rst is kept in the doc/ directory, rather than the docstrings in __init__.py. It also shortens a too-lengthy docstring for the main `control` module. Commit: 58c7f85e38114732ee44f6910f1d135dda79be5d https://github.com/python-control/python-control/commit/58c7f85e38114732ee44f6910f1d135dda79be5d Author: Richard Murray <mu...@cd...> Date: 2015-04-26 (Sun, 26 Apr 2015) Changed paths: M .gitignore M control/__init__.py M control/bdalg.py M control/canonical.py M control/ctrlutil.py M control/frdata.py M control/freqplot.py M control/lti.py M control/margins.py M control/matlab.py M control/nichols.py M control/pzmap.py M control/rlocus.py M control/statefbk.py M control/statesp.py M control/tests/test_control_matlab.py M control/timeresp.py M control/xferfcn.py M doc/Makefile R doc/analysis.rst R doc/bdalg_strings.rst R doc/class_strings.rst A doc/classes.rst M doc/conf.py A doc/control.rst R doc/creation.rst R doc/examples.rst R doc/freqplot.rst M doc/index.rst M doc/intro.rst A doc/matlab.rst R doc/matlab_strings.rst R doc/modsimp_strings.rst R doc/modules.rst R doc/synthesis.rst R doc/timeresp.rst R doc/utilities.rst Log Message: ----------- Merge pull request #60 from cwrowley/docs Reorganize and improve documentation Compare: https://github.com/python-control/python-control/compare/88a7d01f853e...58c7f85e3811 |
|
From: Richard M. <mu...@cd...> - 2015-04-18 19:10:50
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: f245191cca096c38748d131e1193bcaa262d6055 https://github.com/python-control/python-control/commit/f245191cca096c38748d131e1193bcaa262d6055 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-08 (Wed, 08 Apr 2015) Changed paths: A setup.cfg Log Message: ----------- Configure setup to make universal binaries You can build a binary wheel with python setup.py bdist_wheel The configuration option added here will automatically make "universal" wheels, that work on Python 2 and 3. Commit: 99bf5863211d2e72c39fbad481a53d3da4d2b872 https://github.com/python-control/python-control/commit/99bf5863211d2e72c39fbad481a53d3da4d2b872 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-08 (Wed, 08 Apr 2015) Changed paths: M .gitignore Log Message: ----------- Ignore generated coverage files Commit: 88a7d01f853e7c9d2c02294b399d5d70e3780dd0 https://github.com/python-control/python-control/commit/88a7d01f853e7c9d2c02294b399d5d70e3780dd0 Author: Richard Murray <mu...@cd...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M .gitignore A setup.cfg Log Message: ----------- Merge pull request #55 from cwrowley/config Build universal wheels Compare: https://github.com/python-control/python-control/compare/841bc0c7a12c...88a7d01f853e |
|
From: Richard M. <mu...@cd...> - 2015-04-18 19:09:57
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 51536bfdd41c4814f51049fcb91e59327d1515c9 https://github.com/python-control/python-control/commit/51536bfdd41c4814f51049fcb91e59327d1515c9 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-08 (Wed, 08 Apr 2015) Changed paths: A control/tests/ctrlutil_test.py Log Message: ----------- Add tests showing problems with ctrlutil.unwrap The routine ctrlutil.unwrap fails if there are large jumps in phase. Commit: 710b6ce05f1ff69094a08f432003a446df11ca76 https://github.com/python-control/python-control/commit/710b6ce05f1ff69094a08f432003a446df11ca76 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-08 (Wed, 08 Apr 2015) Changed paths: M control/ctrlutil.py M control/tests/ctrlutil_test.py Log Message: ----------- Fix ctrlutil.unwrap New implementation of unwrap() that is faster and better. Also simplify implementation of issys() Commit: bdac7c145e2d0e667e4f250e72107116f8aec4ba https://github.com/python-control/python-control/commit/bdac7c145e2d0e667e4f250e72107116f8aec4ba Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-08 (Wed, 08 Apr 2015) Changed paths: M control/__init__.py M control/ctrlutil.py M control/tests/ctrlutil_test.py Log Message: ----------- Add utilities mag2db and db2mag These convert magnitudes to decibels and back Commit: 841bc0c7a12cc70e4637ae6f43462a7e07a62f1c https://github.com/python-control/python-control/commit/841bc0c7a12cc70e4637ae6f43462a7e07a62f1c Author: Richard Murray <mu...@cd...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M control/__init__.py M control/ctrlutil.py A control/tests/ctrlutil_test.py Log Message: ----------- Merge pull request #56 from cwrowley/utils Add db2mag and mag2db Compare: https://github.com/python-control/python-control/compare/050548258547...841bc0c7a12c |
|
From: Richard M. <mu...@cd...> - 2015-04-18 16:48:02
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: c1c35d1d70b2b288e8afc6f8d52a8d9f33232b50 https://github.com/python-control/python-control/commit/c1c35d1d70b2b288e8afc6f8d52a8d9f33232b50 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M control/tests/margin_test.py Log Message: ----------- Add test demonstrating bug in stability_margins See #58 Commit: fae35956001b22a9ea0e3962a4047998aa7b4282 https://github.com/python-control/python-control/commit/fae35956001b22a9ea0e3962a4047998aa7b4282 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M control/margins.py Log Message: ----------- Fix bug in stability_margins Fixes #58. The documentation is also updated to specify the units of the inputs and outputs. Also, previously there was an optional argument `deg` which the docstring claimed was used to specify the units of the input/output phases, but this was never actually used in the implementation. This commit removes that optional argument. Commit: 0505482585473fa7435e171cfe01c694c9fb8bd3 https://github.com/python-control/python-control/commit/0505482585473fa7435e171cfe01c694c9fb8bd3 Author: Richard Murray <mu...@cd...> Date: 2015-04-18 (Sat, 18 Apr 2015) Changed paths: M control/margins.py M control/tests/margin_test.py Log Message: ----------- Merge pull request #59 from cwrowley/gh-58 Fix #58, bug in stability_margins Compare: https://github.com/python-control/python-control/compare/15fd5c1e8015...050548258547 |
|
From: cwrowley <cl...@gm...> - 2015-04-06 11:26:54
|
Branch: refs/tags/0.7.0 Home: https://github.com/python-control/python-control |
|
From: Clancy R. <cl...@gm...> - 2015-04-06 11:04:03
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 09a715377a868a1f46b7266bc8af58b932d1999e https://github.com/python-control/python-control/commit/09a715377a868a1f46b7266bc8af58b932d1999e Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M .gitignore M .travis.yml M control/__init__.py A make_version.py M setup.py Log Message: ----------- Simplify setup.py and automatic version generation There was a lot of unnecessarily complex logic in setup.py, taken from numpy, about whether to use setuptools or distutils. In addition, the procedure for generating the version information was only partially automatic (one still needed to change the version manually in setup.py), and was somewhat unreliable (see issue #37). This commit simplifies setup.py, always using setuptools, as recommended in the Python Packaging Guide: http://python-packaging-user-guide.readthedocs.org/en/latest/current.html The version information is now generated directly from tags in the git repository. Now, *before* running setup.py, one runs python make_version.py and this generates a file with the version information. This is copied from binstar (https://github.com/Binstar/binstar) and seems to work well. Commit: 7f937266aec38f13ca77b9cb0b436d09f752a515 https://github.com/python-control/python-control/commit/7f937266aec38f13ca77b9cb0b436d09f752a515 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M README.rst Log Message: ----------- Update and improve README Commit: 688d1f6feae72c396f101af08b85b5f94c992a6f https://github.com/python-control/python-control/commit/688d1f6feae72c396f101af08b85b5f94c992a6f Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M control/tests/freqresp.py Log Message: ----------- Fix print statement in tests/freqresp.py for py3 Commit: 6d337541fa6e48753105295d59f1b9abc2cc36d0 https://github.com/python-control/python-control/commit/6d337541fa6e48753105295d59f1b9abc2cc36d0 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M .gitignore A conda-recipe/bld.bat A conda-recipe/meta.yaml M make_version.py Log Message: ----------- Add conda recipe To build the conda package: conda build conda-recipe Note that the version is automatically set according to the files generated by make_version.py, which is automatically run by the recipe Commit: 4a35d468f16f367fdc6c54ce555682f6a576d846 https://github.com/python-control/python-control/commit/4a35d468f16f367fdc6c54ce555682f6a576d846 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M .travis.yml M conda-recipe/meta.yaml Log Message: ----------- Modify travis build to test conda recipe Commit: 5ff196c860909d18707ccdd2f85a89a4b531150c https://github.com/python-control/python-control/commit/5ff196c860909d18707ccdd2f85a89a4b531150c Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-03 (Fri, 03 Apr 2015) Changed paths: M .travis.yml Log Message: ----------- Install slycot from binstar in Travis CI The majority of time in the Travis CI testing was spent installing slycot from source. (This also required installing a fortran compiler as part of the Travis build.) Installing from a binary saves a lot of time. Commit: 15fd5c1e8015e5bdfd748ccac4a36252d1725ae5 https://github.com/python-control/python-control/commit/15fd5c1e8015e5bdfd748ccac4a36252d1725ae5 Author: Clancy Rowley <cl...@gm...> Date: 2015-04-06 (Mon, 06 Apr 2015) Changed paths: M .gitignore M .travis.yml M README.rst A conda-recipe/bld.bat A conda-recipe/meta.yaml M control/__init__.py M control/tests/freqresp.py A make_version.py M setup.py Log Message: ----------- Merge pull request #52 from cwrowley/conda-build Add conda build recipe and improve version numbering Compare: https://github.com/python-control/python-control/compare/9671fe3b03f4...15fd5c1e8015 |
|
From: Richard M. <mu...@cd...> - 2015-04-05 16:20:57
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 24eb89bca40bbaf09674e22882cdab261a9e52cf https://github.com/python-control/python-control/commit/24eb89bca40bbaf09674e22882cdab261a9e52cf Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-05 (Sun, 05 Apr 2015) Changed paths: M control/matlab.py M control/rlocus.py M control/tests/matlab_test.py M control/tests/rlocus_test.py Log Message: ----------- Fix #45 - make gain vector optional in root_locus Commit: 45e0450c005026145a66c37e634efb80e66092a5 https://github.com/python-control/python-control/commit/45e0450c005026145a66c37e634efb80e66092a5 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-05 (Sun, 05 Apr 2015) Changed paths: M control/margins.py M control/matlab.py M control/nichols.py Log Message: ----------- Fix some mistakes in documentation Note that one cannot use arbitrary section headings in numpydoc. For instance, the section headings "Usage", "Keywords", and "Return Values" are not valid section headings, and would give warnings when building documentation. In addition, the routine matlab.tfdata was documented incorrectly (the documentated behavior did not match the actual behavior when keyword arguments were used). Commit: 9671fe3b03f457ee3c00d5a524ebdd037202a2e7 https://github.com/python-control/python-control/commit/9671fe3b03f457ee3c00d5a524ebdd037202a2e7 Author: Richard Murray <mu...@cd...> Date: 2015-04-05 (Sun, 05 Apr 2015) Changed paths: M control/margins.py M control/matlab.py M control/nichols.py M control/rlocus.py M control/tests/matlab_test.py M control/tests/rlocus_test.py Log Message: ----------- Merge pull request #54 from cwrowley/gh-45 Fix #45 - make gain vector optional in root_locus Checked and this looks OK. For posterity, what was the reason for getting rid of some of the **kw arguments: -def tfdata(sys, **kw): +def tfdata(sys): Compare: https://github.com/python-control/python-control/compare/b7e7ae94defe...9671fe3b03f4 |
|
From: Richard M. <mu...@cd...> - 2015-04-05 15:30:38
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 0f37e9f7c1623a4b923e8c4576f8c0cfdbc69213 https://github.com/python-control/python-control/commit/0f37e9f7c1623a4b923e8c4576f8c0cfdbc69213 Author: Clancy Rowley <cwr...@pr...> Date: 2015-04-05 (Sun, 05 Apr 2015) Changed paths: M control/statefbk.py M control/tests/statefbk_test.py Log Message: ----------- Fix LQR for 3 arguments Fixes #24 Commit: b7e7ae94defe5f28cea4954a6022bc50b0ffcf4d https://github.com/python-control/python-control/commit/b7e7ae94defe5f28cea4954a6022bc50b0ffcf4d Author: Richard Murray <mu...@cd...> Date: 2015-04-05 (Sun, 05 Apr 2015) Changed paths: M control/statefbk.py M control/tests/statefbk_test.py Log Message: ----------- Merge pull request #53 from cwrowley/fix-lqr Fix LQR for 3 arguments Compare: https://github.com/python-control/python-control/compare/86ebb1cdd3c3...b7e7ae94defe |
|
From: Scott C. L. <sli...@cd...> - 2015-04-03 18:43:53
|
My replies will be in separate emails to avoid interleaving of topics. Website: Clancy, is your intent to use GitHub pages to have a brief single-page website that serves as the generic landing page for newcomers to python-control and then host releases of the manual at http://python-control.readthedocs.org/en/latest/ ? Assuming that python-control.org can only be made to point to one of those two locations, I recommend *not* using GitHub pages. Instead, write the homepage of the manual so that it serves the role of a generic landing page and has a "TL;DR" introduction. This will help reduce the number of unique domain names associated with the project. On 03/04/15 08:38, Richard Murray wrote: > Thanks for picking up all of these threads, Clancy! > > * PyPI: I think we definitely want to get python-control working on PyPI. Tagging the current version as 0.6.7 to make sure we don’t get a version naming clash seems like a good approach. > > * Releases: updating the patch number (third digit) and making relatively frequent release seems like a good way to go. We can update the minor number when there are significant enough changes (or enough patches) that we think people should definitely grab the latest release. Not sure how often to do that (every 6 months?). > > * Conda: this sounds like a nice way to get slycot without a FORTRAN compiler. I just updated my laptop and remembered yet again that it is a bit of a hassle to deal with installing gfortran on the Mac. Having a binary release would be a big help. Though I still think we should move away from SLICOT over time when we can. > > * Versioning: the new scheme sounds like a huge improvement. I may grab that one for use in some other projects! > > * Website: given that we have almost nothing now, trying out the github pages sounds like a great idea. At some point this might trigger a move away from SourceForge, since from James Goppert’s github page it looks like you get get tar files, etc in a very simple way. > > Would love to hear comments from others on the list. > > -richard > >> On 3 Apr 15, at 08:27, Clancy Rowley <cwr...@pr...> wrote: >> >> Hi Richard, >> >> A few things related to python-control: >> >> 1) PyPI. There is a lingering issue (#19) about uploading to PyPI. The last comment on there (from you, back in November) says that the next step is to upload v0.6.5 to pypi. However, a version called 0.6.6 is already on PyPI. Apparently James Goppert had uploaded this way back in September, in response to another issue (#37). So my question is, what would you like to have happen on PyPI at this point? >> >> My recommendation is to upload a new version called 0.6.7, with the current 'master' plus some changes I'm working on now (see #3 and #4 below). I'm happy to do this myself if you agree. >> >> 2) Releases. More generally, it would be good to talk about how often to release a new version. My own view is that we might as well make "patch" releases (incrementing the third number) often, maybe even every time a nontrivial pull request comes in (although probably not more often than once every couple of weeks). I don't see any disadvantages of that, and it would enable us to react more nimbly to problems (like issue #37 mentioned above). Your thoughts? >> >> 3) conda. I've been playing with the "conda recipes" I mentioned in my email to you a couple of weeks ago, and I've got them mostly working. I've got precompiled binaries for slycot up on binstar.org, at least for linux. I am having some trouble getting it to work on mac, but I hope to have that figured out soon. That will make it much easier for users to install slycot: they'd just need to say >> conda install -c https://conda.binstar.org/cwrowley slycot >> and would not need a fortran compiler. Already this is a big improvement for the Travis CI builds, since they don't need to compile all the SLICOT stuff every time (which was the biggest bottleneck). I've got that working in my fork, and I'll send a pull request over soon once I clean things up. >> >> 4) Version numbering. While I was doing the conda stuff in my own fork, I simplified/streamlined the way the version numbers are specified. The issue is that I didn't want to have to manually specify version numbers in several different places (e.g., in setup.py for PyPI, and in the conda "recipe", and in the git repo). This has led to confusion in the past (see #1 above). So the way I am doing this now is that the version number is specified in only one place, as a tag in the git repo. So to specify a new version, you simply tag it in the repo as >> git tag -a 0.6.7 >> Then the version number is automatically obtained (from "git describe") when uploading to PyPI or to conda/binstar. Another advantage of that is that a release is then automatically added to github, and is guaranteed to be consistent with what is on PyPI and conda. Does that sound okay to you? (I've been careful to make sure the version numbers conform to PEP 440, even for development versions.) >> >> 5) Website. I'd like to try making a github pages website, as described in issue #34. Any objections? >> >> -clancy >> >> >> ------------------------------------------------------------------------------ >> Dive into the World of Parallel Programming The Go Parallel Website, sponsored >> by Intel and developed in partnership with Slashdot Media, is your hub for all >> things parallel software development, from weekly thought leadership blogs to >> news, videos, case studies, tutorials and more. Take a look and join the >> conversation now. http://goparallel.sourceforge.net/ >> _______________________________________________ >> python-control-developers mailing list >> pyt...@li... >> https://lists.sourceforge.net/lists/listinfo/python-control-developers > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > python-control-developers mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-developers > |
|
From: Richard M. <mu...@cd...> - 2015-04-03 16:07:02
|
Thanks for picking up all of these threads, Clancy! * PyPI: I think we definitely want to get python-control working on PyPI. Tagging the current version as 0.6.7 to make sure we don’t get a version naming clash seems like a good approach. * Releases: updating the patch number (third digit) and making relatively frequent release seems like a good way to go. We can update the minor number when there are significant enough changes (or enough patches) that we think people should definitely grab the latest release. Not sure how often to do that (every 6 months?). * Conda: this sounds like a nice way to get slycot without a FORTRAN compiler. I just updated my laptop and remembered yet again that it is a bit of a hassle to deal with installing gfortran on the Mac. Having a binary release would be a big help. Though I still think we should move away from SLICOT over time when we can. * Versioning: the new scheme sounds like a huge improvement. I may grab that one for use in some other projects! * Website: given that we have almost nothing now, trying out the github pages sounds like a great idea. At some point this might trigger a move away from SourceForge, since from James Goppert’s github page it looks like you get get tar files, etc in a very simple way. Would love to hear comments from others on the list. -richard > On 3 Apr 15, at 08:27, Clancy Rowley <cwr...@pr...> wrote: > > Hi Richard, > > A few things related to python-control: > > 1) PyPI. There is a lingering issue (#19) about uploading to PyPI. The last comment on there (from you, back in November) says that the next step is to upload v0.6.5 to pypi. However, a version called 0.6.6 is already on PyPI. Apparently James Goppert had uploaded this way back in September, in response to another issue (#37). So my question is, what would you like to have happen on PyPI at this point? > > My recommendation is to upload a new version called 0.6.7, with the current 'master' plus some changes I'm working on now (see #3 and #4 below). I'm happy to do this myself if you agree. > > 2) Releases. More generally, it would be good to talk about how often to release a new version. My own view is that we might as well make "patch" releases (incrementing the third number) often, maybe even every time a nontrivial pull request comes in (although probably not more often than once every couple of weeks). I don't see any disadvantages of that, and it would enable us to react more nimbly to problems (like issue #37 mentioned above). Your thoughts? > > 3) conda. I've been playing with the "conda recipes" I mentioned in my email to you a couple of weeks ago, and I've got them mostly working. I've got precompiled binaries for slycot up on binstar.org, at least for linux. I am having some trouble getting it to work on mac, but I hope to have that figured out soon. That will make it much easier for users to install slycot: they'd just need to say > conda install -c https://conda.binstar.org/cwrowley slycot > and would not need a fortran compiler. Already this is a big improvement for the Travis CI builds, since they don't need to compile all the SLICOT stuff every time (which was the biggest bottleneck). I've got that working in my fork, and I'll send a pull request over soon once I clean things up. > > 4) Version numbering. While I was doing the conda stuff in my own fork, I simplified/streamlined the way the version numbers are specified. The issue is that I didn't want to have to manually specify version numbers in several different places (e.g., in setup.py for PyPI, and in the conda "recipe", and in the git repo). This has led to confusion in the past (see #1 above). So the way I am doing this now is that the version number is specified in only one place, as a tag in the git repo. So to specify a new version, you simply tag it in the repo as > git tag -a 0.6.7 > Then the version number is automatically obtained (from "git describe") when uploading to PyPI or to conda/binstar. Another advantage of that is that a release is then automatically added to github, and is guaranteed to be consistent with what is on PyPI and conda. Does that sound okay to you? (I've been careful to make sure the version numbers conform to PEP 440, even for development versions.) > > 5) Website. I'd like to try making a github pages website, as described in issue #34. Any objections? > > -clancy > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > python-control-developers mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-developers |
|
From: Clancy R. <cwr...@pr...> - 2015-04-03 15:27:55
|
Hi Richard, A few things related to python-control: 1) PyPI. There is a lingering issue (#19) about uploading to PyPI. The last comment on there (from you, back in November) says that the next step is to upload v0.6.5 to pypi. However, a version called 0.6.6 is already on PyPI. Apparently James Goppert had uploaded this way back in September, in response to another issue (#37). So my question is, what would you like to have happen on PyPI at this point? My recommendation is to upload a new version called 0.6.7, with the current 'master' plus some changes I'm working on now (see #3 and #4 below). I'm happy to do this myself if you agree. 2) Releases. More generally, it would be good to talk about how often to release a new version. My own view is that we might as well make "patch" releases (incrementing the third number) often, maybe even every time a nontrivial pull request comes in (although probably not more often than once every couple of weeks). I don't see any disadvantages of that, and it would enable us to react more nimbly to problems (like issue #37 mentioned above). Your thoughts? 3) conda. I've been playing with the "conda recipes" I mentioned in my email to you a couple of weeks ago, and I've got them mostly working. I've got precompiled binaries for slycot up on binstar.org, at least for linux. I am having some trouble getting it to work on mac, but I hope to have that figured out soon. That will make it much easier for users to install slycot: they'd just need to say conda install -c https://conda.binstar.org/cwrowley slycot and would not need a fortran compiler. Already this is a big improvement for the Travis CI builds, since they don't need to compile all the SLICOT stuff every time (which was the biggest bottleneck). I've got that working in my fork, and I'll send a pull request over soon once I clean things up. 4) Version numbering. While I was doing the conda stuff in my own fork, I simplified/streamlined the way the version numbers are specified. The issue is that I didn't want to have to manually specify version numbers in several different places (e.g., in setup.py for PyPI, and in the conda "recipe", and in the git repo). This has led to confusion in the past (see #1 above). So the way I am doing this now is that the version number is specified in only one place, as a tag in the git repo. So to specify a new version, you simply tag it in the repo as git tag -a 0.6.7 Then the version number is automatically obtained (from "git describe") when uploading to PyPI or to conda/binstar. Another advantage of that is that a release is then automatically added to github, and is guaranteed to be consistent with what is on PyPI and conda. Does that sound okay to you? (I've been careful to make sure the version numbers conform to PEP 440, even for development versions.) 5) Website. I'd like to try making a github pages website, as described in issue #34. Any objections? -clancy |
|
From: murrayrm <mu...@cd...> - 2015-03-29 19:36:46
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control |
|
From: Richard M. <mu...@cd...> - 2015-03-29 19:36:36
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: 1a470fa687bbc4240e675d1292644ac81e11fc79 https://github.com/python-control/python-control/commit/1a470fa687bbc4240e675d1292644ac81e11fc79 Author: Clancy Rowley <cwr...@pr...> Date: 2014-11-30 (Sun, 30 Nov 2014) Changed paths: A doc-requirements.txt Log Message: ----------- Add requirements file for readthedocs.org Commit: d563d98638d548399e75044d4d6b52519d7c6007 https://github.com/python-control/python-control/commit/d563d98638d548399e75044d4d6b52519d7c6007 Author: Clancy Rowley <cwr...@pr...> Date: 2014-11-30 (Sun, 30 Nov 2014) Changed paths: M doc/class_strings.rst M doc/conf.py M doc/creation.rst M doc/freqplot.rst M doc/matlab_strings.rst M doc/timeresp.rst Log Message: ----------- Fix dependencies and mocks in sphinx documentation There was an error in the way the sphinx documentation was configured that prevented it from building correctly, now that absolute imports (e.g., "from control import lti") have been changed to relative imports (e.g., "from . import lti"). In particular, the directory "root/control" should not be added to sys.path. Because this directory contains an __init__.py file, it is a Python package, and packages should never be added to the path, or lots of strange things happen, particularly with relative imports. Instead, the directory "root" should be added to the path. This change was made in the conf.py file. Also, the mocks for modules were fixed so that the documentation builds even if numpy, scipy, etc are not installed. Conflicts: doc/conf.py Commit: fa2fd078af4d06ee32c5d24a98f945de8cd954aa https://github.com/python-control/python-control/commit/fa2fd078af4d06ee32c5d24a98f945de8cd954aa Author: Clancy Rowley <cwr...@pr...> Date: 2014-11-30 (Sun, 30 Nov 2014) Changed paths: M src/ctrlutil.py Log Message: ----------- Simplify dependencies in ctrlutil Commit: fb5ebf6296079229705792cc508ad23d45e326aa https://github.com/python-control/python-control/commit/fb5ebf6296079229705792cc508ad23d45e326aa Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: A .gitignore A .travis.yml M ChangeLog M MANIFEST.in R README A README.rst A control/__init__.py A control/bdalg.py A control/bench/time_freqresp.py A control/canonical.py A control/config.py A control/ctrlutil.py A control/delay.py A control/dtime.py A control/exception.py A control/frdata.py A control/freqplot.py A control/lti.py A control/margins.py A control/mateqn.py A control/matlab.py A control/modelsimp.py A control/nichols.py A control/phaseplot.py A control/pzmap.py A control/rlocus.py A control/robust.py A control/setup.py A control/statefbk.py A control/statesp.py A control/tests/__init__.py A control/tests/bdalg_test.py A control/tests/convert_test.py A control/tests/discrete_test.py A control/tests/frd_test.py A control/tests/freqresp.py A control/tests/margin_test.py A control/tests/mateqn_test.py A control/tests/matlab_test.py A control/tests/minreal_test.py A control/tests/modelsimp_test.py A control/tests/nichols_test.py A control/tests/phaseplot_test.py A control/tests/rlocus_test.py A control/tests/run_all.py A control/tests/slycot_convert_test.py A control/tests/statefbk_test.py A control/tests/statesp_test.py A control/tests/test_control_matlab.py A control/tests/timeresp_test.py A control/tests/xferfcn_test.py A control/timeresp.py A control/xferfcn.py M doc/conf.py M external/yottalab.py A runtests.py M setup.py R src/__init__.py R src/bdalg.py R src/canonical.py R src/config.py R src/ctrlutil.py R src/delay.py R src/dtime.py R src/exception.py R src/frdata.py R src/freqplot.py R src/lti.py R src/margins.py R src/mateqn.py R src/matlab.py R src/modelsimp.py R src/nichols.py R src/phaseplot.py R src/pzmap.py R src/rlocus.py R src/robust.py R src/statefbk.py R src/statesp.py R src/timeresp.py R src/xferfcn.py R tests/bdalg_test.py R tests/convert_test.py R tests/discrete_test.py R tests/frd_test.py R tests/freqresp.py R tests/margin_test.py R tests/mateqn_test.py R tests/matlab_test.py R tests/minreal_test.py R tests/modelsimp_test.py R tests/nichols_test.py R tests/phaseplot_test.py R tests/rlocus_test.py R tests/slycot_convert_test.py R tests/statefbk_test.py R tests/statesp_test.py R tests/test_all.py R tests/test_control_matlab.py R tests/timeresp_test.py R tests/xferfcn_test.py Log Message: ----------- Merge branch 'master' into improve-docs Conflicts: control/ctrlutil.py Commit: 60aba3ab39cef2ac11c4bc08c2b08a9abd084205 https://github.com/python-control/python-control/commit/60aba3ab39cef2ac11c4bc08c2b08a9abd084205 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M control/freqplot.py M control/mateqn.py M control/phaseplot.py Log Message: ----------- Change comparisons to None Comparisons like if A == None: give a FutureWarning: comparison to `None` will result in an elementwise object comparison in the future. This resuits in a bunch of warnings when running nosetests, so this commit changes these to if A is None: Commit: f39dffb0257e614efbd7f962ea9f44f6f0f15fe2 https://github.com/python-control/python-control/commit/f39dffb0257e614efbd7f962ea9f44f6f0f15fe2 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M control/__init__.py Log Message: ----------- Include version information in package Commit: 8fcb3af1ece45c0266914a27cfb4d030d22cee02 https://github.com/python-control/python-control/commit/8fcb3af1ece45c0266914a27cfb4d030d22cee02 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M doc/conf.py Log Message: ----------- Automatically update version number in documentation Commit: 3b2e61485bae3421851527093c967594982b98f9 https://github.com/python-control/python-control/commit/3b2e61485bae3421851527093c967594982b98f9 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M control/phaseplot.py Log Message: ----------- Fix typo in phaseplot docs Note that if you don't escape func(x, t, *parms) as `func(x, t, *parms)`, then Sphinx interprets the * as *emphasis*. Commit: 080420346962dd6fd2dfe5b870b35b16fcbfc57d https://github.com/python-control/python-control/commit/080420346962dd6fd2dfe5b870b35b16fcbfc57d Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M control/mateqn.py Log Message: ----------- Sphinxify equations in mateqn docstrings Commit: 6fcae2dde6311a41dafdc647ba4fddbf3e9675dc https://github.com/python-control/python-control/commit/6fcae2dde6311a41dafdc647ba4fddbf3e9675dc Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M setup.py Log Message: ----------- Add numpy as a requirement Commit: de69313a7341e585e990169fb79637511d7364cd https://github.com/python-control/python-control/commit/de69313a7341e585e990169fb79637511d7364cd Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-01 (Mon, 01 Dec 2014) Changed paths: M setup.py Log Message: ----------- Fix setup.py to work with runtests.py Previously, at least on my machine (Mac with Anaconda), running runtests.py gave a build error when setup.py tried to build a local copy of the package. It turns out this was because we were importing setuptools, which caused problems, because the rest of the setup.py script (which was taken from numpy) assumes we are using the numpy version of setup(), in numpy.distutils.core This commit removes the import of setuptools and makes setup.py almost identical to that used in numpy. Commit: 23e9f737b462f167f4103b1a9cc99e6818452a0f https://github.com/python-control/python-control/commit/23e9f737b462f167f4103b1a9cc99e6818452a0f Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-02 (Tue, 02 Dec 2014) Changed paths: M setup.py Log Message: ----------- Fix setup.py test Use setuptools instead of numpy.distutils for "setup.py test" Note: this is apparently a bug in the version of setup.py included with numpy ("setup.py test" doesn't work for numpy). Commit: 731f9bbeab71d35e81c33ca8ff1a323f6ef6c98c https://github.com/python-control/python-control/commit/731f9bbeab71d35e81c33ca8ff1a323f6ef6c98c Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-02 (Tue, 02 Dec 2014) Changed paths: M .travis.yml Log Message: ----------- Change matplotlib version in travis build to address 3.2 build issue The travis build hangs when installing matplotlib for python 3.2 (but not 2.7 and 3.3). This is apparently a documented issue with matplotlib: see https://github.com/matplotlib/matplotlib/issues/3443 https://github.com/matplotlib/matplotlib/pull/3741 Commit: d091aa579ae63552bbc0b1f16c3fd37727c69c52 https://github.com/python-control/python-control/commit/d091aa579ae63552bbc0b1f16c3fd37727c69c52 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-02 (Tue, 02 Dec 2014) Changed paths: M .travis.yml Log Message: ----------- Include system site-packages in travis build for py2.7 Commit: e2b37ad29c45694e9e9efb39888d56e2f2d10db0 https://github.com/python-control/python-control/commit/e2b37ad29c45694e9e9efb39888d56e2f2d10db0 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M .travis.yml Log Message: ----------- Use miniconda for Travis build This dramatically speeds up the installation of numpy, scipy, and matplotlib in the Travis build. Note that python 3.2 is not available in Anaconda, however. Commit: add59c3946b3b6a67cbcf9ab68a052bd168a9cb6 https://github.com/python-control/python-control/commit/add59c3946b3b6a67cbcf9ab68a052bd168a9cb6 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: A .coveragerc M .travis.yml Log Message: ----------- Add .coveragerc file to fine tune coverage results Commit: 32668d3bfad9990ba638dcd6d22ad9b4a86abbc3 https://github.com/python-control/python-control/commit/32668d3bfad9990ba638dcd6d22ad9b4a86abbc3 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M control/freqplot.py M control/mateqn.py Log Message: ----------- Merge branch 'master' into improve-docs Conflicts: control/mateqn.py Commit: 5ac5100c8ba8e0b2b58ac54e3ad158b5e11bb7b6 https://github.com/python-control/python-control/commit/5ac5100c8ba8e0b2b58ac54e3ad158b5e11bb7b6 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M .travis.yml Log Message: ----------- Make Travis build consistent with anaconda docs http://conda.pydata.org/docs/travis.html Commit: f90798eaf2c57f307e99dd706398d6e396506959 https://github.com/python-control/python-control/commit/f90798eaf2c57f307e99dd706398d6e396506959 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-22 (Sun, 22 Mar 2015) Changed paths: M .gitignore Log Message: ----------- Ignore generated documentation Commit: d7d278ba6072fce1ef28402b7580ffa698424f76 https://github.com/python-control/python-control/commit/d7d278ba6072fce1ef28402b7580ffa698424f76 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-22 (Sun, 22 Mar 2015) Changed paths: M control/tests/timeresp_test.py M control/timeresp.py Log Message: ----------- Speed up forced_response (lsim) Fixes #48 The old algorithm called a general-purpose ODE integrator at each timestep, and this could be extremely slow (hundreds of times slower than scipy.signal.lsim). This new algorithm evaluates the matrix exponential once, and uses it to advance the simulation at each step. Importantly, the old algorithm would work for variable timesteps, but the new version assumes a fixed timestep (as does Matlab's lsim). This is the usual case, and it is the price one pays for increased speed. Note that this algorithm is the same idea as the algorithm used in scipy.signal.lsim, but the scipy version requires inverting the `A` matrix, and thus does not work if the system has a pole at the origin. The algorithm used here works even if there is a pole at the origin. This commit also adds a test for this case (the double integrator). Commit: 4f6165a0c8412d92a5f23931a6fb322fb6ff8a4f https://github.com/python-control/python-control/commit/4f6165a0c8412d92a5f23931a6fb322fb6ff8a4f Author: Richard Murray <mu...@cd...> Date: 2015-03-29 (Sun, 29 Mar 2015) Changed paths: M .gitignore M control/tests/timeresp_test.py M control/timeresp.py Log Message: ----------- Merge pull request #51 from cwrowley/lsim Speed up forced_response/lsim Commit: 86ebb1cdd3c3c1546356deea1f1e137ec6f1f728 https://github.com/python-control/python-control/commit/86ebb1cdd3c3c1546356deea1f1e137ec6f1f728 Author: Richard Murray <mu...@cd...> Date: 2015-03-29 (Sun, 29 Mar 2015) Changed paths: A .coveragerc M .gitignore M .travis.yml M control/__init__.py M control/ctrlutil.py M control/freqplot.py M control/mateqn.py M control/phaseplot.py M control/tests/timeresp_test.py M control/timeresp.py A doc-requirements.txt M doc/class_strings.rst M doc/conf.py M doc/creation.rst M doc/freqplot.rst M doc/matlab_strings.rst M doc/timeresp.rst M setup.py Log Message: ----------- Merge pull request #41 from python-control/improve-docs Improve docs Compare: https://github.com/python-control/python-control/compare/770c4d740b27...86ebb1cdd3c3 |
|
From: Richard M. <mu...@cd...> - 2015-03-29 17:18:52
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: f90798eaf2c57f307e99dd706398d6e396506959 https://github.com/python-control/python-control/commit/f90798eaf2c57f307e99dd706398d6e396506959 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-22 (Sun, 22 Mar 2015) Changed paths: M .gitignore Log Message: ----------- Ignore generated documentation Commit: d7d278ba6072fce1ef28402b7580ffa698424f76 https://github.com/python-control/python-control/commit/d7d278ba6072fce1ef28402b7580ffa698424f76 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-22 (Sun, 22 Mar 2015) Changed paths: M control/tests/timeresp_test.py M control/timeresp.py Log Message: ----------- Speed up forced_response (lsim) Fixes #48 The old algorithm called a general-purpose ODE integrator at each timestep, and this could be extremely slow (hundreds of times slower than scipy.signal.lsim). This new algorithm evaluates the matrix exponential once, and uses it to advance the simulation at each step. Importantly, the old algorithm would work for variable timesteps, but the new version assumes a fixed timestep (as does Matlab's lsim). This is the usual case, and it is the price one pays for increased speed. Note that this algorithm is the same idea as the algorithm used in scipy.signal.lsim, but the scipy version requires inverting the `A` matrix, and thus does not work if the system has a pole at the origin. The algorithm used here works even if there is a pole at the origin. This commit also adds a test for this case (the double integrator). Commit: 4f6165a0c8412d92a5f23931a6fb322fb6ff8a4f https://github.com/python-control/python-control/commit/4f6165a0c8412d92a5f23931a6fb322fb6ff8a4f Author: Richard Murray <mu...@cd...> Date: 2015-03-29 (Sun, 29 Mar 2015) Changed paths: M .gitignore M control/tests/timeresp_test.py M control/timeresp.py Log Message: ----------- Merge pull request #51 from cwrowley/lsim Speed up forced_response/lsim Compare: https://github.com/python-control/python-control/compare/5ac5100c8ba8...4f6165a0c841 |
|
From: Clancy R. <cwr...@pr...> - 2015-03-19 20:22:20
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: 5ac5100c8ba8e0b2b58ac54e3ad158b5e11bb7b6 https://github.com/python-control/python-control/commit/5ac5100c8ba8e0b2b58ac54e3ad158b5e11bb7b6 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M .travis.yml Log Message: ----------- Make Travis build consistent with anaconda docs http://conda.pydata.org/docs/travis.html |
|
From: Clancy R. <cwr...@pr...> - 2015-03-19 15:41:12
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: aa243d2e1a4467672ff3cdd11c19b1e459f316ae https://github.com/python-control/python-control/commit/aa243d2e1a4467672ff3cdd11c19b1e459f316ae Author: John Stowers <joh...@gm...> Date: 2015-02-02 (Mon, 02 Feb 2015) Changed paths: M control/freqplot.py Log Message: ----------- Fix bode plot with Hz and multiple systems Otherwise each subsequent system as plotted against a difference omega range Commit: 38d71254c483020c56be9f31972a7f958928c772 https://github.com/python-control/python-control/commit/38d71254c483020c56be9f31972a7f958928c772 Author: Richard Murray <mu...@cd...> Date: 2015-02-07 (Sat, 07 Feb 2015) Changed paths: M control/freqplot.py Log Message: ----------- Merge pull request #44 from nzjrs/master Fix bode plot with Hz and multiple systems Commit: d0bfec769cf66b9f0ec52858bf30308b6e72ec32 https://github.com/python-control/python-control/commit/d0bfec769cf66b9f0ec52858bf30308b6e72ec32 Author: Rory Yorke <ror...@gm...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Documentation fix: document R is None behaviour For both standard and generalized case, the behaviour of care() w.r.t. R is the same. Without this change, it's not clear that the care(A,B,Q,R) is a valid call form. Commit: 065b2cf9cd55db2c7ed7a1c656c7ed20706fd695 https://github.com/python-control/python-control/commit/065b2cf9cd55db2c7ed7a1c656c7ed20706fd695 Author: Rory Yorke <ror...@gm...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Exception description fix: continuous-time, not discrete-time. Commit: 770c4d740b27c943c84a3aff6c4375948bb31a93 https://github.com/python-control/python-control/commit/770c4d740b27c943c84a3aff6c4375948bb31a93 Author: Richard Murray <mu...@cd...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Merge pull request #47 from roryyorke/care-doc-fix care doc fix Commit: 32668d3bfad9990ba638dcd6d22ad9b4a86abbc3 https://github.com/python-control/python-control/commit/32668d3bfad9990ba638dcd6d22ad9b4a86abbc3 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M control/freqplot.py M control/mateqn.py Log Message: ----------- Merge branch 'master' into improve-docs Conflicts: control/mateqn.py Compare: https://github.com/python-control/python-control/compare/add59c3946b3...32668d3bfad9 |
|
From: Clancy R. <cwr...@pr...> - 2015-03-19 15:00:54
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: e2b37ad29c45694e9e9efb39888d56e2f2d10db0 https://github.com/python-control/python-control/commit/e2b37ad29c45694e9e9efb39888d56e2f2d10db0 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: M .travis.yml Log Message: ----------- Use miniconda for Travis build This dramatically speeds up the installation of numpy, scipy, and matplotlib in the Travis build. Note that python 3.2 is not available in Anaconda, however. Commit: add59c3946b3b6a67cbcf9ab68a052bd168a9cb6 https://github.com/python-control/python-control/commit/add59c3946b3b6a67cbcf9ab68a052bd168a9cb6 Author: Clancy Rowley <cwr...@pr...> Date: 2015-03-19 (Thu, 19 Mar 2015) Changed paths: A .coveragerc M .travis.yml Log Message: ----------- Add .coveragerc file to fine tune coverage results Compare: https://github.com/python-control/python-control/compare/d091aa579ae6...add59c3946b3 |
|
From: Richard M. <mu...@cd...> - 2015-02-15 21:57:01
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: d0bfec769cf66b9f0ec52858bf30308b6e72ec32 https://github.com/python-control/python-control/commit/d0bfec769cf66b9f0ec52858bf30308b6e72ec32 Author: Rory Yorke <ror...@gm...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Documentation fix: document R is None behaviour For both standard and generalized case, the behaviour of care() w.r.t. R is the same. Without this change, it's not clear that the care(A,B,Q,R) is a valid call form. Commit: 065b2cf9cd55db2c7ed7a1c656c7ed20706fd695 https://github.com/python-control/python-control/commit/065b2cf9cd55db2c7ed7a1c656c7ed20706fd695 Author: Rory Yorke <ror...@gm...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Exception description fix: continuous-time, not discrete-time. Commit: 770c4d740b27c943c84a3aff6c4375948bb31a93 https://github.com/python-control/python-control/commit/770c4d740b27c943c84a3aff6c4375948bb31a93 Author: Richard Murray <mu...@cd...> Date: 2015-02-15 (Sun, 15 Feb 2015) Changed paths: M control/mateqn.py Log Message: ----------- Merge pull request #47 from roryyorke/care-doc-fix care doc fix Compare: https://github.com/python-control/python-control/compare/38d71254c483...770c4d740b27 |
|
From: SUPSI <rob...@su...> - 2015-02-07 21:08:29
|
Thanks Richard I'll try to find the algorithm used in other CACSD environments to automatically set the k vector. Best regards Roberto On 02/07/2015 08:01 PM, Richard Murray wrote: > Thanks for the suggestions, Roberto. I've created two issues on github to track these: > > https://github.com/python-control/python-control/issues/45 > https://github.com/python-control/python-control/issues/46 > > -richard > >> On 7 Feb 2015, at 0:43 , SUPSI <rob...@su...> wrote: >> >> Hi >> >> I've been requested by the "Schweizerische Gesellschaft fuer Automatik" >> to write a tutorial about python for control system for all the Swiss >> university professors. >> >> By writing some examples for the tutorial I've found some little problems: >> >> Here are the firsts: >> >> 1) "rlocus" creates automatically a vector with the k values, if not >> provided. "root_locus" should have the possibility to pass kvect=None, >> but it is not accepted (-> error). It can be simply solved by adding the >> same lines as in rlocus, before finding a better algorithm to get the k >> values >> >> #! TODO: update with a smart calculation of the gains using sys >> poles/zeros >> if klist == None: >> klist = logspace(-3, 3) >> >> 2) "bode" and "bode_plot": in my opinion the flag dB=True should be the >> default choice (but this is only my opinion...) >> >> Best regards >> >> Roberto >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Dive into the World of Parallel Programming. The Go Parallel Website, >> sponsored by Intel and developed in partnership with Slashdot Media, is your >> hub for all things parallel software development, from weekly thought >> leadership blogs to news, videos, case studies, tutorials and more. Take a >> look and join the conversation now. http://goparallel.sourceforge.net/ >> _______________________________________________ >> python-control-developers mailing list >> pyt...@li... >> https://lists.sourceforge.net/lists/listinfo/python-control-developers |
|
From: Richard M. <mu...@cd...> - 2015-02-07 20:19:49
|
Branch: refs/heads/master Home: https://github.com/python-control/python-control Commit: aa243d2e1a4467672ff3cdd11c19b1e459f316ae https://github.com/python-control/python-control/commit/aa243d2e1a4467672ff3cdd11c19b1e459f316ae Author: John Stowers <joh...@gm...> Date: 2015-02-02 (Mon, 02 Feb 2015) Changed paths: M control/freqplot.py Log Message: ----------- Fix bode plot with Hz and multiple systems Otherwise each subsequent system as plotted against a difference omega range Commit: 38d71254c483020c56be9f31972a7f958928c772 https://github.com/python-control/python-control/commit/38d71254c483020c56be9f31972a7f958928c772 Author: Richard Murray <mu...@cd...> Date: 2015-02-07 (Sat, 07 Feb 2015) Changed paths: M control/freqplot.py Log Message: ----------- Merge pull request #44 from nzjrs/master Fix bode plot with Hz and multiple systems Compare: https://github.com/python-control/python-control/compare/90133e8ec408...38d71254c483 |
|
From: Richard M. <mu...@cd...> - 2015-02-07 19:01:13
|
Thanks for the suggestions, Roberto. I've created two issues on github to track these: https://github.com/python-control/python-control/issues/45 https://github.com/python-control/python-control/issues/46 -richard > On 7 Feb 2015, at 0:43 , SUPSI <rob...@su...> wrote: > > Hi > > I've been requested by the "Schweizerische Gesellschaft fuer Automatik" > to write a tutorial about python for control system for all the Swiss > university professors. > > By writing some examples for the tutorial I've found some little problems: > > Here are the firsts: > > 1) "rlocus" creates automatically a vector with the k values, if not > provided. "root_locus" should have the possibility to pass kvect=None, > but it is not accepted (-> error). It can be simply solved by adding the > same lines as in rlocus, before finding a better algorithm to get the k > values > > #! TODO: update with a smart calculation of the gains using sys > poles/zeros > if klist == None: > klist = logspace(-3, 3) > > 2) "bode" and "bode_plot": in my opinion the flag dB=True should be the > default choice (but this is only my opinion...) > > Best regards > > Roberto > > > > > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming. The Go Parallel Website, > sponsored by Intel and developed in partnership with Slashdot Media, is your > hub for all things parallel software development, from weekly thought > leadership blogs to news, videos, case studies, tutorials and more. Take a > look and join the conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > python-control-developers mailing list > pyt...@li... > https://lists.sourceforge.net/lists/listinfo/python-control-developers |
|
From: SUPSI <rob...@su...> - 2015-02-07 09:43:24
|
Hi
I've been requested by the "Schweizerische Gesellschaft fuer Automatik"
to write a tutorial about python for control system for all the Swiss
university professors.
By writing some examples for the tutorial I've found some little problems:
Here are the firsts:
1) "rlocus" creates automatically a vector with the k values, if not
provided. "root_locus" should have the possibility to pass kvect=None,
but it is not accepted (-> error). It can be simply solved by adding the
same lines as in rlocus, before finding a better algorithm to get the k
values
#! TODO: update with a smart calculation of the gains using sys
poles/zeros
if klist == None:
klist = logspace(-3, 3)
2) "bode" and "bode_plot": in my opinion the flag dB=True should be the
default choice (but this is only my opinion...)
Best regards
Roberto
|
|
From: Clancy R. <cwr...@pr...> - 2014-12-02 12:47:51
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: d091aa579ae63552bbc0b1f16c3fd37727c69c52 https://github.com/python-control/python-control/commit/d091aa579ae63552bbc0b1f16c3fd37727c69c52 Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-02 (Tue, 02 Dec 2014) Changed paths: M .travis.yml Log Message: ----------- Include system site-packages in travis build for py2.7 |
|
From: Clancy R. <cwr...@pr...> - 2014-12-02 11:28:11
|
Branch: refs/heads/improve-docs Home: https://github.com/python-control/python-control Commit: 731f9bbeab71d35e81c33ca8ff1a323f6ef6c98c https://github.com/python-control/python-control/commit/731f9bbeab71d35e81c33ca8ff1a323f6ef6c98c Author: Clancy Rowley <cwr...@pr...> Date: 2014-12-02 (Tue, 02 Dec 2014) Changed paths: M .travis.yml Log Message: ----------- Change matplotlib version in travis build to address 3.2 build issue The travis build hangs when installing matplotlib for python 3.2 (but not 2.7 and 3.3). This is apparently a documented issue with matplotlib: see https://github.com/matplotlib/matplotlib/issues/3443 https://github.com/matplotlib/matplotlib/pull/3741 |