ArchPython
Dynamically typed languages provide several resources for developers, such as dynamic invocations and constructs. However, such resources combined with short deadlines, conflicts in requirements, or technical difficulties may increase the number of code decisions that go against the planned architecture, leading to the phenomenon known as architectural erosion. Even though Python is the 3rd most used programming language, there is no tool that allows developers to monitor the architecture of their systems. This is possibly justified by the complexity to infer types since the same variable can assume different types at run time. Facing such challenge, this article proposes ArchPython, the first complete architectural conformance and visualization tool for Python systems. In a nutshell, developers specify the architecture of their systems in a simple and natural way using JSON files and ArchPython takes care of the rest. Automatically, the tool infers types (Jedi + propagation heuristics) and detects architectural violations (divergences, absences, and even alerts). In addition to a JSON-based textual report, the tool also provides two ways of visualizing architectural violations (graph and DSM).