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.w2dresource saved with a.dwfextension); they are read like a legacy single-stream file and reportkind == "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)
| File | Size | Uploaded | |
|---|---|---|---|
| ezdwf-0.0.7.tar.gz | 160.2 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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