Skip to main content

ezdwf

ezdwf is an experimental, read-only Python library for parsing 2D Autodesk DWF and DWFx files. Its parser is written in Rust and exposes drawings through an ezdxf-style Python API.

The library reads source formats directly without converting them to DXF. It provides both a normalized paper-space model for application code and access to the underlying DWF, W2D, OPC, and XPS records when lower-level data is needed.

Installation

Python 3.10 or later is required. From PYPI.

pip install ezdwf

From a source checkout, run:

python -m pip install .

Building from source also requires a Rust toolchain.

Install the optional Matplotlib renderer with:

python -m pip install "ezdwf[plot]"

Quick start

import ezdwf

drawing = ezdwf.read("drawing.dwf")
sheet = drawing.modelspace()

print(drawing.stats())

for entity in sheet.query('LINE POLYLINE[layer=="Walls", visible==true]'):
    print(entity.dxftype(), entity.layer, entity.points)

sheet.save_svg("drawing.svg")

Matplotlib can be used for interactive inspection or raster/PDF output:

figure, axes = ezdwf.plot(drawing, include_markup=True)
figure.savefig("drawing.png", dpi=150, bbox_inches="tight")

# Or render and close the figure in one call.
ezdwf.save_plot(drawing, "drawing.png", dpi=150, include_markup=True)

Multi-sheet drawings can be accessed by index, page name, or title:

first_sheet = drawing.sheet(0)
named_sheet = drawing.sheet("Floor Plan")

Command line

ezdwf inspect drawing.dwf
ezdwf inspect drawing.dwf --json
ezdwf render drawing.dwf drawing.svg --sheet 0
ezdwf plot drawing.dwf drawing.png --sheet 0 --dpi 150

Run ezdwf --help or ezdwf <command> --help for all options.

Supported input

  • Legacy 2D DWF/WHIP streams ((DWF V00.36), V00.42, V00.55)
  • DWF 6 packages containing ePlot/W2D resources
  • DWFx packages containing OPC/OpenXPS fixed pages

Common 2D geometry, layers, colors, line and fill styles, text, raster images, clips, opacity masks, gradients, Canvas groups, and VisualBrush resources are represented in the normalized model. DWFx package fonts can be decoded into positioned glyph outlines. Drawings can be queried by entity type and style and rendered to deterministic SVG without additional runtime dependencies.

For package inspection without normalization, use the lower-level API:

package = ezdwf.inspect_package("drawing.dwf")
dwfx = ezdwf.inspect_dwfx("drawing.dwfx")

# Glyph outlines are opt-in for structure-only DWFx inspection.
dwfx_with_outlines = ezdwf.inspect_dwfx(
    "drawing.dwfx",
    resolve_glyph_outlines=True,
)

Coordinates

High-level entities use the sheet's paper units in a bottom-left, Y-up coordinate system. DWFx pages use device-independent pixels (DIP), where 96 DIP equals one inch. Raw objects retain their source coordinate systems and transforms.

See the object model documentation for details.

Limitations

  • The API is read-only and is still pre-alpha.
  • Support is focused on 2D ePlot content; 3D DWF content is outside the current scope.
  • SVG output is a reference preview. Some color-profile brushes, JPEG XR image details, and format-specific embedded fonts cannot yet be rendered exactly.
  • Matplotlib output uses representative colors for complex XPS gradient, ImageBrush, and VisualBrush paints and applies the first path in a clip chain.
  • Unsupported or ambiguous source semantics are reported through diagnostics instead of being silently approximated.

License

This project is licensed under the MIT License.

Release files for ezdwf 0.0.5

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

Source distribution (sdist)

Source distribution for ezdwf 0.0.5
File Size Uploaded
ezdwf-0.0.5.tar.gz 157.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ezdwf 0.0.5
File
ezdwf-0.0.5-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
ezdwf-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
ezdwf-0.0.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
ezdwf-0.0.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details

Total release size: 5.5 MB

Release files / ezdwf-0.0.5.tar.gz

Download URL ezdwf-0.0.5.tar.gz
Size 157.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e2ccc98a2b7229f121f48c531c9862b71e3f184c9f08691adbce395bc79ae11a
BLAKE2b-256 checksum
How to use checksums
d934684fff6cfbd66ffe0c49165a823974f160ed55b1cfffc5296dc2bcbee50c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release files / ezdwf-0.0.5-cp310-abi3-win_amd64.whl

Download URL ezdwf-0.0.5-cp310-abi3-win_amd64.whl
Size 983.3 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
b3df52d74a38ab5b8a4855106390c8a38a0f8582f03cadb9a42c6f89b7fc3c55
BLAKE2b-256 checksum
How to use checksums
c7aedfa02f4541c0a7c133b87fd87b4bec393580c7f800d42c24ca656577b410
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release files / ezdwf-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ezdwf-0.0.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
43825987dc2b0016320c5d152445ca9be7193ed7c11dff1a3d62d5bf514b5117
BLAKE2b-256 checksum
How to use checksums
3e911199ecc3d5559ced6730f2c775f28e11347de8515265e2b35178ed92e6fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release files / ezdwf-0.0.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ezdwf-0.0.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
e1f1c87b94222b69826e9faa1b6c11fa2f54de4705b8c75f858e1ab3af05f0f8
BLAKE2b-256 checksum
How to use checksums
5f595dc01f97e8a00196b4b7bb730d7e0e0bb99b03a1a219458e7f6baf16e368
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release files / ezdwf-0.0.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL ezdwf-0.0.5-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 2.1 MB
Tags CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c4bdc5e438fefa1e5f6803e707c06f94324e937c079d7605c05743bf7beb8f4b
BLAKE2b-256 checksum
How to use checksums
ea0ff85626c87f8b4c252154de5641352b85f2c7a27d88265b62f54ebd468b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release history Release notifications | RSS feed

0.0.7

5 release files

0.0.6

5 release files

This release

0.0.5 This release

5 release files

0.0.4

5 release files

0.0.3

5 release files

0.0.2

5 release files

0.0.1

5 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