quickdbd-cli 0.2.3__tar.gz → 0.2.4__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 (248) hide show
  1. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/PKG-INFO +2 -2
  2. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/README.md +1 -1
  3. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/pyproject.toml +1 -1
  4. quickdbd_cli-0.2.4/src/quickdbd_cli/__init__.py +1 -0
  5. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/diff.py +1 -1
  6. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/measure.py +3 -3
  7. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/serve.py +13 -2
  8. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/share.py +1 -0
  9. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_diff.py +1 -1
  10. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_pipeline.py +4 -3
  11. quickdbd_cli-0.2.3/src/quickdbd_cli/__init__.py +0 -1
  12. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/.gitignore +0 -0
  13. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/LICENSE +0 -0
  14. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/NOTICE +0 -0
  15. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/quickdbd-sample.txt +0 -0
  16. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/finance.txt +0 -0
  17. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/hr.txt +0 -0
  18. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/inventory.txt +0 -0
  19. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/marketing.txt +0 -0
  20. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/qdbd.layout.json +0 -0
  21. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/examples/synthetic/sales.txt +0 -0
  22. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/build_gallery.py +0 -0
  23. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/gen_font_metrics.py +0 -0
  24. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/gen_schema.py +0 -0
  25. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/gen_thumbnails.py +0 -0
  26. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/import_dbml_corpus.py +0 -0
  27. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/scripts/release.sh +0 -0
  28. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/__main__.py +0 -0
  29. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/Inter-Bold.ttf +0 -0
  30. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/Inter-Bold.woff2 +0 -0
  31. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/Inter-LICENSE.txt +0 -0
  32. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/Inter-Regular.ttf +0 -0
  33. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/Inter-Regular.woff2 +0 -0
  34. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/editor.js +0 -0
  35. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/elk-LICENSE.md +0 -0
  36. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/elk.bundled.js +0 -0
  37. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/font-metrics.json +0 -0
  38. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/render.js +0 -0
  39. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/style.css +0 -0
  40. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/assets/viewer.js +0 -0
  41. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/cli.py +0 -0
  42. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/convert.py +0 -0
  43. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/dbml.py +0 -0
  44. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/dbt.py +0 -0
  45. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/export.py +0 -0
  46. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/html.py +0 -0
  47. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/jsrt.py +0 -0
  48. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/layout.py +0 -0
  49. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/model.py +0 -0
  50. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/parser.py +0 -0
  51. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/project.py +0 -0
  52. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/src/quickdbd_cli/tags.py +0 -0
  53. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml/team.dbml +0 -0
  54. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/LICENSE +0 -0
  55. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/README.md +0 -0
  56. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/alias_of_duplicated_names.dbml +0 -0
  57. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/alias_of_duplicated_names.json +0 -0
  58. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/dep.dbml +0 -0
  59. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/dep.json +0 -0
  60. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_columns.dbml +0 -0
  61. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_columns.json +0 -0
  62. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.dbml +0 -0
  63. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_enum_field.json +0 -0
  64. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_name.dbml +0 -0
  65. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_name.json +0 -0
  66. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_names.dbml +0 -0
  67. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_names.json +0 -0
  68. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_table_partial_injections.dbml +0 -0
  69. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/duplicate_table_partial_injections.json +0 -0
  70. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/enum_as_default_column_value.dbml +0 -0
  71. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/enum_as_default_column_value.json +0 -0
  72. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/enum_name.dbml +0 -0
  73. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/enum_name.json +0 -0
  74. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/erroneous.dbml +0 -0
  75. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/erroneous.json +0 -0
  76. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/multiple_notes_in_table_group.dbml +0 -0
  77. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/multiple_notes_in_table_group.json +0 -0
  78. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index.dbml +0 -0
  79. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index.json +0 -0
  80. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index_table_partial.dbml +0 -0
  81. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_column_in_index_table_partial.json +0 -0
  82. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table.dbml +0 -0
  83. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table.json +0 -0
  84. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table_partial.dbml +0 -0
  85. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/nonexisting_inline_ref_column_in_table_partial.json +0 -0
  86. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/ref_validator.dbml +0 -0
  87. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/ref_validator.json +0 -0
  88. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.dbml +0 -0
  89. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/sticky_notes_validator.json +0 -0
  90. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/table_partial.dbml +0 -0
  91. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/table_partial.json +0 -0
  92. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/unknown_table_group_field.dbml +0 -0
  93. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/binder/unknown_table_group_field.json +0 -0
  94. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/array_type.dbml +0 -0
  95. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/array_type.json +0 -0
  96. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/checks.dbml +0 -0
  97. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/checks.json +0 -0
  98. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_1_inline_1_element.dbml +0 -0
  99. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_1_inline_1_element.json +0 -0
  100. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_elements.dbml +0 -0
  101. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_elements.json +0 -0
  102. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_inlines.dbml +0 -0
  103. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/circular_ref_2_inlines.json +0 -0
  104. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/column_caller_type.dbml +0 -0
  105. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/column_caller_type.json +0 -0
  106. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/comment.dbml +0 -0
  107. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/comment.json +0 -0
  108. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/composite_pk.dbml +0 -0
  109. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/composite_pk.json +0 -0
  110. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/default_tables.dbml +0 -0
  111. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/default_tables.json +0 -0
  112. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep.dbml +0 -0
  113. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep.json +0 -0
  114. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_color.dbml +0 -0
  115. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_color.json +0 -0
  116. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_duplicate.dbml +0 -0
  117. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_duplicate.json +0 -0
  118. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_pipeline.dbml +0 -0
  119. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/dep_pipeline.json +0 -0
  120. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/enum_as_default_column_value.dbml +0 -0
  121. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/enum_as_default_column_value.json +0 -0
  122. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/enum_tables.dbml +0 -0
  123. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/enum_tables.json +0 -0
  124. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/erroneous.dbml +0 -0
  125. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/erroneous.json +0 -0
  126. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/general_schema.dbml +0 -0
  127. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/general_schema.json +0 -0
  128. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/header_color_tables.dbml +0 -0
  129. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/header_color_tables.json +0 -0
  130. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/index_table_partial.dbml +0 -0
  131. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/index_table_partial.json +0 -0
  132. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/index_tables.dbml +0 -0
  133. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/index_tables.json +0 -0
  134. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/metadata.dbml +0 -0
  135. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/metadata.json +0 -0
  136. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/metadata_errors.dbml +0 -0
  137. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/metadata_errors.json +0 -0
  138. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/multi_notes.dbml +0 -0
  139. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/multi_notes.json +0 -0
  140. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/multiline_string.dbml +0 -0
  141. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/multiline_string.json +0 -0
  142. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/negative_number.dbml +0 -0
  143. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/negative_number.json +0 -0
  144. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/note_normalize.dbml +0 -0
  145. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/note_normalize.json +0 -0
  146. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/note_normalize_with_top_empty_lines.dbml +0 -0
  147. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/note_normalize_with_top_empty_lines.json +0 -0
  148. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/old_undocumented_syntax.dbml +0 -0
  149. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/old_undocumented_syntax.json +0 -0
  150. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/primary_key.dbml +0 -0
  151. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/primary_key.json +0 -0
  152. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/project.dbml +0 -0
  153. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/project.json +0 -0
  154. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/ref_name_and_color_setting.dbml +0 -0
  155. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/ref_name_and_color_setting.json +0 -0
  156. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/ref_settings.dbml +0 -0
  157. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/ref_settings.json +0 -0
  158. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/referential_actions.dbml +0 -0
  159. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/referential_actions.json +0 -0
  160. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/self_referential_ref_in_tablepartial.dbml +0 -0
  161. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/self_referential_ref_in_tablepartial.json +0 -0
  162. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/sticky_notes.dbml +0 -0
  163. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/sticky_notes.json +0 -0
  164. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_element.dbml +0 -0
  165. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_element.json +0 -0
  166. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group.dbml +0 -0
  167. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group.json +0 -0
  168. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group_element.dbml +0 -0
  169. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group_element.json +0 -0
  170. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group_settings.dbml +0 -0
  171. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_group_settings.json +0 -0
  172. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_partial.dbml +0 -0
  173. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_partial.json +0 -0
  174. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_reappear_tablegroup.dbml +0 -0
  175. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_reappear_tablegroup.json +0 -0
  176. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_settings.dbml +0 -0
  177. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/table_settings.json +0 -0
  178. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/tablepartial_causing_circular_ref.dbml +0 -0
  179. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/tablepartial_causing_circular_ref.json +0 -0
  180. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/two_inline_refs.dbml +0 -0
  181. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/interpreter/two_inline_refs.json +0 -0
  182. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/call_expression.dbml +0 -0
  183. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/call_expression.json +0 -0
  184. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/element_in_simple_body.dbml +0 -0
  185. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/element_in_simple_body.json +0 -0
  186. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/erroneous_setting.dbml +0 -0
  187. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/erroneous_setting.json +0 -0
  188. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/expression.dbml +0 -0
  189. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/expression.json +0 -0
  190. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/last_invalid_number.dbml +0 -0
  191. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/last_invalid_number.json +0 -0
  192. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/list_expression.dbml +0 -0
  193. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/list_expression.json +0 -0
  194. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/trailing_comments.dbml +0 -0
  195. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/trailing_comments.json +0 -0
  196. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/tuple_expression.dbml +0 -0
  197. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/parser/tuple_expression.json +0 -0
  198. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/checks.dbml +0 -0
  199. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/checks.json +0 -0
  200. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/complex_names.dbml +0 -0
  201. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/complex_names.json +0 -0
  202. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/dep.dbml +0 -0
  203. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/dep.json +0 -0
  204. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/enum.dbml +0 -0
  205. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/enum.json +0 -0
  206. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/invalid_args.dbml +0 -0
  207. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/invalid_args.json +0 -0
  208. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/public_schema.dbml +0 -0
  209. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/public_schema.json +0 -0
  210. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/redefined_note.dbml +0 -0
  211. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/redefined_note.json +0 -0
  212. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/ref_error_setting.dbml +0 -0
  213. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/ref_error_setting.json +0 -0
  214. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/ref_in_table.dbml +0 -0
  215. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/ref_in_table.json +0 -0
  216. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/schema_nested_tablegroup.dbml +0 -0
  217. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/schema_nested_tablegroup.json +0 -0
  218. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_group_settings.dbml +0 -0
  219. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_group_settings.json +0 -0
  220. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_partial_check.dbml +0 -0
  221. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_partial_check.json +0 -0
  222. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_partial_settings_general.dbml +0 -0
  223. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_partial_settings_general.json +0 -0
  224. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_settings_check.dbml +0 -0
  225. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_settings_check.json +0 -0
  226. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_settings_general.dbml +0 -0
  227. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/table_settings_general.json +0 -0
  228. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/wrong_sub_element_declarations.dbml +0 -0
  229. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/wrong_sub_element_declarations.json +0 -0
  230. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/wrong_table_partial_injection_syntax.dbml +0 -0
  231. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/dbml-ref/validator/wrong_table_partial_injection_syntax.json +0 -0
  232. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/jaffle/LICENSE +0 -0
  233. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/jaffle/README.md +0 -0
  234. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/jaffle/catalog.json +0 -0
  235. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/fixtures/jaffle/manifest.json +0 -0
  236. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_convert.py +0 -0
  237. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_dbml.py +0 -0
  238. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_dbml_pipeline.py +0 -0
  239. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_dbt.py +0 -0
  240. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_gallery.py +0 -0
  241. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_packaging.py +0 -0
  242. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_parser.py +0 -0
  243. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_path.py +0 -0
  244. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_render.py +0 -0
  245. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_select.py +0 -0
  246. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_serve.py +0 -0
  247. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_share.py +0 -0
  248. {quickdbd_cli-0.2.3 → quickdbd_cli-0.2.4}/tests/test_tags.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: quickdbd-cli
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Compile QuickDBD-syntax schema files into interactive HTML ER diagrams, with no table limit.
5
5
  Project-URL: Homepage, https://github.com/MarkPhamm/quickdbd-cli
6
6
  Author: Minh (Mark) Pham
@@ -65,7 +65,7 @@ qdbd is not affiliated with QuickDBD or dbdiagram.io. It reads the same text syn
65
65
  - **dbt import**: `qdbd import dbt` reads `manifest.json`. Primary keys come from `unique` + `not_null` tests or constraints, relationships from `relationships` tests, and `--infer-fks` fills the gaps from column names.
66
66
  - **Readable at 200+ tables**: automatic layout, search, dbt-style selectors (`+orders+1`, `group:marts`, `tag:fact`), shaded regions per file, collapsed views and a minimap.
67
67
  - **Review changes in pull requests**: `qdbd diff` reports what a branch changed, the GitHub Action posts it as a PR comment, and `--diff-base` colours the changes in the diagram.
68
- - **VS Code extension**: highlighting, errors as you type, outline, F12 across files, and the diagram beside the editor, following your cursor. Export, share, compare with git and dbt import from the Command Palette, with no terminal: it installs the CLI itself. Get it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=MarkPhamm.quickdbd) or, for Cursor, Windsurf and VSCodium, [Open VSX](https://open-vsx.org/extension/MarkPhamm/quickdbd) ([docs](https://qdbd.dev/vscode/)).
68
+ - **VS Code extension**: highlighting, errors as you type, outline, F12 across files, and the diagram beside the editor, following your cursor, or in your browser on localhost. Export, share, compare with git, convert to and from DBML, and dbt import from the sidebar or the Command Palette, with no terminal: it installs the CLI itself. Get it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=MarkPhamm.quickdbd) or, for Cursor, Windsurf and VSCodium, [Open VSX](https://open-vsx.org/extension/MarkPhamm/quickdbd) ([docs](https://qdbd.dev/vscode/)).
69
69
  - **One schema, many outputs**: an HTML page, PNG, SVG, editable draw.io, or a shareable link. Installs with pip: no Node, Graphviz or browser needed.
70
70
 
71
71
  ## Demo gallery
@@ -37,7 +37,7 @@ qdbd is not affiliated with QuickDBD or dbdiagram.io. It reads the same text syn
37
37
  - **dbt import**: `qdbd import dbt` reads `manifest.json`. Primary keys come from `unique` + `not_null` tests or constraints, relationships from `relationships` tests, and `--infer-fks` fills the gaps from column names.
38
38
  - **Readable at 200+ tables**: automatic layout, search, dbt-style selectors (`+orders+1`, `group:marts`, `tag:fact`), shaded regions per file, collapsed views and a minimap.
39
39
  - **Review changes in pull requests**: `qdbd diff` reports what a branch changed, the GitHub Action posts it as a PR comment, and `--diff-base` colours the changes in the diagram.
40
- - **VS Code extension**: highlighting, errors as you type, outline, F12 across files, and the diagram beside the editor, following your cursor. Export, share, compare with git and dbt import from the Command Palette, with no terminal: it installs the CLI itself. Get it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=MarkPhamm.quickdbd) or, for Cursor, Windsurf and VSCodium, [Open VSX](https://open-vsx.org/extension/MarkPhamm/quickdbd) ([docs](https://qdbd.dev/vscode/)).
40
+ - **VS Code extension**: highlighting, errors as you type, outline, F12 across files, and the diagram beside the editor, following your cursor, or in your browser on localhost. Export, share, compare with git, convert to and from DBML, and dbt import from the sidebar or the Command Palette, with no terminal: it installs the CLI itself. Get it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=MarkPhamm.quickdbd) or, for Cursor, Windsurf and VSCodium, [Open VSX](https://open-vsx.org/extension/MarkPhamm/quickdbd) ([docs](https://qdbd.dev/vscode/)).
41
41
  - **One schema, many outputs**: an HTML page, PNG, SVG, editable draw.io, or a shareable link. Installs with pip: no Node, Graphviz or browser needed.
42
42
 
43
43
  ## Demo gallery
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "quickdbd-cli"
7
- version = "0.2.3"
7
+ version = "0.2.4"
8
8
  description = "Compile QuickDBD-syntax schema files into interactive HTML ER diagrams, with no table limit."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.2.4"
@@ -123,7 +123,7 @@ def diff_schemas(old: Schema, new: Schema) -> SchemaDiff:
123
123
 
124
124
  def _git(args: list[str], cwd: Path) -> str:
125
125
  try:
126
- r = subprocess.run(["git", *args], cwd=cwd, capture_output=True, text=True, check=False)
126
+ r = subprocess.run(["git", *args], cwd=cwd, capture_output=True, text=True, encoding="utf-8", check=False)
127
127
  except FileNotFoundError:
128
128
  raise DiffError("git is not installed") from None
129
129
  if r.returncode != 0:
@@ -9,7 +9,7 @@ from __future__ import annotations
9
9
  import json
10
10
  from functools import cache
11
11
  from importlib import resources
12
- from pathlib import PurePosixPath
12
+ from pathlib import PurePath, PurePosixPath
13
13
 
14
14
  from . import tags
15
15
  from .model import Column, Schema, Table
@@ -33,7 +33,7 @@ STYLE = {
33
33
 
34
34
  @cache
35
35
  def _metrics() -> dict:
36
- return json.loads(resources.files("quickdbd_cli").joinpath("assets/font-metrics.json").read_text())
36
+ return json.loads(resources.files("quickdbd_cli").joinpath("assets/font-metrics.json").read_text(encoding="utf-8"))
37
37
 
38
38
 
39
39
  def text_width(text: str, size: float, bold: bool = False) -> float:
@@ -129,7 +129,7 @@ def model_json(schema: Schema) -> dict:
129
129
  }
130
130
  )
131
131
  tables = [
132
- {**table_json(t), "group": t.group or groups[t.path], "file": t.path, "line": t.line}
132
+ {**table_json(t), "group": t.group or groups[t.path], "file": PurePath(t.path).as_posix(), "line": t.line}
133
133
  for t in schema.tables.values()
134
134
  ]
135
135
  legend = tags.annotate(schema, tables)
@@ -13,6 +13,7 @@ from __future__ import annotations
13
13
 
14
14
  import errno
15
15
  import json
16
+ import socket
16
17
  import sys
17
18
  import threading
18
19
  import time
@@ -122,7 +123,7 @@ class State:
122
123
  current = str(target.stat().st_mtime_ns)
123
124
  if base_mtime is not None and current != str(base_mtime):
124
125
  return 409, {"error": "changed on disk", "text": target.read_text(encoding="utf-8"), "mtime": current}
125
- target.write_text(text, encoding="utf-8")
126
+ target.write_text(text, encoding="utf-8", newline="") # as sent: no CRLF on Windows
126
127
  return 200, {"mtime": str(target.stat().st_mtime_ns)}
127
128
 
128
129
 
@@ -207,6 +208,16 @@ class PortInUse(OSError):
207
208
  pass
208
209
 
209
210
 
211
+ class _Server(ThreadingHTTPServer):
212
+ # On Windows, SO_REUSEADDR lets a second server bind a port that's already in use; ask for it exclusively.
213
+ allow_reuse_address = sys.platform != "win32"
214
+
215
+ def server_bind(self) -> None:
216
+ if sys.platform == "win32":
217
+ self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1)
218
+ super().server_bind()
219
+
220
+
210
221
  def make_server(
211
222
  project: Project,
212
223
  port: int = 8765,
@@ -222,7 +233,7 @@ def make_server(
222
233
  server = None
223
234
  for p in range(port, port + max(tries, 1)) if port else [0]:
224
235
  try:
225
- server = ThreadingHTTPServer(("127.0.0.1", p), _handler(state, title))
236
+ server = _Server(("127.0.0.1", p), _handler(state, title))
226
237
  break
227
238
  except OSError as e:
228
239
  if e.errno != errno.EADDRINUSE:
@@ -61,6 +61,7 @@ def _gh(method: str, endpoint: str, payload: dict) -> dict:
61
61
  input=json.dumps(payload),
62
62
  capture_output=True,
63
63
  text=True,
64
+ encoding="utf-8",
64
65
  check=False,
65
66
  )
66
67
  except FileNotFoundError:
@@ -76,7 +76,7 @@ def test_cli_two_paths_formats(tmp_path, capsys):
76
76
  data = json.loads(capsys.readouterr().out)
77
77
  assert data["tables_added"] == ["products"]
78
78
  assert main(["diff", str(a), str(b), "--format", "markdown", "-o", str(tmp_path / "d.md")]) == 0
79
- md = (tmp_path / "d.md").read_text()
79
+ md = (tmp_path / "d.md").read_text(encoding="utf-8")
80
80
  assert md.startswith("### Schema changes") and "| `customers` |" in md
81
81
  assert main(["diff", str(a), str(a), "--exit-code"]) == 0
82
82
 
@@ -141,15 +141,16 @@ def test_check_format_github(tmp_path, capsys):
141
141
  bad.write_text("T\n-\nA int foo\nB decimal(10, 2)\n")
142
142
  assert main(["check", "--format", "github", str(bad)]) == 1
143
143
  out = capsys.readouterr().out.splitlines()
144
- assert f"::error file={bad},line=3,title=qdbd::Unrecognized keyword 'foo'" in out
145
- assert any(line.startswith(f"::warning file={bad},line=4,title=qdbd::QuickDBD would reject this") for line in out)
144
+ path = str(bad).replace(":", "%3A") # a Windows drive colon is escaped in annotation properties
145
+ assert f"::error file={path},line=3,title=qdbd::Unrecognized keyword 'foo'" in out
146
+ assert any(line.startswith(f"::warning file={path},line=4,title=qdbd::QuickDBD would reject this") for line in out)
146
147
 
147
148
 
148
149
  def test_check_format_github_strict_promotes_warnings(tmp_path, capsys):
149
150
  f = tmp_path / "w.txt"
150
151
  f.write_text("T\n-\nA decimal(10, 2)\n")
151
152
  assert main(["check", "--format", "github", "--strict", str(f)]) == 1
152
- assert capsys.readouterr().out.startswith(f"::error file={f},line=3,")
153
+ assert capsys.readouterr().out.startswith(f"::error file={str(f).replace(':', '%3A')},line=3,")
153
154
 
154
155
 
155
156
  def test_github_annotation_escaping():
@@ -1 +0,0 @@
1
- __version__ = "0.2.3"
File without changes
File without changes
File without changes