rdetoolkit 1.5.2__tar.gz → 1.5.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/PKG-INFO +1 -1
  2. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/pyproject.toml +1 -1
  3. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/__init__.py +1 -1
  4. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/invoicefile.py +11 -9
  5. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/invoice.py +41 -0
  6. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_invoicefile.py +28 -0
  7. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_smarttable_invoice_initializer.py +170 -11
  8. rdetoolkit-1.5.3/tools/bump_version.py +376 -0
  9. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/uv.lock +1 -1
  10. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.cargo/config.toml +0 -0
  11. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/CODEOWNERS +0 -0
  12. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/ISSUE_TEMPLATE/custom-issue-reporting-template.md +0 -0
  13. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  14. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/dependabot.yml +0 -0
  15. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/release.yml +0 -0
  16. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/build-index.yml +0 -0
  17. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/build-test-develop.yml +0 -0
  18. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/cache.yml +0 -0
  19. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/core_module.yml +0 -0
  20. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/coverage_badge.yml +0 -0
  21. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/coverage_pr_reports.yml +0 -0
  22. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/docs-ci.yml +0 -0
  23. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/docs-pr-check.yml +0 -0
  24. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/main.yml +0 -0
  25. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/pr-agent.yaml +0 -0
  26. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.github/workflows/pypi-release.yml +0 -0
  27. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.gitignore +0 -0
  28. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.mise.toml +0 -0
  29. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.pr_agent.toml +0 -0
  30. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.pre-commit-config.yaml +0 -0
  31. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.prettierrc +0 -0
  32. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.textlintrc.json +0 -0
  33. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.vscode/settings.json +0 -0
  34. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/.yamllint +0 -0
  35. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/AGENTS.md +0 -0
  36. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/CHANGELOG.md +0 -0
  37. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/CLAUDE.md +0 -0
  38. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/CONTRIBUTING.md +0 -0
  39. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/CONTRIBUTORS.md +0 -0
  40. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/Cargo.lock +0 -0
  41. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/Cargo.toml +0 -0
  42. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/LICENSE +0 -0
  43. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/README.md +0 -0
  44. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/README_ja.md +0 -0
  45. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/api/index.en.md +0 -0
  46. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/api/index.ja.md +0 -0
  47. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/api/result.en.md +0 -0
  48. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/api/result.ja.md +0 -0
  49. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/contribute/documents_contributing.md +0 -0
  50. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/contribute/home.md +0 -0
  51. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/contribute/sourcecode_contributing.md +0 -0
  52. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/contributing.en.md +0 -0
  53. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/contributing.ja.md +0 -0
  54. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/docs.en.md +0 -0
  55. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/docs.ja.md +0 -0
  56. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/index.en.md +0 -0
  57. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/index.ja.md +0 -0
  58. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/development/type_checking.md +0 -0
  59. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/2585322.png +0 -0
  60. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/coverage.svg +0 -0
  61. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/error.svg +0 -0
  62. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/excelinvoice.svg +0 -0
  63. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/excelinvoice_demo.svg +0 -0
  64. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/excelinvoice_format.png +0 -0
  65. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/filemode_excelinvoice.png +0 -0
  66. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/foldermode_excelinvoice.png +0 -0
  67. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/invoice_mode.svg +0 -0
  68. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/magic_filename.svg +0 -0
  69. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/multidatatile_mode.svg +0 -0
  70. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/multifile_mode.svg +0 -0
  71. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/overview_workflow.svg +0 -0
  72. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/quick-sample-code-none.svg +0 -0
  73. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/quick-sample-code.svg +0 -0
  74. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/rde_sample_uuid.png +0 -0
  75. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/rde_user_uuid.png +0 -0
  76. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/rdeformat.svg +0 -0
  77. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/img/smarttable_excel_sample.png +0 -0
  78. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/index.en.md +0 -0
  79. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/index.ja.md +0 -0
  80. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/installation.en.md +0 -0
  81. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/installation.ja.md +0 -0
  82. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/overrides/main.html +0 -0
  83. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/quick-start.en.md +0 -0
  84. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/quick-start.ja.md +0 -0
  85. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/artifact/report.en.md +0 -0
  86. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/artifact/report.md +0 -0
  87. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/archive.md +0 -0
  88. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/command.en.md +0 -0
  89. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/command.md +0 -0
  90. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/gen_config.en.md +0 -0
  91. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/gen_config.md +0 -0
  92. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/gen_excelinvoice.en.md +0 -0
  93. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/gen_excelinvoice.md +0 -0
  94. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/validate.en.md +0 -0
  95. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/cmd/validate.md +0 -0
  96. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/config.md +0 -0
  97. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/core.md +0 -0
  98. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/csv2graph.md +0 -0
  99. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/errors.md +0 -0
  100. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/exceptions.md +0 -0
  101. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/fileops.md +0 -0
  102. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/img2thumb.md +0 -0
  103. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/impl/compressed_controller.md +0 -0
  104. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/impl/input_controller.en.md +0 -0
  105. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/impl/input_controller.md +0 -0
  106. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/index.md +0 -0
  107. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/interface/filechecker.md +0 -0
  108. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/invoicefile.md +0 -0
  109. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/config.en.md +0 -0
  110. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/config.md +0 -0
  111. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/invoice.en.md +0 -0
  112. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/invoice.md +0 -0
  113. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/invoice_schema.en.md +0 -0
  114. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/invoice_schema.md +0 -0
  115. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/metadata.en.md +0 -0
  116. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/metadata.md +0 -0
  117. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/rde2types.en.md +0 -0
  118. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/rde2types.md +0 -0
  119. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/report.md +0 -0
  120. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/result.en.md +0 -0
  121. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/models/result.md +0 -0
  122. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/modeproc.md +0 -0
  123. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/context.md +0 -0
  124. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/factories.md +0 -0
  125. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/index.md +0 -0
  126. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/pipeline.md +0 -0
  127. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/datasets.md +0 -0
  128. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/descriptions.md +0 -0
  129. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/files.md +0 -0
  130. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/index.md +0 -0
  131. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/invoice.md +0 -0
  132. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/thumbnails.md +0 -0
  133. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/validation.md +0 -0
  134. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/processing/processors/variables.md +0 -0
  135. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/rde2util.md +0 -0
  136. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/rdelogger.md +0 -0
  137. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/storage/minio.en.md +0 -0
  138. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/storage/minio.md +0 -0
  139. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/traceback/formatter.md +0 -0
  140. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/traceback/index.md +0 -0
  141. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/traceback/masking.md +0 -0
  142. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/validation.md +0 -0
  143. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/rdetoolkit/workflows.md +0 -0
  144. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/releases/index.en.md +0 -0
  145. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/releases/index.ja.md +0 -0
  146. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/search/rdetoolkit_code_index.jsonl +0 -0
  147. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/cli.en.md +0 -0
  148. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/cli.ja.md +0 -0
  149. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/config.en.md +0 -0
  150. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/config.ja.md +0 -0
  151. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/file_folder_mode.en.md +0 -0
  152. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/file_folder_mode.ja.md +0 -0
  153. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/magic_variable.en.md +0 -0
  154. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/config/magic_variable.ja.md +0 -0
  155. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/docker.en.md +0 -0
  156. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/docker.ja.md +0 -0
  157. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/logging.en.md +0 -0
  158. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/logging.ja.md +0 -0
  159. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/metadata_definition_file.en.md +0 -0
  160. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/metadata_definition_file.ja.md +0 -0
  161. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode.en.md +0 -0
  162. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode.ja.md +0 -0
  163. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_excelinvoice.en.md +0 -0
  164. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_excelinvoice.ja.md +0 -0
  165. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_invoice.en.md +0 -0
  166. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_invoice.ja.md +0 -0
  167. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_multidatatile.en.md +0 -0
  168. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_multidatatile.ja.md +0 -0
  169. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_rdeformat.en.md +0 -0
  170. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_rdeformat.ja.md +0 -0
  171. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_smarttableinvoice.en.md +0 -0
  172. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/mode/mode_smarttableinvoice.ja.md +0 -0
  173. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/object_storage.en.md +0 -0
  174. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/object_storage.ja.md +0 -0
  175. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/quickstart.en.md +0 -0
  176. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/quickstart.ja.md +0 -0
  177. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph.en.md +0 -0
  178. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph.ja.md +0 -0
  179. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample1/data.csv +0 -0
  180. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample1/data.png +0 -0
  181. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample1/sample.py +0 -0
  182. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample10/data.csv +0 -0
  183. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample10/data.png +0 -0
  184. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample10/sample_lim.py +0 -0
  185. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample11/data.csv +0 -0
  186. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample11/main_image/data.png +0 -0
  187. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample11/other_image/data_intensity_(counts).png +0 -0
  188. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample11/switch_output_directory.py +0 -0
  189. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample12/data.csv +0 -0
  190. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample12/data.html +0 -0
  191. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample12/data.png +0 -0
  192. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample12/output_html.py +0 -0
  193. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample2/I/342/200/223V_Curve_of_a_Diode_log_scale.png" +0 -0
  194. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample2/data.csv +0 -0
  195. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample2/sample.py +0 -0
  196. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample3/data.csv +0 -0
  197. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample3/data.png +0 -0
  198. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample3/sample_invert.py +0 -0
  199. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/Angle-Dependent-Torque.png +0 -0
  200. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/Angle-Dependent-Torque_j1.png +0 -0
  201. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/Angle-Dependent-Torque_j2.png +0 -0
  202. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/Angle-Dependent-Torque_j3.png +0 -0
  203. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/data.csv +0 -0
  204. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample4/sample_pair_plot.py +0 -0
  205. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample5/data.csv +0 -0
  206. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample5/data.png +0 -0
  207. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample5/sample_custom_title.py +0 -0
  208. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample6/data.csv +0 -0
  209. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample6/data.png +0 -0
  210. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample6/sample_max_legend_items.py +0 -0
  211. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample7/data.csv +0 -0
  212. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample7/sample.py +0 -0
  213. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample8/data.csv +0 -0
  214. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample8/sample_legend_info.png +0 -0
  215. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample8/sample_legend_info.py +0 -0
  216. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample9/data.csv +0 -0
  217. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample9/data.png +0 -0
  218. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples/sample9/sample_grid.py +0 -0
  219. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples.en.md +0 -0
  220. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/csv2graph_samples.ja.md +0 -0
  221. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/development_guide.en.md +0 -0
  222. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/development_guide.ja.md +0 -0
  223. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/directory.en.md +0 -0
  224. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/directory.ja.md +0 -0
  225. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/errorhandling.en.md +0 -0
  226. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/errorhandling.ja.md +0 -0
  227. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/feature_description.en.md +0 -0
  228. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/feature_description.ja.md +0 -0
  229. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/rdepath.en.md +0 -0
  230. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/rdepath.ja.md +0 -0
  231. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/structured.en.md +0 -0
  232. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/structured.ja.md +0 -0
  233. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/traceback.en.md +0 -0
  234. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/structured_process/traceback.ja.md +0 -0
  235. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/validation.en.md +0 -0
  236. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/usage/validation.ja.md +0 -0
  237. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/config.en.md +0 -0
  238. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/config.ja.md +0 -0
  239. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/index.en.md +0 -0
  240. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/index.ja.md +0 -0
  241. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/structured-processing.en.md +0 -0
  242. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/docs/user-guide/structured-processing.ja.md +0 -0
  243. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/mkdocs.yml +0 -0
  244. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/pytest.xml +0 -0
  245. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/build.rs +0 -0
  246. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/charset_detector.rs +0 -0
  247. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/fsops.rs +0 -0
  248. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/imageutil/processing.rs +0 -0
  249. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/imageutil.rs +0 -0
  250. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/rdetoolkit-core/lib.rs +0 -0
  251. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/requirements-dev.lock +0 -0
  252. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/requirements.lock +0 -0
  253. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/__init__.pyi +0 -0
  254. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/__main__.py +0 -0
  255. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/__main__.pyi +0 -0
  256. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/artifact/__init__.py +0 -0
  257. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/artifact/__init__.pyi +0 -0
  258. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/artifact/report.py +0 -0
  259. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/artifact/report.pyi +0 -0
  260. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli/__init__.py +0 -0
  261. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli/app.py +0 -0
  262. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli/app.pyi +0 -0
  263. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli/validate.py +0 -0
  264. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli/validate.pyi +0 -0
  265. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cli.pyi +0 -0
  266. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/__init__.py +0 -0
  267. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/__init__.pyi +0 -0
  268. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/archive.py +0 -0
  269. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/archive.pyi +0 -0
  270. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/command.py +0 -0
  271. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/command.pyi +0 -0
  272. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/csv2graph.py +0 -0
  273. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/csv2graph.pyi +0 -0
  274. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/default.py +0 -0
  275. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/default.pyi +0 -0
  276. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/gen_config.py +0 -0
  277. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/gen_config.pyi +0 -0
  278. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/gen_excelinvoice.py +0 -0
  279. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/gen_excelinvoice.pyi +0 -0
  280. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/validate.py +0 -0
  281. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/cmd/validate.pyi +0 -0
  282. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/config.py +0 -0
  283. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/config.pyi +0 -0
  284. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/core.pyi +0 -0
  285. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/errors.py +0 -0
  286. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/errors.pyi +0 -0
  287. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/exceptions.py +0 -0
  288. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/exceptions.pyi +0 -0
  289. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/fileops.py +0 -0
  290. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/fileops.pyi +0 -0
  291. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/__init__.py +0 -0
  292. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/__init__.pyi +0 -0
  293. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/api/__init__.py +0 -0
  294. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/api/__init__.pyi +0 -0
  295. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/api/csv2graph.py +0 -0
  296. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/api/csv2graph.pyi +0 -0
  297. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/api.pyi +0 -0
  298. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/config.py +0 -0
  299. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/config.pyi +0 -0
  300. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/exceptions.py +0 -0
  301. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/exceptions.pyi +0 -0
  302. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/__init__.py +0 -0
  303. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/__init__.pyi +0 -0
  304. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/file_writer.py +0 -0
  305. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/file_writer.pyi +0 -0
  306. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/path_validator.py +0 -0
  307. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io/path_validator.pyi +0 -0
  308. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/io.pyi +0 -0
  309. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/models.py +0 -0
  310. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/models.pyi +0 -0
  311. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/normalizers.py +0 -0
  312. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/normalizers.pyi +0 -0
  313. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/__init__.py +0 -0
  314. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/__init__.pyi +0 -0
  315. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/base.py +0 -0
  316. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/base.pyi +0 -0
  317. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/noheader_parser.py +0 -0
  318. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/noheader_parser.pyi +0 -0
  319. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/parser_factory.py +0 -0
  320. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/parser_factory.pyi +0 -0
  321. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/standard_parser.py +0 -0
  322. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/standard_parser.pyi +0 -0
  323. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/transpose_parser.py +0 -0
  324. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers/transpose_parser.pyi +0 -0
  325. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers.py +0 -0
  326. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/parsers.pyi +0 -0
  327. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/__init__.py +0 -0
  328. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/__init__.pyi +0 -0
  329. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/base.py +0 -0
  330. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/base.pyi +0 -0
  331. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/matplotlib_renderer.py +0 -0
  332. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/matplotlib_renderer.pyi +0 -0
  333. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/plotly_renderer.py +0 -0
  334. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers/plotly_renderer.pyi +0 -0
  335. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/renderers.pyi +0 -0
  336. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/__init__.py +0 -0
  337. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/__init__.pyi +0 -0
  338. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/all_graphs.py +0 -0
  339. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/all_graphs.pyi +0 -0
  340. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/base.py +0 -0
  341. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/base.pyi +0 -0
  342. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/dual_axis.py +0 -0
  343. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/dual_axis.pyi +0 -0
  344. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/individual.py +0 -0
  345. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies/individual.pyi +0 -0
  346. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/strategies.pyi +0 -0
  347. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/textutils.py +0 -0
  348. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph/textutils.pyi +0 -0
  349. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/graph.pyi +0 -0
  350. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/img2thumb.py +0 -0
  351. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/img2thumb.pyi +0 -0
  352. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/__init__.py +0 -0
  353. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/__init__.pyi +0 -0
  354. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/compressed_controller.py +0 -0
  355. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/compressed_controller.pyi +0 -0
  356. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/input_controller.py +0 -0
  357. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/impl/input_controller.pyi +0 -0
  358. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/__init__.py +0 -0
  359. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/__init__.pyi +0 -0
  360. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/filechecker.py +0 -0
  361. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/filechecker.pyi +0 -0
  362. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/report.py +0 -0
  363. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/interfaces/report.pyi +0 -0
  364. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/invoicefile.pyi +0 -0
  365. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/__init__.py +0 -0
  366. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/__init__.pyi +0 -0
  367. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/config.py +0 -0
  368. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/config.pyi +0 -0
  369. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/invoice.py +0 -0
  370. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/invoice.pyi +0 -0
  371. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/invoice_schema.py +0 -0
  372. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/invoice_schema.pyi +0 -0
  373. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/metadata.py +0 -0
  374. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/metadata.pyi +0 -0
  375. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/rde2types.py +0 -0
  376. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/rde2types.pyi +0 -0
  377. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/reports.py +0 -0
  378. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/reports.pyi +0 -0
  379. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/result.py +0 -0
  380. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/models/result.pyi +0 -0
  381. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/modeproc.py +0 -0
  382. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/modeproc.pyi +0 -0
  383. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/__init__.py +0 -0
  384. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/__init__.pyi +0 -0
  385. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/context.py +0 -0
  386. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/context.pyi +0 -0
  387. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/factories.py +0 -0
  388. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/factories.pyi +0 -0
  389. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/pipeline.py +0 -0
  390. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/pipeline.pyi +0 -0
  391. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/__init__.py +0 -0
  392. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/__init__.pyi +0 -0
  393. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/datasets.py +0 -0
  394. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/datasets.pyi +0 -0
  395. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/descriptions.py +0 -0
  396. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/descriptions.pyi +0 -0
  397. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/files.py +0 -0
  398. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/files.pyi +0 -0
  399. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/invoice.pyi +0 -0
  400. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/smarttable_early_exit.py +0 -0
  401. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/smarttable_early_exit.pyi +0 -0
  402. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/structured.py +0 -0
  403. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/structured.pyi +0 -0
  404. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/thumbnails.py +0 -0
  405. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/thumbnails.pyi +0 -0
  406. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/validation.py +0 -0
  407. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/validation.pyi +0 -0
  408. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/variables.py +0 -0
  409. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors/variables.pyi +0 -0
  410. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing/processors.pyi +0 -0
  411. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/processing.pyi +0 -0
  412. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/py.typed +0 -0
  413. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/rde2util.py +0 -0
  414. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/rde2util.pyi +0 -0
  415. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/rdelogger.py +0 -0
  416. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/rdelogger.pyi +0 -0
  417. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/result.py +0 -0
  418. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/result.pyi +0 -0
  419. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/static/ex_generalterm.csv +0 -0
  420. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/static/ex_specificterm.csv +0 -0
  421. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/static/invoice_basic_and_sample.schema_.json +0 -0
  422. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/storage/__init__.py +0 -0
  423. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/storage/__init__.pyi +0 -0
  424. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/storage/minio.py +0 -0
  425. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/storage/minio.pyi +0 -0
  426. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/traceback/__init__.py +0 -0
  427. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/traceback/formatter.py +0 -0
  428. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/traceback/formatter.pyi +0 -0
  429. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/traceback/masking.py +0 -0
  430. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/traceback/masking.pyi +0 -0
  431. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/validation.py +0 -0
  432. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/validation.pyi +0 -0
  433. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/workflows.py +0 -0
  434. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit/workflows.pyi +0 -0
  435. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/src/rdetoolkit.pyi +0 -0
  436. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/__init__.py +0 -0
  437. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/cmd/__init__.py +0 -0
  438. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/cmd/test_init.py +0 -0
  439. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/cmd/test_run.py +0 -0
  440. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/cmd/test_validate_commands.py +0 -0
  441. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/conftest.py +0 -0
  442. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/__init__.py +0 -0
  443. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/csv2graph.py +0 -0
  444. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/excelinvoice.py +0 -0
  445. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/invoice.py +0 -0
  446. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/metadata_json.py +0 -0
  447. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/processing/__init__.py +0 -0
  448. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/processing/context.py +0 -0
  449. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/processing/mock_processors.py +0 -0
  450. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/schema.py +0 -0
  451. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/fixtures/static.py +0 -0
  452. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/graph/test_config.py +0 -0
  453. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/graph/test_normalizers.py +0 -0
  454. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/graph/test_parsers.py +0 -0
  455. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/graph/test_renderer_log_formatting.py +0 -0
  456. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/graph/test_textutils.py +0 -0
  457. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/images/test_cos_640_480.png +0 -0
  458. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/images/test_sin_300_300.png +0 -0
  459. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/images/test_tan_1080_480.png +0 -0
  460. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/impl/test_multifile_checker.py +0 -0
  461. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/invoice/test_magic_variables.py +0 -0
  462. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/__init__.py +0 -0
  463. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/conftest.py +0 -0
  464. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/__init__.py +0 -0
  465. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_datasets.py +0 -0
  466. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_description.py +0 -0
  467. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_files.py +0 -0
  468. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_invoice.py +0 -0
  469. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_invoice_metadata.py +0 -0
  470. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_invoice_smarttable.py +0 -0
  471. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_invoice_smarttable_clearing.py +0 -0
  472. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_thumbnails.py +0 -0
  473. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_validation.py +0 -0
  474. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/processors/test_variables.py +0 -0
  475. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/test_context.py +0 -0
  476. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/test_factories.py +0 -0
  477. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/test_pipeline.py +0 -0
  478. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/test_smarttable_dataset_callback.py +0 -0
  479. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/processing/test_structured_invoice_saver.py +0 -0
  480. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/__init__.py +0 -0
  481. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/conftest.py +0 -0
  482. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/strategies.py +0 -0
  483. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_graph_normalizers.py +0 -0
  484. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_graph_path_validator.py +0 -0
  485. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_graph_textutils.py +0 -0
  486. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_rde2util_castval.py +0 -0
  487. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_smoke.py +0 -0
  488. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/property/test_validation.py +0 -0
  489. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.json +0 -0
  490. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema.basic.json +0 -0
  491. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema.full.json +0 -0
  492. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema.json +0 -0
  493. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_invalid.json +0 -0
  494. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_none_custom.json +0 -0
  495. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_none_generalAttributes.json +0 -0
  496. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_none_sample.json +0 -0
  497. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_none_specificAttributes.json +0 -0
  498. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice.schema_not_support_value.json +0 -0
  499. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_allow_none.json +0 -0
  500. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_invalid.json +0 -0
  501. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_invalid_none_basic.json +0 -0
  502. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_invalid_sample_anyof.json +0 -0
  503. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_restructured.json +0 -0
  504. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_sample_adding.json +0 -0
  505. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_sample_excel.json +0 -0
  506. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_sample_ref.json +0 -0
  507. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/invoice_schema_with_sample.json +0 -0
  508. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/test_excelinvoice_term_sample.csv +0 -0
  509. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/samplefile/test_excelinvoice_term_sample_folder.csv +0 -0
  510. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_backup_invoice.py +0 -0
  511. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_castval_boolean.py +0 -0
  512. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_check_files.py +0 -0
  513. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_cli.py +0 -0
  514. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_cli_gen_config.py +0 -0
  515. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_cli_init_templates.py +0 -0
  516. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_compressedfile_mode.py +0 -0
  517. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_config.py +0 -0
  518. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_csv2graph_html_output.py +0 -0
  519. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_csv2graph_unit.py +0 -0
  520. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_exception.py +0 -0
  521. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_extended_mode_validation.py +0 -0
  522. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_filename_mapping_rule.py +0 -0
  523. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_fileops.py +0 -0
  524. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_generate_folder_paths_iterator.py +0 -0
  525. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_graph_outputs.py +0 -0
  526. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_inputfile_checker.py +0 -0
  527. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_inputmode_processer.py +0 -0
  528. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_logger.py +0 -0
  529. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_matplotlib_renderer.py +0 -0
  530. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_models.py +0 -0
  531. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_modeproc_result.py +0 -0
  532. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_normalizers.py +0 -0
  533. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_parsers.py +0 -0
  534. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_path_validator.py +0 -0
  535. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_py39_deprecation.py +0 -0
  536. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_rc_frame_detection.py +0 -0
  537. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_rde2types_newtype.py +0 -0
  538. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_rde2util.py +0 -0
  539. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_rdeformat_system_files.py +0 -0
  540. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_registory.py +0 -0
  541. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_renderers.py +0 -0
  542. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_report.py +0 -0
  543. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_result.py +0 -0
  544. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_result_type.py +0 -0
  545. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_save_behavior.py +0 -0
  546. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_smarttable_checker.py +0 -0
  547. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_smarttable_early_exit_processor.py +0 -0
  548. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_smarttable_file.py +0 -0
  549. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_smarttable_file_copier.py +0 -0
  550. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_storage.py +0 -0
  551. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_stub.py +0 -0
  552. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_system_files_cleaner.py +0 -0
  553. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_system_files_filtering.py +0 -0
  554. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_textutils.py +0 -0
  555. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_thumbnail.py +0 -0
  556. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_traceback_integration.py +0 -0
  557. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_traceback_off_settings.py +0 -0
  558. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_validator.py +0 -0
  559. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_workflow.py +0 -0
  560. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/test_workflows_result.py +0 -0
  561. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/traceback/test_compact_trace_formatter.py +0 -0
  562. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tests/traceback/test_sensitive_masker.py +0 -0
  563. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tools/build_index.py +0 -0
  564. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tools/snipet.py +0 -0
  565. {rdetoolkit-1.5.2 → rdetoolkit-1.5.3}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdetoolkit
3
- Version: 1.5.2
3
+ Version: 1.5.3
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rdetoolkit"
3
- version = "1.5.2"
3
+ version = "1.5.3"
4
4
  description = "A module that supports the workflow of the RDE dataset construction program"
5
5
  authors = [{ name = "NIMS MDPF", email = "rde@nims.go" }]
6
6
  keywords = ["rdetoolkit", "RDE", "toolkit", "structure", "dataset"]
@@ -15,7 +15,7 @@ if sys.version_info < (3, 10):
15
15
  from importlib import import_module
16
16
  from typing import Any
17
17
 
18
- __version__ = "1.5.2"
18
+ __version__ = "1.5.3"
19
19
 
20
20
  _LAZY_ATTRS: dict[str, tuple[str, str]] = {
21
21
  "DirectoryOps": ("rdetoolkit.core", "DirectoryOps"),
@@ -160,16 +160,18 @@ def check_exist_rawfiles(dfexcelinvoice: pd.DataFrame, excel_rawfiles: list[Path
160
160
  excel_rawfiles (list[Path]): A list of Path objects representing file paths.
161
161
 
162
162
  Raises:
163
- tructuredError: If any file name in dfexcelinvoice is not found in excel_rawfiles.
163
+ StructuredError: If any file name in dfexcelinvoice is not found in excel_rawfiles.
164
164
 
165
165
  Returns:
166
166
  list[Path]: A list of Path objects corresponding to the file names in dfexcelinvoice, ordered as they appear in the DataFrame.
167
167
  """
168
- file_set_group = {f.name for f in excel_rawfiles}
169
- file_set_invoice = set(dfexcelinvoice["data_file_names/name"])
170
- if file_set_invoice - file_set_group:
171
- emsg = f"ERROR: raw file not found: {(file_set_invoice-file_set_group).pop()}"
172
- raise StructuredError(emsg)
168
+ file_set_group = {f.name for f in excel_rawfiles}
169
+ file_set_invoice = set(dfexcelinvoice["data_file_names/name"])
170
+ if file_set_invoice - file_set_group:
171
+ missing = sorted(file_set_invoice - file_set_group)
172
+ missing_display = (str(name) for name in missing)
173
+ emsg = f"ERROR: raw file not found: {', '.join(missing_display)}"
174
+ raise StructuredError(emsg)
173
175
  # Sort excel_rawfiles in the order they appear in the invoice
174
176
  _tmp = {f.name: f for f in excel_rawfiles}
175
177
  try:
@@ -1152,7 +1154,8 @@ class RuleBasedReplacer:
1152
1154
  Args:
1153
1155
  replacements (Mapping[str, Any]): The object containing mapping rules (read-only).
1154
1156
  source_json_obj (MutableMapping[str, Any] | None): Objects of key and value to which you want to apply the rule (performs nested assignments).
1155
- mapping_rules (Mapping[str, str] | None, optional): Rules for mapping key and value (read-only). Defaults to None.
1157
+ mapping_rules (Mapping[str, str] | None, optional): Rules for mapping key and value (read-only).
1158
+ If None, uses self.rules. Defaults to None.
1156
1159
 
1157
1160
  Returns:
1158
1161
  dict[str, Any]: dictionary type data after conversion
@@ -1173,13 +1176,12 @@ class RuleBasedReplacer:
1173
1176
  result = replacer.apply_rules(replacement_rule, save_file_path, mapping_rules = rule)
1174
1177
  print(result)
1175
1178
  """
1176
- # [TODO] Correction of type definitions in version 0.1.6
1177
1179
  if mapping_rules is None:
1178
1180
  mapping_rules = self.rules
1179
1181
  if source_json_obj is None:
1180
1182
  source_json_obj = {}
1181
1183
 
1182
- for key, value in self.rules.items():
1184
+ for key, value in mapping_rules.items():
1183
1185
  keys = key.split(".")
1184
1186
  replace_value = replacements.get(value, "")
1185
1187
  current_obj: MutableMapping[str, Any] = source_json_obj
@@ -411,6 +411,7 @@ class SmartTableInvoiceInitializer(Processor):
411
411
  """Apply SmartTable row data to invoice and collect metadata updates."""
412
412
  metadata_updates: dict[str, dict[str, Any]] = {}
413
413
  metadata_def: dict[str, Any] | None = None
414
+ csv_has_sample_owner_id = False
414
415
 
415
416
  # Handle empty CSV (no data rows)
416
417
  if len(csv_data) == 0:
@@ -435,10 +436,50 @@ class SmartTableInvoiceInitializer(Processor):
435
436
  meta_key, meta_entry = self._process_meta_mapping(col, value, metadata_def)
436
437
  metadata_updates[meta_key] = meta_entry
437
438
  continue
439
+ # Track if sample/ownerId is explicitly specified in CSV
440
+ if col == "sample/ownerId":
441
+ csv_has_sample_owner_id = True
438
442
  self._process_mapping_key(col, value, invoice_data, invoice_schema_json_data)
439
443
 
444
+ # Set sample.ownerId to basic.dataOwnerId only if not specified in CSV
445
+ if not csv_has_sample_owner_id:
446
+ self._set_sample_owner_id(invoice_data)
447
+
440
448
  return metadata_updates
441
449
 
450
+ def _set_sample_owner_id(self, invoice_data: dict[str, Any]) -> None:
451
+ """Set sample.ownerId to basic.dataOwnerId for SmartTable processing.
452
+
453
+ This ensures that newly registered samples have the correct owner ID,
454
+ which should always be the data owner (registrant) rather than
455
+ any temporary sample owner selected in the invoice screen.
456
+
457
+ Args:
458
+ invoice_data: Invoice data dictionary to update.
459
+
460
+ Note:
461
+ - For new sample registration: Sets the correct owner ID
462
+ - For sample linking: The value is set but not used (safe to set)
463
+ - If basic.dataOwnerId is missing: Logs warning and preserves existing value
464
+ """
465
+ basic_section = invoice_data.get("basic", {})
466
+ data_owner_id = basic_section.get("dataOwnerId")
467
+
468
+ if data_owner_id is None or data_owner_id == "":
469
+ logger.warning(
470
+ "basic.dataOwnerId is missing or empty; sample.ownerId will not be updated. "
471
+ "This may cause incorrect sample owner assignment.",
472
+ )
473
+ return
474
+
475
+ sample_section = invoice_data.setdefault("sample", {})
476
+ sample_section["ownerId"] = data_owner_id
477
+
478
+ logger.debug(
479
+ "Set sample.ownerId to basic.dataOwnerId: %s",
480
+ data_owner_id,
481
+ )
482
+
442
483
  def _load_metadata_definition(self, metadata_def_path: Path) -> dict[str, Any]:
443
484
  """Load metadata definitions for SmartTable meta column processing.
444
485
 
@@ -777,6 +777,34 @@ def test_error_check_exist_rawfiles(inputfile_multi_excelinvoice):
777
777
  assert str(e.value) == "ERROR: raw file not found: test_child2.txt"
778
778
 
779
779
 
780
+ def test_error_check_exist_rawfiles_multiple_missing(inputfile_multi_excelinvoice):
781
+ """Test that check_exist_rawfiles reports ALL missing files when multiple files are absent.
782
+
783
+ This test verifies that all missing files are reported in a single error message,
784
+ listed in alphabetical order, and separated by ", " for clarity.
785
+ """
786
+ # Preprocess test Excel invoice
787
+ df_excelinvoice = pd.read_excel(inputfile_multi_excelinvoice, sheet_name="invoice_form", dtype=str, header=None, index_col=None)
788
+ df = df_excelinvoice.dropna(axis=0, how="all").dropna(axis=1, how="all")
789
+ hd1 = list(df.iloc[1, :].fillna(""))
790
+ hd2 = list(df.iloc[2, :].fillna(""))
791
+ df.columns = [f"{s1}/{s2}" if s1 else s2 for s1, s2 in zip(hd1, hd2)]
792
+ df_excelinvoice = df.iloc[4:, :].reset_index(drop=True).copy()
793
+
794
+ # Test raw files - missing both test_child1.txt and test_child2.txt
795
+ test_excel_raw_files = [
796
+ Path("test_child3.txt"),
797
+ Path("test_child9.txt"),
798
+ Path("test_child10.txt"),
799
+ ]
800
+
801
+ with pytest.raises(StructuredError) as e:
802
+ _ = check_exist_rawfiles(df_excelinvoice, test_excel_raw_files)
803
+
804
+ # Expected: Both missing files listed in alphabetical order, separated by ", "
805
+ assert str(e.value) == "ERROR: raw file not found: test_child1.txt, test_child2.txt"
806
+
807
+
780
808
  def test_apply_magic_variable_inputfile_check(ivnoice_json_magic_filename_variable):
781
809
  """${filename}が置換できるかテスト
782
810
 
@@ -1,15 +1,19 @@
1
- """
2
- Equivalence Partitioning
1
+ """Test SmartTableInvoiceInitializer behavior with equivalence partitioning and boundary values.
2
+
3
+ Equivalence Partitioning:
3
4
  | API | Input/State Partition | Rationale | Expected Outcome | Test ID |
4
5
  | ------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------- | ------------- |
5
- | `SmartTableInvoiceInitializer.process` | Multiple SmartTable rows with fresh processors per row | Pipelines re-instantiate processors for each row | Later invoices retain `sample.ownerId` after mutation | `TC-EP-001` |
6
+ | `SmartTableInvoiceInitializer.process` | Multiple SmartTable rows with fresh processors per row | Pipelines re-instantiate processors for each row | sample.ownerId is set to basic.dataOwnerId | `TC-EP-001` |
6
7
  | `SmartTableInvoiceInitializer.process` | Missing SmartTable row CSV in SmartTable mode | Invalid SmartTable input should be rejected | Raises `StructuredError` | `TC-EP-002` |
8
+ | `SmartTableInvoiceInitializer.process` | basic.dataOwnerId is missing in original invoice | Defensive handling when required field is absent | Logs warning, preserves original sample.ownerId | `TC-EP-003` |
9
+ | `SmartTableInvoiceInitializer.process` | SmartTable CSV contains sample/ownerId column | CSV value should take precedence when explicitly specified | sample.ownerId uses CSV value, not basic.dataOwnerId | `TC-EP-004` |
7
10
 
8
- Boundary Value
11
+ Boundary Value:
9
12
  | API | Boundary | Rationale | Expected Outcome | Test ID |
10
13
  | ------------------------------------- | --------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------- | ------------- |
11
- | `SmartTableInvoiceInitializer.process` | First vs. subsequent invocation per invoice | Cache must survive across pipeline instances and mutations | Later invoices retain `sample.ownerId` after mutation | `TC-BV-001` |
14
+ | `SmartTableInvoiceInitializer.process` | First invocation with SmartTable row | Automatic ownerId assignment from basic.dataOwnerId | sample.ownerId is set to basic.dataOwnerId | `TC-BV-001` |
12
15
  | `SmartTableInvoiceInitializer.process` | `smarttable_file` is `None` | SmartTable mode should be enforced | Raises `ValueError` | `TC-BV-002` |
16
+ | `SmartTableInvoiceInitializer.process` | basic.dataOwnerId is empty string | Defensive handling when field is empty | Logs warning, preserves original sample.ownerId | `TC-BV-003` |
13
17
  """
14
18
 
15
19
  from __future__ import annotations
@@ -17,6 +21,7 @@ from __future__ import annotations
17
21
  import csv
18
22
  import json
19
23
  import shutil
24
+ from collections.abc import Generator
20
25
  from pathlib import Path
21
26
 
22
27
  import pytest
@@ -32,7 +37,7 @@ from rdetoolkit.processing.processors.invoice import SmartTableInvoiceInitialize
32
37
 
33
38
 
34
39
  @pytest.fixture(autouse=True)
35
- def reset_initializer_cache() -> None:
40
+ def reset_initializer_cache() -> Generator[None, None, None]:
36
41
  """Ensure SmartTable initializer cache isolation per test."""
37
42
  SmartTableInvoiceInitializer._BASE_INVOICE_CACHE.clear()
38
43
  yield
@@ -93,9 +98,12 @@ def _build_resource_paths(
93
98
 
94
99
 
95
100
  def test_smarttable_invoice_initializer_preserves_owner_id_after_source_mutation__tc_ep_001(tmp_path: Path) -> None:
101
+ """TC-EP-001: Multiple SmartTable rows with fresh processors per row preserve basic.dataOwnerId."""
96
102
  # Given: two SmartTable rows and an original invoice containing ownerId
97
103
  invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
98
- expected_owner_id = json.loads(invoice_org.read_text())["sample"]["ownerId"]
104
+ original_invoice = json.loads(invoice_org.read_text())
105
+ # ownerId should be set from basic.dataOwnerId, not sample.ownerId
106
+ expected_owner_id = original_invoice["basic"]["dataOwnerId"]
99
107
  smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
100
108
  smarttable_file.parent.mkdir(parents=True, exist_ok=True)
101
109
  smarttable_file.touch()
@@ -149,14 +157,17 @@ def test_smarttable_invoice_initializer_preserves_owner_id_after_source_mutation
149
157
 
150
158
  output_invoice = json.loads((divided_invoice_dir / "invoice.json").read_text())
151
159
 
152
- # Then: the later invoice still includes the original ownerId
160
+ # Then: sample.ownerId is set to basic.dataOwnerId
153
161
  assert output_invoice["sample"]["ownerId"] == expected_owner_id
154
162
 
155
163
 
156
- def test_smarttable_invoice_initializer_uses_base_owner_on_first_invocation__tc_bv_001(tmp_path: Path) -> None:
164
+ def test_smarttable_invoice_initializer_sets_owner_id_from_data_owner__tc_bv_001(tmp_path: Path) -> None:
165
+ """TC-BV-001: First invocation with SmartTable row sets sample.ownerId from basic.dataOwnerId."""
157
166
  # Given: a SmartTable row without ownerId override
158
167
  invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
159
- expected_owner_id = json.loads(invoice_org.read_text())["sample"]["ownerId"]
168
+ original_invoice = json.loads(invoice_org.read_text())
169
+ # ownerId should be set from basic.dataOwnerId
170
+ expected_owner_id = original_invoice["basic"]["dataOwnerId"]
160
171
  smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
161
172
  smarttable_file.parent.mkdir(parents=True, exist_ok=True)
162
173
  smarttable_file.touch()
@@ -188,11 +199,12 @@ def test_smarttable_invoice_initializer_uses_base_owner_on_first_invocation__tc_
188
199
  initializer.process(context)
189
200
  output_invoice = json.loads((invoice_org.parent / "invoice.json").read_text())
190
201
 
191
- # Then: ownerId remains from the original invoice template
202
+ # Then: ownerId is set to basic.dataOwnerId
192
203
  assert output_invoice["sample"]["ownerId"] == expected_owner_id
193
204
 
194
205
 
195
206
  def test_smarttable_invoice_initializer_requires_row_csv__tc_ep_002(tmp_path: Path) -> None:
207
+ """TC-EP-002: Missing SmartTable row CSV in SmartTable mode raises StructuredError."""
196
208
  # Given: SmartTable mode without a generated row CSV
197
209
  invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
198
210
  smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
@@ -225,6 +237,7 @@ def test_smarttable_invoice_initializer_requires_row_csv__tc_ep_002(tmp_path: Pa
225
237
 
226
238
 
227
239
  def test_smarttable_invoice_initializer_requires_smarttable_mode__tc_bv_002(tmp_path: Path) -> None:
240
+ """TC-BV-002: smarttable_file is None raises ValueError."""
228
241
  # Given: SmartTable initializer invoked without smarttable mode enabled
229
242
  invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
230
243
  row0 = tmp_path / "temp" / "fsmarttable_case_0000.csv"
@@ -253,3 +266,149 @@ def test_smarttable_invoice_initializer_requires_smarttable_mode__tc_bv_002(tmp_
253
266
  # When/Then: SmartTable processing rejects contexts without smarttable_file
254
267
  with pytest.raises(ValueError, match="SmartTable file not provided"):
255
268
  initializer.process(context)
269
+
270
+
271
+ def test_smarttable_invoice_initializer_warns_when_data_owner_id_missing__tc_ep_003(tmp_path: Path, caplog: pytest.LogCaptureFixture) -> None:
272
+ """TC-EP-003: basic.dataOwnerId missing logs warning and preserves original sample.ownerId."""
273
+ # Given: an original invoice without basic.dataOwnerId
274
+ invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
275
+ original_invoice = json.loads(invoice_org.read_text())
276
+ original_sample_owner_id = original_invoice["sample"]["ownerId"]
277
+
278
+ # Remove dataOwnerId to simulate missing value
279
+ del original_invoice["basic"]["dataOwnerId"]
280
+ invoice_org.write_text(json.dumps(original_invoice))
281
+
282
+ smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
283
+ smarttable_file.parent.mkdir(parents=True, exist_ok=True)
284
+ smarttable_file.touch()
285
+
286
+ row0 = tmp_path / "temp" / "fsmarttable_case_0000.csv"
287
+ _write_smarttable_row(row0, {"sample/names": "sample-one"})
288
+
289
+ srcpaths = RdeInputDirPaths(
290
+ inputdata=smarttable_file.parent,
291
+ invoice=invoice_org.parent,
292
+ tasksupport=schema_path.parent,
293
+ config=create_default_config(),
294
+ )
295
+ initializer = SmartTableInvoiceInitializer()
296
+
297
+ resource_paths = _build_resource_paths(
298
+ tmp_path, invoice_org.parent, invoice_org, schema_path, row0,
299
+ )
300
+ context = ProcessingContext(
301
+ index="0",
302
+ srcpaths=srcpaths,
303
+ resource_paths=resource_paths,
304
+ datasets_function=None,
305
+ mode_name="smarttable",
306
+ smarttable_file=smarttable_file,
307
+ )
308
+
309
+ # When: processing with missing basic.dataOwnerId
310
+ with caplog.at_level("WARNING"):
311
+ initializer.process(context)
312
+
313
+ output_invoice = json.loads((invoice_org.parent / "invoice.json").read_text())
314
+
315
+ # Then: warning is logged and sample.ownerId is preserved from original
316
+ assert "basic.dataOwnerId is missing or empty" in caplog.text
317
+ assert output_invoice["sample"]["ownerId"] == original_sample_owner_id
318
+
319
+
320
+ def test_smarttable_invoice_initializer_warns_when_data_owner_id_empty__tc_bv_003(tmp_path: Path, caplog: pytest.LogCaptureFixture) -> None:
321
+ """TC-BV-003: basic.dataOwnerId empty string logs warning and preserves original sample.ownerId."""
322
+ # Given: an original invoice with empty basic.dataOwnerId
323
+ invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
324
+ original_invoice = json.loads(invoice_org.read_text())
325
+ original_sample_owner_id = original_invoice["sample"]["ownerId"]
326
+
327
+ # Set dataOwnerId to empty string
328
+ original_invoice["basic"]["dataOwnerId"] = ""
329
+ invoice_org.write_text(json.dumps(original_invoice))
330
+
331
+ smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
332
+ smarttable_file.parent.mkdir(parents=True, exist_ok=True)
333
+ smarttable_file.touch()
334
+
335
+ row0 = tmp_path / "temp" / "fsmarttable_case_0000.csv"
336
+ _write_smarttable_row(row0, {"sample/names": "sample-one"})
337
+
338
+ srcpaths = RdeInputDirPaths(
339
+ inputdata=smarttable_file.parent,
340
+ invoice=invoice_org.parent,
341
+ tasksupport=schema_path.parent,
342
+ config=create_default_config(),
343
+ )
344
+ initializer = SmartTableInvoiceInitializer()
345
+
346
+ resource_paths = _build_resource_paths(
347
+ tmp_path, invoice_org.parent, invoice_org, schema_path, row0,
348
+ )
349
+ context = ProcessingContext(
350
+ index="0",
351
+ srcpaths=srcpaths,
352
+ resource_paths=resource_paths,
353
+ datasets_function=None,
354
+ mode_name="smarttable",
355
+ smarttable_file=smarttable_file,
356
+ )
357
+
358
+ # When: processing with empty basic.dataOwnerId
359
+ with caplog.at_level("WARNING"):
360
+ initializer.process(context)
361
+
362
+ output_invoice = json.loads((invoice_org.parent / "invoice.json").read_text())
363
+
364
+ # Then: warning is logged and sample.ownerId is preserved from original
365
+ assert "basic.dataOwnerId is missing or empty" in caplog.text
366
+ assert output_invoice["sample"]["ownerId"] == original_sample_owner_id
367
+
368
+
369
+ def test_smarttable_invoice_initializer_uses_csv_owner_id_when_specified__tc_ep_004(tmp_path: Path) -> None:
370
+ """TC-EP-004: SmartTable CSV sample/ownerId takes precedence over basic.dataOwnerId."""
371
+ # Given: SmartTable row with sample/ownerId column explicitly specified
372
+ invoice_org, schema_path = _copy_sample_invoice_files(tmp_path)
373
+ original_invoice = json.loads(invoice_org.read_text())
374
+ data_owner_id = original_invoice["basic"]["dataOwnerId"]
375
+
376
+ smarttable_file = tmp_path / "inputdata" / "smarttable_sample.xlsx"
377
+ smarttable_file.parent.mkdir(parents=True, exist_ok=True)
378
+ smarttable_file.touch()
379
+
380
+ # SmartTable CSV includes sample/ownerId column with different value
381
+ csv_owner_id = "DifferentOwnerIdFromCSVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
382
+ row0 = tmp_path / "temp" / "fsmarttable_case_0000.csv"
383
+ _write_smarttable_row(row0, {
384
+ "sample/names": "sample-one",
385
+ "sample/ownerId": csv_owner_id,
386
+ })
387
+
388
+ srcpaths = RdeInputDirPaths(
389
+ inputdata=smarttable_file.parent,
390
+ invoice=invoice_org.parent,
391
+ tasksupport=schema_path.parent,
392
+ config=create_default_config(),
393
+ )
394
+ initializer = SmartTableInvoiceInitializer()
395
+
396
+ resource_paths = _build_resource_paths(
397
+ tmp_path, invoice_org.parent, invoice_org, schema_path, row0,
398
+ )
399
+ context = ProcessingContext(
400
+ index="0",
401
+ srcpaths=srcpaths,
402
+ resource_paths=resource_paths,
403
+ datasets_function=None,
404
+ mode_name="smarttable",
405
+ smarttable_file=smarttable_file,
406
+ )
407
+
408
+ # When: processing with both CSV ownerId and basic.dataOwnerId
409
+ initializer.process(context)
410
+ output_invoice = json.loads((invoice_org.parent / "invoice.json").read_text())
411
+
412
+ # Then: CSV value takes precedence over basic.dataOwnerId
413
+ assert output_invoice["sample"]["ownerId"] == csv_owner_id
414
+ assert output_invoice["sample"]["ownerId"] != data_owner_id