gdsdiff 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. gdsdiff/__init__.py +148 -0
  2. gdsdiff/__main__.py +7 -0
  3. gdsdiff/_environment.py +12 -0
  4. gdsdiff/_version.py +34 -0
  5. gdsdiff/acceptance_evidence.py +530 -0
  6. gdsdiff/api.py +2955 -0
  7. gdsdiff/backends/__init__.py +26 -0
  8. gdsdiff/backends/base.py +77 -0
  9. gdsdiff/backends/boundary_loop_ctypes.py +191 -0
  10. gdsdiff/backends/cpu.py +20 -0
  11. gdsdiff/backends/cpu_ctypes.py +255 -0
  12. gdsdiff/backends/cuda.py +40 -0
  13. gdsdiff/backends/cuda_ctypes.py +1297 -0
  14. gdsdiff/backends/exact.py +424 -0
  15. gdsdiff/backends/geometry_ctypes.py +252 -0
  16. gdsdiff/backends/identity.py +53 -0
  17. gdsdiff/backends/metal.py +198 -0
  18. gdsdiff/backends/metal_ctypes.py +866 -0
  19. gdsdiff/backends/polygon_extract_ctypes.py +233 -0
  20. gdsdiff/backends/structural_ctypes.py +130 -0
  21. gdsdiff/boundary_loops.py +616 -0
  22. gdsdiff/cache.py +544 -0
  23. gdsdiff/canonicalize.py +176 -0
  24. gdsdiff/cli.py +352 -0
  25. gdsdiff/config.py +257 -0
  26. gdsdiff/cuda_setup.py +174 -0
  27. gdsdiff/design_history.py +65 -0
  28. gdsdiff/diagnostics.py +42 -0
  29. gdsdiff/diff_gds.py +66 -0
  30. gdsdiff/exact_diff_markdown.py +979 -0
  31. gdsdiff/exact_oracle.py +649 -0
  32. gdsdiff/extract.py +376 -0
  33. gdsdiff/gds_metadata.py +43 -0
  34. gdsdiff/geometry.py +112 -0
  35. gdsdiff/grid.py +143 -0
  36. gdsdiff/hierarchy.py +215 -0
  37. gdsdiff/hierarchy_extract.py +263 -0
  38. gdsdiff/inventory.py +153 -0
  39. gdsdiff/multiprocessing_support.py +39 -0
  40. gdsdiff/native.py +135 -0
  41. gdsdiff/native_cache.py +265 -0
  42. gdsdiff/native_src/cpu_prefilter.cpp +349 -0
  43. gdsdiff/native_src/gds_boundary_loops.cpp +505 -0
  44. gdsdiff/native_src/gds_geometry_scan.cpp +601 -0
  45. gdsdiff/native_src/gds_polygon_extract.cpp +594 -0
  46. gdsdiff/native_src/gds_structural_scan.cpp +335 -0
  47. gdsdiff/native_src/gdsdiff/CMakeLists.txt +74 -0
  48. gdsdiff/native_src/gdsdiff/core.cpp +191 -0
  49. gdsdiff/native_src/gdsdiff/core.hpp +96 -0
  50. gdsdiff/native_src/gdsdiff/cuda_assignment.cu +304 -0
  51. gdsdiff/native_src/gdsdiff/cuda_assignment.cuh +33 -0
  52. gdsdiff/native_src/gdsdiff/cuda_candidates.cu +133 -0
  53. gdsdiff/native_src/gdsdiff/cuda_candidates.cuh +17 -0
  54. gdsdiff/native_src/gdsdiff/cuda_ctypes.cu +4528 -0
  55. gdsdiff/native_src/gdsdiff/cuda_memory.cu +194 -0
  56. gdsdiff/native_src/gdsdiff/cuda_memory.cuh +34 -0
  57. gdsdiff/native_src/gdsdiff/metal_ctypes.mm +2791 -0
  58. gdsdiff/native_src/gdsdiff/python_bindings.cpp +21 -0
  59. gdsdiff/native_src/gdsdiff/test_core.cpp +93 -0
  60. gdsdiff/native_src/gdsdiff/test_cuda_assignment.cu +109 -0
  61. gdsdiff/native_src/gdsdiff/test_cuda_candidates.cu +94 -0
  62. gdsdiff/native_src/gdsdiff/test_cuda_memory.cu +97 -0
  63. gdsdiff/policy.py +305 -0
  64. gdsdiff/polygon_components.py +860 -0
  65. gdsdiff/profiles.py +152 -0
  66. gdsdiff/py.typed +1 -0
  67. gdsdiff/rect_coverage.py +384 -0
  68. gdsdiff/report.py +354 -0
  69. gdsdiff/schemas/gdsdiff_report-v1.schema.json +92 -0
  70. gdsdiff/semantics.py +75 -0
  71. gdsdiff/source_edge_diff.py +1120 -0
  72. gdsdiff/spatial.py +71 -0
  73. gdsdiff/structural_guard.py +161 -0
  74. gdsdiff/surplus_coverage.py +255 -0
  75. gdsdiff/synthetic_suite.py +1643 -0
  76. gdsdiff/templates.py +709 -0
  77. gdsdiff/tiling.py +153 -0
  78. gdsdiff/windowed_exact.py +270 -0
  79. gdsdiff/windows.py +184 -0
  80. gdsdiff-0.1.0.dist-info/METADATA +135 -0
  81. gdsdiff-0.1.0.dist-info/RECORD +85 -0
  82. gdsdiff-0.1.0.dist-info/WHEEL +5 -0
  83. gdsdiff-0.1.0.dist-info/entry_points.txt +4 -0
  84. gdsdiff-0.1.0.dist-info/licenses/LICENSE +674 -0
  85. gdsdiff-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.4
2
+ Name: gdsdiff
3
+ Version: 0.1.0
4
+ Summary: Exact, evidence-oriented comparison of GDSII layout geometry
5
+ Author-email: Sandbo Chang <sandbochang@outlook.com>
6
+ License-Expression: GPL-3.0-only
7
+ Project-URL: Homepage, https://github.com/SandboChang/gdsdiff
8
+ Project-URL: Issues, https://github.com/SandboChang/gdsdiff/issues
9
+ Project-URL: Repository, https://github.com/SandboChang/gdsdiff
10
+ Keywords: GDSII,CAD,layout,geometry,verification
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: gdstk>=1.0.0
30
+ Requires-Dist: numpy>=1.26
31
+ Provides-Extra: test
32
+ Requires-Dist: jsonschema>=4.23; extra == "test"
33
+ Requires-Dist: pytest>=8; extra == "test"
34
+ Requires-Dist: tomli; python_version < "3.11" and extra == "test"
35
+ Provides-Extra: dev
36
+ Requires-Dist: build>=1.2; extra == "dev"
37
+ Requires-Dist: jsonschema>=4.23; extra == "dev"
38
+ Requires-Dist: pytest>=8; extra == "dev"
39
+ Requires-Dist: tomli; python_version < "3.11" and extra == "dev"
40
+ Requires-Dist: twine>=5; extra == "dev"
41
+ Provides-Extra: native-dev
42
+ Requires-Dist: cmake>=3.24; extra == "native-dev"
43
+ Requires-Dist: pybind11>=2.12; extra == "native-dev"
44
+ Dynamic: license-file
45
+
46
+ # gdsdiff
47
+
48
+ `gdsdiff` compares the geometry and hierarchy of two GDSII layouts and emits
49
+ neutral, machine-readable evidence. It supports exact CPU verification by
50
+ default and can use optional CUDA or Apple Metal acceleration when a compatible
51
+ system toolchain and device are available.
52
+
53
+ The package is usable on CPU-only machines. CUDA, Metal, CMake, and compiler
54
+ toolchains are runtime capabilities, not mandatory Python dependencies.
55
+
56
+ ## Install
57
+
58
+ ```bash
59
+ python -m pip install gdsdiff
60
+ ```
61
+
62
+ For local development from this checkout:
63
+
64
+ ```bash
65
+ UV_PROJECT_ENVIRONMENT=.venv_wsl UV_LINK_MODE=copy uv sync --locked --extra dev
66
+ TMPDIR=/tmp .venv_wsl/bin/python -m pytest
67
+ ```
68
+
69
+ Use a repository-local virtual environment: `.venv_wsl` on Windows 11 through
70
+ WSL, `.venv_mac` on macOS, and `.venv` on native Linux.
71
+
72
+ ## Command line
73
+
74
+ ```bash
75
+ python -m gdsdiff before.gds after.gds --output-dir comparison
76
+ ```
77
+
78
+ Exit codes are stable: `0` means the selected failure policy passed, `1` means
79
+ differences failed the policy, and `2` means the comparison could not produce
80
+ valid evidence. Reports use factual directions such as `coverage_before_only`
81
+ and `coverage_after_only`.
82
+
83
+ ## Python API
84
+
85
+ ```python
86
+ from gdsdiff import CompareConfig, compare_gds_files
87
+
88
+ result = compare_gds_files(
89
+ CompareConfig("before.gds", "after.gds", backend="cpu")
90
+ )
91
+ print(result.status, result.exit_code)
92
+ ```
93
+
94
+ Polygon extraction is public so downstream tools such as `ebeamtime` can share
95
+ the same zero-copy `PolygonBuffer` representation:
96
+
97
+ ```python
98
+ from gdsdiff import extract_gds_polygons
99
+
100
+ extraction = extract_gds_polygons("layout.gds", layers="1:0,2:0")
101
+ print(extraction.buffer.polygon_count)
102
+ ```
103
+
104
+ See `docs/` for comparison semantics, report format, engine details, and
105
+ debugging guidance.
106
+
107
+ ## Optional acceleration
108
+
109
+ - CUDA requires an NVIDIA GPU, a compatible driver, and the CUDA toolkit with
110
+ `nvcc` available. On WSL, install the Windows NVIDIA display driver and the
111
+ WSL CUDA toolkit, never a Linux display driver. `nvcc` is discovered from
112
+ `PATH`, `CUDA_HOME`, `/usr/local/cuda`, or `/opt/cuda`.
113
+ - On-demand builds default to NVIDIA's `-arch=native`: `nvcc` detects visible
114
+ GPUs and emits native SASS without PTX. For cross-machine builds, set
115
+ `GDSDIFF_CUDA_ARCHITECTURES` to comma-separated compute capabilities without
116
+ decimals (for example, `89,120`). Targets and standard `NVCC_*_FLAGS` are
117
+ included in the content-addressed cache key.
118
+ - Metal requires Apple Silicon/macOS with the Xcode command-line tools.
119
+ - Missing or unusable accelerators fall back to CPU unless `require_gpu=True`
120
+ is explicitly requested.
121
+
122
+ Installation and import never compile GPU code. Inspect the CUDA toolchain with
123
+ `gdsdiff.inspect_cuda_toolchain()`, then build and verify the optional backend
124
+ with `gdsdiff.prepare_cuda()` or `gdsdiff-prepare-cuda --json`. Explicit
125
+ `backend="cuda"` use retains lazy preparation. Passive diagnostics and
126
+ `discover_native_capabilities()` report only already-prepared backends.
127
+
128
+ Native artifacts are stored in a private, content-addressed user cache keyed by
129
+ source, compiler/toolkit identity, build flags, and native GPU identity. The
130
+ optional geometry cache uses JSON plus non-executable NumPy arrays; legacy
131
+ pickle cache entries are ignored and rebuilt.
132
+
133
+ ## License
134
+
135
+ GPL-3.0-only. See `LICENSE`.
@@ -0,0 +1,85 @@
1
+ gdsdiff/__init__.py,sha256=gvUKGnGAWosW7JJ1jJLB0CcrvmtWC-LjSQc66jHhXgY,5686
2
+ gdsdiff/__main__.py,sha256=nbdP6zFlOqcCirgxoIQ6HiWVhdh7URm5GOWr5_EwmBk,116
3
+ gdsdiff/_environment.py,sha256=sCuHqAMiXmV5t8Jhg-wsWTvBexmEAnMMhpIVwhD6GW0,340
4
+ gdsdiff/_version.py,sha256=Ej7IsJUZBOqchwPRcQqON5BR0Q7tWXV6uiwiB0VcGMk,1378
5
+ gdsdiff/acceptance_evidence.py,sha256=1I1fvBXudplbB35bAl50YAS_2ypY9KOCOIRIDOL745o,21349
6
+ gdsdiff/api.py,sha256=lUYXdIvc2jAxGuGHT0t5W9VT7N2U_HnfqNCMEsWVusY,135723
7
+ gdsdiff/boundary_loops.py,sha256=dGsQQHu3xWGI62pd3LZdVv_bPV8KagaYteOFgQs_VgQ,24147
8
+ gdsdiff/cache.py,sha256=DM27pLAEI6fYEaOvWUUE8PINND7VeXU-DLhr0AbqURQ,20355
9
+ gdsdiff/canonicalize.py,sha256=69vqgBCFqx8Ft3VpNjxCkNFsZg1UEslRBkY7HG32SbE,6371
10
+ gdsdiff/cli.py,sha256=L6e3tQ_qFgsnGLRY-tsM_v9MARHUD5Q6o32y-H7N-aE,14839
11
+ gdsdiff/config.py,sha256=7sDB_XbTbEEeVz1acf9JlZT1l5DOPdNvSdJKagqeedw,11242
12
+ gdsdiff/cuda_setup.py,sha256=O2MROFSzOygNm6_Se0CMMux-XYJjcd4vHn5yiS3lhF4,5651
13
+ gdsdiff/design_history.py,sha256=0ZbADW2qd8H-jEaZER7mwDgmfxaFLlsiqLHiT2EEDQA,2332
14
+ gdsdiff/diagnostics.py,sha256=BFFLtw_wfoL0laP71o3e2OyHZHw9DNVTwUp_iu-S9zc,1215
15
+ gdsdiff/diff_gds.py,sha256=F1RUwaKOYLQXKFrFGcScLqjGoMX2peNohyM0prrTAI8,2142
16
+ gdsdiff/exact_diff_markdown.py,sha256=hSZTUjl9awoNG8DUskidARzO2CS2592VFFSVdKVvms0,43027
17
+ gdsdiff/exact_oracle.py,sha256=9U16eIsM0oK8eFNLXfYOsvy9dFulFPWZIsbxu08stv0,26004
18
+ gdsdiff/extract.py,sha256=CghP8RUqSwMFKGwieNpZlCyP7FSV4oahx0b4tWyjsbo,13406
19
+ gdsdiff/gds_metadata.py,sha256=0NB5AysN1TdukLqMvCAyDzMfak54iNwE2kF6I7MVuig,1112
20
+ gdsdiff/geometry.py,sha256=3SOkcOhrWp-cR2NNMVtgMwibIJt2J1PTVW6cI6nwBUc,4341
21
+ gdsdiff/grid.py,sha256=MNYvfygP9z-lCjebzvoAPor61QsOAKCQ5TsElAPXQgM,4981
22
+ gdsdiff/hierarchy.py,sha256=lTBdagGv2vhxF8jG30YYBEhHLlXY85Myv56OFGMksKU,7954
23
+ gdsdiff/hierarchy_extract.py,sha256=szMTXHgc1RqyGo1_QEDVbNoHHvcjMbTQNWwPf0CTvI0,10912
24
+ gdsdiff/inventory.py,sha256=XpRvh4j7DuCnuDAX6CjogAZ4uVXyHN-D__KlkCZhs1Q,5072
25
+ gdsdiff/multiprocessing_support.py,sha256=M261AwNkts3O4eyprfPiz2W1MtwqX_6tkN82vupYQus,1111
26
+ gdsdiff/native.py,sha256=0XjU3Tuq4OiZJFOJyN29AGVyfEg5PF3E5YOtRoLEc6I,4870
27
+ gdsdiff/native_cache.py,sha256=u4-pIVUIy_Qu1ZLIUv3_qrY3I9dzkFwBx20ZMYE1cAc,10111
28
+ gdsdiff/policy.py,sha256=zMm_IfSbr_HGKje9YOt0VH9HJjONcmvrtYGS5tjpaZk,11042
29
+ gdsdiff/polygon_components.py,sha256=65g98m940XqyKrGkLuUBksJt0pRwo00541q8q-InFFE,35989
30
+ gdsdiff/profiles.py,sha256=nSuoWEfIauaZFigKEWbWyf77i6Mp9eDtaJqYlqz361I,5893
31
+ gdsdiff/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
32
+ gdsdiff/rect_coverage.py,sha256=BfusMBb-gSReDEpTuwhN6DmpZ2essFAVrZcQ-mTRFzs,15710
33
+ gdsdiff/report.py,sha256=W_U5KCwLaMsONOUcQxkdlu3soSl3sBJ5Eucbvjz7_SA,13880
34
+ gdsdiff/semantics.py,sha256=BOA68B22CrXfJUdgyeQIvbHgb8RxaCuJ2FYBRIg2UiM,2157
35
+ gdsdiff/source_edge_diff.py,sha256=JD2i4eBzsojPEd9vRtdRwr-AlltpQTPdEgO0pZeRS4Q,50636
36
+ gdsdiff/spatial.py,sha256=MXmNVDVtTeQ7Dqc-IJp-QcKsKW38zTQr7mjnP-kJsa4,2942
37
+ gdsdiff/structural_guard.py,sha256=2BVkmECjRD1ue25VHIW8jsLV6J55Ap65yjuUxiz_b_U,5624
38
+ gdsdiff/surplus_coverage.py,sha256=aopJBnzE4eIAp5uincamvoBJbNP1rEySbu5I2LCBrds,11209
39
+ gdsdiff/synthetic_suite.py,sha256=d6-K-rbakbXgeEhfukpor790UePyQjxHcfl1Jq7LZGI,72547
40
+ gdsdiff/templates.py,sha256=Emqtog8yW3r5nDqE9x6JXiCpuUaE6oC4VQJpokixtPs,26089
41
+ gdsdiff/tiling.py,sha256=q-V8XpNCiKcSw9hT7MnAKNUArJMKQc-nvC_TmR6xjcM,5236
42
+ gdsdiff/windowed_exact.py,sha256=bRkFAg3ZCYtlEe2XOo3sODcaPss-0iisX6k6eI5tIvw,10599
43
+ gdsdiff/windows.py,sha256=ktqQgVmbt8mAX8NRkdNz0AbC7a5tqtgCIHO5GlSBwxU,6126
44
+ gdsdiff/backends/__init__.py,sha256=xqKEhbc0L-eRV2PIgkPlCbKIP36rVdykgFTsteaZTDY,835
45
+ gdsdiff/backends/base.py,sha256=mPiN0s77Ra9nCGD9fx5OKo0GJpe0sWTvEdLx6hYRQE0,2052
46
+ gdsdiff/backends/boundary_loop_ctypes.py,sha256=nYzY2H3_oPm1qBdZwPgjs8EIAorpj-QmKb2XmemYJHg,6953
47
+ gdsdiff/backends/cpu.py,sha256=bEGVoDP0ZWqxhqygDVipI6NpQEtjEqGFX8S02_tJltg,696
48
+ gdsdiff/backends/cpu_ctypes.py,sha256=5r9W3LGdPvDxvpx18s5aqtiuS-TbiDzpL47FS3uCtZw,9372
49
+ gdsdiff/backends/cuda.py,sha256=EJv1pc1d4sorW6eGfkqAvyX91_9jAga9hEBcdIpRhOA,1262
50
+ gdsdiff/backends/cuda_ctypes.py,sha256=vGezV0ZtJxeqpcfSl9o1tvSTFzACXf1-TDSoPiedJkI,55367
51
+ gdsdiff/backends/exact.py,sha256=6dbcy4CFl6iq88E_8clu1vuNpM7Ev4Pe5lrfb0Codcc,18957
52
+ gdsdiff/backends/geometry_ctypes.py,sha256=xRstJABHr9xCs2wvkKiwDpqtuQgK9KY7rIfHKn-0fj8,8691
53
+ gdsdiff/backends/identity.py,sha256=cW-C2TJUMeCiKAtlIBZ5UqZgD6L-gdZbycXbB33fdIA,1651
54
+ gdsdiff/backends/metal.py,sha256=8gt1JKwOHickJzK6rWkITdDtR6_I13sALdEkIQoo7jA,9268
55
+ gdsdiff/backends/metal_ctypes.py,sha256=1LLA6mxy987Mc2a54QBNS5AbzvyeoeNJ2tUrIeonxfs,34916
56
+ gdsdiff/backends/polygon_extract_ctypes.py,sha256=AiqNoZFoqymCT02LzgMy7cmysTFaLG5pFnW1Y761lpQ,8576
57
+ gdsdiff/backends/structural_ctypes.py,sha256=QYZ6leMIeuXQ9QWE34ltC_ujyUcbKzPb7D7mUOSJikQ,3898
58
+ gdsdiff/native_src/cpu_prefilter.cpp,sha256=HmvtGdIIg21W190pdws1x6xHnM9nv5FNZMwmDEFpBbo,12229
59
+ gdsdiff/native_src/gds_boundary_loops.cpp,sha256=-cmaT-eUS1o68sp1m3UHmJtTDgrUu60OJZ0wgeIHGbk,17786
60
+ gdsdiff/native_src/gds_geometry_scan.cpp,sha256=GNwK2q5rOq_8HAvvJk6Jja0umFFpUHjOpZm00tPGJoQ,22511
61
+ gdsdiff/native_src/gds_polygon_extract.cpp,sha256=gmnStsvI050ygmP1Ot7p45Q6eQYqWoRYfGBk3h13eUI,22433
62
+ gdsdiff/native_src/gds_structural_scan.cpp,sha256=qTlgdkzViTexxn5nF2ZKayDJrHb4s0T5IWfrUCifjeM,11600
63
+ gdsdiff/native_src/gdsdiff/CMakeLists.txt,sha256=jUJM00eiVN3LX1oK8xXATPnZ6HBavrP8hTYqpmcwnlI,3871
64
+ gdsdiff/native_src/gdsdiff/core.cpp,sha256=ixuJiWRaSba0awE9td8ogWYJ65rzrV1K96X-u2Be4m8,7391
65
+ gdsdiff/native_src/gdsdiff/core.hpp,sha256=E3l5e7EcKCZGb-9RSPMAjrXBCYN-dZrFCTUXejntJjM,2761
66
+ gdsdiff/native_src/gdsdiff/cuda_assignment.cu,sha256=Up0k0uH4YCM-gHNjDxVGgQxEuQpuNKWR8sqDfyqsXiA,9869
67
+ gdsdiff/native_src/gdsdiff/cuda_assignment.cuh,sha256=Mg7cfhituqJGypf_Td5zKf4nlMoVs443WhHnmsYOd1Y,818
68
+ gdsdiff/native_src/gdsdiff/cuda_candidates.cu,sha256=x6CzR8tUF8YE8bE5OYpXoCmV3HA9WygtXm7FB2YhXaE,5108
69
+ gdsdiff/native_src/gdsdiff/cuda_candidates.cuh,sha256=BwsVG6XUyMKa1tWnYyH0c7gw-h4TX3N9wv97HGIg7w4,419
70
+ gdsdiff/native_src/gdsdiff/cuda_ctypes.cu,sha256=FEdB-G4Ik7jcnhtfZXJLQ61dqehkCQ3s4B0TFYszU_k,202048
71
+ gdsdiff/native_src/gdsdiff/cuda_memory.cu,sha256=kmXx3w66-KCloxnjT7MBtedls3kq8_6xucWD5uGcRpY,7698
72
+ gdsdiff/native_src/gdsdiff/cuda_memory.cuh,sha256=4medYNEGWbLrJrx4hMJgFd6TZ-zzq00lU7j8EMuBI0o,865
73
+ gdsdiff/native_src/gdsdiff/metal_ctypes.mm,sha256=TEXhgDGbcK4HrdBez2LH5ypDupIGW4LmfhawQ8iCKlE,123445
74
+ gdsdiff/native_src/gdsdiff/python_bindings.cpp,sha256=6Zx_AbHgW9bDoMmT9qe0BbqpOi4suhB5S4wEGtdIf0k,708
75
+ gdsdiff/native_src/gdsdiff/test_core.cpp,sha256=nzyUBclpm4Q91qkbSNQKGvBGrMK1--IfnB5Doe8SIE0,3123
76
+ gdsdiff/native_src/gdsdiff/test_cuda_assignment.cu,sha256=EEUR6tAZbmgtrCisQuiWR0p4Flc8bqJNerPRprZQNp4,3864
77
+ gdsdiff/native_src/gdsdiff/test_cuda_candidates.cu,sha256=yPvPfmM8Ec8vEi6ec5tJExWZGKyX-c0BIPVvk_zDVAg,3134
78
+ gdsdiff/native_src/gdsdiff/test_cuda_memory.cu,sha256=f484zaETdMq_tFHYKJ117JK2AxBGun5ZE6IVPZGfsBY,3474
79
+ gdsdiff/schemas/gdsdiff_report-v1.schema.json,sha256=8V6WVOicQsghIcMy-L7rBsBkmVe5PLpf_SamIoG74kE,4147
80
+ gdsdiff-0.1.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
81
+ gdsdiff-0.1.0.dist-info/METADATA,sha256=Gs54o6JZBzpSDU6HquNLIR9OHeT-ao50XfMbw31DQ1E,5231
82
+ gdsdiff-0.1.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
83
+ gdsdiff-0.1.0.dist-info/entry_points.txt,sha256=pbR70Qpnk370AOuptM_yTqE7f1LhMKm4TU1j7DCU5b4,139
84
+ gdsdiff-0.1.0.dist-info/top_level.txt,sha256=6SuSy2Tssdx7463FmBbtaOyxtz1Mr85VarBwldi_k0w,8
85
+ gdsdiff-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ gdsdiff = gdsdiff.cli:main
3
+ gdsdiff-diagnostics = gdsdiff.diagnostics:main
4
+ gdsdiff-prepare-cuda = gdsdiff.cuda_setup:main