erdantic
Advanced tools
+52
| # AGENTS.md | ||
| ## Interaction Contract | ||
| - For questions, planning, tradeoff analysis, or brainstorming: do not edit files and do not run modifying commands. Read-only commands are allowed. | ||
| - In those cases, respond with analysis, options, or a plan only. | ||
| - Implement only when the user gives an explicit execution instruction (`implement`, `apply`, `proceed`, or equivalent). | ||
| - If intent is ambiguous, ask one short clarification question. | ||
| - Never infer implementation intent from context alone. | ||
| - Silence is not consent to edit code. | ||
| ## Working Style | ||
| - Make minimal, focused diffs. | ||
| - Do not modify unrelated files. | ||
| - Avoid broad refactors unless requested. | ||
| ## Project Map | ||
| - Library code: `erdantic/` | ||
| - Plugins: `erdantic/plugins/` | ||
| - CLI: `erdantic/cli.py` | ||
| - Tests: `tests/` | ||
| - Static test assets: `tests/assets/` | ||
| - Asset generators: `tests/scripts/generate_static_assets.py`, `tests/scripts/generate_pydantic_with_defaults_assets.py` | ||
| ## Commands | ||
| - Use `pixi run` or `just` for project commands; avoid direct `python`/`python3`/`pytest`/`ruff`/`mypy` unless explicitly requested. | ||
| - Setup/sync: `just sync` | ||
| - Lint: `just lint` | ||
| - Format: `just format` | ||
| - Typecheck: `just typecheck` | ||
| - Tests (default py3.13): `just test` | ||
| - Tests (specific Python): `just python=3.12 test` | ||
| - Full matrix: `just test-all` | ||
| - Test commands accept pytest args, e.g.: | ||
| - `just test tests/test_against_assets.py -k pydantic` | ||
| - `just test-all tests/test_against_assets.py` | ||
| ## Testing Expectations | ||
| - Behavior changes must include or update tests. | ||
| - If expected rendered outputs change, ask for user permission before running `just generate-static-assets`. | ||
| - Review `tests/assets/` diffs carefully. | ||
| - Prefer targeted test runs while iterating, then run the relevant broader suite. | ||
| ## Notes | ||
| - Graphviz/PyGraphviz is required. Pixi activation automatically runs `scripts/fix_graphviz.sh`. | ||
| - Python-version differences matter (`3.9` through `3.14`). | ||
| - Some tests validate generated artifacts, not just runtime behavior. |
| #!/usr/bin/env bash | ||
| set -euo pipefail | ||
| # Generate Graphviz plugin config files if missing | ||
| # Needed for graphviz conda-forge feedstock for osx-arm64 | ||
| # https://github.com/conda-forge/graphviz-feedstock/issues/152 | ||
| compgen -G "$CONDA_PREFIX/lib/graphviz/config*" > /dev/null \ | ||
| || dot -c \ | ||
| || true |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.attrs.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n level (int): Level of this adventurer\n alignment (Alignment): Alignment of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.attrs.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Quest | None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.attrs.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.attrs.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "str | None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.attrs.Party-active_quest-erdantic.examples.attrs.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Party-members-erdantic.examples.attrs.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Quest-giver-erdantic.examples.attrs.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="668pt" height="314pt" | ||
| viewBox="0.00 0.00 668.00 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 664,-309.75 664,4 -4,4"/> | ||
| <text text-anchor="middle" x="330" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.attrs.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.attrs.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.attrs.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    level (int): Level of this adventurer    alignment (Alignment): Alignment of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="308.62,-279.25 308.62,-301.75 435.38,-301.75 435.38,-279.25 308.62,-279.25"/> | ||
| <text text-anchor="start" x="338.25" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-256.75 308.62,-279.25 370.88,-279.25 370.88,-256.75 308.62,-256.75"/> | ||
| <text text-anchor="start" x="324.75" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-256.75 370.88,-279.25 435.38,-279.25 435.38,-256.75 370.88,-256.75"/> | ||
| <text text-anchor="start" x="396.38" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-234.25 308.62,-256.75 370.88,-256.75 370.88,-234.25 308.62,-234.25"/> | ||
| <text text-anchor="start" x="311.62" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-234.25 370.88,-256.75 435.38,-256.75 435.38,-234.25 370.88,-234.25"/> | ||
| <text text-anchor="start" x="396.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-211.75 308.62,-234.25 370.88,-234.25 370.88,-211.75 308.62,-211.75"/> | ||
| <text text-anchor="start" x="312.38" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-211.75 370.88,-234.25 435.38,-234.25 435.38,-211.75 370.88,-211.75"/> | ||
| <text text-anchor="start" x="373.88" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-189.25 308.62,-211.75 370.88,-211.75 370.88,-189.25 308.62,-189.25"/> | ||
| <text text-anchor="start" x="326.62" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-189.25 370.88,-211.75 435.38,-211.75 435.38,-189.25 370.88,-189.25"/> | ||
| <text text-anchor="start" x="396" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.attrs.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.attrs.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 192.75,-305.75 192.75,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.25" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 192.75,-283.25 192.75,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.5" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 192.75,-260.75 192.75,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="122.62" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 192.75,-238.25 192.75,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="102.75" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 192.75,-215.75 192.75,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="110.62" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Quest | None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M202.71,-227.67C246.18,-233.77 251.99,-279.62 292.46,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-227 197.74,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-227.34 202.73,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="297.35,-289.4 306.81,-294.94 302.65,-289.97 306.96,-290.43 306.96,-290.43 306.96,-290.43 302.65,-289.97 307.77,-285.99 297.35,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.14,-289.27 291.17,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.attrs.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.attrs.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="300.75,-131 300.75,-153.5 443.25,-153.5 443.25,-131 300.75,-131"/> | ||
| <text text-anchor="start" x="354.75" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-108.5 300.75,-131 375,-131 375,-108.5 300.75,-108.5"/> | ||
| <text text-anchor="start" x="322.88" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375,-108.5 375,-131 443.25,-131 443.25,-108.5 375,-108.5"/> | ||
| <text text-anchor="start" x="402.38" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-86 300.75,-108.5 375,-108.5 375,-86 300.75,-86"/> | ||
| <text text-anchor="start" x="324" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375,-86 375,-108.5 443.25,-108.5 443.25,-86 375,-86"/> | ||
| <text text-anchor="start" x="378" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-63.5 300.75,-86 375,-86 375,-63.5 300.75,-63.5"/> | ||
| <text text-anchor="start" x="303.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375,-63.5 375,-86 443.25,-86 443.25,-63.5 375,-63.5"/> | ||
| <text text-anchor="start" x="402" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M202.48,-203.8C241.8,-197.9 247.76,-156.32 282.07,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-204.5 197.74,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-204.14 202.72,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="300.75,-142.25 295.81,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.07,-138.2 295.56,-148.09 293.58,-148.38 292.1,-138.49 294.07,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="295.81,-142.99 290.86,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="286.41" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.attrs.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.attrs.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="551.25,-86 551.25,-108.5 660,-108.5 660,-86 551.25,-86"/> | ||
| <text text-anchor="start" x="571.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-63.5 551.25,-86 600.75,-86 600.75,-63.5 551.25,-63.5"/> | ||
| <text text-anchor="start" x="561" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-63.5 600.75,-86 660,-86 660,-63.5 600.75,-63.5"/> | ||
| <text text-anchor="start" x="623.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-41 551.25,-63.5 600.75,-63.5 600.75,-41 551.25,-41"/> | ||
| <text text-anchor="start" x="557.25" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-41 600.75,-63.5 660,-63.5 660,-41 600.75,-41"/> | ||
| <text text-anchor="start" x="603.75" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str | None</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-18.5 551.25,-41 600.75,-41 600.75,-18.5 551.25,-18.5"/> | ||
| <text text-anchor="start" x="554.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-18.5 600.75,-41 660,-41 660,-18.5 600.75,-18.5"/> | ||
| <text text-anchor="start" x="623.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest->erdantic.examples.attrs.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.attrs.Quest:e->erdantic.examples.attrs.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.12,-97.25C488.32,-97.25 503.05,-97.25 536.33,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="443.25,-97.25 448.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="448.25,-97.25 453.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="551.25,-97.25 546.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="545.25,-92.25 545.25,-102.25 543.25,-102.25 543.25,-92.25 545.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="546.25,-97.25 541.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="540.25,-92.25 540.25,-102.25 538.25,-102.25 538.25,-92.25 540.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="541.25,-97.25 536.25,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.dataclasses.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Quest | None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "str | None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.dataclasses.Party-active_quest-erdantic.examples.dataclasses.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party-members-erdantic.examples.dataclasses.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest-giver-erdantic.examples.dataclasses.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="668pt" height="314pt" | ||
| viewBox="0.00 0.00 668.00 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 664,-309.75 664,4 -4,4"/> | ||
| <text text-anchor="middle" x="330" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.dataclasses.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.dataclasses.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="308.62,-279.25 308.62,-301.75 435.38,-301.75 435.38,-279.25 308.62,-279.25"/> | ||
| <text text-anchor="start" x="338.25" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-256.75 308.62,-279.25 370.88,-279.25 370.88,-256.75 308.62,-256.75"/> | ||
| <text text-anchor="start" x="324.75" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-256.75 370.88,-279.25 435.38,-279.25 435.38,-256.75 370.88,-256.75"/> | ||
| <text text-anchor="start" x="396.38" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-234.25 308.62,-256.75 370.88,-256.75 370.88,-234.25 308.62,-234.25"/> | ||
| <text text-anchor="start" x="311.62" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-234.25 370.88,-256.75 435.38,-256.75 435.38,-234.25 370.88,-234.25"/> | ||
| <text text-anchor="start" x="396.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-211.75 308.62,-234.25 370.88,-234.25 370.88,-211.75 308.62,-211.75"/> | ||
| <text text-anchor="start" x="312.38" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-211.75 370.88,-234.25 435.38,-234.25 435.38,-211.75 370.88,-211.75"/> | ||
| <text text-anchor="start" x="373.88" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-189.25 308.62,-211.75 370.88,-211.75 370.88,-189.25 308.62,-189.25"/> | ||
| <text text-anchor="start" x="326.62" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-189.25 370.88,-211.75 435.38,-211.75 435.38,-189.25 370.88,-189.25"/> | ||
| <text text-anchor="start" x="396" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.dataclasses.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.dataclasses.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 192.75,-305.75 192.75,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.25" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 192.75,-283.25 192.75,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.5" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 192.75,-260.75 192.75,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="122.62" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 192.75,-238.25 192.75,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="102.75" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 192.75,-215.75 192.75,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="110.62" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Quest | None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M202.71,-227.67C246.18,-233.77 251.99,-279.62 292.46,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-227 197.74,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-227.34 202.73,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="297.35,-289.4 306.81,-294.94 302.65,-289.97 306.96,-290.43 306.96,-290.43 306.96,-290.43 302.65,-289.97 307.77,-285.99 297.35,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.14,-289.27 291.17,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.dataclasses.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.dataclasses.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="300.75,-131 300.75,-153.5 443.25,-153.5 443.25,-131 300.75,-131"/> | ||
| <text text-anchor="start" x="354.75" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-108.5 300.75,-131 375,-131 375,-108.5 300.75,-108.5"/> | ||
| <text text-anchor="start" x="322.88" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375,-108.5 375,-131 443.25,-131 443.25,-108.5 375,-108.5"/> | ||
| <text text-anchor="start" x="402.38" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-86 300.75,-108.5 375,-108.5 375,-86 300.75,-86"/> | ||
| <text text-anchor="start" x="324" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375,-86 375,-108.5 443.25,-108.5 443.25,-86 375,-86"/> | ||
| <text text-anchor="start" x="378" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-63.5 300.75,-86 375,-86 375,-63.5 300.75,-63.5"/> | ||
| <text text-anchor="start" x="303.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375,-63.5 375,-86 443.25,-86 443.25,-63.5 375,-63.5"/> | ||
| <text text-anchor="start" x="402" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M202.48,-203.8C241.8,-197.9 247.76,-156.32 282.07,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-204.5 197.74,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-204.14 202.72,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="300.75,-142.25 295.81,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.07,-138.2 295.56,-148.09 293.58,-148.38 292.1,-138.49 294.07,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="295.81,-142.99 290.86,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="286.41" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.dataclasses.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.dataclasses.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="551.25,-86 551.25,-108.5 660,-108.5 660,-86 551.25,-86"/> | ||
| <text text-anchor="start" x="571.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-63.5 551.25,-86 600.75,-86 600.75,-63.5 551.25,-63.5"/> | ||
| <text text-anchor="start" x="561" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-63.5 600.75,-86 660,-86 660,-63.5 600.75,-63.5"/> | ||
| <text text-anchor="start" x="623.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-41 551.25,-63.5 600.75,-63.5 600.75,-41 551.25,-41"/> | ||
| <text text-anchor="start" x="557.25" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-41 600.75,-63.5 660,-63.5 660,-41 600.75,-41"/> | ||
| <text text-anchor="start" x="603.75" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str | None</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-18.5 551.25,-41 600.75,-41 600.75,-18.5 551.25,-18.5"/> | ||
| <text text-anchor="start" x="554.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-18.5 600.75,-41 660,-41 660,-18.5 600.75,-18.5"/> | ||
| <text text-anchor="start" x="623.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest->erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Quest:e->erdantic.examples.dataclasses.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.12,-97.25C488.32,-97.25 503.05,-97.25 536.33,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="443.25,-97.25 448.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="448.25,-97.25 453.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="551.25,-97.25 546.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="545.25,-92.25 545.25,-102.25 543.25,-102.25 543.25,-92.25 545.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="546.25,-97.25 541.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="540.25,-92.25 540.25,-102.25 538.25,-102.25 538.25,-92.25 540.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="541.25,-97.25 536.25,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Quest | None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "str | None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="668pt" height="314pt" | ||
| viewBox="0.00 0.00 668.00 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 664,-309.75 664,4 -4,4"/> | ||
| <text text-anchor="middle" x="330" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="308.62,-279.25 308.62,-301.75 435.38,-301.75 435.38,-279.25 308.62,-279.25"/> | ||
| <text text-anchor="start" x="338.25" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-256.75 308.62,-279.25 370.88,-279.25 370.88,-256.75 308.62,-256.75"/> | ||
| <text text-anchor="start" x="324.75" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-256.75 370.88,-279.25 435.38,-279.25 435.38,-256.75 370.88,-256.75"/> | ||
| <text text-anchor="start" x="396.38" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-234.25 308.62,-256.75 370.88,-256.75 370.88,-234.25 308.62,-234.25"/> | ||
| <text text-anchor="start" x="311.62" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-234.25 370.88,-256.75 435.38,-256.75 435.38,-234.25 370.88,-234.25"/> | ||
| <text text-anchor="start" x="396.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-211.75 308.62,-234.25 370.88,-234.25 370.88,-211.75 308.62,-211.75"/> | ||
| <text text-anchor="start" x="312.38" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-211.75 370.88,-234.25 435.38,-234.25 435.38,-211.75 370.88,-211.75"/> | ||
| <text text-anchor="start" x="373.88" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="308.62,-189.25 308.62,-211.75 370.88,-211.75 370.88,-189.25 308.62,-189.25"/> | ||
| <text text-anchor="start" x="326.62" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="370.88,-189.25 370.88,-211.75 435.38,-211.75 435.38,-189.25 370.88,-189.25"/> | ||
| <text text-anchor="start" x="396" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 192.75,-305.75 192.75,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.25" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 192.75,-283.25 192.75,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.5" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 192.75,-260.75 192.75,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="122.62" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 192.75,-238.25 192.75,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="102.75" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 192.75,-215.75 192.75,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="110.62" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Quest | None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M202.71,-227.67C246.18,-233.77 251.99,-279.62 292.46,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-227 197.74,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-227.34 202.73,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="297.35,-289.4 306.81,-294.94 302.65,-289.97 306.96,-290.43 306.96,-290.43 306.96,-290.43 302.65,-289.97 307.77,-285.99 297.35,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.14,-289.27 291.17,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="300.75,-131 300.75,-153.5 443.25,-153.5 443.25,-131 300.75,-131"/> | ||
| <text text-anchor="start" x="354.75" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-108.5 300.75,-131 375,-131 375,-108.5 300.75,-108.5"/> | ||
| <text text-anchor="start" x="322.88" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375,-108.5 375,-131 443.25,-131 443.25,-108.5 375,-108.5"/> | ||
| <text text-anchor="start" x="402.38" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-86 300.75,-108.5 375,-108.5 375,-86 300.75,-86"/> | ||
| <text text-anchor="start" x="324" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375,-86 375,-108.5 443.25,-108.5 443.25,-86 375,-86"/> | ||
| <text text-anchor="start" x="378" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="300.75,-63.5 300.75,-86 375,-86 375,-63.5 300.75,-63.5"/> | ||
| <text text-anchor="start" x="303.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375,-63.5 375,-86 443.25,-86 443.25,-63.5 375,-63.5"/> | ||
| <text text-anchor="start" x="402" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M202.48,-203.8C241.8,-197.9 247.76,-156.32 282.07,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="192.75,-204.5 197.74,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="197.74,-204.14 202.72,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="300.75,-142.25 295.81,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.07,-138.2 295.56,-148.09 293.58,-148.38 292.1,-138.49 294.07,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="295.81,-142.99 290.86,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="286.41" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="551.25,-86 551.25,-108.5 660,-108.5 660,-86 551.25,-86"/> | ||
| <text text-anchor="start" x="571.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-63.5 551.25,-86 600.75,-86 600.75,-63.5 551.25,-63.5"/> | ||
| <text text-anchor="start" x="561" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-63.5 600.75,-86 660,-86 660,-63.5 600.75,-63.5"/> | ||
| <text text-anchor="start" x="623.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-41 551.25,-63.5 600.75,-63.5 600.75,-41 551.25,-41"/> | ||
| <text text-anchor="start" x="557.25" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-41 600.75,-63.5 660,-63.5 660,-41 600.75,-41"/> | ||
| <text text-anchor="start" x="603.75" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str | None</text> | ||
| <polygon fill="none" stroke="black" points="551.25,-18.5 551.25,-41 600.75,-41 600.75,-18.5 551.25,-18.5"/> | ||
| <text text-anchor="start" x="554.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="600.75,-18.5 600.75,-41 660,-41 660,-18.5 600.75,-18.5"/> | ||
| <text text-anchor="start" x="623.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.12,-97.25C488.32,-97.25 503.05,-97.25 536.33,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="443.25,-97.25 448.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="448.25,-97.25 453.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="551.25,-97.25 546.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="545.25,-92.25 545.25,-102.25 543.25,-102.25 543.25,-92.25 545.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="546.25,-97.25 541.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="540.25,-92.25 540.25,-102.25 538.25,-102.25 538.25,-92.25 540.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="541.25,-97.25 536.25,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment", | ||
| "default_value": "" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int", | ||
| "default_value": "1" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime", | ||
| "default_value": "" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]", | ||
| "default_value": "[]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Quest | None", | ||
| "default_value": "None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver", | ||
| "default_value": "" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int", | ||
| "default_value": "100" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "str | None", | ||
| "default_value": "None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str", | ||
| "default_value": "\"Adventurer's Guild\"" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="862pt" height="314pt" | ||
| viewBox="0.00 0.00 861.50 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 857.5,-309.75 857.5,4 -4,4"/> | ||
| <text text-anchor="middle" x="426.75" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="344.62,-279.25 344.62,-301.75 507.38,-301.75 507.38,-279.25 344.62,-279.25"/> | ||
| <text text-anchor="start" x="392.25" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="344.62,-256.75 344.62,-279.25 406.88,-279.25 406.88,-256.75 344.62,-256.75"/> | ||
| <text text-anchor="start" x="360.75" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="406.88,-256.75 406.88,-279.25 471.38,-279.25 471.38,-256.75 406.88,-256.75"/> | ||
| <text text-anchor="start" x="432.38" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="471.38,-256.75 471.38,-279.25 507.38,-279.25 507.38,-256.75 471.38,-256.75"/> | ||
| <polygon fill="none" stroke="black" points="344.62,-234.25 344.62,-256.75 406.88,-256.75 406.88,-234.25 344.62,-234.25"/> | ||
| <text text-anchor="start" x="347.62" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="406.88,-234.25 406.88,-256.75 471.38,-256.75 471.38,-234.25 406.88,-234.25"/> | ||
| <text text-anchor="start" x="432.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="471.38,-234.25 471.38,-256.75 507.38,-256.75 507.38,-234.25 471.38,-234.25"/> | ||
| <polygon fill="none" stroke="black" points="344.62,-211.75 344.62,-234.25 406.88,-234.25 406.88,-211.75 344.62,-211.75"/> | ||
| <text text-anchor="start" x="348.38" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="406.88,-211.75 406.88,-234.25 471.38,-234.25 471.38,-211.75 406.88,-211.75"/> | ||
| <text text-anchor="start" x="409.88" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="471.38,-211.75 471.38,-234.25 507.38,-234.25 507.38,-211.75 471.38,-211.75"/> | ||
| <polygon fill="none" stroke="black" points="344.62,-189.25 344.62,-211.75 406.88,-211.75 406.88,-189.25 344.62,-189.25"/> | ||
| <text text-anchor="start" x="362.62" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="406.88,-189.25 406.88,-211.75 471.38,-211.75 471.38,-189.25 406.88,-189.25"/> | ||
| <text text-anchor="start" x="432" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="471.38,-189.25 471.38,-211.75 507.38,-211.75 507.38,-189.25 471.38,-189.25"/> | ||
| <text text-anchor="start" x="486" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">1</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 228.75,-305.75 228.75,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="98.25" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 192.75,-283.25 192.75,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.5" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="192.75,-260.75 192.75,-283.25 228.75,-283.25 228.75,-260.75 192.75,-260.75"/> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 192.75,-260.75 192.75,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="122.62" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="192.75,-238.25 192.75,-260.75 228.75,-260.75 228.75,-238.25 192.75,-238.25"/> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 192.75,-238.25 192.75,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="102.75" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="192.75,-215.75 192.75,-238.25 228.75,-238.25 228.75,-215.75 192.75,-215.75"/> | ||
| <text text-anchor="start" x="206.25" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">[]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 192.75,-215.75 192.75,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="110.62" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Quest | None</text> | ||
| <polygon fill="none" stroke="black" points="192.75,-193.25 192.75,-215.75 228.75,-215.75 228.75,-193.25 192.75,-193.25"/> | ||
| <text text-anchor="start" x="196.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M238.71,-227.67C282.18,-233.77 287.99,-279.62 328.46,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="228.75,-227 233.74,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="233.74,-227.34 238.73,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="333.35,-289.4 342.81,-294.94 338.65,-289.97 342.96,-290.43 342.96,-290.43 342.96,-290.43 338.65,-289.97 343.77,-285.99 333.35,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="332.14,-289.27 327.17,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="336.75,-131 336.75,-153.5 515.25,-153.5 515.25,-131 336.75,-131"/> | ||
| <text text-anchor="start" x="408.75" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="336.75,-108.5 336.75,-131 411,-131 411,-108.5 336.75,-108.5"/> | ||
| <text text-anchor="start" x="358.88" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="411,-108.5 411,-131 479.25,-131 479.25,-108.5 411,-108.5"/> | ||
| <text text-anchor="start" x="438.38" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="479.25,-108.5 479.25,-131 515.25,-131 515.25,-108.5 479.25,-108.5"/> | ||
| <polygon fill="none" stroke="black" points="336.75,-86 336.75,-108.5 411,-108.5 411,-86 336.75,-86"/> | ||
| <text text-anchor="start" x="360" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="411,-86 411,-108.5 479.25,-108.5 479.25,-86 411,-86"/> | ||
| <text text-anchor="start" x="414" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="479.25,-86 479.25,-108.5 515.25,-108.5 515.25,-86 479.25,-86"/> | ||
| <polygon fill="none" stroke="black" points="336.75,-63.5 336.75,-86 411,-86 411,-63.5 336.75,-63.5"/> | ||
| <text text-anchor="start" x="339.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="411,-63.5 411,-86 479.25,-86 479.25,-63.5 411,-63.5"/> | ||
| <text text-anchor="start" x="438" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="479.25,-63.5 479.25,-86 515.25,-86 515.25,-63.5 479.25,-63.5"/> | ||
| <text text-anchor="start" x="487.12" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">100</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M238.48,-203.8C277.8,-197.9 283.76,-156.32 318.07,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="228.75,-204.5 233.74,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="233.74,-204.14 238.72,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="336.75,-142.25 331.81,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="330.07,-138.2 331.56,-148.09 329.58,-148.38 328.1,-138.49 330.07,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="331.81,-142.99 326.86,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="322.41" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="623.25,-86 623.25,-108.5 853.5,-108.5 853.5,-86 623.25,-86"/> | ||
| <text text-anchor="start" x="704.25" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="623.25,-63.5 623.25,-86 672.75,-86 672.75,-63.5 623.25,-63.5"/> | ||
| <text text-anchor="start" x="633" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="672.75,-63.5 672.75,-86 732,-86 732,-63.5 672.75,-63.5"/> | ||
| <text text-anchor="start" x="695.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="732,-63.5 732,-86 853.5,-86 853.5,-63.5 732,-63.5"/> | ||
| <polygon fill="none" stroke="black" points="623.25,-41 623.25,-63.5 672.75,-63.5 672.75,-41 623.25,-41"/> | ||
| <text text-anchor="start" x="629.25" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="672.75,-41 672.75,-63.5 732,-63.5 732,-41 672.75,-41"/> | ||
| <text text-anchor="start" x="675.75" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str | None</text> | ||
| <polygon fill="none" stroke="black" points="732,-41 732,-63.5 853.5,-63.5 853.5,-41 732,-41"/> | ||
| <text text-anchor="start" x="778.12" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| <polygon fill="none" stroke="black" points="623.25,-18.5 623.25,-41 672.75,-41 672.75,-18.5 623.25,-18.5"/> | ||
| <text text-anchor="start" x="626.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="672.75,-18.5 672.75,-41 732,-41 732,-18.5 672.75,-18.5"/> | ||
| <text text-anchor="start" x="695.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="732,-18.5 732,-41 853.5,-41 853.5,-18.5 732,-18.5"/> | ||
| <text text-anchor="start" x="735" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">"Adventurer's Guild"</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M525.12,-97.25C560.32,-97.25 575.05,-97.25 608.33,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="515.25,-97.25 520.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="520.25,-97.25 525.25,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="623.25,-97.25 618.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="617.25,-92.25 617.25,-102.25 615.25,-102.25 615.25,-92.25 617.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="618.25,-97.25 613.25,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="612.25,-92.25 612.25,-102.25 610.25,-102.25 610.25,-92.25 612.25,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="613.25,-97.25 608.25,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.attrs.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n level (int): Level of this adventurer\n alignment (Alignment): Alignment of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.attrs.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.attrs.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.attrs.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.attrs.Party-active_quest-erdantic.examples.attrs.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Party-members-erdantic.examples.attrs.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Quest-giver-erdantic.examples.attrs.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.attrs.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.attrs.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.attrs.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    level (int): Level of this adventurer    alignment (Alignment): Alignment of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.attrs.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.attrs.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.attrs.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.attrs.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.attrs.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.attrs.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest->erdantic.examples.attrs.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.attrs.Quest:e->erdantic.examples.attrs.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.dataclasses.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.dataclasses.Party-active_quest-erdantic.examples.dataclasses.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party-members-erdantic.examples.dataclasses.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest-giver-erdantic.examples.dataclasses.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.dataclasses.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.dataclasses.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.dataclasses.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.dataclasses.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.dataclasses.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.dataclasses.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.dataclasses.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.dataclasses.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest->erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Quest:e->erdantic.examples.dataclasses.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic_v1.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic_v1.Party-active_quest-erdantic.examples.pydantic_v1.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Party-members-erdantic.examples.pydantic_v1.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Quest-giver-erdantic.examples.pydantic_v1.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic_v1.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic_v1.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic_v1.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party->erdantic.examples.pydantic_v1.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Party:e->erdantic.examples.pydantic_v1.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic_v1.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party->erdantic.examples.pydantic_v1.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Party:e->erdantic.examples.pydantic_v1.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic_v1.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Quest->erdantic.examples.pydantic_v1.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Quest:e->erdantic.examples.pydantic_v1.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment", | ||
| "default_value": "" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int", | ||
| "default_value": "1" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime", | ||
| "default_value": "" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]", | ||
| "default_value": "[]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]", | ||
| "default_value": "None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver", | ||
| "default_value": "" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int", | ||
| "default_value": "100" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]", | ||
| "default_value": "None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str", | ||
| "default_value": "\"Adventurer's Guild\"" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="879pt" height="314pt" | ||
| viewBox="0.00 0.00 878.75 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 874.75,-309.75 874.75,4 -4,4"/> | ||
| <text text-anchor="middle" x="435.38" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="345.38,-279.25 345.38,-301.75 508.12,-301.75 508.12,-279.25 345.38,-279.25"/> | ||
| <text text-anchor="start" x="393" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="345.38,-256.75 345.38,-279.25 407.62,-279.25 407.62,-256.75 345.38,-256.75"/> | ||
| <text text-anchor="start" x="361.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-256.75 407.62,-279.25 472.12,-279.25 472.12,-256.75 407.62,-256.75"/> | ||
| <text text-anchor="start" x="433.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-256.75 472.12,-279.25 508.12,-279.25 508.12,-256.75 472.12,-256.75"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-234.25 345.38,-256.75 407.62,-256.75 407.62,-234.25 345.38,-234.25"/> | ||
| <text text-anchor="start" x="348.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-234.25 407.62,-256.75 472.12,-256.75 472.12,-234.25 407.62,-234.25"/> | ||
| <text text-anchor="start" x="433.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-234.25 472.12,-256.75 508.12,-256.75 508.12,-234.25 472.12,-234.25"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-211.75 345.38,-234.25 407.62,-234.25 407.62,-211.75 345.38,-211.75"/> | ||
| <text text-anchor="start" x="349.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-211.75 407.62,-234.25 472.12,-234.25 472.12,-211.75 407.62,-211.75"/> | ||
| <text text-anchor="start" x="410.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-211.75 472.12,-234.25 508.12,-234.25 508.12,-211.75 472.12,-211.75"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-189.25 345.38,-211.75 407.62,-211.75 407.62,-189.25 345.38,-189.25"/> | ||
| <text text-anchor="start" x="363.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-189.25 407.62,-211.75 472.12,-211.75 472.12,-189.25 407.62,-189.25"/> | ||
| <text text-anchor="start" x="432.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-189.25 472.12,-211.75 508.12,-211.75 508.12,-189.25 472.12,-189.25"/> | ||
| <text text-anchor="start" x="486.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">1</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 229.5,-305.75 229.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="98.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-260.75 193.5,-283.25 229.5,-283.25 229.5,-260.75 193.5,-260.75"/> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-238.25 193.5,-260.75 229.5,-260.75 229.5,-238.25 193.5,-238.25"/> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-215.75 193.5,-238.25 229.5,-238.25 229.5,-215.75 193.5,-215.75"/> | ||
| <text text-anchor="start" x="207" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">[]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-193.25 193.5,-215.75 229.5,-215.75 229.5,-193.25 193.5,-193.25"/> | ||
| <text text-anchor="start" x="196.88" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M239.46,-227.67C282.93,-233.77 288.74,-279.62 329.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="229.5,-227 234.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="234.49,-227.34 239.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="334.1,-289.4 343.56,-294.94 339.4,-289.97 343.71,-290.43 343.71,-290.43 343.71,-290.43 339.4,-289.97 344.52,-285.99 334.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="332.89,-289.27 327.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="337.5,-131 337.5,-153.5 516,-153.5 516,-131 337.5,-131"/> | ||
| <text text-anchor="start" x="409.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="337.5,-108.5 337.5,-131 411.75,-131 411.75,-108.5 337.5,-108.5"/> | ||
| <text text-anchor="start" x="359.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-108.5 411.75,-131 480,-131 480,-108.5 411.75,-108.5"/> | ||
| <text text-anchor="start" x="439.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="480,-108.5 480,-131 516,-131 516,-108.5 480,-108.5"/> | ||
| <polygon fill="none" stroke="black" points="337.5,-86 337.5,-108.5 411.75,-108.5 411.75,-86 337.5,-86"/> | ||
| <text text-anchor="start" x="360.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-86 411.75,-108.5 480,-108.5 480,-86 411.75,-86"/> | ||
| <text text-anchor="start" x="414.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="480,-86 480,-108.5 516,-108.5 516,-86 480,-86"/> | ||
| <polygon fill="none" stroke="black" points="337.5,-63.5 337.5,-86 411.75,-86 411.75,-63.5 337.5,-63.5"/> | ||
| <text text-anchor="start" x="340.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-63.5 411.75,-86 480,-86 480,-63.5 411.75,-63.5"/> | ||
| <text text-anchor="start" x="438.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="480,-63.5 480,-86 516,-86 516,-63.5 480,-63.5"/> | ||
| <text text-anchor="start" x="487.88" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">100</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M239.23,-203.8C278.55,-197.9 284.51,-156.32 318.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="229.5,-204.5 234.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="234.49,-204.14 239.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="337.5,-142.25 332.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="330.82,-138.2 332.31,-148.09 330.33,-148.38 328.85,-138.49 330.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="332.56,-142.99 327.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="323.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="624,-86 624,-108.5 870.75,-108.5 870.75,-86 624,-86"/> | ||
| <text text-anchor="start" x="713.25" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="624,-63.5 624,-86 673.5,-86 673.5,-63.5 624,-63.5"/> | ||
| <text text-anchor="start" x="633.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-63.5 673.5,-86 749.25,-86 749.25,-63.5 673.5,-63.5"/> | ||
| <text text-anchor="start" x="704.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-63.5 749.25,-86 870.75,-86 870.75,-63.5 749.25,-63.5"/> | ||
| <polygon fill="none" stroke="black" points="624,-41 624,-63.5 673.5,-63.5 673.5,-41 624,-41"/> | ||
| <text text-anchor="start" x="630" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-41 673.5,-63.5 749.25,-63.5 749.25,-41 673.5,-41"/> | ||
| <text text-anchor="start" x="676.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-41 749.25,-63.5 870.75,-63.5 870.75,-41 749.25,-41"/> | ||
| <text text-anchor="start" x="795.38" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| <polygon fill="none" stroke="black" points="624,-18.5 624,-41 673.5,-41 673.5,-18.5 624,-18.5"/> | ||
| <text text-anchor="start" x="627" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-18.5 673.5,-41 749.25,-41 749.25,-18.5 673.5,-18.5"/> | ||
| <text text-anchor="start" x="704.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-18.5 749.25,-41 870.75,-41 870.75,-18.5 749.25,-18.5"/> | ||
| <text text-anchor="start" x="752.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">"Adventurer's Guild"</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M525.87,-97.25C561.07,-97.25 575.8,-97.25 609.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="516,-97.25 521,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="521,-97.25 526,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="624,-97.25 619,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="618,-92.25 618,-102.25 616,-102.25 616,-92.25 618,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="619,-97.25 614,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="613,-92.25 613,-102.25 611,-102.25 611,-92.25 613,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="614,-97.25 609,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
| from dataclasses import dataclass | ||
| from dataclasses import field as dc_field | ||
| import sys | ||
| from typing import Optional, Union | ||
| from attrs import define | ||
| from attrs import field as attrs_field | ||
| import msgspec | ||
| import pydantic | ||
| @define | ||
| class AttrsRelatedNode: | ||
| name: str | ||
| @define | ||
| class AttrsRelationSemantics: | ||
| required_node: AttrsRelatedNode | ||
| optional_node: Optional[AttrsRelatedNode] = None | ||
| related_nodes: list[AttrsRelatedNode] = attrs_field(factory=list) | ||
| @define | ||
| class AttrsAltNode: | ||
| name: str | ||
| @define | ||
| class AttrsUnionSemantics: | ||
| union_node: Union[AttrsRelatedNode, AttrsAltNode] | ||
| optional_union_node: Optional[Union[AttrsRelatedNode, AttrsAltNode]] = None | ||
| @define | ||
| class AttrsNestedTypes: | ||
| node_map: dict[str, Optional[AttrsRelatedNode]] = attrs_field(factory=dict) | ||
| node_groups: list[list[AttrsRelatedNode]] = attrs_field(factory=list) | ||
| @define | ||
| class AttrsRecursive: | ||
| parent: Optional["AttrsRecursive"] = None | ||
| children: list["AttrsRecursive"] = attrs_field(factory=list) | ||
| @dataclass | ||
| class DataclassRelatedNode: | ||
| name: str | ||
| @dataclass | ||
| class DataclassRelationSemantics: | ||
| required_node: DataclassRelatedNode | ||
| optional_node: Optional[DataclassRelatedNode] = None | ||
| related_nodes: list[DataclassRelatedNode] = dc_field(default_factory=list) | ||
| @dataclass | ||
| class DataclassAltNode: | ||
| name: str | ||
| @dataclass | ||
| class DataclassUnionSemantics: | ||
| union_node: Union[DataclassRelatedNode, DataclassAltNode] | ||
| optional_union_node: Optional[Union[DataclassRelatedNode, DataclassAltNode]] = None | ||
| @dataclass | ||
| class DataclassNestedTypes: | ||
| node_map: dict[str, Optional[DataclassRelatedNode]] = dc_field(default_factory=dict) | ||
| node_groups: list[list[DataclassRelatedNode]] = dc_field(default_factory=list) | ||
| @dataclass | ||
| class DataclassRecursive: | ||
| parent: Optional["DataclassRecursive"] = None | ||
| children: list["DataclassRecursive"] = dc_field(default_factory=list) | ||
| class PydanticRelatedNode(pydantic.BaseModel): | ||
| name: str | ||
| class PydanticRelationSemantics(pydantic.BaseModel): | ||
| required_node: PydanticRelatedNode | ||
| optional_node: Optional[PydanticRelatedNode] = None | ||
| related_nodes: list[PydanticRelatedNode] = [] | ||
| class PydanticAltNode(pydantic.BaseModel): | ||
| name: str | ||
| class PydanticUnionSemantics(pydantic.BaseModel): | ||
| union_node: Union[PydanticRelatedNode, PydanticAltNode] | ||
| optional_union_node: Optional[Union[PydanticRelatedNode, PydanticAltNode]] = None | ||
| class PydanticNestedTypes(pydantic.BaseModel): | ||
| node_map: dict[str, Optional[PydanticRelatedNode]] = {} | ||
| node_groups: list[list[PydanticRelatedNode]] = [] | ||
| class PydanticRecursive(pydantic.BaseModel): | ||
| parent: Optional["PydanticRecursive"] = None | ||
| children: list["PydanticRecursive"] = [] | ||
| class MsgspecRelatedNode(msgspec.Struct): | ||
| name: str | ||
| class MsgspecRelationSemantics(msgspec.Struct): | ||
| required_node: MsgspecRelatedNode | ||
| optional_node: Optional[MsgspecRelatedNode] = None | ||
| related_nodes: list[MsgspecRelatedNode] = msgspec.field(default_factory=list) | ||
| class MsgspecAltNode(msgspec.Struct): | ||
| name: str | ||
| class MsgspecUnionSemantics(msgspec.Struct): | ||
| union_node: Union[MsgspecRelatedNode, MsgspecAltNode] | ||
| optional_union_node: Optional[Union[MsgspecRelatedNode, MsgspecAltNode]] = None | ||
| class MsgspecNestedTypes(msgspec.Struct): | ||
| node_map: dict[str, Optional[MsgspecRelatedNode]] = msgspec.field(default_factory=dict) | ||
| node_groups: list[list[MsgspecRelatedNode]] = msgspec.field(default_factory=list) | ||
| class MsgspecRecursive(msgspec.Struct): | ||
| parent: Optional["MsgspecRecursive"] = None | ||
| children: list["MsgspecRecursive"] = msgspec.field(default_factory=list) | ||
| SNAPSHOT_CASES = [ | ||
| ("attrs_relation_semantics", AttrsRelationSemantics), | ||
| ("attrs_union_semantics", AttrsUnionSemantics), | ||
| ("attrs_nested_types", AttrsNestedTypes), | ||
| ("dataclasses_relation_semantics", DataclassRelationSemantics), | ||
| ("dataclasses_union_semantics", DataclassUnionSemantics), | ||
| ("dataclasses_nested_types", DataclassNestedTypes), | ||
| ("pydantic_relation_semantics", PydanticRelationSemantics), | ||
| ("pydantic_union_semantics", PydanticUnionSemantics), | ||
| ("pydantic_nested_types", PydanticNestedTypes), | ||
| ("msgspec_relation_semantics", MsgspecRelationSemantics), | ||
| ("msgspec_union_semantics", MsgspecUnionSemantics), | ||
| ("msgspec_nested_types", MsgspecNestedTypes), | ||
| ] | ||
| if sys.version_info >= (3, 11): | ||
| SNAPSHOT_CASES.extend( | ||
| [ | ||
| ("attrs_recursive", AttrsRecursive), | ||
| ("dataclasses_recursive", DataclassRecursive), | ||
| ("pydantic_recursive", PydanticRecursive), | ||
| ("msgspec_recursive", MsgspecRecursive), | ||
| ] | ||
| ) |
@@ -69,3 +69,3 @@ name: release | ||
| - uses: pypa/gh-action-pypi-publish@v1.12.4 | ||
| - uses: pypa/gh-action-pypi-publish@v1.13.0 | ||
| with: | ||
@@ -91,3 +91,3 @@ repository-url: https://test.pypi.org/legacy/ | ||
| - uses: pypa/gh-action-pypi-publish@v1.12.4 | ||
| - uses: pypa/gh-action-pypi-publish@v1.13.0 | ||
@@ -94,0 +94,0 @@ create-github-release: |
@@ -51,3 +51,3 @@ name: tests | ||
| os: [ubuntu-latest, macos-latest] | ||
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] | ||
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | ||
@@ -101,7 +101,2 @@ steps: | ||
| - name: Fix graphviz for macos-latest | ||
| if: ${{ matrix.os == 'macos-latest' }} | ||
| run: | | ||
| just python=${{ matrix.python-version }} fix-graphviz-test | ||
| - name: Run tests | ||
@@ -108,0 +103,0 @@ run: | |
+6
-0
| # erdantic Changelog | ||
| ## v1.2.1 (2026-02-15) | ||
| - Added official support for Python 3.14. ([PR #164](https://github.com/drivendataorg/erdantic/pull/164)) | ||
| - _Note_: The `pydantic_v1` plugin is disabled when running on Python 3.14+, as Pydantic has dropped support for its V1 legacy module. | ||
| - _Note_: Python 3.14's internal representation of `typing.Union` and `typing.Optional` have changed, such that they will always render using the `|` operator. | ||
| ## v1.2.0 (2025-09-15) | ||
@@ -4,0 +10,0 @@ |
+6
-0
@@ -60,2 +60,8 @@ # Contributing to erdantic | ||
| All test commands can be passed arguments, e.g., | ||
| ```bash | ||
| just test-all tests/test_against_assets.py | ||
| ``` | ||
| ### Code quality | ||
@@ -62,0 +68,0 @@ |
@@ -12,3 +12,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-380.75 985.75,-380.75 985.75,4 -4,4"/> | ||
| <text text-anchor="middle" x="490.88" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic v1.1.1.dev0 <https://github.com/drivendataorg/erdantic></text> | ||
| <text text-anchor="middle" x="490.88" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic v1.2.1 <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.core.Edge --> | ||
@@ -15,0 +15,0 @@ <g id="node1" class="node"> |
@@ -12,3 +12,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic v1.1.1.dev0 <https://github.com/drivendataorg/erdantic></text> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic v1.2.1 <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
@@ -15,0 +15,0 @@ <g id="node1" class="node"> |
| """Example data model classes.""" | ||
| from erdantic.examples import dataclasses, pydantic, pydantic_v1 | ||
| import sys | ||
| from erdantic.examples import dataclasses, pydantic | ||
| __all__ = [ | ||
| "dataclasses", | ||
| "pydantic", | ||
| "pydantic_v1", | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| from erdantic.examples import pydantic_v1 | ||
| pydantic_v1 | ||
| __all__.append("pydantic_v1") | ||
| try: | ||
@@ -19,1 +26,10 @@ from erdantic.examples import attrs | ||
| raise | ||
| try: | ||
| from erdantic.examples import msgspec | ||
| msgspec | ||
| __all__.append("msgspec") | ||
| except ModuleNotFoundError as e: | ||
| if e.name != "msgspec": | ||
| raise |
@@ -6,2 +6,3 @@ """Example data model classes using legacy | ||
| from enum import Enum | ||
| import sys | ||
| from typing import Optional | ||
@@ -11,3 +12,6 @@ | ||
| if sys.version_info >= (3, 14): | ||
| raise ImportError("Pydantic V1 does not support Python 3.14+") | ||
| class Alignment(str, Enum): | ||
@@ -14,0 +18,0 @@ LAWFUL_GOOD = "lawful_good" |
@@ -20,5 +20,4 @@ import importlib.metadata | ||
| CORE_PLUGINS = ( | ||
| CORE_PLUGINS: tuple[tuple[str, str], ...] = ( | ||
| ("pydantic", "erdantic.plugins.pydantic"), | ||
| ("pydantic_v1", "erdantic.plugins.pydantic"), | ||
| ("attrs", "erdantic.plugins.attrs"), | ||
@@ -29,2 +28,5 @@ ("dataclasses", "erdantic.plugins.dataclasses"), | ||
| if sys.version_info < (3, 14): | ||
| CORE_PLUGINS += (("pydantic_v1", "erdantic.plugins.pydantic"),) | ||
| _ModelType = TypeVar("_ModelType", bound=type) | ||
@@ -31,0 +33,0 @@ _ModelType_co = TypeVar("_ModelType_co", bound=type, covariant=True) |
@@ -11,4 +11,10 @@ import re | ||
| import pydantic | ||
| import pydantic.v1 | ||
| if sys.version_info < (3, 14): | ||
| import pydantic.v1 | ||
| PYDANTIC_V1_AVAILABLE = True | ||
| else: | ||
| PYDANTIC_V1_AVAILABLE = False | ||
| from erdantic.core import FieldInfo, FullyQualifiedName | ||
@@ -76,69 +82,69 @@ from erdantic.exceptions import UnresolvableForwardRefError | ||
| PydanticV1Model = Type[pydantic.v1.BaseModel] | ||
| if PYDANTIC_V1_AVAILABLE: | ||
| PydanticV1Model = Type[pydantic.v1.BaseModel] | ||
| def is_pydantic_v1_model(obj) -> TypeGuard[PydanticV1Model]: | ||
| """Predicate function to determine if an object is a Pydantic V1 model (not an instance). | ||
| This is for models that use the legacy `pydantic.v1` namespace. | ||
| def is_pydantic_v1_model(obj) -> TypeGuard[PydanticV1Model]: | ||
| """Predicate function to determine if an object is a Pydantic V1 model (not an instance). This | ||
| is for models that use the legacy `pydantic.v1` namespace. | ||
| Args: | ||
| obj (Any): The object to check. | ||
| Args: | ||
| obj (Any): The object to check. | ||
| Returns: | ||
| bool: True if the object is a Pydantic V1 model, False otherwise. | ||
| """ | ||
| return isinstance(obj, type) and issubclass(obj, pydantic.v1.BaseModel) | ||
| Returns: | ||
| bool: True if the object is a Pydantic V1 model, False otherwise. | ||
| """ | ||
| return isinstance(obj, type) and issubclass(obj, pydantic.v1.BaseModel) | ||
| def get_fields_from_pydantic_v1_model(model: PydanticV1Model) -> list[FieldInfo]: | ||
| """Given a Pydantic V1 model, return a list of FieldInfo instances for each field in the | ||
| model. | ||
| Args: | ||
| model (PydanticV1Model): The Pydantic V1 model to get fields from. | ||
| def get_fields_from_pydantic_v1_model(model: PydanticV1Model) -> list[FieldInfo]: | ||
| """Given a Pydantic V1 model, return a list of FieldInfo instances for each field in the model. | ||
| Returns: | ||
| list[FieldInfo]: List of FieldInfo instances for each field in the model | ||
| """ | ||
| try: | ||
| model.update_forward_refs() | ||
| except NameError as e: | ||
| model_full_name = FullyQualifiedName.from_object(model) | ||
| # NameError attribute 'name' was added in Python 3.10 | ||
| forward_ref = getattr( | ||
| e, | ||
| "name", | ||
| re.search(r"(?<=')(?:[^'])*(?=')", str(e)).group(0), # type: ignore [union-attr] | ||
| ) | ||
| msg = ( | ||
| f"Failed to resolve forward reference '{forward_ref}' in the type annotations for " | ||
| f"Pydantic V1 model {model_full_name}. " | ||
| "You should call the method update_forward_refs(**locals()) on the model in " | ||
| "the scope where it has been defined to manually resolve it." | ||
| ) | ||
| raise UnresolvableForwardRefError( | ||
| msg, name=forward_ref, model_full_name=model_full_name | ||
| ) from e | ||
| Args: | ||
| model (PydanticV1Model): The Pydantic V1 model to get fields from. | ||
| return [ | ||
| FieldInfo.from_raw_type( | ||
| model_full_name=FullyQualifiedName.from_object(model), | ||
| name=name, | ||
| raw_type=get_type_annotation_from_pydantic_v1_field(field), | ||
| ) | ||
| for name, field in model.__fields__.items() | ||
| ] | ||
| Returns: | ||
| list[FieldInfo]: List of FieldInfo instances for each field in the model | ||
| """ | ||
| try: | ||
| model.update_forward_refs() | ||
| except NameError as e: | ||
| model_full_name = FullyQualifiedName.from_object(model) | ||
| # NameError attribute 'name' was added in Python 3.10 | ||
| forward_ref = getattr( | ||
| e, | ||
| "name", | ||
| re.search(r"(?<=')(?:[^'])*(?=')", str(e)).group(0), # type: ignore [union-attr] | ||
| ) | ||
| msg = ( | ||
| f"Failed to resolve forward reference '{forward_ref}' in the type annotations for " | ||
| f"Pydantic V1 model {model_full_name}. " | ||
| "You should call the method update_forward_refs(**locals()) on the model in " | ||
| "the scope where it has been defined to manually resolve it." | ||
| ) | ||
| raise UnresolvableForwardRefError( | ||
| msg, name=forward_ref, model_full_name=model_full_name | ||
| ) from e | ||
| def get_type_annotation_from_pydantic_v1_field( | ||
| field_info: pydantic.v1.fields.ModelField, | ||
| ) -> type: | ||
| """Utility function to get the type annotation from a Pydantic V1 field info object.""" | ||
| tp = field_info.outer_type_ | ||
| if field_info.allow_none: | ||
| return Optional[tp] # type: ignore | ||
| return tp | ||
| return [ | ||
| FieldInfo.from_raw_type( | ||
| model_full_name=FullyQualifiedName.from_object(model), | ||
| name=name, | ||
| raw_type=get_type_annotation_from_pydantic_v1_field(field), | ||
| ) | ||
| for name, field in model.__fields__.items() | ||
| ] | ||
| def get_type_annotation_from_pydantic_v1_field(field_info: pydantic.v1.fields.ModelField) -> type: | ||
| """Utility function to get the type annotation from a Pydantic V1 field info object.""" | ||
| tp = field_info.outer_type_ | ||
| if field_info.allow_none: | ||
| return Optional[tp] # type: ignore | ||
| return tp | ||
| register_plugin( | ||
| key="pydantic_v1", | ||
| predicate_fn=is_pydantic_v1_model, | ||
| get_fields_fn=get_fields_from_pydantic_v1_model, | ||
| ) | ||
| register_plugin( | ||
| key="pydantic_v1", | ||
| predicate_fn=is_pydantic_v1_model, | ||
| get_fields_fn=get_fields_from_pydantic_v1_model, | ||
| ) |
@@ -76,5 +76,10 @@ import collections.abc | ||
| elif isinstance(t, ForwardRef): | ||
| if t.__forward_evaluated__: | ||
| t = t.__forward_value__ # type: ignore [assignment] | ||
| # Python < 3.14 caches an "evaluated" state on ForwardRef | ||
| if hasattr(t, "__forward_evaluated__"): | ||
| if t.__forward_evaluated__: | ||
| t = t.__forward_value__ # type: ignore [assignment] | ||
| else: | ||
| raise _UnevaluatedForwardRefError(forward_ref=t.__forward_arg__) | ||
| else: | ||
| # Python 3.14+ no longer exposes this evaluated state | ||
| raise _UnevaluatedForwardRefError(forward_ref=t.__forward_arg__) | ||
@@ -81,0 +86,0 @@ |
+2
-1
| Metadata-Version: 2.4 | ||
| Name: erdantic | ||
| Version: 1.2.0 | ||
| Version: 1.2.1 | ||
| Summary: Entity relationship diagrams for Python data model classes like Pydantic. | ||
@@ -25,2 +25,3 @@ Project-URL: Repository, https://github.com/drivendataorg/erdantic | ||
| Classifier: Programming Language :: Python :: 3.13 | ||
| Classifier: Programming Language :: Python :: 3.14 | ||
| Classifier: Topic :: Software Development :: Code Generators | ||
@@ -27,0 +28,0 @@ Requires-Python: >=3.9 |
+11
-2
| [project] | ||
| name = "erdantic" | ||
| version = "1.2.0" | ||
| version = "1.2.1" | ||
| description = "Entity relationship diagrams for Python data model classes like Pydantic." | ||
@@ -20,2 +20,3 @@ readme = "README.md" | ||
| "Programming Language :: Python :: 3.13", | ||
| "Programming Language :: Python :: 3.14", | ||
| "Framework :: Pydantic", | ||
@@ -91,3 +92,3 @@ "Framework :: Pydantic :: 2", | ||
| [tool.pixi.project] | ||
| [tool.pixi.workspace] | ||
| channels = ["conda-forge"] | ||
@@ -112,2 +113,4 @@ platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] | ||
| python = "3.13.*" | ||
| [tool.pixi.feature.py314.dependencies] | ||
| python = "3.14.*" | ||
@@ -121,4 +124,10 @@ [tool.pixi.environments] | ||
| test-py313 = ["py313", "test"] | ||
| test-py314 = ["py314", "test"] | ||
| typecheck = ["py313", "typecheck"] | ||
| [tool.pixi.activation] | ||
| scripts = [ | ||
| "scripts/fix_graphviz.sh", # Generate Graphviz plugin config files if missing | ||
| ] | ||
| ## TOOLS | ||
@@ -125,0 +134,0 @@ |
| from pathlib import Path | ||
| import sys | ||
@@ -22,4 +23,4 @@ import tests.pydantic_with_default_column | ||
| filename = "pydantic_with_default_column" | ||
| out_dir = ASSETS_DIR / "test_core-test_subclass" | ||
| (out_dir).mkdir(exist_ok=True) | ||
| out_dir = ASSETS_DIR / sys.argv[1] / "test_core-test_subclass" | ||
| out_dir.mkdir(exist_ok=True) | ||
| diagram = tests.pydantic_with_default_column.EntityRelationshipDiagramWithDefault() | ||
@@ -26,0 +27,0 @@ diagram.add_model(erdantic.examples.pydantic.Party) |
| from pathlib import Path | ||
| from types import ModuleType | ||
| import sys | ||
| from tests.snapshot_cases import SNAPSHOT_CASES | ||
| import erdantic as erd | ||
@@ -19,22 +21,44 @@ import erdantic._version | ||
| def create_assets(examples: ModuleType): | ||
| plugin = examples.__name__.rsplit(".", 1)[1] | ||
| (ASSETS_DIR).mkdir(exist_ok=True) | ||
| diagram = erd.create(examples.Party) | ||
| def generate_example_assets(name: str, model_or_module: object, out_dir: Path): | ||
| """Generate all static assets for user-facing example cases.""" | ||
| out_dir.mkdir(parents=True, exist_ok=True) | ||
| diagram = erd.create(model_or_module) | ||
| diagram.draw(out=ASSETS_DIR / f"{plugin}.png") | ||
| diagram.draw(out=ASSETS_DIR / f"{plugin}.svg") | ||
| with (ASSETS_DIR / f"{plugin}.dot").open("w") as fp: | ||
| diagram.draw(out=out_dir / f"{name}.png") | ||
| diagram.draw(out=out_dir / f"{name}.svg") | ||
| with (out_dir / f"{name}.dot").open("w") as fp: | ||
| fp.write(diagram.to_dot()) | ||
| with (ASSETS_DIR / f"{plugin}.json").open("w") as fp: | ||
| with (out_dir / f"{name}.json").open("w") as fp: | ||
| fp.write(diagram.model_dump_json(indent=2)) | ||
| with (out_dir / f"{name}.d2").open("w") as fp: | ||
| fp.write(diagram.to_d2()) | ||
| def generate_snapshot_assets(name: str, model_or_module: object, out_dir: Path): | ||
| """Generate only text-based renderer snapshots for test-focused cases.""" | ||
| out_dir.mkdir(parents=True, exist_ok=True) | ||
| diagram = erd.create(model_or_module) | ||
| with (out_dir / f"{name}.dot").open("w") as fp: | ||
| fp.write(diagram.to_dot()) | ||
| with (out_dir / f"{name}.d2").open("w") as fp: | ||
| fp.write(diagram.to_d2()) | ||
| if __name__ == "__main__": | ||
| for module in [ | ||
| out_dir = ASSETS_DIR / sys.argv[1] | ||
| out_dir.mkdir(exist_ok=True) | ||
| modules = [ | ||
| erdantic.examples.attrs, | ||
| erdantic.examples.dataclasses, | ||
| erdantic.examples.pydantic, | ||
| erdantic.examples.pydantic_v1, | ||
| ]: | ||
| create_assets(module) | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| modules.append(erdantic.examples.pydantic_v1) | ||
| for module in modules: | ||
| plugin = module.__name__.rsplit(".", 1)[1] | ||
| generate_example_assets(plugin, module.Party, out_dir) | ||
| snapshots_dir = out_dir / "snapshots" | ||
| for case_name, model in SNAPSHOT_CASES: | ||
| generate_snapshot_assets(case_name, model, snapshots_dir) |
| import filecmp | ||
| import os | ||
| from pathlib import Path | ||
| import sys | ||
@@ -12,25 +13,38 @@ import filetype | ||
| import erdantic.examples | ||
| from tests.snapshot_cases import SNAPSHOT_CASES as SNAPSHOT_MODEL_CASES | ||
| from tests.utils import assert_dot_equals | ||
| ASSETS_DIR = Path(__file__).resolve().parent / "assets" | ||
| if sys.version_info < (3, 14): | ||
| ASSETS_SUBDIR = "py_lt_314" | ||
| else: | ||
| ASSETS_SUBDIR = "py_gte_314" | ||
| ASSETS_DIR = Path(__file__).resolve().parent / "assets" / ASSETS_SUBDIR | ||
| CASES = ( | ||
| EXAMPLE_CASES = [ | ||
| ("attrs", erdantic.examples.attrs), | ||
| ("dataclasses", erdantic.examples.dataclasses), | ||
| ("pydantic", erdantic.examples.pydantic), | ||
| ("pydantic_v1", erdantic.examples.pydantic_v1), | ||
| ("attrs", erdantic.examples.attrs.Party), | ||
| ("dataclasses", erdantic.examples.dataclasses.Party), | ||
| ("pydantic", erdantic.examples.pydantic.Party), | ||
| ("pydantic_v1", erdantic.examples.pydantic_v1.Party), | ||
| ) | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| EXAMPLE_CASES.extend( | ||
| [ | ||
| ("pydantic_v1", erdantic.examples.pydantic_v1), | ||
| ("pydantic_v1", erdantic.examples.pydantic_v1.Party), | ||
| ] | ||
| ) | ||
| @pytest.mark.parametrize("case", CASES) | ||
| def test_draw_png_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses draw convenience function.""" | ||
| SNAPSHOTS_DIR = ASSETS_DIR / "snapshots" | ||
| @pytest.mark.parametrize("case", EXAMPLE_CASES) | ||
| def test_draw_png_examples_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses draw convenience function for user-facing examples.""" | ||
| plugin, model_or_module = case | ||
| expected_path = ASSETS_DIR / f"{plugin}.png" | ||
| out_path = outputs_dir / f"{plugin}.png" | ||
@@ -47,9 +61,9 @@ | ||
| @pytest.mark.parametrize("case", CASES) | ||
| def test_draw_svg_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses draw convenience function.""" | ||
| @pytest.mark.parametrize("case", EXAMPLE_CASES) | ||
| def test_draw_svg_examples_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses draw convenience function for user-facing examples.""" | ||
| plugin, model_or_module = case | ||
| expected_path = ASSETS_DIR / f"{plugin}.svg" | ||
| out_path = outputs_dir / f"{plugin}.svg" | ||
| out_path = outputs_dir / f"{plugin}.svg" | ||
| erd.draw(model_or_module, out=out_path) | ||
@@ -61,9 +75,9 @@ if not os.getenv("GITHUB_ACTIONS", False): | ||
| @pytest.mark.parametrize("case", CASES) | ||
| def test_to_dot_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_dot convenience function.""" | ||
| @pytest.mark.parametrize("case", EXAMPLE_CASES) | ||
| def test_to_dot_examples_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_dot convenience function for user-facing examples.""" | ||
| plugin, model_or_module = case | ||
| expected_path = ASSETS_DIR / f"{plugin}.dot" | ||
| out_path = outputs_dir / f"{plugin}.dot" | ||
| out_path = outputs_dir / f"{plugin}.dot" | ||
| out = erd.to_dot(model_or_module) | ||
@@ -74,8 +88,8 @@ out_path.write_text(out) | ||
| @pytest.mark.parametrize("case", CASES) | ||
| def test_json_against_static_assets(case, outputs_dir, version_patch): | ||
| @pytest.mark.parametrize("case", EXAMPLE_CASES) | ||
| def test_json_examples_against_static_assets(case, outputs_dir, version_patch): | ||
| plugin, model_or_module = case | ||
| expected_path = ASSETS_DIR / f"{plugin}.json" | ||
| out_path = outputs_dir / f"{plugin}.json" | ||
| out_path = outputs_dir / f"{plugin}.json" | ||
| diagram = erd.create(model_or_module) | ||
@@ -90,17 +104,38 @@ out_json = diagram.model_dump_json(indent=2) | ||
| @pytest.mark.parametrize("case", CASES) | ||
| def test_to_d2_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_d2 method to test against static assets.""" | ||
| @pytest.mark.parametrize("case", EXAMPLE_CASES) | ||
| def test_to_d2_examples_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_d2 method to test against static assets for user-facing examples.""" | ||
| plugin, model_or_module = case | ||
| expected_path = ASSETS_DIR / f"{plugin}.d2" | ||
| # to_d2 is not a convenience function, so we always create the diagram first | ||
| diagram = erd.create(model_or_module) | ||
| out = diagram.to_d2() | ||
| # Write our own asset for inspection | ||
| out_path = outputs_dir / f"{plugin}.d2" | ||
| out_path.write_text(out) | ||
| assert out.strip() == expected_path.read_text().strip() | ||
| # Compare to expected | ||
| @pytest.mark.parametrize("case", SNAPSHOT_MODEL_CASES) | ||
| def test_to_dot_snapshots_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_dot convenience function for test-focused snapshots.""" | ||
| case_name, model = case | ||
| expected_path = SNAPSHOTS_DIR / f"{case_name}.dot" | ||
| out_dir = outputs_dir / "snapshots" | ||
| out_dir.mkdir(parents=True, exist_ok=True) | ||
| out_path = out_dir / f"{case_name}.dot" | ||
| out = erd.to_dot(model) | ||
| out_path.write_text(out) | ||
| assert_dot_equals(out, expected_path.read_text()) | ||
| @pytest.mark.parametrize("case", SNAPSHOT_MODEL_CASES) | ||
| def test_to_d2_snapshots_against_static_assets(case, outputs_dir, version_patch): | ||
| """Uses to_d2 method for test-focused snapshots.""" | ||
| case_name, model = case | ||
| expected_path = SNAPSHOTS_DIR / f"{case_name}.d2" | ||
| out_dir = outputs_dir / "snapshots" | ||
| out_dir.mkdir(parents=True, exist_ok=True) | ||
| out_path = out_dir / f"{case_name}.d2" | ||
| diagram = erd.create(model) | ||
| out = diagram.to_d2() | ||
| out_path.write_text(out) | ||
| assert out.strip() == expected_path.read_text().strip() |
+1
-10
@@ -49,3 +49,3 @@ from pprint import pprint | ||
| assert fields[3].name == "active_quest" | ||
| assert fields[3].type_name == "Optional[Quest]" | ||
| assert fields[3].raw_type == Optional[attrs_examples.Quest] | ||
@@ -93,15 +93,11 @@ | ||
| assert fields["imported_ref"].raw_type == attrs_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[attrs_examples.Quest] | ||
| assert fields["self_ref"].type_name == "GlobalWithFwdRefs" | ||
| assert fields["self_ref"].raw_type == GlobalWithFwdRefs | ||
| assert fields["nested_self_ref"].type_name == "Optional[GlobalWithFwdRefs]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[GlobalWithFwdRefs] | ||
| assert fields["global_ref_before"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref_before"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref_before"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref_before"].raw_type == Optional[GlobalOtherClassBefore] | ||
| assert fields["global_ref_after"].type_name == "GlobalOtherClassAfter" | ||
| assert fields["global_ref_after"].raw_type == GlobalOtherClassAfter | ||
| assert fields["nested_global_ref_after"].type_name == "Optional[GlobalOtherClassAfter]" | ||
| assert fields["nested_global_ref_after"].raw_type == Optional[GlobalOtherClassAfter] | ||
@@ -129,7 +125,5 @@ | ||
| assert fields["imported_ref"].raw_type == attrs_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[attrs_examples.Quest] | ||
| assert fields["global_ref"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref"].raw_type == Optional[GlobalOtherClassBefore] | ||
@@ -187,11 +181,8 @@ | ||
| assert fields["self_ref"].raw_type == FnScopeManuallyResolvable | ||
| assert fields["nested_self_ref"].type_name == "Optional[FnScopeManuallyResolvable]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[FnScopeManuallyResolvable] | ||
| assert fields["sibling_ref_before"].type_name == "FnScopeOtherClassBefore" | ||
| assert fields["sibling_ref_before"].raw_type == FnScopeOtherClassBefore | ||
| assert fields["nested_sibling_ref_before"].type_name == "Optional[FnScopeOtherClassBefore]" | ||
| assert fields["nested_sibling_ref_before"].raw_type == Optional[FnScopeOtherClassBefore] | ||
| assert fields["sibling_ref_after"].type_name == "FnScopeOtherClassAfter" | ||
| assert fields["sibling_ref_after"].raw_type == FnScopeOtherClassAfter | ||
| assert fields["nested_sibling_ref_after"].type_name == "Optional[FnScopeOtherClassAfter]" | ||
| assert fields["nested_sibling_ref_after"].raw_type == Optional[FnScopeOtherClassAfter] |
+10
-2
@@ -28,6 +28,12 @@ import builtins | ||
| from erdantic.plugins.dataclasses import DataclassType | ||
| from erdantic.typing_utils import is_nullable_type | ||
| ASSETS_DIR = Path(__file__).resolve().parent / "assets" | ||
| if sys.version_info < (3, 14): | ||
| ASSETS_SUBDIR = "py_lt_314" | ||
| else: | ||
| ASSETS_SUBDIR = "py_gte_314" | ||
| ASSETS_DIR = Path(__file__).resolve().parent / "assets" / ASSETS_SUBDIR | ||
| def test_fully_qualified_name_import_object(): | ||
@@ -97,4 +103,6 @@ full_name = FullyQualifiedName.from_object(Party) | ||
| ) | ||
| assert field_info.type_name == "Optional[str]" | ||
| assert field_info.raw_type == tp | ||
| assert "Annotated" not in field_info.type_name | ||
| assert "str" in field_info.type_name | ||
| assert is_nullable_type(field_info.raw_type) | ||
@@ -101,0 +109,0 @@ |
+1
-1
@@ -26,3 +26,3 @@ import erdantic as erd | ||
| assert "+name: str" in d2_string | ||
| assert '+active_quest: "Optional[Quest]"' in d2_string | ||
| assert "+active_quest:" in d2_string | ||
@@ -29,0 +29,0 @@ # Check for relationships and crow's foot |
@@ -51,3 +51,3 @@ import dataclasses | ||
| assert fields[3].name == "active_quest" | ||
| assert fields[3].type_name == "Optional[Quest]" | ||
| assert fields[3].raw_type == Optional[dataclasses_examples.Quest] | ||
@@ -95,15 +95,11 @@ | ||
| assert fields["imported_ref"].raw_type == dataclasses_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[dataclasses_examples.Quest] | ||
| assert fields["self_ref"].type_name == "GlobalWithFwdRefs" | ||
| assert fields["self_ref"].raw_type == GlobalWithFwdRefs | ||
| assert fields["nested_self_ref"].type_name == "Optional[GlobalWithFwdRefs]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[GlobalWithFwdRefs] | ||
| assert fields["global_ref_before"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref_before"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref_before"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref_before"].raw_type == Optional[GlobalOtherClassBefore] | ||
| assert fields["global_ref_after"].type_name == "GlobalOtherClassAfter" | ||
| assert fields["global_ref_after"].raw_type == GlobalOtherClassAfter | ||
| assert fields["nested_global_ref_after"].type_name == "Optional[GlobalOtherClassAfter]" | ||
| assert fields["nested_global_ref_after"].raw_type == Optional[GlobalOtherClassAfter] | ||
@@ -131,7 +127,5 @@ | ||
| assert fields["imported_ref"].raw_type == dataclasses_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[dataclasses_examples.Quest] | ||
| assert fields["global_ref"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref"].raw_type == Optional[GlobalOtherClassBefore] | ||
@@ -189,11 +183,8 @@ | ||
| assert fields["self_ref"].raw_type == FnScopeManuallyResolvable | ||
| assert fields["nested_self_ref"].type_name == "Optional[FnScopeManuallyResolvable]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[FnScopeManuallyResolvable] | ||
| assert fields["sibling_ref_before"].type_name == "FnScopeOtherClassBefore" | ||
| assert fields["sibling_ref_before"].raw_type == FnScopeOtherClassBefore | ||
| assert fields["nested_sibling_ref_before"].type_name == "Optional[FnScopeOtherClassBefore]" | ||
| assert fields["nested_sibling_ref_before"].raw_type == Optional[FnScopeOtherClassBefore] | ||
| assert fields["sibling_ref_after"].type_name == "FnScopeOtherClassAfter" | ||
| assert fields["sibling_ref_after"].raw_type == FnScopeOtherClassAfter | ||
| assert fields["nested_sibling_ref_after"].type_name == "Optional[FnScopeOtherClassAfter]" | ||
| assert fields["nested_sibling_ref_after"].raw_type == Optional[FnScopeOtherClassAfter] | ||
@@ -200,0 +191,0 @@ |
@@ -49,3 +49,3 @@ from pprint import pprint | ||
| assert fields[3].name == "active_quest" | ||
| assert fields[3].type_name == "Optional[Quest]" | ||
| assert fields[3].raw_type == Optional[msgspec_examples.Quest] | ||
@@ -90,15 +90,11 @@ | ||
| assert fields["imported_ref"].raw_type == msgspec_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[msgspec_examples.Quest] | ||
| assert fields["self_ref"].type_name == "GlobalWithFwdRefs" | ||
| assert fields["self_ref"].raw_type == GlobalWithFwdRefs | ||
| assert fields["nested_self_ref"].type_name == "Optional[GlobalWithFwdRefs]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[GlobalWithFwdRefs] | ||
| assert fields["global_ref_before"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref_before"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref_before"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref_before"].raw_type == Optional[GlobalOtherClassBefore] | ||
| assert fields["global_ref_after"].type_name == "GlobalOtherClassAfter" | ||
| assert fields["global_ref_after"].raw_type == GlobalOtherClassAfter | ||
| assert fields["nested_global_ref_after"].type_name == "Optional[GlobalOtherClassAfter]" | ||
| assert fields["nested_global_ref_after"].raw_type == Optional[GlobalOtherClassAfter] | ||
@@ -125,7 +121,5 @@ | ||
| assert fields["imported_ref"].raw_type == msgspec_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[msgspec_examples.Quest] | ||
| assert fields["global_ref"].type_name == "GlobalOtherClassBefore" | ||
| assert fields["global_ref"].raw_type == GlobalOtherClassBefore | ||
| assert fields["nested_global_ref"].type_name == "Optional[GlobalOtherClassBefore]" | ||
| assert fields["nested_global_ref"].raw_type == Optional[GlobalOtherClassBefore] | ||
@@ -132,0 +126,0 @@ |
+28
-13
| import subprocess | ||
| import sys | ||
| import textwrap | ||
@@ -40,8 +41,10 @@ | ||
| def test_get_predicate_fn(): | ||
| for key, predicate_fn in [ | ||
| cases = [ | ||
| ("attrs", erdantic.plugins.attrs.is_attrs_class), | ||
| ("dataclasses", erdantic.plugins.dataclasses.is_dataclass_class), | ||
| ("pydantic", erdantic.plugins.pydantic.is_pydantic_model), | ||
| ("pydantic_v1", erdantic.plugins.pydantic.is_pydantic_v1_model), | ||
| ]: | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| cases.append(("pydantic_v1", erdantic.plugins.pydantic.is_pydantic_v1_model)) | ||
| for key, predicate_fn in cases: | ||
| assert get_predicate_fn(key) == predicate_fn | ||
@@ -54,8 +57,12 @@ | ||
| def test_get_field_extractor_fn(): | ||
| for key, get_fields_fn in [ | ||
| cases = [ | ||
| ("attrs", erdantic.plugins.attrs.get_fields_from_attrs_class), | ||
| ("dataclasses", erdantic.plugins.dataclasses.get_fields_from_dataclass), | ||
| ("pydantic", erdantic.plugins.pydantic.get_fields_from_pydantic_model), | ||
| ("pydantic_v1", erdantic.plugins.pydantic.get_fields_from_pydantic_v1_model), | ||
| ]: | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| cases.append(("pydantic_v1", erdantic.plugins.pydantic.get_fields_from_pydantic_v1_model)) | ||
| for key, get_fields_fn in cases: | ||
| assert get_field_extractor_fn(key) == get_fields_fn | ||
@@ -68,11 +75,16 @@ | ||
| def test_identify_field_extractor_fn(): | ||
| for example_module, get_fields_fn in [ | ||
| cases = [ | ||
| (erdantic.examples.attrs, erdantic.plugins.attrs.get_fields_from_attrs_class), | ||
| (erdantic.examples.dataclasses, erdantic.plugins.dataclasses.get_fields_from_dataclass), | ||
| (erdantic.examples.pydantic, erdantic.plugins.pydantic.get_fields_from_pydantic_model), | ||
| ( | ||
| erdantic.examples.pydantic_v1, | ||
| erdantic.plugins.pydantic.get_fields_from_pydantic_v1_model, | ||
| ), | ||
| ]: | ||
| ] | ||
| if sys.version_info < (3, 14): | ||
| cases.append( | ||
| ( | ||
| erdantic.examples.pydantic_v1, | ||
| erdantic.plugins.pydantic.get_fields_from_pydantic_v1_model, | ||
| ) | ||
| ) | ||
| for example_module, get_fields_fn in cases: | ||
| assert identify_field_extractor_fn(example_module.Party) == get_fields_fn | ||
@@ -87,3 +99,6 @@ | ||
| """Core plugins are loaded when erdantic is imported.""" | ||
| for key in ("attrs", "dataclasses", "msgspec", "pydantic", "pydantic_v1"): | ||
| expected_keys = ["attrs", "dataclasses", "pydantic", "msgspec"] | ||
| if sys.version_info < (3, 14): | ||
| expected_keys.append("pydantic_v1") | ||
| for key in expected_keys: | ||
| script = textwrap.dedent( | ||
@@ -90,0 +105,0 @@ f"""\ |
| from pprint import pprint | ||
| import sys | ||
| from typing import Optional | ||
@@ -10,10 +11,14 @@ | ||
| import erdantic.examples.pydantic as pydantic_examples | ||
| import erdantic.examples.pydantic_v1 as pydantic_v1_examples | ||
| from erdantic.exceptions import UnresolvableForwardRefError | ||
| from erdantic.plugins.pydantic import ( | ||
| get_fields_from_pydantic_v1_model, | ||
| is_pydantic_v1_model, | ||
| ) | ||
| if sys.version_info < (3, 14): | ||
| from erdantic.examples import pydantic_v1 as pydantic_v1_examples | ||
| from erdantic.plugins.pydantic import ( | ||
| get_fields_from_pydantic_v1_model, | ||
| is_pydantic_v1_model, | ||
| ) | ||
| else: | ||
| pytest.skip("Pydantic v1 is not supported on Python 3.14 and above", allow_module_level=True) | ||
| def test_is_pydantic_v1_model(): | ||
@@ -20,0 +25,0 @@ class NotAPydanticModel: |
| from pprint import pprint | ||
| import sys | ||
| from typing import Optional | ||
| import pydantic | ||
| import pydantic.v1 | ||
| import pytest | ||
| if sys.version_info < (3, 14): | ||
| import pydantic.v1 | ||
| import erdantic.examples.pydantic_v1 as pydantic_v1_examples | ||
| from erdantic.core import EntityRelationshipDiagram, FullyQualifiedName | ||
| import erdantic.examples.pydantic as pydantic_examples | ||
| import erdantic.examples.pydantic_v1 as pydantic_v1_examples | ||
| from erdantic.exceptions import UnresolvableForwardRefError | ||
@@ -30,3 +34,4 @@ from erdantic.plugins.pydantic import ( | ||
| assert not is_pydantic_model(NotAPydanticModel) | ||
| assert not is_pydantic_model(pydantic_v1_examples.Party) | ||
| if sys.version_info < (3, 14): | ||
| assert not is_pydantic_model(pydantic_v1_examples.Party) | ||
@@ -53,3 +58,3 @@ | ||
| assert fields[3].name == "active_quest" | ||
| assert fields[3].type_name == "Optional[Quest]" | ||
| assert fields[3].raw_type == Optional[pydantic_examples.Quest] | ||
@@ -95,11 +100,8 @@ | ||
| assert fields["imported_ref"].raw_type == pydantic_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[pydantic_examples.Quest] | ||
| assert fields["self_ref"].type_name == "GlobalWithFwdRefs" | ||
| assert fields["self_ref"].raw_type == GlobalWithFwdRefs | ||
| assert fields["nested_self_ref"].type_name == "Optional[GlobalWithFwdRefs]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[GlobalWithFwdRefs] | ||
| assert fields["global_ref_before"].type_name == "GlobalOtherModelBefore" | ||
| assert fields["global_ref_before"].raw_type == GlobalOtherModelBefore | ||
| assert fields["nested_global_ref_before"].type_name == "Optional[GlobalOtherModelBefore]" | ||
| assert fields["nested_global_ref_before"].raw_type == Optional[GlobalOtherModelBefore] | ||
@@ -109,3 +111,2 @@ # Resolved by model_rebuild() | ||
| assert fields["global_ref_after"].raw_type == GlobalOtherModelAfter | ||
| assert fields["nested_global_ref_after"].type_name == "Optional[GlobalOtherModelAfter]" | ||
| assert fields["nested_global_ref_after"].raw_type == Optional[GlobalOtherModelAfter] | ||
@@ -142,15 +143,11 @@ | ||
| assert fields["imported_ref"].raw_type == pydantic_examples.Party | ||
| assert fields["nested_imported_ref"].type_name == "Optional[Quest]" | ||
| assert fields["nested_imported_ref"].raw_type == Optional[pydantic_examples.Quest] | ||
| assert fields["global_ref"].type_name == "GlobalWithFwdRefs" | ||
| assert fields["global_ref"].raw_type == GlobalWithFwdRefs | ||
| assert fields["nested_global_ref"].type_name == "Optional[GlobalWithFwdRefs]" | ||
| assert fields["nested_global_ref"].raw_type == Optional[GlobalWithFwdRefs] | ||
| assert fields["self_ref"].type_name == "FnScopeAutomaticallyResolvable" | ||
| assert fields["self_ref"].raw_type == FnScopeAutomaticallyResolvable | ||
| assert fields["nested_self_ref"].type_name == "Optional[FnScopeAutomaticallyResolvable]" | ||
| assert fields["nested_self_ref"].raw_type == Optional[FnScopeAutomaticallyResolvable] | ||
| assert fields["sibling_ref_before"].type_name == "FnScopeOtherModelBefore" | ||
| assert fields["sibling_ref_before"].raw_type == FnScopeOtherModelBefore | ||
| assert fields["nested_sibling_ref_before"].type_name == "Optional[FnScopeOtherModelBefore]" | ||
| assert fields["nested_sibling_ref_before"].raw_type == Optional[FnScopeOtherModelBefore] | ||
@@ -195,3 +192,2 @@ | ||
| assert fields["sibling_ref_after"].raw_type == FnScopeOtherModelAfter | ||
| assert fields["nested_sibling_ref_after"].type_name == "Optional[FnScopeOtherModelAfter]" | ||
| assert fields["nested_sibling_ref_after"].raw_type == Optional[FnScopeOtherModelAfter] |
@@ -71,7 +71,6 @@ import typing | ||
| # Resolve forward reference | ||
| typing.get_type_hints(Model, localns=locals()) | ||
| resolved_annotations = typing.get_type_hints(Model, localns=locals()) | ||
| assert get_recursive_args(resolved_annotations["field"]) == [SomeForwardRef] | ||
| assert get_recursive_args(Model.__annotations__["field"]) == [SomeForwardRef] | ||
| def test_get_depth1_bases(): | ||
@@ -78,0 +77,0 @@ class A0: |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.attrs.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n level (int): Level of this adventurer\n alignment (Alignment): Alignment of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.attrs.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.attrs.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.attrs.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.attrs.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.attrs.Party-active_quest-erdantic.examples.attrs.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Party-members-erdantic.examples.attrs.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.attrs.Quest-giver-erdantic.examples.attrs.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.attrs", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.attrs.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.attrs.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.attrs.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    level (int): Level of this adventurer    alignment (Alignment): Alignment of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.attrs.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.attrs.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.attrs.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.attrs.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Party->erdantic.examples.attrs.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.attrs.Party:e->erdantic.examples.attrs.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.attrs.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.attrs.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.attrs.Quest->erdantic.examples.attrs.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.attrs.Quest:e->erdantic.examples.attrs.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.dataclasses.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.dataclasses.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.dataclasses.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.dataclasses.Party-active_quest-erdantic.examples.dataclasses.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Party-members-erdantic.examples.dataclasses.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.dataclasses.Quest-giver-erdantic.examples.dataclasses.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.dataclasses", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.dataclasses.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.dataclasses.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.dataclasses.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.dataclasses.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.dataclasses.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.dataclasses.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Party->erdantic.examples.dataclasses.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Party:e->erdantic.examples.dataclasses.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.dataclasses.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.dataclasses.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.dataclasses.Quest->erdantic.examples.dataclasses.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.dataclasses.Quest:e->erdantic.examples.dataclasses.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic_v1.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic_v1.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic_v1.Party-active_quest-erdantic.examples.pydantic_v1.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Party-members-erdantic.examples.pydantic_v1.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic_v1.Quest-giver-erdantic.examples.pydantic_v1.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic_v1", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic_v1.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic_v1.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic_v1.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party->erdantic.examples.pydantic_v1.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Party:e->erdantic.examples.pydantic_v1.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic_v1.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Party->erdantic.examples.pydantic_v1.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Party:e->erdantic.examples.pydantic_v1.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic_v1.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic_v1.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic_v1.Quest->erdantic.examples.pydantic_v1.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic_v1.Quest:e->erdantic.examples.pydantic_v1.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="685pt" height="314pt" | ||
| viewBox="0.00 0.00 685.25 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 681.25,-309.75 681.25,4 -4,4"/> | ||
| <text text-anchor="middle" x="338.62" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="309.38,-279.25 309.38,-301.75 436.12,-301.75 436.12,-279.25 309.38,-279.25"/> | ||
| <text text-anchor="start" x="339" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-256.75 309.38,-279.25 371.62,-279.25 371.62,-256.75 309.38,-256.75"/> | ||
| <text text-anchor="start" x="325.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-256.75 371.62,-279.25 436.12,-279.25 436.12,-256.75 371.62,-256.75"/> | ||
| <text text-anchor="start" x="397.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-234.25 309.38,-256.75 371.62,-256.75 371.62,-234.25 309.38,-234.25"/> | ||
| <text text-anchor="start" x="312.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-234.25 371.62,-256.75 436.12,-256.75 436.12,-234.25 371.62,-234.25"/> | ||
| <text text-anchor="start" x="397.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-211.75 309.38,-234.25 371.62,-234.25 371.62,-211.75 309.38,-211.75"/> | ||
| <text text-anchor="start" x="313.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-211.75 371.62,-234.25 436.12,-234.25 436.12,-211.75 371.62,-211.75"/> | ||
| <text text-anchor="start" x="374.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="309.38,-189.25 309.38,-211.75 371.62,-211.75 371.62,-189.25 309.38,-189.25"/> | ||
| <text text-anchor="start" x="327.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="371.62,-189.25 371.62,-211.75 436.12,-211.75 436.12,-189.25 371.62,-189.25"/> | ||
| <text text-anchor="start" x="396.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 193.5,-305.75 193.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="80.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M203.46,-227.67C246.93,-233.77 252.74,-279.62 293.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-227 198.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-227.34 203.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="298.1,-289.4 307.56,-294.94 303.4,-289.97 307.71,-290.43 307.71,-290.43 307.71,-290.43 303.4,-289.97 308.52,-285.99 298.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="296.89,-289.27 291.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="301.5,-131 301.5,-153.5 444,-153.5 444,-131 301.5,-131"/> | ||
| <text text-anchor="start" x="355.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-108.5 301.5,-131 375.75,-131 375.75,-108.5 301.5,-108.5"/> | ||
| <text text-anchor="start" x="323.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-108.5 375.75,-131 444,-131 444,-108.5 375.75,-108.5"/> | ||
| <text text-anchor="start" x="403.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-86 301.5,-108.5 375.75,-108.5 375.75,-86 301.5,-86"/> | ||
| <text text-anchor="start" x="324.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-86 375.75,-108.5 444,-108.5 444,-86 375.75,-86"/> | ||
| <text text-anchor="start" x="378.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="301.5,-63.5 301.5,-86 375.75,-86 375.75,-63.5 301.5,-63.5"/> | ||
| <text text-anchor="start" x="304.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="375.75,-63.5 375.75,-86 444,-86 444,-63.5 375.75,-63.5"/> | ||
| <text text-anchor="start" x="402.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M203.23,-203.8C242.55,-197.9 248.51,-156.32 282.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="193.5,-204.5 198.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="198.49,-204.14 203.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="301.5,-142.25 296.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="294.82,-138.2 296.31,-148.09 294.33,-148.38 292.85,-138.49 294.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="296.56,-142.99 291.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="287.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="552,-86 552,-108.5 677.25,-108.5 677.25,-86 552,-86"/> | ||
| <text text-anchor="start" x="580.5" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="552,-63.5 552,-86 601.5,-86 601.5,-63.5 552,-63.5"/> | ||
| <text text-anchor="start" x="561.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-63.5 601.5,-86 677.25,-86 677.25,-63.5 601.5,-63.5"/> | ||
| <text text-anchor="start" x="632.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="552,-41 552,-63.5 601.5,-63.5 601.5,-41 552,-41"/> | ||
| <text text-anchor="start" x="558" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-41 601.5,-63.5 677.25,-63.5 677.25,-41 601.5,-41"/> | ||
| <text text-anchor="start" x="604.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="552,-18.5 552,-41 601.5,-41 601.5,-18.5 552,-18.5"/> | ||
| <text text-anchor="start" x="555" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="601.5,-18.5 601.5,-41 677.25,-41 677.25,-18.5 601.5,-18.5"/> | ||
| <text text-anchor="start" x="632.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M453.87,-97.25C489.07,-97.25 503.8,-97.25 537.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="444,-97.25 449,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="449,-97.25 454,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="552,-97.25 547,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="546,-92.25 546,-102.25 544,-102.25 544,-92.25 546,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="547,-97.25 542,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="541,-92.25 541,-102.25 539,-102.25 539,-92.25 541,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="542,-97.25 537,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is not supported yet
| { | ||
| "models": { | ||
| "erdantic.examples.pydantic.Adventurer": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "Adventurer", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "profession": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "profession", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "alignment": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "alignment", | ||
| "type_name": "Alignment", | ||
| "default_value": "" | ||
| }, | ||
| "level": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "name": "level", | ||
| "type_name": "int", | ||
| "default_value": "1" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Adventurer\n\nA person often late for dinner but with a tale or two to tell.\n\nAttributes:\n name (str): Name of this adventurer\n profession (str): Profession of this adventurer\n alignment (Alignment): Alignment of this adventurer\n level (int): Level of this adventurer\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Party": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "Party", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "formed_datetime": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "formed_datetime", | ||
| "type_name": "datetime", | ||
| "default_value": "" | ||
| }, | ||
| "members": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "members", | ||
| "type_name": "list[Adventurer]", | ||
| "default_value": "[]" | ||
| }, | ||
| "active_quest": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "name": "active_quest", | ||
| "type_name": "Optional[Quest]", | ||
| "default_value": "None" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Party\n\nA group of adventurers finding themselves doing and saying things altogether unexpected.\n\nAttributes:\n name (str): Name that party is known by\n formed_datetime (datetime): Timestamp of when the party was formed\n members (list[Adventurer]): Adventurers that belong to this party\n active_quest (Optional[Quest]): Current quest that party is actively tackling\n" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "Quest", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "giver": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "giver", | ||
| "type_name": "QuestGiver", | ||
| "default_value": "" | ||
| }, | ||
| "reward_gold": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "name": "reward_gold", | ||
| "type_name": "int", | ||
| "default_value": "100" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.Quest\n\nA task to complete, with some monetary reward.\n\nAttributes:\n name (str): Name by which this quest is referred to\n giver (QuestGiver): Person who offered the quest\n reward_gold (int): Amount of gold to be rewarded for quest completion\n" | ||
| }, | ||
| "erdantic.examples.pydantic.QuestGiver": { | ||
| "full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "QuestGiver", | ||
| "fields": { | ||
| "name": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "name", | ||
| "type_name": "str", | ||
| "default_value": "" | ||
| }, | ||
| "faction": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "faction", | ||
| "type_name": "Optional[str]", | ||
| "default_value": "None" | ||
| }, | ||
| "location": { | ||
| "model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "name": "location", | ||
| "type_name": "str", | ||
| "default_value": "\"Adventurer's Guild\"" | ||
| } | ||
| }, | ||
| "description": "erdantic.examples.pydantic.QuestGiver\n\nA person who offers a task that needs completing.\n\nAttributes:\n name (str): Name of this quest giver\n faction (str): Faction that this quest giver belongs to\n location (str): Location this quest giver can be found\n" | ||
| } | ||
| }, | ||
| "edges": { | ||
| "erdantic.examples.pydantic.Party-active_quest-erdantic.examples.pydantic.Quest": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "active_quest", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "zero", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Party-members-erdantic.examples.pydantic.Adventurer": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Party" | ||
| }, | ||
| "source_field_name": "members", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Adventurer" | ||
| }, | ||
| "target_cardinality": "many", | ||
| "target_modality": "unspecified", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| }, | ||
| "erdantic.examples.pydantic.Quest-giver-erdantic.examples.pydantic.QuestGiver": { | ||
| "source_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "Quest" | ||
| }, | ||
| "source_field_name": "giver", | ||
| "target_model_full_name": { | ||
| "module": "erdantic.examples.pydantic", | ||
| "qual_name": "QuestGiver" | ||
| }, | ||
| "target_cardinality": "one", | ||
| "target_modality": "one", | ||
| "source_cardinality": "unspecified", | ||
| "source_modality": "unspecified" | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
| "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
| <!-- Generated by graphviz version 12.2.1 (0) | ||
| --> | ||
| <!-- Title: Entity Relationship Diagram created by erdantic Pages: 1 --> | ||
| <svg width="879pt" height="314pt" | ||
| viewBox="0.00 0.00 878.75 313.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
| <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309.75)"> | ||
| <title>Entity Relationship Diagram created by erdantic</title> | ||
| <polygon fill="white" stroke="none" points="-4,4 -4,-309.75 874.75,-309.75 874.75,4 -4,4"/> | ||
| <text text-anchor="middle" x="435.38" y="-5.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="9.00" fill="#a8a8a8">Created by erdantic vTEST <https://github.com/drivendataorg/erdantic></text> | ||
| <!-- erdantic.examples.pydantic.Adventurer --> | ||
| <g id="node1" class="node"> | ||
| <title>erdantic.examples.pydantic.Adventurer</title> | ||
| <g id="a_node1"><a xlink:title="erdantic.examples.pydantic.Adventurer A person often late for dinner but with a tale or two to tell. Attributes:    name (str): Name of this adventurer    profession (str): Profession of this adventurer    alignment (Alignment): Alignment of this adventurer    level (int): Level of this adventurer "> | ||
| <polygon fill="none" stroke="black" points="345.38,-279.25 345.38,-301.75 508.12,-301.75 508.12,-279.25 345.38,-279.25"/> | ||
| <text text-anchor="start" x="393" y="-286.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Adventurer</text> | ||
| <polygon fill="none" stroke="black" points="345.38,-256.75 345.38,-279.25 407.62,-279.25 407.62,-256.75 345.38,-256.75"/> | ||
| <text text-anchor="start" x="361.5" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-256.75 407.62,-279.25 472.12,-279.25 472.12,-256.75 407.62,-256.75"/> | ||
| <text text-anchor="start" x="433.12" y="-262.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-256.75 472.12,-279.25 508.12,-279.25 508.12,-256.75 472.12,-256.75"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-234.25 345.38,-256.75 407.62,-256.75 407.62,-234.25 345.38,-234.25"/> | ||
| <text text-anchor="start" x="348.38" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">profession</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-234.25 407.62,-256.75 472.12,-256.75 472.12,-234.25 407.62,-234.25"/> | ||
| <text text-anchor="start" x="433.12" y="-240.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-234.25 472.12,-256.75 508.12,-256.75 508.12,-234.25 472.12,-234.25"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-211.75 345.38,-234.25 407.62,-234.25 407.62,-211.75 345.38,-211.75"/> | ||
| <text text-anchor="start" x="349.12" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">alignment</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-211.75 407.62,-234.25 472.12,-234.25 472.12,-211.75 407.62,-211.75"/> | ||
| <text text-anchor="start" x="410.62" y="-217.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Alignment</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-211.75 472.12,-234.25 508.12,-234.25 508.12,-211.75 472.12,-211.75"/> | ||
| <polygon fill="none" stroke="black" points="345.38,-189.25 345.38,-211.75 407.62,-211.75 407.62,-189.25 345.38,-189.25"/> | ||
| <text text-anchor="start" x="363.38" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">level</text> | ||
| <polygon fill="none" stroke="black" points="407.62,-189.25 407.62,-211.75 472.12,-211.75 472.12,-189.25 407.62,-189.25"/> | ||
| <text text-anchor="start" x="432.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="472.12,-189.25 472.12,-211.75 508.12,-211.75 508.12,-189.25 472.12,-189.25"/> | ||
| <text text-anchor="start" x="486.75" y="-195.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">1</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party --> | ||
| <g id="node2" class="node"> | ||
| <title>erdantic.examples.pydantic.Party</title> | ||
| <g id="a_node2"><a xlink:title="erdantic.examples.pydantic.Party A group of adventurers finding themselves doing and saying things altogether unexpected. Attributes:    name (str): Name that party is known by    formed_datetime (datetime): Timestamp of when the party was formed    members (list[Adventurer]): Adventurers that belong to this party    active_quest (Optional[Quest]): Current quest that party is actively tackling "> | ||
| <polygon fill="none" stroke="black" points="0,-283.25 0,-305.75 229.5,-305.75 229.5,-283.25 0,-283.25"/> | ||
| <text text-anchor="start" x="98.62" y="-290.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Party</text> | ||
| <polygon fill="none" stroke="black" points="0,-260.75 0,-283.25 99.75,-283.25 99.75,-260.75 0,-260.75"/> | ||
| <text text-anchor="start" x="34.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-260.75 99.75,-283.25 193.5,-283.25 193.5,-260.75 99.75,-260.75"/> | ||
| <text text-anchor="start" x="139.88" y="-266.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-260.75 193.5,-283.25 229.5,-283.25 229.5,-260.75 193.5,-260.75"/> | ||
| <polygon fill="none" stroke="black" points="0,-238.25 0,-260.75 99.75,-260.75 99.75,-238.25 0,-238.25"/> | ||
| <text text-anchor="start" x="3" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">formed_datetime</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-238.25 99.75,-260.75 193.5,-260.75 193.5,-238.25 99.75,-238.25"/> | ||
| <text text-anchor="start" x="123" y="-244.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">datetime</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-238.25 193.5,-260.75 229.5,-260.75 229.5,-238.25 193.5,-238.25"/> | ||
| <polygon fill="none" stroke="black" points="0,-215.75 0,-238.25 99.75,-238.25 99.75,-215.75 0,-215.75"/> | ||
| <text text-anchor="start" x="24.38" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">members</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-215.75 99.75,-238.25 193.5,-238.25 193.5,-215.75 99.75,-215.75"/> | ||
| <text text-anchor="start" x="103.12" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">list[Adventurer]</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-215.75 193.5,-238.25 229.5,-238.25 229.5,-215.75 193.5,-215.75"/> | ||
| <text text-anchor="start" x="207" y="-221.95" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">[]</text> | ||
| <polygon fill="none" stroke="black" points="0,-193.25 0,-215.75 99.75,-215.75 99.75,-193.25 0,-193.25"/> | ||
| <text text-anchor="start" x="16.12" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">active_quest</text> | ||
| <polygon fill="none" stroke="black" points="99.75,-193.25 99.75,-215.75 193.5,-215.75 193.5,-193.25 99.75,-193.25"/> | ||
| <text text-anchor="start" x="102.75" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[Quest]</text> | ||
| <polygon fill="none" stroke="black" points="193.5,-193.25 193.5,-215.75 229.5,-215.75 229.5,-193.25 193.5,-193.25"/> | ||
| <text text-anchor="start" x="196.88" y="-199.45" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Adventurer --> | ||
| <g id="edge1" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Adventurer:w</title> | ||
| <path fill="none" stroke="black" d="M239.46,-227.67C282.93,-233.77 288.74,-279.62 329.21,-288.88"/> | ||
| <polyline fill="none" stroke="black" points="229.5,-227 234.49,-227.34"/> | ||
| <polyline fill="none" stroke="black" points="234.49,-227.34 239.48,-227.67"/> | ||
| <polygon fill="black" stroke="black" points="334.1,-289.4 343.56,-294.94 339.4,-289.97 343.71,-290.43 343.71,-290.43 343.71,-290.43 339.4,-289.97 344.52,-285.99 334.1,-289.4"/> | ||
| <polyline fill="none" stroke="black" points="332.89,-289.27 327.92,-288.74"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest --> | ||
| <g id="node3" class="node"> | ||
| <title>erdantic.examples.pydantic.Quest</title> | ||
| <g id="a_node3"><a xlink:title="erdantic.examples.pydantic.Quest A task to complete, with some monetary reward. Attributes:    name (str): Name by which this quest is referred to    giver (QuestGiver): Person who offered the quest    reward_gold (int): Amount of gold to be rewarded for quest completion "> | ||
| <polygon fill="none" stroke="black" points="337.5,-131 337.5,-153.5 516,-153.5 516,-131 337.5,-131"/> | ||
| <text text-anchor="start" x="409.5" y="-138.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">Quest</text> | ||
| <polygon fill="none" stroke="black" points="337.5,-108.5 337.5,-131 411.75,-131 411.75,-108.5 337.5,-108.5"/> | ||
| <text text-anchor="start" x="359.62" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-108.5 411.75,-131 480,-131 480,-108.5 411.75,-108.5"/> | ||
| <text text-anchor="start" x="439.12" y="-114.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="480,-108.5 480,-131 516,-131 516,-108.5 480,-108.5"/> | ||
| <polygon fill="none" stroke="black" points="337.5,-86 337.5,-108.5 411.75,-108.5 411.75,-86 337.5,-86"/> | ||
| <text text-anchor="start" x="360.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">giver</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-86 411.75,-108.5 480,-108.5 480,-86 411.75,-86"/> | ||
| <text text-anchor="start" x="414.75" y="-92.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="480,-86 480,-108.5 516,-108.5 516,-86 480,-86"/> | ||
| <polygon fill="none" stroke="black" points="337.5,-63.5 337.5,-86 411.75,-86 411.75,-63.5 337.5,-63.5"/> | ||
| <text text-anchor="start" x="340.5" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">reward_gold</text> | ||
| <polygon fill="none" stroke="black" points="411.75,-63.5 411.75,-86 480,-86 480,-63.5 411.75,-63.5"/> | ||
| <text text-anchor="start" x="438.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">int</text> | ||
| <polygon fill="none" stroke="black" points="480,-63.5 480,-86 516,-86 516,-63.5 480,-63.5"/> | ||
| <text text-anchor="start" x="487.88" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">100</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Party->erdantic.examples.pydantic.Quest --> | ||
| <g id="edge2" class="edge"> | ||
| <title>erdantic.examples.pydantic.Party:e->erdantic.examples.pydantic.Quest:w</title> | ||
| <path fill="none" stroke="black" d="M239.23,-203.8C278.55,-197.9 284.51,-156.32 318.82,-145.06"/> | ||
| <polyline fill="none" stroke="black" points="229.5,-204.5 234.49,-204.14"/> | ||
| <polyline fill="none" stroke="black" points="234.49,-204.14 239.47,-203.78"/> | ||
| <polyline fill="none" stroke="black" points="337.5,-142.25 332.56,-142.99"/> | ||
| <polygon fill="black" stroke="black" points="330.82,-138.2 332.31,-148.09 330.33,-148.38 328.85,-138.49 330.82,-138.2"/> | ||
| <polyline fill="none" stroke="black" points="332.56,-142.99 327.61,-143.74"/> | ||
| <ellipse fill="none" stroke="black" cx="323.16" cy="-144.4" rx="4" ry="4"/> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="node4" class="node"> | ||
| <title>erdantic.examples.pydantic.QuestGiver</title> | ||
| <g id="a_node4"><a xlink:title="erdantic.examples.pydantic.QuestGiver A person who offers a task that needs completing. Attributes:    name (str): Name of this quest giver    faction (str): Faction that this quest giver belongs to    location (str): Location this quest giver can be found "> | ||
| <polygon fill="none" stroke="black" points="624,-86 624,-108.5 870.75,-108.5 870.75,-86 624,-86"/> | ||
| <text text-anchor="start" x="713.25" y="-93.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-weight="bold" font-size="14.00">QuestGiver</text> | ||
| <polygon fill="none" stroke="black" points="624,-63.5 624,-86 673.5,-86 673.5,-63.5 624,-63.5"/> | ||
| <text text-anchor="start" x="633.75" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">name</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-63.5 673.5,-86 749.25,-86 749.25,-63.5 673.5,-63.5"/> | ||
| <text text-anchor="start" x="704.62" y="-69.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-63.5 749.25,-86 870.75,-86 870.75,-63.5 749.25,-63.5"/> | ||
| <polygon fill="none" stroke="black" points="624,-41 624,-63.5 673.5,-63.5 673.5,-41 624,-41"/> | ||
| <text text-anchor="start" x="630" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">faction</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-41 673.5,-63.5 749.25,-63.5 749.25,-41 673.5,-41"/> | ||
| <text text-anchor="start" x="676.5" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">Optional[str]</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-41 749.25,-63.5 870.75,-63.5 870.75,-41 749.25,-41"/> | ||
| <text text-anchor="start" x="795.38" y="-47.2" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">None</text> | ||
| <polygon fill="none" stroke="black" points="624,-18.5 624,-41 673.5,-41 673.5,-18.5 624,-18.5"/> | ||
| <text text-anchor="start" x="627" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">location</text> | ||
| <polygon fill="none" stroke="black" points="673.5,-18.5 673.5,-41 749.25,-41 749.25,-18.5 673.5,-18.5"/> | ||
| <text text-anchor="start" x="704.62" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">str</text> | ||
| <polygon fill="none" stroke="black" points="749.25,-18.5 749.25,-41 870.75,-41 870.75,-18.5 749.25,-18.5"/> | ||
| <text text-anchor="start" x="752.25" y="-24.7" font-family="Times New Roman,Times,Liberation Serif,serif" font-size="14.00">"Adventurer's Guild"</text> | ||
| </a> | ||
| </g> | ||
| </g> | ||
| <!-- erdantic.examples.pydantic.Quest->erdantic.examples.pydantic.QuestGiver --> | ||
| <g id="edge3" class="edge"> | ||
| <title>erdantic.examples.pydantic.Quest:e->erdantic.examples.pydantic.QuestGiver:w</title> | ||
| <path fill="none" stroke="black" d="M525.87,-97.25C561.07,-97.25 575.8,-97.25 609.08,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="516,-97.25 521,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="521,-97.25 526,-97.25"/> | ||
| <polyline fill="none" stroke="black" points="624,-97.25 619,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="618,-92.25 618,-102.25 616,-102.25 616,-92.25 618,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="619,-97.25 614,-97.25"/> | ||
| <polygon fill="black" stroke="black" points="613,-92.25 613,-102.25 611,-102.25 611,-92.25 613,-92.25"/> | ||
| <polyline fill="none" stroke="black" points="614,-97.25 609,-97.25"/> | ||
| </g> | ||
| </g> | ||
| </svg> |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
3053435
27.07%209
69.92%6258
19.4%