scitex 2.17.0__py3-none-any.whl → 2.17.4__py3-none-any.whl

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 (46) hide show
  1. scitex/_dev/__init__.py +122 -0
  2. scitex/_dev/_config.py +391 -0
  3. scitex/_dev/_dashboard/__init__.py +11 -0
  4. scitex/_dev/_dashboard/_app.py +89 -0
  5. scitex/_dev/_dashboard/_routes.py +182 -0
  6. scitex/_dev/_dashboard/_scripts.py +422 -0
  7. scitex/_dev/_dashboard/_styles.py +295 -0
  8. scitex/_dev/_dashboard/_templates.py +130 -0
  9. scitex/_dev/_dashboard/static/version-dashboard-favicon.svg +12 -0
  10. scitex/_dev/_ecosystem.py +109 -0
  11. scitex/_dev/_github.py +360 -0
  12. scitex/_dev/_mcp/__init__.py +11 -0
  13. scitex/_dev/_mcp/handlers.py +182 -0
  14. scitex/_dev/_rtd.py +122 -0
  15. scitex/_dev/_ssh.py +362 -0
  16. scitex/_dev/_versions.py +272 -0
  17. scitex/_mcp_tools/__init__.py +2 -0
  18. scitex/_mcp_tools/dev.py +186 -0
  19. scitex/audio/_audio_check.py +84 -41
  20. scitex/cli/capture.py +45 -22
  21. scitex/cli/dev.py +494 -0
  22. scitex/cli/main.py +2 -0
  23. scitex/cli/stats.py +48 -20
  24. scitex/cli/verify.py +33 -36
  25. scitex/plt/__init__.py +16 -6
  26. scitex/scholar/_mcp/crossref_handlers.py +45 -7
  27. scitex/scholar/_mcp/openalex_handlers.py +45 -7
  28. scitex/scholar/config/default.yaml +2 -0
  29. scitex/scholar/local_dbs/__init__.py +5 -1
  30. scitex/scholar/local_dbs/export.py +93 -0
  31. scitex/scholar/local_dbs/unified.py +505 -0
  32. scitex/scholar/metadata_engines/ScholarEngine.py +11 -0
  33. scitex/scholar/metadata_engines/individual/OpenAlexLocalEngine.py +346 -0
  34. scitex/scholar/metadata_engines/individual/__init__.py +1 -0
  35. scitex/template/__init__.py +18 -1
  36. scitex/template/clone_research_minimal.py +111 -0
  37. scitex/verify/README.md +0 -12
  38. scitex/verify/__init__.py +0 -4
  39. scitex/verify/_visualize.py +0 -4
  40. scitex/verify/_viz/__init__.py +0 -18
  41. {scitex-2.17.0.dist-info → scitex-2.17.4.dist-info}/METADATA +2 -1
  42. {scitex-2.17.0.dist-info → scitex-2.17.4.dist-info}/RECORD +45 -24
  43. scitex/verify/_viz/_plotly.py +0 -193
  44. {scitex-2.17.0.dist-info → scitex-2.17.4.dist-info}/WHEEL +0 -0
  45. {scitex-2.17.0.dist-info → scitex-2.17.4.dist-info}/entry_points.txt +0 -0
  46. {scitex-2.17.0.dist-info → scitex-2.17.4.dist-info}/licenses/LICENSE +0 -0
@@ -8,6 +8,22 @@ scitex/_optional_deps.py,sha256=ouMy8bw7cxl-AONRNi8xQoxwacR8irKxbcTAI18Hkzw,1014
8
8
  scitex/errors.py,sha256=Pxk8TKpGRk_QBFVB46H7k1Uxetja0OEdYjJjV_lrxRM,2874
9
9
  scitex/mcp_server.py,sha256=VNjs3N21x3_yAzfR8HhuFJJOvYOBHgvJo4tKDQdQsLE,6081
10
10
  scitex/units.py,sha256=lm2SH4PGXz-22tjUoBQhvKJDKmPD01ykSFWoCaFC384,10356
11
+ scitex/_dev/__init__.py,sha256=ab6VDylil7CRDP9eHiD_nPeaMW5Ih5O-NpcN4-nd29M,2679
12
+ scitex/_dev/_config.py,sha256=_UdF7gaJo1Ifkm5kRrD1EZcHel21F0zo5xTqEJeihIs,10574
13
+ scitex/_dev/_ecosystem.py,sha256=b2J5XJBsGl4yiOeNSYM_Sue51CliHs_eyIfPZ9KL5OM,3394
14
+ scitex/_dev/_github.py,sha256=O3Pe754MPt9uoKCs4ppjvYC3Uxy3ydkUpMLYxlPsJxM,9412
15
+ scitex/_dev/_rtd.py,sha256=TWD1pFoIGgsiOgir2WjCNT88TbpwJ_0aescSENpFEYI,3280
16
+ scitex/_dev/_ssh.py,sha256=z0n6-ozIFtpSga9RJN-yDkFoyVKWiv8ZfFdQYLGSbRQ,9327
17
+ scitex/_dev/_versions.py,sha256=JoBiRkx2Z9QB7UOQDKp-gd5iwiBkq0sdAWGRq01WUSc,7405
18
+ scitex/_dev/_dashboard/__init__.py,sha256=eApG1qoE7aWE1YZMkcMuzl585TbC5Di11DEC15twOVM,239
19
+ scitex/_dev/_dashboard/_app.py,sha256=Vcu9RQDrDWFA9_hdGt4TuoyevgAZm7k7SBvlkyOTci0,2014
20
+ scitex/_dev/_dashboard/_routes.py,sha256=VLKwAoyNyf6D3pM55ZJTNeJeLNJx2ZlYxBoiUNlMX_E,5498
21
+ scitex/_dev/_dashboard/_scripts.py,sha256=mIi-NFRbiMD9bYZ9DDHcjMigY6NwTPlvXOxkG8NjwX8,16271
22
+ scitex/_dev/_dashboard/_styles.py,sha256=kxMykqAB0hMiC5J4Ro9ykIuXcW4nKrJXCetizPHW9PA,8139
23
+ scitex/_dev/_dashboard/_templates.py,sha256=u7Ubx4NH5BpoqIX_0WqzOFKZ14vzECBoYZQvaxdpT7Y,4140
24
+ scitex/_dev/_dashboard/static/version-dashboard-favicon.svg,sha256=CLYEFmmEQEkfx8ffoTmMQrRWjjRMGeeccYkvcSlyw9U,7578
25
+ scitex/_dev/_mcp/__init__.py,sha256=FdLB2ReZEHlIfVWFb1v41sm8L_ohZQSykXoC_Y6Uxeo,268
26
+ scitex/_dev/_mcp/handlers.py,sha256=07MQ6uOqUXfX4ykcwEXxYqe38nFblVTZMp2pXpL2RMs,4649
11
27
  scitex/_mcp_resources/__init__.py,sha256=RomYv2wi1PYC8Z3ymAv46q0HygVErrSlViigLTWEuLY,1368
12
28
  scitex/_mcp_resources/_cheatsheet.py,sha256=RQJxq3MEfgUGMaF9pJ_fOw-ul5TSE32lIzxv_kOOyBY,3884
13
29
  scitex/_mcp_resources/_figrecipe.py,sha256=A8oK3FwDqSNYyYI4jwfNJ2yiH_8XVnfFjoGJtuvdDLU,3581
@@ -15,11 +31,12 @@ scitex/_mcp_resources/_formats.py,sha256=EyNZKtmX6dg6vK1Gk0EmrSSKH5d9yc3RMqZtSP-
15
31
  scitex/_mcp_resources/_modules.py,sha256=irUo0V5ZLDiOCTw9lm8UoYXJ0jA07Cdxhq6QsdWcH68,8703
16
32
  scitex/_mcp_resources/_scholar.py,sha256=RSYt7j6bcbKtR-tOtvCtdE6J3IS8C925_c34t0Z1Es8,4689
17
33
  scitex/_mcp_resources/_session.py,sha256=lbe9W3cfPOyoq6bPOeN-jB8MwI4DnRWMpxHmpfn97SM,4590
18
- scitex/_mcp_tools/__init__.py,sha256=w73wqTagrlMAuQxhpUM3PPSvI8Ue04bq7NiuO3e4kuc,1378
34
+ scitex/_mcp_tools/__init__.py,sha256=qgtYh01zlCYI_W-uTGW0nwC4UaqGr_8Ru0dAoJRA9q4,1442
19
35
  scitex/_mcp_tools/audio.py,sha256=EZ7lwz_VvrjSl1bhAUXzFgXCD141A6VfrW0_NOYtxvU,4750
20
36
  scitex/_mcp_tools/canvas.py,sha256=KG6JfguRYfatnQyj2rD8NC_ettjvq5IAL9ggBrrXoLM,4877
21
37
  scitex/_mcp_tools/capture.py,sha256=k7pwuB1vdP-VCYjutajEZEsvVAKY-8_mEYrYGWXgOo8,5658
22
38
  scitex/_mcp_tools/dataset.py,sha256=m53HCktI33m_MOXkCiN-s8xV3F8vsC7KWh75o0ZC1Qo,812
39
+ scitex/_mcp_tools/dev.py,sha256=nO1R3-KC3dsUkVWvMFOPkD6DvZJdvK90N8DPdn4eYjI,5672
23
40
  scitex/_mcp_tools/diagram.py,sha256=pZNq0UTRlg7piq0YDD40qY5M2mqFYoRdFwmWeRCBieA,585
24
41
  scitex/_mcp_tools/introspect.py,sha256=GY9j9EUAs-CKegzfPHubPT3OGpOjcY5Rb09M3OHEIwA,6562
25
42
  scitex/_mcp_tools/plt.py,sha256=JSSmom5OHKdCMaRqecExBK2wn9tGaePJ3tiCY442GBo,9355
@@ -175,7 +192,7 @@ scitex/ai/utils/grid_search.py,sha256=XJ-cEsswH4B5BtmwQKQVZXc9kwFnK0Uo7FmzsEFvTM
175
192
  scitex/audio/README.md,sha256=BirKKK30uX-5_-p3NaJTsbbosQEthwzvD7d3mRvWEMo,5065
176
193
  scitex/audio/__init__.py,sha256=QR9A2g9Lf8MHubyPfT0JsexY_GQDdv8tiOQXwHVf3EE,7111
177
194
  scitex/audio/__main__.py,sha256=IjdxdB5C_4GdxqLGUwDu-Qz_eNCUjhGgKvVTY2_Hsio,3822
178
- scitex/audio/_audio_check.py,sha256=tZDHjuFX6F9IVi2hdeHuuWcbd_Izy5IlDWk0WPfhKqM,2802
195
+ scitex/audio/_audio_check.py,sha256=fSsEdWVrR6SgY6_aCMTD9DPoo-gcQyZH6eHhC5i01jI,4389
179
196
  scitex/audio/_branding.py,sha256=WbPMGUdCNfvT71JziSSS4bZGK9J7aQLXRWBoRgvLMzQ,5010
180
197
  scitex/audio/_cross_process_lock.py,sha256=ujQnCmVOCJxii-N6wtyWo5eflO3HW65PCmvVHgw0Ayc,3864
181
198
  scitex/audio/_relay.py,sha256=3XhLxbrbOBMSNVi6lSurbrYA9c4wEOjkDnPkBRTUuqs,6189
@@ -386,23 +403,24 @@ scitex/capture/powershell/enumerate_virtual_desktops.ps1,sha256=-KF39BUYjoZBL9mq
386
403
  scitex/cli/__init__.py,sha256=A7_PiGQ1HqcTitN5VuWxpGX9Bm-U3OTsWgujXXsr7dg,4285
387
404
  scitex/cli/audio.py,sha256=7ciqYrK--jTZmsQzQuhCA8PpHglODAtcmSIW4EKXUNY,13773
388
405
  scitex/cli/browser.py,sha256=UEumP-TyjenPQet5uo9sWcoNeVqI8-etbWiNR01I9oo,10260
389
- scitex/cli/capture.py,sha256=D5pgL_yjMKMEBuRX_KALBpQoEJ11Gx84ZmzPItnZ26w,13560
406
+ scitex/cli/capture.py,sha256=8K0uYescFFbOf26967Gt3PntaxTKVT7ZGnxBUS3Qz-g,14358
390
407
  scitex/cli/cloud.py,sha256=ZghVxWaHHNz0zhTz3BnZPguGwuZjslaj-Xxerg6-_6E,21398
391
408
  scitex/cli/config.py,sha256=J-oJL9MJ8Ef0mKxlctlvRDbS7eHeOyb6BImZq_PTVbc,6216
392
409
  scitex/cli/convert.py,sha256=W6Z9gaVBTPD5BhRcHWb-v3AHYcDmqvMUetu5NusP8lE,12587
393
410
  scitex/cli/dataset.py,sha256=Hw8CtlsCbYEYy3H5sWR82gRJZBOU5yKYpLjePEwmKrs,1872
411
+ scitex/cli/dev.py,sha256=YM2FrD6OPgTcjxxybHWUYY3_0npImkRzq6oT7cKf8_U,15487
394
412
  scitex/cli/introspect.py,sha256=rzwtZi6xn3jwT__wsNTEx6BcEtkfd4RfJCjVdQ4S4dQ,18659
395
- scitex/cli/main.py,sha256=6OSQNh40bW8iX1COhxcx7SAX8r84vnYqUcwt3sObD6w,10280
413
+ scitex/cli/main.py,sha256=21a17L0_Q9f1aSb35nUGyOC3PiA2pPdDtq6tjzkAYXw,10314
396
414
  scitex/cli/mcp.py,sha256=Ebcu9QxVCS_s8QaKdU3IBuexAbF3bmUAR_9xwJ2DqpI,17881
397
415
  scitex/cli/plt.py,sha256=nEIA4-niMAArYNXArQbVBBkyO6DA8sdf8PSzdEnV1bw,11492
398
416
  scitex/cli/repro.py,sha256=kdqp01--8XXFPU_JBqmaCml5O7mqly76basQXQ8IGxs,7628
399
417
  scitex/cli/resource.py,sha256=eTcNybAn9NpeNxXG1oAoZWkVjzATxQ9t-Uw2pd806VE,8243
400
418
  scitex/cli/security.py,sha256=6f_3TO5E0jzWvDmIDcF1ZKWmLxsn6iTJCHVlYyPE6os,2785
401
419
  scitex/cli/social.py,sha256=fsLuU8MyAaLo8cArh0EuzHz19qo7av3N09sqD-sArho,9612
402
- scitex/cli/stats.py,sha256=2n5iz5CXKBqqQk-f-HdOYTs1abYAYMCRPw2O7ZwYFY8,14443
420
+ scitex/cli/stats.py,sha256=u-4X2fCDQF3bF2hLcLOOefYQ96HAd-997H3v-vcLhUg,15302
403
421
  scitex/cli/template.py,sha256=omoT2qzWtyqJYqrIqJ74uyDgoQTL667ONSbwSQU4sb8,12015
404
422
  scitex/cli/tex.py,sha256=d_Fh9PXObuyjMgQ_Ap60aXwAztJbY3Pd2SvfV92toBg,9222
405
- scitex/cli/verify.py,sha256=8bzXa5q-h2voMlDTwFjKtKcfvI9S5lgdFCLCemVugpw,15271
423
+ scitex/cli/verify.py,sha256=q5GedHPOS4gTCHFl8OaX-yMSMdDMmARKe3FR_u6SWPc,15316
406
424
  scitex/cli/web.py,sha256=_XwnlsOm2MD1eyJVycfsdki4IcDnglXTO5IkZ-eb3xA,13482
407
425
  scitex/cli/writer.py,sha256=lApUnUQrclbufEMwD4m4MKMDg3ZkCBe0kTS9WuH4hsM,1953
408
426
  scitex/cli/scholar/__init__.py,sha256=zrQyQk_ixECQrAmydl9uS7-uuImegFiBf5Gz4ywWltQ,8190
@@ -1022,7 +1040,7 @@ scitex/pd/_to_numeric.py,sha256=_0PzQR2j5_xHgxMH9b2gpZFg2PDWI3sNomxDFWWHTqo,1796
1022
1040
  scitex/pd/_to_xy.py,sha256=W3y9RS5oUcUPEG1y7HHACjNZjS6mCx-ZpcybuprsHe4,1865
1023
1041
  scitex/pd/_to_xyz.py,sha256=WdtHIcAmwM7MM_2yP4MErdLrJ32XWyrbB2HuvYvZahU,3243
1024
1042
  scitex/plt/README.md,sha256=tC94RzEksldrlhKd6v1UAx6uF7TFI1qwgOqD7ZkTVmw,59641
1025
- scitex/plt/__init__.py,sha256=Wa9_NM_f0y6J2kIB7DJaoZikDPKav6pdk6FT0UopY-g,15579
1043
+ scitex/plt/__init__.py,sha256=VBpjjzi56friI2LzjIAV_2W7urEtG_K7--tucQwuqKU,15935
1026
1044
  scitex/plt/_figrecipe.py,sha256=pTAR9VUlwn6LWxVsbzl-M5bec6RMvfWgBSgZBnI9OI4,6231
1027
1045
  scitex/plt/_figrecipe_integration.py,sha256=33x32M29vypPrLg00qQqMvzuuOf8bUR3biQwUzWdbMc,3286
1028
1046
  scitex/plt/_tpl.py,sha256=dRlEmAS0OzDD8j_XrUye1SO7INoXz9YnaFWVDzYX4r8,759
@@ -1293,12 +1311,12 @@ scitex/scholar/__main__.py,sha256=U7QKol30Vsvw_Xg4tVS5F1iFU4UluKnm1Z0Bs18zgCs,97
1293
1311
  scitex/scholar/mcp_server.py,sha256=z_b4pD2z1H2bG1B6ATt3B6e8uNBMl-MLz6a3KLnaCiw,14934
1294
1312
  scitex/scholar/_mcp/__init__.py,sha256=FJRAr90vUCg4PJ8Sv-WzsKuM7aY93m6UR87fhk843MU,73
1295
1313
  scitex/scholar/_mcp/all_handlers.py,sha256=yALfZdQhDXWPlqUB1rcncENXyVVFNDnpGqhz5iCc-5Q,1856
1296
- scitex/scholar/_mcp/crossref_handlers.py,sha256=fBN9pVzQLiGT4FWoLGAOdsm-_-gwhMo1EEl0S9MlA0c,7770
1314
+ scitex/scholar/_mcp/crossref_handlers.py,sha256=PxfuLacjKPTNk-rCQYZarT1nsDDWhYAfz9zFeYMuFJI,9228
1297
1315
  scitex/scholar/_mcp/crossref_tool_schemas.py,sha256=v1VI3I2r_LWqt4IuEJo_JvXxtdY04eZ3zk6Kvqumou4,4748
1298
1316
  scitex/scholar/_mcp/handlers.py,sha256=gMFBHPdqfWGRUDSu3wlllVBnJSzrkGm9ZUnUBhZXCY0,51088
1299
1317
  scitex/scholar/_mcp/job_handlers.py,sha256=8ZkFRG1TOq20168DIpic3VMAMzTzieg1jnaE7eXQLlU,4970
1300
1318
  scitex/scholar/_mcp/job_tool_schemas.py,sha256=xDTysuf3aLNxLO1O57sal5XcMeEstk0SB77wK9q6yVs,5777
1301
- scitex/scholar/_mcp/openalex_handlers.py,sha256=r9X1mwMqqwovrbx4pcgHQeISCbGqqW87neP6EW09Pnw,6503
1319
+ scitex/scholar/_mcp/openalex_handlers.py,sha256=mffzi-D_MiM6bKFxwKKTcZmqutbZzWdeV0IcFcu9utc,7961
1302
1320
  scitex/scholar/_mcp/openalex_tool_schemas.py,sha256=zu7--BZ7_aEnaJuEg-Sb1FiKNoeRthat70S9TZ70uL4,3194
1303
1321
  scitex/scholar/_mcp/tool_schemas.py,sha256=ng_lGqhwa_2BxByASZriDgnZSHTewvqpF6jOzqRxEZ0,19818
1304
1322
  scitex/scholar/_utils/__init__.py,sha256=leFMQOthrMMcnaoNvoP6oSYy0HSs0CXsg_Lr6yE2HnE,576
@@ -1371,7 +1389,7 @@ scitex/scholar/config/PublisherRules.py,sha256=wumxQXIaiFqG5gdSzd1_7bPytXZu2-WBp
1371
1389
  scitex/scholar/config/README.md,sha256=318vSWix8XiZCNSjahq6Cswww7ZmHPKB3eYi54XyZfM,880
1372
1390
  scitex/scholar/config/ScholarConfig.py,sha256=SgwR4r6mg8mE6OJ5nAnfeyV4_MVDT9HiIq_29XfBB2c,5178
1373
1391
  scitex/scholar/config/__init__.py,sha256=YMIxrj09DczUL4b_nhV4cJl32ueitove8EcOEfinVeU,500
1374
- scitex/scholar/config/default.yaml,sha256=vWWW1TdoXHe32vLhbaFwJ5nA5McSVPguKbQY6GmXdO4,18694
1392
+ scitex/scholar/config/default.yaml,sha256=2zMtDpbgd5Gd0fOoooMgHes4sknLcSDMe6PmbJdMoRE,18791
1375
1393
  scitex/scholar/config/_categories/README.md,sha256=swb9Y-fSDK5IBst3bF96xH_syrRWpv7N8jz7gYQCyeQ,4806
1376
1394
  scitex/scholar/config/_categories/api_keys.yaml,sha256=wo2fAxXqQYU6JLkAf4VxvcIiJPIc1qOjx2LMp2hK-k8,739
1377
1395
  scitex/scholar/config/_categories/auth_gateway.yaml,sha256=resIZWaEyCRg0HIk0yJV194I4_Ur_OIQ2hLDswC-PqM,3448
@@ -1514,11 +1532,13 @@ scitex/scholar/jobs/_JobManager.py,sha256=F06vxOZoYouqgeNVmlwKpDPkWWh-PU2aLp3pqu
1514
1532
  scitex/scholar/jobs/__init__.py,sha256=dXdPmFUWf-Ypl41_Z6qsduYCofygfgq2UjiIZcYiGjQ,1779
1515
1533
  scitex/scholar/jobs/_errors.py,sha256=V7Xv4q0CDBJIQ6NSg-lRb_skFcqT-jIZ_aI5gavjDds,10211
1516
1534
  scitex/scholar/jobs/_executors.py,sha256=kWU9uuN_8cx6oPyGakjcypsiZoUwicrHL29_aF_iZUU,11807
1517
- scitex/scholar/local_dbs/__init__.py,sha256=sxCiEcOy5pC6VBpEExHgkAlu1st7EUcfw6PRFo67buQ,857
1535
+ scitex/scholar/local_dbs/__init__.py,sha256=TlwFdJybybeQ81GjJMM6QeZiwweA9KB2aGjLU8TuL2w,962
1518
1536
  scitex/scholar/local_dbs/crossref_scitex.py,sha256=Ib2JluhqyYjDPh0hZqENHNP7_eg21AQnkyWjl5pfXRs,748
1537
+ scitex/scholar/local_dbs/export.py,sha256=q2yEPK5inRAIgEwMC6gSsAGZxMZHEOmTp7WIVrU065o,2394
1519
1538
  scitex/scholar/local_dbs/openalex_scitex.py,sha256=mnHHMnk2aJcSfXYWJh2wsbs818oU1fW63i_3VZG7wpI,748
1539
+ scitex/scholar/local_dbs/unified.py,sha256=AbFY4xFcUA5TpDQGM42F8ql_2voY-YDGpj2o52hbw6Q,15373
1520
1540
  scitex/scholar/metadata_engines/README.md,sha256=wz1fTeru9sTgkGO5T8VdDBsd4FBaZu2t6-I8MTNGifw,919
1521
- scitex/scholar/metadata_engines/ScholarEngine.py,sha256=WGOEvCiBiMm0aZNtN1AlBDCcN6XQUl76R6zedUhR7gs,20604
1541
+ scitex/scholar/metadata_engines/ScholarEngine.py,sha256=y0j50zY4W6FApW1SqWH2lU6fBs94DoYAC-S7vP3ZqD0,21178
1522
1542
  scitex/scholar/metadata_engines/__init__.py,sha256=qjndZBrK2tXOMCRHFeEu2BJ9Ir8nbr7cHsV4xvXUwv4,749
1523
1543
  scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSource.py,sha256=RrjgRQ0C5DE_8_5SIxV3wsoiaOCuawwVJc8YGFUHxeI,10146
1524
1544
  scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSourceEnhanced.py,sha256=CLLXlSVgaujFvTsnDrWmAqTaUmJBtr9msFY-uYaxMZk,7604
@@ -1526,11 +1546,12 @@ scitex/scholar/metadata_engines/individual/ArXivEngine.py,sha256=YeB9sfZQGz0P_eF
1526
1546
  scitex/scholar/metadata_engines/individual/CrossRefEngine.py,sha256=dAR2OVNl1i-p1I0UTsyEN4KV0L7vTqFtATe3KtVrntE,9974
1527
1547
  scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py,sha256=thHe3k41EI9Td1vqeh3ebUfg9fjrq94QYnDtpwxlgNg,11147
1528
1548
  scitex/scholar/metadata_engines/individual/OpenAlexEngine.py,sha256=fAXehDNdRMPBMcMcemw5cXUrBtyWSgZPpVBJfBAZXqQ,12149
1549
+ scitex/scholar/metadata_engines/individual/OpenAlexLocalEngine.py,sha256=K5VQVfCHCEqFT3Jg_3ZttRXMFZl87PGYiYuAqIjDBBo,12056
1529
1550
  scitex/scholar/metadata_engines/individual/PubMedEngine.py,sha256=0FD9h_UCMZ9YrclW228YoFqlMClx-3r1SQC-TpcOS8Q,9923
1530
1551
  scitex/scholar/metadata_engines/individual/SemanticScholarEngine.py,sha256=Ve6aADnN3CgPAftkRMbllMyUwy0YKEUq76BZU8C2y1k,15338
1531
1552
  scitex/scholar/metadata_engines/individual/URLDOIEngine.py,sha256=HnUTo_BjFnKNKPz1vmaIX4EedlyKXWSgrzyTGppSnjc,14461
1532
1553
  scitex/scholar/metadata_engines/individual/_BaseDOIEngine.py,sha256=tIu_a-O9Y_iJ_RnSI0oKHBzU0h4frm9B4p7TXvfsIyI,16427
1533
- scitex/scholar/metadata_engines/individual/__init__.py,sha256=bViD8Y8f16Ru76k4s9SAzNETP8iQcEH80fZinYmLSjM,311
1554
+ scitex/scholar/metadata_engines/individual/__init__.py,sha256=TM4zdBk9c_NG2TTf3j-BKBU_Ar3agYEh1HZTRWbKMEs,364
1534
1555
  scitex/scholar/metadata_engines/utils/_PubMedConverter.py,sha256=OaWsznE66619Gelqdh3daMnl2yJ3O4fvxMfRvuxhnN8,14407
1535
1556
  scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py,sha256=fwQ0W8E7wSXd-33Ps3e_sIDqCKQdtGwDhpg9xwdtvBg,9175
1536
1557
  scitex/scholar/metadata_engines/utils/__init__.py,sha256=7JNLEqNflajR16Vrm27mR0RnZnhwwya7ajOrsfV7rus,865
@@ -2508,7 +2529,7 @@ scitex/str/_search.py,sha256=8QvX64cbvKOjk1ydVsrAN-4mFeeoMz8I1zTN9JwIe3U,3977
2508
2529
  scitex/str/_squeeze_space.py,sha256=WUDZjdQZjyEzuWMWy1JO6pwqtMzCX7Tgh8DgD64ai38,948
2509
2530
  scitex/str/_title_case.py,sha256=YWauPWVi26TJwVgmaG8Y1onNbAjwUoiBw3rXkuM6fWA,1512
2510
2531
  scitex/template/README.md,sha256=j85Q6qaudwOrd6GrkzvEOMMQsiv0_iMZrai95d9tPmc,4810
2511
- scitex/template/__init__.py,sha256=jPcjb8urc64IR6MVh-FMdVA9bhNiG34HYOsZkxIr_wY,4232
2532
+ scitex/template/__init__.py,sha256=pS6nGe5ENsq8AlispJlJB35u1XoQTWJTPKQpf-_H0ig,5019
2512
2533
  scitex/template/_clone_project.py,sha256=YZQhpExa3J6vXMnCPywb69tirdiURA5wLgSTK920ha8,5916
2513
2534
  scitex/template/_code_templates.py,sha256=7leBP49eSdojlYi63ny-hh2lCCrCYjmlGCZEQAMtUjM,3608
2514
2535
  scitex/template/_copy.py,sha256=hCAj7K6bR8zeQuq73WY9ZSCZ5xDyYY8mEzuInrUXKBI,2809
@@ -2518,6 +2539,7 @@ scitex/template/_logging_helpers.py,sha256=rCvfxAuoWD4erWtO4tm1YJwrjsYnBzeb36aiS
2518
2539
  scitex/template/_rename.py,sha256=m2IMBorLWIhmIKPRhti_pLyMHU57k1BFv-0Zq5qUnu4,1785
2519
2540
  scitex/template/clone_pip_project.py,sha256=cEQkbyD8x-0iVDrL3iCIH2z5e_7mKIXe-uPQSrni1zw,3047
2520
2541
  scitex/template/clone_research.py,sha256=cWwW6vQp03u19mDlit-P6yMHF30IW6DQf3xXVdd-D1M,3073
2542
+ scitex/template/clone_research_minimal.py,sha256=5wbsNQnqAv97lYT2t-B2G9Y438zOcwG2H4_wvXA6yjA,3189
2521
2543
  scitex/template/clone_singularity.py,sha256=CYMjaUU1Bf58tKtU5tlTKgjd1EphaZvmMpqmhIyPtyw,3103
2522
2544
  scitex/template/clone_writer_directory.py,sha256=ibAlEkMRLTBYmxgg_LFMtFr3uLTMFhTyYyhoDkwv6xE,3058
2523
2545
  scitex/template/mcp_server.py,sha256=aqCOdzFOeEBjA4RPlXrPXY9O9nix0fOItENQNwdYv5Y,6096
@@ -2576,21 +2598,20 @@ scitex/utils/_search.py,sha256=whVnFTysuE9JgYMq6IG7l3Q68dtXb__ZZ0TCsboQPYk,3969
2576
2598
  scitex/utils/_verify_scitex_format.py,sha256=uGf68LWA_ZNlgEqwqi0p9O_W-1rayL5XscNpV-5jPQc,17244
2577
2599
  scitex/utils/_verify_scitex_format_v01.py,sha256=5ibsB_M2bPyAG1yYzZiMZysYCxr5JXuNXIWoWd87k9s,10660
2578
2600
  scitex/utils/template.py,sha256=-Th6cIsAJNVSGS7o1wRtDeWwvLGTLk11Ocv1MQWeaIY,2493
2579
- scitex/verify/README.md,sha256=4XgXXj2ooNBUUvIvDLhbyPbQ1LAHPllE0SWNHY09lSE,7907
2580
- scitex/verify/__init__.py,sha256=GTG-j9bHw3WEc5nAAeXyIM0SBOf8VOK_8f1mTxOvYdc,5000
2601
+ scitex/verify/README.md,sha256=ctRxWuWudrVwEa_SeLRqP94n2FooVNaMOzZib0S6AM4,7601
2602
+ scitex/verify/__init__.py,sha256=mrt7-XMFz7RxSUpfoOJdHRkr0xbxEyECrrpWeBOblCk,4900
2581
2603
  scitex/verify/_chain.py,sha256=BZpgczN0b0t7i-3WXNmI1Yf0odmCdOvQz1mrrVyfgok,10038
2582
2604
  scitex/verify/_db.py,sha256=lezrlc_s0Rd107iHPafP0u69iGIM0MQgBuUAuMb-tzs,18488
2583
2605
  scitex/verify/_hash.py,sha256=0KLzhNVGZLoenXbXunxCXth4T57y7qNbOJDwKIxPass,4387
2584
2606
  scitex/verify/_integration.py,sha256=mgBrAYFYf0CWzvitrAu3rcXzPfKY7ECDV5Hqim-9Ayg,3029
2585
2607
  scitex/verify/_rerun.py,sha256=7Oc3ld-h8_E5pkxWIfy_hzsbQM-ZjWU9NJIJcGDUCbs,7988
2586
2608
  scitex/verify/_tracker.py,sha256=xTuqS4MDj-K6WjZmBgLENJ7BhrmPPTYV7wbkLk0e6BA,8753
2587
- scitex/verify/_visualize.py,sha256=62TN6pd_rTiAD95mpHiLBpZe-UfUkOS-fDE2s7e9mG0,1092
2588
- scitex/verify/_viz/__init__.py,sha256=RBP4peOqcH9YUlJQoIgsLity0CL0ue2Bw-oYrj8MSVU,1486
2609
+ scitex/verify/_visualize.py,sha256=AbR8kxl0ldd3WJFEWT3E7YaGfAjLwwVD_bznDRZ-aL0,992
2610
+ scitex/verify/_viz/__init__.py,sha256=njfg-RFK15xoYXkcwlXWxoMDZixDQcgM5qwJWuKGqHA,987
2589
2611
  scitex/verify/_viz/_colors.py,sha256=LsXQAucol6MFkxOewLyOElldHEGfX0mMkUDe0KDcI0g,2257
2590
2612
  scitex/verify/_viz/_format.py,sha256=MFAJapdJ5dFOsAtXbELuQxYbvQtLP16H16v7nC-dprY,9188
2591
2613
  scitex/verify/_viz/_json.py,sha256=WLBDlveTsJJjpedZ6W0cbu9ILvGatOKEL-Ne2HgtQZY,6044
2592
2614
  scitex/verify/_viz/_mermaid.py,sha256=2dUKSOmLkEKLTyZLas8E3pa-TyIzPSMkBSedM3Obi84,13811
2593
- scitex/verify/_viz/_plotly.py,sha256=VHYhU7UciloMXaEw36rupng6AJ9P3gZAJxBuQBUVrhY,5287
2594
2615
  scitex/verify/_viz/_templates.py,sha256=HDoQ_l2hEHxTPuA5msGV_pqosaE_3wrbzK--787vyLI,7449
2595
2616
  scitex/verify/_viz/_utils.py,sha256=wFQmLcEvRDvCcTS6--OPB-oLqpfwv2w4-VeSV6dA6aU,1507
2596
2617
  scitex/web/__init__.py,sha256=MwORZLyf0uTiePNJ08KWPQatOA_FbqUiT_nbwY0KBJ4,1167
@@ -2600,8 +2621,8 @@ scitex/web/_summarize_url.py,sha256=PpWBk727pjC_yivI_RVNU_RMxjV_jrqlMNaD6kXQAPk,
2600
2621
  scitex/web/download_images.py,sha256=g4sxWzg0ip5Wig7ElPo6fDz5DdXKyJnAsBFwIYoQI6g,9473
2601
2622
  scitex/writer/README.md,sha256=RqUMOJD7wUiQjWoiLSf_hl_Y0IAE3_xPxhlp941zYe4,1299
2602
2623
  scitex/writer/__init__.py,sha256=jQqdIyvQhknySoUAMKreBhAa1KwZ0ieW8SYCppBukts,3301
2603
- scitex-2.17.0.dist-info/METADATA,sha256=m7BWKnGQz-nsEgjSsDYDHnrDDKKYBDCt0UT3TB5Tdj8,26534
2604
- scitex-2.17.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2605
- scitex-2.17.0.dist-info/entry_points.txt,sha256=ZtDrHnPNMnsSmAnQoCHNmk0xKotNyR2X_YFDDteupW8,497
2606
- scitex-2.17.0.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
2607
- scitex-2.17.0.dist-info/RECORD,,
2624
+ scitex-2.17.4.dist-info/METADATA,sha256=eUYxZ5DFUiuuKXHwgRTipSiwu_Ajk44CdHVIoSimdqg,26557
2625
+ scitex-2.17.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2626
+ scitex-2.17.4.dist-info/entry_points.txt,sha256=ZtDrHnPNMnsSmAnQoCHNmk0xKotNyR2X_YFDDteupW8,497
2627
+ scitex-2.17.4.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
2628
+ scitex-2.17.4.dist-info/RECORD,,
@@ -1,193 +0,0 @@
1
- #!/usr/bin/env python3
2
- # Timestamp: "2026-02-01 (ywatanabe)"
3
- # File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_viz/_plotly.py
4
- """Plotly-based interactive visualization for verification DAG."""
5
-
6
- from __future__ import annotations
7
-
8
- from pathlib import Path
9
- from typing import Optional, Union
10
-
11
- from .._chain import verify_chain, verify_run
12
- from .._db import get_db
13
-
14
-
15
- def generate_plotly_dag(
16
- session_id: Optional[str] = None,
17
- target_file: Optional[str] = None,
18
- title: str = "Verification DAG",
19
- ) -> go.Figure:
20
- """
21
- Generate interactive Plotly figure for verification DAG.
22
-
23
- Parameters
24
- ----------
25
- session_id : str, optional
26
- Start from this session
27
- target_file : str, optional
28
- Start from session that produced this file
29
- title : str, optional
30
- Title for the figure
31
-
32
- Returns
33
- -------
34
- plotly.graph_objects.Figure
35
- Interactive Plotly figure
36
- """
37
- try:
38
- import plotly.graph_objects as go
39
- except ImportError:
40
- raise ImportError("plotly required: pip install plotly")
41
-
42
- db = get_db()
43
- nodes = []
44
- edges = []
45
- node_colors = []
46
- node_texts = []
47
-
48
- if target_file:
49
- chain = verify_chain(target_file)
50
- for i, run in enumerate(chain.runs):
51
- script_name = Path(run.script_path).name if run.script_path else "unknown"
52
- nodes.append(run.session_id)
53
- node_texts.append(f"{script_name}<br>{run.session_id[:20]}...")
54
- node_colors.append("#90EE90" if run.is_verified else "#FFB6C1")
55
-
56
- for i in range(len(chain.runs) - 1):
57
- edges.append((i + 1, i)) # parent -> child
58
-
59
- elif session_id:
60
- chain_ids = db.get_chain(session_id)
61
- for i, sid in enumerate(chain_ids):
62
- run = db.get_run(sid)
63
- verification = verify_run(sid)
64
- script_name = (
65
- Path(run["script_path"]).name
66
- if run and run.get("script_path")
67
- else "unknown"
68
- )
69
- nodes.append(sid)
70
- node_texts.append(f"{script_name}<br>{sid[:20]}...")
71
- node_colors.append("#90EE90" if verification.is_verified else "#FFB6C1")
72
-
73
- for i in range(len(chain_ids) - 1):
74
- edges.append((i + 1, i))
75
-
76
- if not nodes:
77
- nodes = ["No data"]
78
- node_texts = ["No runs found"]
79
- node_colors = ["#CCCCCC"]
80
-
81
- # Create layout positions (vertical flow)
82
- n = len(nodes)
83
- x_pos = [0.5] * n
84
- y_pos = [1 - i / max(n - 1, 1) for i in range(n)]
85
-
86
- # Create edge traces
87
- edge_x = []
88
- edge_y = []
89
- for src, dst in edges:
90
- edge_x.extend([x_pos[src], x_pos[dst], None])
91
- edge_y.extend([y_pos[src], y_pos[dst], None])
92
-
93
- edge_trace = go.Scatter(
94
- x=edge_x,
95
- y=edge_y,
96
- line=dict(width=2, color="#888"),
97
- hoverinfo="none",
98
- mode="lines",
99
- )
100
-
101
- # Create node trace
102
- node_trace = go.Scatter(
103
- x=x_pos,
104
- y=y_pos,
105
- mode="markers+text",
106
- hoverinfo="text",
107
- text=node_texts,
108
- textposition="middle right",
109
- marker=dict(
110
- size=30,
111
- color=node_colors,
112
- line=dict(width=2, color="#333"),
113
- ),
114
- )
115
-
116
- # Create figure
117
- fig = go.Figure(
118
- data=[edge_trace, node_trace],
119
- layout=go.Layout(
120
- title=dict(text=title, font=dict(size=16)),
121
- showlegend=False,
122
- hovermode="closest",
123
- xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),
124
- yaxis=dict(showgrid=False, zeroline=False, showticklabels=False),
125
- margin=dict(l=40, r=40, t=60, b=40),
126
- plot_bgcolor="white",
127
- annotations=[
128
- dict(
129
- text="🟢 Verified | 🔴 Failed",
130
- showarrow=False,
131
- xref="paper",
132
- yref="paper",
133
- x=0,
134
- y=-0.1,
135
- font=dict(size=12),
136
- )
137
- ],
138
- ),
139
- )
140
-
141
- return fig
142
-
143
-
144
- def render_plotly_dag(
145
- output_path: Union[str, Path],
146
- session_id: Optional[str] = None,
147
- target_file: Optional[str] = None,
148
- title: str = "Verification DAG",
149
- ) -> Path:
150
- """
151
- Render verification DAG using Plotly.
152
-
153
- Parameters
154
- ----------
155
- output_path : str or Path
156
- Output file path (.html or .png)
157
- session_id : str, optional
158
- Start from this session
159
- target_file : str, optional
160
- Start from session that produced this file
161
- title : str, optional
162
- Title for the visualization
163
-
164
- Returns
165
- -------
166
- Path
167
- Path to the generated file
168
- """
169
- output_path = Path(output_path)
170
- output_path.parent.mkdir(parents=True, exist_ok=True)
171
-
172
- fig = generate_plotly_dag(
173
- session_id=session_id,
174
- target_file=target_file,
175
- title=title,
176
- )
177
-
178
- ext = output_path.suffix.lower()
179
-
180
- if ext == ".html":
181
- fig.write_html(str(output_path))
182
- elif ext == ".png":
183
- fig.write_image(str(output_path))
184
- elif ext == ".svg":
185
- fig.write_image(str(output_path))
186
- else:
187
- fig.write_html(str(output_path.with_suffix(".html")))
188
- return output_path.with_suffix(".html")
189
-
190
- return output_path
191
-
192
-
193
- # EOF