dirplot 0.1.0__py3-none-any.whl

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.
dirplot/colors.py ADDED
@@ -0,0 +1,731 @@
1
+ """Colour assignment for file extensions."""
2
+
3
+ from typing import Any
4
+
5
+ import matplotlib
6
+
7
+ matplotlib.use("Agg")
8
+
9
+ import matplotlib.pyplot as plt # noqa: E402
10
+
11
+ # Matplotlib RGBA colour as returned by a colormap call.
12
+ RGBAColor = tuple[float, float, float, float]
13
+
14
+ # Colors sourced from GitHub Linguist languages.yml
15
+ # https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
16
+ # Copyright (c) 2017 GitHub, Inc. — MIT License
17
+ # https://github.com/github/linguist/blob/master/LICENSE
18
+ _LINGUIST: dict[str, str] = {
19
+ ".bsl": "#814CCC",
20
+ ".os": "#814CCC",
21
+ ".2da": "#38761D",
22
+ ".4dm": "#004289",
23
+ ".abap": "#E8274B",
24
+ ".asddls": "#555e25",
25
+ ".asc": "#B9D9FF",
26
+ ".ash": "#B9D9FF",
27
+ ".aidl": "#34EB6B",
28
+ ".al": "#3AA2B5",
29
+ ".alg": "#D1E0DB",
30
+ ".ampl": "#E6EFBB",
31
+ ".g4": "#9DC3FF",
32
+ ".apib": "#2ACCA8",
33
+ ".apl": "#5A8164",
34
+ ".dyalog": "#5A8164",
35
+ ".asl": "#555555",
36
+ ".dsl": "#555555",
37
+ ".as": "#882B0F",
38
+ ".adb": "#02f88c",
39
+ ".ada": "#02f88c",
40
+ ".ads": "#02f88c",
41
+ ".txt": "#800000",
42
+ ".afm": "#fa0f00",
43
+ ".agda": "#315665",
44
+ ".ak": "#640ff8",
45
+ ".als": "#64C800",
46
+ ".angelscript": "#C7D7DC",
47
+ ".antlers.html": "#ff269e",
48
+ ".antlers.php": "#ff269e",
49
+ ".antlers.xml": "#ff269e",
50
+ ".apacheconf": "#d12127",
51
+ ".vhost": "#d12127",
52
+ ".cls": "#1797c0",
53
+ ".apex": "#1797c0",
54
+ ".trigger": "#1797c0",
55
+ ".agc": "#0B3D91",
56
+ ".applescript": "#101F1F",
57
+ ".scpt": "#101F1F",
58
+ ".arc": "#aa2afe",
59
+ ".asciidoc": "#73a0c5",
60
+ ".adoc": "#73a0c5",
61
+ ".aj": "#a957b0",
62
+ ".asm": "#6E4C13",
63
+ ".a51": "#6E4C13",
64
+ ".i": "#6E4C13",
65
+ ".inc": "#6E4C13",
66
+ ".nas": "#6E4C13",
67
+ ".nasm": "#6E4C13",
68
+ ".s": "#6E4C13",
69
+ ".astro": "#ff5a03",
70
+ ".asy": "#ff0000",
71
+ ".aug": "#9CC134",
72
+ ".ahk": "#6594b9",
73
+ ".ahkl": "#6594b9",
74
+ ".au3": "#1C3552",
75
+ ".avdl": "#0040FF",
76
+ ".awk": "#c30e9b",
77
+ ".auk": "#c30e9b",
78
+ ".gawk": "#c30e9b",
79
+ ".mawk": "#c30e9b",
80
+ ".nawk": "#c30e9b",
81
+ ".mch": "#8aa8c5",
82
+ ".bas": "#00e4ff",
83
+ ".bal": "#FF5000",
84
+ ".bat": "#C1F12E",
85
+ ".cmd": "#C1F12E",
86
+ ".bf": "#a52f4e",
87
+ ".befunge": "#555555",
88
+ ".be": "#15A13C",
89
+ ".bib": "#778899",
90
+ ".bibtex": "#778899",
91
+ ".bst": "#555555",
92
+ ".bicep": "#519aba",
93
+ ".bicepparam": "#519aba",
94
+ ".bs": "#5562ac",
95
+ ".bison": "#6A463F",
96
+ ".bb": "#00bce4",
97
+ ".bbappend": "#00bce4",
98
+ ".bbclass": "#00bce4",
99
+ ".blade": "#f7523f",
100
+ ".blade.php": "#f7523f",
101
+ ".decls": "#00FFAE",
102
+ ".bmx": "#cd6400",
103
+ ".bsv": "#12223c",
104
+ ".bplx": "#c80fa0",
105
+ ".b": "#2F2530",
106
+ ".brs": "#662D91",
107
+ ".bru": "#F4AA41",
108
+ ".c": "#555555",
109
+ ".cats": "#555555",
110
+ ".h": "#555555",
111
+ ".idc": "#555555",
112
+ ".cs": "#178600",
113
+ ".cake": "#178600",
114
+ ".csx": "#178600",
115
+ ".linq": "#178600",
116
+ ".cpp": "#f34b7d",
117
+ ".c++": "#f34b7d",
118
+ ".cc": "#f34b7d",
119
+ ".cp": "#f34b7d",
120
+ ".cppm": "#f34b7d",
121
+ ".cxx": "#f34b7d",
122
+ ".h++": "#f34b7d",
123
+ ".hh": "#f34b7d",
124
+ ".hpp": "#f34b7d",
125
+ ".hxx": "#f34b7d",
126
+ ".inl": "#f34b7d",
127
+ ".ino": "#f34b7d",
128
+ ".ipp": "#f34b7d",
129
+ ".ixx": "#f34b7d",
130
+ ".tcc": "#f34b7d",
131
+ ".tpp": "#f34b7d",
132
+ ".txx": "#f34b7d",
133
+ ".c3": "#2563eb",
134
+ ".cds": "#0092d1",
135
+ ".clp": "#00A300",
136
+ ".cmake": "#DA3434",
137
+ ".dae": "#F1A42B",
138
+ ".cql": "#006091",
139
+ ".css": "#663399",
140
+ ".csv": "#237346",
141
+ ".cue": "#5886E1",
142
+ ".cabal": "#483465",
143
+ ".caddyfile": "#22b638",
144
+ ".cdc": "#00ef8b",
145
+ ".cairo": "#ff4a48",
146
+ ".mligo": "#3be133",
147
+ ".cj": "#00868B",
148
+ ".capnp": "#c42727",
149
+ ".carbon": "#222222",
150
+ ".mss": "#555555",
151
+ ".ceylon": "#dfa535",
152
+ ".chpl": "#8dc63f",
153
+ ".ck": "#3f8000",
154
+ ".circom": "#707575",
155
+ ".cirru": "#ccccff",
156
+ ".clw": "#db901e",
157
+ ".clar": "#5546ff",
158
+ ".icl": "#3F85AF",
159
+ ".dcl": "#3F85AF",
160
+ ".click": "#E4E6F3",
161
+ ".clj": "#db5855",
162
+ ".boot": "#db5855",
163
+ ".cl2": "#db5855",
164
+ ".cljc": "#db5855",
165
+ ".cljs": "#db5855",
166
+ ".cljx": "#db5855",
167
+ ".hic": "#db5855",
168
+ ".soy": "#0d948f",
169
+ ".clue": "#0009b5",
170
+ ".ql": "#140f46",
171
+ ".qll": "#140f46",
172
+ ".coffee": "#244776",
173
+ "._coffee": "#244776",
174
+ ".cjsx": "#244776",
175
+ ".iced": "#244776",
176
+ ".cfm": "#ed2cd6",
177
+ ".cfml": "#ed2cd6",
178
+ ".cfc": "#ed2cd6",
179
+ ".lisp": "#3fb68b",
180
+ ".asd": "#3fb68b",
181
+ ".cl": "#3fb68b",
182
+ ".l": "#3fb68b",
183
+ ".lsp": "#3fb68b",
184
+ ".ny": "#3fb68b",
185
+ ".sexp": "#3fb68b",
186
+ ".cwl": "#B5314C",
187
+ ".cps": "#B0CE4E",
188
+ ".cook": "#E15A29",
189
+ ".cr": "#000100",
190
+ ".orc": "#1a1a1a",
191
+ ".udo": "#1a1a1a",
192
+ ".csd": "#1a1a1a",
193
+ ".sco": "#1a1a1a",
194
+ ".cu": "#3A4E3A",
195
+ ".cuh": "#3A4E3A",
196
+ ".curry": "#531242",
197
+ ".cylc": "#00b3fd",
198
+ ".cyp": "#34c0eb",
199
+ ".cypher": "#34c0eb",
200
+ ".pyx": "#fedf5b",
201
+ ".pxd": "#fedf5b",
202
+ ".pxi": "#fedf5b",
203
+ ".d": "#ba595e",
204
+ ".di": "#ba595e",
205
+ ".d2": "#526ee8",
206
+ ".dm": "#447265",
207
+ ".dfy": "#FFEC25",
208
+ ".dart": "#00B4AB",
209
+ ".das": "#d3d3d3",
210
+ ".dwl": "#003a52",
211
+ ".dsc": "#D70751",
212
+ ".dhall": "#dfafff",
213
+ ".diff": "#555555",
214
+ ".patch": "#555555",
215
+ ".dockerfile": "#384d54",
216
+ ".containerfile": "#384d54",
217
+ ".djs": "#cca760",
218
+ ".env": "#e5d559",
219
+ ".dylan": "#6c616e",
220
+ ".dyl": "#6c616e",
221
+ ".intr": "#6c616e",
222
+ ".lid": "#6c616e",
223
+ ".e": "#ccce35",
224
+ ".ebnf": "#555555",
225
+ ".ecl": "#001d9d",
226
+ ".ejs": "#a91e50",
227
+ ".ect": "#a91e50",
228
+ ".jst": "#a91e50",
229
+ ".edgeql": "#31A7FF",
230
+ ".esdl": "#31A7FF",
231
+ ".ex": "#6e4a7e",
232
+ ".exs": "#6e4a7e",
233
+ ".heex": "#6e4a7e",
234
+ ".leex": "#6e4a7e",
235
+ ".elm": "#60B5CC",
236
+ ".elv": "#55BB55",
237
+ ".el": "#c065db",
238
+ ".em": "#FFF4F3",
239
+ ".erl": "#B83998",
240
+ ".app.src": "#B83998",
241
+ ".es": "#B83998",
242
+ ".escript": "#B83998",
243
+ ".hrl": "#B83998",
244
+ ".xrl": "#B83998",
245
+ ".yrl": "#B83998",
246
+ ".fs": "#b845fc",
247
+ ".fsi": "#b845fc",
248
+ ".fsx": "#b845fc",
249
+ ".fst": "#572e30",
250
+ ".fsti": "#572e30",
251
+ ".flf": "#FFDDBB",
252
+ ".fir": "#2f632f",
253
+ ".fx": "#88ccff",
254
+ ".flux": "#88ccff",
255
+ ".factor": "#636746",
256
+ ".fy": "#7b9db4",
257
+ ".fancypack": "#7b9db4",
258
+ ".fan": "#14253c",
259
+ ".dsp": "#c37240",
260
+ ".fnl": "#fff3d7",
261
+ ".flix": "#d44a45",
262
+ ".ftl": "#0050b2",
263
+ ".ftlh": "#0050b2",
264
+ ".fth": "#341708",
265
+ ".4th": "#341708",
266
+ ".forth": "#341708",
267
+ ".frt": "#341708",
268
+ ".f77": "#4d41b1",
269
+ ".fpp": "#4d41b1",
270
+ ".f90": "#4d41b1",
271
+ ".f03": "#4d41b1",
272
+ ".f08": "#4d41b1",
273
+ ".f95": "#4d41b1",
274
+ ".bi": "#141AC9",
275
+ ".fut": "#5f021f",
276
+ ".gco": "#D08CF2",
277
+ ".gcode": "#D08CF2",
278
+ ".gaml": "#FFC766",
279
+ ".gms": "#f49a22",
280
+ ".gapl": "#64C800",
281
+ ".gd": "#355570",
282
+ ".gdshader": "#478CBF",
283
+ ".gdshaderinc": "#478CBF",
284
+ ".ged": "#003058",
285
+ ".glsl": "#5686a5",
286
+ ".fp": "#5686a5",
287
+ ".frag": "#5686a5",
288
+ ".frg": "#5686a5",
289
+ ".fsh": "#5686a5",
290
+ ".fshader": "#5686a5",
291
+ ".geo": "#5686a5",
292
+ ".geom": "#5686a5",
293
+ ".glslf": "#5686a5",
294
+ ".glslv": "#5686a5",
295
+ ".gs": "#5686a5",
296
+ ".gshader": "#5686a5",
297
+ ".rchit": "#5686a5",
298
+ ".rmiss": "#5686a5",
299
+ ".shader": "#5686a5",
300
+ ".tesc": "#5686a5",
301
+ ".tese": "#5686a5",
302
+ ".vert": "#5686a5",
303
+ ".vrx": "#5686a5",
304
+ ".vsh": "#5686a5",
305
+ ".vshader": "#5686a5",
306
+ ".gsc": "#FF6800",
307
+ ".csc": "#FF6800",
308
+ ".gsh": "#FF6800",
309
+ ".gmi": "#ff6900",
310
+ ".4gl": "#63408e",
311
+ ".per": "#d8df39",
312
+ ".kid": "#951531",
313
+ ".gbr": "#d20b00",
314
+ ".cmp": "#d20b00",
315
+ ".gbl": "#d20b00",
316
+ ".gbo": "#d20b00",
317
+ ".gbp": "#d20b00",
318
+ ".gbs": "#d20b00",
319
+ ".gko": "#d20b00",
320
+ ".gpb": "#d20b00",
321
+ ".gpt": "#d20b00",
322
+ ".gtl": "#d20b00",
323
+ ".gto": "#d20b00",
324
+ ".gtp": "#d20b00",
325
+ ".gts": "#d20b00",
326
+ ".sol": "#d20b00",
327
+ ".po": "#555555",
328
+ ".pot": "#555555",
329
+ ".feature": "#5B2063",
330
+ ".story": "#5B2063",
331
+ ".gf": "#ff0000",
332
+ ".graphql": "#e10098",
333
+ ".gql": "#e10098",
334
+ ".graphqls": "#e10098",
335
+ ".dot": "#2596be",
336
+ ".gv": "#2596be",
337
+ ".groovy": "#4298b8",
338
+ ".grt": "#4298b8",
339
+ ".gtpl": "#4298b8",
340
+ ".gvy": "#4298b8",
341
+ ".gsp": "#4298b8",
342
+ ".hcl": "#844FBA",
343
+ ".nomad": "#844FBA",
344
+ ".tf": "#844FBA",
345
+ ".tfvars": "#844FBA",
346
+ ".tofu": "#844FBA",
347
+ ".hip": "#4F3A4F",
348
+ ".hlsl": "#aace60",
349
+ ".cginc": "#aace60",
350
+ ".fxh": "#aace60",
351
+ ".hlsli": "#aace60",
352
+ ".hocon": "#9ff8ee",
353
+ ".html": "#e34c26",
354
+ ".hta": "#e34c26",
355
+ ".htm": "#e34c26",
356
+ ".xht": "#e34c26",
357
+ ".xhtml": "#e34c26",
358
+ ".ecr": "#2e1052",
359
+ ".erb": "#701516",
360
+ ".rhtml": "#701516",
361
+ ".phtml": "#4f5d95",
362
+ ".hurl": "#FF0288",
363
+ ".hy": "#7790B2",
364
+ ".ini": "#d1dbe0",
365
+ ".cnf": "#d1dbe0",
366
+ ".dof": "#d1dbe0",
367
+ ".frm": "#d1dbe0",
368
+ ".prefs": "#d1dbe0",
369
+ ".properties": "#d1dbe0",
370
+ ".idr": "#b30000",
371
+ ".lidr": "#b30000",
372
+ ".gitignore": "#000000",
373
+ ".dockerignore": "#000000",
374
+ ".ignore": "#000000",
375
+ ".npmignore": "#000000",
376
+ ".ijm": "#99AAFF",
377
+ ".imba": "#16cec6",
378
+ ".iss": "#264b99",
379
+ ".isl": "#264b99",
380
+ ".io": "#a9188d",
381
+ ".ik": "#078193",
382
+ ".thy": "#FEFE00",
383
+ ".ijs": "#9EEDFF",
384
+ ".jcl": "#d90e09",
385
+ ".jflex": "#DBCA00",
386
+ ".json": "#292929",
387
+ ".geojson": "#292929",
388
+ ".gltf": "#292929",
389
+ ".har": "#292929",
390
+ ".jsonl": "#292929",
391
+ ".topojson": "#292929",
392
+ ".webmanifest": "#292929",
393
+ ".jsonc": "#292929",
394
+ ".json5": "#267CB9",
395
+ ".jsonld": "#0c479c",
396
+ ".jq": "#40d47e",
397
+ ".jac": "#FC792D",
398
+ ".jai": "#ab8b4b",
399
+ ".janet": "#0886a5",
400
+ ".jav": "#b07219",
401
+ ".java": "#b07219",
402
+ ".jsh": "#b07219",
403
+ ".jte": "#2A6277",
404
+ ".js": "#f1e05a",
405
+ "._js": "#f1e05a",
406
+ ".bones": "#f1e05a",
407
+ ".cjs": "#f1e05a",
408
+ ".es6": "#f1e05a",
409
+ ".jake": "#f1e05a",
410
+ ".jsm": "#f1e05a",
411
+ ".jsx": "#f1e05a",
412
+ ".mjs": "#f1e05a",
413
+ ".njs": "#f1e05a",
414
+ ".pac": "#f1e05a",
415
+ ".sjs": "#f1e05a",
416
+ ".ssjs": "#f1e05a",
417
+ ".xsjs": "#f1e05a",
418
+ ".jinja": "#a52a22",
419
+ ".j2": "#a52a22",
420
+ ".jinja2": "#a52a22",
421
+ ".jison": "#56b3cb",
422
+ ".jisonlex": "#56b3cb",
423
+ ".jsonnet": "#0064bd",
424
+ ".libsonnet": "#0064bd",
425
+ ".jl": "#a270ba",
426
+ ".ipynb": "#DA5B0B",
427
+ ".k": "#7ABABF",
428
+ ".kdl": "#ffb3b3",
429
+ ".ksy": "#773b37",
430
+ ".kak": "#6f8042",
431
+ ".ks": "#41adf0",
432
+ ".kicad_pcb": "#2f4aab",
433
+ ".kicad_mod": "#2f4aab",
434
+ ".kicad_wks": "#2f4aab",
435
+ ".kicad_sch": "#2f4aab",
436
+ ".kicad_sym": "#2f4aab",
437
+ ".kt": "#A97BFF",
438
+ ".ktm": "#A97BFF",
439
+ ".kts": "#A97BFF",
440
+ ".ll": "#185619",
441
+ ".lol": "#cc9900",
442
+ ".lsl": "#3d9970",
443
+ ".lslp": "#3d9970",
444
+ ".lvproj": "#fede06",
445
+ ".lvclass": "#fede06",
446
+ ".lvlib": "#fede06",
447
+ ".langium": "#2c8c87",
448
+ ".lark": "#2980B9",
449
+ ".lasso": "#999999",
450
+ ".las": "#999999",
451
+ ".latte": "#f2a542",
452
+ ".lean": "#555555",
453
+ ".less": "#1d365d",
454
+ ".lex": "#DBCA00",
455
+ ".ligo": "#0e74ff",
456
+ ".ly": "#9ccc7c",
457
+ ".ily": "#9ccc7c",
458
+ ".liquid": "#67b8de",
459
+ ".litcoffee": "#244776",
460
+ ".lhs": "#5e5086",
461
+ ".ls": "#499886",
462
+ "._ls": "#499886",
463
+ ".lgt": "#295b9a",
464
+ ".logtalk": "#295b9a",
465
+ ".lkml": "#652B81",
466
+ ".lookml": "#652B81",
467
+ ".lua": "#000080",
468
+ ".nse": "#000080",
469
+ ".p8": "#000080",
470
+ ".rockspec": "#000080",
471
+ ".wlua": "#000080",
472
+ ".luau": "#00A2FF",
473
+ ".m3u": "#179C7D",
474
+ ".m3u8": "#179C7D",
475
+ ".m": "#e16737",
476
+ ".matlab": "#e16737",
477
+ ".ms": "#00a6a6",
478
+ ".mcr": "#00a6a6",
479
+ ".mdx": "#fcb32c",
480
+ ".mlir": "#5EC8DB",
481
+ ".mq4": "#62A8D6",
482
+ ".mqh": "#62A8D6",
483
+ ".mq5": "#4A76B8",
484
+ ".mtml": "#b7e1f4",
485
+ ".mak": "#427819",
486
+ ".make": "#427819",
487
+ ".makefile": "#427819",
488
+ ".mk": "#427819",
489
+ ".mkfile": "#427819",
490
+ ".mako": "#7e858d",
491
+ ".mao": "#7e858d",
492
+ ".md": "#083fa1",
493
+ ".livemd": "#083fa1",
494
+ ".markdown": "#083fa1",
495
+ ".mdown": "#083fa1",
496
+ ".mdwn": "#083fa1",
497
+ ".mkd": "#083fa1",
498
+ ".mkdn": "#083fa1",
499
+ ".mkdown": "#083fa1",
500
+ ".ronn": "#083fa1",
501
+ ".workbook": "#083fa1",
502
+ ".marko": "#42bff2",
503
+ ".mask": "#f97732",
504
+ ".maxpat": "#c4a79c",
505
+ ".maxhelp": "#c4a79c",
506
+ ".maxproj": "#c4a79c",
507
+ ".mxt": "#c4a79c",
508
+ ".metta": "#6a5acd",
509
+ ".mmd": "#ff3670",
510
+ ".mermaid": "#ff3670",
511
+ ".metal": "#8f14e9",
512
+ ".mzn": "#06a9e6",
513
+ ".mint": "#02b046",
514
+ ".mirah": "#c7a938",
515
+ ".mo": "#fbb03b",
516
+ ".i3": "#223388",
517
+ ".ig": "#223388",
518
+ ".m3": "#223388",
519
+ ".mg": "#223388",
520
+ ".mojo": "#ff4c1f",
521
+ ".mbt": "#b92381",
522
+ ".moon": "#ff4585",
523
+ ".mustache": "#724b3b",
524
+ ".nasl": "#555555",
525
+ ".neon": "#555555",
526
+ ".nss": "#111522",
527
+ ".ne": "#990000",
528
+ ".nearley": "#990000",
529
+ ".axs": "#0aa0ff",
530
+ ".axi": "#0aa0ff",
531
+ ".nlogo": "#ff6375",
532
+ ".nf": "#3ac486",
533
+ ".nginx": "#009639",
534
+ ".nginxconf": "#009639",
535
+ ".nim": "#ffc200",
536
+ ".nimble": "#ffc200",
537
+ ".nims": "#ffc200",
538
+ ".nit": "#009917",
539
+ ".nix": "#7e7eff",
540
+ ".nr": "#2f1f49",
541
+ ".numpy": "#9C8AF9",
542
+ ".numpyw": "#9C8AF9",
543
+ ".numsc": "#9C8AF9",
544
+ ".njk": "#3d8137",
545
+ ".nu": "#4E9906",
546
+ ".scad": "#e5cd45",
547
+ ".plist": "#555555",
548
+ ".p4": "#7055b5",
549
+ ".pddl": "#0d00ff",
550
+ ".pegjs": "#234d6b",
551
+ ".peggy": "#234d6b",
552
+ ".php": "#4F5D95",
553
+ ".aw": "#4F5D95",
554
+ ".ctp": "#4F5D95",
555
+ ".php3": "#4F5D95",
556
+ ".php4": "#4F5D95",
557
+ ".php5": "#4F5D95",
558
+ ".phps": "#4F5D95",
559
+ ".phpt": "#4F5D95",
560
+ ".pls": "#dad8d8",
561
+ ".bdy": "#dad8d8",
562
+ ".fnc": "#dad8d8",
563
+ ".pck": "#dad8d8",
564
+ ".pkb": "#dad8d8",
565
+ ".pks": "#dad8d8",
566
+ ".plb": "#dad8d8",
567
+ ".plsql": "#dad8d8",
568
+ ".prc": "#dad8d8",
569
+ ".spc": "#dad8d8",
570
+ ".tpb": "#dad8d8",
571
+ ".tps": "#dad8d8",
572
+ ".trg": "#dad8d8",
573
+ ".pgsql": "#336790",
574
+ ".pov": "#6bac65",
575
+ ".pact": "#F7A8B8",
576
+ ".pan": "#cc0000",
577
+ ".psc": "#6600cc",
578
+ ".pas": "#E3F171",
579
+ ".dfm": "#E3F171",
580
+ ".dpr": "#E3F171",
581
+ ".lpr": "#E3F171",
582
+ ".pascal": "#E3F171",
583
+ ".pp": "#E3F171",
584
+ ".pawn": "#dbb284",
585
+ ".pwn": "#dbb284",
586
+ ".pde": "#cc0000",
587
+ ".pea": "#b9a848",
588
+ ".org": "#77aa99",
589
+ ".oz": "#fab738",
590
+ ".rb": "#701516",
591
+ ".builder": "#701516",
592
+ ".gemspec": "#701516",
593
+ ".god": "#701516",
594
+ ".jbuilder": "#701516",
595
+ ".rabl": "#701516",
596
+ ".rake": "#701516",
597
+ ".rbw": "#701516",
598
+ ".rbx": "#701516",
599
+ ".ru": "#701516",
600
+ ".rjs": "#701516",
601
+ ".rxml": "#701516",
602
+ ".re": "#FA5246",
603
+ ".rei": "#FA5246",
604
+ ".res": "#FA5246",
605
+ ".resi": "#FA5246",
606
+ ".rego": "#7d9199",
607
+ ".R": "#198CE7",
608
+ ".r": "#198CE7",
609
+ ".rd": "#198CE7",
610
+ ".rsx": "#198CE7",
611
+ ".rs": "#CE422B",
612
+ ".rlib": "#CE422B",
613
+ ".ron": "#CE422B",
614
+ ".sass": "#c6538c",
615
+ ".scss": "#c6538c",
616
+ ".sas": "#0b5394",
617
+ ".scala": "#c22d40",
618
+ ".sbt": "#c22d40",
619
+ ".scm": "#1e4782",
620
+ ".sld": "#1e4782",
621
+ ".ss": "#1e4782",
622
+ ".sed": "#64b970",
623
+ ".sh": "#89e051",
624
+ ".command": "#89e051",
625
+ ".bash": "#89e051",
626
+ ".bats": "#89e051",
627
+ ".ksh": "#89e051",
628
+ ".zsh": "#89e051",
629
+ ".sml": "#dc566d",
630
+ ".fun": "#dc566d",
631
+ ".sig": "#dc566d",
632
+ ".sql": "#e38c08",
633
+ ".styl": "#ff6347",
634
+ ".swift": "#FA7343",
635
+ ".svelte": "#ff3e00",
636
+ ".svg": "#ff9900",
637
+ ".tcl": "#e4ccff",
638
+ ".adp": "#e4ccff",
639
+ ".textile": "#ffe7ac",
640
+ ".thrift": "#cc342d",
641
+ ".toml": "#772662",
642
+ ".ts": "#3178c6",
643
+ ".mts": "#3178c6",
644
+ ".cts": "#3178c6",
645
+ ".tsx": "#3178c6",
646
+ ".v": "#1f4e78",
647
+ ".vala": "#ee7d06",
648
+ ".vapi": "#ee7d06",
649
+ ".vb": "#945db8",
650
+ ".vba": "#945db8",
651
+ ".vbs": "#945db8",
652
+ ".sv": "#b2b7f8",
653
+ ".svh": "#b2b7f8",
654
+ ".vh": "#b2b7f8",
655
+ ".vhd": "#adb2cb",
656
+ ".vhdl": "#adb2cb",
657
+ ".vhdp": "#adb2cb",
658
+ ".vim": "#199f4b",
659
+ ".vue": "#2c3e50",
660
+ ".wast": "#900000",
661
+ ".wats": "#900000",
662
+ ".wdl": "#42f1f4",
663
+ ".ps1": "#012456",
664
+ ".psc1": "#012456",
665
+ ".psm1": "#012456",
666
+ ".pssc": "#012456",
667
+ ".psd1": "#012456",
668
+ ".whiley": "#203950",
669
+ ".wiki": "#004d00",
670
+ ".wl": "#dd1100",
671
+ ".wlt": "#dd1100",
672
+ ".x10": "#4B6BEF",
673
+ ".xtend": "#FF6B3D",
674
+ ".xojo_code": "#7d105a",
675
+ ".xpl": "#1874AD",
676
+ ".xquery": "#cbf3f0",
677
+ ".xqy": "#cbf3f0",
678
+ ".xsl": "#EB8CEB",
679
+ ".xslt": "#EB8CEB",
680
+ ".xul": "#f0db4f",
681
+ ".yacc": "#6A463F",
682
+ ".yaml": "#cb171e",
683
+ ".yml": "#cb171e",
684
+ ".yang": "#555555",
685
+ ".yap": "#b21e23",
686
+ ".zig": "#ec915c",
687
+ ".zil": "#dc75e5",
688
+ ".zephir": "#118f9e",
689
+ ".zep": "#118f9e",
690
+ ".py": "#3572A5",
691
+ ".go": "#00ADD8",
692
+ ".hs": "#5e5086",
693
+ }
694
+
695
+
696
+ def _hex_to_rgba(hex_color: str) -> RGBAColor:
697
+ h = hex_color.lstrip("#")
698
+ r, g, b = int(h[0:2], 16), int(h[2:4], 16), int(h[4:6], 16)
699
+ return (r / 255.0, g / 255.0, b / 255.0, 1.0)
700
+
701
+
702
+ def assign_colors(extensions: list[str], colormap: str = "tab20") -> dict[str, RGBAColor]:
703
+ """Map each unique extension to a stable RGBA colour from *colormap*.
704
+
705
+ The mapping is determined by an MD5 hash of the extension name so that
706
+ the same extension always receives the same colour regardless of which
707
+ other extensions are present.
708
+
709
+ When *colormap* is the default ("tab20"), known extensions are coloured
710
+ using the GitHub Linguist palette. When a custom colormap is supplied,
711
+ all extensions are coloured from that colormap so the flag is fully respected.
712
+
713
+ Args:
714
+ extensions: All file extensions found in the tree (may contain duplicates).
715
+ colormap: Matplotlib colormap name.
716
+
717
+ Returns:
718
+ Mapping from extension string to RGBA tuple.
719
+ """
720
+ import hashlib
721
+
722
+ use_linguist = colormap == "tab20"
723
+ cmap: Any = plt.get_cmap(colormap)
724
+ n: int = int(cmap.N) if hasattr(cmap, "N") else 256
725
+ result: dict[str, RGBAColor] = {}
726
+ for ext in set(extensions):
727
+ if use_linguist and ext.lower() in _LINGUIST:
728
+ result[ext] = _hex_to_rgba(_LINGUIST[ext.lower()])
729
+ else:
730
+ result[ext] = tuple(cmap((int(hashlib.md5(ext.encode()).hexdigest(), 16) % n) / n))
731
+ return result