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.25), V00.30, V00.34, V00.36, V00.42, V00.50, V00.55)
  • Bare (W2D V06.xx) graphics streams that are not wrapped in a DWF 6 package (for example a .w2d resource saved with a .dwf extension); they are read like a legacy single-stream file and report kind == "w2d_stream"
  • DWF 6 packages containing ePlot/W2D resources
  • DWFx packages containing OPC/OpenXPS fixed pages

When a W2D resource contains a record the decoder cannot read (an unknown opcode or operands that do not parse), the entities decoded before it are kept, the rest of that resource is skipped, and a W2D_STREAM_TRUNCATED warning is added to drawing.diagnostics (details: opcode, consumed_bytes, decoded_bytes, consumed_percent, entities_kept, error). A resource that yields nothing drawable before the failure still raises the original error, and resource limits always fail closed.

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.

Metadata

Release files for ezdwf 0.0.8

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.8
File Size Uploaded
ezdwf-0.0.8.tar.gz 162.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ezdwf 0.0.8
File
ezdwf-0.0.8-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
ezdwf-0.0.8-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.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
ezdwf-0.0.8-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 abi3 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details

Total release size: 5.5 MB

Release files / ezdwf-0.0.8.tar.gz

Download URL ezdwf-0.0.8.tar.gz
Size 162.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4bd972c6ba2b82ac248ca3b55197fe3703a1285e2e7a98af997ca1e522760bef
BLAKE2b-256 checksum
How to use checksums
263a6b65a2cf79f00cf70884406291b595e77fc34a72bae6bef2606fac373f1f
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 Oct 15, 2026.

Transparency log

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

Download URL ezdwf-0.0.8-cp310-abi3-win_amd64.whl
Size 995.6 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
d1a3bb2e259b295ff7f9184223329c6ee370c604d0a173f2b43ffde915ef8939
BLAKE2b-256 checksum
How to use checksums
e0611003cfc7c96e420525e6f1b0e26461d5ff680ce4896765400d1891456c34
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 Oct 15, 2026.

Transparency log

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

Download URL ezdwf-0.0.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
ac43ac26e7c20d037a4ea33d1ca65f8308cc80ce232fcc1a295d6e3ce9982fe1
BLAKE2b-256 checksum
How to use checksums
d20fbae16e27042ecd85c87f93061b28bd61700e274aadc0e3223c8a69442935
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 Oct 15, 2026.

Transparency log

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

Download URL ezdwf-0.0.8-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
27aac21f1509f86af788a316e837aebe1536f52a5b466b40427f9aea3c99ece4
BLAKE2b-256 checksum
How to use checksums
d04d6f0c984f2355e8581df6f87a9534995082ca3fbc2c0bf4eeb28e8c97b44d
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 Oct 15, 2026.

Transparency log

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

Download URL ezdwf-0.0.8-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
ff64195f3511bf4767951cbbd13ed2840d222e87413b91097fc7d71d3bb9a45e
BLAKE2b-256 checksum
How to use checksums
3032e16acad06bba71948ef9e1c044fd498d549b223d8bc51754fb45af3d002d
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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.8 This release

5 release files

0.0.7

5 release files

0.0.6

5 release files

0.0.5

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