annotate scripts/deps.py @ 8833:aafca212c8e2

celery: move send_email task to a better home in notification model Avoid bundling everything from many different layers in one big task library. This is more feasible now when we don't need kallithea.CELERY_APP set at import time.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 29 Dec 2020 22:23:01 +0100
parents 1d3b67443aac
children 05406c312342
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
1 #!/usr/bin/env python3
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
3
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
4 import re
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
5 import sys
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
6
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
7
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
8 ignored_modules = set('''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
9 argparse
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
10 base64
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
11 bcrypt
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
12 binascii
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
13 bleach
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
14 calendar
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
15 celery
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
16 celery
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
17 chardet
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
18 click
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
19 collections
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
20 configparser
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
21 copy
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
22 csv
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
23 ctypes
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
24 datetime
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
25 dateutil
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
26 decimal
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
27 decorator
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
28 difflib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
29 distutils
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
30 docutils
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
31 email
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
32 errno
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
33 fileinput
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
34 functools
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
35 getpass
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
36 grp
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
37 hashlib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
38 hmac
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
39 html
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
40 http
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
41 imp
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
42 importlib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
43 inspect
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
44 io
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
45 ipaddr
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
46 IPython
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
47 isapi_wsgi
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
48 itertools
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
49 json
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
50 kajiki
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
51 ldap
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
52 logging
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
53 mako
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
54 markdown
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
55 mimetypes
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
56 mock
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
57 msvcrt
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
58 multiprocessing
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
59 operator
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
60 os
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
61 paginate
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
62 paginate_sqlalchemy
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
63 pam
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
64 paste
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
65 pkg_resources
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
66 platform
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
67 posixpath
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
68 pprint
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
69 pwd
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
70 pyflakes
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
71 pytest
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
72 pytest_localserver
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
73 random
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
74 re
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
75 routes
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
76 setuptools
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
77 shlex
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
78 shutil
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
79 smtplib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
80 socket
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
81 ssl
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
82 stat
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
83 string
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
84 struct
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
85 subprocess
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
86 sys
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
87 tarfile
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
88 tempfile
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
89 textwrap
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
90 tgext
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
91 threading
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
92 time
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
93 traceback
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
94 traitlets
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
95 types
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
96 urllib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
97 urlobject
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
98 uuid
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
99 warnings
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
100 webhelpers2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
101 webob
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
102 webtest
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
103 whoosh
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
104 win32traceutil
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
105 zipfile
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
106 '''.split())
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
107
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
108 top_modules = set('''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
109 kallithea.alembic
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
110 kallithea.bin
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
111 kallithea.config
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
112 kallithea.controllers
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
113 kallithea.templates.py
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
114 scripts
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
115 '''.split())
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
116
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
117 bottom_external_modules = set('''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
118 tg
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
119 mercurial
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
120 sqlalchemy
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
121 alembic
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
122 formencode
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
123 pygments
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
124 dulwich
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
125 beaker
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
126 psycopg2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
127 docs
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
128 setup
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
129 conftest
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
130 '''.split())
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
131
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
132 normal_modules = set('''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
133 kallithea
8809
4f0de9468da3 controllers: move controllers base class from lib/base to controllers
Mads Kiilerich <mads@kiilerich.com>
parents: 8778
diff changeset
134 kallithea.controllers.base
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
135 kallithea.lib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
136 kallithea.lib.auth
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
137 kallithea.lib.auth_modules
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
138 kallithea.lib.celerylib
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
139 kallithea.lib.db_manage
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
140 kallithea.lib.helpers
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
141 kallithea.lib.hooks
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
142 kallithea.lib.indexers
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
143 kallithea.lib.utils
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
144 kallithea.lib.utils2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
145 kallithea.lib.vcs
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
146 kallithea.lib.webutils
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
147 kallithea.model
8778
341e4bb9e227 celery: move async tasks to model - they both use model and are used by model, so they must be pretty much the same
Mads Kiilerich <mads@kiilerich.com>
parents: 8772
diff changeset
148 kallithea.model.async_tasks
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
149 kallithea.model.scm
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
150 kallithea.templates.py
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
151 '''.split())
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
152
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
153 shown_modules = normal_modules | top_modules
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
154
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
155 # break the chains somehow - this is a cleanup TODO list
8816
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
156 known_violations = set([
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
157 ('kallithea.lib.auth_modules', 'kallithea.lib.auth'), # needs base&facade
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
158 ('kallithea.lib.utils', 'kallithea.model'), # clean up utils
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
159 ('kallithea.lib.utils', 'kallithea.model.db'),
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
160 ('kallithea.lib.utils', 'kallithea.model.scm'),
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
161 ('kallithea.model', 'kallithea.lib.auth'), # auth.HasXXX
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
162 ('kallithea.model', 'kallithea.lib.auth_modules'), # validators
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
163 ('kallithea.model', 'kallithea.lib.hooks'), # clean up hooks
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
164 ('kallithea.model', 'kallithea.model.scm'),
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
165 ('kallithea.model.scm', 'kallithea.lib.hooks'),
8816
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
166 ])
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
167
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
168 extra_edges = [
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
169 ('kallithea.config', 'kallithea.controllers'), # through TG
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
170 ('kallithea.lib.auth', 'kallithea.lib.auth_modules'), # custom loader
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
171 ]
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
172
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
173
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
174 def normalize(s):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
175 """Given a string with dot path, return the string it should be shown as."""
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
176 parts = s.replace('.__init__', '').split('.')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
177 short_2 = '.'.join(parts[:2])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
178 short_3 = '.'.join(parts[:3])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
179 short_4 = '.'.join(parts[:4])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
180 if parts[0] in ['scripts', 'contributor_data', 'i18n_utils']:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
181 return 'scripts'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
182 if short_3 == 'kallithea.model.meta':
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
183 return 'kallithea.model.db'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
184 if parts[:4] == ['kallithea', 'lib', 'vcs', 'ssh']:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
185 return 'kallithea.lib.vcs.ssh'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
186 if short_4 in shown_modules:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
187 return short_4
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
188 if short_3 in shown_modules:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
189 return short_3
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
190 if short_2 in shown_modules:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
191 return short_2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
192 if short_2 == 'kallithea.tests':
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
193 return None
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
194 if parts[0] in ignored_modules:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
195 return None
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
196 assert parts[0] in bottom_external_modules, parts
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
197 return parts[0]
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
198
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
199
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
200 def main(filenames):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
201 if not filenames or filenames[0].startswith('-'):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
202 print('''\
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
203 Usage:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
204 hg files 'set:!binary()&grep("^#!.*python")' 'set:**.py' | xargs scripts/deps.py
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
205 dot -Tsvg deps.dot > deps.svg
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
206 ''')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
207 raise SystemExit(1)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
208
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
209 files_imports = dict() # map filenames to its imports
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
210 import_deps = set() # set of tuples with module name and its imports
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
211 for fn in filenames:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
212 with open(fn) as f:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
213 s = f.read()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
214
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
215 dot_name = (fn[:-3] if fn.endswith('.py') else fn).replace('/', '.')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
216 file_imports = set()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
217 for m in re.finditer(r'^ *(?:from ([^ ]*) import (?:([a-zA-Z].*)|\(([^)]*)\))|import (.*))$', s, re.MULTILINE):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
218 m_from, m_from_import, m_from_import2, m_import = m.groups()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
219 if m_from:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
220 pre = m_from + '.'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
221 if pre.startswith('.'):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
222 pre = dot_name.rsplit('.', 1)[0] + pre
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
223 importlist = m_from_import or m_from_import2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
224 else:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
225 pre = ''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
226 importlist = m_import
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
227 for imp in importlist.split('#', 1)[0].split(','):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
228 full_imp = pre + imp.strip().split(' as ', 1)[0]
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
229 file_imports.add(full_imp)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
230 import_deps.add((dot_name, full_imp))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
231 files_imports[fn] = file_imports
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
232
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
233 # dump out all deps for debugging and analysis
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
234 with open('deps.txt', 'w') as f:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
235 for fn, file_imports in sorted(files_imports.items()):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
236 for file_import in sorted(file_imports):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
237 if file_import.split('.', 1)[0] in ignored_modules:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
238 continue
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
239 f.write('%s: %s\n' % (fn, file_import))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
240
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
241 # find leafs that haven't been ignored - they are the important external dependencies and shown in the bottom row
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
242 only_imported = set(
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
243 set(normalize(b) for a, b in import_deps) -
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
244 set(normalize(a) for a, b in import_deps) -
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
245 set([None, 'kallithea'])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
246 )
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
247
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
248 normalized_dep_edges = set()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
249 for dot_name, full_imp in import_deps:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
250 a = normalize(dot_name)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
251 b = normalize(full_imp)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
252 if a is None or b is None or a == b:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
253 continue
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
254 normalized_dep_edges.add((a, b))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
255 #print((dot_name, full_imp, a, b))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
256 normalized_dep_edges.update(extra_edges)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
257
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
258 unseen_shown_modules = shown_modules.difference(a for a, b in normalized_dep_edges).difference(b for a, b in normalized_dep_edges)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
259 assert not unseen_shown_modules, unseen_shown_modules
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
260
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
261 with open('deps.dot', 'w') as f:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
262 f.write('digraph {\n')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
263 f.write('subgraph { rank = same; %s}\n' % ''.join('"%s"; ' % s for s in sorted(top_modules)))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
264 f.write('subgraph { rank = same; %s}\n' % ''.join('"%s"; ' % s for s in sorted(only_imported)))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
265 for a, b in sorted(normalized_dep_edges):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
266 f.write(' "%s" -> "%s"%s\n' % (a, b, ' [color=red]' if (a, b) in known_violations else ' [color=green]' if (a, b) in extra_edges else ''))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
267 f.write('}\n')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
268
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
269 # verify dependencies by untangling dependency chain bottom-up:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
270 todo = set(normalized_dep_edges)
8816
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
271 unseen_violations = known_violations.difference(todo)
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
272 assert not unseen_violations, unseen_violations
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
273 for x in known_violations:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
274 todo.remove(x)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
275
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
276 while todo:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
277 depending = set(a for a, b in todo)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
278 depended = set(b for a, b in todo)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
279 drop = depended - depending
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
280 if not drop:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
281 print('ERROR: cycles:', len(todo))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
282 for x in sorted(todo):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
283 print('%s,' % (x,))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
284 raise SystemExit(1)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
285 #for do_b in sorted(drop):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
286 # print('Picking', do_b, '- unblocks:', ' '.join(a for a, b in sorted((todo)) if b == do_b))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
287 todo = set((a, b) for a, b in todo if b in depending)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
288 #print()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
289
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
290
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
291 if __name__ == '__main__':
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
292 main(sys.argv[1:])