* Thu Jul 21 2022 adrian.glaubitz@suse.com
- Update in SLE-15 (bsc#1199282, jsc#PM-3243, jsc#SLE-24629)
* Thu Nov 18 2021 adrian.glaubitz@suse.com
- Update to 10.0
* *Noteworthy changes:**
* Merged pull request `#45`_ to resolve the issue caused by the conditional
:pypi:`pyreadline` requirement on Windows not supporting Python 3.9+.
* Updated the readme to use Python 3 in the example (reported in issue `#56`_).
Also added a mention of the ``humanfriendly --demo`` command.
* Removed the ``humanfriendly.compat.unittest`` alias that presumably no-one is
using at this point; it had been rendered useless quite a long time ago
(requested in issue `#53`_).
* *Internal changes:**
* Merged pull request `#54`_ which migrates the :pypi:`humanfriendly` project
from Travis CI to GitHub Actions and from Coveralls.io to Codecov.
* Fixed a deprecation warning concerning ``setup.cfg`` and some Sphinx
documentation errors.
* Tue Aug 17 2021 adrian.glaubitz@suse.com
- Update to 9.2
Maintenance release:
* Merged pull request `#46`_ which fixes several :pypi:`flake8` warnings.
* Merged pull request `#49`_ which marks Python 3.9 support final.
* Merged pull request `#51`_ which helps to stabilize the test suite.
* Merged pull request `#52`_ which updates the :mod:`humanfriendly.sphinx`
module to include Sphinx extension metadata that has become mandatory in a
recent Sphinx release. After merging the pull request I added additional
metadata including the version.
- from version 9.1
* Added :func:`~humanfriendly.compat.on_macos()` function to detect Apple MacOS
(I need this in an upcoming :pypi:`coloredlogs` release and don't want to have
to think about how to detect MacOS again in the future 😇).
- from version 9.0
The major version number was bumped because the bug fix for
:func:`~humanfriendly.text.pluralize()` is backwards incompatible
and (even though this seems like very "cosmetic" functionality)
version numbers are cheap, so who cares 😉.
* *Bug fixes:**
* Changed :func:`~humanfriendly.format_number()` to properly support negative
numbers (as suggested in `issue #40`_).
* Changed :func:`~humanfriendly.text.pluralize()` to generate "1.5 seconds"
instead of "1.5 second" (as suggested in `issue #43`_).
* *Enhancements:**
* Enhanced :func:`~humanfriendly.text.concatenate()` to support ``conjunction``
and ``serial_comma`` keyword arguments (as suggested in `issue #30`_).
* Added :func:`~humanfriendly.text.pluralize_raw()` to select singular or
plural form without prefixing the count to the text that is returned.
- from version 8.2
* Added a simple case insensitive dictionary implementation, for details refer to
the new :mod:`humanfriendly.case` module.
* Thu Apr 23 2020 tchvatal@suse.com
- Fix build without python2
* Mon Mar 30 2020 mcalabkova@suse.com
- Update to 8.1
* Make it possible to opt out of the output capturing that
:func:`humanfriendly.testing.run_cli()` sets up by default.
* Improve feature parity between :class:`humanfriendly.testing.CaptureOutput`
and my :pypi:`capturer` package to the point where most of the
:pypi:`humanfriendly` test suite can now run without :pypi:`capturer`.
* Refactored the test suite to import all names separately instead of referring
to identifiers via their modules (my preferences have changed since this code
was written a long time ago).
* Adopt :func:`functools.wraps()` to make decorator functions more robust.
* Make the :class:`~humanfriendly.terminal.spinners.Spinner` class more
customizable. The interval at which spinners are updated and the characters
used to draw the animation of spinners can now be customized by callers.
This was triggered by `executor issue #2`_.
* Improve test skipping based on exception types.
* The "deprecated imports" feature provided by :mod:`humanfriendly.deprecation`
has been adopted to clean up the maze of (almost but not quite) cyclic import
dependencies between modules.
* HTML to ANSI functionality has been extracted to a new
:mod:`humanfriendly.terminal.html` module.
* Support for spinners has been extracted to a new
:mod:`humanfriendly.terminal.spinners` module.
* The use of positional arguments to initialize
:class:`~humanfriendly.terminal.spinners.Spinner` objects has been deprecated
using the new :func:`humanfriendly.deprecation.deprecated_args()` decorator
function.
* Added the :func:`humanfriendly.deprecation.deprecated_args()` decorator function
which makes it easy to switch from positional arguments to keyword arguments
without dropping backwards compatibility.
* Accept pluralized disk size units (`#26`_). I'm not claiming this is a full
solution to the problem, far from it. It does lessen the pain a bit (IMHO).
* Make sure the selected pager is available before trying to run it. While
testing :pypi:`humanfriendly` on Windows 10 I noticed that ``humanfriendly
* -help`` resulted in nothing but a traceback, because :man:`less` wasn't
available. That's not human friendly at all 😕 (even if it is Windows 😈).
* Merge pull request `#24`_: Fix bug in :func:`~humanfriendly.parse_length()` that rounded floats.
* Merge pull request `#32`_: Update hyperlinks in readme.
* Merge pull request `#33`_: Drop support for Python 2.6 and 3.0-3.4
* Merge pull request `#35`_: SVG badge in readme.
* Merge pull request `#36`_: Add support for nanoseconds and microseconds time units
* Fixed :func:`~humanfriendly.tables.format_rst_table()` omission from
``humanfriendly.tables.__all__``.
* Start testing on Python 3.8 and 3.9-dev.
* Emit an ANSI reset code when :func:`humanfriendly.terminal.html.HTMLConverter.close()`
* Added the :func:`humanfriendly.terminal.html_to_ansi()` function which is a
* Added ``humanfriendly.testing.TestCase.assertRaises()`` enhancements.
* Define ``humanfriendly.text.__all__``.
* Sat Feb 15 2020 mcepl@suse.com
- Update to 6.1:
- Added a :pypy:`...` role for easy linking to packages on the
Python Package Index, for details refer to
:func:`humanfriendly.sphinx.pypi_role()`.
- Wasted quite a bit of time debugging a MacOS failure on
Travis CI caused by a broken man`pip` installation, fixed by
using get-pip.py to bootstrap an installation that actually
works wink.
- Enable :class:`~humanfriendly.testing.MockedProgram` to
customize the shell script code of mocked programs. This was
added to make it easy to mock a program that is expected to
generate specific output (I'm planning to use this in the
:pypi:`linux-utils` test suite).
- Defined __all__ for all public modules that previously lacked
"export control" and decided to bump the major version number
as a precaution:
- These changes should not have any impact on backwards
compatibility, unless I forgot entries, in which case
callers can get :exc:`~exceptions.ImportError`
exceptions...
- Imports of public modules were previously exported
(implicitly) and this pollutes code completion suggestions
which in turn can encourage bad practices (not importing
things using their "canonical" name).
- I started developing the humanfriendly package years before
I learned about the value of defining __all__ and so some
modules lacked a definition until now. I decided that now
was as good a time as any to add those definitions
innocent.
- Simplified the headings in docs/api.rst so that only the
module names remain. This was done because Sphinx doesn't
support nested links in HTML output and thus generated really
weird "Table of Contents" listings.
- Fixed the reStructuredText references in the documentation of
:func:`~humanfriendly.prompts.prompt_for_choice()`. This
function is imported from :mod:`humanfriendly.prompts` to
:mod:`humanfriendly` (for backwards compatibility) where it
can't use relative references to refer to the other functions
in the :mod:`humanfriendly.prompts` module.
- Embedded quite a few Python API references into recent
changelog entries, just because I could (I heart what
hyperlinks can do for the usability of technical
documentation, it gives a lot more context).
- Added custom :man:`...` role for easy linking to Linux manual
pages to the :mod:`humanfriendly.sphinx` module.
- Changed rendering of pretty tables to expand tab characters
to spaces: Until now pretty tables did not take the variable
width of tab characters into account which resulted in tables
whose "line drawing characters" were visually misaligned.
Tabs are now expanded to spaces using str.expandtabs().
- Stop testing on Python 2.6 and drop official support. The
world (including Travis CI) has moved on and preserving
Python 2.6 compatibility was clearly starting to drag the
project down...
- I decided to bump the major version number because each of
these changes can be considered backwards incompatible in one
way or another and version numbers are cheap anyway so there
stuck_out_tongue.
* Wed Dec 11 2019 tchvatal@suse.com
- Require full python stack for sqlite module
* Fri Mar 29 2019 tchvatal@suse.com
- Simplify the multibuild conditioning and name creation
* Tue Mar 12 2019 tchvatal@suse.com
- Update to 4.18:
* Added humanfriendly.text.generate_slug() function.
* Fixed "invalid escape sequence" DeprecationWarning (pointed out by Python >= 3.6).
* Thu Jan 31 2019 tchvatal@suse.com
- Update to 4.17:
* compatibility with python 3.7