annotate scripts/deps.py @ 8831:1f92cded1bd2

celery: move Whoosh indexing task to whoosh library where it belongs 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:07:41 +0100
parents c76638100ca0
children 1d3b67443aac
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'),
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
161 ('kallithea.model.async_tasks', 'kallithea.lib.hooks'),
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
162 ('kallithea.model.async_tasks', 'kallithea.model'),
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
163 ('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
164 ('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
165 ('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
166 ('kallithea.model', 'kallithea.model.scm'),
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
167 ('kallithea.model.scm', 'kallithea.lib.hooks'),
8816
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
168 ])
8772
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
169
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
170 extra_edges = [
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
171 ('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
172 ('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
173 ]
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
174
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
175
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
176 def normalize(s):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
177 """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
178 parts = s.replace('.__init__', '').split('.')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
179 short_2 = '.'.join(parts[:2])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
180 short_3 = '.'.join(parts[:3])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
181 short_4 = '.'.join(parts[:4])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
182 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
183 return 'scripts'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
184 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
185 return 'kallithea.model.db'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
186 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
187 return 'kallithea.lib.vcs.ssh'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
188 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
189 return short_4
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
190 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
191 return short_3
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
192 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
193 return short_2
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
194 if short_2 == 'kallithea.tests':
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 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
197 return None
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
198 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
199 return parts[0]
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
200
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
201
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
202 def main(filenames):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
203 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
204 print('''\
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
205 Usage:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
206 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
207 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
208 ''')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
209 raise SystemExit(1)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
210
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
211 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
212 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
213 for fn in filenames:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
214 with open(fn) as f:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
215 s = f.read()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
216
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
217 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
218 file_imports = set()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
219 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
220 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
221 if m_from:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
222 pre = m_from + '.'
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
223 if pre.startswith('.'):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
224 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
225 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
226 else:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
227 pre = ''
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
228 importlist = m_import
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
229 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
230 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
231 file_imports.add(full_imp)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
232 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
233 files_imports[fn] = file_imports
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
234
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
235 # 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
236 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
237 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
238 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
239 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
240 continue
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
241 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
242
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
243 # 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
244 only_imported = set(
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
245 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
246 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
247 set([None, 'kallithea'])
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
248 )
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
249
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
250 normalized_dep_edges = set()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
251 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
252 a = normalize(dot_name)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
253 b = normalize(full_imp)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
254 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
255 continue
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
256 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
257 #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
258 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
259
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
260 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
261 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
262
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
263 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
264 f.write('digraph {\n')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
265 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
266 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
267 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
268 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
269 f.write('}\n')
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
270
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
271 # 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
272 todo = set(normalized_dep_edges)
8816
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
273 unseen_violations = known_violations.difference(todo)
c76638100ca0 deps: also report unseen known violations
Mads Kiilerich <mads@kiilerich.com>
parents: 8814
diff changeset
274 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
275 for x in known_violations:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
276 todo.remove(x)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
277
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
278 while todo:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
279 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
280 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
281 drop = depended - depending
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
282 if not drop:
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
283 print('ERROR: cycles:', len(todo))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
284 for x in sorted(todo):
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
285 print('%s,' % (x,))
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
286 raise SystemExit(1)
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
287 #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
288 # 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
289 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
290 #print()
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
291
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
292
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
293 if __name__ == '__main__':
52816813cbec docs: describe, visualize, and verify internal code structure and layering
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
294 main(sys.argv[1:])