docpull 6.2.0__tar.gz → 6.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. {docpull-6.2.0/src/docpull.egg-info → docpull-6.3.0}/PKG-INFO +13 -2
  2. {docpull-6.2.0 → docpull-6.3.0}/README.md +12 -1
  3. {docpull-6.2.0 → docpull-6.3.0}/pyproject.toml +1 -1
  4. docpull-6.3.0/src/docpull/__init__.py +287 -0
  5. docpull-6.3.0/src/docpull/acquisition_workflows.py +567 -0
  6. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/basis.py +18 -14
  7. docpull-6.3.0/src/docpull/cache/__init__.py +50 -0
  8. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/cache/frontier.py +72 -10
  9. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/cache/manager.py +6 -1
  10. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/cli.py +188 -55
  11. docpull-6.3.0/src/docpull/context_packs/__init__.py +66 -0
  12. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/cli.py +5 -2
  13. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/common.py +43 -15
  14. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/dataset.py +128 -12
  15. docpull-6.3.0/src/docpull/context_packs/relationship.py +567 -0
  16. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/typed.py +54 -1
  17. docpull-6.3.0/src/docpull/context_packs/workflow_cli.py +99 -0
  18. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/contracts.py +153 -1
  19. docpull-6.3.0/src/docpull/conversion/__init__.py +76 -0
  20. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/extractor.py +16 -4
  21. docpull-6.3.0/src/docpull/discovery/__init__.py +101 -0
  22. docpull-6.3.0/src/docpull/discovery/link_extractors/__init__.py +37 -0
  23. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/evidence.py +76 -3
  24. docpull-6.3.0/src/docpull/export_formats.py +27 -0
  25. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/exports.py +7 -25
  26. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/graph.py +84 -34
  27. docpull-6.3.0/src/docpull/http/__init__.py +46 -0
  28. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/http/client.py +66 -1
  29. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/local_workflows.py +48 -9
  30. docpull-6.3.0/src/docpull/mcp/__init__.py +24 -0
  31. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/mcp/server.py +121 -22
  32. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/mcp/tools.py +21 -4
  33. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/metadata_extractor.py +1 -1
  34. docpull-6.3.0/src/docpull/models/__init__.py +128 -0
  35. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/models/events.py +6 -1
  36. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/models/run.py +15 -6
  37. docpull-6.3.0/src/docpull/models/schema.py +9 -0
  38. docpull-6.3.0/src/docpull/native_integrations.py +88 -0
  39. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/output_contract.py +7 -2
  40. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pack_reader.py +86 -20
  41. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pack_tools.py +278 -75
  42. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/base.py +6 -0
  43. docpull-6.3.0/src/docpull/pipeline/steps/__init__.py +74 -0
  44. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/convert.py +51 -3
  45. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/fetch.py +26 -0
  46. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/metadata.py +2 -2
  47. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/project.py +34 -5
  48. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/intelligence-bundle.v1.schema.json +133 -0
  49. docpull-6.3.0/src/docpull/schemas/relationship-pack.v1.schema.json +401 -0
  50. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/workflow-result.v1.schema.json +45 -0
  51. docpull-6.3.0/src/docpull/security/__init__.py +43 -0
  52. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/surface.py +8 -1
  53. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/workflows.py +74 -2
  54. {docpull-6.2.0 → docpull-6.3.0/src/docpull.egg-info}/PKG-INFO +13 -2
  55. {docpull-6.2.0 → docpull-6.3.0}/src/docpull.egg-info/SOURCES.txt +11 -0
  56. docpull-6.3.0/tests/test_acquisition_workflows.py +100 -0
  57. {docpull-6.2.0 → docpull-6.3.0}/tests/test_ci_policy.py +56 -15
  58. {docpull-6.2.0 → docpull-6.3.0}/tests/test_cli.py +46 -0
  59. docpull-6.3.0/tests/test_frontier_resume.py +90 -0
  60. docpull-6.3.0/tests/test_http_efficiency.py +169 -0
  61. docpull-6.3.0/tests/test_import_efficiency.py +107 -0
  62. docpull-6.3.0/tests/test_native_integrations.py +29 -0
  63. {docpull-6.2.0 → docpull-6.3.0}/tests/test_pack_tools.py +23 -0
  64. {docpull-6.2.0 → docpull-6.3.0}/tests/test_pipeline.py +20 -0
  65. docpull-6.3.0/tests/test_relationship_workflow.py +218 -0
  66. {docpull-6.2.0 → docpull-6.3.0}/tests/test_release_a_plus_check_script.py +8 -2
  67. {docpull-6.2.0 → docpull-6.3.0}/tests/test_surface_contract.py +16 -16
  68. {docpull-6.2.0 → docpull-6.3.0}/tests/test_typed_knowledge_packs.py +35 -0
  69. {docpull-6.2.0 → docpull-6.3.0}/tests/test_workflow_contracts.py +4 -1
  70. docpull-6.2.0/src/docpull/__init__.py +0 -244
  71. docpull-6.2.0/src/docpull/cache/__init__.py +0 -16
  72. docpull-6.2.0/src/docpull/context_packs/__init__.py +0 -46
  73. docpull-6.2.0/src/docpull/context_packs/workflow_cli.py +0 -52
  74. docpull-6.2.0/src/docpull/conversion/__init__.py +0 -37
  75. docpull-6.2.0/src/docpull/discovery/__init__.py +0 -52
  76. docpull-6.2.0/src/docpull/discovery/link_extractors/__init__.py +0 -11
  77. docpull-6.2.0/src/docpull/http/__init__.py +0 -13
  78. docpull-6.2.0/src/docpull/mcp/__init__.py +0 -10
  79. docpull-6.2.0/src/docpull/models/__init__.py +0 -61
  80. docpull-6.2.0/src/docpull/pipeline/steps/__init__.py +0 -31
  81. docpull-6.2.0/src/docpull/security/__init__.py +0 -13
  82. docpull-6.2.0/tests/test_frontier_resume.py +0 -35
  83. {docpull-6.2.0 → docpull-6.3.0}/LICENSE +0 -0
  84. {docpull-6.2.0 → docpull-6.3.0}/setup.cfg +0 -0
  85. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/__main__.py +0 -0
  86. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/accounting.py +0 -0
  87. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/agent_publish.py +0 -0
  88. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/auth_cli.py +0 -0
  89. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/benchmark.py +0 -0
  90. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/cache/streaming_dedup.py +0 -0
  91. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/change_events.py +0 -0
  92. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_aliases.py +0 -0
  93. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_ci.py +0 -0
  94. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/_legacy_cli.py +0 -0
  95. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/brand.py +0 -0
  96. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/feed.py +0 -0
  97. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/openapi.py +0 -0
  98. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/package.py +0 -0
  99. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/paper.py +0 -0
  100. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/policy_pack.py +0 -0
  101. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/product.py +0 -0
  102. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/repo.py +0 -0
  103. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/schema_extract.py +0 -0
  104. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/search.py +0 -0
  105. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/standards.py +0 -0
  106. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/styleguide.py +0 -0
  107. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/transcript.py +0 -0
  108. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/typed_models.py +0 -0
  109. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/visuals.py +0 -0
  110. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/context_packs/wiki.py +0 -0
  111. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/contracts_cli.py +0 -0
  112. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/article_cleanup.py +0 -0
  113. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/chunking.py +0 -0
  114. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/ensemble.py +0 -0
  115. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/filings.py +0 -0
  116. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/markdown.py +0 -0
  117. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/protocols.py +0 -0
  118. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/special_cases.py +0 -0
  119. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/conversion/trafilatura_extractor.py +0 -0
  120. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/core/__init__.py +0 -0
  121. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/core/fetcher.py +0 -0
  122. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/_fetch.py +0 -0
  123. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/composite.py +0 -0
  124. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/contracts.py +0 -0
  125. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/crawler.py +0 -0
  126. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/filters.py +0 -0
  127. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/link_extractors/enhanced.py +0 -0
  128. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/link_extractors/protocols.py +0 -0
  129. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/link_extractors/static.py +0 -0
  130. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/protocols.py +0 -0
  131. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery/sitemap.py +0 -0
  132. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/discovery_cli.py +0 -0
  133. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/doctor.py +0 -0
  134. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/document_parse.py +0 -0
  135. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/document_worker.py +0 -0
  136. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/eval_grade.py +0 -0
  137. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/evidence_pack.py +0 -0
  138. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/fixtures/__init__.py +0 -0
  139. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/fixtures/parallel-search-extract.json +0 -0
  140. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/free_core.py +0 -0
  141. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/free_core_smoke.py +0 -0
  142. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/hosted.py +0 -0
  143. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/http/protocols.py +0 -0
  144. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/http/rate_limiter.py +0 -0
  145. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/judge.py +0 -0
  146. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/mcp/sources.py +0 -0
  147. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/models/config.py +0 -0
  148. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/models/document.py +0 -0
  149. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/models/profiles.py +0 -0
  150. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/monitor.py +0 -0
  151. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/parallel_workflows.py +0 -0
  152. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/parity.py +0 -0
  153. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/parity_cli.py +0 -0
  154. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/passk.py +0 -0
  155. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/__init__.py +0 -0
  156. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/manifest.py +0 -0
  157. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/chunk.py +0 -0
  158. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/dedup.py +0 -0
  159. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/render.py +0 -0
  160. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/save.py +0 -0
  161. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/save_json.py +0 -0
  162. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/save_ndjson.py +0 -0
  163. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/save_okf.py +0 -0
  164. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/save_sqlite.py +0 -0
  165. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/pipeline/steps/validate.py +0 -0
  166. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/policy.py +0 -0
  167. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/policy_cli.py +0 -0
  168. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/provider_adapters.py +0 -0
  169. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/provider_capabilities.py +0 -0
  170. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/provider_cli.py +0 -0
  171. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/provider_keys.py +0 -0
  172. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/provider_probes.py +0 -0
  173. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/py.typed +0 -0
  174. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/redaction.py +0 -0
  175. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/rendering.py +0 -0
  176. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/artifact-manifest.v1.schema.json +0 -0
  177. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/basis.v2.schema.json +0 -0
  178. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/change-event.v1.schema.json +0 -0
  179. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/citation-map.v1.schema.json +0 -0
  180. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/document.v3.schema.json +0 -0
  181. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/pack.v3.schema.json +0 -0
  182. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/provenance.v1.schema.json +0 -0
  183. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/rights.v1.schema.json +0 -0
  184. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/run-identity.v1.schema.json +0 -0
  185. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/schemas/workflow-request.v1.schema.json +0 -0
  186. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/scraper.py +0 -0
  187. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/security/download_policy.py +0 -0
  188. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/security/robots.py +0 -0
  189. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/security/url_validator.py +0 -0
  190. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/server.py +0 -0
  191. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/share.py +0 -0
  192. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/skill_export.py +0 -0
  193. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/source_scoring.py +0 -0
  194. {docpull-6.2.0 → docpull-6.3.0}/src/docpull/time_utils.py +0 -0
  195. {docpull-6.2.0 → docpull-6.3.0}/src/docpull.egg-info/dependency_links.txt +0 -0
  196. {docpull-6.2.0 → docpull-6.3.0}/src/docpull.egg-info/entry_points.txt +0 -0
  197. {docpull-6.2.0 → docpull-6.3.0}/src/docpull.egg-info/requires.txt +0 -0
  198. {docpull-6.2.0 → docpull-6.3.0}/src/docpull.egg-info/top_level.txt +0 -0
  199. {docpull-6.2.0 → docpull-6.3.0}/tests/test_accounting.py +0 -0
  200. {docpull-6.2.0 → docpull-6.3.0}/tests/test_auth_cli.py +0 -0
  201. {docpull-6.2.0 → docpull-6.3.0}/tests/test_basis.py +0 -0
  202. {docpull-6.2.0 → docpull-6.3.0}/tests/test_benchmark.py +0 -0
  203. {docpull-6.2.0 → docpull-6.3.0}/tests/test_cache_conditional_get.py +0 -0
  204. {docpull-6.2.0 → docpull-6.3.0}/tests/test_chunking.py +0 -0
  205. {docpull-6.2.0 → docpull-6.3.0}/tests/test_claim_audit_script.py +0 -0
  206. {docpull-6.2.0 → docpull-6.3.0}/tests/test_context_ci.py +0 -0
  207. {docpull-6.2.0 → docpull-6.3.0}/tests/test_context_packs.py +0 -0
  208. {docpull-6.2.0 → docpull-6.3.0}/tests/test_conversion.py +0 -0
  209. {docpull-6.2.0 → docpull-6.3.0}/tests/test_convert_step_new.py +0 -0
  210. {docpull-6.2.0 → docpull-6.3.0}/tests/test_discovery.py +0 -0
  211. {docpull-6.2.0 → docpull-6.3.0}/tests/test_discovery_contracts.py +0 -0
  212. {docpull-6.2.0 → docpull-6.3.0}/tests/test_doctor.py +0 -0
  213. {docpull-6.2.0 → docpull-6.3.0}/tests/test_document_parse.py +0 -0
  214. {docpull-6.2.0 → docpull-6.3.0}/tests/test_document_record.py +0 -0
  215. {docpull-6.2.0 → docpull-6.3.0}/tests/test_evidence_pack.py +0 -0
  216. {docpull-6.2.0 → docpull-6.3.0}/tests/test_exports.py +0 -0
  217. {docpull-6.2.0 → docpull-6.3.0}/tests/test_extractor_ensemble.py +0 -0
  218. {docpull-6.2.0 → docpull-6.3.0}/tests/test_feed_pack.py +0 -0
  219. {docpull-6.2.0 → docpull-6.3.0}/tests/test_free_core.py +0 -0
  220. {docpull-6.2.0 → docpull-6.3.0}/tests/test_graph.py +0 -0
  221. {docpull-6.2.0 → docpull-6.3.0}/tests/test_hosted.py +0 -0
  222. {docpull-6.2.0 → docpull-6.3.0}/tests/test_integration.py +0 -0
  223. {docpull-6.2.0 → docpull-6.3.0}/tests/test_judge.py +0 -0
  224. {docpull-6.2.0 → docpull-6.3.0}/tests/test_link_extractors.py +0 -0
  225. {docpull-6.2.0 → docpull-6.3.0}/tests/test_live_web_smoke.py +0 -0
  226. {docpull-6.2.0 → docpull-6.3.0}/tests/test_local_workflows.py +0 -0
  227. {docpull-6.2.0 → docpull-6.3.0}/tests/test_mcp_server.py +0 -0
  228. {docpull-6.2.0 → docpull-6.3.0}/tests/test_mcp_tools.py +0 -0
  229. {docpull-6.2.0 → docpull-6.3.0}/tests/test_metadata_extractor.py +0 -0
  230. {docpull-6.2.0 → docpull-6.3.0}/tests/test_monitor.py +0 -0
  231. {docpull-6.2.0 → docpull-6.3.0}/tests/test_naming.py +0 -0
  232. {docpull-6.2.0 → docpull-6.3.0}/tests/test_openapi_pack.py +0 -0
  233. {docpull-6.2.0 → docpull-6.3.0}/tests/test_optional_extras_installed.py +0 -0
  234. {docpull-6.2.0 → docpull-6.3.0}/tests/test_output_contract.py +0 -0
  235. {docpull-6.2.0 → docpull-6.3.0}/tests/test_outputs_e2e.py +0 -0
  236. {docpull-6.2.0 → docpull-6.3.0}/tests/test_pack_server.py +0 -0
  237. {docpull-6.2.0 → docpull-6.3.0}/tests/test_parallel_workflows.py +0 -0
  238. {docpull-6.2.0 → docpull-6.3.0}/tests/test_parity_workflows.py +0 -0
  239. {docpull-6.2.0 → docpull-6.3.0}/tests/test_passk.py +0 -0
  240. {docpull-6.2.0 → docpull-6.3.0}/tests/test_policy.py +0 -0
  241. {docpull-6.2.0 → docpull-6.3.0}/tests/test_policy_cli.py +0 -0
  242. {docpull-6.2.0 → docpull-6.3.0}/tests/test_project.py +0 -0
  243. {docpull-6.2.0 → docpull-6.3.0}/tests/test_provider_adapters.py +0 -0
  244. {docpull-6.2.0 → docpull-6.3.0}/tests/test_provider_cli.py +0 -0
  245. {docpull-6.2.0 → docpull-6.3.0}/tests/test_provider_keys.py +0 -0
  246. {docpull-6.2.0 → docpull-6.3.0}/tests/test_provider_probes.py +0 -0
  247. {docpull-6.2.0 → docpull-6.3.0}/tests/test_public_feature_smoke.py +0 -0
  248. {docpull-6.2.0 → docpull-6.3.0}/tests/test_rate_limiter.py +0 -0
  249. {docpull-6.2.0 → docpull-6.3.0}/tests/test_real_feature_smoke_script.py +0 -0
  250. {docpull-6.2.0 → docpull-6.3.0}/tests/test_real_site_regressions.py +0 -0
  251. {docpull-6.2.0 → docpull-6.3.0}/tests/test_rendering.py +0 -0
  252. {docpull-6.2.0 → docpull-6.3.0}/tests/test_reproducible_release_build.py +0 -0
  253. {docpull-6.2.0 → docpull-6.3.0}/tests/test_save_ndjson.py +0 -0
  254. {docpull-6.2.0 → docpull-6.3.0}/tests/test_save_sqlite.py +0 -0
  255. {docpull-6.2.0 → docpull-6.3.0}/tests/test_security_hardening.py +0 -0
  256. {docpull-6.2.0 → docpull-6.3.0}/tests/test_share.py +0 -0
  257. {docpull-6.2.0 → docpull-6.3.0}/tests/test_source_scoring.py +0 -0
  258. {docpull-6.2.0 → docpull-6.3.0}/tests/test_special_cases.py +0 -0
  259. {docpull-6.2.0 → docpull-6.3.0}/tests/test_time_utils.py +0 -0
  260. {docpull-6.2.0 → docpull-6.3.0}/tests/test_trafilatura_extractor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docpull
3
- Version: 6.2.0
3
+ Version: 6.3.0
4
4
  Summary: Declare, sync, diff, and lock context dependencies for AI agents
5
5
  Author-email: Zachary Roth <support@raintree.technology>
6
6
  Maintainer-email: Raintree Technology <support@raintree.technology>
@@ -122,6 +122,14 @@ Requires-Dist: types-defusedxml>=0.7.0; extra == "dev"
122
122
  Requires-Dist: types-pyyaml>=6.0.0; extra == "dev"
123
123
  Dynamic: license-file
124
124
 
125
+ <p align="center">
126
+ <img
127
+ src="https://raw.githubusercontent.com/raintree-technology/docpull/main/docs/launch-assets/logo-square-light-400.png"
128
+ alt="DocPull"
129
+ width="128"
130
+ />
131
+ </p>
132
+
125
133
  # docpull
126
134
 
127
135
  **Context dependencies for AI agents. Browser-free by default.**
@@ -297,6 +305,8 @@ docpull repo-pack psf/requests -o packs/repo --cache
297
305
  docpull package-pack pypi:requests -o packs/package
298
306
  docpull standards-pack rfc:9110 -o packs/standard
299
307
  docpull dataset-pack ./metrics.csv -o packs/dataset
308
+ docpull dataset-pack 'https://data.example.org/rows.json?$limit=100' -o packs/dataset
309
+ docpull relationship-pack example.com --subject "Example Brand" -o packs/relationships
300
310
  docpull transcript-pack ./meeting.vtt -o packs/transcript
301
311
  docpull wiki-pack wiki:Web_scraping -o packs/wiki
302
312
  docpull brand-pack example.com -o packs/brand
@@ -575,7 +585,8 @@ special handling for common web, documentation, and API surfaces.
575
585
  | Public GitHub repos | `docpull repo-pack` emits repo metadata, README/docs/examples/changelog files, manifests, and releases |
576
586
  | npm / PyPI packages | `docpull package-pack` emits registry metadata, README/description, versions, license, dependencies, and install commands |
577
587
  | Standards | `docpull standards-pack` emits RFC, IETF, W3C, and WHATWG metadata plus section-level records |
578
- | Local datasets | `docpull dataset-pack` emits bounded schema, exact row counts where streamable, column, null-count, and sample summaries |
588
+ | Local/remote datasets | `docpull dataset-pack` emits bounded schema, exact row counts where streamable, column/null/sample summaries, and HTTPS JSON/CSV snapshot provenance |
589
+ | Relationship review | `docpull relationship-pack` emits cited observations and explicit coverage gaps without approving claims or inferring independence |
579
590
  | Transcripts | `docpull transcript-pack` emits timestamped segment records from VTT, SRT, text, JSON, or direct transcript URLs |
580
591
  | Wikimedia / Wikipedia | `docpull wiki-pack` emits MediaWiki REST page metadata, license/revision metadata, and section-level records |
581
592
  | Brand evidence | `docpull brand-pack` emits cited identity, firmographic, social, logo, and color observations |
@@ -1,3 +1,11 @@
1
+ <p align="center">
2
+ <img
3
+ src="https://raw.githubusercontent.com/raintree-technology/docpull/main/docs/launch-assets/logo-square-light-400.png"
4
+ alt="DocPull"
5
+ width="128"
6
+ />
7
+ </p>
8
+
1
9
  # docpull
2
10
 
3
11
  **Context dependencies for AI agents. Browser-free by default.**
@@ -173,6 +181,8 @@ docpull repo-pack psf/requests -o packs/repo --cache
173
181
  docpull package-pack pypi:requests -o packs/package
174
182
  docpull standards-pack rfc:9110 -o packs/standard
175
183
  docpull dataset-pack ./metrics.csv -o packs/dataset
184
+ docpull dataset-pack 'https://data.example.org/rows.json?$limit=100' -o packs/dataset
185
+ docpull relationship-pack example.com --subject "Example Brand" -o packs/relationships
176
186
  docpull transcript-pack ./meeting.vtt -o packs/transcript
177
187
  docpull wiki-pack wiki:Web_scraping -o packs/wiki
178
188
  docpull brand-pack example.com -o packs/brand
@@ -451,7 +461,8 @@ special handling for common web, documentation, and API surfaces.
451
461
  | Public GitHub repos | `docpull repo-pack` emits repo metadata, README/docs/examples/changelog files, manifests, and releases |
452
462
  | npm / PyPI packages | `docpull package-pack` emits registry metadata, README/description, versions, license, dependencies, and install commands |
453
463
  | Standards | `docpull standards-pack` emits RFC, IETF, W3C, and WHATWG metadata plus section-level records |
454
- | Local datasets | `docpull dataset-pack` emits bounded schema, exact row counts where streamable, column, null-count, and sample summaries |
464
+ | Local/remote datasets | `docpull dataset-pack` emits bounded schema, exact row counts where streamable, column/null/sample summaries, and HTTPS JSON/CSV snapshot provenance |
465
+ | Relationship review | `docpull relationship-pack` emits cited observations and explicit coverage gaps without approving claims or inferring independence |
455
466
  | Transcripts | `docpull transcript-pack` emits timestamped segment records from VTT, SRT, text, JSON, or direct transcript URLs |
456
467
  | Wikimedia / Wikipedia | `docpull wiki-pack` emits MediaWiki REST page metadata, license/revision metadata, and section-level records |
457
468
  | Brand evidence | `docpull brand-pack` emits cited identity, firmographic, social, logo, and color observations |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "docpull"
7
- version = "6.2.0"
7
+ version = "6.3.0"
8
8
  dynamic = []
9
9
  description = "Declare, sync, diff, and lock context dependencies for AI agents"
10
10
  readme = {file = "README.md", content-type = "text/markdown"}
@@ -0,0 +1,287 @@
1
+ """DocPull — reproducible context dependencies for AI agents.
2
+
3
+ The public SDK is loaded lazily. Importing :mod:`docpull` is common to every
4
+ CLI command and Python submodule import, so the package root must not eagerly
5
+ load optional workflows or rendering backends. Attribute access and
6
+ ``from docpull import ...`` retain the public contract while loading only the
7
+ module that owns the requested symbol.
8
+ """
9
+ # ruff: noqa: F401 - TYPE_CHECKING imports document the lazy public re-exports.
10
+
11
+ from __future__ import annotations
12
+
13
+ from importlib import import_module
14
+ from typing import TYPE_CHECKING, Any
15
+
16
+ from .surface import PUBLIC_SDK_EXPORTS
17
+
18
+ __version__ = "6.3.0"
19
+
20
+ _LAZY_EXPORTS: dict[str, tuple[str, str]] = {
21
+ **{
22
+ name: (".context_packs", name)
23
+ for name in (
24
+ "async_build_dataset_pack",
25
+ "async_build_package_pack",
26
+ "async_build_paper_pack",
27
+ "async_build_repo_pack",
28
+ "async_build_standards_pack",
29
+ "async_build_transcript_pack",
30
+ "async_build_wiki_pack",
31
+ "build_brand_pack",
32
+ "build_dataset_pack",
33
+ "build_feed_pack",
34
+ "build_image_pack",
35
+ "build_openapi_pack",
36
+ "build_package_pack",
37
+ "build_paper_pack",
38
+ "build_policy_pack",
39
+ "build_relationship_pack",
40
+ "build_product_pack",
41
+ "build_repo_pack",
42
+ "build_standards_pack",
43
+ "build_styleguide_pack",
44
+ "build_transcript_pack",
45
+ "build_wiki_pack",
46
+ "capture_screenshot_pack",
47
+ )
48
+ },
49
+ **{
50
+ name: (".contracts", name)
51
+ for name in (
52
+ "ArtifactManifest",
53
+ "ChangeEvent",
54
+ "EvidenceSpan",
55
+ "IntelligenceBundle",
56
+ "CoverageResult",
57
+ "RelationshipCandidate",
58
+ "RelationshipPack",
59
+ "SourceAuthority",
60
+ "WorkflowRequest",
61
+ "WorkflowResult",
62
+ "bundled_schema_path",
63
+ "write_contract_schemas",
64
+ )
65
+ },
66
+ **{
67
+ name: (".workflows", name)
68
+ for name in ("async_run_workflow", "create_workflow_request", "run_workflow")
69
+ },
70
+ **{name: (".core.fetcher", name) for name in ("Fetcher", "fetch_blocking", "fetch_one")},
71
+ **{name: (".conversion.chunking", name) for name in ("Chunk", "TokenCounter", "chunk_markdown")},
72
+ "PageContext": (".pipeline.base", "PageContext"),
73
+ **{name: (".pipeline.steps", name) for name in ("SqliteSearchResult", "search_sqlite_documents")},
74
+ **{
75
+ name: (".models.config", name)
76
+ for name in (
77
+ "BudgetConfig",
78
+ "CacheConfig",
79
+ "ContentFilterConfig",
80
+ "CrawlConfig",
81
+ "DocpullConfig",
82
+ "NetworkConfig",
83
+ "OutputConfig",
84
+ "PerformanceConfig",
85
+ "ProfileName",
86
+ "RenderActionPolicy",
87
+ "RenderConfig",
88
+ "RenderViewport",
89
+ )
90
+ },
91
+ **{name: (".models.events", name) for name in ("EventType", "FetchEvent", "FetchStats")},
92
+ **{name: (".cache", name) for name in ("CacheManager", "StreamingDeduplicator")},
93
+ "PolicyConfig": (".policy", "PolicyConfig"),
94
+ **{name: (".local_workflows", name) for name in ("audit_pack", "refresh_pack")},
95
+ **{
96
+ name: (".document_parse", name)
97
+ for name in ("DocumentParseError", "ParsedDocument", "parse_documents", "parse_one_document")
98
+ },
99
+ **{
100
+ name: (".pack_tools", name)
101
+ for name in (
102
+ "build_citation_map",
103
+ "build_company_brain_bundle",
104
+ "build_intelligence_bundle",
105
+ "build_research_brief",
106
+ "diff_packs",
107
+ "extract_pack_entities",
108
+ "prepare_pack",
109
+ "score_pack",
110
+ "score_pack_sources",
111
+ "search_pack",
112
+ )
113
+ },
114
+ "validate_pack_contract": (".output_contract", "validate_pack_contract"),
115
+ **{name: (".context_ci", name) for name in ("CIThresholds", "ContextCIError", "run_context_ci")},
116
+ **{name: (".exports", name) for name in ("ExportResult", "export_pack")},
117
+ **{name: (".pack_reader", name) for name in ("LocalPack", "PackReadError", "PackSource", "load_pack")},
118
+ **{
119
+ name: (".graph", name)
120
+ for name in (
121
+ "GraphError",
122
+ "build_graph",
123
+ "graph_neighbors",
124
+ "graph_status",
125
+ "load_graph",
126
+ "query_graph",
127
+ "refresh_graph",
128
+ )
129
+ },
130
+ **{name: (".server", name) for name in ("PackASGIApp", "PackServerError", "create_pack_app")},
131
+ **{
132
+ name: (".share", name)
133
+ for name in ("ReportHTTPServer", "ShareError", "create_report_server", "render_report_document")
134
+ },
135
+ **{
136
+ name: (".rendering", name)
137
+ for name in (
138
+ "AgentBrowserRenderer",
139
+ "E2BSandboxRenderer",
140
+ "RenderedPage",
141
+ "Renderer",
142
+ "RenderError",
143
+ "RendererUnavailableError",
144
+ "VercelSandboxRenderer",
145
+ "agent_browser_binary",
146
+ "check_agent_browser_availability",
147
+ "check_e2b_sandbox_availability",
148
+ "check_render_backend_availability",
149
+ "check_vercel_sandbox_availability",
150
+ "estimate_cloud_render_cost_usd",
151
+ "render_url",
152
+ "render_url_to_directory",
153
+ )
154
+ },
155
+ }
156
+
157
+ __all__ = list(PUBLIC_SDK_EXPORTS)
158
+
159
+
160
+ def __getattr__(name: str) -> Any:
161
+ """Load one public SDK symbol on first access and cache it locally."""
162
+ target = _LAZY_EXPORTS.get(name)
163
+ if target is None:
164
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
165
+ module_name, attribute_name = target
166
+ value = getattr(import_module(module_name, __name__), attribute_name)
167
+ globals()[name] = value
168
+ return value
169
+
170
+
171
+ def __dir__() -> list[str]:
172
+ """Include lazy public attributes in interactive discovery."""
173
+ return sorted(set(globals()) | set(__all__))
174
+
175
+
176
+ if TYPE_CHECKING:
177
+ from .cache import CacheManager, StreamingDeduplicator
178
+ from .context_ci import CIThresholds, ContextCIError, run_context_ci
179
+ from .context_packs import (
180
+ async_build_dataset_pack,
181
+ async_build_package_pack,
182
+ async_build_paper_pack,
183
+ async_build_repo_pack,
184
+ async_build_standards_pack,
185
+ async_build_transcript_pack,
186
+ async_build_wiki_pack,
187
+ build_brand_pack,
188
+ build_dataset_pack,
189
+ build_feed_pack,
190
+ build_image_pack,
191
+ build_openapi_pack,
192
+ build_package_pack,
193
+ build_paper_pack,
194
+ build_policy_pack,
195
+ build_product_pack,
196
+ build_relationship_pack,
197
+ build_repo_pack,
198
+ build_standards_pack,
199
+ build_styleguide_pack,
200
+ build_transcript_pack,
201
+ build_wiki_pack,
202
+ capture_screenshot_pack,
203
+ )
204
+ from .contracts import (
205
+ ArtifactManifest,
206
+ ChangeEvent,
207
+ CoverageResult,
208
+ EvidenceSpan,
209
+ IntelligenceBundle,
210
+ RelationshipCandidate,
211
+ RelationshipPack,
212
+ SourceAuthority,
213
+ WorkflowRequest,
214
+ WorkflowResult,
215
+ bundled_schema_path,
216
+ write_contract_schemas,
217
+ )
218
+ from .conversion.chunking import Chunk, TokenCounter, chunk_markdown
219
+ from .core.fetcher import Fetcher, fetch_blocking, fetch_one
220
+ from .document_parse import DocumentParseError, ParsedDocument, parse_documents, parse_one_document
221
+ from .exports import ExportResult, export_pack
222
+ from .graph import (
223
+ GraphError,
224
+ build_graph,
225
+ graph_neighbors,
226
+ graph_status,
227
+ load_graph,
228
+ query_graph,
229
+ refresh_graph,
230
+ )
231
+ from .local_workflows import audit_pack, refresh_pack
232
+ from .models.config import (
233
+ BudgetConfig,
234
+ CacheConfig,
235
+ ContentFilterConfig,
236
+ CrawlConfig,
237
+ DocpullConfig,
238
+ NetworkConfig,
239
+ OutputConfig,
240
+ PerformanceConfig,
241
+ ProfileName,
242
+ RenderActionPolicy,
243
+ RenderConfig,
244
+ RenderViewport,
245
+ )
246
+ from .models.events import EventType, FetchEvent, FetchStats
247
+ from .output_contract import validate_pack_contract
248
+ from .pack_reader import LocalPack, PackReadError, PackSource, load_pack
249
+ from .pack_tools import (
250
+ build_citation_map,
251
+ build_company_brain_bundle,
252
+ build_intelligence_bundle,
253
+ build_research_brief,
254
+ diff_packs,
255
+ extract_pack_entities,
256
+ prepare_pack,
257
+ score_pack,
258
+ score_pack_sources,
259
+ search_pack,
260
+ )
261
+ from .pipeline.base import PageContext
262
+ from .pipeline.steps import SqliteSearchResult, search_sqlite_documents
263
+ from .policy import PolicyConfig
264
+ from .rendering import (
265
+ AgentBrowserRenderer,
266
+ E2BSandboxRenderer,
267
+ RenderedPage,
268
+ Renderer,
269
+ RenderError,
270
+ RendererUnavailableError,
271
+ VercelSandboxRenderer,
272
+ agent_browser_binary,
273
+ check_agent_browser_availability,
274
+ check_e2b_sandbox_availability,
275
+ check_render_backend_availability,
276
+ check_vercel_sandbox_availability,
277
+ estimate_cloud_render_cost_usd,
278
+ render_url,
279
+ render_url_to_directory,
280
+ )
281
+ from .server import PackASGIApp, PackServerError, create_pack_app
282
+ from .share import ReportHTTPServer, ShareError, create_report_server, render_report_document
283
+ from .workflows import async_run_workflow, create_workflow_request, run_workflow
284
+
285
+
286
+ assert tuple(__all__) == PUBLIC_SDK_EXPORTS
287
+ assert set(_LAZY_EXPORTS) == set(__all__) - {"__version__"}