Midnighter / structurizr-python

A Python 3 port of Simon Brown's Structurizr diagrams-as-code architecture description tool.
https://structurizr.com/
Apache License 2.0
65 stars 16 forks source link

Issue 37: Implement DeploymentNode #41

Closed yt-ms closed 3 years ago

yt-ms commented 3 years ago

Flesh out implementation of DeploymentNode, ComponentInstance, SoftwareSystemInstance and InfrastructureNode. Uncomment the relevant sections in the big_bank.py example.


THIS SOFTWARE IS CONTRIBUTED SUBJECT TO THE TERMS OF THE Apache License v.2.0. YOU MAY OBTAIN A COPY OF THE LICENSE AT https://www.apache.org/licenses/LICENSE-2.0.

THIS SOFTWARE IS LICENSED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY OF NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THIS SOFTWARE MAY BE REDISTRIBUTED TO OTHERS ONLY BY EFFECTIVELY USING THIS OR ANOTHER EQUIVALENT DISCLAIMER IN ADDITION TO ANY OTHER REQUIRED LICENSE TERMS.

yt-ms commented 3 years ago

Looks like Pydantic has a problem with recursive definitions and python3.9. Fixed 2 days ago with this commit, so we'll have to either hold off on this PR until that is available or disable 3.9 builds until it is :( Or come up with a workaround for DeploymentNodeIO.

.tox\py39\lib\site-packages\structurizr\model\deployment_node.py:60: in <module>
      DeploymentNodeIO.update_forward_refs()
  .tox\py39\lib\site-packages\pydantic\main.py:677: in update_forward_refs
      update_field_forward_refs(f, globalns=globalns, localns=localns)
  .tox\py39\lib\site-packages\pydantic\typing.py:233: in update_field_forward_refs
      field.type_ = evaluate_forwardref(field.type_, globalns, localns or None)
  .tox\py39\lib\site-packages\pydantic\typing.py:50: in evaluate_forwardref
      return type_._evaluate(globalns, localns)
  E   TypeError: _evaluate() missing 1 required positional argument: 'recursive_guard'
codecov-io commented 3 years ago

Codecov Report

Merging #41 (43c59ed) into devel (1732651) will increase coverage by 4.23%. The diff coverage is 99.16%.

Impacted file tree graph

@@            Coverage Diff             @@
##            devel      #41      +/-   ##
==========================================
+ Coverage   85.31%   89.54%   +4.23%     
==========================================
  Files          64       67       +3     
  Lines        1757     1933     +176     
  Branches      152      169      +17     
==========================================
+ Hits         1499     1731     +232     
+ Misses        227      177      -50     
+ Partials       31       25       -6     
Impacted Files Coverage Δ
src/structurizr/model/relationship.py 100.00% <ø> (+4.54%) :arrow_up:
src/structurizr/model/static_structure_element.py 91.66% <ø> (+13.09%) :arrow_up:
...cturizr/model/static_structure_element_instance.py 93.93% <93.93%> (ø)
src/structurizr/model/component.py 100.00% <100.00%> (+8.33%) :arrow_up:
src/structurizr/model/container.py 100.00% <100.00%> (+5.66%) :arrow_up:
src/structurizr/model/container_instance.py 100.00% <100.00%> (+36.36%) :arrow_up:
src/structurizr/model/deployment_element.py 100.00% <100.00%> (+18.18%) :arrow_up:
src/structurizr/model/deployment_node.py 100.00% <100.00%> (+36.84%) :arrow_up:
src/structurizr/model/http_health_check.py 100.00% <100.00%> (+100.00%) :arrow_up:
src/structurizr/model/infrastructure_node.py 100.00% <100.00%> (ø)
... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 1732651...43c59ed. Read the comment docs.

Midnighter commented 3 years ago

And thank you for maintaining a neat git history. That made reviewing such a large pull request a lot more approachable.

yt-ms commented 3 years ago

And thank you for maintaining a neat git history. That made reviewing such a large pull request a lot more approachable.

Glad it helped - I knew this was going to be a big one!