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.34, V00.36, V00.42, 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

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.7

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.7
File Size Uploaded
ezdwf-0.0.7.tar.gz 160.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ezdwf 0.0.7
File
ezdwf-0.0.7-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
ezdwf-0.0.7-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.7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
ezdwf-0.0.7-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.7.tar.gz

Download URL ezdwf-0.0.7.tar.gz
Size 160.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6d3f5b3e4fe9263b14b31c0c539bc5a01a6cfd62c02d98e11202962a153994c7
BLAKE2b-256 checksum
How to use checksums
51421f8c9e413583e172996e44a2b506a778b039be6cf2d2062e7a3fd068b899
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 21, 2026.

Transparency log

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

Download URL ezdwf-0.0.7-cp310-abi3-win_amd64.whl
Size 984.9 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
2132745e6a55f7062edd0c456b607970e9eb3afd8fd3f6b71128fa8baf503526
BLAKE2b-256 checksum
How to use checksums
ee1ca7ce80ccec672451ef3ba68c28095781806d35dcd4799b35851385ae3335
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 21, 2026.

Transparency log

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

Download URL ezdwf-0.0.7-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
eb7d0379a9f4984c0cd60b9453c43b1de669ff6cf89b8ace642d93eabe650496
BLAKE2b-256 checksum
How to use checksums
232157fe8cf24106eabb73d88de193ea5a2a16ede7e37c8938bf5bd377695ff7
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 21, 2026.

Transparency log

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

Download URL ezdwf-0.0.7-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
66fd6510e2ca18b89b7d7f8fe7f37c99a4a50078e83dc79c75fb3dc6e1cf8e58
BLAKE2b-256 checksum
How to use checksums
365e24bccf4e3c4d6f9dbde61ba9670aca8bcbca94f15504a4f0d0138d8e66bf
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 21, 2026.

Transparency log

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

Download URL ezdwf-0.0.7-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
1fd44cea103941c91699a928f08b53abae67b2f66456055639d215e97d69d4b1
BLAKE2b-256 checksum
How to use checksums
cfe95d6171c227fbd8062d6e5f3d0c6c5aea929885065ee09e11b4a9fcfd9f41
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 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.7 This release

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