Skip to content

Commit b9a98ad

Browse files
committed
Merge remote-tracking branch 'origin/main' into HEAD
2 parents 13414fb + 0b97cf6 commit b9a98ad

39 files changed

Lines changed: 292 additions & 332 deletions

.github/.markdownlint-cli2.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ config:
88
code_block_line_length: 120
99
# Allow punctuation in headings (useful for project names with versions)
1010
MD026: false
11+
# Allow duplicate headings as long as they are not siblings (e.g., "Added" under different versions)
12+
MD024:
13+
siblings_only: true
1114
# Disable first-line-h1 rule for docs files that use includes
1215
MD041: false
1316
# Ignore specific files or patterns

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
* @joamatab @ThomasPluck @nikosavola
1+
* @joamatab @ThomasPluck @nikosavola @Alex-l-r

.github/dependabot.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ updates:
88
default-days: 7
99
ignore:
1010
- dependency-name: "doplaydo/*"
11+
- dependency-name: "jupyter-book"
1112
- package-ecosystem: github-actions
1213
directory: /
1314
schedule:
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Claude PR Review
2+
on:
3+
pull_request:
4+
types: [opened, synchronize, reopened]
5+
issue_comment:
6+
types: [created]
7+
permissions:
8+
contents: read
9+
pull-requests: write
10+
issues: write
11+
id-token: write
12+
jobs:
13+
review:
14+
uses: doplaydo/pdk-ci-workflow/.github/workflows/claude-pr-review.yml@main
15+
secrets:
16+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

.github/workflows/pages.yml

Lines changed: 9 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -3,70 +3,12 @@ permissions:
33
contents: read
44
on:
55
pull_request:
6-
workflow_run:
7-
workflows: ["Test"]
8-
types: [completed]
6+
push:
97
branches:
108
- main
11-
merge_group:
129
workflow_dispatch:
10+
merge_group:
1311
jobs:
14-
get-python-versions:
15-
uses: ./.github/workflows/get-python-versions.yml
16-
build-docs:
17-
needs: get-python-versions
18-
runs-on: ubuntu-latest
19-
name: Build HTML docs
20-
strategy:
21-
fail-fast: false
22-
matrix:
23-
python-version: ${{ fromJson(needs.get-python-versions.outputs.python-versions) }}
24-
steps:
25-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
26-
with:
27-
lfs: true
28-
- name: Install uv
29-
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v7.0.0
30-
with:
31-
python-version: ${{ matrix.python-version }}
32-
- name: Install just
33-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v3.0.0
34-
- name: Install Computer Modern Unicode fonts
35-
run: sudo apt-get install -y fonts-cmu
36-
- run: uv sync --all-extras --no-extra gdsfactoryplus
37-
- run: just docs
38-
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
39-
with:
40-
name: html-docs-${{ matrix.python-version }}
41-
path: "./docs/_build/html/"
42-
build-docs-result:
43-
runs-on: ubuntu-latest
44-
name: Build docs result
45-
needs: build-docs
46-
if: always()
47-
steps:
48-
- name: Check build-docs matrix results
49-
run: |
50-
if [[ "${{ needs.build-docs.result }}" == "success" ]]; then
51-
echo "All build-docs jobs succeeded"
52-
exit 0
53-
else
54-
echo "One or more build-docs jobs failed"
55-
exit 1
56-
fi
57-
get-latest-python:
58-
needs: get-python-versions
59-
runs-on: ubuntu-latest
60-
outputs:
61-
latest-python: ${{ steps.get-latest.outputs.latest-python }}
62-
steps:
63-
- name: Get latest Python version
64-
id: get-latest
65-
run: |
66-
versions='${{ needs.get-python-versions.outputs.python-versions }}'
67-
latest=$(echo "$versions" | jq -r '.[-1]')
68-
echo "latest-python=$latest" >> "$GITHUB_OUTPUT"
69-
echo "Latest Python version: $latest"
7012
build-docs-pdf:
7113
runs-on: ubuntu-latest
7214
name: Build PDF docs
@@ -113,40 +55,13 @@ jobs:
11355
with:
11456
name: pdf-docs
11557
path: "./docs/_build/latex/qpdk.pdf"
116-
deploy-docs:
117-
runs-on: ubuntu-latest
118-
name: Deploy to GitHub Pages
119-
needs: [build-docs, build-docs-pdf, get-latest-python]
120-
if: >
121-
(github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
122-
58+
pages:
59+
needs: build-docs-pdf
12360
permissions:
61+
actions: read
12462
pages: write
12563
id-token: write
126-
environment:
127-
name: github-pages
128-
url: ${{ steps.deployment.outputs.page_url }}
129-
steps:
130-
- name: Download HTML artifact (latest Python)
131-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.0
132-
with:
133-
name: html-docs-${{ needs.get-latest-python.outputs.latest-python }}
134-
path: _site
135-
- name: Download PDF artifact
136-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.0
137-
with:
138-
name: pdf-docs
139-
path: _site
140-
- name: Download coverage report
141-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.0
142-
continue-on-error: true
143-
with:
144-
name: coverage-report-${{ needs.get-latest-python.outputs.latest-python }}
145-
path: _site/reports/coverage
146-
run-id: ${{ github.event.workflow_run.id || github.run_id }}
147-
github-token: ${{ secrets.GITHUB_TOKEN }}
148-
- name: Upload merged pages artifact
149-
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
150-
- name: Deploy to GitHub Pages
151-
id: deployment
152-
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
64+
uses: doplaydo/pdk-ci-workflow/.github/workflows/pages.yml@main # zizmor: ignore[unpinned-uses, secrets-inherit]
65+
secrets:
66+
GFP_API_KEY: ${{ secrets.GFP_API_KEY }}
67+
SIMCLOUD_APIKEY: ${{ secrets.SIMCLOUD_APIKEY }}

.github/zizmor.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
rules:
22
unpinned-uses:
3-
disable: false
3+
ignore:
4+
- "claude-pr-review.yml"
5+
excessive-permissions:
6+
ignore:
7+
- "claude-pr-review.yml"
8+
secrets-inherit:
9+
ignore:
10+
- "claude-pr-review.yml"
411
dangerous-triggers:
512
ignore:
613
- "pages.yml"

.pre-commit-config.yaml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,37 @@ exclude: ^uv\.lock$
55
# 30: Global end-of-file-fixer
66
# 40: Global trailing-whitespace cleanup
77
repos:
8+
- repo: https://github.com/doplaydo/pdk-ci-workflow
9+
rev: 6d46a20ed995ac59e898c16e0eea8f3216c1f147
10+
hooks:
11+
- id: check-required-files
12+
priority: 10
13+
- id: check-pyproject-sections
14+
priority: 10
15+
- id: check-package-init
16+
priority: 10
17+
- id: check-cells-structure
18+
priority: 10
19+
- id: check-tech-structure
20+
priority: 10
21+
- id: check-pdk-object
22+
priority: 10
23+
- id: check-test-structure
24+
priority: 10
25+
- id: check-makefile-targets
26+
priority: 10
27+
- id: check-workflows
28+
priority: 10
29+
- id: check-multi-band
30+
priority: 10
31+
- id: check-no-raw-layers
32+
priority: 10
33+
- id: check-no-main-in-cells
34+
priority: 10
35+
- id: check-precommit-config
36+
priority: 10
37+
- id: check-version-sync
38+
priority: 10
839
- repo: https://github.com/pre-commit/pre-commit-hooks
940
rev: v6.0.0
1041
hooks:
@@ -106,13 +137,13 @@ repos:
106137
- id: hadolint
107138
priority: 10
108139
- repo: https://github.com/checkmake/checkmake.git
109-
rev: 0.2.2
140+
rev: v0.3.2
110141
hooks:
111142
- id: checkmake
112143
priority: 20
113144
args: ['--config=.github/.checkmake.ini']
114145
- repo: https://github.com/EbodShojaei/bake
115-
rev: v1.4.4
146+
rev: v1.4.6
116147
hooks:
117148
- id: mbake-validate
118149
priority: 20

CHANGELOG.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
6+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.3.6] - 2026-04-14
9+
10+
### Fixed
11+
12+
- Initial pre-commit hook fixes.
13+
- Resolved circular imports and implemented lazy-loading for model dependencies.
14+
- Fixed import redundancy issues ("Module is imported with 'import' and 'import from'").
15+
16+
### Added
17+
18+
- Added fluxonium qubit layout with superinductor and Josephson junction.
19+
- Introduced Monte Carlo CPW tolerance analysis for resonator simulations.
20+
- Added component tags and improved svgbob ASCII art diagrams for docstrings.
21+
- Enabled Google Colab support for notebooks.
22+
23+
### Changed
24+
25+
- Refactored waveguide models to use `sax[rf]`.
26+
- Switched PyPI publishing to OIDC Trusted Publisher.
27+
28+
## [0.3.5] - 2026-03-29
29+
30+
### Added
31+
32+
- Implemented unimon qubit layout, SAX model, and Hamiltonian.
33+
- Added `just show` command for interactive component visualization.
34+
- Added lumped-element resonator with meander inductor.
35+
36+
### Fixed
37+
38+
- Fixed `M1_ETCH` overlap with `M1_DRAW` in `half_circle_coupler`.
39+
- Resolved LaTeX PDF documentation build warnings and errors.
40+
41+
### Changed
42+
43+
- Increased test coverage from 86% to 93%.
44+
- Upgraded `pyrefly` to 0.58.0 for stricter type checking.
45+
46+
## [0.3.4] - 2026-03-25
47+
48+
### Added
49+
50+
- Added pulse-level simulation notebook with JAX backend via `qutip-qip`.
51+
- Introduced NetKet transmon qubit design notebook.
52+
- Added a component designer agent for quantum device visualization.
53+
54+
### Changed
55+
56+
- Removed `scikit-rf` dependency in favor of consolidated CPW models.
57+
- Refactored resonator length optimization to utilize Optax and JAX.
58+
- Migrated documentation from Jupyter Book to pure Sphinx.
59+
60+
## [0.3.3] - 2026-03-12
61+
62+
### Added
63+
64+
- Added HFSS simulation support via PyAEDT and Q2D impedance extraction helpers.
65+
- Enabled collision checking for CPW route bundles.
66+
67+
### Changed
68+
69+
- Standardized logging using `gf.logger` across the library.
70+
- Refactored AEDT simulation utilities into a class-based structure.
71+
72+
## [0.3.0] - 2026-03-09
73+
74+
### Added
75+
76+
- Replaced `scikit-rf` backend with JAX-native transmission line models.
77+
- Added `pymablock` dispersive shift notebook and perturbation theory helpers.
78+
79+
### Changed
80+
81+
- Enhanced models for airbridge physics and SQUID junctions.
82+
- Optimized cell layouts using `gf.pack`.

Makefile

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: docs build dev
1+
.PHONY: docs build install dev test
22

33
# Makefile — compatibility shim for gdsfactory PDK CI tooling
44
#
@@ -10,13 +10,32 @@
1010
JUST_CMD := uvx --from rust-just just
1111

1212
docs:
13+
@if [ "$$GITHUB_ACTIONS" = "true" ]; then sudo apt-get update -y && sudo apt-get install -y fonts-cmu; fi
1314
@$(JUST_CMD) docs
15+
@if [ "$$GITHUB_ACTIONS" = "true" ]; then \
16+
TOKEN=$${GH_TOKEN:-$${GITHUB_TOKEN:-$$(git config --get http.https://github.com/.extraheader | cut -d ' ' -f 3 | base64 -d | cut -d ':' -f 2 2>/dev/null)}}; \
17+
if [ -n "$$TOKEN" ]; then \
18+
GH_TOKEN=$$TOKEN gh run download $$GITHUB_RUN_ID -n pdf-docs -D docs/_build/html || echo "PDF artifact not found, skipping…"; \
19+
else \
20+
echo "GH_TOKEN not set and could not be extracted from git, skipping PDF download…"; \
21+
fi; \
22+
fi
1423

1524
build:
1625
@$(JUST_CMD) build
1726

18-
dev:
19-
@$(JUST_CMD) install
27+
install:
28+
@if [ "$$GITHUB_ACTIONS" = "true" ]; then \
29+
$(JUST_CMD) install "--all-extras --no-extra gdsfactoryplus"; \
30+
else \
31+
$(JUST_CMD) install; \
32+
fi
33+
34+
dev: install
35+
@$(JUST_CMD) install-pre
36+
37+
test:
38+
@$(JUST_CMD) test
2039

2140
# Any target not explicitly defined above is forwarded to just.
2241
%:

docs/docs.just

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,12 @@ docs-prerequisites: write-cells write-models write-justfile-help copy-sample-not
8080

8181
# Build the HTML documentation
8282
[group('docs')]
83-
docs: docs-prerequisites setup-ipython-config-temporary-before
83+
docs: check-lfs docs-prerequisites setup-ipython-config-temporary-before
8484
@trap 'just setup-ipython-config-temporary-after' EXIT INT TERM; uv run --group docs sphinx-build -b html docs docs/_build/html
8585

8686
# Setup LaTeX for PDF documentation
8787
[group('docs')]
88-
docs-latex: docs-prerequisites setup-ipython-config-temporary-before
88+
docs-latex: check-lfs docs-prerequisites setup-ipython-config-temporary-before
8989
@trap 'just setup-ipython-config-temporary-after' EXIT INT TERM; uv run --group docs sphinx-build -b latex docs docs/_build/latex
9090

9191
# Build PDF documentation (requires a TeXLive installation)

0 commit comments

Comments
 (0)