grimp 2.5__tar.gz → 3.0b2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. {grimp-2.5/src/grimp.egg-info → grimp-3.0b2}/PKG-INFO +10 -9
  2. grimp-3.0b2/pyproject.toml +55 -0
  3. grimp-3.0b2/rust/.cargo/config +11 -0
  4. grimp-3.0b2/rust/Cargo.lock +328 -0
  5. grimp-3.0b2/rust/Cargo.toml +18 -0
  6. grimp-3.0b2/rust/src/containers.rs +15 -0
  7. grimp-3.0b2/rust/src/dependencies.rs +13 -0
  8. grimp-3.0b2/rust/src/importgraph.rs +438 -0
  9. grimp-3.0b2/rust/src/layers.rs +353 -0
  10. grimp-3.0b2/rust/src/lib.rs +90 -0
  11. grimp-3.0b2/rust/tests/large.rs +26 -0
  12. grimp-3.0b2/rust/tests/large_graph.json +1 -0
  13. {grimp-2.5 → grimp-3.0b2}/src/grimp/__init__.py +1 -1
  14. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/_layers.py +57 -73
  15. {grimp-2.5 → grimp-3.0b2}/src/grimp/domain/analysis.py +14 -10
  16. grimp-2.5/AUTHORS.rst +0 -8
  17. grimp-2.5/LICENSE +0 -21
  18. grimp-2.5/PKG-INFO +0 -155
  19. grimp-2.5/setup.cfg +0 -12
  20. grimp-2.5/setup.py +0 -61
  21. grimp-2.5/src/grimp.egg-info/SOURCES.txt +0 -41
  22. grimp-2.5/src/grimp.egg-info/dependency_links.txt +0 -1
  23. grimp-2.5/src/grimp.egg-info/not-zip-safe +0 -1
  24. grimp-2.5/src/grimp.egg-info/requires.txt +0 -1
  25. grimp-2.5/src/grimp.egg-info/top_level.txt +0 -1
  26. {grimp-2.5 → grimp-3.0b2}/README.rst +0 -0
  27. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/__init__.py +0 -0
  28. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/caching.py +0 -0
  29. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/filesystem.py +0 -0
  30. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/graph.py +0 -0
  31. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/importscanner.py +0 -0
  32. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/modulefinder.py +0 -0
  33. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/packagefinder.py +0 -0
  34. {grimp-2.5 → grimp-3.0b2}/src/grimp/adaptors/timing.py +0 -0
  35. {grimp-2.5 → grimp-3.0b2}/src/grimp/algorithms/__init__.py +0 -0
  36. {grimp-2.5 → grimp-3.0b2}/src/grimp/algorithms/shortest_path.py +0 -0
  37. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/__init__.py +0 -0
  38. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/config.py +0 -0
  39. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/__init__.py +0 -0
  40. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/caching.py +0 -0
  41. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/filesystem.py +0 -0
  42. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/graph.py +0 -0
  43. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/importscanner.py +0 -0
  44. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/modulefinder.py +0 -0
  45. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/packagefinder.py +0 -0
  46. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/ports/timing.py +0 -0
  47. {grimp-2.5 → grimp-3.0b2}/src/grimp/application/usecases.py +0 -0
  48. {grimp-2.5 → grimp-3.0b2}/src/grimp/domain/__init__.py +0 -0
  49. {grimp-2.5 → grimp-3.0b2}/src/grimp/domain/valueobjects.py +0 -0
  50. {grimp-2.5 → grimp-3.0b2}/src/grimp/exceptions.py +0 -0
  51. {grimp-2.5 → grimp-3.0b2}/src/grimp/helpers.py +0 -0
  52. {grimp-2.5 → grimp-3.0b2}/src/grimp/main.py +0 -0
  53. {grimp-2.5 → grimp-3.0b2}/src/grimp/py.typed +0 -0
@@ -1,12 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: grimp
3
- Version: 2.5
4
- Summary: Builds a queryable graph of the imports within one or more Python packages.
5
- Author: David Seddon
6
- Author-email: david@seddonym.me
7
- License: BSD 2-Clause License
8
- Project-URL: Documentation, https://grimp.readthedocs.io/
9
- Project-URL: Source code, https://github.com/seddonym/grimp/
3
+ Version: 3.0b2
10
4
  Classifier: Development Status :: 5 - Production/Stable
11
5
  Classifier: Intended Audience :: Developers
12
6
  Classifier: License :: OSI Approved :: BSD License
@@ -19,11 +13,18 @@ Classifier: Programming Language :: Python :: 3.9
19
13
  Classifier: Programming Language :: Python :: 3.10
20
14
  Classifier: Programming Language :: Python :: 3.11
21
15
  Classifier: Programming Language :: Python :: Implementation :: CPython
16
+ Classifier: Programming Language :: Rust
22
17
  Classifier: Topic :: Utilities
23
- Requires-Python: >=3.8
24
- Description-Content-Type: text/x-rst
18
+ Requires-Dist: typing-extensions >=3.10.0.0
25
19
  License-File: LICENSE
26
20
  License-File: AUTHORS.rst
21
+ Summary: Builds a queryable graph of the imports within one or more Python packages.
22
+ Author-email: David Seddon <david@seddonym.me>
23
+ License: BSD 2-Clause License
24
+ Requires-Python: >=3.8
25
+ Description-Content-Type: text/x-rst; charset=UTF-8
26
+ Project-URL: Documentation, https://grimp.readthedocs.io/
27
+ Project-URL: Source-code, https://github.com/seddonym/grimp/
27
28
 
28
29
  =====
29
30
  Grimp
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["maturin>=1.0,<2.0"]
3
+ build-backend = "maturin"
4
+
5
+ [tool.maturin]
6
+ features = ["pyo3/extension-module"]
7
+ module-name = "grimp._rustgrimp"
8
+
9
+ [project]
10
+ name = "grimp"
11
+ version = "3.0b2"
12
+ license = {text = "BSD 2-Clause License"}
13
+ description = "Builds a queryable graph of the imports within one or more Python packages."
14
+ authors = [
15
+ {name = "David Seddon", email = "david@seddonym.me"},
16
+ ]
17
+ requires-python = ">=3.8"
18
+ dependencies = [
19
+ "typing-extensions>=3.10.0.0",
20
+ ]
21
+ classifiers = [
22
+ "Development Status :: 5 - Production/Stable",
23
+ "Intended Audience :: Developers",
24
+ "License :: OSI Approved :: BSD License",
25
+ "Operating System :: Unix",
26
+ "Operating System :: POSIX",
27
+ "Operating System :: Microsoft :: Windows",
28
+ "Programming Language :: Python",
29
+ "Programming Language :: Python :: 3.8",
30
+ "Programming Language :: Python :: 3.9",
31
+ "Programming Language :: Python :: 3.10",
32
+ "Programming Language :: Python :: 3.11",
33
+ "Programming Language :: Python :: Implementation :: CPython",
34
+ "Programming Language :: Rust",
35
+ "Topic :: Utilities",
36
+ ]
37
+ readme = "README.rst"
38
+
39
+ [project.urls]
40
+ Documentation = "https://grimp.readthedocs.io/"
41
+ Source-code = "https://github.com/seddonym/grimp/"
42
+
43
+ [tool.setuptools]
44
+ include-package-data = true
45
+ zip-safe = false
46
+
47
+ [tool.setuptools.package-data]
48
+ grimp = ["py.typed"]
49
+
50
+ [tool.setuptools.packages.find]
51
+ where = ["src"]
52
+ namespaces = false
53
+
54
+ [tool.black]
55
+ line-length = 99
@@ -0,0 +1,11 @@
1
+ [target.x86_64-apple-darwin]
2
+ rustflags = [
3
+ "-C", "link-arg=-undefined",
4
+ "-C", "link-arg=dynamic_lookup",
5
+ ]
6
+
7
+ [target.aarch64-apple-darwin]
8
+ rustflags = [
9
+ "-C", "link-arg=-undefined",
10
+ "-C", "link-arg=dynamic_lookup",
11
+ ]
@@ -0,0 +1,328 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "_rustgrimp"
7
+ version = "0.1.0"
8
+ dependencies = [
9
+ "log",
10
+ "pyo3",
11
+ "pyo3-log",
12
+ "serde_json",
13
+ ]
14
+
15
+ [[package]]
16
+ name = "arc-swap"
17
+ version = "1.6.0"
18
+ source = "registry+https://github.com/rust-lang/crates.io-index"
19
+ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
20
+
21
+ [[package]]
22
+ name = "autocfg"
23
+ version = "1.1.0"
24
+ source = "registry+https://github.com/rust-lang/crates.io-index"
25
+ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
26
+
27
+ [[package]]
28
+ name = "bitflags"
29
+ version = "1.3.2"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
32
+
33
+ [[package]]
34
+ name = "cfg-if"
35
+ version = "1.0.0"
36
+ source = "registry+https://github.com/rust-lang/crates.io-index"
37
+ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
38
+
39
+ [[package]]
40
+ name = "indoc"
41
+ version = "1.0.9"
42
+ source = "registry+https://github.com/rust-lang/crates.io-index"
43
+ checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
44
+
45
+ [[package]]
46
+ name = "itoa"
47
+ version = "1.0.9"
48
+ source = "registry+https://github.com/rust-lang/crates.io-index"
49
+ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
50
+
51
+ [[package]]
52
+ name = "libc"
53
+ version = "0.2.147"
54
+ source = "registry+https://github.com/rust-lang/crates.io-index"
55
+ checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
56
+
57
+ [[package]]
58
+ name = "lock_api"
59
+ version = "0.4.10"
60
+ source = "registry+https://github.com/rust-lang/crates.io-index"
61
+ checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
62
+ dependencies = [
63
+ "autocfg",
64
+ "scopeguard",
65
+ ]
66
+
67
+ [[package]]
68
+ name = "log"
69
+ version = "0.4.19"
70
+ source = "registry+https://github.com/rust-lang/crates.io-index"
71
+ checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
72
+
73
+ [[package]]
74
+ name = "memoffset"
75
+ version = "0.9.0"
76
+ source = "registry+https://github.com/rust-lang/crates.io-index"
77
+ checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
78
+ dependencies = [
79
+ "autocfg",
80
+ ]
81
+
82
+ [[package]]
83
+ name = "once_cell"
84
+ version = "1.18.0"
85
+ source = "registry+https://github.com/rust-lang/crates.io-index"
86
+ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
87
+
88
+ [[package]]
89
+ name = "parking_lot"
90
+ version = "0.12.1"
91
+ source = "registry+https://github.com/rust-lang/crates.io-index"
92
+ checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
93
+ dependencies = [
94
+ "lock_api",
95
+ "parking_lot_core",
96
+ ]
97
+
98
+ [[package]]
99
+ name = "parking_lot_core"
100
+ version = "0.9.8"
101
+ source = "registry+https://github.com/rust-lang/crates.io-index"
102
+ checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
103
+ dependencies = [
104
+ "cfg-if",
105
+ "libc",
106
+ "redox_syscall",
107
+ "smallvec",
108
+ "windows-targets",
109
+ ]
110
+
111
+ [[package]]
112
+ name = "proc-macro2"
113
+ version = "1.0.64"
114
+ source = "registry+https://github.com/rust-lang/crates.io-index"
115
+ checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da"
116
+ dependencies = [
117
+ "unicode-ident",
118
+ ]
119
+
120
+ [[package]]
121
+ name = "pyo3"
122
+ version = "0.19.1"
123
+ source = "registry+https://github.com/rust-lang/crates.io-index"
124
+ checksum = "ffb88ae05f306b4bfcde40ac4a51dc0b05936a9207a4b75b798c7729c4258a59"
125
+ dependencies = [
126
+ "cfg-if",
127
+ "indoc",
128
+ "libc",
129
+ "memoffset",
130
+ "parking_lot",
131
+ "pyo3-build-config",
132
+ "pyo3-ffi",
133
+ "pyo3-macros",
134
+ "unindent",
135
+ ]
136
+
137
+ [[package]]
138
+ name = "pyo3-build-config"
139
+ version = "0.19.1"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "554db24f0b3c180a9c0b1268f91287ab3f17c162e15b54caaae5a6b3773396b0"
142
+ dependencies = [
143
+ "once_cell",
144
+ "target-lexicon",
145
+ ]
146
+
147
+ [[package]]
148
+ name = "pyo3-ffi"
149
+ version = "0.19.1"
150
+ source = "registry+https://github.com/rust-lang/crates.io-index"
151
+ checksum = "922ede8759e8600ad4da3195ae41259654b9c55da4f7eec84a0ccc7d067a70a4"
152
+ dependencies = [
153
+ "libc",
154
+ "pyo3-build-config",
155
+ ]
156
+
157
+ [[package]]
158
+ name = "pyo3-log"
159
+ version = "0.8.3"
160
+ source = "registry+https://github.com/rust-lang/crates.io-index"
161
+ checksum = "f47b0777feb17f61eea78667d61103758b243a871edc09a7786500a50467b605"
162
+ dependencies = [
163
+ "arc-swap",
164
+ "log",
165
+ "pyo3",
166
+ ]
167
+
168
+ [[package]]
169
+ name = "pyo3-macros"
170
+ version = "0.19.1"
171
+ source = "registry+https://github.com/rust-lang/crates.io-index"
172
+ checksum = "8a5caec6a1dd355964a841fcbeeb1b89fe4146c87295573f94228911af3cc5a2"
173
+ dependencies = [
174
+ "proc-macro2",
175
+ "pyo3-macros-backend",
176
+ "quote",
177
+ "syn",
178
+ ]
179
+
180
+ [[package]]
181
+ name = "pyo3-macros-backend"
182
+ version = "0.19.1"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "e0b78ccbb160db1556cdb6fd96c50334c5d4ec44dc5e0a968d0a1208fa0efa8b"
185
+ dependencies = [
186
+ "proc-macro2",
187
+ "quote",
188
+ "syn",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "quote"
193
+ version = "1.0.29"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
196
+ dependencies = [
197
+ "proc-macro2",
198
+ ]
199
+
200
+ [[package]]
201
+ name = "redox_syscall"
202
+ version = "0.3.5"
203
+ source = "registry+https://github.com/rust-lang/crates.io-index"
204
+ checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
205
+ dependencies = [
206
+ "bitflags",
207
+ ]
208
+
209
+ [[package]]
210
+ name = "ryu"
211
+ version = "1.0.15"
212
+ source = "registry+https://github.com/rust-lang/crates.io-index"
213
+ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
214
+
215
+ [[package]]
216
+ name = "scopeguard"
217
+ version = "1.1.0"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
220
+
221
+ [[package]]
222
+ name = "serde"
223
+ version = "1.0.171"
224
+ source = "registry+https://github.com/rust-lang/crates.io-index"
225
+ checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
226
+
227
+ [[package]]
228
+ name = "serde_json"
229
+ version = "1.0.103"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b"
232
+ dependencies = [
233
+ "itoa",
234
+ "ryu",
235
+ "serde",
236
+ ]
237
+
238
+ [[package]]
239
+ name = "smallvec"
240
+ version = "1.11.0"
241
+ source = "registry+https://github.com/rust-lang/crates.io-index"
242
+ checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
243
+
244
+ [[package]]
245
+ name = "syn"
246
+ version = "1.0.109"
247
+ source = "registry+https://github.com/rust-lang/crates.io-index"
248
+ checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
249
+ dependencies = [
250
+ "proc-macro2",
251
+ "quote",
252
+ "unicode-ident",
253
+ ]
254
+
255
+ [[package]]
256
+ name = "target-lexicon"
257
+ version = "0.12.8"
258
+ source = "registry+https://github.com/rust-lang/crates.io-index"
259
+ checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac"
260
+
261
+ [[package]]
262
+ name = "unicode-ident"
263
+ version = "1.0.10"
264
+ source = "registry+https://github.com/rust-lang/crates.io-index"
265
+ checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
266
+
267
+ [[package]]
268
+ name = "unindent"
269
+ version = "0.1.11"
270
+ source = "registry+https://github.com/rust-lang/crates.io-index"
271
+ checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
272
+
273
+ [[package]]
274
+ name = "windows-targets"
275
+ version = "0.48.1"
276
+ source = "registry+https://github.com/rust-lang/crates.io-index"
277
+ checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
278
+ dependencies = [
279
+ "windows_aarch64_gnullvm",
280
+ "windows_aarch64_msvc",
281
+ "windows_i686_gnu",
282
+ "windows_i686_msvc",
283
+ "windows_x86_64_gnu",
284
+ "windows_x86_64_gnullvm",
285
+ "windows_x86_64_msvc",
286
+ ]
287
+
288
+ [[package]]
289
+ name = "windows_aarch64_gnullvm"
290
+ version = "0.48.0"
291
+ source = "registry+https://github.com/rust-lang/crates.io-index"
292
+ checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
293
+
294
+ [[package]]
295
+ name = "windows_aarch64_msvc"
296
+ version = "0.48.0"
297
+ source = "registry+https://github.com/rust-lang/crates.io-index"
298
+ checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
299
+
300
+ [[package]]
301
+ name = "windows_i686_gnu"
302
+ version = "0.48.0"
303
+ source = "registry+https://github.com/rust-lang/crates.io-index"
304
+ checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
305
+
306
+ [[package]]
307
+ name = "windows_i686_msvc"
308
+ version = "0.48.0"
309
+ source = "registry+https://github.com/rust-lang/crates.io-index"
310
+ checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
311
+
312
+ [[package]]
313
+ name = "windows_x86_64_gnu"
314
+ version = "0.48.0"
315
+ source = "registry+https://github.com/rust-lang/crates.io-index"
316
+ checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
317
+
318
+ [[package]]
319
+ name = "windows_x86_64_gnullvm"
320
+ version = "0.48.0"
321
+ source = "registry+https://github.com/rust-lang/crates.io-index"
322
+ checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
323
+
324
+ [[package]]
325
+ name = "windows_x86_64_msvc"
326
+ version = "0.48.0"
327
+ source = "registry+https://github.com/rust-lang/crates.io-index"
328
+ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
@@ -0,0 +1,18 @@
1
+ [package]
2
+ name = "_rustgrimp"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+
6
+ [lib]
7
+ name = "_rustgrimp"
8
+ crate-type = ["cdylib", "rlib"]
9
+
10
+ [dependencies]
11
+ log = "0.4.19"
12
+ pyo3 = { version = "0.19.1", features = ["extension-module"] }
13
+ pyo3-log = "0.8.3"
14
+ serde_json = "1.0.103"
15
+
16
+ [features]
17
+ extension-module = ["pyo3/extension-module"]
18
+ default = ["extension-module"]
@@ -0,0 +1,15 @@
1
+ use crate::importgraph::ImportGraph;
2
+ use std::collections::HashSet;
3
+
4
+
5
+ pub fn check_containers_exist<'a>(
6
+ graph: &'a ImportGraph,
7
+ containers: &'a HashSet<&'a str>,
8
+ ) -> Result<(), String> {
9
+ for container in containers {
10
+ if !graph.contains_module(container) {
11
+ return Err(format!("Container {} does not exist.", container));
12
+ }
13
+ }
14
+ Ok(())
15
+ }
@@ -0,0 +1,13 @@
1
+ #[derive(PartialEq, Eq, Hash, Debug)]
2
+ pub struct Route {
3
+ pub heads: Vec<u32>,
4
+ pub middle: Vec<u32>,
5
+ pub tails: Vec<u32>,
6
+ }
7
+
8
+ #[derive(PartialEq, Eq, Hash, Debug)]
9
+ pub struct PackageDependency {
10
+ pub importer: u32,
11
+ pub imported: u32,
12
+ pub routes: Vec<Route>,
13
+ }