lvkit 0.6.2__tar.gz → 0.7.0__tar.gz
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.
- {lvkit-0.6.2 → lvkit-0.7.0}/.gitignore +7 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/.pre-commit-config.yaml +6 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/PKG-INFO +1 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/pyproject.toml +1 -1
- lvkit-0.7.0/scripts/build_example_pages.sh +56 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/__init__.py +1 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/_pylabview_patches.py +43 -0
- lvkit-0.7.0/src/lvkit/cache_paths.py +522 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/cli.py +115 -102
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/connector_pane_patterns.json +8 -8
- lvkit-0.7.0/src/lvkit/data/measure_data.json +26 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/primitives.json +17 -16
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/docs/generate.py +3 -4
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/extractor.py +13 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/builders/structures.py +17 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/construction.py +49 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/core.py +7 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/describe.py +20 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/diff.py +15 -10
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/loading.py +5 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/models.py +70 -3
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/op_walk.py +10 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/operations.py +12 -3
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/queries.py +70 -7
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/store.py +34 -57
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/mcp/server.py +26 -24
- lvkit-0.7.0/src/lvkit/measure_data.py +130 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/models.py +28 -0
- lvkit-0.7.0/src/lvkit/output_cache.py +435 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/constants.py +8 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/front_panel.py +1 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/layout.py +94 -42
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/models.py +45 -4
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/node_types.py +45 -42
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/__init__.py +2 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/base.py +53 -14
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/case.py +16 -2
- lvkit-0.7.0/src/lvkit/parser/nodes/disable.py +313 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/event.py +8 -6
- lvkit-0.7.0/src/lvkit/parser/nodes/free_label.py +116 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/loop.py +52 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/sequence.py +14 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/type_mapping.py +10 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/vi.py +3 -0
- lvkit-0.7.0/src/lvkit/render/ARCHITECTURE.md +72 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/__init__.py +88 -9
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/backend.py +42 -2
- lvkit-0.7.0/src/lvkit/render/composite.py +475 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/connector_pane_panel.py +40 -9
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/diff_viewer.py +2 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/draw.py +16 -948
- lvkit-0.7.0/src/lvkit/render/glyph.py +118 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/__init__.py +8 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/__init__.py +21 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/arrow.py +35 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/base.py +51 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/factory.py +47 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/fallback.py +27 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/frame.py +41 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/decorations/line.py +21 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/__init__.py +7 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/arith.py +39 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_build.py +60 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_reverse.py +49 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_search.py +47 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_size.py +54 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_sort.py +49 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/array_split.py +60 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/base.py +441 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/boolean_constant.py +60 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/boolean_gate.py +160 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/bundle.py +35 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/bundle_by_name.py +49 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/centered_svg.py +31 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/cluster_constant.py +92 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/compound_arith.py +43 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/constant.py +165 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/control_ref_const.py +116 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/convert.py +57 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/error_cluster.py +57 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/event_data.py +78 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/formula_node.py +98 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/icon_image.py +26 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/in_place_element.py +43 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/inline_svg.py +30 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/invoke_node.py +104 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/label.py +113 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/local_variable.py +87 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/property_node.py +83 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/unbundle.py +34 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/variant.py +30 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/nodes/wrapped_box.py +77 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/__init__.py +8 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/base.py +118 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/case.py +40 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/disable.py +61 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/event.py +60 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/factory.py +63 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/flat_sequence.py +29 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/for_loop.py +89 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/generic.py +10 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/in_place.py +18 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/selectable.py +235 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/stacked_sequence.py +23 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/structures/while_loop.py +49 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/__init__.py +10 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/autoindex.py +40 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/base.py +44 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/concatenate.py +33 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/conditional.py +51 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/event_dyn.py +30 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/event_timeout.py +34 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/factory.py +53 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/generic.py +18 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/loop_count.py +29 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/selector.py +28 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/shift_register.py +32 -0
- lvkit-0.7.0/src/lvkit/render/glyphs/terminals/tunnel.py +33 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/icons.py +18 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/lane_pass.py +24 -2
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/nodes.py +64 -3
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/render_viewer.py +6 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/scene.py +199 -60
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/style.py +23 -3
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/templates/diff_viewer.html +23 -7
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/templates/render_viewer.html +21 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/theme_control.py +22 -18
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/theme_web.py +2 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/vi_diff.py +17 -2
- lvkit-0.7.0/tests/corpus/issues/29/PROVENANCE.md +23 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib1/Class/Class.lvclass +32 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib1/Class/Do.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib1/Lib1.lvlib +11 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib2/Class/Class.lvclass +40 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib2/Class/Do.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib2/Class/Test.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Lib2/Lib2.lvlib +11 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Test LVKit.aliases +2 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Test LVKit.lvlps +2 -0
- lvkit-0.7.0/tests/corpus/issues/29/Test LVKit/Test LVKit.lvproj +20 -0
- lvkit-0.7.0/tests/corpus/issues/30/PROVENANCE.md +32 -0
- lvkit-0.7.0/tests/corpus/issues/30/visible-frame-case-sequence.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/30/visible-frame-conditional-disable.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/31/PROVENANCE.md +25 -0
- lvkit-0.7.0/tests/corpus/issues/31/disable-structure-frame-names.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/32/PROVENANCE.md +17 -0
- lvkit-0.7.0/tests/corpus/issues/32/comments-and-decorations.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/33/PROVENANCE.md +17 -0
- lvkit-0.7.0/tests/corpus/issues/33/coercion-dot-consistency.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/34/PROVENANCE.md +35 -0
- lvkit-0.7.0/tests/corpus/issues/34/hidden-iteration-terminal.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/35/PROVENANCE.md +34 -0
- lvkit-0.7.0/tests/corpus/issues/35/objects-hidden-by-structures.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/36/PROVENANCE.md +18 -0
- lvkit-0.7.0/tests/corpus/issues/36/bundle-unbundle-names.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/37/PROVENANCE.md +17 -0
- lvkit-0.7.0/tests/corpus/issues/37/structure-tunnel-wire-bends.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/38/PROVENANCE.md +31 -0
- lvkit-0.7.0/tests/corpus/issues/38/auto-concatenating-tunnel.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/39/PROVENANCE.md +33 -0
- lvkit-0.7.0/tests/corpus/issues/39/zorder-not-respected.vi +0 -0
- lvkit-0.7.0/tests/corpus/issues/README.md +34 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_disable_graph.py +1 -2
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_disable_parser.py +89 -25
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_extraction_cache.py +143 -17
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_frame_zplane.py +7 -3
- lvkit-0.7.0/tests/test_issue_corpus.py +518 -0
- lvkit-0.7.0/tests/test_output_cache.py +305 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_primitive_name_uniqueness.py +4 -1
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_render.py +8 -16
- lvkit-0.7.0/tests/test_render_emission_order.py +144 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_render_viewer.py +46 -0
- lvkit-0.7.0/tests/test_subvi_nav.py +146 -0
- lvkit-0.6.2/src/lvkit/cache_paths.py +0 -280
- lvkit-0.6.2/src/lvkit/output_cache.py +0 -263
- lvkit-0.6.2/src/lvkit/parser/nodes/disable.py +0 -224
- lvkit-0.6.2/src/lvkit/render/glyph.py +0 -2147
- lvkit-0.6.2/tests/test_output_cache.py +0 -175
- lvkit-0.6.2/tests/test_subvi_nav.py +0 -75
- {lvkit-0.6.2 → lvkit-0.7.0}/LICENSE +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/NOTICE +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/deploy/cloudrun/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/docs/_internal/xml-schema/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/editors/vscode/LICENSE +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/editors/vscode/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/mcpb/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/plugin/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/audit_primitive_consistency.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/audit_terminal_order.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/audit_unresolved.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/build_hero.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/build_ni_function_catalog.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/connector_geometry_audit.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/dump_primitive_context.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/extract_corpus.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/gen_semantics_probe.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/generate_docs.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/generate_driver_data.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/generate_python.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/list_unknown_primitives.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/populate_vilib.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/pull_samples.sh +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/recategorize_vilib.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/render_gallery.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/reproduce_openg_corpus.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/study_unwired_direction.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/scripts/wire_decode_probe.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/__main__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/_data.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/README.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/ast_optimizer.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/ast_utils.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/builder.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/class_builder.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/condition_builder.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/context.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/dataflow.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/elementwise.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/error_handler.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/expressions.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/fragment.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/function.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/imports.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/base.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/case.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/compound.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/constant.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/event.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/first_call.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/formula.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/in_place.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/invoke_node.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/loop.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/nmux.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/primitive.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/printf.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/property_node.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/queue_ops.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/sequence.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/nodes/subvi.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/stubs.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/codegen/unresolved.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/connector_geometry.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/connector_pane_geometry.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/_index.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/daqmx.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/nidcpower.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/nidigital.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/nidmm.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/nifgen.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/niscope.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/niswitch.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/serial.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/drivers/visa.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/labview_error_codes.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/_index.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/array.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/file.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/string.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/time.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/openg/variant.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/_index.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/_pending_terminals.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/_types.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/addons.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/application-control.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/array.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/boolean.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/cluster-class-variant.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/collection.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/comparison.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/connectivity.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/control-simulation.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/data-communication.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/dialog-user-interface.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/express.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/file-io.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/graphics-sound.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/instrument-io.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/mathematics.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/measurement-io.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/numeric.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/report-generation.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/signal-processing.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/string.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/structures.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/synchronization.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/timing.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/data/vilib/waveform.json +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/docs/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/docs/html_generator.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/docs/template.css +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/docs/utils.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/flattened_typedesc.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/formula/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/formula/cparser.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/formula/emit.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/formula/lexer.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/formula/nodes.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/analysis.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/builders/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/builders/context.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/builders/operations.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/builders/refs.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/interface_order.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/netlist.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/graph/parallel_parse.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/build.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/model.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/project.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/query.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/index/sql.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/labview_error.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/labview_error_codes.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/labview_queue.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/load_mode.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/lv_detect.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/mcp/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/mcp/schemas.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/num_format.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/conp_types.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/defaults.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/flags.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/fp_heap_type.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/metadata.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/naming.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/constant.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/nodes/decompose.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/type_resolution.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/utils.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/parser/wire_table.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/pipeline.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/primitive_resolver.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/project_store.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/py.typed +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/connector_pane.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/help_tip.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/properties_panel.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/render/wire_router.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/runtime/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/runtime/lv.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-convert/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-describe/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-document/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-query/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-resolve/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/skill_templates/lvkit-review/SKILL.md +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/structure.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/terminal_collector.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/text_encoding.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/tools/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/tools/connector_geometry_profile.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/type_defaults.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/unresolved.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/src/lvkit/vilib_resolver.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/__init__.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/conftest.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/helpers.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_array_ops_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_ast_builder.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_ast_optimizer.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_case_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_case_parser.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_class_field_walkup.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_class_parent_linkinfo.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_class_properties.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_cli.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_cli_cache.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_cli_graph_ops.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_cli_query.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_codegen_context.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_compound_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_condition_builder.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_connector_geometry.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_connector_pane_label_recovery.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_connector_pane_patterns.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_connector_pane_render.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_conp_types.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_constant_decoding.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_dependency_path_refs.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_determinism.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_diff.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_diff_properties.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_diff_viewer.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_docs_class_hierarchy.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_docs_render.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_driver_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_dynamic_dispatch.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_e2e_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_elementwise.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_error_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_error_handling.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_error_terminal_label_fallback.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_event_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_event_parser.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_extractor_concurrency.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_extractor_long_path.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_first_call_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_formula_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_formula_runtime.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_formula_semantics.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_formula_transpile.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_fp_heap_type.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_frame_attribution.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_glyphs.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_graceful_degradation.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_help_tip.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_import_startup.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_in_place_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_index.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_index_sql.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_index_warm_no_downgrade.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_interface_order.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_label_extraction.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_labview_queue.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_load_mode.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_load_upgrade.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_loop_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_lv_detect.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_lvpy.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_mcp_cache.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_mcp_evals.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_mcp_roots.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_naming.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_netlist.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_netlist_json.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_new_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_node_properties.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_parallel_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_parallel_parse.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_parser.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_parser_regression.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_primitive_positional_order.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_primitive_resolutions.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_progressive_index.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_progressive_warm.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_project_store.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_queue_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_sequence.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_soft_codegen.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_structure_lvproj.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_text_encoding.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_type_driven_fixes.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_type_fields.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_type_loading.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_type_mapping.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_unknown_nodes.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_unresolved.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_vi_graph.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_vi_properties.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_viewer_properties.py +0 -0
- {lvkit-0.6.2 → lvkit-0.7.0}/tests/test_vilib_docurls.py +0 -0
|
@@ -133,3 +133,10 @@ experiments/
|
|
|
133
133
|
|
|
134
134
|
# Claude Code agent worktrees (transient)
|
|
135
135
|
.claude/worktrees/
|
|
136
|
+
|
|
137
|
+
# CI deploy keys — never commit
|
|
138
|
+
pragmatest_deploy
|
|
139
|
+
pragmatest_deploy.pub
|
|
140
|
+
|
|
141
|
+
# @vscode/test-web downloads VS Code Web here (cwd-dependent) — ignore anywhere
|
|
142
|
+
.vscode-test-web/
|
|
@@ -15,8 +15,13 @@ repos:
|
|
|
15
15
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
16
16
|
rev: v5.0.0
|
|
17
17
|
hooks:
|
|
18
|
+
# Issue-repro fixtures under tests/corpus/ are attached verbatim and are
|
|
19
|
+
# hashed in each PROVENANCE.md — they must stay byte-identical, so the
|
|
20
|
+
# whitespace/line-ending fixers skip them.
|
|
18
21
|
- id: trailing-whitespace
|
|
22
|
+
exclude: ^tests/corpus/
|
|
19
23
|
- id: end-of-file-fixer
|
|
24
|
+
exclude: ^tests/corpus/
|
|
20
25
|
- id: check-yaml
|
|
21
26
|
- id: check-toml
|
|
22
27
|
- id: check-added-large-files
|
|
@@ -24,6 +29,7 @@ repos:
|
|
|
24
29
|
- id: check-merge-conflict
|
|
25
30
|
- id: mixed-line-ending
|
|
26
31
|
args: ["--fix=lf"]
|
|
32
|
+
exclude: ^tests/corpus/
|
|
27
33
|
|
|
28
34
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
29
35
|
rev: v0.14.14
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: lvkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: Understand and convert LabVIEW VIs to Python without a LabVIEW license
|
|
5
5
|
Project-URL: Repository, https://github.com/pragmatest-dev/lvkit
|
|
6
6
|
Project-URL: Issues, https://github.com/pragmatest-dev/lvkit/issues
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Regenerate the pragmatest.com lvkit example pages from PUBLIC sources cloned at
|
|
3
|
+
# build time — no local corpus, no hand-staged fixtures. Every input is a public
|
|
4
|
+
# git ref, so this runs identically on a fresh CI runner and on a dev box.
|
|
5
|
+
#
|
|
6
|
+
# scripts/build_example_pages.sh <output-dir>
|
|
7
|
+
#
|
|
8
|
+
# Produces, under <output-dir>:
|
|
9
|
+
# render/testcase.html — JKI VI Tester TestCase/run.vi @ tag 3.0.0
|
|
10
|
+
# diff/testcase.html — that VI 3.0.0 (base) -> 3.0.1 (head)
|
|
11
|
+
# render/md5.html — OpenG MD5 Message Digest (Binary String)__ogtk.vi
|
|
12
|
+
#
|
|
13
|
+
# Sources (both OSI-approved, redistributable):
|
|
14
|
+
# JKI-VI-Tester BSD-3-Clause github.com/JKISoftware/JKI-VI-Tester
|
|
15
|
+
# OpenG Toolkit BSD-3-Clause reproduced from upstream .vip via scripts/
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
OUT="${1:?usage: build_example_pages.sh <output-dir>}"
|
|
19
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
20
|
+
mkdir -p "$OUT/render" "$OUT/diff"
|
|
21
|
+
OUT="$(cd "$OUT" && pwd)" # absolute — lvk() renders from $ROOT, OUT must not be relative to it
|
|
22
|
+
WORK="$(mktemp -d)"
|
|
23
|
+
trap 'rm -rf "$WORK"' EXIT
|
|
24
|
+
|
|
25
|
+
lvk() { ( cd "$ROOT" && uv run lvkit "$@" ); }
|
|
26
|
+
|
|
27
|
+
# --- JKI VI Tester: TestCase/run.vi at 3.0.0 (base) vs 3.0.1 (head) -----------
|
|
28
|
+
# run_base = the committed run.vi at tag 3.0.0; run_head = the same file at 3.0.1
|
|
29
|
+
# (JKI wrapped several nodes in a new Case between those releases). Both are real
|
|
30
|
+
# public commits — extracted with `git show`, never hand-edited.
|
|
31
|
+
JKI="$WORK/JKI-VI-Tester"
|
|
32
|
+
RUNVI="source/Classes/TestCase/run.vi"
|
|
33
|
+
echo "clone JKI-VI-Tester (BSD-3-Clause)"
|
|
34
|
+
git clone --quiet https://github.com/JKISoftware/JKI-VI-Tester.git "$JKI"
|
|
35
|
+
git -C "$JKI" show 3.0.0:"$RUNVI" > "$WORK/run_base.vi"
|
|
36
|
+
git -C "$JKI" show 3.0.1:"$RUNVI" > "$WORK/run_head.vi"
|
|
37
|
+
|
|
38
|
+
echo "→ render: testcase ($OUT/render/testcase.html)"
|
|
39
|
+
lvk render "$WORK/run_base.vi" --format html --search-path "$JKI/source" \
|
|
40
|
+
--no-cache -o "$OUT/render/testcase.html"
|
|
41
|
+
|
|
42
|
+
echo "→ diff: testcase ($OUT/diff/testcase.html)"
|
|
43
|
+
lvk diff "$WORK/run_base.vi" "$WORK/run_head.vi" --format html \
|
|
44
|
+
--search-path "$JKI/source" --no-cache -o "$OUT/diff/testcase.html"
|
|
45
|
+
|
|
46
|
+
# --- OpenG MD5 (BSD-3-Clause), reproduced from upstream .vip packages ---------
|
|
47
|
+
OPENG="$WORK/openg"
|
|
48
|
+
echo "reproduce OpenG corpus (BSD-3-Clause; fetches upstream .vip)"
|
|
49
|
+
uv run python "$ROOT/scripts/reproduce_openg_corpus.py" "$OPENG"
|
|
50
|
+
MD5="$OPENG/File Group 0/user.lib/_OpenG.lib/md5/md5.llb/MD5 Message Digest (Binary String)__ogtk.vi"
|
|
51
|
+
|
|
52
|
+
echo "→ render: md5 ($OUT/render/md5.html)"
|
|
53
|
+
lvk render "$MD5" --format html --search-path "$OPENG" \
|
|
54
|
+
--no-cache -o "$OUT/render/md5.html"
|
|
55
|
+
|
|
56
|
+
echo "done → $OUT"
|
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
|
-
__version__ = "0.
|
|
7
|
+
__version__ = "0.7.0"
|
|
8
8
|
|
|
9
9
|
# The public API is exposed LAZILY (PEP 562 module ``__getattr__``): the graph /
|
|
10
10
|
# parser / structure stacks (networkx, pydantic, pylabview, PIL — ~230 ms) load
|
|
@@ -44,6 +44,7 @@ with warnings.catch_warnings():
|
|
|
44
44
|
warnings.simplefilter("ignore", SyntaxWarning)
|
|
45
45
|
import pylabview.LVblock as _lv_block # type: ignore[import-untyped]
|
|
46
46
|
import pylabview.LVdatatype as _lv_datatype # type: ignore[import-untyped]
|
|
47
|
+
import pylabview.LVheap as _lv_heap # type: ignore[import-untyped]
|
|
47
48
|
import pylabview.LVmisc as _lv_misc # type: ignore[import-untyped]
|
|
48
49
|
import pylabview.LVrsrcontainer as _lv_rsrc # type: ignore[import-untyped]
|
|
49
50
|
import pylabview.LVxml as _lv_xml # type: ignore[import-untyped]
|
|
@@ -283,4 +284,46 @@ def install_pylabview_patches() -> None:
|
|
|
283
284
|
_resilient_tdlist.__wrapped__ = _orig_tdlist # type: ignore[attr-defined]
|
|
284
285
|
_lv_block.VCTP.exportXMLTypeDescList = _resilient_tdlist
|
|
285
286
|
|
|
287
|
+
# (7) HeapNodeString.prepareContentXML — byte-EXACT binary DefaultData.
|
|
288
|
+
# pylabview serializes every string heap value by decoding the raw bytes
|
|
289
|
+
# through a text codec (``self.content.decode(self.vi.textEncoding)``). For a
|
|
290
|
+
# binary ``DefaultData`` value — a constant's FLATTENED bytes: a 4-byte
|
|
291
|
+
# big-endian length prefix + content — any byte >= 0x80 is not representable
|
|
292
|
+
# in the mac_roman -> native transcode (``normalize_extracted_xml``) and
|
|
293
|
+
# collapses to U+FFFD, which our ``decode_xml_entities_to_bytes`` recovers as
|
|
294
|
+
# 0xFD. So a 250-byte string whose length prefix is ``00 00 00 FA`` reads back
|
|
295
|
+
# as 253, and the constant decodes to an EMPTY string (the whole 22-line
|
|
296
|
+
# dictionary constant renders as a blank box). LabVIEW display TEXT
|
|
297
|
+
# (labels / node & method names / format strings) legitimately rides the
|
|
298
|
+
# mac_roman + normalize path and must stay literal, so we rewrite ONLY the
|
|
299
|
+
# binary ``OF__DefaultData`` tag: emit each byte as a printable-ASCII literal
|
|
300
|
+
# or an ``&#xNN;`` entity of the byte value — exactly the byte-entity form the
|
|
301
|
+
# constant reader and the text-encoding tests already expect. Entities are
|
|
302
|
+
# ASCII, so ``normalize_extracted_xml`` leaves them untouched and the reader
|
|
303
|
+
# recovers each byte; the value's final code page is then applied by
|
|
304
|
+
# ``decode_labview_text`` (so a CJK string constant still decodes correctly).
|
|
305
|
+
_default_data_tag = _lv_heap.OBJ_FIELD_TAGS.OF__DefaultData
|
|
306
|
+
_orig_prep = _lv_heap.HeapNodeString.prepareContentXML
|
|
307
|
+
|
|
308
|
+
def _byte_exact_default_data(self, fname_base): # type: ignore[no-untyped-def]
|
|
309
|
+
content = self.content
|
|
310
|
+
if (
|
|
311
|
+
self.tagEn != _default_data_tag
|
|
312
|
+
or content is None
|
|
313
|
+
or isinstance(content, bool)
|
|
314
|
+
):
|
|
315
|
+
return _orig_prep(self, fname_base)
|
|
316
|
+
out = []
|
|
317
|
+
for b in content:
|
|
318
|
+
# printable ASCII (minus the wrapping quote and XML/CDATA-special
|
|
319
|
+
# bytes) stays literal; everything else -> exact byte entity, so the
|
|
320
|
+
# value round-trips byte-for-byte through CDATA + normalize.
|
|
321
|
+
if 0x20 <= b <= 0x7E and b not in (0x22, 0x26, 0x3C, 0x3E):
|
|
322
|
+
out.append(chr(b))
|
|
323
|
+
else:
|
|
324
|
+
out.append(f"&#x{b:02x};")
|
|
325
|
+
return '"' + "".join(out) + '"'
|
|
326
|
+
|
|
327
|
+
_lv_heap.HeapNodeString.prepareContentXML = _byte_exact_default_data
|
|
328
|
+
|
|
286
329
|
_installed = True
|