py-teststand 0.2.2__tar.gz → 0.2.3__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.
- {py_teststand-0.2.2 → py_teststand-0.2.3}/PKG-INFO +1 -1
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/analyzer_step_name_length.py +4 -4
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/property_object_serialize.py +7 -7
- {py_teststand-0.2.2 → py_teststand-0.2.3}/pyproject.toml +7 -1
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/__init__.py +7 -1
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/adapter.py +4 -10
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/dotnet.py +8 -2
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/labview.py +10 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/labview_nxg.py +11 -1
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/sequence.py +5 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/rule_configuration.py +6 -2
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/com_wrapper.py +1 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/engine/engine.py +4 -2
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/sync_manager.py +9 -9
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/property/property_object.py +5 -6
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/code_template.py +5 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/sequence_file.py +12 -9
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/step_type.py +0 -1
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/events.py +9 -9
- py_teststand-0.2.3/tests/unit/test_public_api.py +52 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/.gitignore +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/.markdownlint-cli2.jsonc +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/.python-version +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/CLAUDE.md +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/GEMINI.md +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/LICENSE +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/README.md +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/data_type_manage.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/execution_run_subsequence.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/execution_run_test_headless.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/launch_all_examples.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/search_directory_manage.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/sequence_build.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/station_options_update.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/step_insert.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/step_insert_from_template.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/ui_messages_handle.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/users_manage.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/variables_manage.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/examples/workspace_create.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/.graphify_labels.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/.graphify_python +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/.graphify_root +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/.graphify_uncached.txt +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/GRAPH_REPORT.md +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/00300beaf41ddf8ca88a2133f315f9873877e388dfadf2343bc93ad9ec7189af.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0041043937ad3008273915d37b7f4b2d48ca2c4612d45ae3f8cd0cb931b90f9f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/021c67591ed36baaccec5597b1aaa5da45a3d107860151d0c14da8d8e82d13fe.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/023707fc22c5dae0fe050b058cef36e8166178bd19bf64c19d1d5769193e0b66.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/040ee1db9c6b7f496603e954cded103cc0a695fdff0107104d1971e6bd77fa80.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/05037a9ec557a4372515feea0cb82e6b8112ac7c5e298565964fbd270f96bb55.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0524858e50a4d2f7d2ac92c57ca3c87df637bf4c3158c7092a413e4393c857a4.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/05547b7aeeb2f4a7f5f21a8e7104b9116d781c941b744c43b0ea6c82e21b5fdd.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0561a3660d3619ac6a5591c0657208ef1151afc18df8f2fd6f97de8670d8eb60.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/057056cc111fdb36b69e58f64079572f5c47872e0727d1ad3dfc0f35e7d39a4f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/057e562996ba53b27fd80676787dca1563c48de754f9cd7932562ae64c3b5489.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/064e97d62db5d77399540dec673d05b900a3e29224bb4e45bc3e879729f20003.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/06511afc1a360b72ddc9b4497a994dca686aef3b97922cc8b80443403a4ddb83.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/06c31bd2b14400097f1e5123a6f39525ba4c4e5e2a5e7ff4c38a43b224d20a0d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/070c095dddd2f798973cbb1332d344bf81370ea5a6eda28e88b1f7a27ef6c709.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/09332e170176084c6344fec2f82b8e890d06f8e32680643e316246716bee53e3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/094e59f0e4cdb42feca81333bf3bf014eca76ad887ef1490483f798c17d40cd5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0aec586f84490fed93173f8a2200485ceffc529450740dcf5edbe12a7d89f781.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0af23434a97b56cbda3aaf2de520ee9e18a629be0ef406a90dac45260481c1bf.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0bd90bc4c1dd73076d8627f6ea7be67faaf504d30221b1dce45cb1c443755fb5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/0e7f3eedcff4a433a47611e1adf13860af5e6d16fbb6129fc48ddd8557aa1626.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/100f3021f37614916d64cfaf40b04fda8d1989d624d03d93a97ec6ca79bf17e0.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1051e1923497524696fb7fa1b71ba3a9d3cf12ec8519b1e8209d9d5eac717990.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1086f0d1446ee0d57fc4c325f3828ff783e328ced88aac13b45f718161499e53.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/10fe404eb03263a768b27a2e92b2fe20e33cda3eab265a84860286430be0a49b.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/13bdd9d4f7de5ab5fbb955890067eb3772a2302e014480243ae141a4eee8b4f7.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/167515af1cd986fa06cab9d7efa9f1feb18bc95e3c6de1dba854adafc7ae8ead.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/16fba3996eb41939497dbd0f426c599e4ebc1eb5a762d7e1ff143708e49e94dc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/17de4e480542b25d6f2a11461ae4f41a6282c3ecbeb3619b0b42fdbb7f31939c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/17fbd1888f87c0b6c099e7e88300cf58e26adda72cf2f2297fc1f0e6bd2e9257.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1d601091a3312ce89ddc9523bffccf41742eb6ea1223a6b4f751c210ffce1fb4.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1e4049e0856983245c1154127a97509e576a1fd14f3ea56d52f946878a535bae.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1e4d42449081955231608e3fa48b5c3102243d55a80e9064b88440669ed821b2.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1f727c948a41c946dd0aa376993d5620f226497d49404c03b3c175d057b4ab29.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1f7c2be5abf85169f9c409d39e58419418193281eeb391dc3ec0d1f6784f40dc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/1f9db61abe1368fa82aab9d8e1b27d97389172db6c78cc23abe03025876ebdd1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/207fdd9cd514b05162cd7babd5d2252985853a11cdf847113056a5071e8377e3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/2165f2f41684c71dbce5e6edf7262786c5aa8518828e00e2a4dce75492f53aa3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/22832c79316ab6a0c79a6bca80d9635ba80df2e2079ac114c354d43aec19f95c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/22e04e79d7912eb1b7e3bca68279f3fa7e2936b3d2706fcdf688fff96f7c30c8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/252d1adbbb189a3636432d8de48b5ed7c8d1f185c5ea46ceb616071960b1be42.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/25ab62b76a5f58693d5161dabf0a58862a7d6d5e9b054cc2347ffb79d4468f65.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/29731b11c9bdce6c0524fbcf801177b2da8d3181efa44ab73832e8dc0ed442bd.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/29ae039e1d154e5d25fc8659bf1eb270830e4fec772f91f41bf1cb9744733674.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/2b7f894857506a93df04568d3bc252c6883ac4010ba64b49a8c13c9cd06330ca.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/2bbb54bb8f3b91b33e7e872ea5e2b129079a60fe8284b8dd8bf5488b2f76b55d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/2d70a40698b885cb7705c0d57922dfc922ef6b90e9a4580935d170395bc51a6e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/2ddf8f9e5aa81db1e984bd5812d91143f64ab806a7b5676d6e7f23d1d08f677f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/318ebfed808e94269a07fb5136c60f910bf810ffa3bef5aa7c26c313519147df.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3289a80010b6c0faed89308018fa31f7031f27ae0d853299443c23ba8a4d6e6b.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3312f8a2eccbfd08fabdba5d2af656bfbcb95e5b7e5390abf35ad5140759a710.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/35d6fee40fd65a1c224aa8320fbd8ef959f6975b16cc89fc2cfbb3c1b4e95641.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3654ae6c52c3267b7a62b7697d69011bd6446dd3f6da9bc5b133da4c2efe7d6b.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/37cb92f2f6a01d4862632405ced4934cc003818147fd14ea9a636bc7336d3af1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3a06bdbfe7f9ae5d627e941fdd9e616d0431a4f41b37c8f8d7b3f5751fcadb21.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3ac8bb6902eda596ffe0f32f517fb6e567a34e52e76c4ccc682d7c7dcf65f06a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3ace387692703afd7ecab2396d8eb8b3dc6411c0931ebf68ff5370013c707fa9.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3b65d0f842b856818ed2510234a106990e02450d60aed9075cc4c9f4b14101bc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3b90f45c585a53b5f55ef2c3761eef4b97fcef1eb344f9a4819c989b174b52e5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3cf920bfdd765673b964deab1cf13959604b7648091d4c58209f818cc3fede98.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/3d97defd459d93180b984ca62794c47f1da9a8dc105175bfc1d8948fc8dc3f29.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/4096008e37ad33f487fa031012fdc7f354edbb3e2c3d82eeeae616e8e1ae75fa.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/4278f99739c7c54475247d2cfb57eda95ad3cc39d7bbaf04729c04932d9fef12.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/44963597cd3ea0c48e79c9aeb4e7838f1faa5bcde319b7ff81b29aa6549d551f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/455df594e48e61d53c059f4ddad24e31e427232f4fe871e8ff384227350cc9ce.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/49e757465d8e83eb1ea11482682a0dc9bf8dd399847c883954925749ad6470c2.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/4c3d7045d901449868d2003d5529dd6f41d635c9e1ef1b1b8a0bee5e15aafc70.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/4e9f3dd260b769260bab0fd12ca46ae6b3b17221c6968fed8b7907173b05fc2d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/50c625a30e42a14c35d57d119aba7e16a17fa05fc60cb5ff961c61a77f6129d0.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/50d6499184d0d9889c9571e8f6b7b7def3329721be05cc10bbac13520f8eef37.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/519a945f4a84c930588f887f3b23f13102ea6138645d177cef5f98b7b91e6229.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/523e956286ac13d37bfffa655ef1e83b1ecd17889caeae0ede6e99cb03c29e83.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5254fe829c1a1554024b185254ce1177eaafa64b3ea72a0732abc7a205074b23.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/531a38ee0ed1035f37eecda69c27f43d9a0ecd6fea2fc6127c3a3318f5f06dad.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/535082e7e072de1deb460d4d58ba560c76f4c0ffdba7836846c3699d4c47fc5a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/55cb312149a7885f52f272daaf0060fbdbd8e26dc67e79c7b15d94a32b750749.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/563deb73b3327340c242a025beeca43321716dfbcea23fac9c89875d67a08f72.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/58191b4e65d5ba31195e59a1f244014669e52970d0bfe01bc99ab171f54e1c03.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/584d486255b4cee316ca9e6e3656c989d600ac403ccf01bdb3d548606678b17b.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/589dad68071e187dbb2fbbaa04d83c88bf219f7d428bfe1aa5a1ff7dbf023a23.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5a0a54d982fe112ff92a0263994062f4bf21f02c426b6936f257e80d02efabb9.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5a4e9b332727fe6e94e1548fb31f14aef41966f5ead08e7dde780b02d60148f5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5a8f8b728c901bfe909cccedbe276a221a7e0af456ebb26189774931eded5a74.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5bd0ff70a33bedbee8d278646e92ab57e29a43867cd60e7fb918508833117b56.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/5c088e2c173f3f6dd18f3df4cd20a198a76d4d5da9db7f8b749b55ea97210f05.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6095cf8a05c742b2d126bfc1cb9064a3c3cae65911146f1c4d36e2d4f86f1680.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6207dfec219a33509fc91cdd0055029c6b360a28fe282bee4bf489a4d45400d3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/62602a326a616b0ef6a3ee96fdf794a5815d0a69babd77a9a85e68ba6599db60.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/627d8be024734a3d490521cd423e9db4c50870f3ca6ac761e75f86ea55eb9491.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/62ace6fa362a937c7d2e645eea0192df37d1de5fc0fcc9f0a16f708b74ecd48a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6464e2cd097df4628226ba38836dd4d55ea4b97dba4dd952e1a34c84fa00e914.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6469622a3449ce827fd414b465085e38a53133a20024b6c30e13c6fab1cbd06e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/64990a73d75b059ef41bfa7ffe5dc818e1e197e3509f3b568e7fec254760bdad.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/68806e21c83d8f6bb9b7deaf161a26e2543fb6a6052839b92fd229c44de4785d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/689e2aa834fc2b6c42e3a6ad0c9b2a9060d968a9a8dd8d1c47be911b5a7347c6.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/69e95bec750edd2374827041d52575a2c09051c1adb4b1eab17cb8dc9ed5ee9d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6a583adb3c041e3e49886b4b96a73494fdb8c677ac28463c037845ba616348a3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6b39e36d9b59b214516369764a7c635e8b6af335c69fd2ab4fbd3be0aa12f539.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6bae4a41d4b3c584b87f6e963948951164f820ba2f77065856e93fa5fb77da4f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6be37bdd97101b62dc6fd786d39749426e719b5f9c0464ceb43cdfc63e56d5b0.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6d775401047dd566d5fcab422fdb64798fc85eef1ccd9444c43376314a7e81ba.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/6e8481e9dad0e6c1793e5f6ccbbf1dfb5ba88a09fb9e326425df6bf3b5b10e33.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/70ac455c2976654f81e4ada2accbeb9a0ed097e513ee641a1767038b60f3d058.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/715a84c56ee658f84a9b5930a0d01326da31d98b891e6ba0be647527f999167c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/73190900d1852a833a8e0c0cc86f2a1083d4b3ffcdd36ccf239bf3fefe2be9b9.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/731a07b1575dc21af660051d44974822d16d4d07e0ff8c959f3e7971c16e9a7a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/73ee87e06204f3346bd71d9107d89a9171428bacf3611019cdfcfd4aef224acb.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/73f5451927075637af3c96c14efec5d69b6da496baee2dc759048edc9b12c232.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/74c85d86a6d8483900d3fa46e3dd606f54d64af4ae6e5b75421fe1c6788b3c60.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/77cefb8a568e79bbbf5ea2f16eca5b1dedef30fde3405aab81eec97baf84f827.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/782afa626a4098a473fab0fb263ca59c59db1111372aa81c48944c3b8c95f491.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/79ce979e77967e52a44d8579c4303ab655f65ad9bc258c3bd96c3dd7305cae06.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7c6ac8a21f4385b56aeea01fee3766a0f9abbbc6f9a0590ea16325f235efcf20.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7ceeb2d8df9a1700574716eeb32d72e4fd574ea02d01cb3e1e48e65df9c5003a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7d5f935bff18ec87a6c7a089cd08c4d89cc922a0e020c1fb1b57f13ed586358c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7db158ee49deabc6bb44403c7cde05504828d9e0ab9059b2630fc953bd81d93c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7dc6b1a6affc2de030eaa790e0826a3797ed82b2f5e6df1481df872f1f511e9e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7e0aa14109be2807e6cab542dd82edba518e53ede3c664eb7224a8dfe651f469.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7f546efb5963586a767ed1de189fdadacbe4ae8989478a5a66e5120052df625f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/7fbf42c8c7d52f048579426d9da3dd81d5828c24c2321a3795fb3b7659b92a0c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/80c3a5a1b8160107475d142a6135ddaf906da9307805f2e68ba8c3af04aa9882.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/81a280d2907246e14a57096449e036eb0363da6f0074ecedf14879d6f09a826c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/81d4d752174e5a09b2ba32a01724629f16137270b7f0f098a5e66b6a1c689d18.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/82cad94a35ab2d431beb0f15d5d13decd59ab65525dfc802995ddc7fbacedc21.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/83d57f81198fde4ad8a03bbe0f9d80058eb82724505cb31283206d38486285cc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/85af66fc476055f4e450401935be1757b9d043099c0530a55edaaa9e8fc45b78.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/85c074209d24896e542e425b1fb9fad5d2704db1286e406b25fbe2a9e1c62ac8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/86332e56e1d088488a3378a8ffb47b13abb39e8c81cdeb5f1d546a14a5d4e03f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/866b406c0825b3fd70dd6c7a0c04d67018b3701b14bf2658d5f05ebbfb134bb2.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/869ef8c9b4cfacfe7b568dedfac756cc52c7635bd951bacceb6f68930061e798.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8b4f66ce9958d1bb4077dfe1d0e4df2f7f4642a838714dbc93316dc3c8523534.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8b9eaad4dfb5c0936cebcafde3c3b368c71c5c2e7f4fbc282c887051e25567e5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8e4e1c38e46c8daa3c97656d09feaa9fbb2f083b3401f9fbdf7fb53a87bb50f6.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8e73cca8cf7e6238b5a9e4a46b62d2cf8968fb9e071c8ff8e21a55b1cbb1cd46.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8ec0bfac79ec428f8e9bd6ef770eee33b0218601b0ada7b113da52b4a53ca6fc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/8f1414450de85a7ca36b1c4508c946084f9eaa83eee74f709dd09ebb7fc9e773.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/92e467b0ca6f7256ca2bd57e96777a76d4cd15d574eb169a10d37c8c5737fb3d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/93eb2741e82d5f2c723db19741da0ec90a516da435c2be2ce0c63fcf18a478af.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/95cb2ed2edc938dbc2eb71b8aeebaec57b8eaaf2229c8e7f4a1a702b36da6d36.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/95ede7cf79834cf530eb2332a0a7859f1f3b27cc246645cb88421aa0def23623.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/97aaf1b808af614b0985c5d9ea1196a794a2453b59c9bb81cac1561b29f9092f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9811147e5abebc52edff502471a40f369ee1329e9f029ef3258976404f06a8f9.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/98270c04210ce70f7197fd3c1df74140159aed78f3d6b0c736b9fd1de4309b68.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/98f967e9230b612cb641244c969d3461874f40a74d00096217c05b4ca3cc5163.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9a710f33bcbf32f6281ef3199603286b84e3ead526791be3e5702cf19a10ba80.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9cce4a16b043c387789e0867504b51418b27f557bf5874111ac917bde8e0b109.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9cd2cffa72ed809a1541ad88bf92c541857c512b6e7fe07c5d9bb348a51c071a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9d06f4503bab33ea71454511db6e94b3a27c29ad650cc9cdbfd5b43138f476a6.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9d3d1aee5a15a733c47dd04fdb5943d68a49f8ce13d67b05bc0a14497328f58d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9d440f60091a4f93dcf1d78367e2c71755a3acdfe8844a1b5f756a235b763488.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9fd47dbb9db188abce18b1f3063253323bca0327c3362dbe36ee49250e348d54.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/9fe051f8082e371f9df5f940b8f071800623a9ad5b40755285095658d8f28b5a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a06be12e9602b3b595742d0cad924633191314032eaf6acaba75ae02c60a9811.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a5369060fbe387a285b63275bb4e455f350efee2df2aa880f03b07ef8e64fe7c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a67e0d0fc7ebb86fc0e08ddc07be6131e22b253ad50fb36935e7901dec5977b7.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a817b12b6f3c5a089ad11643f41230ba21f1987251b7a190b39cad4f485dabc5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a86964aa1cbd83641808a11c8ec3231008bae1345219c2a5646e36a8e06599a5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/a93efc87b8b26bb8e00bc3bb298aedd3d7ac45ceb950802398d2414bbf47c0dc.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/aa76182d9de824910acfbbfc5ea8f46681debd787c018927147e47b85f056e8e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/aad95764364270f74a9a2b521a4eede3c4e63ec332fdb251f833610f46f62f9d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ac62f874e909973d6a406359c3a3331861f7775ce15427c629754984e6c2bc59.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/acf05ae7385ed2c7fc6639333fe802f06a0ae3b54b7dc2704234673a41328154.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ad228703c7b568b72aee72ca2c50dc043ba963295abff15d0f2eced3379378dd.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ad28df2f2e8bc652a77cead6d657c2aed9fb644428bbd3e2c69d3b21790b6405.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ae24c1a5d0d0a7e29eec5c4f95e19009825ded2c622d288ba63e6b25de7524b5.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/aed3d23a58b420ee0328b3bbab000572b8891d72ffb6232c3cf8b807241fe903.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/aedd4475f0cf7c73ea7553423af3f920eb19c3efa9eb2f8a611f6e898dfe2a44.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/aef7fe4c9cedf564455aa029d6cc89b79b56a532d04a56a8d092808c0ad4e5b1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b079373b22270ed561a40ead88df318a0b3cd52b143607c34f7340508f6e390e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b15b8672daa3f5df56cc7f97ee8294dd2d23b975dc9e34256c69726676be3daa.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b4476bcd1991a5a30b1ac3f78801025d2928cd8c77db07730551b0815ce13c36.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b470e846ba2a52d4e0763ff5739d1528d1b86974dd79c08358ceb33076790e76.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b5a337d95da18b2c918d1be090cf235c67a7a09cd60f23033e8c570fa8dbb748.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b60d2e0d59f626d9ff57d7230795b09be357a37343d0d2c0d1ca958a1857d8bd.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b6420f0dfb5e0f15c42fa9170634d6c2b3d0409749b00ffd3c9364246d88d790.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b647bffb0af3f94c4df75171f311ece530c6def16132a3a33f4b7deff6dd707a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b710a0414f46ecb976cc66ac059d3a74dbd64d0bf8f1116de968837e581b6422.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/b73436f8a0e225ea354ec4ad7993c5d5887b7227f7545e2ead47ac03ccc082cd.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ba1fcae5bd482a5ee1095215721f18a5951393e75bb88a9df1b3e1922e2202ef.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ba646e84c605179808ec987d421f534a1c4af669a910fdd1ac75bad73d8b587e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/bafd5076a18391e489c5133abd6aa6032cec2783626bbd8a84381b7896f21c9d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/bc630d1d2d79d48a0c7441c1081f97933ae9bc733733a7918a4cf498fa61b981.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/be18c3a11472b8d81adfe9761be1ff309c93c04be3f69d56638efb019757f8f7.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/be985fcfeb455e3d468126f1c7b65b4ab84b57c743118ef4ac021a88973dd155.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/bece45eb021b6454fcf8a9cf294536c7752f817beb12c90d65e0c21afe57a5a1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/c018635d30a0f5436fc124a28ca204b8199b2dcec3335147150e0d34b9e1f82a.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/c3e028aefdbe3e462d7f676938ae48c428b44031e7c4ef34fb4686904e97b3c8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/c7d3603bbe7edfbcfecc3a1b09bdd2307209be3fc7978fea7bfb7685c91b08d7.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/c9457b843ef85e899bfd9352d67f73980b1a2304cceb01e992440ffdd3d0eb5c.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/cb761115d0ed359fc4e55ad0c40245352cc091c68e5171ac20ef5e6d9d9832d1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/cc658b209eeaf4c9249998a1534cefdf6837ce3a7de82fc62202102fe09957a2.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/cd2ce8667e344c6769096140ab1e4d9829ba2424eb9bdb65dee55f09469fecc8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/cd8ce55adda67b165bf6272936d26dc172ba4d7a5fbfa4d5142181855c40f02d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/cecb346166b599b5343dad969681c67168e5130e3a4018ee8fc903efc273fe04.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ced68cd7e814d7774ffbdc161d16335221561854b99e12f107671e17337504b1.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d08762a2d53ea94992d179f3affdd360ad2d58277024715af643374e65e62606.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d48e2ae9efb9c635d241fe4f1d65e0ec51c9ac3740c29a0db58e3bcccc0e2466.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d54b3634353a29d5fc12e6ccc72ca587a9b2676489bf893524c004d4afdefa51.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d6200254d8034d573eb3b6bd33d39d7efddaa5fdf60a61453789e61853f03489.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d7bd2958a25f99487597175b812cc96293a1342810f5076c4a92a1506fba2599.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d8ad7e776fd4b3708759b004e7ed524ff77a988d48237e5d357dc99a9a3bb79d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/d9dd2631fda1b4480019731d75b0a908a057084bc22ad2ca66a2c381b86e0a38.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/db25c8d58f8689825c0d89e5ebb3ca93542b2dafa228fde7285dcd9565ccb552.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/dd430a8b0bc073c8deb7e7be1ca766292097b47301797452810293d73d53ff70.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ddaaecef88ef58b3207db5b55d5bbd8d91421cd99a49941482368f626cc28b9d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/df9ffa69edbeaabf967cd706016a4c97e6f9ffc41c5e38ad327fde2d452ddd3e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e1713cdd15edde27fe7f01c40841ee3ede0d411e350e2b31b9e8b5b2f9ce6feb.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e2eafeb868d33a2e19815315d4cfe04eaba57e9fa7835ec2a8f35b0ddffa3498.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e5581298f1ebdbc113077df91f6215a07ddde68e9a45c01035f87d241062abd2.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e5dcdfd16046923e879eb93db75c0df5067b2859f57259df63cdcce61ef2c03e.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e5e9a12f89839a814832a5d5c375d4f6da3f81197790d2d52467fca122f43fd8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e8c2aff5248d3d761f3f8175e68f1ff46704c934465ccca6d284d40eeb54ae87.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/e992bfbfd3c2b33a9dac8499d800f5fcc3d7c33d8d84f90eb705bbd780a32b32.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ea02b9cc1c110994d38e9aa28b9e4fdf49c7b0e074809f09760f068bc41dc7f8.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/edbe4c5e6076cc2c119ccec658be0196128b8742a9d640cb9cdf7d79aa622304.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/ef396e2cc36a574a59a95bf95caae976ec92698d1b43a1fdca8e7a20609d6aa3.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f1607b2d6749b8e2f1b21e6985fa4da4077d01500b190e20b3d4ac89c8cd0e69.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f2c65b378401d4e854bb4d18bc4396419ca74dc8c84a5a8d57f4074baeeeb63f.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f5a620cd0622f180ea799f73823c099958513ca86ff822d9fc45f73b106b35c4.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f649350396b8f14e079a1646de95a5e490c709748fcd989a603afad3a7044898.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f68a4af4ef4d24cc0416195c9b123d0cb4f6811c08554914866d4a86835dab24.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/f9ee28f629cd46d9b44cdd1dfa64aadb0231af8002093266902d90e1f2f9fc88.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/faabe069e0568dabcc65124f0fa7d56e3ddfadf62523fc3f208ee4ad11c46f8d.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/fe209b7393dc29439e121809022e793527d4208c2957d479e9f0706d4ba357e0.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/ast/fe674973c21bca43da88fbeadc8361422a28aeb4d9eaca2db7d40f99a04d5608.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/cache/stat-index.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/graph.html +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/graph.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/manifest.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/graphify-out/merged-graph.json +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/activex.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/cvi.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/dll.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/htbasic.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/adapters/python.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/analysis_context.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/analysis_message.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/analysis_utilities.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/rule.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/rule_setting_values.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/analyzer/types.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/engine/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/engine/enums.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/exceptions.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/external_report_viewers.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/file_information.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/images.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/search.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/core/utility.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/additional_results.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/breakpoint.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/database_options.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/edit_args.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/execution.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/interactive_args.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/output_record_stream.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/report.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/result_log.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/thread.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/execution/watch_expression.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ext/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ext/events.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ext/step_types.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/messaging/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/messaging/output_message.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/messaging/output_messages.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/messaging/ui_message.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/property/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/property/array_dimensions.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/property/data_type.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/property/property_object_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/py.typed +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/expression.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/location.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/sequence.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/sequence_context.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/step.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/step_group.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/sequence/type_palette.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/station/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/station/search_directories.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/station/station_options.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/application_manager.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/button_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/checkbox_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/combobox_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/command.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/connections.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/entry_point.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/execution_view_manager.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/expression_edit_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/insertion_palette.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/label_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/list_box_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/listbar_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/menu_item.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/report_view_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/sequence_file_view_manager.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/sequence_view_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/status_bar.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/styles.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/ui/variables_view_ctrl.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/undo/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/undo/undo_item.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/undo/undo_item_creator.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/undo/undo_stack.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/users/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/users/user.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/users/users_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/workspace/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/workspace/workspace_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/src/py_teststand/workspace/workspace_object.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/conftest.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/_ui_message_stress.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/test_api_compatibility.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/test_examples.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/test_memory_leaks.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/test_property_object_serialize.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/integration/test_ui_messages.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/test_core.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/adapters/test_activex_adapter.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/adapters/test_dotnet_adapter.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/adapters/test_labview_adapter.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/adapters/test_python_adapter.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/analyzer/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/analyzer/test_rule_authoring.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/__init__.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_engine.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_enums.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_errors.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_expression.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_property_object_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_sequence.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_sequence_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/core/test_step.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/execution/test_database_options.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/execution/test_execution.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/sequence/test_sequence.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/sequence/test_sequence_file.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/test_com_contract.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/test_core_mechanics.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/test_lifecycle.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/ui/test_events.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/ui/test_execution_view_manager.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/tests/unit/ui/test_sequence_file_view_manager.py +0 -0
- {py_teststand-0.2.2 → py_teststand-0.2.3}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py-teststand
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Community object-oriented Python 3 bindings for the National Instruments TestStand™ COM API
|
|
5
5
|
Project-URL: Repository, https://github.com/TheDomcio/py-teststand
|
|
6
6
|
Project-URL: Issues, https://github.com/TheDomcio/py-teststand/issues
|
|
@@ -37,7 +37,7 @@ MAXIMUM_STEP_NAME_LENGTH = 15
|
|
|
37
37
|
transitions=(AnalysisTransition.BeforeStep,),
|
|
38
38
|
severity=RuleSeverity.Warning,
|
|
39
39
|
)
|
|
40
|
-
def check_step_name_length(context: Any) -> None:
|
|
40
|
+
def check_step_name_length(context: Any) -> None: # noqa: ANN401
|
|
41
41
|
"""Report any step whose name is longer than MAXIMUM_STEP_NAME_LENGTH."""
|
|
42
42
|
step: Any = context.object
|
|
43
43
|
name: Any = step.name
|
|
@@ -51,7 +51,7 @@ def check_step_name_length(context: Any) -> None:
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
class _Violation:
|
|
54
|
-
def __init__(self, rule_id: str, text: str, location: Any) -> None:
|
|
54
|
+
def __init__(self, rule_id: str, text: str, location: Any) -> None: # noqa: ANN401
|
|
55
55
|
self.rule_id: str = rule_id
|
|
56
56
|
self.text: str = text
|
|
57
57
|
self.location: Any = location
|
|
@@ -65,12 +65,12 @@ class _OfflineStepContext:
|
|
|
65
65
|
py_teststand.analyzer.AnalysisContext instead, whose `object` is the step.
|
|
66
66
|
"""
|
|
67
67
|
|
|
68
|
-
def __init__(self, analyzed_object: Any) -> None:
|
|
68
|
+
def __init__(self, analyzed_object: Any) -> None: # noqa: ANN401
|
|
69
69
|
self.object: Any = analyzed_object
|
|
70
70
|
self.transition = AnalysisTransition.BeforeStep
|
|
71
71
|
self.findings: list[_Violation] = []
|
|
72
72
|
|
|
73
|
-
def report(self, rule_id: str, text: str, location_object: Any = None) -> None:
|
|
73
|
+
def report(self, rule_id: str, text: str, location_object: Any = None) -> None: # noqa: ANN401
|
|
74
74
|
self.findings.append(_Violation(rule_id, text, location_object))
|
|
75
75
|
|
|
76
76
|
|
|
@@ -26,7 +26,7 @@ INSERT_IF_MISSING = int(PropertyOption.InsertIfMissing)
|
|
|
26
26
|
ROOT_TEMP_DIR = Path(tempfile.gettempdir()) / "py-teststand"
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def property_object_to_dict(container: Any) -> dict[str, Any]:
|
|
29
|
+
def property_object_to_dict(container: Any) -> dict[str, Any]: # noqa: ANN401
|
|
30
30
|
"""Walk a container PropertyObject's sub-properties into a plain dict."""
|
|
31
31
|
result: dict[str, Any] = {}
|
|
32
32
|
for index in range(container.get_num_sub_properties("")):
|
|
@@ -35,7 +35,7 @@ def property_object_to_dict(container: Any) -> dict[str, Any]:
|
|
|
35
35
|
return result
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
def _to_python(obj: Any) -> Any:
|
|
38
|
+
def _to_python(obj: Any) -> Any: # noqa: ANN401
|
|
39
39
|
"""Convert one sub-property object to a list (array), dict (container), or scalar."""
|
|
40
40
|
value_type, _is_object, is_array, _type_name = obj.get_type("")
|
|
41
41
|
if is_array:
|
|
@@ -52,7 +52,7 @@ def _to_python(obj: Any) -> Any:
|
|
|
52
52
|
return obj.get_val_string("", 0)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
def dict_to_property_object(engine: Engine, data: dict[str, Any], container: Any = None) -> Any:
|
|
55
|
+
def dict_to_property_object(engine: Engine, data: dict[str, Any], container: Any = None) -> Any: # noqa: ANN401
|
|
56
56
|
"""Rebuild a container PropertyObject from a dict produced by the walk above."""
|
|
57
57
|
if container is None:
|
|
58
58
|
container = engine.new_property_object(PropValType.Container, False, "", 0)
|
|
@@ -61,7 +61,7 @@ def dict_to_property_object(engine: Engine, data: dict[str, Any], container: Any
|
|
|
61
61
|
return container
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
def _set_member(engine: Engine, container: Any, name: str, value: Any) -> None:
|
|
64
|
+
def _set_member(engine: Engine, container: Any, name: str, value: Any) -> None: # noqa: ANN401
|
|
65
65
|
"""Create one sub-property (container, array, or scalar) from a Python value."""
|
|
66
66
|
if isinstance(value, dict):
|
|
67
67
|
container.new_sub_property(name, PropValType.Container, False, "", INSERT_IF_MISSING)
|
|
@@ -101,14 +101,14 @@ def _element_type(items: list[Any]) -> PropValType:
|
|
|
101
101
|
return PropValType.String
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
def _child(container: Any, name: str) -> Any:
|
|
104
|
+
def _child(container: Any, name: str) -> Any: # noqa: ANN401
|
|
105
105
|
"""Fetch a sub-property object, asserting it exists (keeps type-checkers happy)."""
|
|
106
106
|
obj = container.get_property_object(name, 0)
|
|
107
107
|
assert obj is not None
|
|
108
108
|
return obj
|
|
109
109
|
|
|
110
110
|
|
|
111
|
-
def _build_example_container(engine: Engine) -> Any:
|
|
111
|
+
def _build_example_container(engine: Engine) -> Any: # noqa: ANN401
|
|
112
112
|
"""Scalars, a scalar array, a nested DigitalMultimeter container, and an array of them."""
|
|
113
113
|
data = engine.new_property_object(PropValType.Container, False, "", 0)
|
|
114
114
|
data.set_val_number("TestResult", INSERT_IF_MISSING, 0.0)
|
|
@@ -138,7 +138,7 @@ def _build_example_container(engine: Engine) -> Any:
|
|
|
138
138
|
return data
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
def _child_by_offset(array: Any, offset: int) -> Any:
|
|
141
|
+
def _child_by_offset(array: Any, offset: int) -> Any: # noqa: ANN401
|
|
142
142
|
"""Fetch an array element object, asserting it exists (keeps type-checkers happy)."""
|
|
143
143
|
element = array.get_property_object_by_offset(offset, 0)
|
|
144
144
|
assert element is not None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "py-teststand"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.3"
|
|
4
4
|
description = "Community object-oriented Python 3 bindings for the National Instruments TestStand™ COM API"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
# Last supported by uv 0.11.15 (3cffe97c2 2026-05-18 x86_64-pc-windows-msvc)
|
|
@@ -132,6 +132,12 @@ url = "https://test.pypi.org/simple/"
|
|
|
132
132
|
publish-url = "https://test.pypi.org/legacy/"
|
|
133
133
|
explicit = true
|
|
134
134
|
|
|
135
|
+
[tool.pyrefly]
|
|
136
|
+
project-includes = [
|
|
137
|
+
"**/*.py*",
|
|
138
|
+
"**/*.ipynb",
|
|
139
|
+
]
|
|
140
|
+
|
|
135
141
|
[[tool.uv.index]]
|
|
136
142
|
name = "pypi"
|
|
137
143
|
url = "https://pypi.org/simple"
|
|
@@ -55,7 +55,9 @@ from .core.com_wrapper import COMWrapper, ts_interface # noqa: F401
|
|
|
55
55
|
from .core.engine import (
|
|
56
56
|
AdapterKeyName,
|
|
57
57
|
AllowAutomaticTypeConflictResolution,
|
|
58
|
+
ConflictHandler,
|
|
58
59
|
ConflictResolution,
|
|
60
|
+
DefaultModelCallback,
|
|
59
61
|
EditKind,
|
|
60
62
|
Engine,
|
|
61
63
|
FindFilePromptOption,
|
|
@@ -153,7 +155,7 @@ from .property.property_object_file import (
|
|
|
153
155
|
from .sequence.code_template import CodeTemplate, CodeTemplates
|
|
154
156
|
from .sequence.expression import EvaluationType, Expression
|
|
155
157
|
from .sequence.location import AutoCreateVariableLocation, Location, Locations
|
|
156
|
-
from .sequence.sequence import Sequence
|
|
158
|
+
from .sequence.sequence import Sequence, SequenceFileType, SequenceType
|
|
157
159
|
from .sequence.sequence_context import SequenceContext
|
|
158
160
|
from .sequence.sequence_file import SequenceFile
|
|
159
161
|
from .sequence.step import RunMode, Step
|
|
@@ -209,12 +211,14 @@ __all__ = [
|
|
|
209
211
|
"CheckedState",
|
|
210
212
|
"CodeTemplate",
|
|
211
213
|
"CodeTemplates",
|
|
214
|
+
"ConflictHandler",
|
|
212
215
|
"ConflictResolution",
|
|
213
216
|
"DLLAdapter",
|
|
214
217
|
"DLLModule",
|
|
215
218
|
"DataType",
|
|
216
219
|
"DatabaseLogOptions",
|
|
217
220
|
"DebugOption",
|
|
221
|
+
"DefaultModelCallback",
|
|
218
222
|
"DeploymentError",
|
|
219
223
|
"DotNetAdapter",
|
|
220
224
|
"DotNetModule",
|
|
@@ -314,8 +318,10 @@ __all__ = [
|
|
|
314
318
|
"SequenceContext",
|
|
315
319
|
"SequenceFile",
|
|
316
320
|
"SequenceFileLoadError",
|
|
321
|
+
"SequenceFileType",
|
|
317
322
|
"SequenceFileViewManager",
|
|
318
323
|
"SequenceTerminatedError",
|
|
324
|
+
"SequenceType",
|
|
319
325
|
"SequenceValidationError",
|
|
320
326
|
"SourceControlCommand",
|
|
321
327
|
"SourceControlCommandOption",
|
|
@@ -97,6 +97,10 @@ class Adapter(PropertyObject):
|
|
|
97
97
|
def name(self) -> str:
|
|
98
98
|
return self.key_name
|
|
99
99
|
|
|
100
|
+
@name.setter
|
|
101
|
+
def name(self, value: str) -> None: # noqa: ARG002
|
|
102
|
+
raise AttributeError("name is read-only on Adapter")
|
|
103
|
+
|
|
100
104
|
@property
|
|
101
105
|
@ts_interface
|
|
102
106
|
def key_name(self) -> str:
|
|
@@ -525,16 +529,6 @@ class Module(PropertyObject):
|
|
|
525
529
|
|
|
526
530
|
return SequenceCallModule(self._com_obj, self._engine_ref)
|
|
527
531
|
|
|
528
|
-
@property
|
|
529
|
-
@ts_interface
|
|
530
|
-
def comment(self) -> str:
|
|
531
|
-
return str(self._com_obj.Comment)
|
|
532
|
-
|
|
533
|
-
@property
|
|
534
|
-
@ts_interface
|
|
535
|
-
def name(self) -> str:
|
|
536
|
-
return str(self._com_obj.Name)
|
|
537
|
-
|
|
538
532
|
@property
|
|
539
533
|
@ts_interface
|
|
540
534
|
def description(self) -> str:
|
|
@@ -908,8 +908,9 @@ class DotNetParameter(PropertyObject):
|
|
|
908
908
|
return DotNetParameters(self._com_obj.Elements, self._engine_ref)
|
|
909
909
|
|
|
910
910
|
@ts_interface
|
|
911
|
-
def display_create_custom_data_type_dialog(self, sequence_context:
|
|
912
|
-
|
|
911
|
+
def display_create_custom_data_type_dialog(self, sequence_context: typing.Any) -> typing.Any: # noqa: ANN401
|
|
912
|
+
raw_ctx = getattr(sequence_context, "_com_obj", sequence_context)
|
|
913
|
+
return bool(self._com_obj.DisplayCreateCustomDataTypeDialog(raw_ctx))
|
|
913
914
|
|
|
914
915
|
@property
|
|
915
916
|
@ts_interface
|
|
@@ -960,6 +961,11 @@ class DotNetParameter(PropertyObject):
|
|
|
960
961
|
def name(self) -> str:
|
|
961
962
|
return str(self._com_obj.Name)
|
|
962
963
|
|
|
964
|
+
@name.setter
|
|
965
|
+
@ts_interface
|
|
966
|
+
def name(self, value: str) -> None: # noqa: ARG002
|
|
967
|
+
raise AttributeError("name is read-only on DotNetParameter")
|
|
968
|
+
|
|
963
969
|
@property
|
|
964
970
|
@ts_interface
|
|
965
971
|
def parameter_name(self) -> str:
|
|
@@ -1050,6 +1050,11 @@ class LabVIEWParameter(PropertyObject):
|
|
|
1050
1050
|
def array_element_prototype(self) -> typing.Any: # noqa: ANN401
|
|
1051
1051
|
return self._com_obj.ArrayElementPrototype
|
|
1052
1052
|
|
|
1053
|
+
@array_element_prototype.setter
|
|
1054
|
+
@ts_interface
|
|
1055
|
+
def array_element_prototype(self, value: typing.Any) -> None: # noqa: ANN401, ARG002
|
|
1056
|
+
raise AttributeError("array_element_prototype is read-only")
|
|
1057
|
+
|
|
1053
1058
|
@ts_interface
|
|
1054
1059
|
def as_property_object(self) -> PropertyObject:
|
|
1055
1060
|
return PropertyObject(self._com_obj.AsPropertyObject(), self._engine_ref)
|
|
@@ -1258,6 +1263,11 @@ class LabVIEWParameterElement(PropertyObject):
|
|
|
1258
1263
|
def array_element_prototype(self) -> typing.Any: # noqa: ANN401
|
|
1259
1264
|
return self._com_obj.ArrayElementPrototype
|
|
1260
1265
|
|
|
1266
|
+
@array_element_prototype.setter
|
|
1267
|
+
@ts_interface
|
|
1268
|
+
def array_element_prototype(self, value: typing.Any) -> None: # noqa: ANN401, ARG002
|
|
1269
|
+
raise AttributeError("array_element_prototype is read-only")
|
|
1270
|
+
|
|
1261
1271
|
@ts_interface
|
|
1262
1272
|
def as_property_object(self) -> PropertyObject:
|
|
1263
1273
|
return PropertyObject(self._com_obj.AsPropertyObject(), self._engine_ref)
|
|
@@ -348,7 +348,7 @@ class LabVIEWNXGModule(Module):
|
|
|
348
348
|
self._com_obj.GLLPath = str(value)
|
|
349
349
|
|
|
350
350
|
@ts_interface
|
|
351
|
-
def have_properties_changed(self, options: int = 0) -> bool:
|
|
351
|
+
def have_properties_changed(self, options: int = 0) -> tuple[bool, list[typing.Any]]:
|
|
352
352
|
result = self._com_obj.HavePropertiesChanged(None, int(options))
|
|
353
353
|
if isinstance(result, tuple) and len(result) >= 2:
|
|
354
354
|
return bool(result[0]), list(result[1])
|
|
@@ -458,6 +458,11 @@ class LabVIEWNXGProject(PropertyObject):
|
|
|
458
458
|
def name(self) -> str:
|
|
459
459
|
return str(self._com_obj.Name)
|
|
460
460
|
|
|
461
|
+
@name.setter
|
|
462
|
+
@ts_interface
|
|
463
|
+
def name(self, value: str) -> None: # noqa: ARG002
|
|
464
|
+
raise AttributeError("name is read-only on LabVIEWNXGProject")
|
|
465
|
+
|
|
461
466
|
|
|
462
467
|
class LabVIEWNXGProjectItems(PropertyObject):
|
|
463
468
|
@property
|
|
@@ -640,6 +645,11 @@ class LabVIEWNXGParameter(PropertyObject):
|
|
|
640
645
|
def array_element_prototype(self) -> LabVIEWNXGParameter:
|
|
641
646
|
return LabVIEWNXGParameter(self._com_obj.ArrayElementPrototype, self._engine_ref)
|
|
642
647
|
|
|
648
|
+
@array_element_prototype.setter
|
|
649
|
+
@ts_interface
|
|
650
|
+
def array_element_prototype(self, value: typing.Any) -> None: # noqa: ANN401, ARG002
|
|
651
|
+
raise AttributeError("array_element_prototype is read-only")
|
|
652
|
+
|
|
643
653
|
@ts_interface
|
|
644
654
|
def as_property_object(self) -> PropertyObject:
|
|
645
655
|
return PropertyObject(self._com_obj.AsPropertyObject(), self._engine_ref)
|
|
@@ -305,6 +305,11 @@ class SequenceCallParameter(PropertyObject):
|
|
|
305
305
|
def name(self) -> str:
|
|
306
306
|
return str(self._com_obj.Name)
|
|
307
307
|
|
|
308
|
+
@name.setter
|
|
309
|
+
@ts_interface
|
|
310
|
+
def name(self, value: str) -> None: # noqa: ARG002
|
|
311
|
+
raise AttributeError("name is read-only on SequenceCallParameter")
|
|
312
|
+
|
|
308
313
|
@property
|
|
309
314
|
@ts_interface
|
|
310
315
|
def type(self) -> int:
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import typing
|
|
4
|
+
|
|
3
5
|
from py_teststand.analyzer.rule import RuleSeverity
|
|
4
6
|
from py_teststand.analyzer.rule_setting_values import RuleSettingValues
|
|
5
7
|
from py_teststand.core.com_wrapper import ts_interface
|
|
@@ -56,8 +58,10 @@ class RuleConfiguration(PropertyObject):
|
|
|
56
58
|
class RuleConfigurationContext(PropertyObject):
|
|
57
59
|
@property
|
|
58
60
|
@ts_interface
|
|
59
|
-
def engine(self) ->
|
|
60
|
-
|
|
61
|
+
def engine(self) -> typing.Any: # noqa: ANN401
|
|
62
|
+
from py_teststand.core.engine.engine import Engine
|
|
63
|
+
|
|
64
|
+
return Engine(self._com_obj.Engine)
|
|
61
65
|
|
|
62
66
|
@property
|
|
63
67
|
@ts_interface
|
|
@@ -789,6 +789,8 @@ class Engine(COMWrapper):
|
|
|
789
789
|
int(dlg_options),
|
|
790
790
|
selected_item_com,
|
|
791
791
|
)
|
|
792
|
+
from py_teststand.execution.breakpoint import SelectedBreakpointItem
|
|
793
|
+
|
|
792
794
|
item = SelectedBreakpointItem(selected_item_com, self) if selected_item_com else None
|
|
793
795
|
return bool(result), item
|
|
794
796
|
|
|
@@ -1700,7 +1702,7 @@ class Engine(COMWrapper):
|
|
|
1700
1702
|
return OutputMessages(self._engine.GetOutputMessages(), self)
|
|
1701
1703
|
|
|
1702
1704
|
@ts_interface
|
|
1703
|
-
def get_product_registration_info(self) -> bool:
|
|
1705
|
+
def get_product_registration_info(self) -> tuple[bool, str, str, str]:
|
|
1704
1706
|
user_out = ""
|
|
1705
1707
|
company_out = ""
|
|
1706
1708
|
serial_out = ""
|
|
@@ -1845,7 +1847,7 @@ class Engine(COMWrapper):
|
|
|
1845
1847
|
)
|
|
1846
1848
|
|
|
1847
1849
|
@ts_interface
|
|
1848
|
-
def get_tool_menu_item_info_with_id(self, unique_item_id: int) -> str:
|
|
1850
|
+
def get_tool_menu_item_info_with_id(self, unique_item_id: int) -> tuple[str, int, bool]:
|
|
1849
1851
|
item_text_out = ""
|
|
1850
1852
|
sub_menu_index_out = 0
|
|
1851
1853
|
enabled_out = False
|
|
@@ -167,7 +167,7 @@ class Mutex(SyncObject):
|
|
|
167
167
|
self._com_obj.EarlyUnlockMutexEx(com_context, thread_id)
|
|
168
168
|
|
|
169
169
|
@ts_interface
|
|
170
|
-
def get_saved_owner_info(self) -> str:
|
|
170
|
+
def get_saved_owner_info(self) -> tuple[str, str, SyncManager]:
|
|
171
171
|
res = self._com_obj.GetSavedOwnerInfo()
|
|
172
172
|
return str(res[0]), str(res[1]), SyncManager(res[2], self._engine_ref)
|
|
173
173
|
|
|
@@ -180,7 +180,7 @@ class Mutex(SyncObject):
|
|
|
180
180
|
return int(self._com_obj.GetInfo())
|
|
181
181
|
|
|
182
182
|
@ts_interface
|
|
183
|
-
def get_info_ex(self) -> int:
|
|
183
|
+
def get_info_ex(self) -> tuple[int, int, str]:
|
|
184
184
|
res = self._com_obj.GetInfoEx()
|
|
185
185
|
return int(res[0]), int(res[1]), str(res[2])
|
|
186
186
|
|
|
@@ -216,7 +216,7 @@ class Semaphore(SyncObject):
|
|
|
216
216
|
return AutoReleaser(res[0], self._engine_ref), WaitResult(res[1])
|
|
217
217
|
|
|
218
218
|
@ts_interface
|
|
219
|
-
def get_info(self) -> int:
|
|
219
|
+
def get_info(self) -> tuple[int, int, int, int]:
|
|
220
220
|
res = self._com_obj.GetInfo()
|
|
221
221
|
return int(res[0]), int(res[1]), int(res[2]), int(res[3])
|
|
222
222
|
|
|
@@ -262,7 +262,7 @@ class Batch(SyncObject):
|
|
|
262
262
|
return [Thread(t, self._engine_ref) for t in com_threads]
|
|
263
263
|
|
|
264
264
|
@ts_interface
|
|
265
|
-
def get_info(self) -> int:
|
|
265
|
+
def get_info(self) -> tuple[int, int]:
|
|
266
266
|
res = self._com_obj.GetInfo()
|
|
267
267
|
return int(res[0]), int(res[1])
|
|
268
268
|
|
|
@@ -377,7 +377,7 @@ class Notification(SyncObject):
|
|
|
377
377
|
self._com_obj.ClearEx(com_context)
|
|
378
378
|
|
|
379
379
|
@ts_interface
|
|
380
|
-
def get_info(self) -> int:
|
|
380
|
+
def get_info(self) -> tuple[int, bool]:
|
|
381
381
|
res = self._com_obj.GetInfo()
|
|
382
382
|
return int(res[0]), bool(res[1])
|
|
383
383
|
|
|
@@ -453,7 +453,7 @@ class Notification(SyncObject):
|
|
|
453
453
|
|
|
454
454
|
class Rendezvous(SyncObject):
|
|
455
455
|
@ts_interface
|
|
456
|
-
def get_info(self) -> int:
|
|
456
|
+
def get_info(self) -> tuple[int, int]:
|
|
457
457
|
res = self._com_obj.GetInfo()
|
|
458
458
|
return int(res[0]), int(res[1])
|
|
459
459
|
|
|
@@ -531,7 +531,7 @@ class Queue(SyncObject):
|
|
|
531
531
|
return list(self._com_obj.Flush(com_context))
|
|
532
532
|
|
|
533
533
|
@ts_interface
|
|
534
|
-
def get_info(self) -> int:
|
|
534
|
+
def get_info(self) -> tuple[int, int, int]:
|
|
535
535
|
res = self._com_obj.GetInfo()
|
|
536
536
|
return int(res[0]), int(res[1]), int(res[2])
|
|
537
537
|
|
|
@@ -729,12 +729,12 @@ class SyncManager(COMWrapper):
|
|
|
729
729
|
return SyncObject(res, self._engine_ref)
|
|
730
730
|
|
|
731
731
|
@ts_interface
|
|
732
|
-
def get_mutex_owner_info(self, mutex_name: str) -> str:
|
|
732
|
+
def get_mutex_owner_info(self, mutex_name: str) -> tuple[str, str, SyncManager]:
|
|
733
733
|
res = self._com_obj.GetMutexOwnerInfo(mutex_name)
|
|
734
734
|
return str(res[0]), str(res[1]), SyncManager(res[2], self._engine_ref)
|
|
735
735
|
|
|
736
736
|
@ts_interface
|
|
737
|
-
def get_lock_mutex_thread_is_waiting_for(self, thread_id: str) -> str:
|
|
737
|
+
def get_lock_mutex_thread_is_waiting_for(self, thread_id: str) -> tuple[str, SyncManager]:
|
|
738
738
|
res = self._com_obj.GetLockMutexThreadIsWaitingFor(thread_id)
|
|
739
739
|
return str(res[0]), SyncManager(res[1], self._engine_ref)
|
|
740
740
|
|
|
@@ -387,7 +387,7 @@ class PropertyObject(COMWrapper):
|
|
|
387
387
|
except Exception:
|
|
388
388
|
value = tuple(typing.cast("typing.Any", value))
|
|
389
389
|
elif isinstance(value, datetime.datetime) and pywintypes is not None:
|
|
390
|
-
value = pywintypes.Time(value)
|
|
390
|
+
value = pywintypes.Time(typing.cast("typing.Any", value))
|
|
391
391
|
self._property_object.SetValVariant(lookup_string, options, value)
|
|
392
392
|
|
|
393
393
|
@ts_interface
|
|
@@ -533,7 +533,7 @@ class PropertyObject(COMWrapper):
|
|
|
533
533
|
return bool(self._property_object.Exists(lookup_string, options))
|
|
534
534
|
|
|
535
535
|
@ts_interface
|
|
536
|
-
def validate_new_name(self, new_name: str, allow_duplicates: bool = False) -> bool:
|
|
536
|
+
def validate_new_name(self, new_name: str, allow_duplicates: bool = False) -> tuple[bool, str]:
|
|
537
537
|
res = self._property_object.ValidateNewName(new_name, allow_duplicates)
|
|
538
538
|
if isinstance(res, tuple) and len(res) >= 2:
|
|
539
539
|
return bool(res[1]), str(res[0])
|
|
@@ -553,13 +553,12 @@ class PropertyObject(COMWrapper):
|
|
|
553
553
|
@property
|
|
554
554
|
@ts_interface
|
|
555
555
|
def name(self) -> str:
|
|
556
|
-
return str(
|
|
556
|
+
return str(self._property_object.Name)
|
|
557
557
|
|
|
558
558
|
@name.setter
|
|
559
559
|
@ts_interface
|
|
560
560
|
def name(self, value: str) -> None:
|
|
561
|
-
|
|
562
|
-
self._com_obj.Name = value
|
|
561
|
+
self._property_object.Name = value
|
|
563
562
|
|
|
564
563
|
@functools.cached_property
|
|
565
564
|
@ts_interface
|
|
@@ -837,7 +836,7 @@ class PropertyObject(COMWrapper):
|
|
|
837
836
|
except Exception:
|
|
838
837
|
value = value
|
|
839
838
|
elif isinstance(value, datetime.datetime) and pywintypes is not None:
|
|
840
|
-
value = pywintypes.Time(value)
|
|
839
|
+
value = pywintypes.Time(typing.cast("typing.Any", value))
|
|
841
840
|
self._property_object.SetValVariantByOffset(array_offset, options, value)
|
|
842
841
|
|
|
843
842
|
@ts_interface
|
|
@@ -31,6 +31,11 @@ class CodeTemplate(PropertyObject):
|
|
|
31
31
|
def name(self) -> str:
|
|
32
32
|
return str(self._com_obj.Name)
|
|
33
33
|
|
|
34
|
+
@name.setter
|
|
35
|
+
@ts_interface
|
|
36
|
+
def name(self, value: str) -> None: # noqa: ARG002
|
|
37
|
+
raise AttributeError("name is read-only on CodeTemplate")
|
|
38
|
+
|
|
34
39
|
@property
|
|
35
40
|
@ts_interface
|
|
36
41
|
def description(self) -> str:
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import functools
|
|
4
4
|
import typing
|
|
5
|
-
import weakref
|
|
6
5
|
from enum import Enum, IntEnum
|
|
7
6
|
from typing import TYPE_CHECKING
|
|
8
7
|
|
|
@@ -112,12 +111,7 @@ class SequenceCollection:
|
|
|
112
111
|
class SequenceFile(PropertyObjectFile):
|
|
113
112
|
def __init__(self, com_obj: typing.Any, engine: Engine | typing.Any | None = None) -> None: # noqa: ANN401
|
|
114
113
|
|
|
115
|
-
super().__init__(com_obj)
|
|
116
|
-
self._engine_ref = (
|
|
117
|
-
engine
|
|
118
|
-
if isinstance(engine, weakref.ReferenceType) or engine is None
|
|
119
|
-
else weakref.ref(engine)
|
|
120
|
-
)
|
|
114
|
+
super().__init__(com_obj, engine)
|
|
121
115
|
|
|
122
116
|
def __enter__(self) -> SequenceFile:
|
|
123
117
|
|
|
@@ -211,7 +205,12 @@ class SequenceFile(PropertyObjectFile):
|
|
|
211
205
|
@property
|
|
212
206
|
@ts_interface
|
|
213
207
|
def change_count(self) -> int:
|
|
214
|
-
return int(self.
|
|
208
|
+
return int(self.as_property_object_file().change_count)
|
|
209
|
+
|
|
210
|
+
@change_count.setter
|
|
211
|
+
@ts_interface
|
|
212
|
+
def change_count(self, value: int) -> None:
|
|
213
|
+
self.as_property_object_file().change_count = value
|
|
215
214
|
|
|
216
215
|
@property
|
|
217
216
|
@ts_interface
|
|
@@ -367,7 +366,11 @@ class SequenceFile(PropertyObjectFile):
|
|
|
367
366
|
)
|
|
368
367
|
|
|
369
368
|
@ts_interface
|
|
370
|
-
def load_modules(
|
|
369
|
+
def load_modules(
|
|
370
|
+
self,
|
|
371
|
+
options: int = 0,
|
|
372
|
+
context: typing.Any | None = None, # noqa: ANN401
|
|
373
|
+
) -> typing.Any: # noqa: ANN401
|
|
371
374
|
ctx_com = getattr(context, "_com_obj", context)
|
|
372
375
|
return bool(self._com_obj.LoadModules(int(options), ctx_com))
|
|
373
376
|
|
|
@@ -148,7 +148,7 @@ class ApplicationMgrEventsSink(UIEventSink):
|
|
|
148
148
|
|
|
149
149
|
def on_query_reload_sequence_file(
|
|
150
150
|
self,
|
|
151
|
-
file: typing.Any,
|
|
151
|
+
file: typing.Any, # noqa: ANN401
|
|
152
152
|
reload_option: typing.Any, # noqa: ANN401
|
|
153
153
|
) -> typing.Any: # noqa: ANN401
|
|
154
154
|
try:
|
|
@@ -222,8 +222,8 @@ class ApplicationMgrEventsSink(UIEventSink):
|
|
|
222
222
|
|
|
223
223
|
def on_query_close_execution(
|
|
224
224
|
self,
|
|
225
|
-
execution: typing.Any,
|
|
226
|
-
run_state: typing.Any,
|
|
225
|
+
execution: typing.Any, # noqa: ANN401
|
|
226
|
+
run_state: typing.Any, # noqa: ANN401
|
|
227
227
|
option: typing.Any, # noqa: ANN401
|
|
228
228
|
) -> typing.Any: # noqa: ANN401
|
|
229
229
|
try:
|
|
@@ -359,8 +359,8 @@ class ApplicationMgrEventsSink(UIEventSink):
|
|
|
359
359
|
|
|
360
360
|
def on_break(
|
|
361
361
|
self,
|
|
362
|
-
execution: typing.Any,
|
|
363
|
-
thread: typing.Any,
|
|
362
|
+
execution: typing.Any, # noqa: ANN401
|
|
363
|
+
thread: typing.Any, # noqa: ANN401
|
|
364
364
|
sequence_context: typing.Any, # noqa: ANN401
|
|
365
365
|
) -> typing.Any: # noqa: ANN401
|
|
366
366
|
try:
|
|
@@ -496,8 +496,8 @@ class ExecutionViewMgrEventsSink(UIEventSink):
|
|
|
496
496
|
|
|
497
497
|
def on_break(
|
|
498
498
|
self,
|
|
499
|
-
execution: typing.Any,
|
|
500
|
-
thread: typing.Any,
|
|
499
|
+
execution: typing.Any, # noqa: ANN401
|
|
500
|
+
thread: typing.Any, # noqa: ANN401
|
|
501
501
|
sequence_context: typing.Any, # noqa: ANN401
|
|
502
502
|
) -> typing.Any: # noqa: ANN401
|
|
503
503
|
try:
|
|
@@ -507,8 +507,8 @@ class ExecutionViewMgrEventsSink(UIEventSink):
|
|
|
507
507
|
|
|
508
508
|
def on_trace(
|
|
509
509
|
self,
|
|
510
|
-
execution: typing.Any,
|
|
511
|
-
thread: typing.Any,
|
|
510
|
+
execution: typing.Any, # noqa: ANN401
|
|
511
|
+
thread: typing.Any, # noqa: ANN401
|
|
512
512
|
sequence_context: typing.Any, # noqa: ANN401
|
|
513
513
|
) -> typing.Any: # noqa: ANN401
|
|
514
514
|
try:
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
import inspect
|
|
3
|
+
import pkgutil
|
|
4
|
+
import warnings
|
|
5
|
+
from enum import Enum
|
|
6
|
+
|
|
7
|
+
import py_teststand
|
|
8
|
+
from py_teststand.core.com_wrapper import COMWrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_public_api_exports_all_classes() -> None:
|
|
12
|
+
"""Ensure that all public COM wrappers and Enums are exported in the root __init__.py."""
|
|
13
|
+
missing_exports: list[str] = []
|
|
14
|
+
|
|
15
|
+
package = py_teststand
|
|
16
|
+
prefix = package.__name__ + "."
|
|
17
|
+
|
|
18
|
+
for _importer, modname, _ispkg in pkgutil.walk_packages(package.__path__, prefix):
|
|
19
|
+
if "tests" in modname or "conftest" in modname:
|
|
20
|
+
continue
|
|
21
|
+
|
|
22
|
+
with warnings.catch_warnings():
|
|
23
|
+
warnings.simplefilter("ignore")
|
|
24
|
+
try:
|
|
25
|
+
module = importlib.import_module(modname)
|
|
26
|
+
except Exception:
|
|
27
|
+
continue
|
|
28
|
+
|
|
29
|
+
for name, obj in inspect.getmembers(module):
|
|
30
|
+
if name.startswith("_"):
|
|
31
|
+
continue
|
|
32
|
+
|
|
33
|
+
# Only consider classes defined in py_teststand (not imported from outside)
|
|
34
|
+
if inspect.isclass(obj) and getattr(obj, "__module__", "").startswith("py_teststand"):
|
|
35
|
+
if issubclass(obj, (COMWrapper, Enum)):
|
|
36
|
+
if name not in py_teststand.__all__:
|
|
37
|
+
missing_exports.append(f"{name} (from {obj.__module__})")
|
|
38
|
+
|
|
39
|
+
missing_exports = sorted(set(missing_exports))
|
|
40
|
+
|
|
41
|
+
# Exceptions that are purposefully not in __all__
|
|
42
|
+
# (add to this list if there are actual internal classes that shouldn't be exposed)
|
|
43
|
+
allowed_missing = {
|
|
44
|
+
"BaseAdapter (from py_teststand.adapters.adapter)",
|
|
45
|
+
"UIMessageHandler (from py_teststand.ext.events)",
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
missing_exports = [m for m in missing_exports if m not in allowed_missing]
|
|
49
|
+
|
|
50
|
+
assert not missing_exports, (
|
|
51
|
+
f"Missing exports in py_teststand.__init__.__all__: {missing_exports}"
|
|
52
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|