Repository navigation
Expand file tree
/
Copy pathsetup.cfg
More file actions
239 lines (225 loc) · 5.84 KB
/
Copy pathsetup.cfg
File metadata and controls
239 lines (225 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# -*- coding: utf-8 -*-
#
# mslib.setup
# ~~~~~~~~~~~
#
# setup.cfg
#
# This file is part of mss.
#
# :copyright: Copyright 2016-2017 Reimar Bauer, Joern Ungermann
# :copyright: Copyright 2016-2026 by the MSS team, see AUTHORS.
# :license: APACHE-2.0, see LICENSE for details.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in com#pliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[aliases]
test = pytest
[coverage:run]
branch = True
relative_files = True
source = mslib
omit =
mslib/msui/qt5/*py
tests/*
[tool:pytest]
norecursedirs = .git .idea .cache
[flake8]
ignore = E124,E125,E402,W503,W504,A005
max-line-length = 120
exclude = mslib/msui/qt5/*.py, mslib/mscolab/migrations/*.py
# Architectural import contracts (checked by `pixi run -e dev lint-imports` and CI).
# The target dependency direction is documented in ARCHITECTURE.md. Every entry in
# an ignore_imports list below is a grandfathered, known violation of the target
# architecture -- shrink these lists, never grow them.
[importlinter]
root_package = mslib
include_external_packages = True
[importlinter:contract:gui-isolation]
name = Only the GUI package may import mslib.msui
type = forbidden
source_modules =
mslib.mscolab
mslib.mswms
mslib.utils
mslib.plugins
mslib.msidp
mslib.support
forbidden_modules =
mslib.msui
ignore_imports =
mslib.plugins.io.csv -> mslib.msui.flighttrack
mslib.plugins.io.text -> mslib.msui.flighttrack
mslib.plugins.io.flitestar -> mslib.msui.flighttrack
[importlinter:contract:server-isolation]
name = Only the shared protocol constants of mslib.mscolab may be imported elsewhere
type = forbidden
source_modules =
mslib.msui
mslib.mswms
mslib.utils
mslib.plugins
mslib.msidp
mslib.support
mslib.autoplot
forbidden_modules =
mslib.mscolab
ignore_imports =
# mslib.mscolab.api is the typed client/server contract (schemas +
# endpoint registry) plus the shared socket/message vocabulary
# (events.py, message_type.py): the one part of mslib.mscolab any msui
# module may import. Reworked from a per-call-site whitelist (2 lines for
# mslib.msui.mscolab only) into this wildcard once a 3rd file
# (mscolab_connect_dialog.py) needed it too. The api-leaf contract below
# keeps this safe.
mslib.msui.* -> mslib.mscolab.api.*
[importlinter:contract:api-leaf]
name = mslib.mscolab.api (the mss-mscolab-api package) needs nothing but the standard library
type = forbidden
source_modules =
mslib.mscolab.api
# the rest of mslib.mscolab is listed module by module: a new module of mslib.mscolab
# has to be added here
forbidden_modules =
mslib.mscolab.app
mslib.mscolab.auth
mslib.mscolab.blueprints
mslib.mscolab.chat_manager
mslib.mscolab.cli_notify
mslib.mscolab.conf
mslib.mscolab.custom_migration_types
mslib.mscolab.file_manager
mslib.mscolab.forms
mslib.mscolab.mail
mslib.mscolab.migrations
mslib.mscolab.models
mslib.mscolab.mscolab
mslib.mscolab.seed
mslib.mscolab.server
mslib.mscolab.sockets_manager
mslib.mscolab.utils
mslib.msui
mslib.mswms
mslib.utils
mslib.support
mslib.plugins
mslib.autoplot
mslib.msidp
PyQt5
numpy
flask
flask_cors
flask_httpauth
flask_mail
flask_migrate
flask_socketio
flask_sqlalchemy
flask_wtf
alembic
sqlalchemy
werkzeug
saml2
[importlinter:contract:wms-isolation]
name = No other mslib package may import the mswms server
type = forbidden
source_modules =
mslib.msui
mslib.mscolab
mslib.utils
mslib.plugins
mslib.msidp
mslib.support
mslib.autoplot
forbidden_modules =
mslib.mswms
[importlinter:contract:utils-base-layer]
name = mslib.utils is the base layer: no other mslib package, no Qt, no keyring, no server stack
type = forbidden
source_modules =
mslib.utils
forbidden_modules =
mslib.support
mslib.autoplot
mslib.plugins
mslib.msidp
PyQt5
keyring
flask
flask_cors
flask_httpauth
flask_mail
flask_migrate
flask_socketio
flask_sqlalchemy
flask_wtf
alembic
sqlalchemy
werkzeug
saml2
[importlinter:contract:msidp-standalone]
name = mslib.msidp is standalone: no other mslib package, no Qt, numpy or flask
type = forbidden
source_modules =
mslib.msidp
forbidden_modules =
mslib.utils
mslib.msui
mslib.mswms
mslib.mscolab
mslib.plugins
mslib.support
mslib.autoplot
PyQt5
numpy
flask
[importlinter:contract:msidp-not-imported]
name = No other mslib package imports mslib.msidp (mss-msidp is a package of its own)
type = forbidden
source_modules =
mslib.utils
mslib.msui
mslib.mswms
mslib.mscolab
mslib.plugins
mslib.support
mslib.autoplot
forbidden_modules =
mslib.msidp
[importlinter:contract:servers-without-qt]
name = The servers mswms and mscolab never import Qt
type = forbidden
source_modules =
mslib.mswms
mslib.mscolab
forbidden_modules =
PyQt5
[importlinter:contract:client-without-server-stack]
name = The client (msui, plugins, support, autoplot) never imports the server stack
type = forbidden
source_modules =
mslib.msui
mslib.plugins
mslib.support
mslib.autoplot
forbidden_modules =
flask
flask_cors
flask_httpauth
flask_mail
flask_migrate
flask_socketio
flask_sqlalchemy
flask_wtf
alembic
sqlalchemy
werkzeug
saml2