gapit 0.2.2__tar.gz → 0.3.0__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 (225) hide show
  1. {gapit-0.2.2 → gapit-0.3.0}/AGENTS.md +2 -2
  2. {gapit-0.2.2 → gapit-0.3.0}/CHANGELOG.md +8 -0
  3. {gapit-0.2.2 → gapit-0.3.0}/PKG-INFO +10 -4
  4. {gapit-0.2.2 → gapit-0.3.0}/PLAN.md +9 -2
  5. {gapit-0.2.2 → gapit-0.3.0}/README.md +9 -3
  6. {gapit-0.2.2 → gapit-0.3.0}/docs/agents.md +21 -12
  7. {gapit-0.2.2 → gapit-0.3.0}/docs/custom-db.md +3 -3
  8. {gapit-0.2.2 → gapit-0.3.0}/docs/databases.md +5 -3
  9. {gapit-0.2.2 → gapit-0.3.0}/docs/index.md +2 -3
  10. {gapit-0.2.2 → gapit-0.3.0}/docs/installation.md +21 -7
  11. {gapit-0.2.2 → gapit-0.3.0}/docs/mcp.md +5 -5
  12. {gapit-0.2.2 → gapit-0.3.0}/docs/outputs.md +4 -35
  13. {gapit-0.2.2 → gapit-0.3.0}/docs/quickstart.md +11 -5
  14. {gapit-0.2.2 → gapit-0.3.0}/docs/reads.md +6 -6
  15. {gapit-0.2.2 → gapit-0.3.0}/docs/screen.md +2 -2
  16. {gapit-0.2.2 → gapit-0.3.0}/docs/summary.md +2 -2
  17. {gapit-0.2.2 → gapit-0.3.0}/pixi.lock +2 -2
  18. {gapit-0.2.2 → gapit-0.3.0}/pixi.toml +1 -1
  19. {gapit-0.2.2 → gapit-0.3.0}/pyproject.toml +1 -1
  20. {gapit-0.2.2 → gapit-0.3.0}/recipe/meta.yaml +2 -2
  21. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/__init__.py +1 -1
  22. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cli.py +2 -35
  23. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/json.py +1 -19
  24. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/schemas.py +0 -2
  25. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/reads_tinyamr.json +1 -1
  26. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/reads_tinyamr.md +1 -1
  27. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/screen_multi.json +1 -1
  28. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/screen_multi.md +1 -1
  29. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/summary_multi.json +1 -1
  30. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/summary_multi.md +1 -1
  31. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_schema.py +5 -4
  32. gapit-0.3.0/tests/test_cli_setupdb.py +92 -0
  33. {gapit-0.2.2 → gapit-0.3.0}/tests/test_error_envelope.py +2 -2
  34. gapit-0.2.2/tests/test_cli_list.py +0 -153
  35. {gapit-0.2.2 → gapit-0.3.0}/.gitattributes +0 -0
  36. {gapit-0.2.2 → gapit-0.3.0}/.github/workflows/ci.yml +0 -0
  37. {gapit-0.2.2 → gapit-0.3.0}/.github/workflows/docs.yml +0 -0
  38. {gapit-0.2.2 → gapit-0.3.0}/.github/workflows/release.yml +0 -0
  39. {gapit-0.2.2 → gapit-0.3.0}/.github/workflows/snapshot-refresh.yml +0 -0
  40. {gapit-0.2.2 → gapit-0.3.0}/.gitignore +0 -0
  41. {gapit-0.2.2 → gapit-0.3.0}/LICENSE +0 -0
  42. {gapit-0.2.2 → gapit-0.3.0}/SPEC.md +0 -0
  43. {gapit-0.2.2 → gapit-0.3.0}/docs/faq.md +0 -0
  44. {gapit-0.2.2 → gapit-0.3.0}/mkdocs.yml +0 -0
  45. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/blast.py +0 -0
  46. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_db.py +0 -0
  47. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_db_build.py +0 -0
  48. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_db_install.py +0 -0
  49. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_db_outdated.py +0 -0
  50. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_db_search.py +0 -0
  51. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_screen.py +0 -0
  52. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/cmd_summary.py +0 -0
  53. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/config.py +0 -0
  54. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/data/snapshots/card.tar.gz +0 -0
  55. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/data/snapshots/vfdb.tar.gz +0 -0
  56. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/db.py +0 -0
  57. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/db_build_ops.py +0 -0
  58. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/db_ops.py +0 -0
  59. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/db_query_ops.py +0 -0
  60. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/dbbuild.py +0 -0
  61. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/dbcodec.py +0 -0
  62. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/dispatch.py +0 -0
  63. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/errors.py +0 -0
  64. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/fasta.py +0 -0
  65. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/__init__.py +0 -0
  66. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/md.py +0 -0
  67. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/summary.py +0 -0
  68. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/formats/tsv.py +0 -0
  69. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/hits.py +0 -0
  70. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/mcp.py +0 -0
  71. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/mcp_schemas.py +0 -0
  72. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/mcp_tools.py +0 -0
  73. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/minimap.py +0 -0
  74. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/minimap2_run.py +0 -0
  75. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/paf.py +0 -0
  76. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/proctools.py +0 -0
  77. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/__init__.py +0 -0
  78. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/argannot.py +0 -0
  79. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/bacmet2.py +0 -0
  80. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/card.py +0 -0
  81. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/common.py +0 -0
  82. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/ecoh.py +0 -0
  83. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/ecoli_vf.py +0 -0
  84. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/megares.py +0 -0
  85. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/ncbi.py +0 -0
  86. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/plasmidfinder.py +0 -0
  87. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/resfinder.py +0 -0
  88. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/snapshots.py +0 -0
  89. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/upec_expec_vf.py +0 -0
  90. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/vfdb.py +0 -0
  91. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/providers/victors.py +0 -0
  92. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/py.typed +0 -0
  93. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/reads.py +0 -0
  94. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/records.py +0 -0
  95. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/report.py +0 -0
  96. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/screening.py +0 -0
  97. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/screening_reads.py +0 -0
  98. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/seqconvert.py +0 -0
  99. {gapit-0.2.2 → gapit-0.3.0}/src/gapit/summary.py +0 -0
  100. {gapit-0.2.2 → gapit-0.3.0}/tests/data/contigs/full.fa +0 -0
  101. {gapit-0.2.2 → gapit-0.3.0}/tests/data/contigs/gap.fa +0 -0
  102. {gapit-0.2.2 → gapit-0.3.0}/tests/data/contigs/none.fa +0 -0
  103. {gapit-0.2.2 → gapit-0.3.0}/tests/data/contigs/partial.fa +0 -0
  104. {gapit-0.2.2 → gapit-0.3.0}/tests/data/contigs/sort.fa +0 -0
  105. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.embl +0 -0
  106. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.embl.bz2 +0 -0
  107. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.fa +0 -0
  108. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.fa.gz +0 -0
  109. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.fq +0 -0
  110. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.gbk +0 -0
  111. {gapit-0.2.2 → gapit-0.3.0}/tests/data/convert/sample.gbk.gz +0 -0
  112. {gapit-0.2.2 → gapit-0.3.0}/tests/data/db/tinyamr/sequences +0 -0
  113. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/argannot/ARG-ANNOT_NT_V6_July2019.txt +0 -0
  114. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/bacmet2/BacMet2_EXP_database.fasta +0 -0
  115. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/card/card.json +0 -0
  116. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/ecoh/EcOH.fasta +0 -0
  117. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/ecoli_vf/repaired_ecoli_vfs_shortnames.ffn +0 -0
  118. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/megares/megares_drugs_demo.fasta +0 -0
  119. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/ncbi/AMR_CDS.fa +0 -0
  120. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/ncbi/ReferenceGeneCatalog.txt +0 -0
  121. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/plasmidfinder/plasmids_a.fsa +0 -0
  122. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/plasmidfinder/plasmids_b.fsa +0 -0
  123. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/resfinder/aminoglycoside.fsa +0 -0
  124. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/resfinder/beta-lactam.fsa +0 -0
  125. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/resfinder/phenotypes.txt +0 -0
  126. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/upec_expec_vf/UPEC_ExPEC_VF.tsv +0 -0
  127. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/vfdb/VFDB_setA_nt.fas +0 -0
  128. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/victors/gen_downloads.php +0 -0
  129. {gapit-0.2.2 → gapit-0.3.0}/tests/data/providers/victors/gen_downloads_protein.php +0 -0
  130. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/bla_partial.fq +0 -0
  131. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/junk.fq +0 -0
  132. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/suly_partial.fq +0 -0
  133. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_R1.fq +0 -0
  134. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_R2.fq +0 -0
  135. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_full.fq +0 -0
  136. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_full.fq.gz +0 -0
  137. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_lane1.fq +0 -0
  138. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_lane2.fq +0 -0
  139. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_pe1_R1.fq +0 -0
  140. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_pe1_R2.fq +0 -0
  141. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_pe2_R1.fq +0 -0
  142. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads/tetx_pe2_R2.fq +0 -0
  143. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads2/ont_homologs.fq +0 -0
  144. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads2/sr_homologs.fq +0 -0
  145. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads2_db/homologs/sequences +0 -0
  146. {gapit-0.2.2 → gapit-0.3.0}/tests/data/reads_db/tinyreads/sequences +0 -0
  147. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/empty.tsv +0 -0
  148. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/multi_sample.tsv +0 -0
  149. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/sample_a.csv +0 -0
  150. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/sample_a.tsv +0 -0
  151. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/sample_b.csv +0 -0
  152. {gapit-0.2.2 → gapit-0.3.0}/tests/data/summary/sample_b.tsv +0 -0
  153. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/summary_dutch.tsv +0 -0
  154. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/summary_multi.csv +0 -0
  155. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/summary_multi.tsv +0 -0
  156. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/tinyamr_multi_nopath.csv +0 -0
  157. {gapit-0.2.2 → gapit-0.3.0}/tests/golden/tinyamr_multi_nopath.tsv +0 -0
  158. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/corpus/01_exact_and_junk.fa +0 -0
  159. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/corpus/02_mutated.fa +0 -0
  160. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/corpus/03_truncated.fa +0 -0
  161. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/make_corpus.py +0 -0
  162. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/run_parity.py +0 -0
  163. {gapit-0.2.2 → gapit-0.3.0}/tests/parity/run_summary_parity.py +0 -0
  164. {gapit-0.2.2 → gapit-0.3.0}/tests/test_blast_parse.py +0 -0
  165. {gapit-0.2.2 → gapit-0.3.0}/tests/test_blast_pipeline.py +0 -0
  166. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_aligner.py +0 -0
  167. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_completion.py +0 -0
  168. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_db_build.py +0 -0
  169. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_db_fetch.py +0 -0
  170. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_db_query.py +0 -0
  171. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_reads.py +0 -0
  172. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_reads2.py +0 -0
  173. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_screen.py +0 -0
  174. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_screen_jobs.py +0 -0
  175. {gapit-0.2.2 → gapit-0.3.0}/tests/test_cli_summary.py +0 -0
  176. {gapit-0.2.2 → gapit-0.3.0}/tests/test_config.py +0 -0
  177. {gapit-0.2.2 → gapit-0.3.0}/tests/test_db.py +0 -0
  178. {gapit-0.2.2 → gapit-0.3.0}/tests/test_db_fetch.py +0 -0
  179. {gapit-0.2.2 → gapit-0.3.0}/tests/test_db_headers.py +0 -0
  180. {gapit-0.2.2 → gapit-0.3.0}/tests/test_dbbuild.py +0 -0
  181. {gapit-0.2.2 → gapit-0.3.0}/tests/test_dbcodec.py +0 -0
  182. {gapit-0.2.2 → gapit-0.3.0}/tests/test_fasta.py +0 -0
  183. {gapit-0.2.2 → gapit-0.3.0}/tests/test_gapit_db_e2e.py +0 -0
  184. {gapit-0.2.2 → gapit-0.3.0}/tests/test_hits.py +0 -0
  185. {gapit-0.2.2 → gapit-0.3.0}/tests/test_json_format.py +0 -0
  186. {gapit-0.2.2 → gapit-0.3.0}/tests/test_mcp.py +0 -0
  187. {gapit-0.2.2 → gapit-0.3.0}/tests/test_mcp_db_tools.py +0 -0
  188. {gapit-0.2.2 → gapit-0.3.0}/tests/test_mcp_protocol.py +0 -0
  189. {gapit-0.2.2 → gapit-0.3.0}/tests/test_mcp_reads.py +0 -0
  190. {gapit-0.2.2 → gapit-0.3.0}/tests/test_md_format.py +0 -0
  191. {gapit-0.2.2 → gapit-0.3.0}/tests/test_minimap.py +0 -0
  192. {gapit-0.2.2 → gapit-0.3.0}/tests/test_mol_type.py +0 -0
  193. {gapit-0.2.2 → gapit-0.3.0}/tests/test_oversubscription.py +0 -0
  194. {gapit-0.2.2 → gapit-0.3.0}/tests/test_paf.py +0 -0
  195. {gapit-0.2.2 → gapit-0.3.0}/tests/test_paf_identity.py +0 -0
  196. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_argannot.py +0 -0
  197. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_bacmet2.py +0 -0
  198. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_card.py +0 -0
  199. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_ecoh.py +0 -0
  200. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_ecoli_vf.py +0 -0
  201. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_megares.py +0 -0
  202. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_ncbi.py +0 -0
  203. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_plasmidfinder.py +0 -0
  204. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_resfinder.py +0 -0
  205. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_upec_expec_vf.py +0 -0
  206. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_vfdb.py +0 -0
  207. {gapit-0.2.2 → gapit-0.3.0}/tests/test_provider_victors.py +0 -0
  208. {gapit-0.2.2 → gapit-0.3.0}/tests/test_providers_common.py +0 -0
  209. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads2_homologs.py +0 -0
  210. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads2_model.py +0 -0
  211. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads_aggregate.py +0 -0
  212. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads_integration.py +0 -0
  213. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads_interval_union.py +0 -0
  214. {gapit-0.2.2 → gapit-0.3.0}/tests/test_reads_streaming.py +0 -0
  215. {gapit-0.2.2 → gapit-0.3.0}/tests/test_records.py +0 -0
  216. {gapit-0.2.2 → gapit-0.3.0}/tests/test_report.py +0 -0
  217. {gapit-0.2.2 → gapit-0.3.0}/tests/test_screen_integration.py +0 -0
  218. {gapit-0.2.2 → gapit-0.3.0}/tests/test_screening_reads_unit.py +0 -0
  219. {gapit-0.2.2 → gapit-0.3.0}/tests/test_seqconvert.py +0 -0
  220. {gapit-0.2.2 → gapit-0.3.0}/tests/test_seqconvert_differential.py +0 -0
  221. {gapit-0.2.2 → gapit-0.3.0}/tests/test_snapshots.py +0 -0
  222. {gapit-0.2.2 → gapit-0.3.0}/tests/test_summary.py +0 -0
  223. {gapit-0.2.2 → gapit-0.3.0}/tests/test_summary_formats.py +0 -0
  224. {gapit-0.2.2 → gapit-0.3.0}/tests/test_tsv.py +0 -0
  225. {gapit-0.2.2 → gapit-0.3.0}/tests/test_version.py +0 -0
@@ -60,7 +60,7 @@ gapit/
60
60
  │ └── ci.yml # gates matrix 3.11/3.13/3.14 + parity job
61
61
  ├── src/gapit/
62
62
  │ ├── __init__.py
63
- │ ├── cli.py # typer entrypoint: screen / summary / db / list / setupdb / schema / mcp
63
+ │ ├── cli.py # typer entrypoint: screen / summary / db / setupdb / schema / mcp
64
64
  │ ├── config.py # datadir resolution, defaults, env vars
65
65
  │ ├── dispatch.py # shared CLI dispatch (error envelope → exit codes) + --datadir option
66
66
  │ ├── proctools.py # external-tool plumbing: argv subprocess runner + stderr notes
@@ -149,7 +149,7 @@ This is what distinguishes gapit from abricate. Treat it as a public API.
149
149
  `db_fetch` (installs provider databases; may download) and `db_build` (writes a custom db);
150
150
  tool failures carry the `gapit.error/1` envelope.
151
151
  - **stdout purity**: data on stdout, diagnostics on stderr, always. `--quiet` only affects stderr.
152
- - **Self-description**: `gapit --version --json`, `gapit list --json`, `gapit schema` — an agent
152
+ - **Self-description**: `gapit --version --json`, `gapit db list --json`, `gapit schema` — an agent
153
153
  must be able to discover everything without reading docs.
154
154
 
155
155
  ## 6. Testing strategy
@@ -5,6 +5,14 @@ All notable changes to gapit are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
6
6
  project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2026-09-28
9
+
10
+ ### Removed
11
+
12
+ - `gapit list` command and the `gapit.list/1` schema (breaking; rightsholder decision to
13
+ drop abricate `--list` strict parity for this surface). `gapit db list` / `gapit.dblist/1`
14
+ is the single listing surface; `gapit schema` now introspects six documents.
15
+
8
16
  ## [0.2.2] - 2026-09-24
9
17
 
10
18
  ### Security
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gapit
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: Mass screening of contigs for antimicrobial resistance and virulence genes — agent-first Python reimplementation of abricate
5
5
  Project-URL: Homepage, https://github.com/indexofire/gapit
6
6
  Project-URL: Documentation, https://indexofire.github.io/gapit/
@@ -49,8 +49,15 @@ byte-compatible TSV plus first-class JSON and Markdown.
49
49
 
50
50
  ## Install
51
51
 
52
- [pixi](https://pixi.sh) manages the environment, including the external binaries
53
- (BLAST+, minimap2):
52
+ From PyPI (external BLAST+ and minimap2 binaries required on PATH — see
53
+ [docs/installation.md](docs/installation.md)):
54
+
55
+ ```bash
56
+ pip install gapit
57
+ ```
58
+
59
+ Or from a git clone with [pixi](https://pixi.sh), which manages the environment including
60
+ the external binaries:
54
61
 
55
62
  ```bash
56
63
  git clone https://github.com/indexofire/gapit.git
@@ -87,7 +94,6 @@ gapit db search "tet(M)" # look up genes across every installed database
87
94
  gapit db build mydb my_genes.fa --tsv my_meta.tsv # custom db from any FASTA
88
95
 
89
96
  # Introspection
90
- gapit list # installed databases (abricate --list compatible)
91
97
  gapit schema report # JSON Schema of gapit.report/1
92
98
  ```
93
99
 
@@ -142,8 +142,15 @@ consumes abricate-built datadirs.
142
142
  `run_screen_reads`/`run_screen_assemblies` use-cases. Additive `gapit.mcp` contract
143
143
  (9 tools; the other 8 entries byte-identical), no output-schema version bump. See
144
144
  docs/mcp.md.
145
- - **Deferred by decision (2026-09-18):** PyPI and bioconda publication — recipe remains
146
- in-repo; sha256 placeholder to be replaced at submission time.
145
+ - **PyPI published (first release 0.2.2, 2026-09-27):** `pip install gapit`; passwordless
146
+ releases via `.github/workflows/release.yml` (OIDC trusted publishing, `workflow_dispatch`
147
+ or `v*` tag). **Deferred by decision (2026-09-18, still open):** bioconda submission —
148
+ recipe remains in-repo; sha256 placeholder to be replaced at submission time.
149
+ - **Contract change (2026-09-27, rightsholder decision):** `gapit list` and its
150
+ `gapit.list/1` document removed; `gapit db list` (`gapit.dblist/1`) is the single
151
+ listing surface and abricate `--list` byte-parity is intentionally dropped for it.
152
+ Schema registry is now six documents (report, reads, reads2, summary, error, version).
153
+ Breaking; recorded under \[Unreleased\] in CHANGELOG.md for the next minor bump.
147
154
 
148
155
  ## Milestones
149
156
 
@@ -19,8 +19,15 @@ byte-compatible TSV plus first-class JSON and Markdown.
19
19
 
20
20
  ## Install
21
21
 
22
- [pixi](https://pixi.sh) manages the environment, including the external binaries
23
- (BLAST+, minimap2):
22
+ From PyPI (external BLAST+ and minimap2 binaries required on PATH — see
23
+ [docs/installation.md](docs/installation.md)):
24
+
25
+ ```bash
26
+ pip install gapit
27
+ ```
28
+
29
+ Or from a git clone with [pixi](https://pixi.sh), which manages the environment including
30
+ the external binaries:
24
31
 
25
32
  ```bash
26
33
  git clone https://github.com/indexofire/gapit.git
@@ -57,7 +64,6 @@ gapit db search "tet(M)" # look up genes across every installed database
57
64
  gapit db build mydb my_genes.fa --tsv my_meta.tsv # custom db from any FASTA
58
65
 
59
66
  # Introspection
60
- gapit list # installed databases (abricate --list compatible)
61
67
  gapit schema report # JSON Schema of gapit.report/1
62
68
  ```
63
69
 
@@ -13,17 +13,17 @@ Version, as one JSON line:
13
13
 
14
14
  ```console
15
15
  $ gapit --version --json
16
- {"schema":"gapit.version/1","name":"gapit","version":"0.2.2"}
16
+ {"schema":"gapit.version/1","name":"gapit","version":"0.3.0"}
17
17
  ```
18
18
 
19
19
  Output schemas. Six documents are introspectable: `report`, `reads`,
20
- `summary`, `list`, `error`, `version`. Each prints its full JSON Schema:
20
+ `reads2`, `summary`, `error`, `version`. Each prints its full JSON Schema:
21
21
 
22
22
  ```console
23
23
  $ gapit schema report # gapit.report/1 (contig screening)
24
24
  $ gapit schema reads # gapit.reads/1 (FASTQ screening)
25
+ $ gapit schema reads2 # gapit.reads/2 (filtered FASTQ screening)
25
26
  $ gapit schema summary # gapit.summary/1
26
- $ gapit schema list # gapit.list/1
27
27
  $ gapit schema error # gapit.error/1
28
28
  $ gapit schema version # gapit.version/1
29
29
  ```
@@ -56,18 +56,27 @@ For example, `gapit schema version` (real output):
56
56
  }
57
57
  ```
58
58
 
59
- Installed databases (real output against a datadir holding one database):
59
+ Databases: the provider catalog and install state (`gapit db list --json`; real output,
60
+ first two of twelve shown, trimmed):
60
61
 
61
62
  ```console
62
- $ gapit list --json
63
+ $ gapit db list --json
63
64
  {
64
- "schema": "gapit.list/1",
65
- "databases": [
65
+ "schema": "gapit.dblist/1",
66
+ "providers": [
66
67
  {
67
- "name": "tinyamr",
68
- "sequences": 3,
68
+ "name": "argannot",
69
+ "description": "ARG-ANNOT acquired resistance genes",
69
70
  "dbtype": "nucl",
70
- "date": "2026-Sep-19"
71
+ "installed": true,
72
+ "records": 2224
73
+ },
74
+ {
75
+ "name": "bacmet2",
76
+ "description": "BacMet2 experimentally confirmed biocide/resistance genes (protein)",
77
+ "dbtype": "prot",
78
+ "installed": true,
79
+ "records": 746
71
80
  }
72
81
  ]
73
82
  }
@@ -103,7 +112,7 @@ Envelope details and error codes: `./outputs.md`.
103
112
  ## JSON stability policy
104
113
 
105
114
  - Every document self-identifies with a version string: `gapit.report/1`,
106
- `gapit.reads/1`, `gapit.summary/1`, `gapit.list/1`, `gapit.error/1`,
115
+ `gapit.reads/1`, `gapit.summary/1`, `gapit.error/1`,
107
116
  `gapit.version/1`. Check `schema` first, dispatch on it.
108
117
  - Schemas follow semver. A minor bump never renames or retypes an existing
109
118
  field; new fields may appear, so ignore unknown keys rather than rejecting
@@ -148,7 +157,7 @@ Parsing guidance:
148
157
  Discover, screen, parse, summarize. Session below run against the repo's test
149
158
  fixture datadir (setup recipe in `./mcp.md`).
150
159
 
151
- 1. Discover available databases (`gapit list --json`, or the `db_list` MCP
160
+ 1. Discover available databases (`gapit db list --json`, or the `db_list` MCP
152
161
  tool), pick a `db` name.
153
162
 
154
163
  2. Screen each sample as JSON and parse hits straight out of the document:
@@ -271,9 +271,9 @@ gapit: generated /tmp/opencode/customdb-default/db/labenv/sequences
271
271
  gapit: self-check passed for labenv
272
272
  gapit: BLAST index built (nucl)
273
273
  {"db":"labenv","records":2,"dbtype":"nucl","destination":"/tmp/opencode/customdb-default/db/labenv"}
274
- $ gapit list
275
- DATABASE SEQUENCES DBTYPE DATE
276
- labenv 2 nucl 2026-Sep-19
274
+ $ gapit db outdated
275
+ NAME FETCHED_AT AGE_DAYS STATUS
276
+ labenv 2026-09-27T14:46:27Z 0.00 ok
277
277
  ```
278
278
 
279
279
  Unlike screening, a build creates a missing datadir instead of failing, so a fresh machine bootstraps on the first build. The scratch datadir was deleted after this capture.
@@ -85,8 +85,10 @@ $ gapit db list --json
85
85
  | `providers[].installed` | boolean | True when a manifest exists in the datadir |
86
86
  | `providers[].records` | integer | Record count, omitted when the database isn't installed |
87
87
 
88
- `gapit list` gives the abricate-compatible view of installed databases; `gapit list --json`
89
- returns a `gapit.list/1` document. See [outputs.md](./outputs.md).
88
+ `gapit db list` is the single listing surface: the provider catalog above, with `--json`
89
+ returning the `gapit.dblist/1` document. (The former standalone listing command and its
90
+ schema were removed; abricate `--list` byte-parity is intentionally dropped for this
91
+ surface.) See [outputs.md](./outputs.md).
90
92
 
91
93
  ## Checking database freshness
92
94
 
@@ -343,7 +345,7 @@ versions. A real one, from the plasmidfinder database:
343
345
  "upstream_version": "",
344
346
  "tool": {
345
347
  "name": "gapit",
346
- "version": "0.2.2"
348
+ "version": "0.3.0"
347
349
  },
348
350
  "makeblastdb_version": "blastn: 2.17.0+",
349
351
  "minimap2_version": "2.31-r1302"
@@ -9,7 +9,7 @@ first-class JSON and Markdown outputs with versioned schemas.
9
9
 
10
10
  | Page | Contents |
11
11
  |---|---|
12
- | [Installation](./installation.md) | Prerequisites, pixi setup, verification, database bootstrap, shell completions |
12
+ | [Installation](./installation.md) | PyPI wheel and pixi paths, external binaries, verification, database bootstrap, shell completions |
13
13
  | [Quickstart](./quickstart.md) | A complete first session on the bundled test fixture, offline |
14
14
  | [Screening contigs](./screen.md) | `gapit screen` on FASTA/GBK/EMBL inputs: thresholds, filters, formats |
15
15
  | [Screening reads](./reads.md) | FASTQ and assembly FASTA through minimap2: `--r1`/`--r2`, presets, breadth-based presence, two-stage survey |
@@ -30,9 +30,8 @@ first-class JSON and Markdown outputs with versioned schemas.
30
30
  | `gapit db fetch` | Fetch and build provider database(s) into the datadir | [Databases](./databases.md) |
31
31
  | `gapit db list` | List database providers and their installed state | [Databases](./databases.md) |
32
32
  | `gapit db install` | Install a local file after verifying its SHA256 | [Databases](./databases.md) |
33
- | `gapit list` | List installed databases (abricate `--list` compatible) | here |
34
33
  | `gapit setupdb` | Build BLAST indices for all databases under the datadir | here |
35
- | `gapit schema` | Print the JSON Schema of a gapit output document (`report`, `reads`, `summary`, `list`, `error`, `version`) | [Outputs](./outputs.md) |
34
+ | `gapit schema` | Print the JSON Schema of a gapit output document (`report`, `reads`, `reads2`, `summary`, `error`, `version`) | [Outputs](./outputs.md) |
36
35
  | `gapit mcp` | Run the MCP stdio server (also installed as the `gapit-mcp` console script) | [MCP server](./mcp.md) |
37
36
 
38
37
  ## Project documents
@@ -1,16 +1,29 @@
1
1
  # Installing gapit
2
2
 
3
- gapit is installed from a git clone: [pixi](https://pixi.sh) creates the environment, so
4
- you don't manage Python or external tools yourself.
3
+ Two install paths: the PyPI wheel (you provide the external binaries) or a git clone with
4
+ [pixi](https://pixi.sh) (binaries managed for you).
5
5
 
6
- ## Prerequisites
6
+ ## From PyPI
7
+
8
+ ```bash
9
+ pip install gapit
10
+ ```
11
+
12
+ The wheel bundles the Python package, the `gapit`/`gapit-mcp` console scripts, and the
13
+ offline `card`/`vfdb` snapshots. It does **not** bundle BLAST+ or minimap2 — install them
14
+ first ([External binaries](#external-binaries), e.g. `conda create -n gapit-env -c
15
+ bioconda blast minimap2`).
16
+
17
+ ## From source (pixi)
18
+
19
+ ### Prerequisites
7
20
 
8
21
  - [git](https://git-scm.com) and [pixi](https://pixi.sh). On macOS/Linux:
9
22
  `curl -fsSL https://pixi.sh/install.sh | bash`
10
23
  - Python 3.11+ if you install the package outside pixi (pip/pyproject). With pixi this is
11
24
  moot: the environment ships its own Python (the dev env pins 3.14).
12
25
 
13
- ## Install
26
+ ### Install
14
27
 
15
28
  ```bash
16
29
  git clone https://github.com/indexofire/gapit.git
@@ -31,9 +44,9 @@ gapit --version
31
44
 
32
45
  ```console
33
46
  $ gapit --version
34
- gapit 0.2.2
47
+ gapit 0.3.0
35
48
  $ gapit --version --json
36
- {"schema":"gapit.version/1","name":"gapit","version":"0.2.2"}
49
+ {"schema":"gapit.version/1","name":"gapit","version":"0.3.0"}
37
50
  ```
38
51
 
39
52
  ## External binaries
@@ -71,7 +84,8 @@ gapit: BLAST index built (nucl)
71
84
  {"db":"vfdb","records":4769,"dbtype":"nucl","destination":"/tmp/gapit-docs/dd/vfdb"}
72
85
  ```
73
86
 
74
- Confirm what's installed any time with `gapit list` (or `gapit list --json`).
87
+ Confirm the provider catalog and what's installed any time with `gapit db list` (or
88
+ `gapit db list --json`).
75
89
 
76
90
  ## Shell completions
77
91
 
@@ -40,7 +40,7 @@ transcribed from the live `tools/list` `inputSchema` objects.
40
40
  | `screen` | `files` (array of strings, required), `db` (string, default `ncbi`), `minid` (number), `mincov` (number), `format` (string: `json` \| `tsv` \| `md`, default `json`), `aligner` (string: `blastn` \| `minimap2`, default `blastn`), `min_breadth` (number 0–100, default `90`; minimap2 only), `min_identity` (number 0–100, default `0`; minimap2 only), `min_mapq` (integer ≥ 0, default `0`; minimap2 only), `datadir` (string) | Report text: `gapit.report/1` JSON by default, TSV or Markdown per `format`; `aligner minimap2` runs the reads engine and emits `gapit.reads/1` |
41
41
  | `screen_reads` | `r1` (array of strings, required — one path per lane), `r2` (array of strings, same count as `r1`), `read_type` (string: `sr` \| `map-ont` \| `map-hifi`, default `sr`), `min_breadth` (number 0–100, default `90`), `min_identity` (number 0–100, default `0`), `min_mapq` (integer ≥ 0, default `0`), `format` (string: `json` \| `md`, default `json`), `db` (string, default `ncbi`), `datadir` (string) | `gapit.reads/1` JSON by default or Markdown per `format`; `min_identity`/`min_mapq` > 0 switches to `gapit.reads/2` |
42
42
  | `summary` | `files` (array of report table paths, required), `identity` (boolean), `nopath` (boolean) | `gapit.summary/1` JSON |
43
- | `schema` | `name` (string, required, one of `error`, `list`, `reads`, `report`, `summary`, `version`) | The JSON Schema of that output document |
43
+ | `schema` | `name` (string, required, one of `error`, `reads`, `reads2`, `report`, `summary`, `version`) | The JSON Schema of that output document |
44
44
  | `db_list` | none | `gapit.dblist/1`: provider names, install state, record counts |
45
45
  | `db_fetch` | `name` (string), `datadir` (string), `force` (boolean, default `false`) | One JSON receipt line per database (`db`, `records`, `dbtype`, `destination`). Name omitted: the card+vfdb default set from bundled snapshots. Network installs can take minutes |
46
46
  | `db_build` | `name` (string, required), `fasta` (string, required — a LOCAL filesystem path), `tsv` (string), `dbtype` (string: `nucl` \| `prot`), `description` (string), `datadir` (string), `force` (boolean, default `false`) | One JSON receipt line (`db`, `records`, `dbtype`, `destination`) |
@@ -94,7 +94,7 @@ EOF
94
94
  Response line 1, verbatim:
95
95
 
96
96
  ```text
97
- {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.2.2"}}}
97
+ {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"gapit","version":"0.3.0"}}}
98
98
  ```
99
99
 
100
100
  Response line 2 (real output, elided in the middle; each tool carries its full
@@ -117,7 +117,7 @@ the same run):
117
117
  ```json
118
118
  {
119
119
  "schema": "gapit.report/1",
120
- "tool": {"name": "gapit", "version": "0.2.2"},
120
+ "tool": {"name": "gapit", "version": "0.3.0"},
121
121
  "created_at": "2026-09-19T01:15:44Z",
122
122
  "params": {"db": "tinyamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
123
123
  "files": [
@@ -173,7 +173,7 @@ the same run):
173
173
  ```json
174
174
  {
175
175
  "schema": "gapit.reads/1",
176
- "tool": {"name": "gapit", "version": "0.2.2"},
176
+ "tool": {"name": "gapit", "version": "0.3.0"},
177
177
  "created_at": "2026-09-22T00:07:35Z",
178
178
  "params": {
179
179
  "db": "tinyreads",
@@ -248,7 +248,7 @@ hit is the gene the agent just built the database from (real output):
248
248
  ```json
249
249
  {
250
250
  "schema": "gapit.report/1",
251
- "tool": {"name": "gapit", "version": "0.2.2"},
251
+ "tool": {"name": "gapit", "version": "0.3.0"},
252
252
  "created_at": "2026-09-20T13:38:39Z",
253
253
  "params": {"db": "myamr", "minid": 80.0, "mincov": 80.0, "threads": 1},
254
254
  "files": [
@@ -115,7 +115,7 @@ Real document, same run as the TSV above:
115
115
  "schema": "gapit.report/1",
116
116
  "tool": {
117
117
  "name": "gapit",
118
- "version": "0.2.2"
118
+ "version": "0.3.0"
119
119
  },
120
120
  "created_at": "2026-09-19T01:12:20Z",
121
121
  "params": {
@@ -246,7 +246,7 @@ summarizing two report files, one with a `tetA` hit and one with none:
246
246
  "schema": "gapit.summary/1",
247
247
  "tool": {
248
248
  "name": "gapit",
249
- "version": "0.2.2"
249
+ "version": "0.3.0"
250
250
  },
251
251
  "created_at": "2026-09-19T01:11:09Z",
252
252
  "params": {
@@ -364,42 +364,11 @@ An agent can discover the whole contract from the binary alone.
364
364
 
365
365
  ```console
366
366
  $ gapit --version --json
367
- {"schema":"gapit.version/1","name":"gapit","version":"0.2.2"}
367
+ {"schema":"gapit.version/1","name":"gapit","version":"0.3.0"}
368
368
  ```
369
369
 
370
- `gapit list --json` describes installed databases (`gapit.list/1`, first two of twelve
371
- shown, trimmed):
372
-
373
- ```json
374
- {
375
- "schema": "gapit.list/1",
376
- "databases": [
377
- {
378
- "name": "argannot",
379
- "sequences": 2224,
380
- "dbtype": "nucl",
381
- "date": "2026-Sep-18"
382
- },
383
- {
384
- "name": "bacmet2",
385
- "sequences": 746,
386
- "dbtype": "prot",
387
- "date": "2026-Sep-18"
388
- }
389
- ]
390
- }
391
- ```
392
-
393
- | Field | Type | Meaning |
394
- |---|---|---|
395
- | `schema` | string | Always `gapit.list/1` |
396
- | `databases[].name` | string | Database name, usable as `--db` |
397
- | `databases[].sequences` | integer | Sequence count in the database |
398
- | `databases[].dbtype` | string | `nucl` or `prot` |
399
- | `databases[].date` | string | Build date, abricate `%d-%b-%Y` format |
400
-
401
370
  `gapit schema <name>` prints the JSON Schema for each document. The six names: `report`,
402
- `reads`, `summary`, `list`, `error`, `version`. A trimmed fragment of `gapit schema report`:
371
+ `reads`, `reads2`, `summary`, `error`, `version`. A trimmed fragment of `gapit schema report`:
403
372
 
404
373
  ```json
405
374
  {
@@ -22,14 +22,20 @@ makeblastdb -in /tmp/gapit-quickstart/db/tinyamr/sequences \
22
22
  export GAPIT_DATADIR=/tmp/gapit-quickstart/db
23
23
  ```
24
24
 
25
- `gapit list` confirms the database is visible:
25
+ `gapit db list` shows the provider catalog and install state (trimmed below; `--json`
26
+ returns the `gapit.dblist/1` document). The fixture `tinyamr` is a plain custom database,
27
+ not a provider, so it does not appear there — the screen in the next section confirms it
28
+ is usable:
26
29
 
27
30
  ```console
28
- $ gapit list
29
- DATABASE SEQUENCES DBTYPE DATE
30
- tinyamr 3 nucl 2026-Sep-19
31
+ $ gapit db list
32
+ PROVIDER STATUS DBTYPE DESCRIPTION
33
+ argannot available nucl ARG-ANNOT acquired resistance genes
34
+ ncbi available nucl NCBI AMRFinderPlus (reference finder) curated AMR
31
35
  ```
32
36
 
37
+ (twelve providers in total, all `available` in this throwaway datadir)
38
+
33
39
  ## 2. Screen a contig file
34
40
 
35
41
  ```console
@@ -73,7 +79,7 @@ gapit screen tests/data/contigs/full.fa --db tinyamr --format json
73
79
  "schema": "gapit.report/1",
74
80
  "tool": {
75
81
  "name": "gapit",
76
- "version": "0.2.2"
82
+ "version": "0.3.0"
77
83
  },
78
84
  "created_at": "2026-09-19T01:11:06Z",
79
85
  "params": {
@@ -28,7 +28,7 @@ gapit screen --r1 R1[,R1b,...] [--r2 R2[,R2b,...]] --db NAME [--read-type sr|map
28
28
  ## Options
29
29
 
30
30
  Reads mode runs through the same `gapit screen` command; these are the flags that apply
31
- (transcribed from `gapit screen --help`, gapit 0.2.2). Contig-mode flags not listed here
31
+ (transcribed from `gapit screen --help`, gapit 0.3.0). Contig-mode flags not listed here
32
32
  (`--minid`, `--mincov`, `--jobs`, `--fofn`, `--noheader`, `--nopath`) do not apply.
33
33
 
34
34
  | Flag | Type | Default | Description |
@@ -223,7 +223,7 @@ The short-read fixture behaves the same with one calibration: `sr` soft-clipping
223
223
  $ gapit screen --r1 ont_homologs.fq --db homologs --read-type map-ont --min-identity 95 --format md --quiet
224
224
  ---
225
225
  schema: gapit.reads/2
226
- tool: gapit 0.2.2
226
+ tool: gapit 0.3.0
227
227
  created_at: 2026-09-20T14:23:33Z
228
228
  db: homologs
229
229
  read_type: map-ont
@@ -262,7 +262,7 @@ Detected 1 present genes in tetx_full.fq
262
262
  "schema": "gapit.reads/1",
263
263
  "tool": {
264
264
  "name": "gapit",
265
- "version": "0.2.2"
265
+ "version": "0.3.0"
266
266
  },
267
267
  "created_at": "2026-09-19T01:12:25Z",
268
268
  "params": {
@@ -359,7 +359,7 @@ $ gapit screen --r1 tetx_lane1.fq,tetx_lane2.fq --db tinyreads --quiet
359
359
  $ gapit screen --r1 tetx_full.fq --db tinyreads --format md
360
360
  ---
361
361
  schema: gapit.reads/1
362
- tool: gapit 0.2.2
362
+ tool: gapit 0.3.0
363
363
  created_at: 2026-09-19T01:12:25Z
364
364
  db: tinyreads
365
365
  read_type: sr
@@ -455,7 +455,7 @@ Detected 2 present genes in /tmp/gapit-demo/assembly.fa
455
455
  "schema": "gapit.reads/1",
456
456
  "tool": {
457
457
  "name": "gapit",
458
- "version": "0.2.2"
458
+ "version": "0.3.0"
459
459
  },
460
460
  "created_at": "2026-09-19T14:23:00Z",
461
461
  "params": {
@@ -514,7 +514,7 @@ cost of allele-level precision. That trade suggests a two-stage workflow over ma
514
514
  pipeline, which applies the identity and coverage floors at abricate parity.
515
515
 
516
516
  Real numbers, one K. pneumoniae RefSeq assembly (GCF_000240185.1, 5.3 Mb, `--db ncbi`,
517
- single-threaded, gapit 0.2.2):
517
+ single-threaded, gapit 0.3.0):
518
518
 
519
519
  ```console
520
520
  $ # Stage 1: survey, ~0.9 s
@@ -9,7 +9,7 @@ Database setup is covered in [./databases.md](./databases.md); a full walk-throu
9
9
 
10
10
  ## Options
11
11
 
12
- Transcribed from `gapit screen --help` (gapit 0.2.2). Flags marked *reads mode* apply only when
12
+ Transcribed from `gapit screen --help` (gapit 0.3.0). Flags marked *reads mode* apply only when
13
13
  you pass `--r1`/`--r2`; they are documented in [./reads.md](./reads.md).
14
14
 
15
15
  | Flag | Type | Default | Description |
@@ -86,7 +86,7 @@ $ gapit screen tests/data/contigs/full.fa --db tinyamr --format json
86
86
  "schema": "gapit.report/1",
87
87
  "tool": {
88
88
  "name": "gapit",
89
- "version": "0.2.2"
89
+ "version": "0.3.0"
90
90
  },
91
91
  "created_at": "2026-09-19T01:12:04Z",
92
92
  "params": {
@@ -10,7 +10,7 @@ exactly what `gapit screen` writes. See [./screen.md](./screen.md) for producing
10
10
 
11
11
  ## Options
12
12
 
13
- Transcribed from `gapit summary --help` (gapit 0.2.2):
13
+ Transcribed from `gapit summary --help` (gapit 0.3.0):
14
14
 
15
15
  | Flag | Type | Default | Description |
16
16
  |---|---|---|---|
@@ -110,7 +110,7 @@ $ gapit summary tests/data/summary/sample_a.tsv tests/data/summary/sample_b.tsv
110
110
  "schema": "gapit.summary/1",
111
111
  "tool": {
112
112
  "name": "gapit",
113
- "version": "0.2.2"
113
+ "version": "0.3.0"
114
114
  },
115
115
  "created_at": "2026-09-19T01:12:48Z",
116
116
  "params": {
@@ -1135,8 +1135,8 @@ packages:
1135
1135
  timestamp: 1694615932610
1136
1136
  - pypi: ./
1137
1137
  name: gapit
1138
- version: 0.2.2
1139
- sha256: 7ddd019d0bc6e998bf772d75f8cdc26856074cf4ed1c76c71d048d7486df5b43
1138
+ version: 0.3.0
1139
+ sha256: 079317f27b81dd25126368906a19acb3934a200b6fcdf3f2ac1490e9e60d4c46
1140
1140
  requires_dist:
1141
1141
  - typer>=0.12
1142
1142
  - pydantic>=2.7
@@ -3,7 +3,7 @@ authors = ["indexofire <indexofire@gmail.com>"]
3
3
  channels = ["conda-forge", "bioconda"]
4
4
  name = "gapit"
5
5
  platforms = ["linux-64"]
6
- version = "0.2.2"
6
+ version = "0.3.0"
7
7
 
8
8
  [tasks]
9
9
  lint = "ruff check"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "gapit"
7
- version = "0.2.2"
7
+ version = "0.3.0"
8
8
  description = "Mass screening of contigs for antimicrobial resistance and virulence genes — agent-first Python reimplementation of abricate"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "indexofire", email = "indexofire@gmail.com" }]
@@ -4,7 +4,7 @@
4
4
  # version/license/python/deps mirror pyproject.toml exactly; the external
5
5
  # binaries mirror pixi.toml's conda dependencies.
6
6
  {% set name = "gapit" %}
7
- {% set version = "0.2.2" %}
7
+ {% set version = "0.3.0" %}
8
8
 
9
9
  package:
10
10
  name: {{ name|lower }}
@@ -13,7 +13,7 @@ package:
13
13
  source:
14
14
  # gapit is not on PyPI yet. This is the standard noarch-python source URL;
15
15
  # replace the sha256 with the PyPI sdist hash at submission time.
16
- # The value below hashes the LOCAL hatchling sdist (dist/gapit-0.2.2.tar.gz)
16
+ # The value below hashes the LOCAL hatchling sdist (dist/gapit-0.3.0.tar.gz)
17
17
  # — local and PyPI sdists are not byte-identical (gzip), do not trust it.
18
18
  url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
19
19
  sha256: 24df143ed9647fc784fa29c776babfd880d3730d22004b997ed0aea3f105f5e3
@@ -1,3 +1,3 @@
1
1
  """gapit — agent-first Python reimplementation of abricate."""
2
2
 
3
- __version__ = "0.2.2"
3
+ __version__ = "0.3.0"