Coverage for qpdk / __init__.py: 86%
29 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-14 10:27 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-14 10:27 +0000
1"""Quantum pdk."""
3import importlib
4import inspect
5import pkgutil
6from functools import lru_cache, partial
8import gdsfactory as gf
9from gdsfactory.cross_section import get_cross_sections
10from gdsfactory.get_factories import get_cells
11from gdsfactory.pdk import Pdk
13import qpdk.samples
14from qpdk import cells, config, helper, tech
15from qpdk.config import PATH
16from qpdk.logger import logger
17from qpdk.tech import (
18 LAYER,
19 LAYER_CONNECTIVITY,
20 LAYER_STACK,
21 LAYER_VIEWS,
22 routing_strategies,
23)
25gf.CONF.layer_error_path = LAYER.ERROR_PATH
27try:
28 from .models import models as _models
29except ImportError as e:
30 logger.info(
31 "QPDK model dependencies (pip install qpdk[models]) not installed. No models will be set in PDK."
32 )
33 logger.debug(f"Reason for missing models: {e!r}")
34 _models = {}
36# _models = get_models()
37_cells = get_cells(cells)
38_cross_sections = get_cross_sections(tech)
41@lru_cache
42def get_pdk() -> Pdk:
43 """Return Quantum PDK."""
44 return Pdk(
45 name="qpdk",
46 cells=_cells,
47 cross_sections=_cross_sections, # type: ignore
48 layers=LAYER,
49 layer_stack=LAYER_STACK,
50 layer_views=LAYER_VIEWS,
51 models=_models,
52 routing_strategies=routing_strategies,
53 connectivity=LAYER_CONNECTIVITY,
54 )
57PDK = get_pdk()
59# Get all functions from qpdk.samples module that are component generators
60sample_functions = {
61 f"{modname}.{name}": obj
62 for importer, modname, ispkg in pkgutil.walk_packages(
63 qpdk.samples.__path__, qpdk.samples.__name__ + "."
64 )
65 for name, obj in inspect.getmembers(importlib.import_module(modname))
66 if (inspect.isfunction(obj) or isinstance(obj, partial))
67 and not name.startswith("_")
68 # Compare .func if exists (for partials), otherwise obj itself
69 and getattr(obj, "func", obj).__module__ == modname
70}
72__all__ = [
73 "LAYER",
74 "LAYER_STACK",
75 "LAYER_VIEWS",
76 "PATH",
77 "cells",
78 "config",
79 "helper",
80 "logger",
81 "tech",
82]
83__version__ = "0.3.0"