Skip to main content

Python wrapper for converting/reducing AsciiDoc files back to Markdown.

Project description

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 -- downdoc --version

Add to your uv project/script’s dependencies

uv add Pydowndoc

Install permenantly as a uv tool

uv tool install Pydowndoc

Install using pip after creating a virtual environment

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

CLI Usage

These commands will only work correctly either after installation as a permenant uv tool, or after activating a virtual environment with Pydowndoc installed. Replace the command name downdoc with uvx --from Pydowndoc -- downdoc, to run any of the following commands in an ephemeral envrionment.

Display the current version number (useful to validate that installation eas 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.run(Path("MyNotes.adoc"))

Retrieve the converted file as a string

from pathlib import Path

import pydowndoc

converted_file_contents: str = pydowndoc.run(
    Path("MyNotes.adoc"),
    output="-",
    process_capture_output=True,
).stdout.decode()

Ensure the conversion process executes successfully and output the converted file to the given location (by default your code will continue execution even if conversion fails)

from pathlib import Path

import pydowndoc

pydowndoc.run(
    Path("MyNotes.adoc"),
    output=Path("path/to/output.md"),
    process_check_return_code=True,
)

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

    [build-system]
    build-backend = "hatchling.build"
    requires = ["hatchling", "Pydowndoc"]
    
  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"
      
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"]

[tool.hatch.metadata.hooks.downdoc-readme]
path = "README2.adoc"

Configuration Options

Option Type Default Description
path str README.adoc The location of your AsciiDoc to be converted to Markdown, to be used as the project’s README file

Upgrading

If installed as a uv tool

uv tool upgrade Pydowndoc

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

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 to 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 to 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 distrubuted under the Apache-2.0 licence.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pydowndoc-1.2.0-py3-none-win_amd64.whl (14.5 MB view details)

Uploaded Python 3Windows x86-64

pydowndoc-1.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_34_x86_64.whl (17.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64manylinux: glibc 2.34+ x86-64

pydowndoc-1.2.0-py3-none-macosx_13_0_x86_64.whl (18.4 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pydowndoc-1.2.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pydowndoc-1.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4a29b486c8124c73e4a89808a042cbfb0b4830023f44f76d3e5f713c89c9f62a
MD5 6c148690daf42108935035ec40baa5a3
BLAKE2b-256 eabf79799f1469e9346fe77b7eefc810f4426772387f70c7fc31394079fbfbc7

See more details on using hashes here.

File details

Details for the file pydowndoc-1.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pydowndoc-1.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1064617d30815de6eef09ca1da6eec903b96cb6e173bc8974debf08ed153c87b
MD5 d350ae488de5d906023421b618ee7d1f
BLAKE2b-256 12ecc7df809e89a91d38dff2ca1c93b17eb3c6a6d69fb2d3fe28634ba7a55110

See more details on using hashes here.

File details

Details for the file pydowndoc-1.2.0-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pydowndoc-1.2.0-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d104636f34949cf4dacbb345aef359423543329c6d5ace4fd1f27333d23e2879
MD5 aa4b17c5696e0ad2338988d3bdcf3f95
BLAKE2b-256 0b514b0986ff2bf4693453455446c1cbd2afb836fb35b3ec656325b5d50dc144

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page