laddercodec 0.1.7__tar.gz → 0.1.8__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.
Files changed (426) hide show
  1. {laddercodec-0.1.7 → laddercodec-0.1.8}/CHANGELOG.md +8 -0
  2. {laddercodec-0.1.7 → laddercodec-0.1.8}/PKG-INFO +1 -1
  3. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/writer.py +22 -6
  4. {laddercodec-0.1.7 → laddercodec-0.1.8}/.claude/settings.local.json +0 -0
  5. {laddercodec-0.1.7 → laddercodec-0.1.8}/.github/workflows/ci.yml +0 -0
  6. {laddercodec-0.1.7 → laddercodec-0.1.8}/.github/workflows/docs.yml +0 -0
  7. {laddercodec-0.1.7 → laddercodec-0.1.8}/.github/workflows/publish.yml +0 -0
  8. {laddercodec-0.1.7 → laddercodec-0.1.8}/.gitignore +0 -0
  9. {laddercodec-0.1.7 → laddercodec-0.1.8}/CLAUDE.md +0 -0
  10. {laddercodec-0.1.7 → laddercodec-0.1.8}/LICENSE +0 -0
  11. {laddercodec-0.1.7 → laddercodec-0.1.8}/Makefile +0 -0
  12. {laddercodec-0.1.7 → laddercodec-0.1.8}/README.md +0 -0
  13. {laddercodec-0.1.7 → laddercodec-0.1.8}/add-features-workflow.md +0 -0
  14. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/analyze_scr.py +0 -0
  15. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/combine_coverage.py +0 -0
  16. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/compare_blobs.py +0 -0
  17. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/compare_csv.py +0 -0
  18. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/coverage_golden.py +0 -0
  19. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/create_mr_max_csv.py +0 -0
  20. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/diag_blob.py +0 -0
  21. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/dump_scr_tags.py +0 -0
  22. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/gen_modbus_coverage.py +0 -0
  23. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/golden.py +0 -0
  24. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/inspect_bin.py +0 -0
  25. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/inspect_scr.py +0 -0
  26. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/lint.py +0 -0
  27. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/pdf_to_png.py +0 -0
  28. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/test_decode_scr.py +0 -0
  29. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/validate_scr.py +0 -0
  30. {laddercodec-0.1.7 → laddercodec-0.1.8}/devtools/walk_scr.py +0 -0
  31. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/CLAUDE.md +0 -0
  32. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/gen_reference.py +0 -0
  33. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/guides/adding-instructions.md +0 -0
  34. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/guides/csv-format.md +0 -0
  35. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/guides/decoding.md +0 -0
  36. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/guides/encoding.md +0 -0
  37. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/guides/troubleshooting.md +0 -0
  38. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/index.md +0 -0
  39. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/internals/binary-format.md +0 -0
  40. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/internals/instruction-blobs.md +0 -0
  41. {laddercodec-0.1.7 → laddercodec-0.1.8}/docs/internals/wire-rendering.md +0 -0
  42. {laddercodec-0.1.7 → laddercodec-0.1.8}/mkdocs.yml +0 -0
  43. {laddercodec-0.1.7 → laddercodec-0.1.8}/pyproject.toml +0 -0
  44. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/__init__.py +0 -0
  45. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/_grid.py +0 -0
  46. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/binary_helpers.py +0 -0
  47. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/cell.py +0 -0
  48. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/__init__.py +0 -0
  49. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/ast.py +0 -0
  50. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/bundle.py +0 -0
  51. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/contract.py +0 -0
  52. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/converter.py +0 -0
  53. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/parser.py +0 -0
  54. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/csv/token_parser.py +0 -0
  55. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/decode.py +0 -0
  56. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/decode_program.py +0 -0
  57. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/empty_multirow.py +0 -0
  58. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/encode.py +0 -0
  59. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/encode_multi.py +0 -0
  60. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/__init__.py +0 -0
  61. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/call.py +0 -0
  62. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/coil.py +0 -0
  63. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/comparison.py +0 -0
  64. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/contact.py +0 -0
  65. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/copy.py +0 -0
  66. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/counter.py +0 -0
  67. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/drum.py +0 -0
  68. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/email.py +0 -0
  69. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/end.py +0 -0
  70. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/family.py +0 -0
  71. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/forloop.py +0 -0
  72. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/home.py +0 -0
  73. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/math.py +0 -0
  74. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/position.py +0 -0
  75. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/raw.py +0 -0
  76. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/return_.py +0 -0
  77. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/search.py +0 -0
  78. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/send_receive.py +0 -0
  79. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/shift.py +0 -0
  80. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/timer.py +0 -0
  81. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/instructions/velocity.py +0 -0
  82. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/model.py +0 -0
  83. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/resources/empty_multirow_rule_minimal.scaffold.bin +0 -0
  84. {laddercodec-0.1.7 → laddercodec-0.1.8}/src/laddercodec/topology.py +0 -0
  85. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/__init__.py +0 -0
  86. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_bundle.py +0 -0
  87. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_contract.py +0 -0
  88. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_converter.py +0 -0
  89. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_parser.py +0 -0
  90. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_token_parser.py +0 -0
  91. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_writer.py +0 -0
  92. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/csv/test_writer_raw_validator.py +0 -0
  93. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/coverage.ckp +0 -0
  94. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__block.bin +0 -0
  95. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__block.csv +0 -0
  96. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__oneshot.bin +0 -0
  97. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__oneshot.csv +0 -0
  98. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__to_ascii.bin +0 -0
  99. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__to_ascii.csv +0 -0
  100. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__to_value.bin +0 -0
  101. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/blockcopy__to_value.csv +0 -0
  102. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/call__basic.bin +0 -0
  103. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/call__basic.csv +0 -0
  104. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__and.bin +0 -0
  105. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__and.csv +0 -0
  106. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__eq.bin +0 -0
  107. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__eq.csv +0 -0
  108. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__fall.bin +0 -0
  109. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__fall.csv +0 -0
  110. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__ge.bin +0 -0
  111. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__ge.csv +0 -0
  112. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__gt.bin +0 -0
  113. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__gt.csv +0 -0
  114. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__immediate.bin +0 -0
  115. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__immediate.csv +0 -0
  116. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__le.bin +0 -0
  117. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__le.csv +0 -0
  118. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__lt.bin +0 -0
  119. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__lt.csv +0 -0
  120. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__nc.bin +0 -0
  121. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__nc.csv +0 -0
  122. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__ne.bin +0 -0
  123. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__ne.csv +0 -0
  124. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__no.bin +0 -0
  125. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__no.csv +0 -0
  126. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__or.bin +0 -0
  127. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__or.csv +0 -0
  128. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__rise.bin +0 -0
  129. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/cond__rise.csv +0 -0
  130. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__literal_float.bin +0 -0
  131. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__literal_float.csv +0 -0
  132. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__literal_int.bin +0 -0
  133. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__literal_int.csv +0 -0
  134. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__oneshot.bin +0 -0
  135. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__oneshot.csv +0 -0
  136. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__tag.bin +0 -0
  137. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__tag.csv +0 -0
  138. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_ascii.bin +0 -0
  139. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_ascii.csv +0 -0
  140. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_binary.bin +0 -0
  141. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_binary.csv +0 -0
  142. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text.bin +0 -0
  143. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text.csv +0 -0
  144. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_exp.bin +0 -0
  145. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_exp.csv +0 -0
  146. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_sz.bin +0 -0
  147. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_sz.csv +0 -0
  148. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_term.bin +0 -0
  149. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_text_term.csv +0 -0
  150. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_value.bin +0 -0
  151. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/copy__to_value.csv +0 -0
  152. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_down.bin +0 -0
  153. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_down.csv +0 -0
  154. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_up__down.bin +0 -0
  155. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_up__down.csv +0 -0
  156. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_up__reset.bin +0 -0
  157. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/count_up__reset.csv +0 -0
  158. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/end.bin +0 -0
  159. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/end.csv +0 -0
  160. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__basic.bin +0 -0
  161. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__basic.csv +0 -0
  162. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__full.bin +0 -0
  163. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__full.csv +0 -0
  164. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__jog.bin +0 -0
  165. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__jog.csv +0 -0
  166. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__jump.bin +0 -0
  167. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__jump.csv +0 -0
  168. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__max.bin +0 -0
  169. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/event_drum__max.csv +0 -0
  170. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__literal.bin +0 -0
  171. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__literal.csv +0 -0
  172. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__oneshot.bin +0 -0
  173. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__oneshot.csv +0 -0
  174. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__tag.bin +0 -0
  175. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/fill__tag.csv +0 -0
  176. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/forloop__basic.bin +0 -0
  177. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/forloop__basic.csv +0 -0
  178. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/forloop__oneshot.bin +0 -0
  179. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/forloop__oneshot.csv +0 -0
  180. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__block.bin +0 -0
  181. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__block.csv +0 -0
  182. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__immediate.bin +0 -0
  183. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__immediate.csv +0 -0
  184. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__tag.bin +0 -0
  185. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/latch__tag.csv +0 -0
  186. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__decimal.bin +0 -0
  187. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__decimal.csv +0 -0
  188. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__hex.bin +0 -0
  189. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__hex.csv +0 -0
  190. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__oneshot.bin +0 -0
  191. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/math__oneshot.csv +0 -0
  192. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/off_delay__tof.bin +0 -0
  193. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/off_delay__tof.csv +0 -0
  194. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/on_delay__rton.bin +0 -0
  195. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/on_delay__rton.csv +0 -0
  196. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/on_delay__ton.bin +0 -0
  197. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/on_delay__ton.csv +0 -0
  198. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__block.bin +0 -0
  199. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__block.csv +0 -0
  200. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__immediate.bin +0 -0
  201. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__immediate.csv +0 -0
  202. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__oneshot.bin +0 -0
  203. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__oneshot.csv +0 -0
  204. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__tag.bin +0 -0
  205. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/out__tag.csv +0 -0
  206. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_bits.bin +0 -0
  207. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_bits.csv +0 -0
  208. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_bits__oneshot.bin +0 -0
  209. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_bits__oneshot.csv +0 -0
  210. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text.bin +0 -0
  211. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text.csv +0 -0
  212. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text__allow_whitespace.bin +0 -0
  213. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text__allow_whitespace.csv +0 -0
  214. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text__oneshot.bin +0 -0
  215. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_text__oneshot.csv +0 -0
  216. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_words.bin +0 -0
  217. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_words.csv +0 -0
  218. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_words__oneshot.bin +0 -0
  219. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/pack_words__oneshot.csv +0 -0
  220. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__email.bin +0 -0
  221. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__email.csv +0 -0
  222. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__home.bin +0 -0
  223. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__home.csv +0 -0
  224. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__position.bin +0 -0
  225. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__position.csv +0 -0
  226. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__velocity.bin +0 -0
  227. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/raw_instructions__velocity.csv +0 -0
  228. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_click_block.bin +0 -0
  229. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_click_block.csv +0 -0
  230. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_click_single.bin +0 -0
  231. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_click_single.csv +0 -0
  232. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_modbus_block.bin +0 -0
  233. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_modbus_block.csv +0 -0
  234. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_modbus_single.bin +0 -0
  235. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__rtu_modbus_single.csv +0 -0
  236. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_coil.bin +0 -0
  237. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_coil.csv +0 -0
  238. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_input.bin +0 -0
  239. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_input.csv +0 -0
  240. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_input_reg.bin +0 -0
  241. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_input_reg.csv +0 -0
  242. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_wordswap.bin +0 -0
  243. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/receive__tcp_click_wordswap.csv +0 -0
  244. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__block.bin +0 -0
  245. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__block.csv +0 -0
  246. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__immediate.bin +0 -0
  247. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__immediate.csv +0 -0
  248. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__tag.bin +0 -0
  249. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/reset__tag.csv +0 -0
  250. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/return_early__basic.bin +0 -0
  251. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/return_early__basic.csv +0 -0
  252. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__continuous.bin +0 -0
  253. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__continuous.csv +0 -0
  254. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__eq.bin +0 -0
  255. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__eq.csv +0 -0
  256. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__ge.bin +0 -0
  257. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__ge.csv +0 -0
  258. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__gt.bin +0 -0
  259. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__gt.csv +0 -0
  260. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__le.bin +0 -0
  261. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__le.csv +0 -0
  262. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__lt.bin +0 -0
  263. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__lt.csv +0 -0
  264. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__ne.bin +0 -0
  265. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__ne.csv +0 -0
  266. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__oneshot.bin +0 -0
  267. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/search__oneshot.csv +0 -0
  268. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__error_off.bin +0 -0
  269. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__error_off.csv +0 -0
  270. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__errorcode_off.bin +0 -0
  271. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__errorcode_off.csv +0 -0
  272. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_click_block.bin +0 -0
  273. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_click_block.csv +0 -0
  274. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_click_single.bin +0 -0
  275. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_click_single.csv +0 -0
  276. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_modbus_block.bin +0 -0
  277. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_modbus_block.csv +0 -0
  278. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_modbus_single.bin +0 -0
  279. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__rtu_modbus_single.csv +0 -0
  280. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__sending_off.bin +0 -0
  281. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__sending_off.csv +0 -0
  282. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__success_off.bin +0 -0
  283. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__success_off.csv +0 -0
  284. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_coil.bin +0 -0
  285. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_coil.csv +0 -0
  286. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_coils.bin +0 -0
  287. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_coils.csv +0 -0
  288. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_wordswap.bin +0 -0
  289. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/send__tcp_click_wordswap.csv +0 -0
  290. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/shift__basic.bin +0 -0
  291. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/shift__basic.csv +0 -0
  292. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/time_drum__basic.bin +0 -0
  293. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/time_drum__basic.csv +0 -0
  294. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/time_drum__basic_td.bin +0 -0
  295. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/time_drum__basic_td.csv +0 -0
  296. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_bits.bin +0 -0
  297. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_bits.csv +0 -0
  298. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_bits__oneshot.bin +0 -0
  299. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_bits__oneshot.csv +0 -0
  300. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_words.bin +0 -0
  301. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_words.csv +0 -0
  302. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_words__oneshot.bin +0 -0
  303. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/unpack_to_words__oneshot.csv +0 -0
  304. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/golden/verify_progress.log +0 -0
  305. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/coverage/subroutines/coverage_sub.csv +0 -0
  306. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-fullwire-nop.bin +0 -0
  307. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-fullwire-nop.csv +0 -0
  308. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-max1400.bin +0 -0
  309. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-max1400.csv +0 -0
  310. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-styled-mixed.bin +0 -0
  311. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-1row-styled-mixed.csv +0 -0
  312. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-2row-max1324.bin +0 -0
  313. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-2row-max1324.csv +0 -0
  314. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-2row-nop-wire.bin +0 -0
  315. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-2row-nop-wire.csv +0 -0
  316. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-32row-sparse.bin +0 -0
  317. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-32row-sparse.csv +0 -0
  318. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-3row-mixed.bin +0 -0
  319. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/cmt-3row-mixed.csv +0 -0
  320. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-cond__and.bin +0 -0
  321. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-cond__and.csv +0 -0
  322. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-r0only.bin +0 -0
  323. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-r0only.csv +0 -0
  324. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-spread.bin +0 -0
  325. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-2row-spread.csv +0 -0
  326. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-branch.bin +0 -0
  327. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-branch.csv +0 -0
  328. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-or-colA.bin +0 -0
  329. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-or-colA.csv +0 -0
  330. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-or.bin +0 -0
  331. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-or.csv +0 -0
  332. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-scatter.bin +0 -0
  333. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-3row-scatter.csv +0 -0
  334. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-6row-multi-output.bin +0 -0
  335. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-6row-multi-output.csv +0 -0
  336. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-coil-timer-ret.bin +0 -0
  337. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-coil-timer-ret.csv +0 -0
  338. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-ge.bin +0 -0
  339. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-ge.csv +0 -0
  340. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-series.bin +0 -0
  341. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-series.csv +0 -0
  342. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-timer.bin +0 -0
  343. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-compare-timer.csv +0 -0
  344. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-cond__and.bin +0 -0
  345. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-cond__and.csv +0 -0
  346. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-copy-multirow-2af-T.bin +0 -0
  347. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-copy-multirow-2af-T.csv +0 -0
  348. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-copy-multirow-2af.bin +0 -0
  349. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-copy-multirow-2af.csv +0 -0
  350. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-count_down-row0-data.bin +0 -0
  351. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-count_down-row0-data.csv +0 -0
  352. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-no-out.bin +0 -0
  353. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-no-out.csv +0 -0
  354. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-series.bin +0 -0
  355. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-series.csv +0 -0
  356. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-off.bin +0 -0
  357. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-off.csv +0 -0
  358. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-on.bin +0 -0
  359. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-on.csv +0 -0
  360. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-ret.bin +0 -0
  361. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/instr-timer-ret.csv +0 -0
  362. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-2rung-2row.bin +0 -0
  363. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-2rung-2row.csv +0 -0
  364. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-2rung-wire.bin +0 -0
  365. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-2rung-wire.csv +0 -0
  366. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-3rung-wire-nop.bin +0 -0
  367. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-3rung-wire-nop.csv +0 -0
  368. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-2row.bin +0 -0
  369. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-2row.csv +0 -0
  370. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-both.bin +0 -0
  371. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-both.csv +0 -0
  372. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-r1-max1400.bin +0 -0
  373. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-2rung-r1-max1400.csv +0 -0
  374. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-all.bin +0 -0
  375. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-all.csv +0 -0
  376. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow-multiinstructions.bin +0 -0
  377. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow-multiinstructions.csv +0 -0
  378. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow-nopaddedrows.bin +0 -0
  379. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow-nopaddedrows.csv +0 -0
  380. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow.bin +0 -0
  381. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-cmt-3rung-multirow.csv +0 -0
  382. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-instr-2rung.bin +0 -0
  383. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-instr-2rung.csv +0 -0
  384. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-instr-cond__and.bin +0 -0
  385. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/mr-instr-cond__and.csv +0 -0
  386. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-1row-empty.bin +0 -0
  387. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-1row-empty.csv +0 -0
  388. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-1row-fullwire-nop.bin +0 -0
  389. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-1row-fullwire-nop.csv +0 -0
  390. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-32row-empty.bin +0 -0
  391. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-32row-empty.csv +0 -0
  392. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-3row-t-junction.bin +0 -0
  393. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-3row-t-junction.csv +0 -0
  394. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-4row-vertical.bin +0 -0
  395. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/nc-4row-vertical.csv +0 -0
  396. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/ladder_captures/golden/verify_progress.log +0 -0
  397. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/counter_scr.bin +0 -0
  398. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/counter_scr.csv +0 -0
  399. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/counter_scr.scr +0 -0
  400. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/coverage.bin +0 -0
  401. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/coverage.csv +0 -0
  402. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/coverage.scr +0 -0
  403. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/or_topology.bin +0 -0
  404. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/or_topology.csv +0 -0
  405. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/or_topology.scr +0 -0
  406. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/shift_scr.bin +0 -0
  407. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/shift_scr.csv +0 -0
  408. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/fixtures/scr_captures/shift_scr.scr +0 -0
  409. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/golden_io.py +0 -0
  410. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_counter.py +0 -0
  411. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_decode.py +0 -0
  412. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_decode_multi.py +0 -0
  413. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_decode_program.py +0 -0
  414. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_decode_rtf_oracle.py +0 -0
  415. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_empty_multirow.py +0 -0
  416. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_encode.py +0 -0
  417. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_encode_multi.py +0 -0
  418. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_forloop.py +0 -0
  419. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_math.py +0 -0
  420. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_model.py +0 -0
  421. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_shift.py +0 -0
  422. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/ladder/test_verify_status.py +0 -0
  423. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/test_coverage.py +0 -0
  424. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/test_public_api.py +0 -0
  425. {laddercodec-0.1.7 → laddercodec-0.1.8}/tests/test_smoke.py +0 -0
  426. {laddercodec-0.1.7 → laddercodec-0.1.8}/uv.lock +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.8
4
+
5
+ ### Fixed
6
+ - **CSV writer**: downgrade trailing blank row mismatch from error to warning
7
+ when a tall instruction's stripped continuation absorbs extra blank rows on
8
+ read-back — fixes `WriterError` on rungs with blank rows beyond an
9
+ instruction's visual height
10
+
3
11
  ## 0.1.7
4
12
 
5
13
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: laddercodec
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: Binary codec for AutomationDirect CLICK PLC ladder clipboard format
5
5
  Project-URL: Repository, https://github.com/ssweber/laddercodec
6
6
  Project-URL: Documentation, https://ssweber.github.io/laddercodec/
@@ -365,10 +365,26 @@ def _validate_roundtrip(rung: Rung, rows: Sequence[Sequence[str]]) -> None:
365
365
  rebuilt = _rebuild_rung_from_rows(rows)
366
366
 
367
367
  if rebuilt.logical_rows != rung.logical_rows:
368
- raise WriterError(
369
- "CSV round-trip validation failed: "
370
- f"logical row count mismatch: expected {rung.logical_rows}, got {rebuilt.logical_rows}"
371
- )
368
+ # Trailing blank rows (no conditions, no AF) can be lost when
369
+ # a tall instruction's stripped continuation absorbs them on
370
+ # read-back. This is cosmetic — warn instead of failing.
371
+ extra = rung.logical_rows - rebuilt.logical_rows
372
+ if extra > 0 and all(
373
+ _is_padding_row(rung.conditions[r]) and rung.instructions[r] == ""
374
+ for r in range(rebuilt.logical_rows, rung.logical_rows)
375
+ ):
376
+ import warnings
377
+
378
+ warnings.warn(
379
+ f"CSV round-trip lost {extra} trailing blank row(s) "
380
+ f"(logical_rows {rung.logical_rows} → {rebuilt.logical_rows})",
381
+ stacklevel=2,
382
+ )
383
+ else:
384
+ raise WriterError(
385
+ "CSV round-trip validation failed: "
386
+ f"logical row count mismatch: expected {rung.logical_rows}, got {rebuilt.logical_rows}"
387
+ )
372
388
 
373
389
  if rebuilt.comment != rung.comment:
374
390
  raise WriterError(
@@ -377,7 +393,7 @@ def _validate_roundtrip(rung: Rung, rows: Sequence[Sequence[str]]) -> None:
377
393
  )
378
394
 
379
395
  for row_idx, (expected_row, actual_row) in enumerate(
380
- zip(rung.conditions, rebuilt.conditions, strict=True),
396
+ zip(rung.conditions[: rebuilt.logical_rows], rebuilt.conditions, strict=True),
381
397
  start=1,
382
398
  ):
383
399
  for col_idx, (expected, actual) in enumerate(zip(expected_row, actual_row, strict=True)):
@@ -389,7 +405,7 @@ def _validate_roundtrip(rung: Rung, rows: Sequence[Sequence[str]]) -> None:
389
405
  )
390
406
 
391
407
  for row_idx, (expected, actual) in enumerate(
392
- zip(rung.instructions, rebuilt.instructions, strict=True),
408
+ zip(rung.instructions[: rebuilt.logical_rows], rebuilt.instructions, strict=True),
393
409
  start=1,
394
410
  ):
395
411
  if not _af_tokens_match(expected, actual):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes