2023-04-28 16:37:45 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.13.0 IPython 8.13 ------------ As usual for the end of the month, minor release of IPython. This release is significant in that it not only has a number of bugfixes, but also drop support for Python 3.8 as per NEP 29 (:ghpull:`14023`). All the critical bugfixes have been backported onto the 8.12.1 release (see below). In addition to that went into 8.12.1 you'll find: - Pretty reprensentation for ``Counter`` has been fixed to match the Python one and be in decreasing order. :ghpull:`14032` - Module completion is better when jedi is disabled :ghpull:`14029`. - Improvment of ``%%bash`` magic that would get stuck :ghpull:`14019` |
2023-04-03 19:33:39 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.12.0 IPython 8.12 ------------ Hopefully slightly early release for IPython 8.12. Last Thursday of the month, even if I guess it's likely already Friday somewhere in the pacific ocean. A number of PRs and bug fixes this month with close to 20 PRs merged ! The IPython repo reached :ghpull:``14000`` !! Actually the PR that create those \ exact release note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd love to have more time to close issues and Pull Requests. Let's note that in less than 2 month JupyterCon is back, in Paris please visit `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you there. Packagers should take note that ``typing_extension`` is now a mandatory dependency for Python versions ``<3.10``. Let's note also that according to `NEP29 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon \ time to stop support for Python 3.8 that will be release more than 3 and 1/2 years ago:: On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019) Thus I am likely to stop advertising support for Python 3.8 in the next release at the end of April. Here are some miscellaneous updates of interest: - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6. - :ghpull:`13960` fixes the %debug magic command to give access to the local scope. - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that there are still some issues with the fast traceback code, and I a, likely to fix and tweak behavior. - :ghpull:`13973` We are slowly migrating IPython internals to use proper type objects/dataclasses instead of dictionaries to allow static typing checks. These are technically public API and could lead to breakage, so please let us know if that's the case and I'll mitigate. - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and shortcut configurability. As usual you can find the full list of PRs on GitHub under `the 8.12 milestone <https://github.com/ipython/ipython/milestone/114?closed=1>`__. We want to thank the D.E. Shaw group for requesting and sponsoring the work on the following big feature. We had productive discussions on how to best expose this feature Dynamic documentation dispatch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We are experimenting with dynamic documentation dispatch for object attribute. See :ghissue:`13860`. The goal is to allow object to define documentation for their attributes, properties, even when those are dynamically defined with `__getattr__`. In particular when those objects are base types it can be useful to show the documentation .. code-block:: ipython In [1]: class User: ...: ...: __custom_documentations__ = { ...: "first": "The first name of the user.", ...: "last": "The last name of the user.", ...: } ...: ...: first:str ...: last:str ...: ...: def __init__(self, first, last): ...: self.first = first ...: self.last = last ...: ...: @property ...: def full(self): ...: """`self.first` and `self.last` joined by a \ space.""" ...: return self.first + " " + self.last ...: ...: ...: user = Person('Jane', 'Doe') In [2]: user.first? Type: str String form: Jane Length: 4 Docstring: the first name of a the person object, a str Class docstring: .... In [3]: user.last? Type: str String form: Doe Length: 3 Docstring: the last name, also a str ... We can see here the symmetry with IPython looking for the docstring on the properties: .. code-block:: ipython In [4]: user.full? HERE Type: property String form: <property object at 0x102bb15d0> Docstring: first and last join by a space Note that while in the above example we use a static dictionary, libraries may decide to use a custom object that define ``__getitem__``, we caution against using objects that would trigger computation to show documentation, but it is sometime preferable for highly dynamic code that for example export ans API as object. |
2023-03-02 13:47:08 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: py-ipython: updated to 8.11.0 IPython 8.11 ------------ Back on almost regular monthly schedule for IPython with end-of-month really-late-Friday release to make sure some bugs are properly fixed. Small addition of with a few new features, bugfix and UX improvements. This is a non-exhaustive list, but among other you will find: Faster Traceback Highlighting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Resurrection of pre-IPython-8 traceback highlighting code. Really long and complicated files were slow to highlight in traceback with IPython 8 despite upstream improvement that make many case better. Therefore starting with IPython 8.11 when one of the highlighted file is more than 10 000 line long by default, we'll fallback to a faster path that does not have all the features of highlighting failing AST nodes. This can be configures by setting the value of ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value. Autoreload verbosity ~~~~~~~~~~~~~~~~~~~~ We introduce more descriptive names for the ``%autoreload`` parameter: - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately. - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload. - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only \ for modules whitelisted by ``%aimport`` statements. - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all \ modules except those blacklisted by ``%aimport`` statements. - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` \ but also adding new objects from the imported modules (see IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects). The original designations (e.g. "2") still work, and these new ones \ are case-insensitive. Additionally, the option ``--print`` or ``-p`` can be added to the line to print \ the names of modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to \ the logger at INFO level. Both can be used simultaneously. The parsing logic for ``%aimport`` is now improved such that modules can be \ whitelisted and blacklisted in the same line, e.g. it's now possible to call ``%aimport os, \ -math`` to include ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and \ ``complete``. Terminal shortcuts customization ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Previously modifying shortcuts was only possible by hooking into startup files and practically limited to adding new shortcuts or removing all shortcuts bound to a specific key. This release enables users to override existing terminal shortcuts, disable them or add new keybindings. For example, to set the :kbd:`right` to accept a single character of auto-suggestion you could use:: my_shortcuts = [ { "command": "IPython:auto_suggest.accept_character", "new_keys": ["right"] } ] %config TerminalInteractiveShell.shortcuts = my_shortcuts You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts` configuration reference. Miscellaneous ~~~~~~~~~~~~~ - ``%gui`` should now support PySide6. :ghpull:`13864` - Cli shortcuts can now be configured :ghpull:`13928`, see above. (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut \ configuration). - Capture output should now respect ``;`` semicolon to suppress output. :ghpull:`13940` - Base64 encoded images (in jupyter frontend), will not have trailing newlines. :ghpull:`13941` |
2023-02-11 13:42:14 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.10.0 IPython 8.10 ------------ Out of schedule release of IPython with minor fixes to patch a potential \ CVE-2023-24816. This is a really low severity CVE that you most likely are not affected by unless: - You are on windows. - You have a custom build of Python without ``_ctypes`` - You cd or start IPython or Jupyter in untrusted directory which names may be valid shell commands. You can read more on `the advisory <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__. In addition to fixing this CVE we also fix a couple of outstanding bugs and issues. As usual you can find the full list of PRs on GitHub under `the 8.10 milestone <https://github.com/ipython/ipython/milestone/112?closed=1>`__. In Particular: - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930` - fix for compatibility with MyPy 1.0. :ghpull:`13933` - fix nbgrader stalling when IPython's ``showtraceback`` function is monkeypatched. :ghpull:`13934` |
2023-01-03 22:22:01 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: py-ipython: updated to 8.8.0 IPython 8.8.0 ------------- First release of IPython in 2023 as there was no release at the end of December. This is an unusually big release (relatively speaking) with more than 15 Pull Requests merge. Of particular interest are: - :ghpull:`13852` that replace the greedy completer and improve completion, in particular for dictionary keys. - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is bundled in wheels. - :ghpull:`13869` that implements tab completions for IPython options in the shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I believe this also needs a recent version of Traitlets. - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell` configurable. - :ghpull:`13880` that remove minor-version entrypoints as the minor version entry points that would be included in the wheel would be the one of the Python version that was used to build the ``whl`` file. In no particular order, the rest of the changes update the test suite to be compatible with Pygments 2.14, various docfixes, testing on more recent python versions and various updates. |
2022-11-28 18:58:59 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: py-ipython: updated to 8.7.0 IPython 8.7.0 ------------- Small release of IPython with a couple of bug fixes and new features for this month. Next month is end of year, it is unclear if there will be a release close the new year's eve, or if the next release will be at end of January. Here are a few of the relevant fixes, as usual you can find the full list of PRs on GitHub under `the 8.7 milestone <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__. - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11. - IPython shipped with the ``py.typed`` marker now, and we are progressively adding more types. :ghpull:`13831` - :ghpull:`13817` add configuration of code blacks formatting. |
2022-10-31 18:14:48 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message: py-ipython: updated to 8.6.0 IPython 8.6.0 ------------- Back to a more regular release schedule (at least I try), as Friday is already over by more than 24h hours. This is a slightly bigger release with a few new features that contain no less then 25 PRs. We'll notably found a couple of non negligible changes: The ``install_ext`` and related functions have been removed after being deprecated for years. You can use pip to install extensions. ``pip`` did not exists when ``install_ext`` was introduced. You can still load local extensions without installing them. Just set your ``sys.path`` for example. :ghpull:`13744` IPython now have extra entry points that that the major *and minor* version of python. For some of you this mean that you can do a quick ``ipython3.10`` to launch IPython from the Python 3.10 interpreter, while still using Python 3.11 as your main Python. :ghpull:`13743` The completer matcher API have been improved. See :ghpull:`13745`. This should improve the type inference and improve dict keys completions in many use case. Tanks ``@krassowski`` for all the works, and the D.E. Shaw group for sponsoring it. The color of error nodes in tracebacks can now be customized. See :ghpull:`13756`. This is a private attribute until someone find the time to properly add a configuration option. Note that with Python 3.11 that also show the relevant nodes in traceback, it would be good to leverage this informations (plus the "did you mean" info added on attribute errors). But that's \ likely work I won't have time to do before long, so contributions welcome. As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`. The ``open()`` function present in the user namespace by default will now refuse to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython. This mostly occurs in teaching context when incorrect values get passed around. The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find objects insides arrays. That is to say, the following now works:: >>> def my_func(*arg, **kwargs):pass >>> container = [my_func] >>> container[0]? If ``container`` define a custom ``getitem``, this __will__ trigger the custom method. So don't put side effects in your ``getitems``. Thanks the D.E. Shaw group for the request and sponsoring the work. |
2022-09-06 21:12:14 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.5.0 IPython 8.5.0 ------------- First release since a couple of month due to various reasons and timing preventing me for sticking to the usual monthly release the last Friday of each month. This is of non negligible size as it has more than two dozen PRs with various fixes an bug fixes. |
2022-05-29 20:50:06 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.4.0 IPython 8.4.0 ------------- As for 7.34, this version contains a single fix: fix uncaught BdbQuit \ exceptions on ipdb exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682` |
2022-05-11 11:34:03 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message: py-ipython: updated to 8.3.0 IPython 8.3.0 ------------- - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call ``set_next_input`` as most frontend allow proper multiline editing and it was causing issues for many users of multi-cell frontends. This has been \ backported to 7.33 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on the info object when frontend provide it. This has been backported to 7.33 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an auto-suggestion. - :ghpull:`13657` fix issue where history from different sessions would be mixed. |