Skip to main content

Pydowndoc

Pydowndoc PyPI Version Python Version downdoc Version Tests Status mypy Status pre-commit Status ruff uv

Rapidly convert your AsciiDoc files to Markdown, using Python

A Python wrapper around the latest-built binary of downdoc; a rapid AsciiDoc to Markdown converter.

Why Use Pydowndoc?

Installation

Run as a uv tool (no installation necessary)

uvx --from Pydowndoc-bin -- downdoc --version

💡 TIP
uv will warn you that the downdoc binary is not directly provided by the Pydowndoc[bin] package, so we suggest to use --from Pydowndoc-bin when running downdoc using uvx or uv tool.

Add to your uv project/script’s dependencies

uv add Pydowndoc[bin]

Install permanently as a uv tool

uv tool install Pydowndoc-bin

Install using pip after creating a virtual environment

path/to/venv/python -m pip install Pydowndoc[bin]

Installing the downdoc Binary

Pydowndoc assumes by default that you wish to use the downdoc binary already installed on your system (E.g. using your system’s package manager). Installing the PyPI package Pydowndoc will only install the Python compatibility layer for downdoc.

If you wish to also install the downdoc binary itself, please install using the [bin] extra.

Installing without the [bin] extra on a system where downdoc is not already installed will not work

$ uvx --with Pydowndoc python -c "import pydowndoc; pydowndoc.get_help()"
OSError: The downdoc executable could not be found. Ensure it is installed (E.g `uv add Pydowndoc[bin]`).

📌 NOTE
Once PEP 771 is finalised, the default install will include the [bin] extra, and using the downdoc binary already installed on your system will require opting-out from including the [bin] extra.

CLI Usage

These commands will only work correctly after the downdoc binary has been installed, either as a system binary or using the [bin] extra. See Installing the downdoc Binary for more information.

Display the current version number (useful to validate that installation was successful)

downdoc --version

Display the help message

downdoc --help

Convert a given file (the same filename will be retained, with file-extension changed to .md)

downdoc MyNotes.adoc

Output the converted file to the given filename & path

downdoc MyNotes.adoc -o path/to/output.md

Output the converted file to stdout

downdoc MyNotes.adoc -o -

Read the input AsciiDoc file from stdin

cat MyNotes.adoc | downdoc - -o MyNotes.md

API Usage

Convert a given file. (The same filename will be retained, with file-extension changed to .md)

from pathlib import Path

import pydowndoc

pydowndoc.convert_file(Path("MyNotes.adoc"))

Output the converted file to the given location

from pathlib import Path

import pydowndoc

pydowndoc.convert_file(Path("MyNotes.adoc"), output_location=Path("path/to/output.md"))

Retrieve the converted file as a string

from pathlib import Path

import pydowndoc

converted_file_content: str = pydowndoc.convert_file(
    Path("MyNotes.adoc"), output_location=pydowndoc.OUTPUT_CONVERSION_TO_STRING,
)

Convert an in-memory string

from pathlib import Path

import pydowndoc

original_content: str = ...

converted_content: str = pydowndoc.convert_string(original_content)

Use an alternative conversion backend

from pathlib import Path

import pydowndoc
from pydowndoc.conversion_backends import PandocMultiMarkdownConversionBackend

pydowndoc.convert_file(Path("MyNotes.adoc"), backend=PandocMultiMarkdownConversionBackend)

Retrieve the version number of the currently installed downdoc executable

import pydowndoc

version_string: str = pydowndoc.get_version()

💡 TIP
This project includes function docstrings and modern type annotations, allowing you to search for API functionality using your IDE or any program with Python LSP support.

Use as a Hatch build hook

  1. Ensure the readme field is added to your project.dynamic list within your pyproject.toml file

    [project]
    name = "my-cool-project"
    version = "0.1.0"
    dynamic = ["readme"]
    
  2. Set up your build backend, within your pyproject.toml file, adding Pydowndoc[bin] as a build dependency

    [build-system]
    build-backend = "hatchling.build"
    requires = ["hatchling", "Pydowndoc[bin]"]
    

    💡 TIP
    To prevent issues with users building your package that may not have the downdoc binary already installed on their system, we suggest including the [bin] extra in your package’s build dependencies.

  3. Include the hook name within [tool.hatch.metadata.hooks] to enable README-file conversion

    [tool.hatch.metadata.hooks.downdoc-readme]
    

    or

    [tool.hatch.metadata.hooks]
    downdoc-readme = {}
    
    1. Using a path to a custom README file

      [tool.hatch.metadata.hooks.downdoc-readme]
      path = "README2.adoc"
      
    2. Using an alternative conversion backend

      [tool.hatch.metadata.hooks.downdoc-readme]
      backend = "pandoc-md-mmd"
      
A full example of a pyproject.toml file
[project]
name = "my-cool-project"
version = "0.1.0"
dynamic = ["readme"]

[build-system]
build-backend = "hatchling.build"
requires = ["hatchling", "Pydowndoc[bin]"]

[tool.hatch.metadata.hooks.downdoc-readme]
path = "README2.adoc"
backend = "pandoc-md-mmd"

Configuration Options

Option Type Default Description
path str README.adoc The location of the AsciiDoc file to be converted to Markdown and used as the project’s README file
backend str downdoc-md The conversion backend used to convert from AsciiDoc to any other PyPI supported README format.

Supported Conversion Backends
downdoc-md: Markdown converted by downdoc
pandoc-md: Pandoc’s Markdown converted by Pandoc & Asciidoctor (via DocBook)
pandoc-multi-md: MultiMarkdown converted by Pandoc & Asciidoctor (via DocBook)
pandoc-php-md-extra: PHP Markdown Extra converted by Pandoc & Asciidoctor (via DocBook)
pandoc-txt: Plaintext converted by Pandoc & Asciidoctor (via DocBook)
pandoc-rst: reStructuredText converted by Pandoc & Asciidoctor (via DocBook)

Upgrading

If installed as a uv tool

uv tool upgrade Pydowndoc-bin

If added as a uv project dependency

uv sync --upgrade-package Pydowndoc

If installed using pip

path/to/venv/python -m pip install --upgrade Pydowndoc

Uninstallation

If added as a uv project dependency

uv remove Pydowndoc

If installed as a uv tool

uv tool uninstall Pydowndoc-bin

If installed with pip

path/to/venv/python -m pip uninstall Pydowndoc

Reporting Issues

If there are issues with the Python API for this package, or you are encountering installation problems, please report these on the GitHub issues tracker for this project.

If you have problems with the conversion process of your AsciiDoc files to Markdown, please report these upstream, directly to the downdoc project.

Windows & macOS Wheels

Windows and macOS wheels are provided to enable use of this project on non-linux hosts. However, these versions have not had the same level of testing as the linux version. Therefore, if you encounter any bugs with these other versions, report them on the GitHub issues tracker for this project.

Licencing

The compiled binary of the distributed downdoc software is shared under the MIT licence as described in the upstream project’s licence file.

All other code in this project is distributed under the Apache-2.0 licence.

Metadata

Release files for Pydowndoc 2.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Pydowndoc 2.4.3
File Size Uploaded
pydowndoc-2.4.3.tar.gz 23.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Pydowndoc 2.4.3
File Interpreter ABI Platform
pydowndoc-2.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 40.1 kB

Release files / pydowndoc-2.4.3.tar.gz

Download URL pydowndoc-2.4.3.tar.gz
Size 23.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f2c52958ddc751046b3e8da10544c50262fb89819a229ad40ffc525673e21638
BLAKE2b-256 checksum
How to use checksums
c61052c61b48c2a4bbd74d3528b4f8cd14c6e785aa720a3797db9441e92085ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pydowndoc-2.4.3-py3-none-any.whl

Download URL pydowndoc-2.4.3-py3-none-any.whl
Size 17.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
991847dc9ecc02d8b328dcc4cfef426da7fbc3bdf6825f0ed55621159e192546
BLAKE2b-256 checksum
How to use checksums
6f1e154dd9d71671539275c9a756c8239a51bfd0d52920e6e413266a50ee989d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

2.4.3 This release

2 release files

2.4.2

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.8

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.2.0

3 release files

1.1.2

3 release files

1.1.1

3 release files

1.1.0

3 release files

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page