dulwich 0.24.6


pip install dulwich

  Latest version

Released: Oct 19, 2025


Meta
Author: Jelmer Vernooij
Requires Python: >=3.9

Classifiers

Development Status
  • 4 - Beta

Programming Language
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Operating System
  • POSIX
  • Microsoft :: Windows

Topic
  • Software Development :: Version Control

This is the Dulwich project.

It aims to provide an interface to git repos (both local and remote) that doesn’t call out to git directly but instead uses pure Python.

Main website: <https://www.dulwich.io/>

License: Apache License, version 2 or GNU General Public License, version 2 or later.

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

The project is named after the part of London that Mr. and Mrs. Git live in the particular Monty Python sketch.

Differences with other Python Git libraries

Unlike other Python Git libraries, Dulwich is available as a standalone package that doesn’t depend on git (like GitPython) being installed or any native code (like pygit2).

This comes at the cost of speed, but makes it easier to deploy in environments where git isn’t available or where it’s important to have a pure Python implementation.

To improve performance, Dulwich includes optional Rust bindings that can be used to speed up low-level operations.

Installation

By default, Dulwich’ setup.py will attempt to build and install the optional Rust extensions. The reason for this is that they significantly improve the performance since some low-level operations that are executed often are much slower in CPython.

If you don’t want to install the Rust bindings, specify the –pure argument to setup.py:

$ python setup.py --pure install

or if you are installing from pip:

$ pip install --no-binary dulwich dulwich --config-settings "--build-option=--pure"

Note that you can also specify –build-option in a requirements.txt file, e.g. like this:

dulwich --config-settings "--build-option=--pure"

Getting started

Dulwich comes with both a lower-level API and higher-level plumbing (“porcelain”).

For example, to use the lower level API to access the commit message of the last commit:

>>> from dulwich.repo import Repo
>>> r = Repo('.')
>>> r.head()
'57fbe010446356833a6ad1600059d80b1e731e15'
>>> c = r[r.head()]
>>> c
<Commit 015fc1267258458901a94d228e39f0a378370466>
>>> c.message
'Add note about encoding.\n'

And to print it using porcelain:

>>> from dulwich import porcelain
>>> porcelain.log('.', max_entries=1)
--------------------------------------------------
commit: 57fbe010446356833a6ad1600059d80b1e731e15
Author: Jelmer Vernooij <jelmer@jelmer.uk>
Date:   Sat Apr 29 2017 23:57:34 +0000

Add note about encoding.

Further documentation

The dulwich documentation can be found in docs/ and built by running make doc. It can also be found on the web.

Help

There is a #dulwich IRC channel on the OFTC, and a dulwich-discuss mailing list.

Contributing

For a full list of contributors, see the git logs or AUTHORS.

If you’d like to contribute to Dulwich, see the CONTRIBUTING file and list of open issues.

Supported versions of Python

At the moment, Dulwich supports (and is tested on) CPython 3.9 and later and Pypy.

0.24.6 Oct 19, 2025
0.24.5 Oct 16, 2025
0.24.4 Oct 14, 2025
0.24.3 Oct 14, 2025
0.24.2 Sep 26, 2025
0.24.1 Aug 01, 2025
0.24.0 Aug 01, 2025
0.23.2 Jul 07, 2025
0.23.1 Jun 30, 2025
0.23.0 Jun 21, 2025
0.22.8 Mar 02, 2025
0.22.7 Dec 19, 2024
0.22.6 Nov 18, 2024
0.22.5 Nov 07, 2024
0.22.4 Nov 01, 2024
0.22.3 Oct 16, 2024
0.22.1 Apr 23, 2024
0.22.0 Apr 22, 2024
0.21.7 Dec 05, 2023
0.21.6 Sep 02, 2023
0.21.5 May 04, 2023
0.21.4.1 May 04, 2023
0.21.4 May 03, 2023
0.21.3 Feb 17, 2023
0.21.2 Jan 18, 2023
0.21.1 Jan 17, 2023
0.21.0 Jan 16, 2023
0.20.50 Oct 30, 2022
0.20.49 Oct 30, 2022
0.20.48 Oct 29, 2022
0.20.47 Oct 29, 2022
0.20.46 Sep 06, 2022
0.20.45 Jul 15, 2022
0.20.44 Jun 30, 2022
0.20.43 Jun 06, 2022
0.20.42 May 24, 2022
0.20.41 May 24, 2022
0.20.40 May 19, 2022
0.20.39 May 19, 2022
0.20.38 May 17, 2022
0.20.37 May 16, 2022
0.20.36 May 15, 2022
0.20.35 Mar 20, 2022
0.20.34 Mar 14, 2022
0.20.33 Mar 05, 2022
0.20.32 Jan 24, 2022
0.20.31 Jan 21, 2022
0.20.30 Jan 08, 2022
0.20.29 Jan 08, 2022
0.20.28 Jan 05, 2022
0.20.27 Jan 04, 2022
0.20.26 Oct 29, 2021
0.20.25 Aug 23, 2021
0.20.24 Jul 18, 2021
0.20.23 May 24, 2021
0.20.22 May 23, 2021
0.20.21 Mar 25, 2021
0.20.20 Mar 03, 2021
0.20.19 Feb 11, 2021
0.20.18 Feb 04, 2021
0.20.17 Feb 04, 2021
0.20.15 Dec 23, 2020
0.20.14 Nov 26, 2020
0.20.13 Nov 22, 2020
0.20.12 Nov 22, 2020
0.20.11 Oct 30, 2020
0.20.10 Oct 30, 2020
0.20.9 Oct 30, 2020
0.20.8 Oct 30, 2020
0.20.7 Oct 29, 2020
0.20.6 Aug 29, 2020
0.20.5 Jun 22, 2020
0.20.4 Jun 22, 2020
0.20.3 Jun 14, 2020
0.20.2 Jun 01, 2020
0.20.1 Jun 01, 2020
0.20.0 Jun 01, 2020
0.19.16 Apr 17, 2020
0.19.15 Jan 26, 2020
0.19.14 Nov 30, 2019
0.19.13 Aug 19, 2019
0.19.12 Aug 13, 2019
0.19.11 Feb 07, 2019
0.19.10 Jan 15, 2019
0.19.9 Nov 17, 2018
0.19.8 Nov 07, 2018
0.19.7 Nov 05, 2018
0.19.6 Aug 11, 2018
0.19.5 Jul 08, 2018
0.19.4 Jun 24, 2018
0.19.3 Jun 17, 2018
0.19.3a0 Jun 17, 2018
0.19.2 Apr 07, 2018
0.19.1 Apr 05, 2018
0.19.0 Mar 10, 2018
0.18.6 Nov 11, 2017
0.18.5 Oct 29, 2017
0.18.4 Oct 01, 2017
0.18.3 Sep 03, 2017
0.18.2 Aug 01, 2017
0.18.1 Jul 31, 2017
0.18.0 Jul 31, 2017
0.17.3 Mar 20, 2017
0.17.2 Mar 19, 2017
0.17.1 Mar 01, 2017
0.16.3 Jan 14, 2017
0.16.2 Jan 14, 2017
0.16.1 Dec 25, 2016
0.16.0 Dec 24, 2016
0.15.0 Oct 09, 2016
0.14.1 Jul 05, 2016
0.14.0 Jul 03, 2016
0.13.0 Apr 24, 2016
0.12.0 Dec 13, 2015
0.11.2 Sep 19, 2015
0.11.1 Sep 13, 2015
0.11.0 Sep 13, 2015
0.10.1a0 Mar 25, 2015
0.10.0 Mar 22, 2015
0.9.9 Mar 22, 2015
0.9.8 Nov 30, 2014
0.9.7 Jun 08, 2014
0.9.6 Apr 22, 2014
0.9.5 Feb 23, 2014
0.9.4 Nov 30, 2013
0.9.3 Sep 27, 2013
0.9.2 Sep 26, 2013
0.9.1 Sep 22, 2013

Wheel compatibility matrix

Platform CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14 Python 3
android_21_arm64_v8a
android_21_x86_64
android_24_arm64_v8a
android_24_x86_64
any
macosx_11_0_arm64
manylinux_2_28_aarch64
manylinux_2_28_x86_64
win32
win_amd64

Files in release

dulwich-0.24.6-cp310-cp310-macosx_11_0_arm64.whl (1.1MiB)
dulwich-0.24.6-cp310-cp310-manylinux_2_28_aarch64.whl (1.2MiB)
dulwich-0.24.6-cp310-cp310-manylinux_2_28_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp310-cp310-win32.whl (838.6KiB)
dulwich-0.24.6-cp310-cp310-win_amd64.whl (854.7KiB)
dulwich-0.24.6-cp311-cp311-macosx_11_0_arm64.whl (1.1MiB)
dulwich-0.24.6-cp311-cp311-manylinux_2_28_aarch64.whl (1.2MiB)
dulwich-0.24.6-cp311-cp311-manylinux_2_28_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp311-cp311-win32.whl (837.5KiB)
dulwich-0.24.6-cp311-cp311-win_amd64.whl (854.5KiB)
dulwich-0.24.6-cp312-cp312-macosx_11_0_arm64.whl (1.1MiB)
dulwich-0.24.6-cp312-cp312-manylinux_2_28_aarch64.whl (1.2MiB)
dulwich-0.24.6-cp312-cp312-manylinux_2_28_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp312-cp312-win32.whl (837.3KiB)
dulwich-0.24.6-cp312-cp312-win_amd64.whl (854.6KiB)
dulwich-0.24.6-cp313-cp313-android_21_arm64_v8a.whl (1.2MiB)
dulwich-0.24.6-cp313-cp313-android_21_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp313-cp313-macosx_11_0_arm64.whl (1.1MiB)
dulwich-0.24.6-cp313-cp313-manylinux_2_28_aarch64.whl (1.2MiB)
dulwich-0.24.6-cp313-cp313-manylinux_2_28_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp313-cp313-win32.whl (837.3KiB)
dulwich-0.24.6-cp313-cp313-win_amd64.whl (854.7KiB)
dulwich-0.24.6-cp314-cp314-android_24_arm64_v8a.whl (1.2MiB)
dulwich-0.24.6-cp314-cp314-android_24_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp39-cp39-macosx_11_0_arm64.whl (1.1MiB)
dulwich-0.24.6-cp39-cp39-manylinux_2_28_aarch64.whl (1.2MiB)
dulwich-0.24.6-cp39-cp39-manylinux_2_28_x86_64.whl (1.2MiB)
dulwich-0.24.6-cp39-cp39-win32.whl (839.7KiB)
dulwich-0.24.6-cp39-cp39-win_amd64.whl (856.2KiB)
dulwich-0.24.6-py3-none-any.whl (522.8KiB)
dulwich-0.24.6.tar.gz (924.4KiB)
Extras:
Dependencies:
urllib3 (>=2.2.2)
typing_extensions (>=4.0)