EVEMISSTechnology

Repository guide · architecture · v4

pydantic / pydantic-ai · Architecture

A 4,082-file Python repository organized around package trees (pydantic_ai_slim, pydantic_evals, pydantic_graph, src) with large docs, examples and tests directories. The ten itemized execution paths start at one skill-script entrypoint and end at unresolved external calls; module roles are inferred from static call degree.

Original repository
pydantic/pydantic-ai
License
MIT · open-source license
Analyzed revision · last verified
5b73d7c0da119f12c65b015b15eba3e4d128fca9 ·

Newer revision observed; the code this guide cites is unchanged. The default branch moved to f06bba53794d, checked 2026-10-03. A revision diff of 39 changed files found no change in the code regions this guide cites. The guide still describes revision 5b73d7c0da11; repository-wide counts (files, calls and so on) refer to that revision.

pydantic/pydantic-ai architecture | how it is structured

Terms used on this page
Entrypoint record
A file the analyzer marks as a place where execution can start. When it carries a __main__ guard excerpt, the file contains an if __name__ == "__main__": block and the excerpt shows what that block calls; without an excerpt, the file was flagged by its name only.
Bounded static execution path
A call chain reconstructed from the source code without running it, stopped after a fixed number of steps. It shows how far the code can be followed on paper, not what happens at run time.
Unresolved boundary
Where a static path stops because the next call goes into an external library or cannot be resolved without running the code. It marks the edge of this analysis, not a defect in the repository.
Static relations
Calls and imports found in the source. "External or unresolved" relations point outside the analyzed files.
Module role
The analyzer's label for a file, inferred from how many calls go in and out (for example core, entry/orchestration, leaf). It describes a position in the call graph, not the authors' design.
Test-like files
Files whose names or locations look like tests. This analysis counts them; it does not run them.
Observed · inferred · author-claimed · unresolved
How each statement is supported: read directly from the analyzed files; derived by the analyzer from them; stated by the repository's authors (metadata, README); or not established by this analysis.
Verified
Two uses on these pages. In an analyzer record ("verified provenance", "a verified entrypoint") it means the record was read directly from the analyzed files, which these guides call observed; for an entrypoint, the __main__ guard text is present. Since the analyzer fix of 2026-10-04, a file that only has an entrypoint-like name such as cli.py or main.py is recorded as inferred; guides analyzed before that still call such a file verified, and it is still only a guess about how the file is used. It does not mean the code was run or tested. "Last verified" is the date the guide last passed the lab's checks against the analysis record of the stated revision; it is not a review of the repository itself.

Shape at a glance

The analyzer's summary counts 4,082 analyzed files, and GitHub metadata records Python as the primary language. Recorded top-level directory sizes: tests 2,501, src 498, pydantic_ai_slim 426, docs 351, .github 136, examples 63, pydantic_evals 33, pydantic_graph 18, scripts 10, clai 6, agent_docs 6, .agents 7, .claude 12. The analyzer treats docs, src and tests as subsystem candidates; its maturity signals also count 2,514 test-like files, so test code dominates the inventory. Dependency records reference pyproject.toml manifests at the repository root and inside pydantic_evals and pydantic_graph, so at least those packages declare their own dependencies. README.md, pyproject.toml and LICENSE are flagged as project-level important files. The GitHub description describes agents, realtime voice, image generation and embeddings with end-to-end typing; the packet marks that author-claimed, and it is orientation, not analyzer evidence.

Entrypoints and control flow

The reconstruction reports 65 entrypoints and 580 bounded execution paths. Verified __main__ guards are spread widely: CI and maintenance scripts (.github/scripts/agent_provider_health.py, .github/scripts/agent_spend_report.py, scripts/check_cassettes.py), package __main__ modules (pydantic_ai_slim/pydantic_ai/__main__.py calling cli_exit(), clai/clai/__main__.py calling _cli.cli_exit('clai'), src/pydantic_clai2/pydantic_clai2/__main__.py), and an examples runner (examples/pydantic_ai_examples/__main__.py calling cli()). Three further entrypoints — .github/scripts/pydantic_ai_gh_aw_shim/cli.py, examples/pydantic_ai_examples/slack_lead_qualifier/app.py and pydantic_ai_slim/pydantic_ai/ui/_web/app.py — rest only on a filename heuristic. The analyzer's summary names .claude/skills/testing-skill/parse_cassette.py the main starting place; that is an inference tied to this skill script, not evidence that the library packages start there. Of the 580 paths, the ten itemized ones all begin at that script's __main__ guard: module level calls main, main builds an argparse parser, checks args.cassette.exists and calls parse_cassette, which reaches Cassette and cassette.load. Each of the ten ends at an unresolved external target (argparse calls, print, sys.exit, Cassette, cassette.load) with terminal reason 'unresolved_boundary'; none is truncated and none shows a cycle.

Core modules and roles (inferred from call degree)

Each role record states its evidence basis as static resolved cross-module call degree and entrypoint membership — these roles are inferences from call counts, not runtime observations. Highest incoming degree: tests/clai2/menu_script.py (569 incoming, 0 outgoing; leaf/data-boundary candidate), pydantic_ai/exceptions.py (421 in, 0 out; leaf candidate) and pydantic_ai/messages.py (403 in, 70 out; service/core candidate); tests/_inline_snapshot.py (357 in) and pydantic_ai/_utils.py (253 in, 6 out) are also reached often. pydantic_ai/agent/__init__.py is the mirror image: 4 incoming, 203 outgoing — a hub calling outward — with models/openai.py (8 in, 151 out), models/google.py (8 in, 78 out), models/__init__.py (113 in, 52 out) and _agent_graph.py (24 in, 100 out) nearby. Seven records with 0 incoming and high outgoing are labeled orchestration candidates: tests/durable_exec/test_dbos.py (148 out), tests/durable_exec/test_prefect.py (88), pydantic_ai/realtime/_session.py (128 out), pydantic_ai/models/anthropic.py (105 out), pydantic_ai/durable_exec/_base.py (92 out), pydantic_ai/ui/vercel_ai/_adapter.py (92 out) and pydantic_ai/realtime/openai_live.py (75 out).

Where static paths stop: boundaries

Static control stops at the analyzer's resolution limit, and the packet quantifies it: of 150,000 recorded relations, 125,702 are external_or_unresolved and 24,298 local (124,623 calls, 25,377 imports). The ten itemized paths show the pattern: each terminates with reason 'unresolved_boundary' at a non-local target — argparse construction and parsing, args.cassette.exists, print, sys.exit, Cassette, cassette.load. The analyzer documents that reflection, runtime dependency injection, dynamic imports, monkey-patching, generated code, framework runtime wiring and dynamic dispatch are not resolved, so plugin-style or dispatched calls would appear as unresolved targets rather than local edges. The absence of local edges into such code is therefore not evidence that the code does not exist.

Dependencies between parts

Manifest records provide the cross-part facts in this packet. pydantic_graph's pyproject.toml records runtime dependencies on anyio, logfire-api, pydantic and typing-inspection; pydantic_evals' manifest records logfire as optional. The root pyproject.toml's dev records span a large toolchain — pytest, pytest-mock, pytest-xdist, coverage, mypy, pyright and ruff — plus packages such as redis, azure-identity, boto3-stubs, fastmcp and mcp-types. All 45 dependency records in the packet come from pyproject.toml manifests, with version constraints recorded as written; setup.py, setup.cfg, Pipfile and lock files are not parsed. On resolved code relations, the packet supports only a bounded statement: with 125,702 external/unresolved versus 24,298 local edges, and dynamic wiring out of scope, a complete map of which parts depend on which is not established. What the packet does show locally is the call-degree structure summarized above.

What static analysis cannot show

The analyzer documents what it cannot see. Static analysis does not resolve reflection, runtime dependency injection, dynamic imports, monkey-patching, generated code, framework runtime wiring or dynamic dispatch, so runtime wiring between packages is out of view. Install/run/build inference is partial and installation commands are not verified, so this asset states no run instructions. Bounded analysis inventories but does not parse files over 400 kB, minified bundles and vendored directories, and caps relation extraction at 2,500 per file and 150,000 per repository; the repository cap was reached (with 0 per-file truncations), and five files were inventoried but not parsed. README-derived text remains author_claimed at best, since extraction is line-based. Three entrypoint paths have no statically detected call steps.

A reading order for the architecture

A workable order from the packet: first README.md, pyproject.toml and LICENSE, all flagged as project-level important files; the analyzer's learning-path claim also recommends starting with manifests and important symbols, then tracing the bounded execution path and inspecting unresolved boundaries. Second, walk the package trees — pydantic_ai_slim (426 files), pydantic_evals (33), pydantic_graph (18) and src (498) — and, inside the main package, begin at the call-degree hotspots: agent/__init__.py, messages.py and models/__init__.py. Third, see how examples launch via examples/pydantic_ai_examples/__main__.py. Finally, follow one recorded path end to end, noting each unresolved boundary, before changing code.

What this analysis could not establish

The writing model's own notes on the analysis record. Identifiers such as lim_3, exec_* or claim_… name records of that analysis; the claims table cites the same records.

  • Only ten of the 580 bounded execution paths are itemized in the packet; all control-flow statements here are scoped to those ten, which all come from one skill script.
  • resolved_relation_summary_sample entries and boundaries_static entries carry no citable IDs, so specific import edges and the .github-script boundary targets are not asserted as claims.
  • Five oversized test files were inventoried but not parsed, including tests/models/test_openai_responses.py (903 kB), tests/models/test_anthropic.py (737 kB), tests/test_agent.py (593 kB), tests/realtime/test_session.py (491 kB) and tests/test_vercel_ai.py (440 kB); their contents are absent from the analysis.
  • The repository relation cap was reached, so per the packet, files after tests/harness/subagents/test_subagents_disk.py have no relation edges.
  • meta_description is author-claimed GitHub text and was used only as orientation.
  • The analyzer's 'main starting place' is an inference about .claude/skills/testing-skill/parse_cassette.py; nothing in the packet ranks package-level entrypoints against it.
Claims and evidence — 37 claims, 37 supported by an independent verifier

Every substantive statement above is a claim bound to grounding IDs of the analyzed revision. Global grounding IDs are namespaced by the analysis run.

Claim Epistemic status Verifier Grounding (global IDs)
c1 The analyzer's summary reports 4,082 analyzed files with top-level directory sizes tests 2,501, src 498, pydantic_ai_slim 426, docs 351, .github 136, examples 63, pydantic_evals 33, pydantic_graph 18, scripts 10, clai 6, agent_docs 6, .agents 7 and .claude 12, and its maturity signals count 2,514 test-like files. inferred supported analysis_169ebfd40f3abfe7:summary_repository
c2 The analyzer records the top-level directories docs, src and tests as subsystem candidates. observed supported analysis_169ebfd40f3abfe7:subsys_1, analysis_169ebfd40f3abfe7:subsys_2, analysis_169ebfd40f3abfe7:subsys_3
c3 GitHub metadata records Python as the primary language. observed supported analysis_169ebfd40f3abfe7:meta_primary_language
c4 The GitHub description describes agents, realtime voice, image generation and embeddings with end-to-end typing; the packet marks this repository metadata author-claimed. author_claimed supported analysis_169ebfd40f3abfe7:meta_description
c5 Dependency records reference pyproject.toml manifests at the repository root and inside pydantic_evals and pydantic_graph. observed supported analysis_169ebfd40f3abfe7:dep_1, analysis_169ebfd40f3abfe7:dep_2, analysis_169ebfd40f3abfe7:dep_6
c6 README.md, pyproject.toml and LICENSE are flagged as project-level important files. observed supported analysis_169ebfd40f3abfe7:important_1, analysis_169ebfd40f3abfe7:important_2, analysis_169ebfd40f3abfe7:important_3
c7 The architecture reconstruction reports 65 entrypoints and 580 bounded execution paths for the analyzed revision. inferred supported analysis_169ebfd40f3abfe7:architecture_reconstruction
c8 Verified __main__ guards exist in .github/scripts/agent_provider_health.py, .github/scripts/agent_spend_report.py, scripts/check_cassettes.py, pydantic_ai_slim/pydantic_ai/__main__.py, clai/clai/__main__.py, src/pydantic_clai2/pydantic_clai2/__main__.py and examples/pydantic_ai_examples/__main__.py. observed supported analysis_169ebfd40f3abfe7:py_entry_1a93f87ae56b, analysis_169ebfd40f3abfe7:py_entry_120add6b5d1d, analysis_169ebfd40f3abfe7:py_entry_711b9329c9af, analysis_169ebfd40f3abfe7:py_entry_34c79207455c, analysis_169ebfd40f3abfe7:py_entry_ced396f72e87, analysis_169ebfd40f3abfe7:py_entry_e49d37d56e2b, analysis_169ebfd40f3abfe7:py_entry_e20e97f19c72
c9 The recorded guard bodies call cli_exit() in pydantic_ai_slim/pydantic_ai/__main__.py, _cli.cli_exit('clai') in clai/clai/__main__.py and cli() in examples/pydantic_ai_examples/__main__.py. observed supported analysis_169ebfd40f3abfe7:py_entry_34c79207455c, analysis_169ebfd40f3abfe7:py_entry_ced396f72e87, analysis_169ebfd40f3abfe7:py_entry_e20e97f19c72
c10 Entrypoints entry_5 (.github/scripts/pydantic_ai_gh_aw_shim/cli.py), entry_26 (examples/pydantic_ai_examples/slack_lead_qualifier/app.py) and entry_34 (pydantic_ai_slim/pydantic_ai/ui/_web/app.py) are detected by filename heuristic, not by a verified guard. inferred supported analysis_169ebfd40f3abfe7:entry_5, analysis_169ebfd40f3abfe7:entry_26, analysis_169ebfd40f3abfe7:entry_34
c11 The analyzer's summary names .claude/skills/testing-skill/parse_cassette.py as the main starting place; this is an inference tied to that skill script, not evidence that the library packages begin there. inferred supported analysis_169ebfd40f3abfe7:summary_repository
c12 All ten itemized execution paths start at .claude/skills/testing-skill/parse_cassette.py:__main__ and terminate with terminal_reason 'unresolved_boundary' at external or unresolved targets; none is truncated and none detects a cycle. inferred supported analysis_169ebfd40f3abfe7:exec_bb0400b95179, analysis_169ebfd40f3abfe7:exec_9bbb24a4ce38, analysis_169ebfd40f3abfe7:exec_1fdb044ec706, analysis_169ebfd40f3abfe7:exec_06af0227393f, analysis_169ebfd40f3abfe7:exec_5f90db10d033, analysis_169ebfd40f3abfe7:exec_603b383d11e1, analysis_169ebfd40f3abfe7:exec_df867b4e1a14, analysis_169ebfd40f3abfe7:exec_00ef8b559532, analysis_169ebfd40f3abfe7:exec_7683f0d4f881, analysis_169ebfd40f3abfe7:exec_f09a0b4d4c9f
c13 Within those paths, main's recorded outgoing steps are argparse.ArgumentParser, parser.add_argument, parser.parse_args, args.cassette.exists, print and sys.exit, and parse_cassette's recorded outgoing steps are Cassette, cassette.load and print. inferred supported analysis_169ebfd40f3abfe7:exec_bb0400b95179, analysis_169ebfd40f3abfe7:exec_9bbb24a4ce38, analysis_169ebfd40f3abfe7:exec_1fdb044ec706, analysis_169ebfd40f3abfe7:exec_06af0227393f, analysis_169ebfd40f3abfe7:exec_5f90db10d033, analysis_169ebfd40f3abfe7:exec_603b383d11e1, analysis_169ebfd40f3abfe7:exec_df867b4e1a14, analysis_169ebfd40f3abfe7:exec_00ef8b559532, analysis_169ebfd40f3abfe7:exec_7683f0d4f881, analysis_169ebfd40f3abfe7:exec_f09a0b4d4c9f
c14 Every role record's stated evidence basis is static resolved cross-module call degree and entrypoint membership; the roles are therefore analyzer inferences from call counts, not runtime observations. inferred supported analysis_169ebfd40f3abfe7:role_358, analysis_169ebfd40f3abfe7:role_190, analysis_169ebfd40f3abfe7:role_172, analysis_169ebfd40f3abfe7:role_354, analysis_169ebfd40f3abfe7:role_91, analysis_169ebfd40f3abfe7:role_94, analysis_169ebfd40f3abfe7:role_191, analysis_169ebfd40f3abfe7:role_417, analysis_169ebfd40f3abfe7:role_212, analysis_169ebfd40f3abfe7:role_427, analysis_169ebfd40f3abfe7:role_250, analysis_169ebfd40f3abfe7:role_60, analysis_169ebfd40f3abfe7:role_198, analysis_169ebfd40f3abfe7:role_248, analysis_169ebfd40f3abfe7:role_120, analysis_169ebfd40f3abfe7:role_290, analysis_169ebfd40f3abfe7:role_432, analysis_169ebfd40f3abfe7:role_205, analysis_169ebfd40f3abfe7:role_257, analysis_169ebfd40f3abfe7:role_295
c15 Highest incoming call degrees: tests/clai2/menu_script.py 569 in / 0 out (leaf/data-boundary candidate), pydantic_ai/exceptions.py 421 in / 0 out (leaf candidate), pydantic_ai/messages.py 403 in / 70 out (service/core candidate), tests/_inline_snapshot.py 357 in, pydantic_ai/_utils.py 253 in / 6 out. inferred supported analysis_169ebfd40f3abfe7:role_358, analysis_169ebfd40f3abfe7:role_172, analysis_169ebfd40f3abfe7:role_190, analysis_169ebfd40f3abfe7:role_354, analysis_169ebfd40f3abfe7:role_91
c16 pydantic_ai/agent/__init__.py records 4 incoming and 203 outgoing calls (service/core candidate), models/openai.py 8 in / 151 out, models/google.py 8 in / 78 out, models/__init__.py 113 in / 52 out and _agent_graph.py 24 in / 100 out — hubs that call outward. inferred supported analysis_169ebfd40f3abfe7:role_94, analysis_169ebfd40f3abfe7:role_212, analysis_169ebfd40f3abfe7:role_205, analysis_169ebfd40f3abfe7:role_191, analysis_169ebfd40f3abfe7:role_60
c17 Seven role records, each with 0 incoming calls, are labeled orchestration candidates: tests/durable_exec/test_dbos.py (148 outgoing), tests/durable_exec/test_prefect.py (88), pydantic_ai/realtime/_session.py (128), pydantic_ai/models/anthropic.py (105), pydantic_ai/durable_exec/_base.py (92), pydantic_ai/ui/vercel_ai/_adapter.py (92) and pydantic_ai/realtime/openai_live.py (75). inferred supported analysis_169ebfd40f3abfe7:role_427, analysis_169ebfd40f3abfe7:role_432, analysis_169ebfd40f3abfe7:role_250, analysis_169ebfd40f3abfe7:role_198, analysis_169ebfd40f3abfe7:role_120, analysis_169ebfd40f3abfe7:role_290, analysis_169ebfd40f3abfe7:role_257
c18 Of 150,000 recorded relations, 125,702 are external_or_unresolved and 24,298 local; by type, 124,623 calls and 25,377 imports. observed supported analysis_169ebfd40f3abfe7:relation_counts
c20 The analyzer documents that reflection, runtime dependency injection, dynamic imports, monkey-patching, generated code, framework runtime wiring and dynamic dispatch are not resolved by this static analysis. observed supported analysis_169ebfd40f3abfe7:lim_1
c21 Because dynamic dispatch, dynamic imports and framework runtime wiring are unresolved by design and 125,702 relations remain external or unresolved, plugin-style or dispatched control flow would appear as unresolved targets; absence of local edges into such code is not evidence the code does not exist. inferred supported analysis_169ebfd40f3abfe7:lim_1, analysis_169ebfd40f3abfe7:relation_counts
c22 pydantic_graph's pyproject.toml records runtime dependencies anyio (>=4.7.0), logfire-api (>=3.14.1), pydantic (>=2.12) and typing-inspection (>=0.4.0). observed supported analysis_169ebfd40f3abfe7:dep_2, analysis_169ebfd40f3abfe7:dep_3, analysis_169ebfd40f3abfe7:dep_4, analysis_169ebfd40f3abfe7:dep_5
c23 pydantic_evals' pyproject.toml records logfire (>=3.14.1) as an optional dependency. observed supported analysis_169ebfd40f3abfe7:dep_1
c24 Root pyproject.toml dev records include pytest, pytest-mock, pytest-xdist, coverage, mypy, pyright and ruff. observed supported analysis_169ebfd40f3abfe7:dep_19, analysis_169ebfd40f3abfe7:dep_22, analysis_169ebfd40f3abfe7:dep_25, analysis_169ebfd40f3abfe7:dep_11, analysis_169ebfd40f3abfe7:dep_43, analysis_169ebfd40f3abfe7:dep_44, analysis_169ebfd40f3abfe7:dep_45
c25 Root pyproject.toml dev records also include redis, azure-identity, boto3-stubs, fastmcp and mcp-types. observed supported analysis_169ebfd40f3abfe7:dep_38, analysis_169ebfd40f3abfe7:dep_36, analysis_169ebfd40f3abfe7:dep_24, analysis_169ebfd40f3abfe7:dep_31, analysis_169ebfd40f3abfe7:dep_32
c26 All 45 dependency records in the packet come from pyproject.toml manifests (PEP 621 dependencies and optional dependencies, PEP 735 dependency groups, Poetry tables); setup.py, setup.cfg, Pipfile and lock files are not parsed, and version constraints are recorded as written. observed supported analysis_169ebfd40f3abfe7:dep_1, analysis_169ebfd40f3abfe7:dep_2, analysis_169ebfd40f3abfe7:dep_3, analysis_169ebfd40f3abfe7:dep_4, analysis_169ebfd40f3abfe7:dep_5, analysis_169ebfd40f3abfe7:dep_6, analysis_169ebfd40f3abfe7:dep_7, analysis_169ebfd40f3abfe7:dep_8, analysis_169ebfd40f3abfe7:dep_9, analysis_169ebfd40f3abfe7:dep_10, analysis_169ebfd40f3abfe7:dep_11, analysis_169ebfd40f3abfe7:dep_12, analysis_169ebfd40f3abfe7:dep_13, analysis_169ebfd40f3abfe7:dep_14, analysis_169ebfd40f3abfe7:dep_15, analysis_169ebfd40f3abfe7:dep_16, analysis_169ebfd40f3abfe7:dep_17, analysis_169ebfd40f3abfe7:dep_18, analysis_169ebfd40f3abfe7:dep_19, analysis_169ebfd40f3abfe7:dep_20, analysis_169ebfd40f3abfe7:dep_21, analysis_169ebfd40f3abfe7:dep_22, analysis_169ebfd40f3abfe7:dep_23, analysis_169ebfd40f3abfe7:dep_24, analysis_169ebfd40f3abfe7:dep_25, analysis_169ebfd40f3abfe7:dep_26, analysis_169ebfd40f3abfe7:dep_27, analysis_169ebfd40f3abfe7:dep_28, analysis_169ebfd40f3abfe7:dep_29, analysis_169ebfd40f3abfe7:dep_30, analysis_169ebfd40f3abfe7:dep_31, analysis_169ebfd40f3abfe7:dep_32, analysis_169ebfd40f3abfe7:dep_33, analysis_169ebfd40f3abfe7:dep_34, analysis_169ebfd40f3abfe7:dep_35, analysis_169ebfd40f3abfe7:dep_36, analysis_169ebfd40f3abfe7:dep_37, analysis_169ebfd40f3abfe7:dep_38, analysis_169ebfd40f3abfe7:dep_39, analysis_169ebfd40f3abfe7:dep_40, analysis_169ebfd40f3abfe7:dep_41, analysis_169ebfd40f3abfe7:dep_42, analysis_169ebfd40f3abfe7:dep_43, analysis_169ebfd40f3abfe7:dep_44, analysis_169ebfd40f3abfe7:dep_45, analysis_169ebfd40f3abfe7:lim_3a
c27 With 125,702 external or unresolved relations against 24,298 local ones, and dynamic wiring unresolved by design, a complete map of which parts depend on which is not established; dependency statements in this asset are limited to manifest records and call-degree roles. inferred supported analysis_169ebfd40f3abfe7:relation_counts, analysis_169ebfd40f3abfe7:lim_1
c28 Static analysis does not resolve reflection, runtime dependency injection, dynamic imports, monkey-patching, generated code, framework runtime wiring or dynamic dispatch. observed supported analysis_169ebfd40f3abfe7:lim_1
c29 Install/run/build inference is partial and installation commands are not verified. observed supported analysis_169ebfd40f3abfe7:lim_2
c30 Bounded analysis (bounds 0.10.1) inventories but does not parse files over 400 kB, minified bundles and vendored directories, and caps relation extraction at 2,500 relations per file and 150,000 per repository. observed supported analysis_169ebfd40f3abfe7:lim_6
c31 The packet records that the repository relation cap of 150,000 was reached, with relation extraction truncated in 0 files. unresolved supported analysis_169ebfd40f3abfe7:claim_d827009928f8
c32 Five files were inventoried but not parsed (oversized, minified or vendored). unresolved supported analysis_169ebfd40f3abfe7:claim_f0da02ed20f8
c33 Three entrypoint paths have no statically detected call steps. unresolved supported analysis_169ebfd40f3abfe7:claim_38330fcb3baf
c34 README claim extraction is line-based — headings, fenced code, HTML, badges, tables and prompts are skipped — and every README claim remains author_claimed at best. observed supported analysis_169ebfd40f3abfe7:lim_4a
c36 The analyzer flags README.md, pyproject.toml and LICENSE as project-level important files. observed supported analysis_169ebfd40f3abfe7:important_1, analysis_169ebfd40f3abfe7:important_2, analysis_169ebfd40f3abfe7:important_3
c37 The analyzer's learning-path claim recommends starting with manifests and important symbols, then tracing the bounded execution path and inspecting unresolved boundaries before changing code. inferred supported analysis_169ebfd40f3abfe7:claim_e56db45165bf
c38 Within the analyzed inventory (pydantic_ai_slim 426 files, pydantic_evals 33, pydantic_graph 18, src 498), the call-degree roles suggest beginning a code read at pydantic_ai/agent/__init__.py, pydantic_ai/messages.py and pydantic_ai/models/__init__.py. inferred supported analysis_169ebfd40f3abfe7:summary_repository, analysis_169ebfd40f3abfe7:role_94, analysis_169ebfd40f3abfe7:role_190, analysis_169ebfd40f3abfe7:role_191
c39 examples/pydantic_ai_examples/__main__.py contains a verified __main__ guard whose body calls cli(). observed supported analysis_169ebfd40f3abfe7:py_entry_e20e97f19c72

Sources, rights and disclosure · attribution-license-templates/v0.1

Rights notice. Original repository hosted on GitHub. Repository source code, documentation, names, media, and related project materials remain subject to the rights of their respective authors, contributors, and other rights holders and to applicable repository license terms.

Platform notice. GitHub is the source hosting platform for the linked repository. GitHub and related marks are trademarks of GitHub, Inc. EVEMISS Technology is not affiliated with or endorsed by GitHub unless explicitly stated otherwise.

How this page is produced. This page was produced using revision-aware repository analysis and AI-assisted editorial tooling. Technical claims are tied to the analyzed repository revision and may be revalidated when the source repository changes.

AI-assisted analysis. Reviewed by EVEMISS Technology through human–AI collaborative review. · Report a rights concern · Back to the overview