Skip to main content

Hatch Argparse Manpage

Package PyPI - Python Version PyPI - Version
Meta Hatch project Ruff GitButler Checked with mypy License: GPL v3 GitHub Sponsors

This provides a build hook plugin for Hatch to automatically generate a manual page from an ArgumentParser object, using argparse-manpage by Pavel Raiskup.

Important: an unavoidable aspect of argparse-manpage is that module imports are unavailable at build time in your argparse script.

Table of Contents

Explanation

This plugin is not an official project of argparse-manpage. Instead, it acts as a wrapper around it, making it available to Hatch users. As such, if argparse-manpage changes in ways incompatible with this plugin, this plugin may not function as expected.

This plugin has been tested against argparse-manpage version 4.5.

Configuration

The build hook plugin name is argparse-manpage.

Calling the plugin

Modify pyproject.toml to include the plugin as a build dependency:

[build-system]
requires = ["hatchling", "hatch-argparse-manpage"]
build-backend = "hatchling.build"

Generating the manual page

This plugin will do nothing unless the build target is sdist or wheel.

This plugin requires the directories storing the generated man pages are within the project's base directory, and are not equal to the project's base directory.

For example, for a project named myproject, and a src layout src/myproject, an acceptable directory in which to store a man page would be man.

Using the configuration option [tool.hatch.build.hooks.argparse-manpage], specify the man pages using the format defined by argparse-manpage.

For example:

[tool.hatch.build.hooks.argparse-manpage]
manpages = [
    "man/foo.1:object=parser:pyfile=bin/foo.py",
    "man/bar.1:function=get_parser:pyfile=bin/bar",
    "man/baz.1:function=get_parser:pyfile=bin/bar:prog=baz",
]

Extra options

Skip Platforms

This plugin makes little sense on some platforms, e.g. Windows. To skip running this plugin on specific platforms use values from sys.platform in the configuration option skip-platforms, e.g.:

[tool.hatch.build.hooks.argparse-manpage]
skip-platforms = ["win32", "cygwin"]

Project URLs

If a URL is not specified in the man page's build configuration, this plugin extracts it from the [project.urls] section of the project's pyproject.toml:

  1. If a homepage URL is specified, then it is used.
  2. If not, if only one URL is specified, it is used.

Argparse-manpage uses a project URL to generate a man section that explains where to download the program the page is being built for.

To suppress this behavior, set include-url to false (the default value is true):

[tool.hatch.build.hooks.argparse-manpage]
include-url = false
manpages = [
    "man/foo.1:object=parser:pyfile=bin/foo.py",
    "man/bar.1:function=get_parser:pyfile=bin/bar",
    "man/baz.1:function=get_parser:pyfile=bin/bar:prog=baz",
]

Argparse-manpage invocation

This plugin defaults to calling argparse-manpage's Python code directly. If this generates an exception, this plugin will attempt to call argparse-manpage as a command line program. To force the use of argparse-manpage as a command line program, set force-command-line to true (the default value is false):

[tool.hatch.build.hooks.argparse-manpage]
force-command-line = true
manpages = [
    "man/foo.1:object=parser:pyfile=bin/foo.py",
    "man/bar.1:function=get_parser:pyfile=bin/bar",
    "man/baz.1:function=get_parser:pyfile=bin/bar:prog=baz",
]

Cleaning output files

The plugin includes logic to remove the files it outputs using hatch's clean hook. As well as individual files, any output directories created will also be removed, as long as these directories do not contain files created by something other than this plugin.

History

The code to parse the pyproject.toml config in this plugin overlaps with the code in argparse-manpage, but differs in that it is rewritten to conform to contemporary Python stylistic conventions, as well as the specific needs of this plugin.

Related Hatch plugin

GNU gettext users may be interested in hatch-gettext.

License

hatch-argparse-manpage is distributed under the terms of the GPL-3.0-or-later license.

Metadata

Release files for hatch-argparse-manpage 1.0.2

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

Source distribution (sdist)

Source distribution for hatch-argparse-manpage 1.0.2
File Size Uploaded
hatch_argparse_manpage-1.0.2.tar.gz 23.6 kB Details

Release files / hatch_argparse_manpage-1.0.2.tar.gz

Download URL hatch_argparse_manpage-1.0.2.tar.gz
Size 23.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3d3ea8f81424cd8ceea1e050f01a76ff88dfe1db523684b6c562fa01cda5fa15
BLAKE2b-256 checksum
How to use checksums
d5f8d1ab11246373ffb3be81984e09cb8b4713dea08c1f453864017898d0cadf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.0 {"ci":null,"cpu":"x86_64","distro":{"id":"resolute","libc":{"lib":"glibc","version":"2.43"},"name":"Ubuntu","version":"26.04"},"implementation":{"name":"CPython","version":"3.14.4"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.5.5 27 Jan 2026","python":"3.14.4","system":{"name":"Linux","release":"6.6.114.1-microsoft-standard-WSL2"}} HTTPX2/2.10.0

Release history Release notifications | RSS feed

This release

1.0.2 This release

1 release file

1.0.1

1 release file

1.0.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

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