diff --git a/NEWS.rst b/NEWS.rst index 0945c43e27114191607b22e0457318bf865a4b11..c951e5e119b48e469711283b1e38697bbb715acd 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -1,3 +1,33 @@ +eralchemy 1.5.0 (2024-09-17) +============================= + +This is release 1.5.0 back on eralchemy. +Instead of `pip install eralchemy2` one should use `pip install eralchemy[graphviz]`. + +Other than that, no breaking changes are to be expected. + +Features +-------- + +- Unite codebase of eralchemy2 and eralchemy back to eralchemy +- Includes features from eralchemy2 +- Allow having either graphviz or pygraphviz installed by @maurerle in https://github.com/eralchemy/eralchemy/pull/126 +- Draw column relations by @JosePVB in https://github.com/eralchemy/eralchemy/pull/72 +- CI now uses nox +- proper regex to include/exclude tables/columns +- allow setting title of diagram +- mermaid rendering support + + +Bugfixes +-------- + +- Improve tests by using fixtures by @maurerle in https://github.com/eralchemy/eralchemy/pull/120 +- build: create a release workflow by @12rambau in https://github.com/eralchemy/eralchemy/pull/128 +- Remove references to newsmeme by @kasium in https://github.com/eralchemy/eralchemy/pull/129 +- give more readable error output when non sqlalchemy input is given by @maurerle in https://github.com/eralchemy/eralchemy/pull/118 + + eralchemy2 1.4.1 (2024-05-20) ============================= diff --git a/docs/_static/forum.svg b/docs/_static/forum.svg index 83e921f95ecb0141147c20111c322134e8da1058..36ff1a88bb7229ed0e045bb79cba100da425c99a 100644 --- a/docs/_static/forum.svg +++ b/docs/_static/forum.svg @@ -4,26 +4,26 @@ <!-- Generated by graphviz version 2.43.0 (0) --> <!-- Title: %3 Pages: 1 --> -<svg width="883pt" height="638pt" - viewBox="0.00 0.00 883.00 638.00" 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 634)"> +<svg width="883pt" height="774pt" + viewBox="0.00 0.00 883.00 774.00" 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 770)"> <title>%3</title> -<polygon fill="white" stroke="transparent" points="-4,4 -4,-634 879,-634 879,4 -4,4"/> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-770 879,-770 879,4 -4,4"/> <!-- post_tags --> <g id="node1" class="node"> <title>post_tags</title> -<polygon fill="none" stroke="black" points="658,-523.5 658,-551.5 861,-551.5 861,-523.5 658,-523.5"/> -<text text-anchor="start" x="721.5" y="-534.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">post_tags</text> -<polygon fill="none" stroke="black" points="658,-498.5 658,-523.5 861,-523.5 861,-498.5 658,-498.5"/> -<text text-anchor="start" x="663" y="-508.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">post_id</text> -<text text-anchor="start" x="707" y="-508.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="711" y="-508.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="784" y="-508.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="658,-473.5 658,-498.5 861,-498.5 861,-473.5 658,-473.5"/> -<text text-anchor="start" x="663" y="-483.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">tag_id</text> -<text text-anchor="start" x="700" y="-483.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="704" y="-483.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="777" y="-483.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="658,-554.5 658,-582.5 861,-582.5 861,-554.5 658,-554.5"/> +<text text-anchor="start" x="721.5" y="-565.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">post_tags</text> +<polygon fill="none" stroke="black" points="658,-529.5 658,-554.5 861,-554.5 861,-529.5 658,-529.5"/> +<text text-anchor="start" x="663" y="-539.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">post_id</text> +<text text-anchor="start" x="707" y="-539.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="711" y="-539.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="784" y="-539.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="658,-504.5 658,-529.5 861,-529.5 861,-504.5 658,-504.5"/> +<text text-anchor="start" x="663" y="-514.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">tag_id</text> +<text text-anchor="start" x="700" y="-514.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="704" y="-514.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="777" y="-514.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> </g> <!-- users --> <g id="node2" class="node"> @@ -89,156 +89,156 @@ <!-- posts --> <g id="node3" class="node"> <title>posts</title> -<polygon fill="none" stroke="black" points="346,-468.5 346,-496.5 562,-496.5 562,-468.5 346,-468.5"/> -<text text-anchor="start" x="432.5" y="-479.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">posts</text> -<polygon fill="none" stroke="black" points="346,-443.5 346,-468.5 562,-468.5 562,-443.5 346,-443.5"/> -<text text-anchor="start" x="351" y="-453.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> -<text text-anchor="start" x="362" y="-453.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="366" y="-453.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="439" y="-453.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="346,-418.5 346,-443.5 562,-443.5 562,-418.5 346,-418.5"/> -<text text-anchor="start" x="351" y="-428.3" font-family="Helvetica,sans-Serif" font-size="14.00">access</text> -<text text-anchor="start" x="394" y="-428.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="398" y="-428.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<polygon fill="none" stroke="black" points="346,-393.5 346,-418.5 562,-418.5 562,-393.5 346,-393.5"/> -<text text-anchor="start" x="351" y="-403.3" font-family="Helvetica,sans-Serif" font-size="14.00">author_id</text> -<text text-anchor="start" x="408" y="-403.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="412" y="-403.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="485" y="-403.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="346,-368.5 346,-393.5 562,-393.5 562,-368.5 346,-368.5"/> -<text text-anchor="start" x="351" y="-378.3" font-family="Helvetica,sans-Serif" font-size="14.00">date_created</text> -<text text-anchor="start" x="430" y="-378.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="434" y="-378.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [DATETIME]</text> -<polygon fill="none" stroke="black" points="346,-343.5 346,-368.5 562,-368.5 562,-343.5 346,-343.5"/> -<text text-anchor="start" x="351" y="-353.3" font-family="Helvetica,sans-Serif" font-size="14.00">description</text> -<text text-anchor="start" x="417" y="-353.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="421" y="-353.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> -<polygon fill="none" stroke="black" points="346,-318.5 346,-343.5 562,-343.5 562,-318.5 346,-318.5"/> -<text text-anchor="start" x="351" y="-328.3" font-family="Helvetica,sans-Serif" font-size="14.00">link</text> -<text text-anchor="start" x="372" y="-328.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="376" y="-328.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(250)]</text> -<polygon fill="none" stroke="black" points="346,-293.5 346,-318.5 562,-318.5 562,-293.5 346,-293.5"/> -<text text-anchor="start" x="351" y="-303.3" font-family="Helvetica,sans-Serif" font-size="14.00">num_comments</text> -<text text-anchor="start" x="450" y="-303.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="454" y="-303.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<polygon fill="none" stroke="black" points="346,-268.5 346,-293.5 562,-293.5 562,-268.5 346,-268.5"/> -<text text-anchor="start" x="351" y="-278.3" font-family="Helvetica,sans-Serif" font-size="14.00">score</text> -<text text-anchor="start" x="385" y="-278.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="389" y="-278.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<polygon fill="none" stroke="black" points="346,-243.5 346,-268.5 562,-268.5 562,-243.5 346,-243.5"/> -<text text-anchor="start" x="351" y="-253.3" font-family="Helvetica,sans-Serif" font-size="14.00">tags</text> -<text text-anchor="start" x="377" y="-253.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="381" y="-253.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> -<polygon fill="none" stroke="black" points="346,-218.5 346,-243.5 562,-243.5 562,-218.5 346,-218.5"/> -<text text-anchor="start" x="351" y="-228.3" font-family="Helvetica,sans-Serif" font-size="14.00">title</text> -<text text-anchor="start" x="373" y="-228.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="377" y="-228.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(200)]</text> -<polygon fill="none" stroke="black" points="346,-193.5 346,-218.5 562,-218.5 562,-193.5 346,-193.5"/> -<text text-anchor="start" x="351" y="-203.3" font-family="Helvetica,sans-Serif" font-size="14.00">votes</text> -<text text-anchor="start" x="384" y="-203.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="388" y="-203.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> +<polygon fill="none" stroke="black" points="346,-733.5 346,-761.5 562,-761.5 562,-733.5 346,-733.5"/> +<text text-anchor="start" x="432.5" y="-744.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">posts</text> +<polygon fill="none" stroke="black" points="346,-708.5 346,-733.5 562,-733.5 562,-708.5 346,-708.5"/> +<text text-anchor="start" x="351" y="-718.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> +<text text-anchor="start" x="362" y="-718.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="366" y="-718.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="439" y="-718.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="346,-683.5 346,-708.5 562,-708.5 562,-683.5 346,-683.5"/> +<text text-anchor="start" x="351" y="-693.3" font-family="Helvetica,sans-Serif" font-size="14.00">access</text> +<text text-anchor="start" x="394" y="-693.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="398" y="-693.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<polygon fill="none" stroke="black" points="346,-658.5 346,-683.5 562,-683.5 562,-658.5 346,-658.5"/> +<text text-anchor="start" x="351" y="-668.3" font-family="Helvetica,sans-Serif" font-size="14.00">author_id</text> +<text text-anchor="start" x="408" y="-668.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="412" y="-668.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="485" y="-668.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="346,-633.5 346,-658.5 562,-658.5 562,-633.5 346,-633.5"/> +<text text-anchor="start" x="351" y="-643.3" font-family="Helvetica,sans-Serif" font-size="14.00">date_created</text> +<text text-anchor="start" x="430" y="-643.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="434" y="-643.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [DATETIME]</text> +<polygon fill="none" stroke="black" points="346,-608.5 346,-633.5 562,-633.5 562,-608.5 346,-608.5"/> +<text text-anchor="start" x="351" y="-618.3" font-family="Helvetica,sans-Serif" font-size="14.00">description</text> +<text text-anchor="start" x="417" y="-618.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="421" y="-618.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> +<polygon fill="none" stroke="black" points="346,-583.5 346,-608.5 562,-608.5 562,-583.5 346,-583.5"/> +<text text-anchor="start" x="351" y="-593.3" font-family="Helvetica,sans-Serif" font-size="14.00">link</text> +<text text-anchor="start" x="372" y="-593.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="376" y="-593.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(250)]</text> +<polygon fill="none" stroke="black" points="346,-558.5 346,-583.5 562,-583.5 562,-558.5 346,-558.5"/> +<text text-anchor="start" x="351" y="-568.3" font-family="Helvetica,sans-Serif" font-size="14.00">num_comments</text> +<text text-anchor="start" x="450" y="-568.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="454" y="-568.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<polygon fill="none" stroke="black" points="346,-533.5 346,-558.5 562,-558.5 562,-533.5 346,-533.5"/> +<text text-anchor="start" x="351" y="-543.3" font-family="Helvetica,sans-Serif" font-size="14.00">score</text> +<text text-anchor="start" x="385" y="-543.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="389" y="-543.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<polygon fill="none" stroke="black" points="346,-508.5 346,-533.5 562,-533.5 562,-508.5 346,-508.5"/> +<text text-anchor="start" x="351" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00">tags</text> +<text text-anchor="start" x="377" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="381" y="-518.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> +<polygon fill="none" stroke="black" points="346,-483.5 346,-508.5 562,-508.5 562,-483.5 346,-483.5"/> +<text text-anchor="start" x="351" y="-493.3" font-family="Helvetica,sans-Serif" font-size="14.00">title</text> +<text text-anchor="start" x="373" y="-493.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="377" y="-493.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(200)]</text> +<polygon fill="none" stroke="black" points="346,-458.5 346,-483.5 562,-483.5 562,-458.5 346,-458.5"/> +<text text-anchor="start" x="351" y="-468.3" font-family="Helvetica,sans-Serif" font-size="14.00">votes</text> +<text text-anchor="start" x="384" y="-468.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="388" y="-468.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> </g> <!-- users--posts --> <g id="edge1" class="edge"> -<title>users--posts</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M265.3,-248.56C289.36,-260.99 314.3,-273.87 337.84,-286.03"/> -<text text-anchor="start" x="312.84" y="-274.83" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="265.3" y="-237.36" font-family="Times,serif" font-size="14.00">1</text> +<title>users:id--posts:author_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M258.5,-316.5C420.89,-316.5 182.61,-671.5 345,-671.5"/> +<text text-anchor="start" x="320" y="-660.3" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="258.5" y="-305.3" font-family="Times,serif" font-size="14.00">1</text> </g> <!-- comments --> <g id="node4" class="node"> <title>comments</title> -<polygon fill="none" stroke="black" points="651,-339.5 651,-367.5 867,-367.5 867,-339.5 651,-339.5"/> -<text text-anchor="start" x="718.5" y="-350.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">comments</text> -<polygon fill="none" stroke="black" points="651,-314.5 651,-339.5 867,-339.5 867,-314.5 651,-314.5"/> -<text text-anchor="start" x="656" y="-324.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> -<text text-anchor="start" x="667" y="-324.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="671" y="-324.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="744" y="-324.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="651,-289.5 651,-314.5 867,-314.5 867,-289.5 651,-289.5"/> -<text text-anchor="start" x="656" y="-299.3" font-family="Helvetica,sans-Serif" font-size="14.00">author_id</text> -<text text-anchor="start" x="713" y="-299.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="717" y="-299.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="790" y="-299.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="651,-264.5 651,-289.5 867,-289.5 867,-264.5 651,-264.5"/> -<text text-anchor="start" x="656" y="-274.3" font-family="Helvetica,sans-Serif" font-size="14.00">comment</text> -<text text-anchor="start" x="714" y="-274.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="718" y="-274.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> -<polygon fill="none" stroke="black" points="651,-239.5 651,-264.5 867,-264.5 867,-239.5 651,-239.5"/> -<text text-anchor="start" x="656" y="-249.3" font-family="Helvetica,sans-Serif" font-size="14.00">date_created</text> -<text text-anchor="start" x="735" y="-249.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="739" y="-249.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [DATETIME]</text> -<polygon fill="none" stroke="black" points="651,-214.5 651,-239.5 867,-239.5 867,-214.5 651,-214.5"/> -<text text-anchor="start" x="656" y="-224.3" font-family="Helvetica,sans-Serif" font-size="14.00">parent_id</text> -<text text-anchor="start" x="713" y="-224.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="717" y="-224.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<polygon fill="none" stroke="black" points="651,-189.5 651,-214.5 867,-214.5 867,-189.5 651,-189.5"/> -<text text-anchor="start" x="656" y="-199.3" font-family="Helvetica,sans-Serif" font-size="14.00">post_id</text> -<text text-anchor="start" x="700" y="-199.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="704" y="-199.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="777" y="-199.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="651,-164.5 651,-189.5 867,-189.5 867,-164.5 651,-164.5"/> -<text text-anchor="start" x="656" y="-174.3" font-family="Helvetica,sans-Serif" font-size="14.00">score</text> -<text text-anchor="start" x="690" y="-174.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="694" y="-174.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<polygon fill="none" stroke="black" points="651,-139.5 651,-164.5 867,-164.5 867,-139.5 651,-139.5"/> -<text text-anchor="start" x="656" y="-149.3" font-family="Helvetica,sans-Serif" font-size="14.00">votes</text> -<text text-anchor="start" x="689" y="-149.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="693" y="-149.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> +<polygon fill="none" stroke="black" points="651,-392.5 651,-420.5 867,-420.5 867,-392.5 651,-392.5"/> +<text text-anchor="start" x="718.5" y="-403.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">comments</text> +<polygon fill="none" stroke="black" points="651,-367.5 651,-392.5 867,-392.5 867,-367.5 651,-367.5"/> +<text text-anchor="start" x="656" y="-377.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> +<text text-anchor="start" x="667" y="-377.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="671" y="-377.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="744" y="-377.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="651,-342.5 651,-367.5 867,-367.5 867,-342.5 651,-342.5"/> +<text text-anchor="start" x="656" y="-352.3" font-family="Helvetica,sans-Serif" font-size="14.00">author_id</text> +<text text-anchor="start" x="713" y="-352.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="717" y="-352.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="790" y="-352.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="651,-317.5 651,-342.5 867,-342.5 867,-317.5 651,-317.5"/> +<text text-anchor="start" x="656" y="-327.3" font-family="Helvetica,sans-Serif" font-size="14.00">comment</text> +<text text-anchor="start" x="714" y="-327.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="718" y="-327.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> +<polygon fill="none" stroke="black" points="651,-292.5 651,-317.5 867,-317.5 867,-292.5 651,-292.5"/> +<text text-anchor="start" x="656" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00">date_created</text> +<text text-anchor="start" x="735" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="739" y="-302.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [DATETIME]</text> +<polygon fill="none" stroke="black" points="651,-267.5 651,-292.5 867,-292.5 867,-267.5 651,-267.5"/> +<text text-anchor="start" x="656" y="-277.3" font-family="Helvetica,sans-Serif" font-size="14.00">parent_id</text> +<text text-anchor="start" x="713" y="-277.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="717" y="-277.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<polygon fill="none" stroke="black" points="651,-242.5 651,-267.5 867,-267.5 867,-242.5 651,-242.5"/> +<text text-anchor="start" x="656" y="-252.3" font-family="Helvetica,sans-Serif" font-size="14.00">post_id</text> +<text text-anchor="start" x="700" y="-252.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="704" y="-252.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="777" y="-252.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="651,-217.5 651,-242.5 867,-242.5 867,-217.5 651,-217.5"/> +<text text-anchor="start" x="656" y="-227.3" font-family="Helvetica,sans-Serif" font-size="14.00">score</text> +<text text-anchor="start" x="690" y="-227.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="694" y="-227.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<polygon fill="none" stroke="black" points="651,-192.5 651,-217.5 867,-217.5 867,-192.5 651,-192.5"/> +<text text-anchor="start" x="656" y="-202.3" font-family="Helvetica,sans-Serif" font-size="14.00">votes</text> +<text text-anchor="start" x="689" y="-202.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="693" y="-202.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [TEXT]</text> </g> <!-- users--comments --> <g id="edge2" class="edge"> -<title>users--comments</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M265.02,-167.96C352.27,-162.7 468.89,-161.56 570,-180.5 594.18,-185.03 619.24,-192.57 642.89,-201.13"/> -<text text-anchor="start" x="617.89" y="-189.93" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="265.02" y="-156.76" font-family="Times,serif" font-size="14.00">1</text> +<title>users:id--comments:author_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M258.5,-316.5C396.94,-316.5 435.1,-285.37 570,-316.5 608.54,-325.39 610.44,-355.5 650,-355.5"/> +<text text-anchor="start" x="625" y="-344.3" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="258.5" y="-320.3" font-family="Times,serif" font-size="14.00">1</text> </g> <!-- posts--post_tags --> <g id="edge3" class="edge"> -<title>posts--post_tags</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M570.42,-409.11C606.87,-429.21 646.29,-450.93 679.54,-469.26"/> -<text text-anchor="start" x="654.54" y="-458.06" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="570.42" y="-397.91" font-family="Times,serif" font-size="14.00">1</text> +<title>posts:id--post_tags:post_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M563,-721.5C653.25,-721.5 566.75,-541.5 657,-541.5"/> +<text text-anchor="start" x="632" y="-530.3" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="556" y="-710.3" font-family="Times,serif" font-size="14.00">1</text> </g> <!-- posts--comments --> <g id="edge4" class="edge"> -<title>posts--comments</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M570.42,-310.46C594.16,-303.25 619.17,-295.65 642.91,-288.45"/> -<text text-anchor="start" x="617.91" y="-277.25" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="570.42" y="-299.26" font-family="Times,serif" font-size="14.00">1</text> +<title>posts:id--comments:post_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M563,-721.5C668.56,-721.5 544.44,-254.5 650,-254.5"/> +<text text-anchor="start" x="625" y="-243.3" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="563" y="-710.3" font-family="Times,serif" font-size="14.00">1</text> </g> <!-- comments--comments --> <g id="edge5" class="edge"> -<title>comments--comments</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M736.35,-371.94C741.06,-382.72 748.61,-389.5 759,-389.5 769.39,-389.5 776.94,-382.72 781.65,-371.94"/> -<text text-anchor="start" x="756.65" y="-375.74" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="705.35" y="-375.74" font-family="Times,serif" font-size="14.00">{0,1}</text> +<title>comments:id--comments:parent_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M650.93,-382.55C605.56,-377.39 567,-362.66 567,-330 567,-297.34 605.56,-282.61 650.93,-277.45"/> +<text text-anchor="start" x="625.93" y="-266.25" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="619.93" y="-386.35" font-family="Times,serif" font-size="14.00">{0,1}</text> </g> <!-- tags --> <g id="node5" class="node"> <title>tags</title> -<polygon fill="none" stroke="black" points="369,-597.5 369,-625.5 539,-625.5 539,-597.5 369,-597.5"/> -<text text-anchor="start" x="437" y="-608.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">tags</text> -<polygon fill="none" stroke="black" points="369,-572.5 369,-597.5 539,-597.5 539,-572.5 369,-572.5"/> -<text text-anchor="start" x="374" y="-582.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> -<text text-anchor="start" x="385" y="-582.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="389" y="-582.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> -<text text-anchor="start" x="462" y="-582.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> -<polygon fill="none" stroke="black" points="369,-547.5 369,-572.5 539,-572.5 539,-547.5 369,-547.5"/> -<text text-anchor="start" x="374" y="-557.3" font-family="Helvetica,sans-Serif" font-size="14.00">name</text> -<text text-anchor="start" x="409" y="-557.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="413" y="-557.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(80)]</text> -<polygon fill="none" stroke="black" points="369,-522.5 369,-547.5 539,-547.5 539,-522.5 369,-522.5"/> -<text text-anchor="start" x="374" y="-532.3" font-family="Helvetica,sans-Serif" font-size="14.00">slug</text> -<text text-anchor="start" x="399" y="-532.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> -<text text-anchor="start" x="403" y="-532.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(80)]</text> +<polygon fill="none" stroke="black" points="369,-404.5 369,-432.5 539,-432.5 539,-404.5 369,-404.5"/> +<text text-anchor="start" x="437" y="-415.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="16.00">tags</text> +<polygon fill="none" stroke="black" points="369,-379.5 369,-404.5 539,-404.5 539,-379.5 369,-379.5"/> +<text text-anchor="start" x="374" y="-389.3" font-family="Helvetica,sans-Serif" text-decoration="underline" font-size="14.00">id</text> +<text text-anchor="start" x="385" y="-389.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="389" y="-389.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [INTEGER]</text> +<text text-anchor="start" x="462" y="-389.3" font-family="Helvetica,sans-Serif" font-size="14.00"> NOT NULL</text> +<polygon fill="none" stroke="black" points="369,-354.5 369,-379.5 539,-379.5 539,-354.5 369,-354.5"/> +<text text-anchor="start" x="374" y="-364.3" font-family="Helvetica,sans-Serif" font-size="14.00">name</text> +<text text-anchor="start" x="409" y="-364.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="413" y="-364.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(80)]</text> +<polygon fill="none" stroke="black" points="369,-329.5 369,-354.5 539,-354.5 539,-329.5 369,-329.5"/> +<text text-anchor="start" x="374" y="-339.3" font-family="Helvetica,sans-Serif" font-size="14.00">slug</text> +<text text-anchor="start" x="399" y="-339.3" font-family="Helvetica,sans-Serif" font-size="14.00"> </text> +<text text-anchor="start" x="403" y="-339.3" font-family="Helvetica,sans-Serif" font-size="14.00"> [VARCHAR(80)]</text> </g> <!-- tags--post_tags --> <g id="edge6" class="edge"> -<title>tags--post_tags</title> -<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M547.14,-555.65C579.35,-549.05 615.82,-541.59 649.25,-534.75"/> -<text text-anchor="start" x="624.25" y="-523.55" font-family="Times,serif" font-size="14.00">0..N</text> -<text text-anchor="start" x="547.14" y="-544.45" font-family="Times,serif" font-size="14.00">1</text> +<title>tags:id--post_tags:tag_id</title> +<path fill="none" stroke="#7f7f7f" stroke-dasharray="5,2" d="M540,-392.5C615.77,-392.5 581.23,-516.5 657,-516.5"/> +<text text-anchor="start" x="632" y="-505.3" font-family="Times,serif" font-size="14.00">0..N</text> +<text text-anchor="start" x="540" y="-392.55" font-family="Times,serif" font-size="14.00">1</text> </g> </g> </svg> diff --git a/docs/conf.py b/docs/conf.py index 1e80bacd2af51b88a187abe55a405b02b5483582..c976c203d3e478e1838942cbe3f98bb8058a4247 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,7 +12,7 @@ from datetime import datetime project = "eralchemy" author = "Alexis Benoist" copyright = f"2015-{datetime.now().year}, {author}" -release = "0.0.0" +release = "1.5.0" # -- General configuration ----------------------------------------------------- extensions = [ diff --git a/example/forum.er b/example/forum.er index 2e0dfe96e161f5cd92b0748a309fc2280df7561a..173255ffd2039b9b746f1ce4c999a476f3be9209 100644 --- a/example/forum.er +++ b/example/forum.er @@ -1,48 +1,48 @@ -[tags] +[post_tags] + *post_id {label:"INTEGER"} + *tag_id {label:"INTEGER"} +[users] *id {label:"INTEGER"} - slug {label:"VARCHAR(80)"} - name {label:"VARCHAR(80)"} + activation_key {label:"VARCHAR(80)"} + date_joined {label:"DATETIME"} + email {label:"VARCHAR(150)"} + email_alerts {label:"BOOLEAN"} + followers {label:"TEXT"} + following {label:"TEXT"} + karma {label:"INTEGER"} + openid {label:"VARCHAR(80)"} + password {label:"VARCHAR(80)"} + receive_email {label:"BOOLEAN"} + role {label:"INTEGER"} + username {label:"VARCHAR(60)"} [posts] *id {label:"INTEGER"} + access {label:"INTEGER"} author_id {label:"INTEGER"} - title {label:"VARCHAR(200)"} + date_created {label:"DATETIME"} description {label:"TEXT"} link {label:"VARCHAR(250)"} - date_created {label:"DATETIME"} - score {label:"INTEGER"} num_comments {label:"INTEGER"} - votes {label:"TEXT"} - access {label:"INTEGER"} + score {label:"INTEGER"} tags {label:"TEXT"} -[users] - *id {label:"INTEGER"} - username {label:"VARCHAR(60)"} - email {label:"VARCHAR(150)"} - karma {label:"INTEGER"} - date_joined {label:"DATETIME"} - activation_key {label:"VARCHAR(80)"} - role {label:"INTEGER"} - receive_email {label:"BOOLEAN"} - email_alerts {label:"BOOLEAN"} - followers {label:"TEXT"} - following {label:"TEXT"} - password {label:"VARCHAR(80)"} - openid {label:"VARCHAR(80)"} + title {label:"VARCHAR(200)"} + votes {label:"TEXT"} [comments] *id {label:"INTEGER"} author_id {label:"INTEGER"} - post_id {label:"INTEGER"} - parent_id {label:"INTEGER"} comment {label:"TEXT"} date_created {label:"DATETIME"} + parent_id {label:"INTEGER"} + post_id {label:"INTEGER"} score {label:"INTEGER"} votes {label:"TEXT"} -[post_tags] - *post_id {label:"INTEGER"} - *tag_id {label:"INTEGER"} -users ?--* posts -posts ?--* comments -users ?--* comments -comments ?--* comments -tags ?--* post_tags -posts ?--* post_tags +[tags] + *id {label:"INTEGER"} + name {label:"VARCHAR(80)"} + slug {label:"VARCHAR(80)"} +tags."id" 1--* post_tags."tag_id" +posts."id" 1--* post_tags."post_id" +users."id" 1--* posts."author_id" +comments."id" ?--* comments."parent_id" +posts."id" 1--* comments."post_id" +users."id" 1--* comments."author_id" diff --git a/example/forum.py b/example/forum.py index 4d84391eadb6d6b266493383434b27365f38f6cb..108d1629c859e406edd6fba17e7935bd6b78de8f 100644 --- a/example/forum.py +++ b/example/forum.py @@ -128,5 +128,5 @@ class Tag(Base): if __name__ == "__main__": from eralchemy import render_er - render_er(Base, "../forum.svg") - render_er(Base, "../forum.er") + render_er(Base, "forum.svg") + render_er(Base, "forum.er") diff --git a/pyproject.toml b/pyproject.toml index 3aa824ad78812bba2ab87584a49908b11ab3e311..0f3c4407d6844045885f05aa0e213ea4b1374ed1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "eralchemy" -version = "1.4.1" +version = "1.5.0" description = "Simple entity relation (ER) diagrams generation" authors = [ { name = "Alexis Benoist", email = "Alexis-benoist@users.noreply.github.com"},