I have a large multi-file Python application I'd like to document graphically. But first, I made a small "dummy" app to test out different UML packages. (Note: I do have graphviz installed and in the path).
Here's my "dummy" code:
class User:
def __init__(self, level_security=0):
self.level_security = level_security
def level_security_increment(level_security):
level_security += 1
return level_security
def printNice(aValue):
if type(aValue) != "str":
print(str(aValue))
else:
print(aValue)
return
def main():
printNice("Process start")
for x in range(0,9):
printNice(x)
myUser = User(3)
printNice(f"Sec lvl: {myUser.level_security}")
printNice("Process_done")
if __name__ == "__main__":
main()
Here are the different pyreverse command-line codes I've used to get varying charts. I'll post the chart that came closest to what I want below these codes:
pyreverse test.py -S -m y -A -o png
pyreverse -ASmn test.py -b -o vdx
pyreverse -ASmy test.py -o emf
pyreverse -AS -m y test.py -o emf
pyreverse -p test.py -o emf
pyreverse -AS -b test.py -o emf
pyreverse -ASmy test.py -b -o png <-- closest
Now here is what that last one you see above produces:
Finally, in case it is not clear, I'll reiterate what I want it to show: Classes, Definitions (functions), and - if possible - even variables. But I'd be happy for now to get just Classes and Definitions (functions). To be clear: I want to see function names.
Is it as simple as adding/removing a switch to the pyreverse command? Or is there some package I need to add to my "dummy" code?
pyreverse aims to produce a class diagram. It will show you classes, and non-filtered class members (see option -f
), as well as associations that can be detected. In this regard, the diagram seems complete.
Instances (objects) at top level are not part of a class diagram. This is why pyreverse doesn't show them.
Free standing functions do not appear in class diagrams either as they are not classes. There is no consensus about what a free standing function should be in UML. They could be seen as instances of a more general function class (of all the functions with the same signature), or they could be considered as a specific functor class. As no UML rule is defined, pyrevere doesn't show them either. If you want pyreverse to detect them, you should rewrite them as a functor class.