OperonDBS 0.7.0__tar.gz → 0.7.2__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 (245) hide show
  1. {operondbs-0.7.0 → operondbs-0.7.2}/.github/workflows/publish.yml +11 -0
  2. operondbs-0.7.0/.github/workflows/deploy.yml → operondbs-0.7.2/.github/workflows/test.yml +1 -22
  3. {operondbs-0.7.0 → operondbs-0.7.2}/AGENTS.md +22 -25
  4. {operondbs-0.7.0 → operondbs-0.7.2}/MANIFEST.in +1 -1
  5. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/PKG-INFO +4 -19
  6. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/SOURCES.txt +12 -6
  7. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/requires.txt +3 -11
  8. {operondbs-0.7.0 → operondbs-0.7.2}/PKG-INFO +4 -19
  9. {operondbs-0.7.0 → operondbs-0.7.2}/README.md +2 -10
  10. {operondbs-0.7.0 → operondbs-0.7.2}/README_ZH.md +2 -9
  11. {operondbs-0.7.0 → operondbs-0.7.2}/docs/conf.py +2 -2
  12. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/files-and-storage.md +1 -1
  13. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/contributor/development-testing.md +2 -2
  14. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/contributor/documentation-deployment.md +0 -2
  15. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/contributor/index.md +0 -2
  16. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/contributor/pypi-release.md +1 -3
  17. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/contributor/repository-guide.md +0 -1
  18. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/getting-started/installation.md +3 -15
  19. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/operations/ncbi-recovery-migration.md +1 -1
  20. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-tui.md +130 -8
  21. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/files-and-storage.md +1 -1
  22. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/contributor/development-testing.md +3 -4
  23. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/contributor/documentation-deployment.md +0 -2
  24. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/contributor/index.md +0 -2
  25. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/contributor/pypi-release.md +1 -2
  26. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/contributor/repository-guide.md +0 -1
  27. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/getting-started/installation.md +2 -12
  28. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/operations/ncbi-recovery-migration.md +1 -2
  29. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-tui.md +106 -9
  30. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/actions.py +98 -0
  31. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/app.py +68 -8
  32. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/app.tcss +121 -0
  33. operondbs-0.7.2/operon/tui/assets/splash.png +0 -0
  34. operondbs-0.7.2/operon/tui/assets/splash.rgb.z +0 -0
  35. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/data.py +279 -14
  36. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/common.py +50 -2
  37. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/config.py +10 -4
  38. operondbs-0.7.2/operon/tui/screens/coverage.py +290 -0
  39. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/entities.py +18 -3
  40. operondbs-0.7.2/operon/tui/screens/import_wizard.py +619 -0
  41. operondbs-0.7.2/operon/tui/screens/publish.py +441 -0
  42. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/runs.py +5 -10
  43. operondbs-0.7.2/operon/tui/splash.py +188 -0
  44. operondbs-0.7.2/operon/tui/splash_terminal.py +86 -0
  45. {operondbs-0.7.0 → operondbs-0.7.2}/pyproject.toml +11 -26
  46. {operondbs-0.7.0 → operondbs-0.7.2}/setup.py +0 -5
  47. {operondbs-0.7.0 → operondbs-0.7.2}/tests/compatibility/test_python_support.py +1 -1
  48. operondbs-0.7.2/tests/integration/test_python_packaging.py +131 -0
  49. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_tui.py +188 -12
  50. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_tui_config.py +34 -2
  51. operondbs-0.7.2/tests/unit/test_tui_publish.py +725 -0
  52. operondbs-0.7.2/tests/unit/test_tui_splash_terminal.py +165 -0
  53. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_tui_writes.py +28 -1
  54. operondbs-0.7.0/docs/en/contributor/application-release.md +0 -52
  55. operondbs-0.7.0/docs/zh/contributor/application-release.md +0 -69
  56. operondbs-0.7.0/tests/integration/test_application_build.py +0 -298
  57. operondbs-0.7.0/tools/build.py +0 -519
  58. {operondbs-0.7.0 → operondbs-0.7.2}/.gitignore +0 -0
  59. {operondbs-0.7.0 → operondbs-0.7.2}/.readthedocs.yaml +0 -0
  60. {operondbs-0.7.0 → operondbs-0.7.2}/LICENSE +0 -0
  61. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/dependency_links.txt +0 -0
  62. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/entry_points.txt +0 -0
  63. {operondbs-0.7.0 → operondbs-0.7.2}/OperonDBS.egg-info/top_level.txt +0 -0
  64. {operondbs-0.7.0 → operondbs-0.7.2}/benchmarks/qc_representative_entities.tsv +0 -0
  65. {operondbs-0.7.0 → operondbs-0.7.2}/docs/_static/language-switcher.js +0 -0
  66. {operondbs-0.7.0 → operondbs-0.7.2}/docs/_static/operon.css +0 -0
  67. {operondbs-0.7.0 → operondbs-0.7.2}/docs/_templates/layout.html +0 -0
  68. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/extensibility.md +0 -0
  69. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/external-analysis.md +0 -0
  70. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/index.md +0 -0
  71. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/metadata-and-data-model.md +0 -0
  72. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/overview.md +0 -0
  73. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/qc-and-rules.md +0 -0
  74. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/release-lifecycle.md +0 -0
  75. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/architecture/taxonomy-coverage.md +0 -0
  76. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/getting-started/daily-workflow.md +0 -0
  77. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/getting-started/first-project.md +0 -0
  78. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/getting-started/index.md +0 -0
  79. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/getting-started/quickstart.md +0 -0
  80. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/backup-migration.md +0 -0
  81. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/curation-lifecycle.md +0 -0
  82. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/external-analysis.md +0 -0
  83. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/file-archiving.md +0 -0
  84. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/index.md +0 -0
  85. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/metadata-import.md +0 -0
  86. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/ncbi-datasets.md +0 -0
  87. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/qc-profiles.md +0 -0
  88. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/remote-execution.md +0 -0
  89. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/remote-storage.md +0 -0
  90. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/taxonomy-coverage.md +0 -0
  91. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/guides/troubleshooting.md +0 -0
  92. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/index.md +0 -0
  93. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/operations/database-compatibility.md +0 -0
  94. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/operations/index.md +0 -0
  95. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/operations/qc-performance.md +0 -0
  96. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/overview.md +0 -0
  97. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/behaviors-and-limitations.md +0 -0
  98. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-analysis.md +0 -0
  99. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-decisions-reports.md +0 -0
  100. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-files-qc.md +0 -0
  101. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-project-metadata.md +0 -0
  102. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-remote.md +0 -0
  103. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-taxonomy-lifecycle-admin.md +0 -0
  104. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/cli-workflow.md +0 -0
  105. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/data-model.md +0 -0
  106. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/index.md +0 -0
  107. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/recipe-fields.md +0 -0
  108. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/recipe-overview.md +0 -0
  109. {operondbs-0.7.0 → operondbs-0.7.2}/docs/en/reference/recipe-parsers-examples.md +0 -0
  110. {operondbs-0.7.0 → operondbs-0.7.2}/docs/index.md +0 -0
  111. {operondbs-0.7.0 → operondbs-0.7.2}/docs/requirements.txt +0 -0
  112. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/extensibility.md +0 -0
  113. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/external-analysis.md +0 -0
  114. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/index.md +0 -0
  115. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/metadata-and-data-model.md +0 -0
  116. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/overview.md +0 -0
  117. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/qc-and-rules.md +0 -0
  118. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/release-lifecycle.md +0 -0
  119. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/architecture/taxonomy-coverage.md +0 -0
  120. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/getting-started/daily-workflow.md +0 -0
  121. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/getting-started/first-project.md +0 -0
  122. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/getting-started/index.md +0 -0
  123. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/getting-started/quickstart.md +0 -0
  124. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/backup-migration.md +0 -0
  125. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/curation-lifecycle.md +0 -0
  126. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/external-analysis.md +0 -0
  127. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/file-archiving.md +0 -0
  128. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/index.md +0 -0
  129. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/metadata-import.md +0 -0
  130. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/ncbi-datasets.md +0 -0
  131. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/qc-profiles.md +0 -0
  132. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/remote-execution.md +0 -0
  133. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/remote-storage.md +0 -0
  134. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/taxonomy-coverage.md +0 -0
  135. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/guides/troubleshooting.md +0 -0
  136. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/index.md +0 -0
  137. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/operations/database-compatibility.md +0 -0
  138. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/operations/index.md +0 -0
  139. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/operations/qc-performance.md +0 -0
  140. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/overview.md +0 -0
  141. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/behaviors-and-limitations.md +0 -0
  142. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-analysis.md +0 -0
  143. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-decisions-reports.md +0 -0
  144. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-files-qc.md +0 -0
  145. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-project-metadata.md +0 -0
  146. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-remote.md +0 -0
  147. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-taxonomy-lifecycle-admin.md +0 -0
  148. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/cli-workflow.md +0 -0
  149. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/data-model.md +0 -0
  150. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/index.md +0 -0
  151. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/recipe-fields.md +0 -0
  152. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/recipe-overview.md +0 -0
  153. {operondbs-0.7.0 → operondbs-0.7.2}/docs/zh/reference/recipe-parsers-examples.md +0 -0
  154. {operondbs-0.7.0 → operondbs-0.7.2}/operon/__init__.py +0 -0
  155. {operondbs-0.7.0 → operondbs-0.7.2}/operon/__main__.py +0 -0
  156. {operondbs-0.7.0 → operondbs-0.7.2}/operon/adapters/__init__.py +0 -0
  157. {operondbs-0.7.0 → operondbs-0.7.2}/operon/adapters/ncbi_datasets.py +0 -0
  158. {operondbs-0.7.0 → operondbs-0.7.2}/operon/backup.py +0 -0
  159. {operondbs-0.7.0 → operondbs-0.7.2}/operon/cli.py +0 -0
  160. {operondbs-0.7.0 → operondbs-0.7.2}/operon/config.py +0 -0
  161. {operondbs-0.7.0 → operondbs-0.7.2}/operon/coverage.py +0 -0
  162. {operondbs-0.7.0 → operondbs-0.7.2}/operon/database.py +0 -0
  163. {operondbs-0.7.0 → operondbs-0.7.2}/operon/demo.py +0 -0
  164. {operondbs-0.7.0 → operondbs-0.7.2}/operon/entity_view.py +0 -0
  165. {operondbs-0.7.0 → operondbs-0.7.2}/operon/environment.py +0 -0
  166. {operondbs-0.7.0 → operondbs-0.7.2}/operon/errors.py +0 -0
  167. {operondbs-0.7.0 → operondbs-0.7.2}/operon/execution.py +0 -0
  168. {operondbs-0.7.0 → operondbs-0.7.2}/operon/export.py +0 -0
  169. {operondbs-0.7.0 → operondbs-0.7.2}/operon/files.py +0 -0
  170. {operondbs-0.7.0 → operondbs-0.7.2}/operon/import_wizard.py +0 -0
  171. {operondbs-0.7.0 → operondbs-0.7.2}/operon/lifecycle.py +0 -0
  172. {operondbs-0.7.0 → operondbs-0.7.2}/operon/lineage.py +0 -0
  173. {operondbs-0.7.0 → operondbs-0.7.2}/operon/metadata_files.py +0 -0
  174. {operondbs-0.7.0 → operondbs-0.7.2}/operon/ncbi_reconcile.py +0 -0
  175. {operondbs-0.7.0 → operondbs-0.7.2}/operon/profiles.py +0 -0
  176. {operondbs-0.7.0 → operondbs-0.7.2}/operon/qc_module/__init__.py +0 -0
  177. {operondbs-0.7.0 → operondbs-0.7.2}/operon/qc_module/_parsers.pyx +0 -0
  178. {operondbs-0.7.0 → operondbs-0.7.2}/operon/qc_module/parsers.py +0 -0
  179. {operondbs-0.7.0 → operondbs-0.7.2}/operon/release.py +0 -0
  180. {operondbs-0.7.0 → operondbs-0.7.2}/operon/remotes.py +0 -0
  181. {operondbs-0.7.0 → operondbs-0.7.2}/operon/reports.py +0 -0
  182. {operondbs-0.7.0 → operondbs-0.7.2}/operon/rules.py +0 -0
  183. {operondbs-0.7.0 → operondbs-0.7.2}/operon/schema.py +0 -0
  184. {operondbs-0.7.0 → operondbs-0.7.2}/operon/shutdown.py +0 -0
  185. {operondbs-0.7.0 → operondbs-0.7.2}/operon/table_import.py +0 -0
  186. {operondbs-0.7.0 → operondbs-0.7.2}/operon/taxonomy.py +0 -0
  187. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tools.py +0 -0
  188. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/__init__.py +0 -0
  189. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/__init__.py +0 -0
  190. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/decisions.py +0 -0
  191. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/files.py +0 -0
  192. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/files_ops.py +0 -0
  193. {operondbs-0.7.0 → operondbs-0.7.2}/operon/tui/screens/home.py +0 -0
  194. {operondbs-0.7.0 → operondbs-0.7.2}/operon/utils.py +0 -0
  195. {operondbs-0.7.0 → operondbs-0.7.2}/operon/workflow.py +0 -0
  196. {operondbs-0.7.0 → operondbs-0.7.2}/setup.cfg +0 -0
  197. {operondbs-0.7.0 → operondbs-0.7.2}/tests/__init__.py +0 -0
  198. {operondbs-0.7.0 → operondbs-0.7.2}/tests/compatibility/__init__.py +0 -0
  199. {operondbs-0.7.0 → operondbs-0.7.2}/tests/helpers.py +0 -0
  200. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/__init__.py +0 -0
  201. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_analysis_resume.py +0 -0
  202. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_analysis_shutdown.py +0 -0
  203. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_analysis_tools.py +0 -0
  204. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_execution_backends.py +0 -0
  205. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_lineage_cascade.py +0 -0
  206. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_ncbi_datasets_adapter.py +0 -0
  207. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_pipeline_and_release.py +0 -0
  208. {operondbs-0.7.0 → operondbs-0.7.2}/tests/integration/test_taxonomy_coverage.py +0 -0
  209. {operondbs-0.7.0 → operondbs-0.7.2}/tests/regression/__init__.py +0 -0
  210. {operondbs-0.7.0 → operondbs-0.7.2}/tests/regression/test_correctness.py +0 -0
  211. {operondbs-0.7.0 → operondbs-0.7.2}/tests/regression/test_cython_parser_parity.py +0 -0
  212. {operondbs-0.7.0 → operondbs-0.7.2}/tests/regression/test_parser_semantics.py +0 -0
  213. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/__init__.py +0 -0
  214. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_cli_edges.py +0 -0
  215. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_config_workflow_edges.py +0 -0
  216. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_coverage_edges.py +0 -0
  217. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_database_edges_more.py +0 -0
  218. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_docs_versions.py +0 -0
  219. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_environment.py +0 -0
  220. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_execution.py +0 -0
  221. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_execution_edges.py +0 -0
  222. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_export.py +0 -0
  223. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_files_edges.py +0 -0
  224. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_import_backup_show.py +0 -0
  225. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_import_wizard_edges.py +0 -0
  226. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_lifecycle.py +0 -0
  227. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_lineage.py +0 -0
  228. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_ncbi_edge_cases.py +0 -0
  229. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_ncbi_reconcile_edges.py +0 -0
  230. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_parser_edge_paths.py +0 -0
  231. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_qc_and_rules.py +0 -0
  232. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_qc_edges_more.py +0 -0
  233. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_recipe_history.py +0 -0
  234. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_remotes.py +0 -0
  235. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_remotes_edges.py +0 -0
  236. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_rules_schema_edges.py +0 -0
  237. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_schema_2_9.py +0 -0
  238. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_schema_and_metadata.py +0 -0
  239. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_shutdown.py +0 -0
  240. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_support_edges.py +0 -0
  241. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_table_import_edges.py +0 -0
  242. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_taxonomy_edges.py +0 -0
  243. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_tools_edges.py +0 -0
  244. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_views_release_reports_edges.py +0 -0
  245. {operondbs-0.7.0 → operondbs-0.7.2}/tests/unit/test_workflow_cli.py +0 -0
@@ -34,6 +34,17 @@ jobs:
34
34
  path: dist/*.tar.gz
35
35
  if-no-files-found: error
36
36
 
37
+ documentation:
38
+ runs-on: ubuntu-latest
39
+ steps:
40
+ - uses: actions/checkout@v6
41
+ - uses: actions/setup-python@v7
42
+ with:
43
+ python-version: "3.12"
44
+ - run: python -m pip install --upgrade pip
45
+ - run: python -m pip install -e '.[docs]'
46
+ - run: sphinx-build -W --keep-going -b html docs docs/_build/html
47
+
37
48
  wheels:
38
49
  strategy:
39
50
  fail-fast: false
@@ -1,4 +1,4 @@
1
- name: deploy
1
+ name: test
2
2
 
3
3
  on:
4
4
  push:
@@ -25,24 +25,3 @@ jobs:
25
25
  with:
26
26
  token: ${{ secrets.CODECOV_TOKEN }}
27
27
  report_type: test_results
28
-
29
- frozen-release-test:
30
- runs-on: ubuntu-latest
31
- steps:
32
- - uses: actions/checkout@v6
33
- - uses: actions/setup-python@v7
34
- with:
35
- python-version: "3.14"
36
- - run: python -m pip install -e '.[build]'
37
- - run: python tools/build.py
38
-
39
- documentation:
40
- runs-on: ubuntu-latest
41
- steps:
42
- - uses: actions/checkout@v6
43
- - uses: actions/setup-python@v7
44
- with:
45
- python-version: "3.12"
46
- - run: python -m pip install --upgrade pip
47
- - run: python -m pip install -e '.[docs]'
48
- - run: sphinx-build -W --keep-going -b html docs docs/_build/html
@@ -26,7 +26,7 @@ principle-to-implementation mapping.
26
26
 
27
27
  Current version markers (must stay consistent across code and docs):
28
28
 
29
- - `operon` 0.6.2 (`pyproject.toml`)
29
+ - `operon` 0.7.0 (`pyproject.toml`)
30
30
  - database schema 2.9 (`operon/database.py`, `SCHEMA_VERSION`)
31
31
  - metadata schema 1.4 (`operon/schema.py`, `METADATA_SCHEMA_VERSION`)
32
32
 
@@ -55,7 +55,13 @@ The project is licensed AGPL-3.0-or-later (`LICENSE` at the repo root).
55
55
  checksum verification) and `sftp://` / `remote://` URL fetching.
56
56
  - `operon/tui/` — Textual-based terminal UI (`operon tui`, optional `tui`
57
57
  extra): Home dashboard, Entities browser, Files browser, workflow-run
58
- monitor, a Decisions screen, and a Config screen. Read access lives in
58
+ monitor, a Decisions screen, a Config screen, a Publish screen (nav key
59
+ `7`; release builder + selective export builder with read-only previews),
60
+ a Coverage screen (nav key `8`; taxonomy snapshots, reference sets,
61
+ coverage report generation and `COV_*` report browsing), and the import
62
+ dataset wizard (`operon/tui/screens/import_wizard.py`; Home button or
63
+ global `i`, except on the Files screen where `i` stays ingest). Read
64
+ access lives in
59
65
  `operon/tui/data.py` and is strictly read-only (short-lived read-only
60
66
  connections only). Phase 2 write operations (evaluate, curate,
61
67
  retire/restore, ingest, verify, QC batch) live in
@@ -64,7 +70,12 @@ The project is licensed AGPL-3.0-or-later (`LICENSE` at the repo root).
64
70
  (identical `changes`/`workflow_runs` provenance), and returns plain
65
71
  dicts; writable connections are never held by the UI. Every write in the
66
72
  UI follows form/plan preview → equivalent CLI command shown → explicit
67
- Confirm → background worker → notify + reload or inline error. The
73
+ Confirm → background worker → notify + reload or inline error. Phase 3
74
+ actions in the same module: `import_dataset` (commits wizard drafts
75
+ through the shared single-transaction `import_wizard._commit`),
76
+ `reserve_entity_ids`, `create_release`, `export`, and `run_coverage`
77
+ (a below-threshold coverage report returns `exit_code=1` in the result
78
+ dict — a warning, not an exception). The
68
79
  Config screen (`operon/tui/screens/config.py`, nav key `6`) edits
69
80
  `config/profiles/*.yaml` (kind `qc`) and single recipes inside
70
81
  `config/tools.yaml` through structured control-based forms (no free-text
@@ -101,9 +112,6 @@ The project is licensed AGPL-3.0-or-later (`LICENSE` at the repo root).
101
112
  (`.readthedocs.yaml`).
102
113
  - `benchmarks/` — representative entity sets for QC performance diagnostics
103
114
  (see `docs/*/operations/qc-performance.md`).
104
- - `tools/build.py` — the only standalone-application release entry point.
105
- - `build/release/v<version>/` — generated cx_Freeze application releases,
106
- including third-party licenses and corresponding source.
107
115
 
108
116
  ## Setup, test, and build
109
117
 
@@ -112,9 +120,8 @@ repo root; activate it or invoke `.venv/bin/python` explicitly).
112
120
 
113
121
  ```bash
114
122
  python3 -m venv .venv && source .venv/bin/activate
115
- python -m pip install -e '.[dev]' # runtime + pytest + cx_Freeze + Cython +
116
- # Sphinx; also compiles the qc parsers
117
- # extension
123
+ python -m pip install -e '.[dev]' # runtime + pytest + Cython + Sphinx;
124
+ # also compiles the qc parsers extension
118
125
 
119
126
  python -m pytest # full suite (coverage gate: 90% branch)
120
127
  python -m pytest tests/unit # by category: unit / integration /
@@ -123,19 +130,12 @@ python -m pytest tests/unit # by category: unit / integration /
123
130
  python setup.py build_ext --inplace # rebuild only the Cython extension
124
131
 
125
132
  sphinx-build -W --keep-going -b html docs docs/_build/html # strict docs build
126
-
127
- python tools/build.py # complete standalone release -> build/release/v<version>/
128
133
  ```
129
134
 
130
135
  Run the relevant test category after any change; run the full suite before
131
136
  considering work done. CI (`.github/workflows/deploy.yml`) runs pytest on
132
- Python 3.10–3.14, the frozen release build, and the strict Sphinx build.
133
-
134
- `tools/build.py` compiles the Cython parser, builds the Sphinx documentation
135
- strictly, collects third-party license texts, builds the
136
- corresponding-source sdist, freezes the application, assembles the versioned
137
- directory, and runs the frozen executable smoke test. Do not call cx_Freeze
138
- directly for a release bundle.
137
+ Python 3.10–3.14 and the strict Sphinx build. Releases are published
138
+ exclusively to PyPI; see `docs/*/contributor/pypi-release.md`.
139
139
 
140
140
  Do not commit or perform other git mutations unless the user explicitly
141
141
  asks.
@@ -145,7 +145,7 @@ asks.
145
145
  - Python 3.10+. Treat `pyproject.toml` as the authoritative dependency
146
146
  list: `[project.dependencies]` contains core runtime dependencies, while
147
147
  `[project.optional-dependencies]` contains separately installable extras
148
- (`test`, `build`, `remote`, `tui`, `docs`, `dev`). Runtime-feature extras must
148
+ (`test`, `docs`, `dev`). Runtime-feature extras must
149
149
  remain lazy-imported by their feature paths (e.g. Paramiko is only
150
150
  imported inside remote/SSH code); test/build extras must stay out of
151
151
  normal runtime paths. Do not promote an extra dependency to core, or add a
@@ -186,7 +186,7 @@ change:
186
186
  - Contributor-facing processes → `docs/*/contributor/`; navigation →
187
187
  `docs/*/index.md`
188
188
 
189
- Version markers in docs (`operon` 0.6.2, database schema 2.9, metadata
189
+ Version markers in docs (`operon` 0.7.0, database schema 2.9, metadata
190
190
  schema 1.4) must match `pyproject.toml` and the code. Do not write the
191
191
  current values literally in Markdown sources: use the `myst_substitutions`
192
192
  references `{{ operon_version }}`, `{{ db_schema }}`, and
@@ -203,9 +203,6 @@ Sphinx-rendered); update the list above when bumping.
203
203
 
204
204
  ## Special Note For Codex/ChatGPT
205
205
 
206
- To ensure security, code testing in Codex/ChatGPT runs in a sandbox by default.
207
- However, this causes the `test_tui.py` section to experience Textual/asyncio
208
- cleanup blocking during testing, resulting in a "FAIL" report due to a timeout.
206
+ Due to specific limitations of the sandbox environment, executing certain TUI test code may cause the system to freeze; this often occurs on Codex/ChatGPT. The specific reason is that when this test code runs in the sandbox, it may results a Textual/asyncio cleanup block, and reports "FAIL" due to timeout.
209
207
 
210
- To run the full test suite, first exclude `test_tui.py`, then run it separately
211
- outside the sandbox.
208
+ If you are Codex/ChatGPT, please execute TUI-related test code OUTSIDE the sandbox.
@@ -12,6 +12,6 @@ recursive-include benchmarks *.tsv
12
12
  recursive-include docs *.css *.html *.js *.md *.py *.txt
13
13
  prune docs/_build
14
14
  recursive-include operon *.py *.pyx *.tcss
15
+ recursive-include operon/tui/assets *.png *.z *.md
15
16
  recursive-include tests *.py
16
- recursive-include tools *.py
17
17
  exclude operon/qc_module/_parsers.c
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OperonDBS
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Operon the Database System: Archive, Quality-Control, Organize, Analyze and Release Your Bio-Data
5
5
  Author-email: hyli360 <lihuanyu2003@gmail.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -32,20 +32,13 @@ Requires-Dist: pytest>=8.0; extra == "test"
32
32
  Requires-Dist: setuptools>=77; extra == "test"
33
33
  Requires-Dist: textual>=8.0; extra == "test"
34
34
  Requires-Dist: cython>=3.0; extra == "test"
35
- Provides-Extra: build
36
- Requires-Dist: cx-Freeze>=8.4; extra == "build"
37
- Requires-Dist: myst-parser<5,>=4.0; extra == "build"
38
- Requires-Dist: Sphinx<9,>=7.4; extra == "build"
39
- Requires-Dist: sphinx-rtd-theme<4,>=3.0; extra == "build"
40
- Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "build"
41
- Requires-Dist: cython>=3.0; extra == "build"
42
35
  Provides-Extra: docs
43
36
  Requires-Dist: Sphinx<9,>=7.4; extra == "docs"
44
37
  Requires-Dist: myst-parser<5,>=4.0; extra == "docs"
45
38
  Requires-Dist: sphinx-rtd-theme<4,>=3.0; extra == "docs"
39
+ Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "docs"
46
40
  Provides-Extra: dev
47
41
  Requires-Dist: coverage>=7.0; extra == "dev"
48
- Requires-Dist: cx-Freeze>=8.4; extra == "dev"
49
42
  Requires-Dist: cython>=3.0; extra == "dev"
50
43
  Requires-Dist: pytest-cov>=7.0; extra == "dev"
51
44
  Requires-Dist: pytest>=8.0; extra == "dev"
@@ -57,7 +50,7 @@ Dynamic: license-file
57
50
 
58
51
  # Operon
59
52
 
60
- [![deploy status](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
53
+ [![test status](https://github.com/HYLi360/Operon/actions/workflows/test.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
61
54
 
62
55
  A Python-based, **file-based database** designed for large-scale genomic data, used for archiving, quality control, analysis, and deterministic automation.
63
56
 
@@ -78,7 +71,7 @@ A Python-based, **file-based database** designed for large-scale genomic data, u
78
71
 
79
72
  - Python 3.10+
80
73
  - Runtime dependencies: `PyYAML`, `requests`, `aiohttp`, `Biopython`, `Paramiko`, `Textual`, and `questionary`; the built-in QC acceleration extension is compiled when the package is built
81
- - Optional extras: `test` (pytest and Cython), `build` (cx_Freeze, Cython, and documentation tooling), `docs` (documentation tooling), and `dev` (all development/build dependencies)
74
+ - Optional extras: `test` (pytest and Cython), `docs` (documentation tooling), and `dev` (all development/build dependencies)
82
75
 
83
76
  ## Install
84
77
 
@@ -95,14 +88,6 @@ For an editable checkout, run from the repository root:
95
88
  python -m pip install -e '.[dev]'
96
89
  ```
97
90
 
98
- PyPI installation does not use cx_Freeze. To build the separately distributed
99
- standalone application instead:
100
-
101
- ```bash
102
- python -m pip install -e '.[build]'
103
- python tools/build.py
104
- ```
105
-
106
91
  ## Documentation
107
92
 
108
93
  The complete documentation is maintained in [English](docs/en/index.md) and [Chinese](docs/zh/index.md). To build the Sphinx site locally:
@@ -7,8 +7,8 @@ README.md
7
7
  README_ZH.md
8
8
  pyproject.toml
9
9
  setup.py
10
- .github/workflows/deploy.yml
11
10
  .github/workflows/publish.yml
11
+ .github/workflows/test.yml
12
12
  OperonDBS.egg-info/PKG-INFO
13
13
  OperonDBS.egg-info/SOURCES.txt
14
14
  OperonDBS.egg-info/dependency_links.txt
@@ -33,7 +33,6 @@ docs/en/architecture/overview.md
33
33
  docs/en/architecture/qc-and-rules.md
34
34
  docs/en/architecture/release-lifecycle.md
35
35
  docs/en/architecture/taxonomy-coverage.md
36
- docs/en/contributor/application-release.md
37
36
  docs/en/contributor/development-testing.md
38
37
  docs/en/contributor/documentation-deployment.md
39
38
  docs/en/contributor/index.md
@@ -85,7 +84,6 @@ docs/zh/architecture/overview.md
85
84
  docs/zh/architecture/qc-and-rules.md
86
85
  docs/zh/architecture/release-lifecycle.md
87
86
  docs/zh/architecture/taxonomy-coverage.md
88
- docs/zh/contributor/application-release.md
89
87
  docs/zh/contributor/development-testing.md
90
88
  docs/zh/contributor/documentation-deployment.md
91
89
  docs/zh/contributor/index.md
@@ -167,14 +165,21 @@ operon/tui/actions.py
167
165
  operon/tui/app.py
168
166
  operon/tui/app.tcss
169
167
  operon/tui/data.py
168
+ operon/tui/splash.py
169
+ operon/tui/splash_terminal.py
170
+ operon/tui/assets/splash.png
171
+ operon/tui/assets/splash.rgb.z
170
172
  operon/tui/screens/__init__.py
171
173
  operon/tui/screens/common.py
172
174
  operon/tui/screens/config.py
175
+ operon/tui/screens/coverage.py
173
176
  operon/tui/screens/decisions.py
174
177
  operon/tui/screens/entities.py
175
178
  operon/tui/screens/files.py
176
179
  operon/tui/screens/files_ops.py
177
180
  operon/tui/screens/home.py
181
+ operon/tui/screens/import_wizard.py
182
+ operon/tui/screens/publish.py
178
183
  operon/tui/screens/runs.py
179
184
  tests/__init__.py
180
185
  tests/helpers.py
@@ -184,11 +189,11 @@ tests/integration/__init__.py
184
189
  tests/integration/test_analysis_resume.py
185
190
  tests/integration/test_analysis_shutdown.py
186
191
  tests/integration/test_analysis_tools.py
187
- tests/integration/test_application_build.py
188
192
  tests/integration/test_execution_backends.py
189
193
  tests/integration/test_lineage_cascade.py
190
194
  tests/integration/test_ncbi_datasets_adapter.py
191
195
  tests/integration/test_pipeline_and_release.py
196
+ tests/integration/test_python_packaging.py
192
197
  tests/integration/test_taxonomy_coverage.py
193
198
  tests/regression/__init__.py
194
199
  tests/regression/test_correctness.py
@@ -227,7 +232,8 @@ tests/unit/test_taxonomy_edges.py
227
232
  tests/unit/test_tools_edges.py
228
233
  tests/unit/test_tui.py
229
234
  tests/unit/test_tui_config.py
235
+ tests/unit/test_tui_publish.py
236
+ tests/unit/test_tui_splash_terminal.py
230
237
  tests/unit/test_tui_writes.py
231
238
  tests/unit/test_views_release_reports_edges.py
232
- tests/unit/test_workflow_cli.py
233
- tools/build.py
239
+ tests/unit/test_workflow_cli.py
@@ -6,19 +6,8 @@ questionary>=2.1
6
6
  requests>=2.32
7
7
  textual>=8.0
8
8
 
9
- [build]
10
- cx-Freeze>=8.4
11
- myst-parser<5,>=4.0
12
- Sphinx<9,>=7.4
13
- sphinx-rtd-theme<4,>=3.0
14
- cython>=3.0
15
-
16
- [build:python_version < "3.11"]
17
- tomli>=2.0
18
-
19
9
  [dev]
20
10
  coverage>=7.0
21
- cx-Freeze>=8.4
22
11
  cython>=3.0
23
12
  pytest-cov>=7.0
24
13
  pytest>=8.0
@@ -34,6 +23,9 @@ Sphinx<9,>=7.4
34
23
  myst-parser<5,>=4.0
35
24
  sphinx-rtd-theme<4,>=3.0
36
25
 
26
+ [docs:python_version < "3.11"]
27
+ tomli>=2.0
28
+
37
29
  [test]
38
30
  coverage>=7.0
39
31
  paramiko>=3.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OperonDBS
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Operon the Database System: Archive, Quality-Control, Organize, Analyze and Release Your Bio-Data
5
5
  Author-email: hyli360 <lihuanyu2003@gmail.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -32,20 +32,13 @@ Requires-Dist: pytest>=8.0; extra == "test"
32
32
  Requires-Dist: setuptools>=77; extra == "test"
33
33
  Requires-Dist: textual>=8.0; extra == "test"
34
34
  Requires-Dist: cython>=3.0; extra == "test"
35
- Provides-Extra: build
36
- Requires-Dist: cx-Freeze>=8.4; extra == "build"
37
- Requires-Dist: myst-parser<5,>=4.0; extra == "build"
38
- Requires-Dist: Sphinx<9,>=7.4; extra == "build"
39
- Requires-Dist: sphinx-rtd-theme<4,>=3.0; extra == "build"
40
- Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "build"
41
- Requires-Dist: cython>=3.0; extra == "build"
42
35
  Provides-Extra: docs
43
36
  Requires-Dist: Sphinx<9,>=7.4; extra == "docs"
44
37
  Requires-Dist: myst-parser<5,>=4.0; extra == "docs"
45
38
  Requires-Dist: sphinx-rtd-theme<4,>=3.0; extra == "docs"
39
+ Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "docs"
46
40
  Provides-Extra: dev
47
41
  Requires-Dist: coverage>=7.0; extra == "dev"
48
- Requires-Dist: cx-Freeze>=8.4; extra == "dev"
49
42
  Requires-Dist: cython>=3.0; extra == "dev"
50
43
  Requires-Dist: pytest-cov>=7.0; extra == "dev"
51
44
  Requires-Dist: pytest>=8.0; extra == "dev"
@@ -57,7 +50,7 @@ Dynamic: license-file
57
50
 
58
51
  # Operon
59
52
 
60
- [![deploy status](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
53
+ [![test status](https://github.com/HYLi360/Operon/actions/workflows/test.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
61
54
 
62
55
  A Python-based, **file-based database** designed for large-scale genomic data, used for archiving, quality control, analysis, and deterministic automation.
63
56
 
@@ -78,7 +71,7 @@ A Python-based, **file-based database** designed for large-scale genomic data, u
78
71
 
79
72
  - Python 3.10+
80
73
  - Runtime dependencies: `PyYAML`, `requests`, `aiohttp`, `Biopython`, `Paramiko`, `Textual`, and `questionary`; the built-in QC acceleration extension is compiled when the package is built
81
- - Optional extras: `test` (pytest and Cython), `build` (cx_Freeze, Cython, and documentation tooling), `docs` (documentation tooling), and `dev` (all development/build dependencies)
74
+ - Optional extras: `test` (pytest and Cython), `docs` (documentation tooling), and `dev` (all development/build dependencies)
82
75
 
83
76
  ## Install
84
77
 
@@ -95,14 +88,6 @@ For an editable checkout, run from the repository root:
95
88
  python -m pip install -e '.[dev]'
96
89
  ```
97
90
 
98
- PyPI installation does not use cx_Freeze. To build the separately distributed
99
- standalone application instead:
100
-
101
- ```bash
102
- python -m pip install -e '.[build]'
103
- python tools/build.py
104
- ```
105
-
106
91
  ## Documentation
107
92
 
108
93
  The complete documentation is maintained in [English](docs/en/index.md) and [Chinese](docs/zh/index.md). To build the Sphinx site locally:
@@ -1,6 +1,6 @@
1
1
  # Operon
2
2
 
3
- [![deploy status](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
3
+ [![test status](https://github.com/HYLi360/Operon/actions/workflows/test.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
4
4
 
5
5
  A Python-based, **file-based database** designed for large-scale genomic data, used for archiving, quality control, analysis, and deterministic automation.
6
6
 
@@ -21,7 +21,7 @@ A Python-based, **file-based database** designed for large-scale genomic data, u
21
21
 
22
22
  - Python 3.10+
23
23
  - Runtime dependencies: `PyYAML`, `requests`, `aiohttp`, `Biopython`, `Paramiko`, `Textual`, and `questionary`; the built-in QC acceleration extension is compiled when the package is built
24
- - Optional extras: `test` (pytest and Cython), `build` (cx_Freeze, Cython, and documentation tooling), `docs` (documentation tooling), and `dev` (all development/build dependencies)
24
+ - Optional extras: `test` (pytest and Cython), `docs` (documentation tooling), and `dev` (all development/build dependencies)
25
25
 
26
26
  ## Install
27
27
 
@@ -38,14 +38,6 @@ For an editable checkout, run from the repository root:
38
38
  python -m pip install -e '.[dev]'
39
39
  ```
40
40
 
41
- PyPI installation does not use cx_Freeze. To build the separately distributed
42
- standalone application instead:
43
-
44
- ```bash
45
- python -m pip install -e '.[build]'
46
- python tools/build.py
47
- ```
48
-
49
41
  ## Documentation
50
42
 
51
43
  The complete documentation is maintained in [English](docs/en/index.md) and [Chinese](docs/zh/index.md). To build the Sphinx site locally:
@@ -1,6 +1,6 @@
1
1
  # Operon
2
2
 
3
- [![deploy status](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
3
+ [![test status](https://github.com/HYLi360/Operon/actions/workflows/test.yml/badge.svg)](https://github.com/HYLi360/Operon/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/HYLi360/Operon/branch/master/graph/badge.svg?token=BC4LD8UPL2)](https://codecov.io/gh/HYLi360/Operon)
4
4
 
5
5
  一个基于 Python 的、面向大规模基因组数据的**基于文件的数据库**,用于归档、质控、分析与确定性自动化处理。
6
6
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  - Python 3.10 及以上版本
21
21
  - 运行时依赖:`PyYAML`、`requests`、`aiohttp`、`Biopython`、`Paramiko`、`Textual` 与 `questionary`;内置 QC 加速扩展在构建软件包时编译
22
- - 可选 extras:`test`(pytest 与 Cython)、`build`(cx_Freeze、Cython 与文档工具)、`docs`(文档工具)和 `dev`(全部开发/构建依赖)
22
+ - 可选 extras:`test`(pytest 与 Cython)、`docs`(文档工具)和 `dev`(全部开发/构建依赖)
23
23
 
24
24
  ## 安装
25
25
 
@@ -36,13 +36,6 @@ python -m pip install OperonDBS
36
36
  python -m pip install -e '.[dev]'
37
37
  ```
38
38
 
39
- PyPI 安装不使用 cx_Freeze。若要另行构建独立可执行应用:
40
-
41
- ```bash
42
- python -m pip install -e '.[build]'
43
- python tools/build.py
44
- ```
45
-
46
39
  ## 文档
47
40
 
48
41
  完整文档同时维护[中文](docs/zh/index.md)和[英文](docs/en/index.md)版本。本地构建 Sphinx 站点:
@@ -16,8 +16,8 @@ DOCS_DIR = Path(__file__).resolve().parent
16
16
  REPO_ROOT = DOCS_DIR.parent
17
17
 
18
18
  project = "Operon"
19
- author = "Operon contributors"
20
- copyright = "2026, Operon contributors"
19
+ author = "Project Operon Development Group"
20
+ copyright = f"2026, {author}. All Rights Reserved."
21
21
 
22
22
 
23
23
  def _package_version() -> str:
@@ -25,7 +25,7 @@ The `remotes:` section of `project.yaml` can configure one or more SFTP remote m
25
25
  - After `pull` restores a locally missing file, `files.status` returns to `CHECKSUM_VERIFIED`, and this change is written to `changes` just like the status changes from `verify`/`evict`;
26
26
  - `ingest --source` also directly accepts `sftp://[user@]host[:port]/path` and `remote://<name>/<path>`; the latter must exist in the remote manifest and is identity-checked first, while the former is downloaded and assigned a fresh identity by ingest, then follows exactly the same archiving flow as a local file.
27
27
 
28
- Paramiko is a core runtime dependency but remains lazily imported, so local-only commands do not initialize the SSH stack. The cx_Freeze release packages include it as well.
28
+ Paramiko is a core runtime dependency but remains lazily imported, so local-only commands do not initialize the SSH stack.
29
29
 
30
30
  ## Local control plane and remote data plane
31
31
 
@@ -21,9 +21,9 @@ The taxonomy coverage integration tests additionally cover taxonomy source-packa
21
21
 
22
22
  ## Special Note For Codex/ChatGPT
23
23
 
24
- To ensure security, code testing in Codex/ChatGPT runs in a sandbox by default. However, this causes the `test_tui.py` section to experience Textual/asyncio cleanup blocking during testing, resulting in a "FAIL" report due to a timeout.
24
+ Due to specific limitations of the sandbox environment, executing certain TUI test code may cause the system to freeze; this often occurs on Codex/ChatGPT. The specific reason is that when this test code runs in the sandbox, it may results a Textual/asyncio cleanup block, and reports "FAIL" due to timeout.
25
25
 
26
- To run the full test suite, first exclude `test_tui.py`, then run it separately outside the sandbox.
26
+ If you are Codex/ChatGPT, please execute TUI-related test code OUTSIDE the sandbox.
27
27
 
28
28
  This information has also been updated in AGENTS.md.
29
29
 
@@ -34,5 +34,3 @@ Run the following from the repository root with the project virtual environment:
34
34
  Dependencies are installed from the `docs` optional extra in `pyproject.toml`. RTD uses Python 3.12 and fails the build on Sphinx warnings, matching the strict local build and the CI gate.
35
35
 
36
36
  The current setup publishes the two existing complete Markdown trees in one RTD project and does not require converting the source into gettext PO files. If the project later needs the platform-native language menu, separate search indexes, or independent translation-version lifecycles, create linked translation projects in RTD. The current bilingual source and mirrored relative paths can still be reused during that migration.
37
-
38
- Official standalone application releases use the same `docs/conf.py`. Before freezing the application, `python tools/build.py` runs the strict Sphinx build and places its output in `share/doc/operon/html/` inside the release. Any documentation warning or missing language entry point prevents publication.
@@ -3,7 +3,6 @@
3
3
  - [Repository Guidelines](repository-guide.md)
4
4
  - [Development and Testing](development-testing.md)
5
5
  - [PyPI Release](pypi-release.md)
6
- - [Application Release](application-release.md)
7
6
  - [Documentation builds and Read the Docs deployment](documentation-deployment.md)
8
7
 
9
8
  ```{toctree}
@@ -12,6 +11,5 @@
12
11
  repository-guide
13
12
  development-testing
14
13
  pypi-release
15
- application-release
16
14
  documentation-deployment
17
15
  ```
@@ -4,9 +4,7 @@ The PyPI distribution is named `OperonDBS` because the `operon` distribution
4
4
  name belongs to an unrelated project. This does not change the import name or
5
5
  console command: users install `OperonDBS`, import `operon`, and run `operon`.
6
6
 
7
- PyPI publishing and standalone application publishing are independent. The
8
- PEP 517 build dependencies contain only setuptools and Cython; cx_Freeze stays
9
- in the optional `build` extra and is used only by `python tools/build.py`.
7
+ The PEP 517 build dependencies contain only setuptools and Cython.
10
8
 
11
9
  ## GitHub Actions release
12
10
 
@@ -17,7 +17,6 @@
17
17
  - `operon/remotes.py`: SFTP mirrors, push/pull, and remote URL downloads.
18
18
  - `tests/`: `unit/`, `integration/`, `regression/`, `compatibility/` tests.
19
19
  - `docs/`: user, architecture, and operations documentation.
20
- - `build/release/v<version>/`: generated standalone application release directories.
21
20
 
22
21
  ## Collaboration conventions
23
22
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## Platform support
11
11
 
12
- Linux is the primary platform for standalone application releases, local
12
+ Linux is the primary platform for local
13
13
  Slurm, and the broad external bioinformatics tool ecosystem. macOS is
14
14
  supported for source-installed local execution and as an SSH/SFTP client,
15
15
  including remote Slurm submission to a Linux host. Local resource sampling
@@ -18,8 +18,7 @@ uses procfs when available and the system `ps` command on macOS.
18
18
  External commands configured in `tools.yaml` must themselves be installed for
19
19
  the controller platform. SSH direct execution still requires util-linux
20
20
  `setsid` on the remote host, so that compute-side mode targets Linux; this does
21
- not prevent a Mac from acting as the controller. Signed or notarized macOS
22
- standalone bundles are not currently published.
21
+ not prevent a Mac from acting as the controller.
23
22
 
24
23
  ## Install from PyPI
25
24
 
@@ -33,9 +32,7 @@ python -m pip install OperonDBS
33
32
  ```
34
33
 
35
34
  Published wheels include the compiled QC parser. SSH/SFTP support and the TUI
36
- are included in the standard installation. PyPI installation does not use
37
- cx_Freeze; that tool is only needed for the separate standalone application
38
- directory.
35
+ are included in the standard installation.
39
36
 
40
37
  ## Install from the repository
41
38
 
@@ -57,12 +54,3 @@ operon --help
57
54
 
58
55
  The first command prints `operon` followed by the installed version —
59
56
  {{ operon_version }} for the release this documentation matches.
60
-
61
- To build a standalone cx_Freeze application, install the build extra and use the unified release entry point:
62
-
63
- ```bash
64
- python -m pip install -e '.[build]'
65
- python tools/build.py
66
- ```
67
-
68
- See [Application Release](../contributor/application-release.md) for the release directory layout and validation rules.
@@ -33,7 +33,7 @@ Do not point these variables at the project's parent directory, a disk root, or
33
33
  .venv/bin/python -m operon --version
34
34
  ```
35
35
 
36
- The full test suite must pass. If production runs a cx_Freeze build, rebuild it and complete the rehearsal below in staging with the same binary first.
36
+ The full test suite must pass.
37
37
 
38
38
  ## 3. Record the pre-migration read-only baseline
39
39