circex 0.1.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 (569) hide show
  1. circex-0.1.0/.env.example +6 -0
  2. circex-0.1.0/.github/workflows/ci.yml +97 -0
  3. circex-0.1.0/.gitignore +59 -0
  4. circex-0.1.0/.hypothesis/.gitignore +9 -0
  5. circex-0.1.0/.hypothesis/constants/0024416723524ad5 +4 -0
  6. circex-0.1.0/.hypothesis/constants/0497aa3a6c6c683d +4 -0
  7. circex-0.1.0/.hypothesis/constants/073d6cd178dffdca +4 -0
  8. circex-0.1.0/.hypothesis/constants/07f8103327239ffc +4 -0
  9. circex-0.1.0/.hypothesis/constants/0a017dc61eb166da +4 -0
  10. circex-0.1.0/.hypothesis/constants/0b7f3fe7661175cb +4 -0
  11. circex-0.1.0/.hypothesis/constants/0dd86460d9b92d8e +4 -0
  12. circex-0.1.0/.hypothesis/constants/0e64197e294a0f65 +4 -0
  13. circex-0.1.0/.hypothesis/constants/0eb0404cf5d06137 +4 -0
  14. circex-0.1.0/.hypothesis/constants/0f337a31c47b7a96 +4 -0
  15. circex-0.1.0/.hypothesis/constants/1171cee35ab75630 +4 -0
  16. circex-0.1.0/.hypothesis/constants/1292f8c857dbcb8e +4 -0
  17. circex-0.1.0/.hypothesis/constants/131a312998829e3a +4 -0
  18. circex-0.1.0/.hypothesis/constants/1720c3d92d8fc7b1 +4 -0
  19. circex-0.1.0/.hypothesis/constants/176761561b0ce6fe +4 -0
  20. circex-0.1.0/.hypothesis/constants/177a446fdb97e0ba +4 -0
  21. circex-0.1.0/.hypothesis/constants/184f2800fd6922fa +4 -0
  22. circex-0.1.0/.hypothesis/constants/1893a8ca10ccc1f6 +4 -0
  23. circex-0.1.0/.hypothesis/constants/1927d6c1ca1b6968 +4 -0
  24. circex-0.1.0/.hypothesis/constants/1aa1c8b16c9074fb +4 -0
  25. circex-0.1.0/.hypothesis/constants/1c5c6509bf2e6317 +4 -0
  26. circex-0.1.0/.hypothesis/constants/1d0ad31600f8ca6a +4 -0
  27. circex-0.1.0/.hypothesis/constants/1f2974a2c900f2e5 +4 -0
  28. circex-0.1.0/.hypothesis/constants/222b5318d085e83a +4 -0
  29. circex-0.1.0/.hypothesis/constants/232736ce8e03ab6b +4 -0
  30. circex-0.1.0/.hypothesis/constants/234cb4243ad71816 +4 -0
  31. circex-0.1.0/.hypothesis/constants/2473ff86034b78e3 +4 -0
  32. circex-0.1.0/.hypothesis/constants/268c2716860da482 +4 -0
  33. circex-0.1.0/.hypothesis/constants/26f82dded8a162be +4 -0
  34. circex-0.1.0/.hypothesis/constants/2783f78637348c88 +4 -0
  35. circex-0.1.0/.hypothesis/constants/27c3ae55ed255eb5 +4 -0
  36. circex-0.1.0/.hypothesis/constants/27f107d1f9a73147 +4 -0
  37. circex-0.1.0/.hypothesis/constants/2917fbea4d704f46 +4 -0
  38. circex-0.1.0/.hypothesis/constants/2a1222ea845ef7b1 +4 -0
  39. circex-0.1.0/.hypothesis/constants/2aae145952ee7887 +4 -0
  40. circex-0.1.0/.hypothesis/constants/2d7bd423e93371f1 +4 -0
  41. circex-0.1.0/.hypothesis/constants/2ea15269b9ba62a2 +4 -0
  42. circex-0.1.0/.hypothesis/constants/2ef4b4d8cc6c0a52 +4 -0
  43. circex-0.1.0/.hypothesis/constants/2fa5b3d5fb42d9b0 +4 -0
  44. circex-0.1.0/.hypothesis/constants/2fd0f2c9e74cafd0 +4 -0
  45. circex-0.1.0/.hypothesis/constants/307a9461a9981c37 +4 -0
  46. circex-0.1.0/.hypothesis/constants/310c9719a8ac53cd +4 -0
  47. circex-0.1.0/.hypothesis/constants/315fc13388955516 +4 -0
  48. circex-0.1.0/.hypothesis/constants/327ce3033cca49d2 +4 -0
  49. circex-0.1.0/.hypothesis/constants/32fcd380a3201223 +4 -0
  50. circex-0.1.0/.hypothesis/constants/3314c813ff2f0bbf +4 -0
  51. circex-0.1.0/.hypothesis/constants/3385a3caa9f76da5 +4 -0
  52. circex-0.1.0/.hypothesis/constants/37b0105f79fdc8e7 +4 -0
  53. circex-0.1.0/.hypothesis/constants/38823e849f8f589f +4 -0
  54. circex-0.1.0/.hypothesis/constants/3906ea02da800d7f +4 -0
  55. circex-0.1.0/.hypothesis/constants/3a7f90ec05b22172 +4 -0
  56. circex-0.1.0/.hypothesis/constants/3b33481e71b91ef0 +4 -0
  57. circex-0.1.0/.hypothesis/constants/3d62ca009def28da +4 -0
  58. circex-0.1.0/.hypothesis/constants/3e00209a635eff80 +4 -0
  59. circex-0.1.0/.hypothesis/constants/3e43b87324ad9c5b +4 -0
  60. circex-0.1.0/.hypothesis/constants/442b26ec274c08f0 +4 -0
  61. circex-0.1.0/.hypothesis/constants/445eff003147c7e9 +4 -0
  62. circex-0.1.0/.hypothesis/constants/46f69e1cb35e7cce +4 -0
  63. circex-0.1.0/.hypothesis/constants/4e4452b852b6e173 +4 -0
  64. circex-0.1.0/.hypothesis/constants/4f469f9f4968414a +4 -0
  65. circex-0.1.0/.hypothesis/constants/509f371214280f4b +4 -0
  66. circex-0.1.0/.hypothesis/constants/534e7feef0bedf7b +4 -0
  67. circex-0.1.0/.hypothesis/constants/549b3b9fa54675d0 +4 -0
  68. circex-0.1.0/.hypothesis/constants/561c97a57b6c57ff +4 -0
  69. circex-0.1.0/.hypothesis/constants/5658befae1d13f78 +4 -0
  70. circex-0.1.0/.hypothesis/constants/573b4d8c740fd361 +4 -0
  71. circex-0.1.0/.hypothesis/constants/59edcb6574f76a20 +4 -0
  72. circex-0.1.0/.hypothesis/constants/5acf5e8c681ffb82 +4 -0
  73. circex-0.1.0/.hypothesis/constants/5bfc90454aca3811 +4 -0
  74. circex-0.1.0/.hypothesis/constants/5c2b3db3592fe15d +4 -0
  75. circex-0.1.0/.hypothesis/constants/5d40c24a718dad73 +4 -0
  76. circex-0.1.0/.hypothesis/constants/5dd3c4208d76c83b +4 -0
  77. circex-0.1.0/.hypothesis/constants/5eb2ba2a5c84773f +4 -0
  78. circex-0.1.0/.hypothesis/constants/60c908c3e5bf3623 +4 -0
  79. circex-0.1.0/.hypothesis/constants/60d6482968f79c0c +4 -0
  80. circex-0.1.0/.hypothesis/constants/63eff17b244f8514 +4 -0
  81. circex-0.1.0/.hypothesis/constants/64afccdb2332271e +4 -0
  82. circex-0.1.0/.hypothesis/constants/65d0e6bf9f279285 +4 -0
  83. circex-0.1.0/.hypothesis/constants/67de29b3a04d61c5 +4 -0
  84. circex-0.1.0/.hypothesis/constants/6871243ef7c6dbbf +4 -0
  85. circex-0.1.0/.hypothesis/constants/6a85ff81086d2e12 +4 -0
  86. circex-0.1.0/.hypothesis/constants/6ba0a66aaed5b21f +4 -0
  87. circex-0.1.0/.hypothesis/constants/6c6036964182b8c1 +4 -0
  88. circex-0.1.0/.hypothesis/constants/6c9aee8fcf80b8f9 +4 -0
  89. circex-0.1.0/.hypothesis/constants/6eda619ea4375afa +4 -0
  90. circex-0.1.0/.hypothesis/constants/6effd28bf8748cf6 +4 -0
  91. circex-0.1.0/.hypothesis/constants/6f0cd6467897f0e5 +4 -0
  92. circex-0.1.0/.hypothesis/constants/7144c1215e14be46 +4 -0
  93. circex-0.1.0/.hypothesis/constants/71b10d5fe0f7eaa4 +4 -0
  94. circex-0.1.0/.hypothesis/constants/7301c1a0951221f6 +4 -0
  95. circex-0.1.0/.hypothesis/constants/75f84ff1f641c499 +4 -0
  96. circex-0.1.0/.hypothesis/constants/762eb8ffccaa3a71 +4 -0
  97. circex-0.1.0/.hypothesis/constants/7810300e923f4a62 +4 -0
  98. circex-0.1.0/.hypothesis/constants/786a8b9e5559b444 +4 -0
  99. circex-0.1.0/.hypothesis/constants/7d89353fabfc4fbc +4 -0
  100. circex-0.1.0/.hypothesis/constants/7f394debdc58811b +4 -0
  101. circex-0.1.0/.hypothesis/constants/809089915ff038b6 +4 -0
  102. circex-0.1.0/.hypothesis/constants/80daed2103b44284 +4 -0
  103. circex-0.1.0/.hypothesis/constants/81fb803e5ec76ecd +4 -0
  104. circex-0.1.0/.hypothesis/constants/833762831bc4e046 +4 -0
  105. circex-0.1.0/.hypothesis/constants/84a7df6b65386645 +4 -0
  106. circex-0.1.0/.hypothesis/constants/867e6a077243dced +4 -0
  107. circex-0.1.0/.hypothesis/constants/87a468c622a7245c +4 -0
  108. circex-0.1.0/.hypothesis/constants/8e73f951716e0e89 +4 -0
  109. circex-0.1.0/.hypothesis/constants/9023fe9c8fb32c89 +4 -0
  110. circex-0.1.0/.hypothesis/constants/94e76c718e050348 +4 -0
  111. circex-0.1.0/.hypothesis/constants/959cc72e0acaa1ce +4 -0
  112. circex-0.1.0/.hypothesis/constants/9aab3d84d9536f08 +4 -0
  113. circex-0.1.0/.hypothesis/constants/9c01c24a2cfa337f +4 -0
  114. circex-0.1.0/.hypothesis/constants/9dfb6b3b7788bc58 +4 -0
  115. circex-0.1.0/.hypothesis/constants/9f1484e3cafd28c2 +4 -0
  116. circex-0.1.0/.hypothesis/constants/a05113bbca08d1c9 +4 -0
  117. circex-0.1.0/.hypothesis/constants/a087216845e3b7de +4 -0
  118. circex-0.1.0/.hypothesis/constants/a0b2e8a55b9b5c33 +4 -0
  119. circex-0.1.0/.hypothesis/constants/a1d3334d18eff482 +4 -0
  120. circex-0.1.0/.hypothesis/constants/a4da894b9cf34ecb +4 -0
  121. circex-0.1.0/.hypothesis/constants/ab67d081420163b3 +4 -0
  122. circex-0.1.0/.hypothesis/constants/ad1d134b498c2450 +4 -0
  123. circex-0.1.0/.hypothesis/constants/ad9383067e7d3d22 +4 -0
  124. circex-0.1.0/.hypothesis/constants/ade3f1f7123c1c90 +4 -0
  125. circex-0.1.0/.hypothesis/constants/ae27a0ae373c5c4d +4 -0
  126. circex-0.1.0/.hypothesis/constants/b154451e48fee05e +4 -0
  127. circex-0.1.0/.hypothesis/constants/b251565554f122d3 +4 -0
  128. circex-0.1.0/.hypothesis/constants/b68f3c3c15ad7732 +4 -0
  129. circex-0.1.0/.hypothesis/constants/b792401a60d98dd7 +4 -0
  130. circex-0.1.0/.hypothesis/constants/b88e0eea0079ae73 +4 -0
  131. circex-0.1.0/.hypothesis/constants/bbf24417c9e9f4d9 +4 -0
  132. circex-0.1.0/.hypothesis/constants/bc058672d4fde828 +4 -0
  133. circex-0.1.0/.hypothesis/constants/be869184aacb58b9 +4 -0
  134. circex-0.1.0/.hypothesis/constants/c01d8603a4ecbacd +4 -0
  135. circex-0.1.0/.hypothesis/constants/c0b9b0ed0bf10032 +4 -0
  136. circex-0.1.0/.hypothesis/constants/c4141f6334f1e5e7 +4 -0
  137. circex-0.1.0/.hypothesis/constants/c61f04d474ad44a4 +4 -0
  138. circex-0.1.0/.hypothesis/constants/c81a28c1b627e3f1 +4 -0
  139. circex-0.1.0/.hypothesis/constants/c9c8cc575c48ffc9 +4 -0
  140. circex-0.1.0/.hypothesis/constants/cb8e33b8da029e56 +4 -0
  141. circex-0.1.0/.hypothesis/constants/cc4a1a213fdca4fb +4 -0
  142. circex-0.1.0/.hypothesis/constants/cc6905c6e6f88e83 +4 -0
  143. circex-0.1.0/.hypothesis/constants/cc96a9d623a2d200 +4 -0
  144. circex-0.1.0/.hypothesis/constants/d00b950f535ca09f +4 -0
  145. circex-0.1.0/.hypothesis/constants/d0ec681703260009 +4 -0
  146. circex-0.1.0/.hypothesis/constants/d2e7aebf87435d6a +4 -0
  147. circex-0.1.0/.hypothesis/constants/d3fb5e2e2947b0b8 +4 -0
  148. circex-0.1.0/.hypothesis/constants/d4909ecf2fa679fe +4 -0
  149. circex-0.1.0/.hypothesis/constants/d7a7699c460fe5cd +4 -0
  150. circex-0.1.0/.hypothesis/constants/da39a3ee5e6b4b0d +4 -0
  151. circex-0.1.0/.hypothesis/constants/db3ac09d5ac4099c +4 -0
  152. circex-0.1.0/.hypothesis/constants/dd3232a353f3899f +4 -0
  153. circex-0.1.0/.hypothesis/constants/de3a5f544ee04329 +4 -0
  154. circex-0.1.0/.hypothesis/constants/de4489df4542f330 +4 -0
  155. circex-0.1.0/.hypothesis/constants/df1a1a0e1fbc6d98 +4 -0
  156. circex-0.1.0/.hypothesis/constants/e07bbf77b20b3dea +4 -0
  157. circex-0.1.0/.hypothesis/constants/e23be5e818e50fce +4 -0
  158. circex-0.1.0/.hypothesis/constants/e2ca7e1184679e73 +4 -0
  159. circex-0.1.0/.hypothesis/constants/e63e32bb713df769 +4 -0
  160. circex-0.1.0/.hypothesis/constants/e7ebba93bd864e89 +4 -0
  161. circex-0.1.0/.hypothesis/constants/e8d379a90eedafd9 +4 -0
  162. circex-0.1.0/.hypothesis/constants/e949adcb24591480 +4 -0
  163. circex-0.1.0/.hypothesis/constants/ea01e769203cb3b0 +4 -0
  164. circex-0.1.0/.hypothesis/constants/eac75d8fec8e4a54 +4 -0
  165. circex-0.1.0/.hypothesis/constants/ec501b3b3be18cc3 +4 -0
  166. circex-0.1.0/.hypothesis/constants/ec95fc586b84a1a3 +4 -0
  167. circex-0.1.0/.hypothesis/constants/eef80dfb31c433d3 +4 -0
  168. circex-0.1.0/.hypothesis/constants/f029106427f9cf01 +4 -0
  169. circex-0.1.0/.hypothesis/constants/f28a26dab6031b6c +4 -0
  170. circex-0.1.0/.hypothesis/constants/f43db4e9d14650fd +4 -0
  171. circex-0.1.0/.hypothesis/constants/f5b5af22a7c26607 +4 -0
  172. circex-0.1.0/.hypothesis/constants/f9db11c1525f06c6 +4 -0
  173. circex-0.1.0/.hypothesis/constants/fb67722b08cdcfa6 +4 -0
  174. circex-0.1.0/.hypothesis/constants/fc5da510cca75633 +4 -0
  175. circex-0.1.0/.hypothesis/constants/fc629fe5956ffea7 +4 -0
  176. circex-0.1.0/.hypothesis/constants/fdc6924af4aa473c +4 -0
  177. circex-0.1.0/.hypothesis/constants/fec34daf844b5401 +4 -0
  178. circex-0.1.0/CLAUDE.md +67 -0
  179. circex-0.1.0/Circex.iml +11 -0
  180. circex-0.1.0/GCN_Optical_Extraction_Plan.pdf +0 -0
  181. circex-0.1.0/LICENSE +21 -0
  182. circex-0.1.0/PKG-INFO +828 -0
  183. circex-0.1.0/README.md +776 -0
  184. circex-0.1.0/circex/__init__.py +3 -0
  185. circex-0.1.0/circex/__main__.py +4 -0
  186. circex-0.1.0/circex/bot/__init__.py +23 -0
  187. circex-0.1.0/circex/bot/aggregate.py +185 -0
  188. circex-0.1.0/circex/bot/poster.py +119 -0
  189. circex-0.1.0/circex/bot/skyportal_map.py +257 -0
  190. circex-0.1.0/circex/cache/__init__.py +5 -0
  191. circex-0.1.0/circex/cache/llm.py +153 -0
  192. circex-0.1.0/circex/classify/__init__.py +6 -0
  193. circex-0.1.0/circex/classify/harvest.py +91 -0
  194. circex-0.1.0/circex/classify/sn_type.py +138 -0
  195. circex-0.1.0/circex/cli.py +914 -0
  196. circex-0.1.0/circex/config.py +34 -0
  197. circex-0.1.0/circex/consume/__init__.py +13 -0
  198. circex-0.1.0/circex/consume/processor.py +136 -0
  199. circex-0.1.0/circex/consume/sources.py +57 -0
  200. circex-0.1.0/circex/data/__init__.py +16 -0
  201. circex-0.1.0/circex/data/archive.py +105 -0
  202. circex-0.1.0/circex/data/subset.py +129 -0
  203. circex-0.1.0/circex/data/swift_gold.py +97 -0
  204. circex-0.1.0/circex/data/telescope_aliases.yaml +44 -0
  205. circex-0.1.0/circex/data/telescopes.py +50 -0
  206. circex-0.1.0/circex/data/topics.py +75 -0
  207. circex-0.1.0/circex/db/__init__.py +12 -0
  208. circex-0.1.0/circex/db/connection.py +64 -0
  209. circex-0.1.0/circex/db/indexer.py +202 -0
  210. circex-0.1.0/circex/eval/__init__.py +29 -0
  211. circex-0.1.0/circex/eval/metrics.py +443 -0
  212. circex-0.1.0/circex/eval/plot.py +214 -0
  213. circex-0.1.0/circex/eval/report.py +273 -0
  214. circex-0.1.0/circex/eval/runner.py +65 -0
  215. circex-0.1.0/circex/eval/vidushi_adapter.py +142 -0
  216. circex-0.1.0/circex/extract/__init__.py +0 -0
  217. circex-0.1.0/circex/extract/llm/__init__.py +16 -0
  218. circex-0.1.0/circex/extract/llm/chunker.py +163 -0
  219. circex-0.1.0/circex/extract/llm/claude.py +241 -0
  220. circex-0.1.0/circex/extract/llm/ollama.py +297 -0
  221. circex-0.1.0/circex/extract/llm/prompt.py +269 -0
  222. circex-0.1.0/circex/extract/protocol.py +68 -0
  223. circex-0.1.0/circex/extract/regex/__init__.py +31 -0
  224. circex-0.1.0/circex/extract/regex/classification.py +115 -0
  225. circex-0.1.0/circex/extract/regex/coords.py +99 -0
  226. circex-0.1.0/circex/extract/regex/dates.py +83 -0
  227. circex-0.1.0/circex/extract/regex/extractor.py +188 -0
  228. circex-0.1.0/circex/extract/regex/mag_table.py +529 -0
  229. circex-0.1.0/circex/extract/regex/redshift.py +135 -0
  230. circex-0.1.0/circex/extract/regex/regex_events.py +154 -0
  231. circex-0.1.0/circex/extract/timing.py +171 -0
  232. circex-0.1.0/circex/fetch/__init__.py +5 -0
  233. circex-0.1.0/circex/fetch/gcn_poller.py +75 -0
  234. circex-0.1.0/circex/label.py +95 -0
  235. circex-0.1.0/circex/schema/__init__.py +45 -0
  236. circex-0.1.0/circex/schema/circular_extraction.py +97 -0
  237. circex-0.1.0/circex/schema/classification.py +70 -0
  238. circex-0.1.0/circex/schema/datetime_.py +38 -0
  239. circex-0.1.0/circex/schema/dump.py +89 -0
  240. circex-0.1.0/circex/schema/event.py +28 -0
  241. circex-0.1.0/circex/schema/extraction_meta.py +55 -0
  242. circex-0.1.0/circex/schema/follow_up.py +29 -0
  243. circex-0.1.0/circex/schema/localization.py +56 -0
  244. circex-0.1.0/circex/schema/photometry.py +169 -0
  245. circex-0.1.0/circex/schema/redshift.py +34 -0
  246. circex-0.1.0/circex/schema/reporter.py +41 -0
  247. circex-0.1.0/circex/schema/span.py +30 -0
  248. circex-0.1.0/circex/schema/spectral_lines.py +39 -0
  249. circex-0.1.0/circex/schema/time_offset.py +26 -0
  250. circex-0.1.0/circex/search/__init__.py +17 -0
  251. circex-0.1.0/circex/search/fts.py +162 -0
  252. circex-0.1.0/circex/server/__init__.py +22 -0
  253. circex-0.1.0/circex/server/protocol.py +49 -0
  254. circex-0.1.0/circex/server/registry.py +53 -0
  255. circex-0.1.0/circex/server/store.py +252 -0
  256. circex-0.1.0/circex/server/tools.py +290 -0
  257. circex-0.1.0/circex/server/worker.py +101 -0
  258. circex-0.1.0/circex/taxonomy.py +156 -0
  259. circex-0.1.0/circex/taxonomy_data/LICENSE.timedomain-taxonomy +21 -0
  260. circex-0.1.0/circex/taxonomy_data/README.md +7 -0
  261. circex-0.1.0/circex/taxonomy_data/cataclysmic.yaml +68 -0
  262. circex-0.1.0/circex/taxonomy_data/eclipsing.yaml +47 -0
  263. circex-0.1.0/circex/taxonomy_data/eruptive.yaml +56 -0
  264. circex-0.1.0/circex/taxonomy_data/nonstellar.yaml +29 -0
  265. circex-0.1.0/circex/taxonomy_data/pulsating.yaml +131 -0
  266. circex-0.1.0/circex/taxonomy_data/rotating.yaml +21 -0
  267. circex-0.1.0/circex/taxonomy_data/supernovae.yaml +158 -0
  268. circex-0.1.0/circex/taxonomy_data/top.yaml +22 -0
  269. circex-0.1.0/circex/train/__init__.py +15 -0
  270. circex-0.1.0/circex/train/dataset.py +125 -0
  271. circex-0.1.0/data/labels/flurry_v1/044823.label.json +18 -0
  272. circex-0.1.0/data/labels/flurry_v1/044827.label.json +27 -0
  273. circex-0.1.0/data/labels/flurry_v1/044828.label.json +51 -0
  274. circex-0.1.0/data/labels/flurry_v1/044832.label.json +25 -0
  275. circex-0.1.0/data/labels/flurry_v1/044834.label.json +65 -0
  276. circex-0.1.0/data/labels/flurry_v1/044835.label.json +45 -0
  277. circex-0.1.0/data/labels/flurry_v1/044837.label.json +42 -0
  278. circex-0.1.0/data/labels/flurry_v1/044843.label.json +25 -0
  279. circex-0.1.0/data/labels/flurry_v1/044852.label.json +26 -0
  280. circex-0.1.0/data/labels/flurry_v1/044857.label.json +63 -0
  281. circex-0.1.0/data/labels/flurry_v1/044858.label.json +37 -0
  282. circex-0.1.0/data/labels/flurry_v1/044862.label.json +26 -0
  283. circex-0.1.0/data/labels/flurry_v1/044877.label.json +26 -0
  284. circex-0.1.0/data/labels/flurry_v1/sources/44823.json +1 -0
  285. circex-0.1.0/data/labels/flurry_v1/sources/44827.json +1 -0
  286. circex-0.1.0/data/labels/flurry_v1/sources/44828.json +1 -0
  287. circex-0.1.0/data/labels/flurry_v1/sources/44832.json +1 -0
  288. circex-0.1.0/data/labels/flurry_v1/sources/44834.json +1 -0
  289. circex-0.1.0/data/labels/flurry_v1/sources/44835.json +1 -0
  290. circex-0.1.0/data/labels/flurry_v1/sources/44837.json +1 -0
  291. circex-0.1.0/data/labels/flurry_v1/sources/44843.json +1 -0
  292. circex-0.1.0/data/labels/flurry_v1/sources/44852.json +1 -0
  293. circex-0.1.0/data/labels/flurry_v1/sources/44857.json +1 -0
  294. circex-0.1.0/data/labels/flurry_v1/sources/44858.json +1 -0
  295. circex-0.1.0/data/labels/flurry_v1/sources/44862.json +1 -0
  296. circex-0.1.0/data/labels/flurry_v1/sources/44877.json +1 -0
  297. circex-0.1.0/data/labels/hand_v1/000009.label.json +23 -0
  298. circex-0.1.0/data/labels/hand_v1/000009.source.md +31 -0
  299. circex-0.1.0/data/labels/hand_v1/000014.label.json +23 -0
  300. circex-0.1.0/data/labels/hand_v1/000014.source.md +22 -0
  301. circex-0.1.0/data/labels/hand_v1/000021.label.json +23 -0
  302. circex-0.1.0/data/labels/hand_v1/000021.source.md +30 -0
  303. circex-0.1.0/data/labels/hand_v1/000022.label.json +23 -0
  304. circex-0.1.0/data/labels/hand_v1/000022.source.md +55 -0
  305. circex-0.1.0/data/labels/hand_v1/000120.label.json +23 -0
  306. circex-0.1.0/data/labels/hand_v1/000120.source.md +28 -0
  307. circex-0.1.0/data/labels/hand_v1/000132.label.json +23 -0
  308. circex-0.1.0/data/labels/hand_v1/000132.source.md +33 -0
  309. circex-0.1.0/data/labels/hand_v1/000144.label.json +23 -0
  310. circex-0.1.0/data/labels/hand_v1/000144.source.md +102 -0
  311. circex-0.1.0/data/labels/hand_v1/000207.label.json +23 -0
  312. circex-0.1.0/data/labels/hand_v1/000207.source.md +57 -0
  313. circex-0.1.0/data/labels/hand_v1/000216.label.json +23 -0
  314. circex-0.1.0/data/labels/hand_v1/000216.source.md +59 -0
  315. circex-0.1.0/data/labels/hand_v1/000227.label.json +23 -0
  316. circex-0.1.0/data/labels/hand_v1/000227.source.md +40 -0
  317. circex-0.1.0/data/labels/hand_v1/000394.label.json +23 -0
  318. circex-0.1.0/data/labels/hand_v1/000394.source.md +46 -0
  319. circex-0.1.0/data/labels/hand_v1/000402.label.json +23 -0
  320. circex-0.1.0/data/labels/hand_v1/000402.source.md +37 -0
  321. circex-0.1.0/data/labels/hand_v1/000413.label.json +23 -0
  322. circex-0.1.0/data/labels/hand_v1/000413.source.md +50 -0
  323. circex-0.1.0/data/labels/hand_v1/000447.label.json +23 -0
  324. circex-0.1.0/data/labels/hand_v1/000447.source.md +54 -0
  325. circex-0.1.0/data/labels/hand_v1/000481.label.json +23 -0
  326. circex-0.1.0/data/labels/hand_v1/000481.source.md +39 -0
  327. circex-0.1.0/data/labels/hand_v1/000545.label.json +23 -0
  328. circex-0.1.0/data/labels/hand_v1/000545.source.md +27 -0
  329. circex-0.1.0/data/labels/hand_v1/000605.label.json +23 -0
  330. circex-0.1.0/data/labels/hand_v1/000605.source.md +45 -0
  331. circex-0.1.0/data/labels/hand_v1/000698.label.json +23 -0
  332. circex-0.1.0/data/labels/hand_v1/000698.source.md +46 -0
  333. circex-0.1.0/data/labels/hand_v1/000850.label.json +23 -0
  334. circex-0.1.0/data/labels/hand_v1/000850.source.md +82 -0
  335. circex-0.1.0/data/labels/hand_v1/000886.label.json +23 -0
  336. circex-0.1.0/data/labels/hand_v1/000886.source.md +112 -0
  337. circex-0.1.0/data/labels/hand_v1/000887.label.json +23 -0
  338. circex-0.1.0/data/labels/hand_v1/000887.source.md +58 -0
  339. circex-0.1.0/data/labels/hand_v1/000955.label.json +23 -0
  340. circex-0.1.0/data/labels/hand_v1/000955.source.md +51 -0
  341. circex-0.1.0/data/labels/hand_v1/001108.label.json +23 -0
  342. circex-0.1.0/data/labels/hand_v1/001108.source.md +38 -0
  343. circex-0.1.0/data/labels/hand_v1/001200.label.json +23 -0
  344. circex-0.1.0/data/labels/hand_v1/001200.source.md +19 -0
  345. circex-0.1.0/data/labels/hand_v1/001274.label.json +23 -0
  346. circex-0.1.0/data/labels/hand_v1/001274.source.md +77 -0
  347. circex-0.1.0/data/labels/hand_v1/001385.label.json +23 -0
  348. circex-0.1.0/data/labels/hand_v1/001385.source.md +75 -0
  349. circex-0.1.0/data/labels/hand_v1/001620.label.json +23 -0
  350. circex-0.1.0/data/labels/hand_v1/001620.source.md +40 -0
  351. circex-0.1.0/data/labels/hand_v1/002469.label.json +23 -0
  352. circex-0.1.0/data/labels/hand_v1/002469.source.md +61 -0
  353. circex-0.1.0/data/labels/hand_v1/002627.label.json +23 -0
  354. circex-0.1.0/data/labels/hand_v1/002627.source.md +20 -0
  355. circex-0.1.0/data/labels/hand_v1/003205.label.json +23 -0
  356. circex-0.1.0/data/labels/hand_v1/003205.source.md +28 -0
  357. circex-0.1.0/data/labels/hand_v1/003393.label.json +23 -0
  358. circex-0.1.0/data/labels/hand_v1/003393.source.md +34 -0
  359. circex-0.1.0/data/labels/hand_v1/003758.label.json +23 -0
  360. circex-0.1.0/data/labels/hand_v1/003758.source.md +24 -0
  361. circex-0.1.0/data/labels/hand_v1/003923.label.json +23 -0
  362. circex-0.1.0/data/labels/hand_v1/003923.source.md +50 -0
  363. circex-0.1.0/data/labels/hand_v1/004353.label.json +23 -0
  364. circex-0.1.0/data/labels/hand_v1/004353.source.md +86 -0
  365. circex-0.1.0/data/labels/hand_v1/004529.label.json +23 -0
  366. circex-0.1.0/data/labels/hand_v1/004529.source.md +41 -0
  367. circex-0.1.0/data/labels/hand_v1/004774.label.json +23 -0
  368. circex-0.1.0/data/labels/hand_v1/004774.source.md +33 -0
  369. circex-0.1.0/data/labels/hand_v1/005050.label.json +23 -0
  370. circex-0.1.0/data/labels/hand_v1/005050.source.md +33 -0
  371. circex-0.1.0/data/labels/hand_v1/005116.label.json +23 -0
  372. circex-0.1.0/data/labels/hand_v1/005116.source.md +52 -0
  373. circex-0.1.0/data/labels/hand_v1/005356.label.json +23 -0
  374. circex-0.1.0/data/labels/hand_v1/005356.source.md +29 -0
  375. circex-0.1.0/data/labels/hand_v1/005674.label.json +23 -0
  376. circex-0.1.0/data/labels/hand_v1/005674.source.md +26 -0
  377. circex-0.1.0/data/labels/hand_v1/006633.label.json +23 -0
  378. circex-0.1.0/data/labels/hand_v1/006633.source.md +37 -0
  379. circex-0.1.0/data/labels/hand_v1/020121.label.json +23 -0
  380. circex-0.1.0/data/labels/hand_v1/020121.source.md +63 -0
  381. circex-0.1.0/data/labels/hand_v1/021875.label.json +23 -0
  382. circex-0.1.0/data/labels/hand_v1/021875.source.md +43 -0
  383. circex-0.1.0/data/labels/hand_v1/024167.label.json +23 -0
  384. circex-0.1.0/data/labels/hand_v1/024167.source.md +58 -0
  385. circex-0.1.0/data/labels/hand_v1/024204.label.json +23 -0
  386. circex-0.1.0/data/labels/hand_v1/024204.source.md +34 -0
  387. circex-0.1.0/data/labels/hand_v1/024210.label.json +23 -0
  388. circex-0.1.0/data/labels/hand_v1/024210.source.md +65 -0
  389. circex-0.1.0/data/labels/hand_v1/024211.label.json +23 -0
  390. circex-0.1.0/data/labels/hand_v1/024211.source.md +17 -0
  391. circex-0.1.0/data/labels/hand_v1/024215.label.json +23 -0
  392. circex-0.1.0/data/labels/hand_v1/024215.source.md +15 -0
  393. circex-0.1.0/data/labels/hand_v1/024243.label.json +23 -0
  394. circex-0.1.0/data/labels/hand_v1/024243.source.md +30 -0
  395. circex-0.1.0/data/labels/hand_v1/024247.label.json +23 -0
  396. circex-0.1.0/data/labels/hand_v1/024247.source.md +41 -0
  397. circex-0.1.0/data/labels/spec_v1/007221.label.json +25 -0
  398. circex-0.1.0/data/labels/spec_v1/010031.label.json +19 -0
  399. circex-0.1.0/data/labels/spec_v1/010038.label.json +19 -0
  400. circex-0.1.0/data/labels/spec_v1/010049.label.json +18 -0
  401. circex-0.1.0/data/labels/spec_v1/010054.label.json +18 -0
  402. circex-0.1.0/data/labels/spec_v1/010065.label.json +18 -0
  403. circex-0.1.0/data/labels/spec_v1/010158.label.json +18 -0
  404. circex-0.1.0/data/labels/spec_v1/010177.label.json +18 -0
  405. circex-0.1.0/data/labels/spec_v1/010202.label.json +18 -0
  406. circex-0.1.0/data/labels/spec_v1/010263.label.json +18 -0
  407. circex-0.1.0/data/labels/spec_v1/010272.label.json +19 -0
  408. circex-0.1.0/data/labels/spec_v1/010350.label.json +19 -0
  409. circex-0.1.0/data/labels/spec_v1/010389.label.json +19 -0
  410. circex-0.1.0/data/labels/spec_v1/010543.label.json +25 -0
  411. circex-0.1.0/data/labels/spec_v1/011881.label.json +23 -0
  412. circex-0.1.0/data/labels/spec_v1/012802.label.json +25 -0
  413. circex-0.1.0/data/labels/spec_v1/013069.label.json +29 -0
  414. circex-0.1.0/data/labels/spec_v1/013281.label.json +29 -0
  415. circex-0.1.0/data/labels/spec_v1/015253.label.json +27 -0
  416. circex-0.1.0/data/labels/spec_v1/017079.label.json +25 -0
  417. circex-0.1.0/data/labels/spec_v1/017415.label.json +25 -0
  418. circex-0.1.0/data/labels/spec_v1/018118.label.json +29 -0
  419. circex-0.1.0/data/labels/spec_v1/018359.label.json +25 -0
  420. circex-0.1.0/data/labels/spec_v1/018370.label.json +29 -0
  421. circex-0.1.0/data/labels/spec_v1/018372.label.json +30 -0
  422. circex-0.1.0/data/labels/spec_v1/018536.label.json +29 -0
  423. circex-0.1.0/data/labels/spec_v1/018553.label.json +29 -0
  424. circex-0.1.0/data/labels/spec_v1/018847.label.json +29 -0
  425. circex-0.1.0/data/labels/spec_v1/020459.label.json +18 -0
  426. circex-0.1.0/data/labels/spec_v1/020747.label.json +29 -0
  427. circex-0.1.0/data/labels/spec_v1/025483.label.json +29 -0
  428. circex-0.1.0/data/labels/spec_v1/028301.label.json +18 -0
  429. circex-0.1.0/data/labels/spec_v1/029711.label.json +16 -0
  430. circex-0.1.0/data/labels/spec_v1/033609.label.json +16 -0
  431. circex-0.1.0/data/labels/spec_v1/038987.label.json +25 -0
  432. circex-0.1.0/data/labels/spec_v1/039229.label.json +29 -0
  433. circex-0.1.0/data/labels/spec_v1/040301.label.json +19 -0
  434. circex-0.1.0/data/labels/spec_v1/040328.label.json +19 -0
  435. circex-0.1.0/data/labels/spec_v1/040480.label.json +29 -0
  436. circex-0.1.0/data/labels/spec_v1/sources/10031.json +10 -0
  437. circex-0.1.0/data/labels/spec_v1/sources/10038.json +10 -0
  438. circex-0.1.0/data/labels/spec_v1/sources/10049.json +10 -0
  439. circex-0.1.0/data/labels/spec_v1/sources/10054.json +10 -0
  440. circex-0.1.0/data/labels/spec_v1/sources/10065.json +10 -0
  441. circex-0.1.0/data/labels/spec_v1/sources/10158.json +10 -0
  442. circex-0.1.0/data/labels/spec_v1/sources/10177.json +10 -0
  443. circex-0.1.0/data/labels/spec_v1/sources/10202.json +10 -0
  444. circex-0.1.0/data/labels/spec_v1/sources/10263.json +10 -0
  445. circex-0.1.0/data/labels/spec_v1/sources/10272.json +10 -0
  446. circex-0.1.0/data/labels/spec_v1/sources/10350.json +10 -0
  447. circex-0.1.0/data/labels/spec_v1/sources/10389.json +10 -0
  448. circex-0.1.0/data/labels/spec_v1/sources/10543.json +10 -0
  449. circex-0.1.0/data/labels/spec_v1/sources/11881.json +10 -0
  450. circex-0.1.0/data/labels/spec_v1/sources/12802.json +10 -0
  451. circex-0.1.0/data/labels/spec_v1/sources/13069.json +10 -0
  452. circex-0.1.0/data/labels/spec_v1/sources/13281.json +10 -0
  453. circex-0.1.0/data/labels/spec_v1/sources/15253.json +10 -0
  454. circex-0.1.0/data/labels/spec_v1/sources/17079.json +10 -0
  455. circex-0.1.0/data/labels/spec_v1/sources/17415.json +10 -0
  456. circex-0.1.0/data/labels/spec_v1/sources/18118.json +9 -0
  457. circex-0.1.0/data/labels/spec_v1/sources/18359.json +10 -0
  458. circex-0.1.0/data/labels/spec_v1/sources/18370.json +10 -0
  459. circex-0.1.0/data/labels/spec_v1/sources/18372.json +10 -0
  460. circex-0.1.0/data/labels/spec_v1/sources/18536.json +10 -0
  461. circex-0.1.0/data/labels/spec_v1/sources/18553.json +9 -0
  462. circex-0.1.0/data/labels/spec_v1/sources/18847.json +9 -0
  463. circex-0.1.0/data/labels/spec_v1/sources/20459.json +10 -0
  464. circex-0.1.0/data/labels/spec_v1/sources/20747.json +10 -0
  465. circex-0.1.0/data/labels/spec_v1/sources/25483.json +10 -0
  466. circex-0.1.0/data/labels/spec_v1/sources/28301.json +10 -0
  467. circex-0.1.0/data/labels/spec_v1/sources/29711.json +10 -0
  468. circex-0.1.0/data/labels/spec_v1/sources/33609.json +10 -0
  469. circex-0.1.0/data/labels/spec_v1/sources/38987.json +11 -0
  470. circex-0.1.0/data/labels/spec_v1/sources/39229.json +10 -0
  471. circex-0.1.0/data/labels/spec_v1/sources/40301.json +11 -0
  472. circex-0.1.0/data/labels/spec_v1/sources/40328.json +10 -0
  473. circex-0.1.0/data/labels/spec_v1/sources/40480.json +13 -0
  474. circex-0.1.0/data/labels/spec_v1/sources/7221.json +9 -0
  475. circex-0.1.0/data/subsets/optical_iter_v1.json +1986 -0
  476. circex-0.1.0/demo/cli_client.py +157 -0
  477. circex-0.1.0/demo/web/index.html +299 -0
  478. circex-0.1.0/demo/web/serve.py +159 -0
  479. circex-0.1.0/docs/WRITEUP.md +642 -0
  480. circex-0.1.0/docs/consistency_passes_runbook.md +95 -0
  481. circex-0.1.0/docs/design_consumer.md +55 -0
  482. circex-0.1.0/docs/design_obs_mjd.md +148 -0
  483. circex-0.1.0/docs/design_skyportal_bot.md +87 -0
  484. circex-0.1.0/docs/examples/README.md +81 -0
  485. circex-0.1.0/docs/examples/complete.regex.json +135 -0
  486. circex-0.1.0/docs/examples/grb260604c_44877.annotated.json +62 -0
  487. circex-0.1.0/docs/examples/grb260604c_44877.ollama.json +56 -0
  488. circex-0.1.0/docs/examples/grb260604c_44877.regex.json +88 -0
  489. circex-0.1.0/docs/finetune_readiness.md +163 -0
  490. circex-0.1.0/docs/fixtures/grb260604c_44823.json +6 -0
  491. circex-0.1.0/docs/fixtures/grb260604c_44827.json +6 -0
  492. circex-0.1.0/docs/fixtures/grb260604c_44834.json +6 -0
  493. circex-0.1.0/docs/fixtures/grb260604c_44877.json +1 -0
  494. circex-0.1.0/docs/flurry_test_grb260604c.md +182 -0
  495. circex-0.1.0/docs/images/eval_example_regex_vs_vidushi.png +0 -0
  496. circex-0.1.0/docs/known_issues.md +400 -0
  497. circex-0.1.0/docs/labeling_spec.md +208 -0
  498. circex-0.1.0/docs/prompt_deltas.md +114 -0
  499. circex-0.1.0/docs/references.bib +341 -0
  500. circex-0.1.0/docs/slides_outline.md +171 -0
  501. circex-0.1.0/docs/upstream_licenses.md +14 -0
  502. circex-0.1.0/leanmcp_bridge/.gitignore +4 -0
  503. circex-0.1.0/leanmcp_bridge/README.md +132 -0
  504. circex-0.1.0/leanmcp_bridge/bridge/python_bridge.ts +138 -0
  505. circex-0.1.0/leanmcp_bridge/main.ts +59 -0
  506. circex-0.1.0/leanmcp_bridge/mcp/gcn/index.ts +162 -0
  507. circex-0.1.0/leanmcp_bridge/mcp/gcn/input_schema.ts +164 -0
  508. circex-0.1.0/leanmcp_bridge/package-lock.json +7287 -0
  509. circex-0.1.0/leanmcp_bridge/package.json +32 -0
  510. circex-0.1.0/leanmcp_bridge/tsconfig.json +25 -0
  511. circex-0.1.0/pyproject.toml +112 -0
  512. circex-0.1.0/schemas/Classification.schema.json +62 -0
  513. circex-0.1.0/schemas/Photometry.schema.json +257 -0
  514. circex-0.1.0/schemas/SpectralLines.schema.json +61 -0
  515. circex-0.1.0/schemas/VERSION +1 -0
  516. circex-0.1.0/tests/__init__.py +0 -0
  517. circex-0.1.0/tests/bot/__init__.py +0 -0
  518. circex-0.1.0/tests/bot/test_aggregate.py +96 -0
  519. circex-0.1.0/tests/bot/test_skyportal_map.py +289 -0
  520. circex-0.1.0/tests/classify/__init__.py +0 -0
  521. circex-0.1.0/tests/classify/test_sn_type.py +51 -0
  522. circex-0.1.0/tests/consume/__init__.py +0 -0
  523. circex-0.1.0/tests/consume/test_consumer.py +78 -0
  524. circex-0.1.0/tests/data/__init__.py +0 -0
  525. circex-0.1.0/tests/data/test_subset.py +74 -0
  526. circex-0.1.0/tests/data/test_swift_gold.py +36 -0
  527. circex-0.1.0/tests/data/test_topics.py +41 -0
  528. circex-0.1.0/tests/eval/__init__.py +0 -0
  529. circex-0.1.0/tests/eval/test_metrics.py +229 -0
  530. circex-0.1.0/tests/eval/test_plot.py +57 -0
  531. circex-0.1.0/tests/eval/test_report.py +76 -0
  532. circex-0.1.0/tests/eval/test_runner.py +58 -0
  533. circex-0.1.0/tests/eval/test_vidushi_adapter.py +86 -0
  534. circex-0.1.0/tests/extract/__init__.py +0 -0
  535. circex-0.1.0/tests/extract/llm/__init__.py +0 -0
  536. circex-0.1.0/tests/extract/llm/test_chunker.py +187 -0
  537. circex-0.1.0/tests/extract/llm/test_claude.py +116 -0
  538. circex-0.1.0/tests/extract/llm/test_ollama.py +95 -0
  539. circex-0.1.0/tests/extract/llm/test_prompt.py +59 -0
  540. circex-0.1.0/tests/extract/regex/__init__.py +0 -0
  541. circex-0.1.0/tests/extract/regex/test_classification.py +88 -0
  542. circex-0.1.0/tests/extract/regex/test_coords.py +90 -0
  543. circex-0.1.0/tests/extract/regex/test_dates.py +42 -0
  544. circex-0.1.0/tests/extract/regex/test_events_extended.py +78 -0
  545. circex-0.1.0/tests/extract/regex/test_extractor.py +131 -0
  546. circex-0.1.0/tests/extract/regex/test_mag_table.py +304 -0
  547. circex-0.1.0/tests/extract/regex/test_redshift.py +129 -0
  548. circex-0.1.0/tests/extract/regex/test_spans.py +213 -0
  549. circex-0.1.0/tests/extract/test_timing.py +225 -0
  550. circex-0.1.0/tests/schema/__init__.py +0 -0
  551. circex-0.1.0/tests/schema/test_dump.py +68 -0
  552. circex-0.1.0/tests/schema/test_models.py +237 -0
  553. circex-0.1.0/tests/server/__init__.py +0 -0
  554. circex-0.1.0/tests/server/test_protocol_registry.py +51 -0
  555. circex-0.1.0/tests/server/test_store.py +182 -0
  556. circex-0.1.0/tests/server/test_tools.py +337 -0
  557. circex-0.1.0/tests/server/test_worker.py +97 -0
  558. circex-0.1.0/tests/test_cache.py +65 -0
  559. circex-0.1.0/tests/test_cli.py +71 -0
  560. circex-0.1.0/tests/test_db.py +186 -0
  561. circex-0.1.0/tests/test_indexer.py +221 -0
  562. circex-0.1.0/tests/test_label.py +83 -0
  563. circex-0.1.0/tests/test_regex_events.py +197 -0
  564. circex-0.1.0/tests/test_taxonomy.py +78 -0
  565. circex-0.1.0/tests/test_telescopes.py +43 -0
  566. circex-0.1.0/tests/train/__init__.py +0 -0
  567. circex-0.1.0/tests/train/test_dataset.py +103 -0
  568. circex-0.1.0/tests/web/__init__.py +0 -0
  569. circex-0.1.0/tests/web/test_bridge.py +160 -0
@@ -0,0 +1,6 @@
1
+ # Copy to .env (gitignored) and fill in.
2
+ ANTHROPIC_API_KEY=
3
+ OLLAMA_HOST=http://localhost:11434
4
+ CIRCEX_DATA_DIR=./data
5
+ CIRCEX_DB_PATH=./data/circex.sqlite
6
+ CIRCEX_MAX_USD_PER_RUN=10.00
@@ -0,0 +1,97 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ os: [ubuntu-latest, windows-latest]
14
+ python: ["3.13"]
15
+ runs-on: ${{ matrix.os }}
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python }}
23
+
24
+ # circex.taxonomy reads YAML files directly from this clone (see README:
25
+ # "Why is tdtax an optional extra"). Five test files + the regex
26
+ # classification matcher depend on this being present.
27
+ - name: Fetch timedomain-taxonomy
28
+ run: git clone --depth 1 https://github.com/skyportal/timedomain-taxonomy references/timedomain-taxonomy
29
+
30
+ - name: Install dependencies
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ pip install -e ".[dev]"
34
+
35
+ - name: Ruff lint
36
+ run: ruff check .
37
+
38
+ - name: Mypy
39
+ run: mypy circex
40
+
41
+ - name: Pytest
42
+ run: pytest --cov=circex --cov-report=term-missing
43
+
44
+ # The JSON Schema artifacts in schemas/ are generated from the Pydantic
45
+ # models. If a model changes without re-running `circex schema-dump`, the
46
+ # committed artifacts go stale silently — and downstream consumers (ICARE,
47
+ # the upstream gcn-schema PR) pin to them. Re-dump and fail on any diff.
48
+ - name: Schema artifacts up to date
49
+ shell: bash
50
+ run: |
51
+ circex schema-dump --out schemas/
52
+ git diff --exit-code -- schemas/ \
53
+ || (echo "::error::schemas/ is out of date — run 'circex schema-dump --out schemas/' and commit" && exit 1)
54
+
55
+ # Downstream consumers pin to the schema version. Any change to a schema
56
+ # artifact must be accompanied by a SCHEMA_VERSION bump (schemas/VERSION),
57
+ # so a consumer comparing versions can detect that the contract changed.
58
+ - name: Schema version bumped on change
59
+ if: runner.os == 'Linux'
60
+ shell: bash
61
+ run: |
62
+ BASE="${{ github.event.pull_request.base.sha || github.event.before }}"
63
+ if [ -z "$BASE" ] || [ "$BASE" = "0000000000000000000000000000000000000000" ]; then
64
+ echo "no base ref (new branch / first push) — skipping version-bump check"
65
+ exit 0
66
+ fi
67
+ git fetch --depth=1 origin "$BASE" 2>/dev/null || true
68
+ if git diff --quiet "$BASE" HEAD -- 'schemas/*.schema.json'; then
69
+ echo "no schema-artifact changes — version bump not required"
70
+ exit 0
71
+ fi
72
+ if git diff --quiet "$BASE" HEAD -- 'schemas/VERSION'; then
73
+ echo "::error::schemas/*.schema.json changed but schemas/VERSION did not — bump SCHEMA_VERSION in circex/schema/dump.py and re-dump"
74
+ exit 1
75
+ fi
76
+ echo "schema artifacts changed and VERSION was bumped — OK"
77
+
78
+ bridge:
79
+ # Typecheck the TypeScript LeanMCP bridge so a tool added on the Python side
80
+ # but not mirrored here (or a schema/decorator mistake) fails CI.
81
+ runs-on: ubuntu-latest
82
+ defaults:
83
+ run:
84
+ working-directory: leanmcp_bridge
85
+ steps:
86
+ - uses: actions/checkout@v4
87
+
88
+ - name: Set up Node
89
+ uses: actions/setup-node@v4
90
+ with:
91
+ node-version: "20"
92
+
93
+ - name: Install bridge dependencies
94
+ run: npm ci || npm install
95
+
96
+ - name: Typecheck bridge
97
+ run: npx tsc --noEmit
@@ -0,0 +1,59 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+
10
+ # Virtual envs
11
+ .venv/
12
+ venv/
13
+ env/
14
+
15
+ # Tool caches
16
+ .pytest_cache/
17
+ .ruff_cache/
18
+ .mypy_cache/
19
+ .coverage
20
+ .coverage.*
21
+ htmlcov/
22
+ coverage.xml
23
+
24
+ # IDE
25
+ .idea/
26
+ .vscode/
27
+ *.swp
28
+
29
+ # OS
30
+ .DS_Store
31
+ Thumbs.db
32
+
33
+ # Environment / secrets
34
+ .env
35
+ .env.local
36
+
37
+ # Local data — exclude specific subdirs that are large or runtime-generated.
38
+ # Keep data/labels/ and data/subsets/ tracked (small, reproducible artifacts).
39
+ /data/archive_*/
40
+ /data/cache/
41
+ /data/db/
42
+ /cache/
43
+ *.sqlite
44
+ *.sqlite-*
45
+ *.db
46
+
47
+ # Reference repos (cloned shallow; not part of this project)
48
+ references/
49
+
50
+ # Build / runtime artifacts (reports + extraction outputs).
51
+ # schemas/ is intentionally tracked — it's the upstream-PR deliverable.
52
+ reports/
53
+ runs/
54
+
55
+ # Node (Sprint 5 leanmcp_bridge)
56
+ node_modules/
57
+ *.tsbuildinfo
58
+ /data/models/
59
+ /data/finetune*/
@@ -0,0 +1,9 @@
1
+ # This .gitignore file was automatically created by Hypothesis. Hypothesis gitignores
2
+ # .hypothesis by default, because we generally recommend that .hypothesis not be checked
3
+ # into version control.
4
+ #
5
+ # If you *would* like to check .hypothesis into version control, you should delete this
6
+ # file. Hypothesis will not re-create this .gitignore unless .hypothesis is deleted (and
7
+ # if it does, that's a bug - please report it!)
8
+
9
+ *
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/mag_table.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [5.0, 10.0, '2massh', '2massj', '2massks', ':', 'AB', 'B', 'C', 'H', 'I', 'J', 'K', 'Ks', 'R', 'U', 'UBVRI', 'V', 'Vega', '\\d', '\\s{2,}|\\t', 'band', 'bessellb', 'besselli', 'bessellr', 'bessellu', 'bessellv', 'c', 'clear', 'date', 'epoch', 'err', 'error', 'exp', 'exposure', 'exptime', 'filter', 'g', 'i', 'limit', 'mag', 'mag_error', 'magerr', 'magnitude', 'merr', 'mjd', "p'", 'ps1::y', 'r', 'sdssg', 'sdssi', 'sdssr', 'sdssu', 'sdssz', 'sigma', 'u', 'ugriz', 'y', 'z']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/timing.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1.0, 60.0, 3600.0, 40000.0, 86400.0, 90000.0, '+00:00', 'Z', 'd', 'h', 'm', 'mjd', 's']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/consume/processor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.02, 'circularId', 'nothing-postable', 'posted']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/bot/poster.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [30.0, '/', '/photometry', '/sources', 'Authorization', 'Content-Type', 'PATCH', 'POST', 'application/json', 'method', 'path', 'payload', 'redshift', 'redshift_error', 'skyportal_dryrun', 'skyportal_posted', 'text']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/eval/vidushi_adapter.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['absorption', 'emission', 'gold', 'host', 'host galaxy', 'predicted', 'swift-gold', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.0, 10.0, 100, 500, 5000, 8765, '(no actions)', '*.json', '*.label.json', ',', '--archive', '--cache-db', '--circular-id', '--circular-ids', '--circulars', '--circulars-dir', '--db', '--event-name', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max', '--max-circulars', '--max-cost', '--max-hops', '--max-optical', '--none-ratio', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--source', '--store', '--token', '--trigger-time', '--url', '--val-every', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'classify-train', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/finetune', 'data/labels/hand_v1', 'data/labels/spec_v1', 'eval', 'eventId', 'label-validate', 'model output path', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'sources', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/timing.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1.0, 60.0, 3600.0, 40000.0, 86400.0, 90000.0, '+00:00', 'Z', 'd', 'h', 'm', 'mjd', 's']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/config.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, './data', './data/circex.sqlite', '.env', 'ANTHROPIC_API_KEY', 'CIRCEX_DATA_DIR', 'CIRCEX_DB_PATH', 'CIRCEX_TAXONOMY_DIR', 'OLLAMA_HOST', 'ignore', 'taxonomy_data', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/data/__init__.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['iter_circulars', 'load_optical_ids', 'load_subset', 'load_topic_labels', 'untar_archive']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/redshift.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [200, '\\babsorption\\s+line', '\\bemission\\s+line', 'absorption', 'emission', 'host', 'photometric', 'spectroscopic']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, 100, 500, 5000, 8765, '(no actions)', '*.json', '*.label.json', ',', '--cache-db', '--circular-id', '--circular-ids', '--circulars', '--circulars-dir', '--db', '--event-name', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max-circulars', '--max-cost', '--max-hops', '--max-optical', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--store', '--token', '--trigger-time', '--url', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/labels/hand_v1', 'eval', 'eventId', 'label-validate', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/classification.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [')\\b', '\\b(?:', '|']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/classify/sn_type.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1.0, 'NONE', '[a-z0-9][a-z0-9-]+', 'class_log_prior', 'classes', 'default_log_prob', 'feature_log_prob', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/redshift.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [200, '\\babsorption\\s+line', '\\bemission\\s+line', 'absorption', 'emission', 'host', 'photometric', 'spectroscopic']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/bot/__init__.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['PhotometryPoint', 'SkyPortalActions', 'SourceUpsert', 'aggregate_event', 'gather_by_xref', 'to_actions']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/extractor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, ',', 'body', 'eventId', 'gcn_circulars', 'regex-v1', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, 100, 500, 5000, 8765, '*.label.json', ',', '--cache-db', '--circulars', '--db', '--extractor', '--extractors', '--gold', '--host', '--max-circulars', '--max-cost', '--max-optical', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--store', '.', '.json', '127.0.0.1', '__main__', 'all', 'circex', 'circularId', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/labels/hand_v1', 'eval', 'label-validate', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/eval/runner.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.0, '?', 'cost_cap_hit', 'extractor_failed', 'extractor_id']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/prompt.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.001, 0.05, 0.07, 0.215, 1.1, 1.3, 3.0, 19.5, 20.42, 20.55, 21.1, 450.0, 136, 141, 186, 195, 200, 205, '0.001', '2026-06-04', '21505,21509,21512', 'AB', 'ALFOSC', 'AT2017gfo', 'AT2024xyz', 'GOTO', 'GRB 240101A', 'GRB 240505B', 'GW', 'GW170817', 'Ic-BL', 'LVK', 'NOT', 'PS1', 'T+', 'airmass', 'array', 'assistant', 'circular_id', 'classification', 'clear', 'content', 'description', 'end', 'event', 'event_name', 'extraction_meta', 'filter', 'follow_up', 'g', 'gcn_circulars', 'host', 'instrument', 'items', 'limiting_mag', 'limiting_mag_sigma', 'mag', 'mag_error', 'mag_system', 'notes', 'object', 'photometry', 'properties', 'provenance', 'r', 'redshift', 'redshift.redshift', 'redshift_error', 'redshift_measure', 'redshift_type', 'ref_ID', 'ref_instrument', 'ref_type', 'reference', 'required', 'role', 's', 'seeing', 'snippet', 'spectroscopic', 'start', 'string', 'telescope', 'time_offsets', 'type', 'unit', 'user', 'value', 'z = 0.215']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, 100, 500, 5000, 8765, '(no actions)', '*.json', '*.label.json', ',', '--cache-db', '--circular-id', '--circulars', '--circulars-dir', '--db', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max-circulars', '--max-cost', '--max-optical', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--store', '--token', '--trigger-time', '--url', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/labels/hand_v1', 'eval', 'eventId', 'label-validate', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/bot/aggregate.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['body', 'circularId', 'eventId', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/train/dataset.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['*.label.json', ',', ':', 'assistant', 'circular_id', 'content', 'extraction_meta', 'json', 'messages', 'provenance', 'role', 'text', 'train.jsonl', 'user', 'utf-8', 'val.jsonl', 'w']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/mag_table.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [5.0, 10.0, '2massh', '2massj', '2massks', ':', 'AB', 'B', 'C', 'H', 'I', 'J', 'K', 'Ks', 'R', 'U', 'UBVRI', 'V', 'Vega', '\\d', '\\s{2,}|\\t', 'band', 'bessellb', 'besselli', 'bessellr', 'bessellu', 'bessellv', 'c', 'clear', 'date', 'epoch', 'err', 'error', 'exp', 'exposure', 'exptime', 'filter', 'g', 'i', 'limit', 'mag', 'mag_error', 'magerr', 'magnitude', 'merr', 'mjd', "p'", 'ps1::y', 'r', 'sdssg', 'sdssi', 'sdssr', 'sdssu', 'sdssz', 'sigma', 'u', 'ugriz', 'y', 'z']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/prompt.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.001, 0.05, 0.07, 0.215, 1.1, 1.3, 3.0, 19.5, 20.42, 20.55, 21.1, 450.0, 136, 141, 186, 195, 200, 205, '0.001', '2026-06-04', '21505,21509,21512', 'AB', 'ALFOSC', 'AT2017gfo', 'AT2024xyz', 'GOTO', 'GRB 240101A', 'GRB 240505B', 'GW', 'GW170817', 'Ic-BL', 'LVK', 'NOT', 'PS1', 'T+', 'airmass', 'array', 'assistant', 'bandpass', 'circular_id', 'classification', 'clear', 'content', 'description', 'end', 'event', 'event_name', 'extraction_meta', 'filter', 'follow_up', 'g', 'gcn_circulars', 'host', 'instrument', 'items', 'limiting_mag', 'limiting_mag_sigma', 'mag', 'mag_error', 'mag_system', 'notes', 'object', 'photometry', 'properties', 'provenance', 'r', 'redshift', 'redshift.redshift', 'redshift_error', 'redshift_measure', 'redshift_type', 'ref_ID', 'ref_instrument', 'ref_type', 'reference', 'required', 'role', 's', 'sdssg', 'sdssr', 'seeing', 'snippet', 'spectroscopic', 'start', 'string', 'telescope', 'time_offsets', 'type', 'unit', 'user', 'value', 'z = 0.215']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/schema/photometry.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['2MASS', 'AB', 'APASS', 'Gaia', 'Other', 'PS1', 'SDSS', 'STMag', 'Vega']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/data/swift_gold.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['-', 'Actual GRB Number', 'Actual Redshift', 'Actual Redshift Type', 'Circular Date', 'Circular Number', 'Predicted GRB Number', 'Predicted Redshift', 'Text', 'n/a', 'na', 'nan', 'no information', 'none', 'null', 'r', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/schema/extraction_meta.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/chunker.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1500, 20000, 30000, 'circular_id', 'classification', 'datetime', 'event', 'extraction_meta', 'follow_up', 'localization', 'notes', 'photometry', 'provenance', 'redshift', 'reporter', 'spectroscopy', 'time_offsets']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/regex_events.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['\x00', '\\b(EP\\s?\\d+[A-Z]?)\\b', '\\b(PS\\d{2}[a-z]+)\\b', '\\b(ZTF\\d{2}[a-z]+)\\b', '\\s+', 'body', 'eventId', 'none', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/protocol.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['1.0', 'arguments', 'error', 'id', "missing 'tool' field", 'ok', 'result', 'tool']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/tools.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['__none__', 'body', 'circular_id', 'circular_ids', 'event', 'event_id', 'extract_properties', 'extract_text', 'extractor_id', 'fetch_gcn_circulars', 'find_counterparts', 'get_classification', 'get_photometry', 'get_redshift', 'gw_event_id', 'json', 'limit', 'model_id', 'prompt_version', 'query', 'search_gcn_circulars', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/bot/skyportal_map.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['(?i)^(AT|SN)\\s?\\d', 'AB', 'STMag', 'Vega', '\\s+', 'ab', 'altdata', 'circex_circular_id', 'dec', 'filter', 'group_ids', 'id', 'instrument_fallback', 'instrument_id', 'limiting_mag', 'mag', 'magerr', 'magsys', 'mjd', 'note', 'obj_id', 'ra', 'redshift', 'telescope_as_written', 'vega']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/classify/harvest.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [200, '*.json', 'II-norm', 'Ia', 'Ib', 'Ic', 'circularId', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/extractor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, ',', '_redshift_bound', 'body', 'classification', 'event', 'eventId', 'follow_up', 'gcn_circulars', 'localization', 'redshift', 'regex-v1', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.0, 10.0, 100, 500, 5000, 8765, '(no actions)', '*.json', '*.label.json', ',', '--archive', '--cache-db', '--circular-id', '--circular-ids', '--circulars', '--circulars-dir', '--db', '--event-name', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max', '--max-circulars', '--max-cost', '--max-hops', '--max-optical', '--none-ratio', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--source', '--store', '--token', '--trigger-time', '--url', '--val-every', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'classify-train', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/finetune', 'data/labels/hand_v1', 'data/labels/spec_v1', 'eval', 'eventId', 'label-validate', 'model output path', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'sources', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/classification.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [')\\b', '-', '\\b(?:', '|']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/extractor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, ',', '_redshift_bound', 'body', 'classification', 'event', 'eventId', 'follow_up', 'gcn_circulars', 'localization', 'redshift', 'regex-v1', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/tools.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['__none__', 'body', 'circular_id', 'circular_ids', 'dec', 'event', 'event_id', 'event_name', 'extract_properties', 'extract_text', 'extractor_id', 'fetch_gcn_circulars', 'find_counterparts', 'get_classification', 'get_photometry', 'get_redshift', 'gw_event_id', 'json', 'limit', 'model_id', 'prompt_version', 'query', 'ra', 'radius_arcsec', 'search_by_position', 'search_gcn_circulars', 'separation_arcsec', 'subject', 'trigger_time']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/prompt.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.001, 0.05, 0.07, 0.215, 1.1, 1.3, 3.0, 19.5, 20.42, 20.55, 21.1, 450.0, '2026-05-13', '21505,21509,21512', 'AB', 'ALFOSC', 'AT2017gfo', 'AT2024xyz', 'GOTO', 'GRB 240101A', 'GRB 240505B', 'GW', 'GW170817', 'Ic-BL', 'LVK', 'NOT', 'PS1', 'T+', 'airmass', 'assistant', 'circular_id', 'classification', 'clear', 'content', 'event', 'event_name', 'extraction_meta', 'filter', 'follow_up', 'g', 'gcn_circulars', 'host', 'instrument', 'limiting_mag', 'limiting_mag_sigma', 'mag', 'mag_error', 'mag_system', 'photometry', 'properties', 'r', 'redshift', 'redshift_error', 'redshift_measure', 'redshift_type', 'ref_ID', 'ref_instrument', 'ref_type', 'reference', 'required', 'role', 's', 'seeing', 'spectroscopic', 'telescope', 'time_offsets', 'unit', 'user', 'value']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cache/llm.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['body_sha1', 'circular_id', 'cost_usd', 'extractor_id', 'ignore', 'latency_ms', 'model_id', 'n', 'prompt_version', 'response_json', 'tokens_in', 'tokens_out', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/consume/sources.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['*.json', 'circularId', 'gcn.circulars', 'gcn.nasa.gov', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/db/connection.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/consume/sources.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['*.json', 'circularId', 'gcn.circulars', 'gcn.nasa.gov', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/prompt.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.001, 0.05, 0.07, 0.215, 1.1, 1.3, 3.0, 19.5, 20.42, 20.55, 21.1, 450.0, 136, 141, 186, 195, 200, 205, '0.001', '2026-06-04', '21505,21509,21512', 'AB', 'ALFOSC', 'AT2017gfo', 'AT2024xyz', 'GOTO', 'GRB 240101A', 'GRB 240505B', 'GW', 'GW170817', 'Ic-BL', 'LVK', 'NOT', 'PS1', 'T+', 'airmass', 'array', 'assistant', 'bandpass', 'circular_id', 'classification', 'clear', 'content', 'description', 'end', 'event', 'event_name', 'extraction_meta', 'filter', 'follow_up', 'g', 'gcn_circulars', 'host', 'instrument', 'items', 'limiting_mag', 'limiting_mag_sigma', 'mag', 'mag_error', 'mag_system', 'notes', 'object', 'photometry', 'properties', 'provenance', 'r', 'redshift', 'redshift.redshift', 'redshift_error', 'redshift_measure', 'redshift_type', 'ref_ID', 'ref_instrument', 'ref_type', 'reference', 'required', 'role', 's', 'sdssg', 'sdssr', 'seeing', 'snippet', 'spectroscopic', 'start', 'string', 'telescope', 'time_offsets', 'type', 'unit', 'user', 'value', 'z = 0.215']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/store.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [3600.0, '\\s+', 'circular_id', 'dec', 'extraction', 'extraction_json', 'extractor_id', 'n', 'name', 'ra']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/extractor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, ',', '_redshift_bound', 'body', 'classification', 'event', 'eventId', 'follow_up', 'gcn_circulars', 'localization', 'redshift', 'regex-v1', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/db/indexer.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['*.json', '*.jsonl', '.json', '.jsonl', 'body', 'circularId', 'createdOn', 'eventId', 'format', 'g', 'ignore', 'r', 'record_hash', 'subject', 'submitter', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/coords.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [':', '[hHmMsSdDoO\':\\"°]', 'dec', 'h', 'icrs', 'ra']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/taxonomy.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['-placeholder', 'class', 'other names', 'r', 'ref', 'top.yaml', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/ollama.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, 300, ',', 'CIRCEX_OLLAMA_MODEL', 'assistant', 'cache_hit', 'circular_id', 'classification', 'content', 'end', 'event', 'event_name', 'extraction_meta', 'extractor', 'follow_up', 'id', 'json', 'localization', 'message', 'model_id', 'name', 'ollama_repair_retry', 'provenance', 'redshift', 'reference', 'role', 'snippet', 'start', 'system', 'trial', 'user', 'value']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/__init__.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['ClaudeExtractor', 'OllamaExtractor', 'PROMPT_V1', 'build_messages', 'build_system_text', 'chunk_body', 'merge_extractions']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/registry.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['ToolContext']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/extractor.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1000.0, ',', '_redshift_bound', 'body', 'classification', 'event', 'eventId', 'follow_up', 'gcn_circulars', 'localization', 'redshift', 'regex-v1', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/classify/sn_type.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [1.0, 'NONE', '[a-z0-9][a-z0-9-]+', 'class_log_prior', 'classes', 'default_log_prob', 'feature_log_prob', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/bot/aggregate.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['body', 'circularId', 'eventId', 'subject']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/llm/claude.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [0.0, 0.1, 0.3, 1.0, 1.25, 3.0, 3.75, 5.0, 15.0, 1000.0, 1000000.0, 4096, 'cache_control', 'cache_hit', 'cache_read', 'cache_write', 'circular_id', 'claude-sonnet-4-6', 'content', 'description', 'ephemeral', 'extraction_meta', 'extractor', 'input', 'input_schema', 'input_tokens', 'model_id', 'name', 'output', 'output_tokens', 'role', 'submit_extraction', 'text', 'tool', 'tool_use', 'type']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, 100, 500, 5000, 8765, '(no actions)', '*.json', '*.label.json', ',', '--cache-db', '--circular-id', '--circular-ids', '--circulars', '--circulars-dir', '--db', '--event-name', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max-circulars', '--max-cost', '--max-hops', '--max-optical', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--store', '--token', '--trigger-time', '--url', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/labels/hand_v1', 'eval', 'eventId', 'label-validate', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/cli.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [10.0, 100, 500, 5000, 8765, '(no actions)', '*.label.json', ',', '--cache-db', '--circular-id', '--circulars', '--db', '--extractor', '--extractors', '--from-file', '--gold', '--group-ids', '--host', '--instrument-map', '--live', '--max-circulars', '--max-cost', '--max-optical', '--out', '--per-stratum', '--plot', '--plot-baseline', '--port', '--report', '--seed', '--since', '--store', '--token', '--trigger-time', '--url', '.', '.json', '127.0.0.1', 'LIVE POST', '__main__', 'all', 'body', 'circex', 'circularId', 'claude-haiku', 'claude-sonnet', 'claude-sonnet-4-6', 'data/circex.sqlite', 'data/labels/hand_v1', 'eval', 'eventId', 'label-validate', 'ollama', 'output directory', 'random', 'regex', 'regex-v1', 'reports/eval_v1.md', 'schema-dump', 'schemas/', 'subject', 'subset-build', 'utf-8', 'vidushi', 'vidushi-mistral']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/extract/regex/redshift.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ [12.0, 200, '\\babsorption\\s+line', '\\bemission\\s+line', 'absorption', 'emission', 'host', 'photometric', 'spectroscopic']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/server/__init__.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ ['ExtractionStore', 'REQUEST_VERSION', 'TOOLS', 'ToolHandler', 'ToolRequest', 'ToolResponse', 'serve', 'tool']
@@ -0,0 +1,4 @@
1
+ # file: /Users/ericphillips/Documents/IntelliJ/Projects/IDEA/Circex/circex/schema/follow_up.py
2
+ # hypothesis_version: 6.155.1
3
+
4
+ []