lightning-sdk 2025.8.21__py3-none-any.whl → 2025.8.28__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.
Files changed (54) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/studio_api.py +69 -2
  3. lightning_sdk/api/teamspace_api.py +60 -30
  4. lightning_sdk/api/user_api.py +49 -1
  5. lightning_sdk/api/utils.py +1 -1
  6. lightning_sdk/cli/config/set.py +6 -18
  7. lightning_sdk/cli/legacy/create.py +3 -3
  8. lightning_sdk/cli/legacy/delete.py +3 -3
  9. lightning_sdk/cli/legacy/deploy/_auth.py +4 -4
  10. lightning_sdk/cli/legacy/download.py +7 -7
  11. lightning_sdk/cli/legacy/job_and_mmt_action.py +4 -4
  12. lightning_sdk/cli/legacy/list.py +9 -9
  13. lightning_sdk/cli/legacy/open.py +3 -3
  14. lightning_sdk/cli/legacy/upload.py +3 -3
  15. lightning_sdk/cli/studio/create.py +16 -24
  16. lightning_sdk/cli/studio/delete.py +28 -27
  17. lightning_sdk/cli/studio/list.py +29 -15
  18. lightning_sdk/cli/studio/ssh.py +19 -22
  19. lightning_sdk/cli/studio/start.py +25 -25
  20. lightning_sdk/cli/studio/stop.py +25 -28
  21. lightning_sdk/cli/studio/switch.py +21 -24
  22. lightning_sdk/cli/utils/resolve.py +1 -1
  23. lightning_sdk/cli/utils/richt_print.py +24 -0
  24. lightning_sdk/cli/utils/save_to_config.py +27 -0
  25. lightning_sdk/cli/utils/studio_selection.py +106 -0
  26. lightning_sdk/cli/utils/teamspace_selection.py +125 -0
  27. lightning_sdk/lightning_cloud/openapi/__init__.py +2 -0
  28. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +85 -0
  29. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +101 -0
  30. lightning_sdk/lightning_cloud/openapi/models/__init__.py +2 -0
  31. lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
  32. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +270 -36
  33. lightning_sdk/lightning_cloud/openapi/models/v1_container_metrics.py +21 -21
  34. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metric_timestamps_response.py +123 -0
  35. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_metrics.py +11 -11
  36. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_user_metrics.py +16 -16
  37. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +156 -26
  38. lightning_sdk/lightning_cloud/openapi/models/v1_pod_metrics.py +145 -41
  39. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_response.py +123 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +107 -3
  41. lightning_sdk/llm/public_assistants.py +4 -0
  42. lightning_sdk/studio.py +54 -22
  43. lightning_sdk/teamspace.py +25 -2
  44. lightning_sdk/user.py +19 -1
  45. lightning_sdk/utils/config.py +6 -0
  46. lightning_sdk/utils/names.py +1179 -0
  47. lightning_sdk/utils/progress.py +2 -2
  48. lightning_sdk/utils/resolve.py +17 -6
  49. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/METADATA +1 -1
  50. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/RECORD +54 -48
  51. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/LICENSE +0 -0
  52. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/WHEEL +0 -0
  53. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/entry_points.txt +0 -0
  54. {lightning_sdk-2025.8.21.dist-info → lightning_sdk-2025.8.28.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1179 @@
1
+ import random
2
+ import string
3
+
4
+ # Copied from https://github.com/andreasonny83/unique-names-generator/blob/main/src/dictionaries/adjectives.ts
5
+ _ADJECTIVES = [
6
+ "able",
7
+ "above",
8
+ "absent",
9
+ "absolute",
10
+ "abstract",
11
+ "abundant",
12
+ "academic",
13
+ "acceptable",
14
+ "accepted",
15
+ "accessible",
16
+ "accurate",
17
+ "accused",
18
+ "active",
19
+ "actual",
20
+ "acute",
21
+ "added",
22
+ "additional",
23
+ "adequate",
24
+ "adjacent",
25
+ "administrative",
26
+ "adorable",
27
+ "advanced",
28
+ "adverse",
29
+ "advisory",
30
+ "aesthetic",
31
+ "afraid",
32
+ "aggregate",
33
+ "aggressive",
34
+ "agreeable",
35
+ "agreed",
36
+ "agricultural",
37
+ "alert",
38
+ "alive",
39
+ "alleged",
40
+ "allied",
41
+ "alone",
42
+ "alright",
43
+ "alternative",
44
+ "amateur",
45
+ "amazing",
46
+ "ambitious",
47
+ "amused",
48
+ "ancient",
49
+ "angry",
50
+ "annoyed",
51
+ "annual",
52
+ "anonymous",
53
+ "apparent",
54
+ "applicable",
55
+ "appropriate",
56
+ "arbitrary",
57
+ "architectural",
58
+ "armed",
59
+ "artificial",
60
+ "artistic",
61
+ "asleep",
62
+ "assistant",
63
+ "associated",
64
+ "atomic",
65
+ "automatic",
66
+ "autonomous",
67
+ "available",
68
+ "average",
69
+ "awake",
70
+ "aware",
71
+ "awful",
72
+ "back",
73
+ "bad",
74
+ "balanced",
75
+ "bare",
76
+ "basic",
77
+ "beautiful",
78
+ "beneficial",
79
+ "better",
80
+ "bewildered",
81
+ "big",
82
+ "binding",
83
+ "biological",
84
+ "bitter",
85
+ "bizarre",
86
+ "blank",
87
+ "blonde",
88
+ "bloody",
89
+ "blushing",
90
+ "boiling",
91
+ "bold",
92
+ "bored",
93
+ "boring",
94
+ "bottom",
95
+ "brainy",
96
+ "brave",
97
+ "breakable",
98
+ "breezy",
99
+ "brief",
100
+ "bright",
101
+ "brilliant",
102
+ "broad",
103
+ "bumpy",
104
+ "burning",
105
+ "busy",
106
+ "calm",
107
+ "capable",
108
+ "careful",
109
+ "casual",
110
+ "causal",
111
+ "cautious",
112
+ "central",
113
+ "certain",
114
+ "changing",
115
+ "characteristic",
116
+ "charming",
117
+ "cheap",
118
+ "cheerful",
119
+ "chemical",
120
+ "chief",
121
+ "chilly",
122
+ "chosen",
123
+ "chronic",
124
+ "chubby",
125
+ "circular",
126
+ "civic",
127
+ "civil",
128
+ "civilian",
129
+ "classic",
130
+ "classical",
131
+ "clean",
132
+ "clear",
133
+ "clever",
134
+ "clinical",
135
+ "close",
136
+ "closed",
137
+ "cloudy",
138
+ "clumsy",
139
+ "coastal",
140
+ "cognitive",
141
+ "coherent",
142
+ "cold",
143
+ "collective",
144
+ "colorful",
145
+ "colossal",
146
+ "coloured",
147
+ "colourful",
148
+ "combined",
149
+ "comfortable",
150
+ "coming",
151
+ "commercial",
152
+ "common",
153
+ "compact",
154
+ "comparable",
155
+ "comparative",
156
+ "compatible",
157
+ "competent",
158
+ "competitive",
159
+ "complete",
160
+ "complex",
161
+ "complicated",
162
+ "comprehensive",
163
+ "compulsory",
164
+ "conceptual",
165
+ "concerned",
166
+ "concrete",
167
+ "confident",
168
+ "confidential",
169
+ "confused",
170
+ "conscious",
171
+ "conservation",
172
+ "considerable",
173
+ "consistent",
174
+ "constant",
175
+ "constitutional",
176
+ "contemporary",
177
+ "content",
178
+ "continental",
179
+ "continued",
180
+ "continuing",
181
+ "continuous",
182
+ "controlled",
183
+ "controversial",
184
+ "convenient",
185
+ "conventional",
186
+ "convinced",
187
+ "convincing",
188
+ "cooing",
189
+ "cool",
190
+ "cooperative",
191
+ "corporate",
192
+ "correct",
193
+ "corresponding",
194
+ "costly",
195
+ "courageous",
196
+ "crazy",
197
+ "creative",
198
+ "critical",
199
+ "crooked",
200
+ "crowded",
201
+ "crucial",
202
+ "crude",
203
+ "cruel",
204
+ "cuddly",
205
+ "cultural",
206
+ "curious",
207
+ "curly",
208
+ "current",
209
+ "curved",
210
+ "cute",
211
+ "daily",
212
+ "damp",
213
+ "dark",
214
+ "deafening",
215
+ "dear",
216
+ "decent",
217
+ "decisive",
218
+ "deep",
219
+ "defeated",
220
+ "defensive",
221
+ "defiant",
222
+ "definite",
223
+ "deliberate",
224
+ "delicate",
225
+ "delicious",
226
+ "delighted",
227
+ "delightful",
228
+ "democratic",
229
+ "dependent",
230
+ "desirable",
231
+ "desperate",
232
+ "detailed",
233
+ "determined",
234
+ "developed",
235
+ "developing",
236
+ "devoted",
237
+ "different",
238
+ "difficult",
239
+ "digital",
240
+ "diplomatic",
241
+ "direct",
242
+ "dirty",
243
+ "disappointed",
244
+ "disciplinary",
245
+ "distant",
246
+ "distinct",
247
+ "distinctive",
248
+ "distinguished",
249
+ "disturbed",
250
+ "disturbing",
251
+ "diverse",
252
+ "divine",
253
+ "dizzy",
254
+ "domestic",
255
+ "dominant",
256
+ "double",
257
+ "doubtful",
258
+ "drab",
259
+ "dramatic",
260
+ "dreadful",
261
+ "driving",
262
+ "dry",
263
+ "dual",
264
+ "due",
265
+ "dull",
266
+ "dusty",
267
+ "dutch",
268
+ "dynamic",
269
+ "eager",
270
+ "early",
271
+ "eastern",
272
+ "easy",
273
+ "economic",
274
+ "educational",
275
+ "eerie",
276
+ "effective",
277
+ "efficient",
278
+ "elaborate",
279
+ "elated",
280
+ "eldest",
281
+ "electoral",
282
+ "electric",
283
+ "electrical",
284
+ "electronic",
285
+ "elegant",
286
+ "eligible",
287
+ "embarrassed",
288
+ "emotional",
289
+ "empirical",
290
+ "empty",
291
+ "enchanting",
292
+ "encouraging",
293
+ "endless",
294
+ "energetic",
295
+ "enormous",
296
+ "enthusiastic",
297
+ "entire",
298
+ "entitled",
299
+ "envious",
300
+ "environmental",
301
+ "equal",
302
+ "equivalent",
303
+ "essential",
304
+ "established",
305
+ "estimated",
306
+ "ethical",
307
+ "ethnic",
308
+ "eventual",
309
+ "everyday",
310
+ "evident",
311
+ "evolutionary",
312
+ "exact",
313
+ "excellent",
314
+ "exceptional",
315
+ "excess",
316
+ "excessive",
317
+ "excited",
318
+ "exciting",
319
+ "exclusive",
320
+ "existing",
321
+ "exotic",
322
+ "expected",
323
+ "expensive",
324
+ "experienced",
325
+ "experimental",
326
+ "extended",
327
+ "extensive",
328
+ "external",
329
+ "extra",
330
+ "extraordinary",
331
+ "extreme",
332
+ "exuberant",
333
+ "faint",
334
+ "fair",
335
+ "faithful",
336
+ "familiar",
337
+ "famous",
338
+ "fancy",
339
+ "fantastic",
340
+ "far",
341
+ "fascinating",
342
+ "fashionable",
343
+ "fast",
344
+ "fatal",
345
+ "favourable",
346
+ "favourite",
347
+ "federal",
348
+ "fellow",
349
+ "female",
350
+ "feminist",
351
+ "few",
352
+ "fierce",
353
+ "final",
354
+ "financial",
355
+ "fine",
356
+ "firm",
357
+ "fiscal",
358
+ "fit",
359
+ "fixed",
360
+ "flat",
361
+ "flexible",
362
+ "fluffy",
363
+ "fluttering",
364
+ "flying",
365
+ "following",
366
+ "fond",
367
+ "foolish",
368
+ "foreign",
369
+ "formal",
370
+ "formidable",
371
+ "forthcoming",
372
+ "fortunate",
373
+ "forward",
374
+ "fragile",
375
+ "frail",
376
+ "frantic",
377
+ "free",
378
+ "frequent",
379
+ "fresh",
380
+ "friendly",
381
+ "frightened",
382
+ "front",
383
+ "frozen",
384
+ "full",
385
+ "fun",
386
+ "functional",
387
+ "fundamental",
388
+ "funny",
389
+ "furious",
390
+ "future",
391
+ "fuzzy",
392
+ "gastric",
393
+ "general",
394
+ "generous",
395
+ "genetic",
396
+ "gentle",
397
+ "genuine",
398
+ "geographical",
399
+ "giant",
400
+ "gigantic",
401
+ "given",
402
+ "glad",
403
+ "glamorous",
404
+ "gleaming",
405
+ "global",
406
+ "glorious",
407
+ "golden",
408
+ "good",
409
+ "gorgeous",
410
+ "gothic",
411
+ "governing",
412
+ "graceful",
413
+ "gradual",
414
+ "grand",
415
+ "grateful",
416
+ "greasy",
417
+ "great",
418
+ "grieving",
419
+ "grim",
420
+ "growing",
421
+ "grubby",
422
+ "grumpy",
423
+ "guilty",
424
+ "handsome",
425
+ "happy",
426
+ "hard",
427
+ "harsh",
428
+ "head",
429
+ "healthy",
430
+ "heavy",
431
+ "helpful",
432
+ "helpless",
433
+ "hidden",
434
+ "high",
435
+ "hilarious",
436
+ "hissing",
437
+ "historic",
438
+ "historical",
439
+ "hollow",
440
+ "homely",
441
+ "hon",
442
+ "honest",
443
+ "horizontal",
444
+ "hostile",
445
+ "huge",
446
+ "human",
447
+ "hungry",
448
+ "hurt",
449
+ "hushed",
450
+ "husky",
451
+ "icy",
452
+ "ideal",
453
+ "identical",
454
+ "ideological",
455
+ "ill",
456
+ "imaginative",
457
+ "immediate",
458
+ "immense",
459
+ "imperial",
460
+ "implicit",
461
+ "important",
462
+ "impossible",
463
+ "impressed",
464
+ "impressive",
465
+ "improved",
466
+ "inadequate",
467
+ "inc",
468
+ "inclined",
469
+ "increased",
470
+ "increasing",
471
+ "incredible",
472
+ "independent",
473
+ "indirect",
474
+ "individual",
475
+ "industrial",
476
+ "inevitable",
477
+ "influential",
478
+ "informal",
479
+ "inherent",
480
+ "initial",
481
+ "injured",
482
+ "inland",
483
+ "inner",
484
+ "innocent",
485
+ "innovative",
486
+ "inquisitive",
487
+ "instant",
488
+ "institutional",
489
+ "insufficient",
490
+ "intact",
491
+ "integral",
492
+ "integrated",
493
+ "intellectual",
494
+ "intelligent",
495
+ "intense",
496
+ "intensive",
497
+ "interested",
498
+ "interesting",
499
+ "interim",
500
+ "interior",
501
+ "intermediate",
502
+ "internal",
503
+ "international",
504
+ "intimate",
505
+ "invisible",
506
+ "involved",
507
+ "irrelevant",
508
+ "isolated",
509
+ "itchy",
510
+ "jealous",
511
+ "jittery",
512
+ "joint",
513
+ "jolly",
514
+ "joyous",
515
+ "judicial",
516
+ "juicy",
517
+ "junior",
518
+ "just",
519
+ "keen",
520
+ "key",
521
+ "kind",
522
+ "known",
523
+ "labour",
524
+ "large",
525
+ "late",
526
+ "latin",
527
+ "lazy",
528
+ "leading",
529
+ "left",
530
+ "legal",
531
+ "legislative",
532
+ "legitimate",
533
+ "lengthy",
534
+ "lesser",
535
+ "level",
536
+ "lexical",
537
+ "liable",
538
+ "light",
539
+ "like",
540
+ "likely",
541
+ "limited",
542
+ "linear",
543
+ "linguistic",
544
+ "liquid",
545
+ "literary",
546
+ "little",
547
+ "live",
548
+ "lively",
549
+ "living",
550
+ "local",
551
+ "logical",
552
+ "lonely",
553
+ "long",
554
+ "loose",
555
+ "lost",
556
+ "loud",
557
+ "lovely",
558
+ "low",
559
+ "loyal",
560
+ "ltd",
561
+ "lucky",
562
+ "mad",
563
+ "magic",
564
+ "magnetic",
565
+ "magnificent",
566
+ "main",
567
+ "major",
568
+ "male",
569
+ "mammoth",
570
+ "managerial",
571
+ "managing",
572
+ "manual",
573
+ "many",
574
+ "marginal",
575
+ "marine",
576
+ "marked",
577
+ "married",
578
+ "marvellous",
579
+ "marxist",
580
+ "mass",
581
+ "massive",
582
+ "mathematical",
583
+ "mature",
584
+ "maximum",
585
+ "mean",
586
+ "meaningful",
587
+ "mechanical",
588
+ "medical",
589
+ "medieval",
590
+ "melodic",
591
+ "melted",
592
+ "mere",
593
+ "metropolitan",
594
+ "mid",
595
+ "middle",
596
+ "mighty",
597
+ "mild",
598
+ "military",
599
+ "miniature",
600
+ "minimal",
601
+ "minimum",
602
+ "ministerial",
603
+ "minor",
604
+ "miserable",
605
+ "missing",
606
+ "misty",
607
+ "mixed",
608
+ "moaning",
609
+ "mobile",
610
+ "moderate",
611
+ "modern",
612
+ "modest",
613
+ "molecular",
614
+ "monetary",
615
+ "monthly",
616
+ "moral",
617
+ "motionless",
618
+ "muddy",
619
+ "multiple",
620
+ "mushy",
621
+ "musical",
622
+ "mute",
623
+ "mutual",
624
+ "mysterious",
625
+ "narrow",
626
+ "national",
627
+ "native",
628
+ "natural",
629
+ "naval",
630
+ "near",
631
+ "nearby",
632
+ "neat",
633
+ "necessary",
634
+ "negative",
635
+ "neighbouring",
636
+ "nervous",
637
+ "net",
638
+ "neutral",
639
+ "new",
640
+ "nice",
641
+ "noble",
642
+ "noisy",
643
+ "normal",
644
+ "northern",
645
+ "nosy",
646
+ "notable",
647
+ "novel",
648
+ "numerous",
649
+ "nutritious",
650
+ "nutty",
651
+ "obedient",
652
+ "objective",
653
+ "obliged",
654
+ "obvious",
655
+ "occasional",
656
+ "occupational",
657
+ "odd",
658
+ "official",
659
+ "ok",
660
+ "okay",
661
+ "old",
662
+ "olympic",
663
+ "only",
664
+ "open",
665
+ "operational",
666
+ "opposite",
667
+ "optimistic",
668
+ "oral",
669
+ "ordinary",
670
+ "organic",
671
+ "organisational",
672
+ "original",
673
+ "other",
674
+ "outdoor",
675
+ "outer",
676
+ "outrageous",
677
+ "outside",
678
+ "outstanding",
679
+ "overall",
680
+ "overseas",
681
+ "overwhelming",
682
+ "painful",
683
+ "pale",
684
+ "panicky",
685
+ "parallel",
686
+ "parental",
687
+ "parliamentary",
688
+ "partial",
689
+ "particular",
690
+ "passing",
691
+ "passive",
692
+ "past",
693
+ "patient",
694
+ "payable",
695
+ "peaceful",
696
+ "peculiar",
697
+ "perfect",
698
+ "permanent",
699
+ "persistent",
700
+ "personal",
701
+ "petite",
702
+ "philosophical",
703
+ "physical",
704
+ "plain",
705
+ "planned",
706
+ "plastic",
707
+ "pleasant",
708
+ "pleased",
709
+ "poised",
710
+ "polite",
711
+ "political",
712
+ "popular",
713
+ "positive",
714
+ "possible",
715
+ "potential",
716
+ "powerful",
717
+ "practical",
718
+ "precious",
719
+ "precise",
720
+ "preferred",
721
+ "preliminary",
722
+ "premier",
723
+ "prepared",
724
+ "present",
725
+ "presidential",
726
+ "pretty",
727
+ "previous",
728
+ "prickly",
729
+ "primary",
730
+ "prime",
731
+ "primitive",
732
+ "principal",
733
+ "printed",
734
+ "prior",
735
+ "private",
736
+ "probable",
737
+ "productive",
738
+ "professional",
739
+ "profitable",
740
+ "profound",
741
+ "progressive",
742
+ "prominent",
743
+ "promising",
744
+ "proper",
745
+ "proposed",
746
+ "prospective",
747
+ "protective",
748
+ "protestant",
749
+ "proud",
750
+ "provincial",
751
+ "psychological",
752
+ "public",
753
+ "puny",
754
+ "pure",
755
+ "purring",
756
+ "puzzled",
757
+ "quaint",
758
+ "qualified",
759
+ "quarrelsome",
760
+ "querulous",
761
+ "quick",
762
+ "quickest",
763
+ "quiet",
764
+ "quintessential",
765
+ "quixotic",
766
+ "radical",
767
+ "rainy",
768
+ "random",
769
+ "rapid",
770
+ "rare",
771
+ "raspy",
772
+ "rational",
773
+ "raw",
774
+ "ready",
775
+ "real",
776
+ "realistic",
777
+ "rear",
778
+ "reasonable",
779
+ "recent",
780
+ "reduced",
781
+ "redundant",
782
+ "regional",
783
+ "registered",
784
+ "regular",
785
+ "regulatory",
786
+ "related",
787
+ "relative",
788
+ "relaxed",
789
+ "relevant",
790
+ "reliable",
791
+ "relieved",
792
+ "reluctant",
793
+ "remaining",
794
+ "remarkable",
795
+ "remote",
796
+ "renewed",
797
+ "representative",
798
+ "required",
799
+ "resident",
800
+ "residential",
801
+ "resonant",
802
+ "respectable",
803
+ "respective",
804
+ "responsible",
805
+ "resulting",
806
+ "retail",
807
+ "retired",
808
+ "revolutionary",
809
+ "rich",
810
+ "ridiculous",
811
+ "right",
812
+ "rigid",
813
+ "ripe",
814
+ "rising",
815
+ "rival",
816
+ "roasted",
817
+ "robust",
818
+ "rolling",
819
+ "romantic",
820
+ "rough",
821
+ "round",
822
+ "royal",
823
+ "rubber",
824
+ "rude",
825
+ "ruling",
826
+ "running",
827
+ "rural",
828
+ "sacred",
829
+ "sad",
830
+ "safe",
831
+ "salty",
832
+ "satisfactory",
833
+ "satisfied",
834
+ "scared",
835
+ "scary",
836
+ "scattered",
837
+ "scientific",
838
+ "scornful",
839
+ "scrawny",
840
+ "screeching",
841
+ "secondary",
842
+ "secret",
843
+ "secure",
844
+ "select",
845
+ "selected",
846
+ "selective",
847
+ "selfish",
848
+ "semantic",
849
+ "senior",
850
+ "sensible",
851
+ "sensitive",
852
+ "separate",
853
+ "serious",
854
+ "severe",
855
+ "shaggy",
856
+ "shaky",
857
+ "shallow",
858
+ "shared",
859
+ "sharp",
860
+ "sheer",
861
+ "shiny",
862
+ "shivering",
863
+ "shocked",
864
+ "short",
865
+ "shrill",
866
+ "shy",
867
+ "sick",
868
+ "significant",
869
+ "silent",
870
+ "silky",
871
+ "silly",
872
+ "similar",
873
+ "simple",
874
+ "single",
875
+ "skilled",
876
+ "skinny",
877
+ "sleepy",
878
+ "slight",
879
+ "slim",
880
+ "slimy",
881
+ "slippery",
882
+ "slow",
883
+ "small",
884
+ "smart",
885
+ "smiling",
886
+ "smoggy",
887
+ "smooth",
888
+ "social",
889
+ "soft",
890
+ "solar",
891
+ "sole",
892
+ "solid",
893
+ "sophisticated",
894
+ "sore",
895
+ "sorry",
896
+ "sound",
897
+ "sour",
898
+ "southern",
899
+ "spare",
900
+ "sparkling",
901
+ "spatial",
902
+ "special",
903
+ "specific",
904
+ "specified",
905
+ "spectacular",
906
+ "spicy",
907
+ "spiritual",
908
+ "splendid",
909
+ "spontaneous",
910
+ "sporting",
911
+ "spotless",
912
+ "spotty",
913
+ "square",
914
+ "squealing",
915
+ "stable",
916
+ "stale",
917
+ "standard",
918
+ "static",
919
+ "statistical",
920
+ "statutory",
921
+ "steady",
922
+ "steep",
923
+ "sticky",
924
+ "stiff",
925
+ "still",
926
+ "stingy",
927
+ "stormy",
928
+ "straight",
929
+ "straightforward",
930
+ "strange",
931
+ "strategic",
932
+ "strict",
933
+ "striking",
934
+ "striped",
935
+ "strong",
936
+ "structural",
937
+ "stuck",
938
+ "subjective",
939
+ "subsequent",
940
+ "substantial",
941
+ "subtle",
942
+ "successful",
943
+ "successive",
944
+ "sudden",
945
+ "sufficient",
946
+ "suitable",
947
+ "sunny",
948
+ "super",
949
+ "superb",
950
+ "superior",
951
+ "supporting",
952
+ "supposed",
953
+ "supreme",
954
+ "sure",
955
+ "surprised",
956
+ "surprising",
957
+ "surrounding",
958
+ "surviving",
959
+ "suspicious",
960
+ "sweet",
961
+ "swift",
962
+ "symbolic",
963
+ "sympathetic",
964
+ "systematic",
965
+ "tall",
966
+ "tame",
967
+ "tart",
968
+ "tasteless",
969
+ "tasty",
970
+ "technical",
971
+ "technological",
972
+ "teenage",
973
+ "temporary",
974
+ "tender",
975
+ "tense",
976
+ "terrible",
977
+ "territorial",
978
+ "testy",
979
+ "then",
980
+ "theoretical",
981
+ "thin",
982
+ "thirsty",
983
+ "thorough",
984
+ "thoughtful",
985
+ "thoughtless",
986
+ "thundering",
987
+ "tight",
988
+ "tiny",
989
+ "tired",
990
+ "top",
991
+ "tory",
992
+ "total",
993
+ "tough",
994
+ "traditional",
995
+ "tragic",
996
+ "tremendous",
997
+ "tricky",
998
+ "tropical",
999
+ "troubled",
1000
+ "typical",
1001
+ "ultimate",
1002
+ "unable",
1003
+ "unaware",
1004
+ "uncertain",
1005
+ "unchanged",
1006
+ "underground",
1007
+ "underlying",
1008
+ "uneven",
1009
+ "unfair",
1010
+ "uniform",
1011
+ "uninterested",
1012
+ "unique",
1013
+ "united",
1014
+ "universal",
1015
+ "unknown",
1016
+ "unlikely",
1017
+ "unusual",
1018
+ "unwilling",
1019
+ "upper",
1020
+ "upset",
1021
+ "urban",
1022
+ "urgent",
1023
+ "used",
1024
+ "useful",
1025
+ "usual",
1026
+ "vague",
1027
+ "valid",
1028
+ "valuable",
1029
+ "variable",
1030
+ "varied",
1031
+ "various",
1032
+ "varying",
1033
+ "vast",
1034
+ "verbal",
1035
+ "vertical",
1036
+ "very",
1037
+ "vicarious",
1038
+ "vicious",
1039
+ "victorious",
1040
+ "violent",
1041
+ "visible",
1042
+ "visiting",
1043
+ "visual",
1044
+ "vital",
1045
+ "vitreous",
1046
+ "vivacious",
1047
+ "vivid",
1048
+ "vocal",
1049
+ "vocational",
1050
+ "voiceless",
1051
+ "voluminous",
1052
+ "voluntary",
1053
+ "vulnerable",
1054
+ "wandering",
1055
+ "warm",
1056
+ "watery",
1057
+ "weak",
1058
+ "wealthy",
1059
+ "weary",
1060
+ "wee",
1061
+ "weekly",
1062
+ "weird",
1063
+ "welcome",
1064
+ "well",
1065
+ "western",
1066
+ "wet",
1067
+ "whispering",
1068
+ "whole",
1069
+ "wide",
1070
+ "widespread",
1071
+ "wild",
1072
+ "wilful",
1073
+ "willing",
1074
+ "willowy",
1075
+ "wily",
1076
+ "wise",
1077
+ "wispy",
1078
+ "wittering",
1079
+ "witty",
1080
+ "wonderful",
1081
+ "wooden",
1082
+ "working",
1083
+ "worldwide",
1084
+ "worried",
1085
+ "worthwhile",
1086
+ "worthy",
1087
+ "written",
1088
+ "wrong",
1089
+ "xenacious",
1090
+ "xenial",
1091
+ "xenogeneic",
1092
+ "xeric",
1093
+ "xerothermic",
1094
+ "yabbering",
1095
+ "yammering",
1096
+ "yappiest",
1097
+ "yappy",
1098
+ "yawning",
1099
+ "yearling",
1100
+ "yearning",
1101
+ "yeasty",
1102
+ "yelling",
1103
+ "yelping",
1104
+ "yielding",
1105
+ "yodelling",
1106
+ "young",
1107
+ "youngest",
1108
+ "youthful",
1109
+ "ytterbic",
1110
+ "yucky",
1111
+ "yummy",
1112
+ "zany",
1113
+ "zealous",
1114
+ "zeroth",
1115
+ "zestful",
1116
+ "zesty",
1117
+ "zippy",
1118
+ "zonal",
1119
+ "zoophagous",
1120
+ "zygomorphic",
1121
+ "zygotic",
1122
+ ]
1123
+
1124
+ # Copied from https://github.com/andreasonny83/unique-names-generator/blob/main/src/dictionaries/colors.ts
1125
+ _COLORS = [
1126
+ "amaranth",
1127
+ "amber",
1128
+ "amethyst",
1129
+ "apricot",
1130
+ "aqua",
1131
+ "aquamarine",
1132
+ "azure",
1133
+ "beige",
1134
+ "blue",
1135
+ "blush",
1136
+ "bronze",
1137
+ "chocolate",
1138
+ "coffee",
1139
+ "copper",
1140
+ "coral",
1141
+ "crimson",
1142
+ "cyan",
1143
+ "emerald",
1144
+ "fuchsia",
1145
+ "gold",
1146
+ "gray",
1147
+ "green",
1148
+ "indigo",
1149
+ "ivory",
1150
+ "jade",
1151
+ "lavender",
1152
+ "lime",
1153
+ "magenta",
1154
+ "maroon",
1155
+ "moccasin",
1156
+ "olive",
1157
+ "orange",
1158
+ "peach",
1159
+ "pink",
1160
+ "plum",
1161
+ "purple",
1162
+ "red",
1163
+ "rose",
1164
+ "salmon",
1165
+ "sapphire",
1166
+ "scarlet",
1167
+ "silver",
1168
+ "tan",
1169
+ "teal",
1170
+ "tomato",
1171
+ "turquoise",
1172
+ "violet",
1173
+ "yellow",
1174
+ ]
1175
+
1176
+
1177
+ def random_unique_name() -> str:
1178
+ suffix = "".join(random.choices(string.ascii_lowercase + string.digits, k=4))
1179
+ return f"{random.choice(_ADJECTIVES)}-{random.choice(_COLORS)}-{suffix}"