statable 3.2.0__tar.gz → 3.2.1__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 (165) hide show
  1. {statable-3.2.0 → statable-3.2.1}/PKG-INFO +1 -1
  2. {statable-3.2.0 → statable-3.2.1}/codegen/__init__.py +1 -1
  3. {statable-3.2.0 → statable-3.2.1}/pyproject.toml +1 -1
  4. {statable-3.2.0 → statable-3.2.1}/statable/__init__.py +1 -1
  5. {statable-3.2.0 → statable-3.2.1}/statable/cli.py +1 -1
  6. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/PKG-INFO +1 -1
  7. {statable-3.2.0 → statable-3.2.1}/statable_gui/main_window.py +8 -1
  8. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_0_s1_packaging.py +9 -9
  9. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_0_s2_public_api.py +4 -4
  10. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_0_s3_cli.py +4 -4
  11. {statable-3.2.0 → statable-3.2.1}/README.md +0 -0
  12. {statable-3.2.0 → statable-3.2.1}/codegen/c_code_generator.py +0 -0
  13. {statable-3.2.0 → statable-3.2.1}/codegen/code_merger.py +0 -0
  14. {statable-3.2.0 → statable-3.2.1}/codegen/code_templates.py +0 -0
  15. {statable-3.2.0 → statable-3.2.1}/codegen/config.py +0 -0
  16. {statable-3.2.0 → statable-3.2.1}/codegen/enum_generator.py +0 -0
  17. {statable-3.2.0 → statable-3.2.1}/codegen/event_queue_generator.py +0 -0
  18. {statable-3.2.0 → statable-3.2.1}/codegen/interrupt_generator.py +0 -0
  19. {statable-3.2.0 → statable-3.2.1}/codegen/naming_convention.py +0 -0
  20. {statable-3.2.0 → statable-3.2.1}/codegen/osal_generator.py +0 -0
  21. {statable-3.2.0 → statable-3.2.1}/codegen/role_function_generator.py +0 -0
  22. {statable-3.2.0 → statable-3.2.1}/codegen/sample_data.py +0 -0
  23. {statable-3.2.0 → statable-3.2.1}/codegen/state_actions_generator.py +0 -0
  24. {statable-3.2.0 → statable-3.2.1}/codegen/struct_generator.py +0 -0
  25. {statable-3.2.0 → statable-3.2.1}/codegen/timer_generator.py +0 -0
  26. {statable-3.2.0 → statable-3.2.1}/codegen/transition_generator.py +0 -0
  27. {statable-3.2.0 → statable-3.2.1}/codegen/type_mapper.py +0 -0
  28. {statable-3.2.0 → statable-3.2.1}/codegen/validate/__init__.py +0 -0
  29. {statable-3.2.0 → statable-3.2.1}/codegen/validate/change_actions.py +0 -0
  30. {statable-3.2.0 → statable-3.2.1}/codegen/validate/change_applier.py +0 -0
  31. {statable-3.2.0 → statable-3.2.1}/codegen/validate/clipboard_manager.py +0 -0
  32. {statable-3.2.0 → statable-3.2.1}/codegen/validate/data/__init__.py +0 -0
  33. {statable-3.2.0 → statable-3.2.1}/codegen/validate/data/action_definitions.py +0 -0
  34. {statable-3.2.0 → statable-3.2.1}/codegen/validate/data/keywords.py +0 -0
  35. {statable-3.2.0 → statable-3.2.1}/codegen/validate/data/prompt_templates.py +0 -0
  36. {statable-3.2.0 → statable-3.2.1}/codegen/validate/data/validation_rules.py +0 -0
  37. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/__init__.py +0 -0
  38. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/base_validator.py +0 -0
  39. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/cell_validator.py +0 -0
  40. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/custom_type_validator.py +0 -0
  41. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/event_validator.py +0 -0
  42. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/flag_validator.py +0 -0
  43. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/interrupt_validator.py +0 -0
  44. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/queue_validator.py +0 -0
  45. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/role_function_validator.py +0 -0
  46. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/state_validator.py +0 -0
  47. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/timer_validator.py +0 -0
  48. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/transition_validator.py +0 -0
  49. {statable-3.2.0 → statable-3.2.1}/codegen/validate/items/variable_validator.py +0 -0
  50. {statable-3.2.0 → statable-3.2.1}/codegen/validate/logger.py +0 -0
  51. {statable-3.2.0 → statable-3.2.1}/codegen/validate/models.py +0 -0
  52. {statable-3.2.0 → statable-3.2.1}/codegen/validate/prompt_generator.py +0 -0
  53. {statable-3.2.0 → statable-3.2.1}/codegen/validate/response_parser.py +0 -0
  54. {statable-3.2.0 → statable-3.2.1}/codegen/validate/response_validator.py +0 -0
  55. {statable-3.2.0 → statable-3.2.1}/codegen/validate/validation_dialog.py +0 -0
  56. {statable-3.2.0 → statable-3.2.1}/codegen/validate/validator.py +0 -0
  57. {statable-3.2.0 → statable-3.2.1}/codegen/variable_generator.py +0 -0
  58. {statable-3.2.0 → statable-3.2.1}/setup.cfg +0 -0
  59. {statable-3.2.0 → statable-3.2.1}/statable/__main__.py +0 -0
  60. {statable-3.2.0 → statable-3.2.1}/statable/global_defs.py +0 -0
  61. {statable-3.2.0 → statable-3.2.1}/statable/mermaid_gen.py +0 -0
  62. {statable-3.2.0 → statable-3.2.1}/statable/model.py +0 -0
  63. {statable-3.2.0 → statable-3.2.1}/statable/parser.py +0 -0
  64. {statable-3.2.0 → statable-3.2.1}/statable/sample_data.py +0 -0
  65. {statable-3.2.0 → statable-3.2.1}/statable/shared/__init__.py +0 -0
  66. {statable-3.2.0 → statable-3.2.1}/statable/shared/condition_library.py +0 -0
  67. {statable-3.2.0 → statable-3.2.1}/statable/shared/literal_library.py +0 -0
  68. {statable-3.2.0 → statable-3.2.1}/statable/shared/role_function_library.py +0 -0
  69. {statable-3.2.0 → statable-3.2.1}/statable/state_machine.py +0 -0
  70. {statable-3.2.0 → statable-3.2.1}/statable/xml_io.py +0 -0
  71. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/SOURCES.txt +0 -0
  72. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/dependency_links.txt +0 -0
  73. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/entry_points.txt +0 -0
  74. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/requires.txt +0 -0
  75. {statable-3.2.0 → statable-3.2.1}/statable.egg-info/top_level.txt +0 -0
  76. {statable-3.2.0 → statable-3.2.1}/statable_gui/__init__.py +0 -0
  77. {statable-3.2.0 → statable-3.2.1}/statable_gui/action_edit_dialog.py +0 -0
  78. {statable-3.2.0 → statable-3.2.1}/statable_gui/code_generation_dialog.py +0 -0
  79. {statable-3.2.0 → statable-3.2.1}/statable_gui/code_generation_settings_dialog.py +0 -0
  80. {statable-3.2.0 → statable-3.2.1}/statable_gui/common_widgets.py +0 -0
  81. {statable-3.2.0 → statable-3.2.1}/statable_gui/condition_builder_dialog.py +0 -0
  82. {statable-3.2.0 → statable-3.2.1}/statable_gui/condition_edit_dialog.py +0 -0
  83. {statable-3.2.0 → statable-3.2.1}/statable_gui/condition_template_dialog.py +0 -0
  84. {statable-3.2.0 → statable-3.2.1}/statable_gui/config.py +0 -0
  85. {statable-3.2.0 → statable-3.2.1}/statable_gui/dialogs.py +0 -0
  86. {statable-3.2.0 → statable-3.2.1}/statable_gui/event_definition_dialog.py +0 -0
  87. {statable-3.2.0 → statable-3.2.1}/statable_gui/event_delivery_settings_dialog.py +0 -0
  88. {statable-3.2.0 → statable-3.2.1}/statable_gui/event_queue_dialog.py +0 -0
  89. {statable-3.2.0 → statable-3.2.1}/statable_gui/global_defs.py +0 -0
  90. {statable-3.2.0 → statable-3.2.1}/statable_gui/global_defs_dialog.py +0 -0
  91. {statable-3.2.0 → statable-3.2.1}/statable_gui/i18n/__init__.py +0 -0
  92. {statable-3.2.0 → statable-3.2.1}/statable_gui/interrupt_handler_edit_dialog.py +0 -0
  93. {statable-3.2.0 → statable-3.2.1}/statable_gui/layer_settings_dialog.py +0 -0
  94. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/__init__.py +0 -0
  95. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/condition_library.py +0 -0
  96. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/literal_library.py +0 -0
  97. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/literal_management_dialog.py +0 -0
  98. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/role_function_edit_dialog.py +0 -0
  99. {statable-3.2.0 → statable-3.2.1}/statable_gui/libcntrl/role_function_library.py +0 -0
  100. {statable-3.2.0 → statable-3.2.1}/statable_gui/literal_definition_dialog.py +0 -0
  101. {statable-3.2.0 → statable-3.2.1}/statable_gui/logger.py +0 -0
  102. {statable-3.2.0 → statable-3.2.1}/statable_gui/matrix_table.py +0 -0
  103. {statable-3.2.0 → statable-3.2.1}/statable_gui/new_project_templates.py +0 -0
  104. {statable-3.2.0 → statable-3.2.1}/statable_gui/new_project_wizard.py +0 -0
  105. {statable-3.2.0 → statable-3.2.1}/statable_gui/preference_keys.py +0 -0
  106. {statable-3.2.0 → statable-3.2.1}/statable_gui/preferences.py +0 -0
  107. {statable-3.2.0 → statable-3.2.1}/statable_gui/role_function_dialog.py +0 -0
  108. {statable-3.2.0 → statable-3.2.1}/statable_gui/sample_data.py +0 -0
  109. {statable-3.2.0 → statable-3.2.1}/statable_gui/state_actions_dialog.py +0 -0
  110. {statable-3.2.0 → statable-3.2.1}/statable_gui/symbol_picker.py +0 -0
  111. {statable-3.2.0 → statable-3.2.1}/statable_gui/traceball.py +0 -0
  112. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/__init__.py +0 -0
  113. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/actions_tab.py +0 -0
  114. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/code_widget.py +0 -0
  115. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/coverage_analyzer.py +0 -0
  116. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/dialog.py +0 -0
  117. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/draft.py +0 -0
  118. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/edit_dialogs.py +0 -0
  119. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/overview_tab.py +0 -0
  120. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/palette_widget.py +0 -0
  121. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/relations_edit_dialog.py +0 -0
  122. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/relations_tab.py +0 -0
  123. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/system_global_dialog.py +0 -0
  124. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/transition_actions_dialog.py +0 -0
  125. {statable-3.2.0 → statable-3.2.1}/statable_gui/transition_editor_direct/transitions_tab.py +0 -0
  126. {statable-3.2.0 → statable-3.2.1}/statable_gui/validation_dialog.py +0 -0
  127. {statable-3.2.0 → statable-3.2.1}/statable_gui/widgets.py +0 -0
  128. {statable-3.2.0 → statable-3.2.1}/tests/test_readme_consistency.py +0 -0
  129. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p1.py +0 -0
  130. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_10.py +0 -0
  131. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_2.py +0 -0
  132. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_5.py +0 -0
  133. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_6.py +0 -0
  134. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_7.py +0 -0
  135. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_8.py +0 -0
  136. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p12_9.py +0 -0
  137. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p2.py +0 -0
  138. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p3.py +0 -0
  139. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p4a.py +0 -0
  140. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_2_p4b.py +0 -0
  141. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_3_p1.py +0 -0
  142. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_4_p1_merge.py +0 -0
  143. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p1.py +0 -0
  144. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p10.py +0 -0
  145. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p11.py +0 -0
  146. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p2.py +0 -0
  147. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p3.py +0 -0
  148. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p4.py +0 -0
  149. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p5.py +0 -0
  150. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p6.py +0 -0
  151. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p8.py +0 -0
  152. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_5_p9.py +0 -0
  153. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_6_p1.py +0 -0
  154. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_6_p2.py +0 -0
  155. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_6_p3.py +0 -0
  156. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_7_p3.py +0 -0
  157. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_7_p4.py +0 -0
  158. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_7_p5_validation.py +0 -0
  159. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_8_p1_ai_prompt.py +0 -0
  160. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_8_p2_response_parser.py +0 -0
  161. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_8_p3_response_validator.py +0 -0
  162. {statable-3.2.0 → statable-3.2.1}/tests/test_v2_8_p4_gui_integration.py +0 -0
  163. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_0_g1_shared.py +0 -0
  164. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_0_s4_docs.py +0 -0
  165. {statable-3.2.0 → statable-3.2.1}/tests/test_v3_2_s1_wizard.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: statable
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: MISRA C:2012-aware state machine design and C code generation for embedded systems
5
5
  Author: Hideki Akashi
6
6
  License-Expression: Apache-2.0
@@ -8,7 +8,7 @@ StaTable code generation layer
8
8
  so it is not re-exported at top level (to reduce startup time)
9
9
  """
10
10
 
11
- __version__ = "3.2.0"
11
+ __version__ = "3.2.1"
12
12
 
13
13
  __all__ = [
14
14
  'CCodeGenerator',
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "statable"
9
- version = "3.2.0"
9
+ version = "3.2.1"
10
10
  description = "MISRA C:2012-aware state machine design and C code generation for embedded systems"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.10"
@@ -40,7 +40,7 @@ from .global_defs import (
40
40
  StructMemberDef,
41
41
  )
42
42
 
43
- __version__ = "3.2.0"
43
+ __version__ = "3.2.1"
44
44
 
45
45
  __all__ = [
46
46
  # model
@@ -27,7 +27,7 @@ import json
27
27
  import sys
28
28
  from pathlib import Path
29
29
 
30
- CLI_VERSION = "3.2.0"
30
+ CLI_VERSION = "3.2.1"
31
31
 
32
32
 
33
33
  def _err(msg: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: statable
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: MISRA C:2012-aware state machine design and C code generation for embedded systems
5
5
  Author: Hideki Akashi
6
6
  License-Expression: Apache-2.0
@@ -211,6 +211,8 @@ class MainWindow(QMainWindow):
211
211
 
212
212
  self.tab_widget = QTabWidget()
213
213
  self.tab_widget.setTabsClosable(True)
214
+ # [v3.2.1] Enable drag-and-drop tab reordering
215
+ self.tab_widget.setMovable(True)
214
216
  self.tab_widget.tabCloseRequested.connect(
215
217
  self.close_tab)
216
218
  self.setCentralWidget(self.tab_widget)
@@ -384,7 +386,8 @@ class MainWindow(QMainWindow):
384
386
  file_menu.addSeparator()
385
387
 
386
388
  open_action = QAction(self.tr("Open Project..."), self)
387
- open_action.triggered.connect(self.open_project)
389
+ # [v3.2.1 fix] lambda: avoid passing triggered(bool) as filepath
390
+ open_action.triggered.connect(lambda: self.open_project())
388
391
  file_menu.addAction(open_action)
389
392
 
390
393
  save_action = QAction(self.tr("Save Project..."), self)
@@ -812,6 +815,10 @@ class MainWindow(QMainWindow):
812
815
 
813
816
  def open_project(self, filepath: str = None):
814
817
  """Load the whole project"""
818
+ # [v3.2.1 fix] Qt triggered signal passes bool; normalize to None
819
+ if isinstance(filepath, bool):
820
+ filepath = None
821
+
815
822
  # [v2.3] Prompt to save before loading
816
823
  if not self._maybe_save():
817
824
  return
@@ -3,11 +3,11 @@
3
3
  Phase S-1 (v3.0) tests: packaging foundation.
4
4
 
5
5
  Verifies:
6
- - code/pyproject.toml exists and declares statable/3.2.0
6
+ - code/pyproject.toml exists and declares statable/3.2.1
7
7
  - statable-cli entry point is defined
8
8
  - extras: gui / dev
9
- - statable.__version__ == "3.2.0"
10
- - codegen.__version__ == "3.2.0"
9
+ - statable.__version__ == "3.2.1"
10
+ - codegen.__version__ == "3.2.1"
11
11
  """
12
12
  from __future__ import annotations
13
13
 
@@ -64,8 +64,8 @@ def main() -> int:
64
64
  check("project.name == 'statable'",
65
65
  project.get("name") == "statable",
66
66
  f"got: {project.get('name')!r}")
67
- check("project.version == '3.2.0'",
68
- project.get("version") == "3.2.0",
67
+ check("project.version == '3.2.1'",
68
+ project.get("version") == "3.2.1",
69
69
  f"got: {project.get('version')!r}")
70
70
 
71
71
  # --- T4: requires-python ---------------------------------------
@@ -101,16 +101,16 @@ def main() -> int:
101
101
  # --- T8: runtime __version__ -----------------------------------
102
102
  try:
103
103
  import statable
104
- check("statable.__version__ == '3.2.0'",
105
- getattr(statable, "__version__", None) == "3.2.0",
104
+ check("statable.__version__ == '3.2.1'",
105
+ getattr(statable, "__version__", None) == "3.2.1",
106
106
  f"got: {getattr(statable, '__version__', None)!r}")
107
107
  except Exception as e:
108
108
  check("statable importable", False, repr(e))
109
109
 
110
110
  try:
111
111
  import codegen
112
- check("codegen.__version__ == '3.2.0'",
113
- getattr(codegen, "__version__", None) == "3.2.0",
112
+ check("codegen.__version__ == '3.2.1'",
113
+ getattr(codegen, "__version__", None) == "3.2.1",
114
114
  f"got: {getattr(codegen, '__version__', None)!r}")
115
115
  except Exception as e:
116
116
  check("codegen importable", False, repr(e))
@@ -47,8 +47,8 @@ def main() -> int:
47
47
  _summary()
48
48
  return 1
49
49
 
50
- check("statable has __version__ == '3.2.0'",
51
- getattr(statable, "__version__", None) == "3.2.0",
50
+ check("statable has __version__ == '3.2.1'",
51
+ getattr(statable, "__version__", None) == "3.2.1",
52
52
  f"got: {getattr(statable, '__version__', None)!r}")
53
53
  check("'__version__' in statable.__all__",
54
54
  "__version__" in statable.__all__,
@@ -69,8 +69,8 @@ def main() -> int:
69
69
  _summary()
70
70
  return 1
71
71
 
72
- check("codegen has __version__ == '3.2.0'",
73
- getattr(codegen, "__version__", None) == "3.2.0",
72
+ check("codegen has __version__ == '3.2.1'",
73
+ getattr(codegen, "__version__", None) == "3.2.1",
74
74
  f"got: {getattr(codegen, '__version__', None)!r}")
75
75
  check("'validate' in codegen.__all__",
76
76
  "validate" in codegen.__all__,
@@ -60,8 +60,8 @@ def main() -> int:
60
60
  try:
61
61
  from statable import cli
62
62
  check("statable.cli importable", True)
63
- check("CLI_VERSION == '3.2.0'",
64
- cli.CLI_VERSION == "3.2.0",
63
+ check("CLI_VERSION == '3.2.1'",
64
+ cli.CLI_VERSION == "3.2.1",
65
65
  f"got: {cli.CLI_VERSION!r}")
66
66
  except Exception as e:
67
67
  check("statable.cli importable", False, repr(e))
@@ -91,8 +91,8 @@ def main() -> int:
91
91
  # --- T3: version --------------------------------------------------
92
92
  rc, out, _ = run_cli(["version"])
93
93
  check("version: exit 0", rc == 0, f"rc={rc}")
94
- check("version: prints 'statable-cli 3.2.0'",
95
- "statable-cli 3.2.0" in out,
94
+ check("version: prints 'statable-cli 3.2.1'",
95
+ "statable-cli 3.2.1" in out,
96
96
  f"out={out!r}")
97
97
 
98
98
  # --- T4: validate on real XML (json) ------------------------------
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes