Skip to main content

playdough

GDSFactory's next-gen routing engine — robust, collision-aware Manhattan routing with optional gradient-based finetuning for photonic IC design.

Features

  • Search-based Manhattan routing — performant, collision-aware, instant results
  • Gradient-based finetuning — flexible constraint satisfaction (path length matching, collision avoidance) via automatic differentiation
  • Multi-bundle routing — grouped port bundles with independent tangent directions
  • Polyline output — get corner-point coordinates as numpy arrays, with optional smooth euler-bend curves

Installation

pip install playdough

Use playdough from a coding agent

playdough ships an Agent Skill that teaches Claude Code, Codex, Cursor, Gemini CLI or Kiro how to route with it, without the agent reading playdough's source:

playdough skills install     # this project; `playdough skills --help` for options

It writes .claude/skills/, .agents/skills/ and .kiro/skills/, so you need not know which convention your agent reads. playdough skills remove takes it back out.

Importing playdough inside a project a coding agent manages prints a one-line reminder to stderr that this command exists, with the installed version — at most three times per project, never in an ordinary directory, and never once the skill is installed. PLAYDOUGH_NO_HINT=1 silences it, as do CI and a GDSFactory+ worker.

Quick Start

import gdsfactory as gf
import playdough as pld

c = gf.Component()
waveguides = gf.components.array(gf.c.straight, columns=1, rows=3, row_pitch=3)
left = c << waveguides
right = c << waveguides
right.move((100, 50))

obs = c << gf.components.rectangle(size=(80, 10))
obs.ymin = 20

router = pld.add_route_bundle(
    c,
    start_ports=list(left.ports.filter(orientation=0)),
    end_ports=list(right.ports.filter(orientation=180)),
    obstacles=[obs],
)

# Optionally finetune for length matching
router.finetune(length_matching=5.0, lr=0.5)

Documentation

See the documentation site for tutorials and API reference.

License

Requires a valid GDSFactory account. Authenticate with gfp configure.

Metadata

Release files for playdough 0.5.8

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

Built distributions (wheels)

Table of built distributions (wheels) for playdough 0.5.8
File
playdough-0.5.8-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
playdough-0.5.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
playdough-0.5.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
playdough-0.5.8-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details

Total release size: 25.1 MB

Release files / playdough-0.5.8-cp312-cp312-win_amd64.whl

Download URL playdough-0.5.8-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d6d594efd084e28bfdeb0560803b8aa49a91311490c0fac83a0329e9a19ea2ec
BLAKE2b-256 checksum
How to use checksums
2cadbbf1052f2b85554c464536d7ca58cd9876c823659ac399f3285349d837ea
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 12, 2026.

Transparency log

Release files / playdough-0.5.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL playdough-0.5.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 11.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
51f3fe9565d83245b37e5e1bcad9285166b9941d987c1c0fbf9cc0a991e098d0
BLAKE2b-256 checksum
How to use checksums
95c6cf3883ae0cb7656412e18c0cbfd1233c7e2f1271b981b85d28be067a52ce
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 12, 2026.

Transparency log

Release files / playdough-0.5.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL playdough-0.5.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 10.8 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fffefdb062d1e61c6e2e55cd896b1adfdb00e94995fd4a1fcd7d728eed6712e6
BLAKE2b-256 checksum
How to use checksums
ec927fffeb2ffea4b82dcfb05e4e61812817e98c6f556dfc5aef7e92edcc9642
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 12, 2026.

Transparency log

Release files / playdough-0.5.8-cp312-cp312-macosx_11_0_arm64.whl

Download URL playdough-0.5.8-cp312-cp312-macosx_11_0_arm64.whl
Size 1.7 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
64d120291fa3381111ace64403a8720bcca30696e3831cb52b69c74c592f0b26
BLAKE2b-256 checksum
How to use checksums
9cb511f8fe95c7780ed42c385c7fba38c5585961887e4d0d1f224e775d0de94a
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 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.11

4 release files

0.5.10

4 release files

0.5.9

4 release files

This release

0.5.8 This release

4 release files

0.5.7

4 release files

0.5.6

4 release files

0.5.5

4 release files

0.5.4

4 release files

0.5.3

4 release files

0.5.2

4 release files

0.5.1

4 release files

0.5.0

4 release files

0.4.2

4 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