Coverage for app/quotes.py: 100%
9 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-28 23:33 +0000
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-28 23:33 +0000
1"""Aviation quotes and jokes for email footers.
3All quotes are sourced from verifiable, attributed works. They are not
4AI-generated. French and Dutch entries remain in their original language.
5"""
7import random
9# (text, attribution) — attribution is plain text, no HTML
10_QUOTES_EN: list[tuple[str, str]] = [
11 (
12 "If you can walk away from a landing, it's a good landing. "
13 "If you use the airplane the next day, it's an outstanding landing.",
14 "Chuck Yeager",
15 ),
16 (
17 "Anyone can do the job when things are going right. "
18 "In this business we play for keeps.",
19 "Ernest K. Gann, Fate Is the Hunter",
20 ),
21 (
22 "Flying is hypnotic and all pilots are willing victims to the spell.",
23 "Ernest K. Gann, Fate Is the Hunter",
24 ),
25 (
26 "I have often said that the lure of flying is the lure of beauty.",
27 "Amelia Earhart",
28 ),
29 (
30 "Flying is hours and hours of dull monotony sprinkled with "
31 "a few moments of stark horror.",
32 'Gregory "Pappy" Boyington',
33 ),
34 (
35 "I think it is a pity to lose the romantic side of flying and simply "
36 "to accept it as a common means of transport, although that end is "
37 "what we have all ostensibly been striving to attain.",
38 "Amy Johnson",
39 ),
40 (
41 "A superior pilot uses his superior judgment to avoid situations "
42 "which require the use of his superior skill.",
43 "Frank Borman",
44 ),
45 (
46 "Aviation in itself is not inherently dangerous. But to an even "
47 "greater degree than the sea, it is terribly unforgiving of any "
48 "carelessness, incapacity or neglect.",
49 "A.G. Lamplugh, British Aviation Insurance Group",
50 ),
51 (
52 "A pilot who says he has never been frightened in an airplane is, "
53 "I'm afraid, lying.",
54 "Louise Thaden",
55 ),
56 (
57 "More than anything else the sensation is one of perfect peace, "
58 "mingled with the excitement that strains every nerve to the utmost, "
59 "if you can conceive of such a combination.",
60 "Wilbur Wright",
61 ),
62 (
63 "The gull sees farthest who flies highest.",
64 "Richard Bach, Jonathan Livingston Seagull",
65 ),
66 (
67 "My airplane is quiet, and for a moment still an alien, "
68 "still a stranger to the ground, I am home.",
69 "Richard Bach",
70 ),
71 (
72 "Thank God men cannot fly, and lay waste the sky as well as the earth.",
73 "Henry David Thoreau",
74 ),
75 (
76 "There are old pilots, and there are bold pilots, "
77 "but there are no old, bold pilots.",
78 "traditional aviation saying",
79 ),
80 (
81 "Every takeoff is optional. Every landing is mandatory.",
82 "traditional aviation saying",
83 ),
84 (
85 "There are three simple rules for making a smooth landing. "
86 "Unfortunately, no one knows what they are.",
87 "aviation humor",
88 ),
89 (
90 "Never fly the A model of anything.",
91 "traditional aviation saying",
92 ),
93 (
94 "There is an art to flying. The knack lies in learning how to "
95 "throw yourself at the ground and miss.",
96 'Douglas Adams, "The Hitchhiker\'s Guide to the Galaxy"',
97 ),
98 (
99 "There are only two emotions in a plane: boredom and terror.",
100 "Orson Welles",
101 ),
102 (
103 "The engine is the heart of an airplane, but the pilot is its soul.",
104 "Walter Raleigh",
105 ),
106 (
107 "When everything seems to be going against you, remember that "
108 "aircraft take off against the wind, not with it.",
109 "Henry Ford",
110 ),
111 (
112 "The airplane stays up because it doesn't have the time to fall.",
113 "Orville Wright",
114 ),
115 (
116 "The airplane is the closest thing to real magic that we have.",
117 "Charles Lindbergh",
118 ),
119 (
120 "There's no such thing as a routine flight.",
121 "Chesley B. Sullenberger",
122 ),
123 (
124 "The air up there in the clouds is very pure and fine, bracing and "
125 "delicious. And why shouldn't it be — "
126 "it is the same the angels breathe.",
127 "Mark Twain",
128 ),
129 (
130 "The airplane has unveiled for us the true face of the earth.",
131 "Antoine de Saint-Exupéry",
132 ),
133 (
134 "There is a big difference between a pilot and an aviator. "
135 "One is a technician; the other is an artist in love with flight.",
136 "Elrey Borge Jeppesen",
137 ),
138 (
139 "I fly because it releases my mind from the tyranny of petty things.",
140 "Antoine de Saint-Exupéry",
141 ),
142 (
143 "In flying I have learned that carelessness and overconfidence are "
144 "usually far more dangerous than deliberately accepted risks.",
145 "Wilbur Wright",
146 ),
147 (
148 "Why fly? Simple. I'm not happy unless there's some room "
149 "between me and the ground.",
150 "Richard Bach",
151 ),
152 (
153 "The only time you have too much fuel is when you're on fire.",
154 "traditional aviation saying",
155 ),
156 (
157 "Never fly in the same cockpit with someone braver than you.",
158 "traditional aviation saying",
159 ),
160 (
161 "You start with a bag full of luck and an empty bag of experience. "
162 "The trick is to fill the bag of experience before you empty the bag of luck.",
163 "traditional aviation saying",
164 ),
165 (
166 "If you're ever faced with a forced landing, "
167 "fly the thing as far into the crash as possible.",
168 "Bob Hoover",
169 ),
170 (
171 "Any pilot can describe the mechanics of flying. "
172 "What it can do for the spirit of man is beyond description.",
173 "Barry Goldwater",
174 ),
175 (
176 "Flying is more than a sport and more than a job; "
177 "flying is pure passion and desire, which fill a lifetime.",
178 "Adolf Galland",
179 ),
180 (
181 "Aviation was neither an industry nor a science. It was a miracle.",
182 "Igor Sikorsky",
183 ),
184 (
185 "Aviation is the branch of engineering that is least forgiving of mistakes.",
186 "Freeman Dyson",
187 ),
188 (
189 "To most people, the sky is the limit. "
190 "To those who love aviation, the sky is home.",
191 "Jerry Crawford",
192 ),
193 (
194 "Aviation is proof that given the will, "
195 "we have the capacity to achieve the impossible.",
196 "Edward Rickenbacker",
197 ),
198 (
199 "The highest art form of all is a human being in control of himself "
200 "and his airplane in flight, urging the spirit of a machine to match his own.",
201 "Richard Bach",
202 ),
203 (
204 "Flying was a very tangible freedom. In those days, it was beauty, "
205 "adventure, discovery, the epitome of breaking into new worlds.",
206 "Anne Morrow Lindbergh",
207 ),
208 (
209 "Flight is the only truly new sensation that men have achieved in modern history.",
210 "James Dickey",
211 ),
212 (
213 "Flying prevails whenever a man and his airplane "
214 "are put to a test of maximum performance.",
215 "Richard Bach",
216 ),
217 (
218 "Flying might not be all smooth sailing, but the fun of it is worth the price.",
219 "Amelia Earhart",
220 ),
221 (
222 "If black boxes survive air crashes, "
223 "why don't they make the whole plane out of that stuff?",
224 "George Carlin",
225 ),
226 (
227 "If you push the stick forward, the houses get bigger. "
228 "If you pull the stick back, they get smaller. "
229 "That is, unless you keep pulling the stick all the way back, "
230 "then they get bigger again.",
231 "aviation humor",
232 ),
233]
235# French quotes — remain in French, no translation provided
236_QUOTES_FR: list[tuple[str, str]] = [
237 (
238 "Il semble que la perfection soit atteinte non quand il n'y a plus "
239 "rien à ajouter, mais quand il n'y a plus rien à retrancher.",
240 "Antoine de Saint-Exupéry, Terre des hommes",
241 ),
242 (
243 "Avec l'avion, nous avons appris la ligne droite.",
244 "Antoine de Saint-Exupéry, Terre des hommes",
245 ),
246 (
247 "L'avion est une machine sans doute, mais quel instrument d'analyse !",
248 "Antoine de Saint-Exupéry, Terre des hommes",
249 ),
250 (
251 "Le but, peut-être, ne justifie rien, mais l'action délivre de la mort.",
252 "Antoine de Saint-Exupéry, Vol de nuit",
253 ),
254 (
255 "Le beau côté de notre métier de pilote de ligne est de s'imaginer, "
256 "de temps à autre, que nous vivons loin des choses d'ici-bas, "
257 "que notre existence est faite d'une suite d'aventures.",
258 "Jean Mermoz, Mes vols",
259 ),
260 (
261 "Je savais qu'un jour, et un jour prochain, je volerais. "
262 "Rien ne pouvait me faire renoncer à cette foi. "
263 "Je ne voulais pas de profession autre que celle de pilote.",
264 "Jean Mermoz, Mes vols",
265 ),
266 (
267 "Les calculs de mes ingénieurs sont formels : le projet est irréalisable. "
268 "Il ne nous reste donc plus qu'à le réaliser.",
269 "Pierre-Georges Latécoère",
270 ),
271 (
272 "L'hélice d'un avion est en fait un ventilateur pour le pilote… "
273 "Si elle s'arrête, le pilote transpire.",
274 "humour aéronautique",
275 ),
276 (
277 "Moi si un jour je prends l'avion, je monte dans la boîte noire !",
278 "Jean-Marie Gourio",
279 ),
280 (
281 "L'avion, c'est pareil que le cinéma, il n'y a que des erreurs humaines. "
282 "Un mauvais film, c'est une erreur humaine.",
283 "Gérard Depardieu",
284 ),
285 (
286 "Au pays magique les avions tissent des guirlandes "
287 "qui restent suspendues pour décorer le ciel.",
288 "François David, Au pays magique",
289 ),
290]
292# Dutch quotes — remain in Dutch, no translation provided
293_QUOTES_NL: list[tuple[str, str]] = [
294 (
295 "Dit is mijn leer: wie eenmaal vliegen wil leren, die moet eerst leren "
296 "staan en gaan en lopen en klauteren en dansen — "
297 "vliegend leert men het vliegen niet!",
298 "Friedrich Nietzsche, Aldus sprak Zarathoestra",
299 ),
300 (
301 "Hoe herken je een piloot in een ruimte? Hij of zij vertelt het je wel!",
302 "traditionele pilotenmop",
303 ),
304 (
305 "Wat is het verschil tussen God en een piloot? "
306 "God denkt niet dat hij piloot is.",
307 "traditionele pilotenmop",
308 ),
309 (
310 "Een gevechtspiloot landt alsof hij aangevallen wordt. "
311 "Een lijnpiloot landt alsof zijn moeder meekijkt.",
312 "traditionele pilotenmop",
313 ),
314 (
315 "De optimist vindt het vliegtuig uit, de pessimist de parachute.",
316 "populair gezegde",
317 ),
318 (
319 "Reizen per vliegtuig: om tijd te winnen zit je je uren te vervelen.",
320 "Fons Jansen",
321 ),
322]
325# Registry: map each supported non-English locale to its quote list.
326# To add a new language, create _QUOTES_XX and add it here — no other change needed.
327_LOCALE_QUOTES: dict[str, list[tuple[str, str]]] = {
328 "fr": _QUOTES_FR,
329 "nl": _QUOTES_NL,
330}
333def random_aviation_quote(locale: str = "en") -> str:
334 """Return a randomly chosen aviation quote formatted as 'text \u2014 attribution'.
336 For non-English locales the pool includes both English and that language's
337 quotes, so users may receive a quote in their own language. Quotes in other
338 languages are never translated — they stay in their original language.
339 """
340 pool = list(_QUOTES_EN) + list(_LOCALE_QUOTES.get(locale or "en", []))
341 text, attribution = random.choice(pool)
342 return f"\u201c{text}\u201d \u2014 {attribution}"