1# randomname.py - topic extension
2#
3# This software may be used and distributed according to the terms of the
4# GNU General Public License version 2 or any later version.
5"""random topic generator utils
6"""
7
8import random
9
10animals = [
11    b'aardvark',
12    b'albatross',
13    b'alligator',
14    b'alpaca',
15    b'ant',
16    b'anteater',
17    b'antelope',
18    b'ape',
19    b'armadillo',
20    b'baboon',
21    b'badger',
22    b'barracuda',
23    b'bat',
24    b'bear',
25    b'beaver',
26    b'bee',
27    b'beetle',
28    b'bison',
29    b'boar',
30    b'buffalo',
31    b'bushbaby',
32    b'bustard',
33    b'butterfly',
34    b'camel',
35    b'capuchin',
36    b'carabao',
37    b'caribou',
38    b'cat',
39    b'caterpillar',
40    b'cattle',
41    b'chameleon',
42    b'chamois',
43    b'cheetah',
44    b'chicken',
45    b'chimpanzee',
46    b'chinchilla',
47    b'chipmunk',
48    b'chough',
49    b'cicada',
50    b'clam',
51    b'cobra',
52    b'cockroach',
53    b'cod',
54    b'cormorant',
55    b'coyote',
56    b'crab',
57    b'crane',
58    b'cricket',
59    b'crocodile',
60    b'crow',
61    b'curlew',
62    b'deer',
63    b'dinosaur',
64    b'dog',
65    b'dogfish',
66    b'dolphin',
67    b'donkey',
68    b'dotterel',
69    b'dove',
70    b'dragon',
71    b'dragonfly',
72    b'duck',
73    b'dugong',
74    b'dunlin',
75    b'eagle',
76    b'echidna',
77    b'eel',
78    b'eland',
79    b'elephant',
80    b'elk',
81    b'emu',
82    b'falcon',
83    b'ferret',
84    b'finch',
85    b'fish',
86    b'flamingo',
87    b'fly',
88    b'fox',
89    b'frog',
90    b'gaur',
91    b'gazelle',
92    b'gecko',
93    b'gerbil',
94    b'giraffe',
95    b'gnat',
96    b'gnu',
97    b'goat',
98    b'goldfish',
99    b'goose',
100    b'gorilla',
101    b'goshawk',
102    b'grasshopper',
103    b'grouse',
104    b'guanaco',
105    b'guinea',
106    b'gull',
107    b'hamster',
108    b'hare',
109    b'hawk',
110    b'hedgehog',
111    b'heron',
112    b'herring',
113    b'hippopotamus',
114    b'hornet',
115    b'horse',
116    b'horsecrab',
117    b'hound',
118    b'hummingbird',
119    b'hyena',
120    b'hyrax',
121    b'ibex',
122    b'ibis',
123    b'iguana',
124    b'impala',
125    b'insect',
126    b'jackal',
127    b'jaguar',
128    b'jay',
129    b'jellyfish',
130    b'kangaroo',
131    b'koala',
132    b'kouprey',
133    b'kudu',
134    b'lapwing',
135    b'lark',
136    b'lemming',
137    b'lemur',
138    b'leopard',
139    b'lion',
140    b'lizard',
141    b'llama',
142    b'lobster',
143    b'locust',
144    b'loris',
145    b'louse',
146    b'lynx',
147    b'lyrebird',
148    b'magpie',
149    b'mallard',
150    b'mammoth',
151    b'manatee',
152    b'marten',
153    b'meerkat',
154    b'mink',
155    b'minnow',
156    b'mole',
157    b'mongoose',
158    b'monkey',
159    b'moose',
160    b'mosquito',
161    b'mouse',
162    b'mule',
163    b'muskrat',
164    b'narwhal',
165    b'newt',
166    b'nightingale',
167    b'numbat',
168    b'octopus',
169    b'okapi',
170    b'opossum',
171    b'oryx',
172    b'ostrich',
173    b'otter',
174    b'owl',
175    b'ox',
176    b'oyster',
177    b'panda',
178    b'panther',
179    b'parrot',
180    b'partridge',
181    b'peacock',
182    b'peafowl',
183    b'pelican',
184    b'penguin',
185    b'pheasant',
186    b'pig',
187    b'pigeon',
188    b'platypus',
189    b'pony',
190    b'porcupine',
191    b'porpoise',
192    b'puffin',
193    b'pug',
194    b'quagga',
195    b'quail',
196    b'quelea',
197    b'rabbit',
198    b'raccoon',
199    b'ram',
200    b'rat',
201    b'raven',
202    b'reindeer',
203    b'rhea',
204    b'rhinoceros',
205    b'rook',
206    b'ruff',
207    b'salamander',
208    b'salmon',
209    b'sambar',
210    b'sandpiper',
211    b'sardine',
212    b'scorpion',
213    b'seahorse',
214    b'seal',
215    b'serval',
216    b'shark',
217    b'sheep',
218    b'shrew',
219    b'shrimp',
220    b'skink',
221    b'skunk',
222    b'snail',
223    b'snake',
224    b'spider',
225    b'squid',
226    b'squirrel',
227    b'starling',
228    b'stinkbug',
229    b'stork',
230    b'swan',
231    b'tapir',
232    b'tarsier',
233    b'termite',
234    b'tern',
235    b'tiger',
236    b'toad',
237    b'trout',
238    b'turkey',
239    b'turtle',
240    b'unicorn',
241    b'viper',
242    b'vulture',
243    b'wallaby',
244    b'walrus',
245    b'wasp',
246    b'weasel',
247    b'whale',
248    b'wolf',
249    b'wolverine',
250    b'wombat',
251    b'woodchuck',
252    b'woodcock',
253    b'woodpecker',
254    b'worm',
255    b'wren',
256    b'yak',
257    b'zebra',
258    b'zorilla'
259]
260
261adjectives = [
262    b'abiding',
263    b'abject',
264    b'ablaze',
265    b'able',
266    b'aboard',
267    b'abounding',
268    b'absorbed',
269    b'absorbing',
270    b'abstracted',
271    b'abundant',
272    b'acceptable',
273    b'accessible',
274    b'accurate',
275    b'acoustic',
276    b'adamant',
277    b'adaptable',
278    b'adhesive',
279    b'adjoining',
280    b'adorable',
281    b'adventurous',
282    b'affable',
283    b'affectionate',
284    b'agreeable',
285    b'alert',
286    b'alive',
287    b'alluring',
288    b'amazing',
289    b'ambiguous',
290    b'ambitious',
291    b'amiable',
292    b'amicable',
293    b'amused',
294    b'amusing',
295    b'ancient',
296    b'animated',
297    b'apricot',
298    b'appropriate',
299    b'aquatic',
300    b'arctic',
301    b'arenaceous',
302    b'aromatic',
303    b'aspiring',
304    b'assiduous',
305    b'assorted',
306    b'astonishing',
307    b'attractive',
308    b'auspicious',
309    b'automatic',
310    b'available',
311    b'average',
312    b'awake',
313    b'aware',
314    b'awesome',
315    b'axiomatic',
316    b'bashful',
317    b'bawdy',
318    b'beautiful',
319    b'beefy',
320    b'befitting',
321    b'beneficial',
322    b'benevolent',
323    b'bent',
324    b'best',
325    b'better',
326    b'bewildered',
327    b'bewitching',
328    b'big',
329    b'billowy',
330    b'bizarre',
331    b'black',
332    b'blithe',
333    b'blue',
334    b'blushing',
335    b'bouncy',
336    b'boundless',
337    b'brainy',
338    b'brash',
339    b'brave',
340    b'brawny',
341    b'brazen',
342    b'breezy',
343    b'brief',
344    b'bright',
345    b'brilliant',
346    b'broad',
347    b'brown',
348    b'bucolic',
349    b'bulky',
350    b'bumpy',
351    b'burgundy',
352    b'burly',
353    b'bustling',
354    b'busy',
355    b'calm',
356    b'capable',
357    b'capricious',
358    b'captivating',
359    b'carefree',
360    b'careful',
361    b'caring',
362    b'carrot',
363    b'ceaseless',
364    b'cerise',
365    b'certain',
366    b'challenging',
367    b'changeable',
368    b'charming',
369    b'cheerful',
370    b'chief',
371    b'chilly',
372    b'chipper',
373    b'classy',
374    b'clean',
375    b'clear',
376    b'clever',
377    b'cloudy',
378    b'coherent',
379    b'colorful',
380    b'colossal',
381    b'comfortable',
382    b'common',
383    b'communicative',
384    b'compassionate',
385    b'complete',
386    b'complex',
387    b'compulsive',
388    b'confused',
389    b'conscientious',
390    b'conscious',
391    b'conservative',
392    b'considerate',
393    b'convivial',
394    b'cooing',
395    b'cool',
396    b'cooperative',
397    b'coordinated',
398    b'courageous',
399    b'courteous',
400    b'crazy',
401    b'creative',
402    b'crispy',
403    b'crooked',
404    b'crowded',
405    b'cuddly',
406    b'cultured',
407    b'cunning',
408    b'curious',
409    b'curly',
410    b'curved',
411    b'curvy',
412    b'cut',
413    b'cute',
414    b'daily',
415    b'damp',
416    b'dapper',
417    b'dashing',
418    b'dazzling',
419    b'dear',
420    b'debonair',
421    b'decisive',
422    b'decorous',
423    b'deep',
424    b'defiant',
425    b'delicate',
426    b'delicious',
427    b'delighted',
428    b'delightful',
429    b'delirious',
430    b'descriptive',
431    b'detached',
432    b'detailed',
433    b'determined',
434    b'different',
435    b'diligent',
436    b'diminutive',
437    b'diplomatic',
438    b'discreet',
439    b'distinct',
440    b'distinctive',
441    b'dramatic',
442    b'dry',
443    b'dynamic',
444    b'dynamite',
445    b'eager',
446    b'early',
447    b'earthy',
448    b'easy',
449    b'easygoing',
450    b'eatable',
451    b'economic',
452    b'ecstatic',
453    b'educated',
454    b'efficacious',
455    b'efficient',
456    b'effortless',
457    b'eight',
458    b'elastic',
459    b'elated',
460    b'electric',
461    b'elegant',
462    b'elfin',
463    b'elite',
464    b'eminent',
465    b'emotional',
466    b'enchanted',
467    b'enchanting',
468    b'encouraging',
469    b'endless',
470    b'energetic',
471    b'enormous',
472    b'entertaining',
473    b'enthusiastic',
474    b'envious',
475    b'epicurean',
476    b'equable',
477    b'equal',
478    b'eternal',
479    b'ethereal',
480    b'evanescent',
481    b'even',
482    b'excellent',
483    b'excited',
484    b'exciting',
485    b'exclusive',
486    b'exotic',
487    b'expensive',
488    b'exquisite',
489    b'extroverted',
490    b'exuberant',
491    b'exultant',
492    b'fabulous',
493    b'fair',
494    b'faithful',
495    b'familiar',
496    b'famous',
497    b'fancy',
498    b'fantastic',
499    b'far',
500    b'fascinated',
501    b'fast',
502    b'fearless',
503    b'female',
504    b'fertile',
505    b'festive',
506    b'few',
507    b'fine',
508    b'first',
509    b'five',
510    b'fixed',
511    b'flamboyant',
512    b'flashy',
513    b'flat',
514    b'flawless',
515    b'flirtatious',
516    b'florid',
517    b'flowery',
518    b'fluffy',
519    b'fluttering',
520    b'foamy',
521    b'foolish',
522    b'foregoing',
523    b'fortunate',
524    b'four',
525    b'frank',
526    b'free',
527    b'frequent',
528    b'fresh',
529    b'friendly',
530    b'full',
531    b'functional',
532    b'funny',
533    b'furry',
534    b'future',
535    b'futuristic',
536    b'fuzzy',
537    b'gabby',
538    b'gainful',
539    b'garrulous',
540    b'general',
541    b'generous',
542    b'gentle',
543    b'giant',
544    b'giddy',
545    b'gifted',
546    b'gigantic',
547    b'gilded',
548    b'glamorous',
549    b'gleaming',
550    b'glorious',
551    b'glossy',
552    b'glowing',
553    b'godly',
554    b'good',
555    b'goofy',
556    b'gorgeous',
557    b'graceful',
558    b'grandiose',
559    b'grateful',
560    b'gratis',
561    b'gray',
562    b'great',
563    b'green',
564    b'gregarious',
565    b'grey',
566    b'groovy',
567    b'guiltless',
568    b'gusty',
569    b'guttural',
570    b'habitual',
571    b'half',
572    b'hallowed',
573    b'halting',
574    b'handsome',
575    b'happy',
576    b'hard',
577    b'hardworking',
578    b'harmonious',
579    b'heady',
580    b'healthy',
581    b'heavenly',
582    b'helpful',
583    b'hilarious',
584    b'historical',
585    b'holistic',
586    b'hollow',
587    b'honest',
588    b'honorable',
589    b'hopeful',
590    b'hospitable',
591    b'hot',
592    b'huge',
593    b'humorous',
594    b'hungry',
595    b'hushed',
596    b'hypnotic',
597    b'illustrious',
598    b'imaginary',
599    b'imaginative',
600    b'immense',
601    b'imminent',
602    b'impartial',
603    b'important',
604    b'imported',
605    b'impossible',
606    b'incandescent',
607    b'inconclusive',
608    b'incredible',
609    b'independent',
610    b'industrious',
611    b'inexpensive',
612    b'innate',
613    b'innocent',
614    b'inquisitive',
615    b'instinctive',
616    b'intellectual',
617    b'intelligent',
618    b'intense',
619    b'interesting',
620    b'internal',
621    b'intuitive',
622    b'inventive',
623    b'invincible',
624    b'jazzy',
625    b'jolly',
626    b'joyful',
627    b'joyous',
628    b'judicious',
629    b'juicy',
630    b'jumpy',
631    b'keen',
632    b'kind',
633    b'kindhearted',
634    b'kindly',
635    b'knotty',
636    b'knowing',
637    b'knowledgeable',
638    b'known',
639    b'laconic',
640    b'large',
641    b'lavish',
642    b'lean',
643    b'learned',
644    b'left',
645    b'legal',
646    b'level',
647    b'light',
648    b'likeable',
649    b'literate',
650    b'little',
651    b'lively',
652    b'living',
653    b'long',
654    b'longing',
655    b'loud',
656    b'lovely',
657    b'loving',
658    b'loyal',
659    b'lucky',
660    b'luminous',
661    b'lush',
662    b'luxuriant',
663    b'luxurious',
664    b'lyrical',
665    b'magenta',
666    b'magical',
667    b'magnificent',
668    b'majestic',
669    b'male',
670    b'mammoth',
671    b'many',
672    b'marvelous',
673    b'massive',
674    b'material',
675    b'mature',
676    b'meandering',
677    b'meaty',
678    b'medical',
679    b'mellow',
680    b'melodic',
681    b'melted',
682    b'merciful',
683    b'mighty',
684    b'miniature',
685    b'miniscule',
686    b'minor',
687    b'minute',
688    b'misty',
689    b'modern',
690    b'modest',
691    b'momentous',
692    b'motionless',
693    b'mountainous',
694    b'mute',
695    b'mysterious',
696    b'narrow',
697    b'natural',
698    b'near',
699    b'neat',
700    b'nebulous',
701    b'necessary',
702    b'neighborly',
703    b'new',
704    b'next',
705    b'nice',
706    b'nifty',
707    b'nimble',
708    b'nine',
709    b'nippy',
710    b'noiseless',
711    b'noisy',
712    b'nonchalant',
713    b'normal',
714    b'numberless',
715    b'numerous',
716    b'nutritious',
717    b'obedient',
718    b'observant',
719    b'obtainable',
720    b'oceanic',
721    b'omniscient',
722    b'one',
723    b'open',
724    b'opposite',
725    b'optimal',
726    b'optimistic',
727    b'opulent',
728    b'orange',
729    b'ordinary',
730    b'organic',
731    b'outgoing',
732    b'outrageous',
733    b'outstanding',
734    b'oval',
735    b'overjoyed',
736    b'overt',
737    b'palatial',
738    b'panoramic',
739    b'parallel',
740    b'passionate',
741    b'past',
742    b'pastoral',
743    b'patient',
744    b'peaceful',
745    b'perfect',
746    b'periodic',
747    b'permissible',
748    b'perpetual',
749    b'persistent',
750    b'petite',
751    b'philosophical',
752    b'physical',
753    b'picturesque',
754    b'pink',
755    b'pioneering',
756    b'piquant',
757    b'plausible',
758    b'pleasant',
759    b'plucky',
760    b'poised',
761    b'polite',
762    b'possible',
763    b'powerful',
764    b'practical',
765    b'precious',
766    b'premium',
767    b'present',
768    b'pretty',
769    b'previous',
770    b'private',
771    b'probable',
772    b'productive',
773    b'profound',
774    b'profuse',
775    b'protective',
776    b'proud',
777    b'psychedelic',
778    b'public',
779    b'pumped',
780    b'purple',
781    b'purring',
782    b'puzzled',
783    b'puzzling',
784    b'quaint',
785    b'quick',
786    b'quicker',
787    b'quickest',
788    b'quiet',
789    b'quirky',
790    b'quixotic',
791    b'quizzical',
792    b'rainy',
793    b'rapid',
794    b'rare',
795    b'rational',
796    b'ready',
797    b'real',
798    b'rebel',
799    b'receptive',
800    b'red',
801    b'reflective',
802    b'regular',
803    b'relaxed',
804    b'reliable',
805    b'relieved',
806    b'remarkable',
807    b'reminiscent',
808    b'reserved',
809    b'resolute',
810    b'resonant',
811    b'resourceful',
812    b'responsible',
813    b'rich',
814    b'ridiculous',
815    b'right',
816    b'rightful',
817    b'ripe',
818    b'ritzy',
819    b'roasted',
820    b'robust',
821    b'romantic',
822    b'roomy',
823    b'round',
824    b'royal',
825    b'ruddy',
826    b'rural',
827    b'rustic',
828    b'sable',
829    b'safe',
830    b'salty',
831    b'same',
832    b'satisfying',
833    b'savory',
834    b'scientific',
835    b'scintillating',
836    b'scrumptious',
837    b'second',
838    b'secret',
839    b'secretive',
840    b'seemly',
841    b'selective',
842    b'sensible',
843    b'separate',
844    b'shaggy',
845    b'shaky',
846    b'shining',
847    b'shiny',
848    b'short',
849    b'shy',
850    b'silent',
851    b'silky',
852    b'silly',
853    b'simple',
854    b'simplistic',
855    b'sincere',
856    b'six',
857    b'sizzling',
858    b'skillful',
859    b'sleepy',
860    b'slick',
861    b'slim',
862    b'smart',
863    b'smiling',
864    b'smooth',
865    b'soaring',
866    b'sociable',
867    b'soft',
868    b'solid',
869    b'sophisticated',
870    b'sparkling',
871    b'special',
872    b'spectacular',
873    b'speedy',
874    b'spicy',
875    b'spiffy',
876    b'spiritual',
877    b'splendid',
878    b'spooky',
879    b'spotless',
880    b'spotted',
881    b'square',
882    b'standing',
883    b'statuesque',
884    b'steadfast',
885    b'steady',
886    b'steep',
887    b'stimulating',
888    b'straight',
889    b'straightforward',
890    b'striking',
891    b'striped',
892    b'strong',
893    b'stunning',
894    b'stupendous',
895    b'sturdy',
896    b'subsequent',
897    b'substantial',
898    b'subtle',
899    b'successful',
900    b'succinct',
901    b'sudden',
902    b'super',
903    b'superb',
904    b'supreme',
905    b'swanky',
906    b'sweet',
907    b'swift',
908    b'sympathetic',
909    b'synonymous',
910    b'talented',
911    b'tall',
912    b'tame',
913    b'tan',
914    b'tangible',
915    b'tangy',
916    b'tasteful',
917    b'tasty',
918    b'telling',
919    b'temporary',
920    b'tempting',
921    b'ten',
922    b'tender',
923    b'terrific',
924    b'tested',
925    b'thankful',
926    b'therapeutic',
927    b'thin',
928    b'thinkable',
929    b'third',
930    b'thoughtful',
931    b'three',
932    b'thrifty',
933    b'tidy',
934    b'tiny',
935    b'toothsome',
936    b'towering',
937    b'tranquil',
938    b'tremendous',
939    b'tricky',
940    b'true',
941    b'truthful',
942    b'two',
943    b'typical',
944    b'ubiquitous',
945    b'ultra',
946    b'unassuming',
947    b'unbiased',
948    b'uncovered',
949    b'understanding',
950    b'understood',
951    b'unequaled',
952    b'unique',
953    b'unusual',
954    b'unwritten',
955    b'upbeat',
956    b'useful',
957    b'utopian',
958    b'utter',
959    b'uttermost',
960    b'valuable',
961    b'various',
962    b'vast',
963    b'verdant',
964    b'vermilion',
965    b'versatile',
966    b'versed',
967    b'victorious',
968    b'vigorous',
969    b'violet',
970    b'vivacious',
971    b'voiceless',
972    b'voluptuous',
973    b'wacky',
974    b'waiting',
975    b'wakeful',
976    b'wandering',
977    b'warm',
978    b'warmhearted',
979    b'wealthy',
980    b'whimsical',
981    b'whispering',
982    b'white',
983    b'whole',
984    b'wholesale',
985    b'whopping',
986    b'wide',
987    b'wiggly',
988    b'wild',
989    b'willing',
990    b'windy',
991    b'winsome',
992    b'wiry',
993    b'wise',
994    b'wistful',
995    b'witty',
996    b'womanly',
997    b'wonderful',
998    b'workable',
999    b'young',
1000    b'youthful',
1001    b'yummy',
1002    b'zany',
1003    b'zealous',
1004    b'zesty',
1005    b'zippy'
1006]
1007
1008def randomtopicname(ui):
1009    # Re-implement random.choice() in the way it was written in Python 2.
1010    def choice(things):
1011        return things[int(len(things) * random.random())]
1012    if ui.configint(b"devel", b"randomseed"):
1013        random.seed(ui.configint(b"devel", b"randomseed"))
1014    return choice(adjectives) + b"-" + choice(animals)
1015