]> git.k1024.org Git - pyxattr.git/log
pyxattr.git
11 months agoGitHub CI: ensure setuptools is installed
Iustin Pop [Sun, 17 Dec 2023 21:30:25 +0000 (22:30 +0100)]
GitHub CI: ensure setuptools is installed

Looks like setuptools is no longer installed by default on recent
Python versions - 3.12 more precisely:
https://github.com/iustin/pyxattr/actions/runs/7236053321/job/19714175539,
which says:

```
Run python ./setup.py build_ext -i
Traceback (most recent call last):
  File "/Users/runner/work/pyxattr/pyxattr/./setup.py", line 5, in <module>
    from setuptools import setup, Extension
ModuleNotFoundError: No module named 'setuptools'
```

So let's explicitly install it for CI runs.

11 months agoUpdate action versions to latest
Iustin Pop [Fri, 24 Nov 2023 18:52:07 +0000 (18:52 +0000)]
Update action versions to latest

This gets out of the outdated node 12 issue
 (https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/).

11 months agoExpand python versions in CI action
Iustin Pop [Fri, 24 Nov 2023 16:09:10 +0000 (16:09 +0000)]
Expand python versions in CI action

Add more recent Python versions, and replace pypy-3.9
with -nightly, and add 3.10-nightly. This is per issue 41.

19 months agoBump version number for the 0.8.1 release v0.8.1
Iustin Pop [Mon, 17 Apr 2023 21:57:16 +0000 (23:57 +0200)]
Bump version number for the 0.8.1 release

19 months agoConvert the NEWS file to markdown
Iustin Pop [Mon, 17 Apr 2023 21:55:22 +0000 (23:55 +0200)]
Convert the NEWS file to markdown

Let's try to remove all non-required rST files.

19 months agoBump changelog for new version
Iustin Pop [Mon, 17 Apr 2023 21:46:50 +0000 (23:46 +0200)]
Bump changelog for new version

19 months agoInclude the two new symlinks in the sdist
Iustin Pop [Mon, 17 Apr 2023 21:42:18 +0000 (23:42 +0200)]
Include the two new symlinks in the sdist

Otherwise distcheck fails - should probably move distcheck to a
GitHub job…

19 months agoReadme: make internal links consistent
Iustin Pop [Mon, 17 Apr 2023 21:34:19 +0000 (23:34 +0200)]
Readme: make internal links consistent

Sadly these can't be real relative links, since that breaks doc
generation…

19 months agoAdd a CONTRIBUTING.md file
Iustin Pop [Mon, 17 Apr 2023 21:07:31 +0000 (23:07 +0200)]
Add a CONTRIBUTING.md file

I was not sure this is really useful, but after writing it, definitely
so. At least I finally documented the release steps 😅

19 months agoMakefile: add Python 3.11
Iustin Pop [Mon, 17 Apr 2023 20:43:51 +0000 (22:43 +0200)]
Makefile: add Python 3.11

This is less and less used given GitHub actions, but…

19 months agoReplace remaining http URLs with secure versions
Iustin Pop [Mon, 17 Apr 2023 20:34:03 +0000 (22:34 +0200)]
Replace remaining http URLs with secure versions

19 months agoAdd badge/link to the OpenSSF Best Practices status
Iustin Pop [Sun, 16 Apr 2023 20:21:46 +0000 (22:21 +0200)]
Add badge/link to the OpenSSF Best Practices status

19 months agoAdd note about GitHub vulnerability reporting
Iustin Pop [Sun, 16 Apr 2023 15:38:55 +0000 (17:38 +0200)]
Add note about GitHub vulnerability reporting

19 months agoAdd a simple security policy
Iustin Pop [Sun, 16 Apr 2023 15:34:55 +0000 (17:34 +0200)]
Add a simple security policy

19 months agoRestrict permissions for github token
Iustin Pop [Sun, 16 Apr 2023 15:19:50 +0000 (17:19 +0200)]
Restrict permissions for github token

19 months agoUpdate refs after master→main rename
Iustin Pop [Sun, 16 Apr 2023 14:52:58 +0000 (16:52 +0200)]
Update refs after master→main rename

Why not.

19 months agoActually fix the badge URL
Iustin Pop [Sun, 16 Apr 2023 10:31:38 +0000 (12:31 +0200)]
Actually fix the badge URL

19 months agoFix badge routes for build action
Iustin Pop [Sun, 16 Apr 2023 09:52:31 +0000 (11:52 +0200)]
Fix badge routes for build action

19 months agoStop trying to store coverage reports as artifacts
Iustin Pop [Sun, 16 Apr 2023 09:42:35 +0000 (11:42 +0200)]
Stop trying to store coverage reports as artifacts

Codecov doesn't support this anymore, so remove the keyword and the
upload action.

19 months agoEnable gcov explicitly
Iustin Pop [Sun, 16 Apr 2023 09:41:57 +0000 (11:41 +0200)]
Enable gcov explicitly

codecov@v1 didn't need this, v3 does, otherwise no reports are
generated.

19 months agoTry trivial replacement of the codecov uploader with v3
Iustin Pop [Sun, 16 Apr 2023 09:16:47 +0000 (11:16 +0200)]
Try trivial replacement of the codecov uploader with v3

Not sure if this will work as-is, but will test.

23 months agoFix min python version in setup.py
Iustin Pop [Mon, 12 Dec 2022 21:58:44 +0000 (22:58 +0100)]
Fix min python version in setup.py

This controls the metadata on pypi, sigh.

23 months agoBump version for new 0.8.0 release v0.8.0
Iustin Pop [Mon, 12 Dec 2022 21:36:54 +0000 (22:36 +0100)]
Bump version for new 0.8.0 release

23 months agoStop unconditionally importing distutils
Iustin Pop [Mon, 12 Dec 2022 21:35:17 +0000 (22:35 +0100)]
Stop unconditionally importing distutils

distutils is fully deprecated and will stop working in 3.12, so just
stop the unconditional import. The conditional one remains, and that
favours setuptools. Everything still works the same.

23 months agoFix source archives and distcheck builds
Iustin Pop [Mon, 12 Dec 2022 21:33:56 +0000 (22:33 +0100)]
Fix source archives and distcheck builds

… after commit c9283c89 removed the symlinks under doc. This is not
perfect, as the files are not included as symlinks, but duplicated,
but meh, a fix for another day.

23 months agoRe-wrap README
Iustin Pop [Mon, 12 Dec 2022 21:22:06 +0000 (22:22 +0100)]
Re-wrap README

Sigh, VS code only *visually* wraps. Lesson learned :)

2 years agoMakefile: drop py<3.7, add 3.10
Iustin Pop [Wed, 12 Oct 2022 19:40:39 +0000 (22:40 +0300)]
Makefile: drop py<3.7, add 3.10

The Makefile has a home-grown multi-Python test setup, and that wasn't updated when the CI was switched to 3.7+. This fixes that inconsistency.

2 years agoCI: Drop old installTyping flag
Iustin Pop [Wed, 12 Oct 2022 18:59:33 +0000 (21:59 +0300)]
CI: Drop old installTyping flag

No longer needed since Python 3.4 is not tested anymore.

2 years agoCI: Bump cache key version
Iustin Pop [Wed, 12 Oct 2022 18:57:36 +0000 (21:57 +0300)]
CI: Bump cache key version

This is needed due to pip changes - sphinx and recommonmark are not cached, and this leads to extra work during setup.

2 years agoInstall recommonmark too
Iustin Pop [Wed, 12 Oct 2022 18:48:02 +0000 (21:48 +0300)]
Install recommonmark too

Just learned that this is deprecated, but let's get the doc CI going, and then do the change - it will actually be tested.

2 years agoCI: Run doc builds too
Iustin Pop [Wed, 12 Oct 2022 18:41:48 +0000 (21:41 +0300)]
CI: Run doc builds too

This would better live in a separate CI run, since we don't care so much about all OS builds, but let's how much it adds.

2 years agoRefresh the README
Iustin Pop [Mon, 10 Oct 2022 20:16:59 +0000 (23:16 +0300)]
Refresh the README

This updates the list of supported Python versions (since I can't test with Python 3.4 anymore), and adds a bit more details about dependencies needed for building from source - fixes #33.

2 years agoProperly handle module refcount during init errors
Iustin Pop [Mon, 10 Oct 2022 19:52:33 +0000 (22:52 +0300)]
Properly handle module refcount during init errors

Together with the commit in #36, this should fix #35.

2 years agoDon't leak temporary tuples in get_all() (#36)
Iustin Pop [Sun, 9 Oct 2022 21:07:06 +0000 (00:07 +0300)]
Don't leak temporary tuples in get_all() (#36)

Issue #35 found two instances of memory leaks. This fixes the first one, which arguably is a more realistic case.

2 years agoAllow triggering workflows runs manually
Iustin Pop [Sun, 9 Oct 2022 19:53:25 +0000 (22:53 +0300)]
Allow triggering workflows runs manually

2 years agoSwitch CI images to newest and drop Python < 3.7
Iustin Pop [Sun, 9 Oct 2022 19:37:08 +0000 (22:37 +0300)]
Switch CI images to newest and drop Python < 3.7

The Ubuntu 18 image with Python 3.4 is going away soon. Python 3.6 is no longer supported on newest Ubuntu *and* MacOS, so let's just switch the CI image to newer versions. If this makes the CI pass again, I'll bump supported Python versions.

3 years agoUpdate CI schedule to include periodic runs
Iustin Pop [Sun, 6 Jun 2021 19:01:08 +0000 (21:01 +0200)]
Update CI schedule to include periodic runs

… and also trigger on pull requests.

3 years agoEnable PyPy runs as well
Iustin Pop [Sat, 5 Jun 2021 16:05:30 +0000 (18:05 +0200)]
Enable PyPy runs as well

Switch the 'python-version' key to expanded, since it's too long
now. Also enable fail-fast, as otherwise too much time is spent
testing passing things.

Note that pypy supports a smaller range of versions (which is in a way
good, too many tests otherwise).

3 years agoEnable Python 3.10 builds
Iustin Pop [Sat, 5 Jun 2021 15:54:47 +0000 (17:54 +0200)]
Enable Python 3.10 builds

Let's get early warning…

3 years agoEnable MacOS builds
Iustin Pop [Sat, 5 Jun 2021 02:30:44 +0000 (04:30 +0200)]
Enable MacOS builds

Travis was not supporting them, but apparently GitHub Actions do?
Let's try.

3 years agoSkip user symlink test on MacOSX
Iustin Pop [Sat, 5 Jun 2021 02:53:43 +0000 (04:53 +0200)]
Skip user symlink test on MacOSX

Apparently MacOS doesn't have the same limitation (feature?) as Linux
of preventing regular users from settings xattrs on symlinks, so let's
skip this test on it (MacOS).

3 years agoStore codecov output as an artifact
Iustin Pop [Sat, 5 Jun 2021 02:24:58 +0000 (04:24 +0200)]
Store codecov output as an artifact

3 years agoStop uploading to coveralls
Iustin Pop [Sat, 5 Jun 2021 02:20:15 +0000 (04:20 +0200)]
Stop uploading to coveralls

This allows significant cleanup as we don't need anymore a post-job
and we can drop lcov installation/processing. Codecov is switched back
in gcov mode.

3 years agoRemove auto-detection of optimal buffer size
Iustin Pop [Sat, 5 Jun 2021 01:46:48 +0000 (03:46 +0200)]
Remove auto-detection of optimal buffer size

Since we don't pass zero anymore, this code is never called. Replace
it with 'zero means hardcoded initial value', since that hardcoded
value is what we were already passing, and change all the callers to
pass in zero (as 'auto-compute' again) instead, for simplicity.

3 years agoCodecov: disable gcov
Iustin Pop [Sat, 5 Jun 2021 00:53:24 +0000 (02:53 +0200)]
Codecov: disable gcov

Coverage informatio is already processed by lcov, so let's use that
directly. Should behave more close to coveralls.

3 years agoName codecov uploads by the Python version
Iustin Pop [Sat, 5 Jun 2021 00:41:29 +0000 (02:41 +0200)]
Name codecov uploads by the Python version

This way the artifacts in codecov are much clearer.

3 years agoRemove verbose from the codecov action
Iustin Pop [Sat, 5 Jun 2021 00:26:13 +0000 (02:26 +0200)]
Remove verbose from the codecov action

3 years agoUpdate README to point to github actions and badge
Iustin Pop [Sat, 5 Jun 2021 00:22:19 +0000 (02:22 +0200)]
Update README to point to github actions and badge

… instead of Travis.

3 years agoShorten the name of the CI
Iustin Pop [Sat, 5 Jun 2021 00:08:28 +0000 (02:08 +0200)]
Shorten the name of the CI

3 years agoRemove the travis config
Iustin Pop [Sat, 5 Jun 2021 00:07:37 +0000 (02:07 +0200)]
Remove the travis config

GitHub Actions seems pretty stable now, let's switch over.

3 years agoEnable codecov as well
Iustin Pop [Sat, 5 Jun 2021 00:00:46 +0000 (02:00 +0200)]
Enable codecov as well

3 years agoEnable coverage and coveralls upload in github actions
Iustin Pop [Fri, 4 Jun 2021 23:31:33 +0000 (01:31 +0200)]
Enable coverage and coveralls upload in github actions

3 years agoInitial github actions-based continous build
Iustin Pop [Fri, 4 Jun 2021 22:46:55 +0000 (00:46 +0200)]
Initial github actions-based continous build

Preparing to migrate from Travis…

3 years agoStore doc/readme and doc/news in the git repo
Iustin Pop [Sun, 6 Dec 2020 14:07:35 +0000 (15:07 +0100)]
Store doc/readme and doc/news in the git repo

… instead of rebuilding them every time. This is in order to fix the
readthedocs "build", since it only builds docs (via sphinx) but
doesn't run the actual build.

3 years agoRemove compatibility with old recommonmark versions
Iustin Pop [Sun, 29 Nov 2020 19:50:06 +0000 (20:50 +0100)]
Remove compatibility with old recommonmark versions

It's hard trying to keep compatibility with both very old (<1.8),
old (1.8) and modern (Sphinx), while also supporting old recommonmark;
recommonmark 0.5 was released in January 2019.

So let's drop the old support and just keep support for Sphinx 1.8 and
3.0+, and more modern recommonmark.

3 years agoRelease version 0.7.2 v0.7.2
Iustin Pop [Sun, 29 Nov 2020 19:19:04 +0000 (20:19 +0100)]
Release version 0.7.2

3 years agoAdd recommonmark to sphinx extensions
Iustin Pop [Sun, 29 Nov 2020 19:38:33 +0000 (20:38 +0100)]
Add recommonmark to sphinx extensions

With Sphinx 3.0+, the old way of enabling markdown is completely
broken, so without this the documentation is not really working…

3 years agoRun Python 3.9 tests too
Iustin Pop [Sun, 29 Nov 2020 12:09:14 +0000 (13:09 +0100)]
Run Python 3.9 tests too

Both locally and on travis.

3 years ago[Fixed] typo in readme.md
Anubhav Choudhary [Fri, 9 Oct 2020 04:55:00 +0000 (10:25 +0530)]
[Fixed] typo in readme.md

`sudo install python3-pyxattr` changed to `sudo apt install python3-pyxattr`

4 years agoFix travis config after tests rename
Iustin Pop [Tue, 26 Nov 2019 21:28:48 +0000 (22:28 +0100)]
Fix travis config after tests rename

4 years agoRename test/ → tests/
Iustin Pop [Tue, 26 Nov 2019 21:17:09 +0000 (22:17 +0100)]
Rename test/ → tests/

More consistency between my packages

4 years agoAdd unreleased changelog
Iustin Pop [Tue, 26 Nov 2019 21:14:55 +0000 (22:14 +0100)]
Add unreleased changelog

4 years agoRework and expand the mixed access test
Iustin Pop [Tue, 26 Nov 2019 21:13:24 +0000 (22:13 +0100)]
Rework and expand the mixed access test

This is more of a kernel xattr test, not the library, but good
enough to guarantee mixed access from Python.

4 years agosetup.py: add one more classifier topic
Iustin Pop [Tue, 26 Nov 2019 20:49:51 +0000 (21:49 +0100)]
setup.py: add one more classifier topic

4 years agoTests: ensure resources as closed in subject tests
Iustin Pop [Tue, 26 Nov 2019 20:48:28 +0000 (21:48 +0100)]
Tests: ensure resources as closed in subject tests

A bit of boilerplate, but gets rid of the leaking FD problem.

4 years agoBump version for 0.7.1 release… v0.7.1
Iustin Pop [Tue, 26 Nov 2019 03:37:33 +0000 (04:37 +0100)]
Bump version for 0.7.1 release…

4 years agoOops, fix bug tracker link
Iustin Pop [Tue, 26 Nov 2019 03:35:22 +0000 (04:35 +0100)]
Oops, fix bug tracker link

4 years agoBump version numbers for new release v0.7.0
Iustin Pop [Tue, 26 Nov 2019 03:29:12 +0000 (04:29 +0100)]
Bump version numbers for new release

No sense in waiting more, this is good conversion to Python 3 +
feature request + a bug fix.

4 years agoSwitch coverage badge to codecov
Iustin Pop [Tue, 26 Nov 2019 03:26:23 +0000 (04:26 +0100)]
Switch coverage badge to codecov

Still issues with merging reports in coveralls.

4 years agoCheck return value from PyList_Append
Iustin Pop [Tue, 26 Nov 2019 03:18:35 +0000 (04:18 +0100)]
Check return value from PyList_Append

This fixes the correctness aspect of #17, although not the entire
point.

4 years agoExpand setup.py configuration
Iustin Pop [Tue, 26 Nov 2019 03:05:42 +0000 (04:05 +0100)]
Expand setup.py configuration

The current pypi project page is somewhat bare… and shields.io can't
extract metadata from it.

4 years agoRun tests on file io streams as well
Iustin Pop [Tue, 26 Nov 2019 03:05:26 +0000 (04:05 +0100)]
Run tests on file io streams as well

4 years agoAdd support for Path-like objects in Python 3.6+
Iustin Pop [Tue, 26 Nov 2019 02:36:40 +0000 (03:36 +0100)]
Add support for Path-like objects in Python 3.6+

This is done by switching to PyUnicode_FSConverter (3.1+), which
supports it. The convert_obj() function is now much simpler, which is
a bonus.

Expand tests to check behaviour with path objects, and skip those on
Python 3.6.

Closes #20.

4 years agoStart updating NEWS for upcoming release
Iustin Pop [Tue, 26 Nov 2019 02:34:06 +0000 (03:34 +0100)]
Start updating NEWS for upcoming release

Otherwise I forget what's in :)

4 years agoSwitch namespace_none test to check all calls
Iustin Pop [Tue, 26 Nov 2019 02:24:42 +0000 (03:24 +0100)]
Switch namespace_none test to check all calls

Instead of all input parameter types for one call. This is better
since more calls are checked, and the parameter type checking is not
the goal of this test.

5 years agoTravis: cache codecov as well
Iustin Pop [Mon, 25 Nov 2019 04:35:17 +0000 (05:35 +0100)]
Travis: cache codecov as well

Since it's anyway installed.

5 years agoRun name tests as (encoded) bytes too
Iustin Pop [Mon, 25 Nov 2019 04:19:32 +0000 (05:19 +0100)]
Run name tests as (encoded) bytes too

5 years agoTests: remove_on_missing applies to symlinks as well
Iustin Pop [Mon, 25 Nov 2019 04:12:45 +0000 (05:12 +0100)]
Tests: remove_on_missing applies to symlinks as well

5 years agoTests: small py3 cleanup
Iustin Pop [Mon, 25 Nov 2019 04:12:25 +0000 (05:12 +0100)]
Tests: small py3 cleanup

5 years agoRemove support for Python 2 in the extension module
Iustin Pop [Mon, 25 Nov 2019 04:04:20 +0000 (05:04 +0100)]
Remove support for Python 2 in the extension module

Simplifies a bit the code, but not much (yet?).

5 years agoDisable MacOS builds
Iustin Pop [Mon, 25 Nov 2019 04:00:52 +0000 (05:00 +0100)]
Disable MacOS builds

Apparently Python is not actually supported, so the Python 2 builds
were working by accident. Sigh sigh sigh…

5 years agoMakefile: add a simpler test target
Iustin Pop [Mon, 25 Nov 2019 03:56:19 +0000 (04:56 +0100)]
Makefile: add a simpler test target

5 years agoSplit the other monolitic test function
Iustin Pop [Mon, 25 Nov 2019 03:47:18 +0000 (04:47 +0100)]
Split the other monolitic test function

Yay, cleaner now. But lots of many test invocations :)

5 years agoSplit the monolithic ListSetGetDeprecated test
Iustin Pop [Mon, 25 Nov 2019 03:43:48 +0000 (04:43 +0100)]
Split the monolithic ListSetGetDeprecated test

The failure modes are better tested separately, and leave this main
test as set-get-remove simple test.

5 years agoIntroduce an any_subject fixture which includes symlinks
Iustin Pop [Mon, 25 Nov 2019 03:38:59 +0000 (04:38 +0100)]
Introduce an any_subject fixture which includes symlinks

Only symlink creation fails for user attributes on symlinks, so tests
which only list/get do work. This allows removing explicit tests for
symlinks.

5 years agoAdd explicit test for symlink creation failure
Iustin Pop [Mon, 25 Nov 2019 03:35:32 +0000 (04:35 +0100)]
Add explicit test for symlink creation failure

5 years agoDon't compute coverage for external files
Iustin Pop [Mon, 25 Nov 2019 03:34:59 +0000 (04:34 +0100)]
Don't compute coverage for external files

Usually includes are caught here.

5 years agoReduce manyops count
Iustin Pop [Mon, 25 Nov 2019 03:24:57 +0000 (04:24 +0100)]
Reduce manyops count

We test more (object types), so let's reduce the call count for
each. Too slow otherwise.

5 years agoConvert test suite to pytest
Iustin Pop [Mon, 25 Nov 2019 03:22:15 +0000 (04:22 +0100)]
Convert test suite to pytest

Much more parametrisation, which means:

- more test cases covered (testing more/all object types in most
  functions)
- more granular tests, which should help diagnose of failures

5 years agotests: stop trying to set user attributes on symlinks
Iustin Pop [Mon, 25 Nov 2019 02:07:51 +0000 (03:07 +0100)]
tests: stop trying to set user attributes on symlinks

According to xattr(7), by design setting/modifying user attributes on
symlinks is not allowed, due to the way access control works, so stop
trying to test it.

5 years agoStop supporting Python 2
Iustin Pop [Mon, 25 Nov 2019 01:03:38 +0000 (02:03 +0100)]
Stop supporting Python 2

Bump minimum Python version to 3.4, which covers e.g. in Debian even
old-old-stable (Jessie), which is good enough.

This will allow code simplification and supporting new
features (e.g. to implement #20).

5 years agotests: move helper function outside the test class
Iustin Pop [Mon, 25 Nov 2019 00:37:05 +0000 (01:37 +0100)]
tests: move helper function outside the test class

Not sure why these were there in the first place…

5 years agotests: move constants outside the class
Iustin Pop [Mon, 25 Nov 2019 00:26:49 +0000 (01:26 +0100)]
tests: move constants outside the class

In preparation for pytest conversion.

5 years agoTravis: remove hack for Python 3.7 test
Iustin Pop [Sun, 24 Nov 2019 14:41:02 +0000 (15:41 +0100)]
Travis: remove hack for Python 3.7 test

Current config was testing 3.7 twice :/

5 years agoOnly export COVERALLS_PARALLEL in coveralls upload
Iustin Pop [Sun, 24 Nov 2019 13:54:56 +0000 (14:54 +0100)]
Only export COVERALLS_PARALLEL in coveralls upload

Having it shown as per-job env makes things more confusing.

5 years agoTravis: test on py3.7 and 3.8 too
Iustin Pop [Sun, 24 Nov 2019 13:53:57 +0000 (14:53 +0100)]
Travis: test on py3.7 and 3.8 too

5 years agoAlso export coverage results to codecov
Iustin Pop [Sun, 24 Nov 2019 13:53:12 +0000 (14:53 +0100)]
Also export coverage results to codecov

Will have to decide which to keep, but codecov at least supports
partial line coverage (while missing nicer overall dashboard :/).

5 years agoAdd a distcheck Makefile target
Iustin Pop [Sat, 23 Nov 2019 21:34:29 +0000 (22:34 +0100)]
Add a distcheck Makefile target

Too bad setuptools doesn't have it built-in…

5 years agoSwitch README file to Markdown and expand it
Iustin Pop [Sat, 23 Nov 2019 21:33:36 +0000 (22:33 +0100)]
Switch README file to Markdown and expand it

Let's get a bit more up with the times.

5 years agoFix a docstring formatting issue
Iustin Pop [Sat, 23 Nov 2019 20:53:37 +0000 (21:53 +0100)]
Fix a docstring formatting issue

This resulted in Sphinx altering the layout significantly.