Skip to main content

hwpers

Python bindings for hwpers - A Rust library for reading and writing Korean Hangul Word Processor (HWP) files.

Installation

Install from PyPI:

pip install hwpers

From source

For development or to get the latest version:

git clone https://github.com/Indosaram/hwpers-py
cd hwpers-py
pip install maturin
maturin develop

Quick Start

Reading HWP files

Load an HWP document and extract its contents. The HwpDocument class provides methods to access text, metadata, and document properties.

import hwpers

# Read from file path
doc = hwpers.read_file("document.hwp")

# Extract all text content
text = doc.extract_text()
print(text)

# Access document metadata
print(f"Title: {doc.get_title()}")
print(f"Author: {doc.get_author()}")
print(f"Pages: {doc.get_page_count()}")
print(f"Characters: {doc.get_character_count()}")
print(f"Sections: {doc.section_count()}")
print(f"Compressed: {doc.is_compressed()}")

# You can also read from bytes (useful for web applications or streams)
with open("document.hwp", "rb") as f:
    doc = hwpers.read_bytes(f.read())

Writing HWP files

Create new HWP documents using HwpWriter. Add content like paragraphs, headings, and lists, then save to a file.

import hwpers

writer = hwpers.HwpWriter()

# Set document metadata (appears in file properties)
writer.set_title("My Document")
writer.set_author("Author Name")
writer.set_subject("Subject")
writer.set_keywords("keyword1, keyword2")

# Add content to the document
writer.add_heading("Chapter 1", 1)  # Level 1 heading
writer.add_paragraph("This is a paragraph.")
writer.add_bullet_list(["Item 1", "Item 2", "Item 3"])
writer.add_numbered_list(["First", "Second", "Third"])

# Save to file
writer.save("output.hwp")

# Or get document as bytes (useful for web responses)
data = writer.to_bytes()

Text Styling

Basic Styles

Use TextStyle to apply formatting like bold, italic, colors, and fonts. Methods can be chained for convenience.

import hwpers

writer = hwpers.HwpWriter()

# Create a style with multiple formatting options
# Method chaining makes it easy to combine styles
style = (hwpers.TextStyle()
    .bold()                       # Bold text
    .italic()                     # Italic text
    .underline()                  # Underlined text
    .strikethrough()              # Strikethrough text
    .size(14)                     # Font size in points
    .color(0xFF0000)              # Text color (RGB hex: red)
    .background_color(0xFFFF00)   # Highlight color (RGB hex: yellow)
    .font_name("맑은 고딕"))       # Font family name

writer.add_paragraph_with_style("Styled text", style)
writer.save("styled.hwp")

Mixed Styles in One Paragraph

Combine multiple styles within a single paragraph using StyledText. Each segment can have its own formatting.

import hwpers

writer = hwpers.HwpWriter()

# Create text segments with different styles
texts = [
    hwpers.StyledText("Normal ", hwpers.TextStyle()),
    hwpers.StyledText("Bold ", hwpers.TextStyle().bold()),
    hwpers.StyledText("Red", hwpers.TextStyle().color(0xFF0000)),
]

# Add all segments as one paragraph
writer.add_styled_paragraph(texts)
writer.save("mixed_styles.hwp")

Paragraph Alignment

Control text alignment within paragraphs. Options include left, center, right, justify, and distribute.

import hwpers

writer = hwpers.HwpWriter()

# Different alignment options
writer.add_aligned_paragraph("Left aligned", hwpers.ParagraphAlignment.Left)
writer.add_aligned_paragraph("Center aligned", hwpers.ParagraphAlignment.Center)
writer.add_aligned_paragraph("Right aligned", hwpers.ParagraphAlignment.Right)
writer.add_aligned_paragraph("Justified text spreads across the line", hwpers.ParagraphAlignment.Justify)

writer.save("aligned.hwp")

Tables

Simple Table

Create tables from 2D lists. The first row is typically used as headers.

import hwpers

writer = hwpers.HwpWriter()

# Create a table from a 2D list
# First row becomes the header
writer.add_table([
    ["Name", "Age", "City"],      # Header row
    ["Alice", "30", "Seoul"],     # Data rows
    ["Bob", "25", "Busan"],
])

writer.save("table.hwp")

TableBuilder (Advanced)

For complex tables with cell merging and custom borders, use TableBuilder. It provides a fluent API for precise control.

import hwpers

writer = hwpers.HwpWriter()

# Create a 4-row, 3-column table
tb = hwpers.TableBuilder(4, 3)

# Set the header row (row 0)
tb.set_header_row(["Column A", "Column B", "Column C"])

# Set individual cells (row, col, text)
# Method chaining allows setting multiple cells in one line
tb.set_cell(1, 0, "Row 1").set_cell(1, 1, "Data").set_cell(1, 2, "More")
tb.set_cell(2, 0, "Row 2").set_cell(2, 1, "Data").set_cell(2, 2, "More")
tb.set_cell(3, 0, "Row 3").set_cell(3, 1, "Data").set_cell(3, 2, "More")

# Merge cells horizontally: merge row 3, columns 0 through 1
tb.merge_cells(3, 0, 1)

# Apply border styles
tb.set_all_borders(hwpers.CellBorderStyle())  # Add borders to all cells
# Or remove all borders: tb.no_borders()

writer.add_table_with_builder(tb)
writer.save("advanced_table.hwp")

Page Layout

Paper Size and Orientation

Configure page dimensions and orientation. Use presets or custom sizes.

import hwpers

writer = hwpers.HwpWriter()

# Quick presets for common layouts
writer.set_a4_portrait()       # A4 size, vertical
writer.set_a4_landscape()      # A4 size, horizontal
writer.set_letter_portrait()   # US Letter, vertical
writer.set_letter_landscape()  # US Letter, horizontal

# Using PageLayout for more control
layout = hwpers.PageLayout.a4_portrait()
writer.set_page_layout(layout)

# Set paper size and orientation separately
writer.set_paper_size(hwpers.PaperSize.A3)
writer.set_page_orientation(hwpers.PageOrientation.Landscape)

# Custom page size in millimeters (width, height)
writer.set_custom_page_size_mm(200.0, 300.0)

writer.save("layout.hwp")

Margins

Set page margins using presets or custom values in millimeters/inches.

import hwpers

writer = hwpers.HwpWriter()

# Margin presets
writer.set_normal_margins()  # Standard margins
writer.set_narrow_margins()  # Reduced margins for more content
writer.set_wide_margins()    # Larger margins for binding

# Custom margins in millimeters (top, bottom, left, right)
writer.set_page_margins_mm(25.0, 25.0, 30.0, 30.0)

# Custom margins in inches
writer.set_page_margins_inches(1.0, 1.0, 1.25, 1.25)

# Combine layout and margins
layout = hwpers.PageLayout.a4_portrait().with_margins(hwpers.PageMargins.narrow())
writer.set_page_layout(layout)

writer.save("margins.hwp")

Hyperlinks

Add clickable links to URLs, email addresses, files, or bookmarks within the document.

import hwpers

writer = hwpers.HwpWriter()

# Basic URL hyperlink (text, URL)
writer.add_hyperlink("Visit Google", "https://google.com")

# Email link - opens default email client
writer.add_email_link("Contact Us", "info@example.com")

# File link - opens local file
writer.add_file_link("Open Document", "/path/to/file.hwp")

# Bookmark link - jumps to a location within the document
writer.add_bookmark_link("Go to Section", "section1")

# Using Hyperlink class for more options
link = hwpers.Hyperlink.url("Visit Site", "https://example.com")
writer.add_hyperlink_with_options(link)

# Embed hyperlinks within paragraph text
# Useful when only part of the text should be clickable
text = "Visit our website for more information."
ranges = [
    # Link "website" (characters 10-17) to URL
    hwpers.TextRange(10, 17, "https://example.com"),
]
writer.add_paragraph_with_hyperlinks(text, ranges)

writer.save("links.hwp")

Images

Insert images from files or bytes. Control size and alignment.

import hwpers

writer = hwpers.HwpWriter()

# Simple image insertion (uses original size)
writer.add_image("photo.jpg")

# Image with custom size and alignment
options = hwpers.ImageOptions()
options.width = 200   # Width in pixels
options.height = 150  # Height in pixels
options.alignment = hwpers.ImageAlign.Center  # Left, Center, Right, InlineWithText
writer.add_image_with_options("photo.jpg", options)

# Insert image from bytes (useful for generated images or downloads)
with open("photo.png", "rb") as f:
    image_data = f.read()
    writer.add_image_from_bytes(image_data, hwpers.ImageFormat.Png)

writer.save("images.hwp")

Text Boxes

Create positioned text boxes with optional borders and backgrounds.

import hwpers

writer = hwpers.HwpWriter()

# Simple inline text box
writer.add_text_box("Text in a box")

# Positioned text box at specific coordinates
# Parameters: text, x, y, width, height (in HWP units)
# Use hwpers.mm_to_hwp_units() to convert from millimeters
writer.add_text_box_at_position("Positioned box", 1000, 2000, 5000, 3000)

# Text box with styled text inside
style = hwpers.TextStyle().bold().color(0x0000FF)
writer.add_styled_text_box("Blue bold text", style)

# Fully customized text box with border and background
box_style = hwpers.CustomTextBoxStyle(
    alignment=hwpers.TextBoxAlignment.Center,     # Text alignment inside box
    border_style=hwpers.TextBoxBorderStyle.Solid, # Border: None_, Solid, Dashed, Dotted, Double
    border_color=0x000000,                        # Border color (black)
    background_color=0xEEEEEE                     # Background color (light gray)
)
writer.add_custom_text_box("Custom box", 1000, 1000, 5000, 2000, box_style)

writer.save("textboxes.hwp")

Headers, Footers, and Page Numbers

Add headers and footers that appear on every page (or specific pages).

import hwpers

writer = hwpers.HwpWriter()

# Simple header and footer (appears on all pages, left-aligned)
writer.add_header("Document Title")
writer.add_footer("Page Footer")

# Header/footer with options
writer.add_header_with_options(
    "Header Text",
    hwpers.PageApplyType.All,            # All, FirstPage, OddPages, EvenPages
    hwpers.HeaderFooterAlignment.Center  # Left, Center, Right
)

writer.add_footer_with_options(
    "Footer Text",
    hwpers.PageApplyType.All,
    hwpers.HeaderFooterAlignment.Right
)

# Automatic page numbers in header or footer
writer.add_header_with_page_number()
writer.add_footer_with_page_number()

# Configure page numbering format
# Parameters: start_page, format
writer.set_page_numbering(1, hwpers.PageNumberFormat.Numeric)      # 1, 2, 3...
writer.set_page_numbering(1, hwpers.PageNumberFormat.RomanUpper)   # I, II, III...
writer.set_page_numbering(1, hwpers.PageNumberFormat.RomanLower)   # i, ii, iii...
writer.set_page_numbering(1, hwpers.PageNumberFormat.AlphaUpper)   # A, B, C...
writer.set_page_numbering(1, hwpers.PageNumberFormat.AlphaLower)   # a, b, c...

writer.save("headers_footers.hwp")

Lists

Create bulleted, numbered, and nested lists.

import hwpers

writer = hwpers.HwpWriter()

# Simple bullet list
writer.add_bullet_list(["Apple", "Banana", "Cherry"])

# Simple numbered list
writer.add_numbered_list(["First", "Second", "Third"])

# Lists with different styles
writer.add_list(["A", "B", "C"], hwpers.ListType.Alphabetic)  # A. B. C.
writer.add_list(["I", "II", "III"], hwpers.ListType.Roman)    # I. II. III.
writer.add_list(["가", "나", "다"], hwpers.ListType.Korean)   # Korean numbering

# Nested lists (lists within lists)
writer.start_list(hwpers.ListType.Numbered)
writer.add_list_item("Item 1")

# Start a nested bullet list inside the numbered list
writer.start_nested_list(hwpers.ListType.Bullet)
writer.add_list_item("Sub-item A")
writer.add_list_item("Sub-item B")
writer.end_list()  # End nested list

writer.add_list_item("Item 2")
writer.end_list()  # End outer list

writer.save("lists.hwp")

Other Features

Multi-column Layout

Create newspaper-style multi-column layouts.

import hwpers

writer = hwpers.HwpWriter()

# Set 2-column layout
writer.set_columns(2)

# Add content - it will flow across columns
writer.add_paragraph("This text will appear in a two-column layout...")

writer.save("columns.hwp")

Page Background Color

Set a background color for all pages.

import hwpers

writer = hwpers.HwpWriter()

# Set page background color (RGB hex)
writer.set_page_background_color(0xFFFAF0)  # Light beige/cream color

writer.add_paragraph("Content on colored background")
writer.save("background.hwp")

Update Statistics

Recalculate document statistics like page count and character count.

import hwpers

writer = hwpers.HwpWriter()

# Add content...
writer.add_paragraph("Some content here")

# Update statistics before saving
# This ensures accurate page/character counts in document properties
writer.update_statistics()

writer.save("document.hwp")

Unit Conversions

HWP files use internal units for measurements. Use these functions to convert between common units and HWP units.

  • 1 inch = 7200 HWP units
  • 1 mm = 283.465 HWP units
import hwpers

# Convert millimeters to HWP units
hwp_units = hwpers.mm_to_hwp_units(10.0)  # Returns ~2835

# Convert HWP units back to millimeters
mm = hwpers.hwp_units_to_mm(2835)  # Returns ~10.0

# Convert inches to HWP units
hwp_units = hwpers.inches_to_hwp_units(1.0)  # Returns 7200

# Convert HWP units back to inches
inches = hwpers.hwp_units_to_inches(7200)  # Returns 1.0

# Example: Create a text box with size in millimeters
x = hwpers.mm_to_hwp_units(20)       # 20mm from left
y = hwpers.mm_to_hwp_units(30)       # 30mm from top
width = hwpers.mm_to_hwp_units(50)   # 50mm wide
height = hwpers.mm_to_hwp_units(25)  # 25mm tall

writer = hwpers.HwpWriter()
writer.add_text_box_at_position("Positioned in mm", x, y, width, height)
writer.save("units_example.hwp")

API Reference

Core Classes

Class Description
HwpDocument Read and parse HWP files
HwpWriter Create and write HWP files
TableBuilder Build tables with fluent API

Style Classes

Class Description
TextStyle Text formatting (bold, italic, color, size, font)
StyledText Text with associated style
PageLayout Page size and orientation
PageMargins Page margin presets (normal, narrow, wide)
Hyperlink Hyperlink configuration
TextRange Text range for inline hyperlinks
ImageOptions Image size and alignment
CustomTextBoxStyle Text box styling
CellBorderStyle Table cell border styling

Enums

Enum Values
ParagraphAlignment Left, Center, Right, Justify, Distribute
ListType Bullet, Numbered, Alphabetic, Roman, Korean
PageOrientation Portrait, Landscape
PaperSize A3, A4, A5, B4, B5, Letter, Legal, Tabloid, Custom
PageNumberFormat Numeric, AlphaUpper, AlphaLower, RomanUpper, RomanLower
ImageFormat Jpeg, Png, Bmp, Gif
ImageAlign Left, Center, Right, InlineWithText
PageApplyType All, FirstPage, OddPages, EvenPages
HeaderFooterAlignment Left, Center, Right
TextBoxAlignment Left, Center, Right, Inline, Absolute
TextBoxBorderStyle None_, Solid, Dashed, Dotted, Double
BorderLineType None_, Solid, Dashed, Dotted, Double, Thick

Functions

Function Description
read_file(path) Read HWP document from file path
read_bytes(data) Read HWP document from bytes
mm_to_hwp_units(mm) Convert millimeters to HWP units
hwp_units_to_mm(units) Convert HWP units to millimeters
inches_to_hwp_units(inches) Convert inches to HWP units
hwp_units_to_inches(units) Convert HWP units to inches

Documentation

Full API documentation: https://indosaram.github.io/hwpers-py/

License

MIT or Apache-2.0

Metadata

Release files for hwpers 0.4.0

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

Source distribution (sdist)

Source distribution for hwpers 0.4.0
File Size Uploaded
hwpers-0.4.0.tar.gz 36.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for hwpers 0.4.0
File
hwpers-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
hwpers-0.4.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
hwpers-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
hwpers-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
hwpers-0.4.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
hwpers-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
hwpers-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ ARM64 Details
hwpers-0.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
hwpers-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
hwpers-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
hwpers-0.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
hwpers-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
hwpers-0.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
hwpers-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
hwpers-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
hwpers-0.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
hwpers-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details

Total release size: 12.3 MB

Release files / hwpers-0.4.0.tar.gz

Download URL hwpers-0.4.0.tar.gz
Size 36.7 kB
Tags Source
SHA-256 checksum
How to use checksums
60f4fef3f06fb5a7e46b0c69bd8f5e92fc903cfb3818bd4e1fa9d369b08f84fa
BLAKE2b-256 checksum
How to use checksums
28b7f3d20c3d8c6e7d569c592e93455a4504d5ba8d137a5c32a25242033bd0fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hwpers-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 746.3 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
e2e4ad6d1345d49556f1008050f698cce5f3171aa19e297eb8a9a2665eeb975a
BLAKE2b-256 checksum
How to use checksums
69af41ef7dd5e36c5f72e2bcd5ac8923400a35da9b4b3cff49c1b6b952436522
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314-win_amd64.whl

Download URL hwpers-0.4.0-cp314-cp314-win_amd64.whl
Size 637.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
cdc8a2ee9bf18345bf2c6074ffb52847be82379c90cad70b341ef322efd8687f
BLAKE2b-256 checksum
How to use checksums
4962f1770e8dee8250fd4558f242370f69bd094c768f6685ef335d7ecab06874
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hwpers-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 751.3 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3c3748638d7abb259d5e3abf628671fec4fc3154ba9563bdb82ce4f440162a5b
BLAKE2b-256 checksum
How to use checksums
b6746a87ddb9899feb7d14de95664ecbda7f927bb40bf2d72d2339133883cd13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hwpers-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 747.5 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a4ec1e5550d9bfd665df6af15260c5091e431cd99c82b6428ddfac03539eae27
BLAKE2b-256 checksum
How to use checksums
0d57261dd9689a4d73bb032544d8c174f29a9ba4a76c745250a958fd25098585
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL hwpers-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Size 720.2 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
778fc70dc3dc024c62268458599f80195def709c6cea5c50153f707c382b6fe7
BLAKE2b-256 checksum
How to use checksums
7ee6d1aeda9c2f0fd4eca10b0f4768b7d3f5513d06a4f3444a21a2c4d1021304
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL hwpers-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 743.1 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1be517854779190b51027ca24ea4e9f450a3d4b96c259728f6051af7b6b6416f
BLAKE2b-256 checksum
How to use checksums
42dac17d76475076e6f40237289fc8c9535df9c6581020d15fda87945207e404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hwpers-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 752.2 kB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
9dadd0ef2af65a8e8ecd40de1001698bb3d64ba6e8506bd0a9ed973771bf4e92
BLAKE2b-256 checksum
How to use checksums
b972d89cb6ad76dfd23911572a509e37904c30d2591ead2cef8f21db2a4eac69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313-win_amd64.whl

Download URL hwpers-0.4.0-cp313-cp313-win_amd64.whl
Size 626.9 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
54ce318734f8ede99c39b7599284cd09d980266a5cba7fbb511c947e93133037
BLAKE2b-256 checksum
How to use checksums
bca7645570e84fef408e72bb04c4540ac42906c49c670eb1cce58bfdb8c3421c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hwpers-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 746.7 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6f39744557016785113b80a8463066935183b383ce1a58ab8287e90431ad1331
BLAKE2b-256 checksum
How to use checksums
91d9909aa9100180b0b0aecf72fb0df971e678e21179aa5f4a217f668cb8951c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hwpers-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 741.9 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
cee37b10788aa8525bbe8c0bedfad56e6708a6089d02d9ec0a48fbb4f92ca298
BLAKE2b-256 checksum
How to use checksums
524953b7ca9f8e8e919b3612ff084a94307e5969920c05581a17c8a23b8cffd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL hwpers-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 715.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cde1d1e499665ddcb95c5459db6c4845c02f59122bbe3de8c65e3c78ce5b17f3
BLAKE2b-256 checksum
How to use checksums
69ab7b85df2c6375cf911904ac1e56dedc45af52292ce4fa3ab355c83b8ac8ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL hwpers-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 739.2 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1f6ec56a94eab862db5521e4860e52339efd4fdda9abb85b41bacdc3c89b34f1
BLAKE2b-256 checksum
How to use checksums
e9a4ce856b5f4fe53b32d3208aa835c7e53819022a25c4baeb54ae28b8c9ac84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp312-cp312-win_amd64.whl

Download URL hwpers-0.4.0-cp312-cp312-win_amd64.whl
Size 627.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
03f71175bf7db44cc79fc9928540683a9671b809fb1a6dbe7665c8770c2afeb8
BLAKE2b-256 checksum
How to use checksums
d01a7f2d84b7913f5b8d9b0ebd58aaaed18a328d27f42008dc914fb42a55f529
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hwpers-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 747.0 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f3741220ff430293439ccc17636bf4d8529c5a2b40715bb6b8b0d66bc8a7822f
BLAKE2b-256 checksum
How to use checksums
93fd7665aad69d9c5af9175559d218040068f3abe3e5c9321e983f3d9d5bca55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hwpers-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 742.1 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
fe1ae2917595b2963375103aefdd22e610ac61797439bae4e0ac00f829412ef6
BLAKE2b-256 checksum
How to use checksums
fbc304a4b15df280b501d22af86a5d3a2506ead1111dba8cca4d2e329e2cb447
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL hwpers-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 715.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e63e11e008cf53344e11476073599ede531e3fcefedc8f91df9f77e3f1134026
BLAKE2b-256 checksum
How to use checksums
23525ecad6f40258575f0aec26ff3547f1be3d6b9eea8cbc84e8f29fbbecc18f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release files / hwpers-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL hwpers-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 739.3 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
acc381ce1d1aaa2087659e35493f03ebae6474837f4f012aa36e6b928338fb5c
BLAKE2b-256 checksum
How to use checksums
170de06b5dc92f0879914520694b18ef8195f8fe182974aa439f1cff5ea2ce31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

18 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