starplot 0.16.1__py2.py3-none-any.whl → 0.17.0__py2.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 (40) hide show
  1. starplot/__init__.py +28 -2
  2. starplot/base.py +42 -60
  3. starplot/config.py +41 -9
  4. starplot/data/bigsky.py +1 -1
  5. starplot/data/constellations.py +9 -681
  6. starplot/data/db.py +2 -2
  7. starplot/data/dsos.py +11 -28
  8. starplot/data/library/bigsky.0.4.0.stars.mag11.parquet +0 -0
  9. starplot/data/library/sky.db +0 -0
  10. starplot/data/stars.py +15 -433
  11. starplot/data/translations.py +161 -0
  12. starplot/geometry.py +52 -6
  13. starplot/horizon.py +18 -12
  14. starplot/map.py +1 -5
  15. starplot/mixins.py +283 -0
  16. starplot/models/__init__.py +19 -7
  17. starplot/models/base.py +1 -1
  18. starplot/models/comet.py +332 -0
  19. starplot/models/constellation.py +10 -0
  20. starplot/models/dso.py +24 -0
  21. starplot/{optics.py → models/optics.py} +4 -4
  22. starplot/models/satellite.py +158 -0
  23. starplot/models/star.py +10 -0
  24. starplot/optic.py +24 -13
  25. starplot/plotters/__init__.py +1 -0
  26. starplot/plotters/arrow.py +162 -0
  27. starplot/plotters/constellations.py +34 -56
  28. starplot/plotters/dsos.py +8 -14
  29. starplot/plotters/experimental.py +560 -8
  30. starplot/plotters/legend.py +5 -0
  31. starplot/plotters/stars.py +7 -16
  32. starplot/styles/base.py +20 -1
  33. starplot/styles/extensions.py +10 -1
  34. starplot/zenith.py +4 -1
  35. {starplot-0.16.1.dist-info → starplot-0.17.0.dist-info}/METADATA +20 -17
  36. {starplot-0.16.1.dist-info → starplot-0.17.0.dist-info}/RECORD +40 -36
  37. /starplot/{observer.py → models/observer.py} +0 -0
  38. {starplot-0.16.1.dist-info → starplot-0.17.0.dist-info}/WHEEL +0 -0
  39. {starplot-0.16.1.dist-info → starplot-0.17.0.dist-info}/entry_points.txt +0 -0
  40. {starplot-0.16.1.dist-info → starplot-0.17.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,678 +1,14 @@
1
1
  from functools import cache
2
2
 
3
- import ibis
4
- from ibis import _
3
+ from ibis import _, row_number
5
4
 
5
+ from starplot.config import settings
6
6
  from starplot.data import db
7
-
8
-
9
- """
10
- Dictionary of properties for each constellation
11
-
12
- Keys: Constellation's 3-letter IAU abbreviation
13
- Value: Tuple of full name (with newlines), right ascension (RA), and declination (DEC)
14
-
15
- The RA/DEC for each constellation is the initial position of the label (to avoid overlapping),
16
- but this position could change after adjusting all labels together before the final plot is saved.
17
- """
18
- properties = {
19
- "And": ("Andromeda", 0.93, 43.57),
20
- "Ant": ("Antlia", 10.57, -35.71),
21
- "Aps": ("Apus", 15.95, -78.42),
22
- "Aql": ("Aquila", 19.25, -0.5),
23
- "Aqr": ("Aquarius", 22.52, -8.17),
24
- "Ara": ("Ara", 17.34, -55.03),
25
- "Ari": ("Aries", 2.68, 22.56),
26
- "Aur": ("Auriga", 5.43, 41.15),
27
- "Boo": ("Bootes", 14.52, 35.68),
28
- "CMa": ("Canis Major", 6.95, -23.18),
29
- "CMi": ("Canis\nMinor", 7.86, 6.83),
30
- "CVn": ("Canes\nVenatici", 12.73, 36.42),
31
- "Cae": ("Caelum", 4.82, -38.16),
32
- "Cam": ("Camelopardalis", 5.13, 66.24),
33
- "Cap": ("Capricornus", 21.1, -19.05),
34
- "Car": ("Carina", 9.7, -61.11),
35
- "Cas": ("Cassiopeia", 0.37, 60.52),
36
- "Cen": ("Centaurus", 13.82, -45.72),
37
- "Cep": ("Cepheus", 21.92, 65.42),
38
- "Cet": ("Cetus", 2.01, -3.02),
39
- "Cha": ("Chamaeleon", 10.79, -78.72),
40
- "Cir": ("Circinus", 15.0, -61.89),
41
- "Cnc": ("Cancer", 8.68, 18.57),
42
- "Col": ("Columba", 5.92, -39.28),
43
- "Com": ("Coma\nBerenices", 13.08, 22.7),
44
- "CrA": ("Corona\nAustralis", 19.14, -38.7),
45
- "CrB": ("Corona\nBorealis", 16.35, 27.64),
46
- "Crt": ("Crater", 11.86, -14.29),
47
- "Cru": ("Crux", 12.62, -61.39),
48
- "Crv": ("Corvus", 12.38, -20.02),
49
- "Cyg": ("Cygnus", 20.52, 32.64),
50
- "Del": ("Delphinus", 20.67, 14.6),
51
- "Dor": ("Dorado", 5.19, -59.22),
52
- "Dra": ("Draco", 16.35, 63.07),
53
- "Equ": ("Equuleus", 21.25, 7.63),
54
- "Eri": ("Eridanus", 3.62, -24.61),
55
- "For": ("Fornax", 3.01, -30.7),
56
- "Gem": ("Gemini", 7.07, 23.87),
57
- "Gru": ("Grus", 22.36, -44.26),
58
- "Her": ("Hercules", 16.88, 34.86),
59
- "Hor": ("Horologium", 3.06, -51.99),
60
- "Hya": ("Hydra", 10.23, -9.93),
61
- "Hyi": ("Hydrus", 2.14, -70.43),
62
- "Ind": ("Indus", 21.11, -53.22),
63
- "LMi": ("Leo Minor", 10.3, 35.27),
64
- "Lac": ("Lacerta", 22.21, 41.4),
65
- "Leo": ("Leo", 10.93, 18.13),
66
- "Lep": ("Lepus", 5.61, -17.76),
67
- "Lib": ("Libra", 15.34, -18.19),
68
- "Lup": ("Lupus", 15.62, -43.57),
69
- "Lyn": ("Lynx", 7.12, 53.08),
70
- "Lyr": ("Lyra", 18.82, 30.63),
71
- "Men": ("Mensa", 6.17, -74.75),
72
- "Mic": ("Microscopium", 20.83, -33.78),
73
- "Mon": ("Monoceros", 6.81, 0.93),
74
- "Mus": ("Musca", 12.5, -69.27),
75
- "Nor": ("Norma", 16.24, -48.03),
76
- "Oct": ("Octans", 19.64, -80.81),
77
- "Oph": ("Ophiuchus", 17.42, -1.48),
78
- "Ori": ("Orion", 5.45, 7.13),
79
- "Pav": ("Pavo", 19.29, -65.19),
80
- "Peg": ("Pegasus", 22.93, 16.95),
81
- "Per": ("Perseus", 3.53, 45.68),
82
- "Phe": ("Phoenix", 0.87, -47.82),
83
- "Pic": ("Pictor", 6.32, -59.05),
84
- "PsA": ("Piscis Austrinus", 22.46, -31.42),
85
- "Psc": ("Pisces", 1.28, 12.56),
86
- "Pup": ("Puppis", 7.68, -32.69),
87
- "Pyx": ("Pyxis", 8.48, -36.17),
88
- "Ret": ("Reticulum", 4.06, -62.0),
89
- "Scl": ("Sculptor", 0.33, -32.01),
90
- "Sco": ("Scorpius", 16.9, -33.55),
91
- "Sct": ("Scutum", 18.54, -12.35),
92
- "Ser1": ("Serpens\nCaput", 16.45, 3.59),
93
- "Ser2": ("Serpens\nCauda", 18.2, -7.29),
94
- "Sex": ("Sextans", 10.55, -4.24),
95
- "Sge": ("Sagitta", 19.74, 14.92),
96
- "Sgr": ("Sagittarius", 18.81, -26.05),
97
- "Tau": ("Taurus", 4.31, 15.24),
98
- "Tel": ("Telescopium", 18.32, -45.96),
99
- "TrA": ("Triangulum Australe", 15.91, -66.86),
100
- "Tri": ("Triangulum", 2.11, 32.8),
101
- "Tuc": ("Tucana", 23.84, -64.81),
102
- "UMa": ("Ursa Major", 10.87, 51.95),
103
- "UMi": ("Ursa Minor", 16.25, 83.28),
104
- "Vel": ("Vela", 9.49, -48.38),
105
- "Vir": ("Virgo", 13.67, 1.02),
106
- "Vol": ("Volans", 8.01, -67.92),
107
- "Vul": ("Vulpecula", 20.13, 22.21),
108
- }
109
- CONSTELLATIONS = {k.lower(): v for k, v in properties.items()}
110
-
111
- CONSTELLATIONS_FULL_NAMES = {k.lower(): v[0].upper() for k, v in properties.items()}
112
- """Constellation full names"""
113
-
114
- CONSTELLATIONS_ABBREVIATIONS = {k.lower(): k.upper() for k in properties.keys()}
115
- """Constellation 3-letter abbreviations"""
116
-
117
- CONSTELLATION_HIP_IDS = {
118
- "and": {
119
- 2912,
120
- 1473,
121
- 7607,
122
- 677,
123
- 116805,
124
- 5447,
125
- 9640,
126
- 3881,
127
- 116584,
128
- 3693,
129
- 4463,
130
- 3031,
131
- 3092,
132
- 4436,
133
- 116631,
134
- 5434,
135
- 113726,
136
- },
137
- "ant": {46515, 51172, 53502},
138
- "aps": {81065, 72370, 81852, 80047},
139
- "aql": {
140
- 97804,
141
- 95501,
142
- 93805,
143
- 97649,
144
- 99473,
145
- 93747,
146
- 98036,
147
- 96468,
148
- 93429,
149
- 93244,
150
- 97278,
151
- },
152
- "aqr": {
153
- 112961,
154
- 114724,
155
- 114341,
156
- 106278,
157
- 111497,
158
- 112716,
159
- 115438,
160
- 110960,
161
- 110672,
162
- 109074,
163
- 109139,
164
- 110003,
165
- 113136,
166
- 115033,
167
- 102618,
168
- 110395,
169
- },
170
- "ara": {85792, 83081, 88714, 85258, 83153, 85267, 82363, 85727},
171
- "ari": {8832, 13209, 9884, 8903},
172
- "aur": {24608, 28358, 23015, 28360, 25428, 23767, 23416, 28380, 23453},
173
- "boo": {
174
- 70497,
175
- 71075,
176
- 69732,
177
- 69673,
178
- 74666,
179
- 72105,
180
- 69483,
181
- 71053,
182
- 67275,
183
- 73555,
184
- 71795,
185
- 67927,
186
- },
187
- "cae": {21770, 23595, 21060, 21861},
188
- "cam": {23040, 23522, 16228, 17959, 29997, 17884, 33694, 22783},
189
- "cap": {100064, 102978, 106723, 107556, 106985, 105881, 104139, 102485, 100345},
190
- "car": {
191
- 54463,
192
- 42913,
193
- 52419,
194
- 50371,
195
- 53253,
196
- 30438,
197
- 38827,
198
- 41037,
199
- 39953,
200
- 50099,
201
- 45556,
202
- 45238,
203
- 51576,
204
- 54301,
205
- 54751,
206
- },
207
- "cas": {746, 3179, 4427, 8886, 6686},
208
- "cen": {
209
- 55425,
210
- 71683,
211
- 67464,
212
- 65936,
213
- 68245,
214
- 60823,
215
- 68002,
216
- 56243,
217
- 71352,
218
- 59449,
219
- 68282,
220
- 59196,
221
- 68933,
222
- 70090,
223
- 65109,
224
- 61789,
225
- 68702,
226
- 66657,
227
- 61932,
228
- 73334,
229
- 68862,
230
- },
231
- "cep": {
232
- 109857,
233
- 101093,
234
- 105199,
235
- 106032,
236
- 110991,
237
- 112724,
238
- 109492,
239
- 102422,
240
- 116727,
241
- 107259,
242
- },
243
- "cet": {
244
- 13954,
245
- 12706,
246
- 12387,
247
- 8645,
248
- 8102,
249
- 6537,
250
- 10826,
251
- 5364,
252
- 14135,
253
- 1562,
254
- 3419,
255
- 11484,
256
- 12828,
257
- },
258
- "cha": {60000, 58484, 52633, 40702, 51839},
259
- "cir": {74824, 75323, 71908},
260
- "cma": {33152, 35904, 33347, 31592, 33160, 33579, 34444, 30324, 34045, 32349},
261
- "cmi": {36188, 37279},
262
- "cnc": {44066, 40526, 42806, 42911, 43103},
263
- "col": {25859, 30277, 28199, 28328, 26634, 27628},
264
- "com": {64241, 64394, 60742},
265
- "cra": {93825, 94114, 90982, 94160, 94005},
266
- "crb": {77512, 76267, 75695, 78159, 76952, 78493, 76127},
267
- "crt": {57283, 55687, 56633, 53740, 58188, 55282, 55705, 54682},
268
- "cru": {62434, 59747, 61084, 60718},
269
- "crv": {60965, 61359, 59316, 59803, 59199},
270
- "cvn": {63125, 61317},
271
- "cyg": {100453, 99848, 95947, 97165, 95853, 102098, 103413, 102488, 94779, 104732},
272
- "del": {102532, 101958, 101769, 102281, 101421},
273
- "dor": {21281, 23693, 27890, 26069, 19893, 27100},
274
- "dra": {
275
- 61281,
276
- 75458,
277
- 87585,
278
- 97433,
279
- 85829,
280
- 85670,
281
- 94376,
282
- 80331,
283
- 89937,
284
- 56211,
285
- 68756,
286
- 89908,
287
- 83895,
288
- 87833,
289
- 78527,
290
- },
291
- "equ": {104521, 104858, 104987},
292
- "eri": {
293
- 21248,
294
- 19587,
295
- 13701,
296
- 11407,
297
- 21393,
298
- 15510,
299
- 13847,
300
- 16537,
301
- 7588,
302
- 18216,
303
- 12843,
304
- 9007,
305
- 20535,
306
- 17593,
307
- 14146,
308
- 23875,
309
- 21444,
310
- 12486,
311
- 20042,
312
- 17874,
313
- 22109,
314
- 17378,
315
- 12770,
316
- 16611,
317
- 16870,
318
- 18543,
319
- 18673,
320
- 15474,
321
- 17651,
322
- 12413,
323
- },
324
- "for": {13147, 9677, 14879},
325
- "gem": {
326
- 31681,
327
- 36962,
328
- 37826,
329
- 30883,
330
- 34693,
331
- 30343,
332
- 34088,
333
- 32362,
334
- 37740,
335
- 36046,
336
- 29655,
337
- 36850,
338
- 35350,
339
- 32246,
340
- 28734,
341
- 33018,
342
- 35550,
343
- },
344
- "gru": {113638, 112623, 109268, 108085, 110997, 109111, 112122},
345
- "her": {
346
- 87808,
347
- 83207,
348
- 86414,
349
- 84379,
350
- 84380,
351
- 81693,
352
- 81833,
353
- 80170,
354
- 87933,
355
- 80816,
356
- 85112,
357
- 85693,
358
- 86974,
359
- 77760,
360
- 80463,
361
- 88794,
362
- 81126,
363
- 81008,
364
- 79992,
365
- 84345,
366
- 79101,
367
- },
368
- "hor": {14240, 12225, 19747, 12484, 12653, 13884},
369
- "hya": {
370
- 56343,
371
- 45336,
372
- 54682,
373
- 68895,
374
- 42402,
375
- 43813,
376
- 42799,
377
- 49841,
378
- 46390,
379
- 64962,
380
- 47431,
381
- 42313,
382
- 52943,
383
- 57936,
384
- 43234,
385
- 48356,
386
- 43109,
387
- 53740,
388
- 49402,
389
- 72571,
390
- 51069,
391
- },
392
- "hyi": {11001, 9236, 2021, 17678},
393
- "ind": {105319, 101772, 108431, 103227, 102333},
394
- "lac": {111104, 111169, 111944, 110538, 111022, 110351, 110609, 109937, 109754},
395
- "leo": {
396
- 57632,
397
- 46146,
398
- 47908,
399
- 49669,
400
- 48455,
401
- 55434,
402
- 54879,
403
- 49583,
404
- 50583,
405
- 54872,
406
- 55642,
407
- 46750,
408
- 50335,
409
- },
410
- "lep": {
411
- 27072,
412
- 25985,
413
- 23685,
414
- 25606,
415
- 27654,
416
- 28103,
417
- 24327,
418
- 24845,
419
- 28910,
420
- 24305,
421
- 27288,
422
- },
423
- "lib": {74785, 76333, 72622, 73714, 76470, 76600},
424
- "lmi": {51233, 46952, 53229, 51056, 49593},
425
- "lup": {75264, 77634, 75141, 76297, 75177, 78384, 71860, 73273, 74395},
426
- "lyn": {45860, 33449, 30060, 36145, 41075, 45688, 44700, 44248},
427
- "lyr": {91971, 92420, 93194, 91919, 92791, 91262},
428
- "men": {23467, 29271},
429
- "mic": {103738, 105140, 105382, 102831},
430
- "mon": {32578, 37447, 31978, 31216, 34769, 30419, 30867, 29651, 39863},
431
- "mus": {61199, 61585, 62322, 57363, 59929, 63613},
432
- "nor": {80000, 78914, 80582, 78639},
433
- "oct": {107089, 112405, 70638},
434
- "oph": {
435
- 81377,
436
- 87108,
437
- 79593,
438
- 79882,
439
- 84970,
440
- 84012,
441
- 85423,
442
- 86032,
443
- 88048,
444
- 80473,
445
- 80883,
446
- 80628,
447
- 86742,
448
- 80343,
449
- 83000,
450
- 80569,
451
- 80894,
452
- },
453
- "ori": {
454
- 27913,
455
- 22797,
456
- 22549,
457
- 28716,
458
- 22957,
459
- 22449,
460
- 23607,
461
- 22845,
462
- 25281,
463
- 28614,
464
- 26311,
465
- 25930,
466
- 23123,
467
- 27989,
468
- 26207,
469
- 27366,
470
- 26727,
471
- 22509,
472
- 29038,
473
- 29426,
474
- 24436,
475
- 25336,
476
- },
477
- "pav": {
478
- 92609,
479
- 105858,
480
- 88866,
481
- 99240,
482
- 100751,
483
- 91792,
484
- 86929,
485
- 90098,
486
- 93015,
487
- 102395,
488
- 98495,
489
- },
490
- "peg": {
491
- 109410,
492
- 677,
493
- 113963,
494
- 112748,
495
- 109176,
496
- 1067,
497
- 107315,
498
- 109427,
499
- 112440,
500
- 113881,
501
- 107354,
502
- 112029,
503
- 112158,
504
- },
505
- "per": {
506
- 8068,
507
- 19343,
508
- 14354,
509
- 17448,
510
- 14632,
511
- 18614,
512
- 18246,
513
- 14668,
514
- 17358,
515
- 13268,
516
- 13531,
517
- 19167,
518
- 18532,
519
- 19812,
520
- 20070,
521
- 12777,
522
- 14576,
523
- 15863,
524
- 14328,
525
- },
526
- "phe": {2081, 5348, 7083, 5165, 6867, 765},
527
- "pic": {27321, 27530, 32607},
528
- "psa": {109285, 111954, 112948, 111188, 107380, 113368, 107608, 113246},
529
- "psc": {
530
- 116928,
531
- 116771,
532
- 8198,
533
- 4906,
534
- 3786,
535
- 7884,
536
- 5742,
537
- 9487,
538
- 6193,
539
- 5586,
540
- 115830,
541
- 7097,
542
- 115738,
543
- 114971,
544
- 118268,
545
- },
546
- "pup": {
547
- 35264,
548
- 39429,
549
- 31685,
550
- 30438,
551
- 39757,
552
- 37229,
553
- 37677,
554
- 39953,
555
- 36917,
556
- 38070,
557
- 38170,
558
- },
559
- "pyx": {43409, 42515, 42828, 39429},
560
- "ret": {17440, 19921, 19780, 18597},
561
- "scl": {4577, 117452, 115102, 116231},
562
- "sco": {
563
- 85696,
564
- 78401,
565
- 87073,
566
- 78820,
567
- 85927,
568
- 82729,
569
- 86670,
570
- 84143,
571
- 80112,
572
- 79374,
573
- 81266,
574
- 82514,
575
- 86228,
576
- 78104,
577
- 78265,
578
- 80763,
579
- 82396,
580
- 87261,
581
- },
582
- "sct": {90595, 91117, 91726, 92175},
583
- "ser1": {
584
- 77450,
585
- 77516,
586
- 77070,
587
- 77233,
588
- 76852,
589
- 76276,
590
- 77622,
591
- 78072,
592
- },
593
- "ser2": {86263, 89962, 88048, 92946},
594
- "sex": {51437, 49641, 51362, 48437},
595
- "sge": {98337, 96837, 96757, 97365},
596
- "sgr": {
597
- 90496,
598
- 95168,
599
- 93506,
600
- 93864,
601
- 90185,
602
- 92041,
603
- 89931,
604
- 89642,
605
- 93085,
606
- 93683,
607
- 92855,
608
- 89341,
609
- 88635,
610
- 94141,
611
- },
612
- "tau": {
613
- 18724,
614
- 20455,
615
- 20205,
616
- 21421,
617
- 26451,
618
- 16083,
619
- 25428,
620
- 16852,
621
- 20889,
622
- 18907,
623
- 15900,
624
- 20894,
625
- },
626
- "tel": {89112, 90422, 90568},
627
- "tra": {77952, 82273, 74946, 76440},
628
- "tri": {10064, 8796, 10670},
629
- "tuc": {110130, 118322, 2484, 114996, 110838, 1599},
630
- "uma": {
631
- 46853,
632
- 54539,
633
- 46733,
634
- 58001,
635
- 53910,
636
- 55203,
637
- 54061,
638
- 55219,
639
- 44471,
640
- 57399,
641
- 48319,
642
- 50372,
643
- 44127,
644
- 65378,
645
- 67301,
646
- 41704,
647
- 62956,
648
- 50801,
649
- 59774,
650
- },
651
- "umi": {82080, 79822, 11767, 72607, 75097, 85822, 77055},
652
- "vel": {42913, 48774, 50191, 44816, 39953, 45941, 52727, 46651},
653
- "vir": {
654
- 60129,
655
- 65474,
656
- 58948,
657
- 57380,
658
- 69701,
659
- 68520,
660
- 66249,
661
- 64238,
662
- 63090,
663
- 61941,
664
- 71957,
665
- 63608,
666
- 72220,
667
- 57757,
668
- },
669
- "vol": {41312, 34481, 39794, 35228, 44382},
670
- "vul": {95771, 97886},
671
- }
7
+ from starplot.data.translations import language_name_column
672
8
 
673
9
 
674
10
  @cache
675
- def table():
11
+ def table(language):
676
12
  con = db.connect()
677
13
  c = con.table("constellations")
678
14
 
@@ -681,14 +17,15 @@ def table():
681
17
  dec=_.center_dec,
682
18
  constellation_id=_.iau_id,
683
19
  boundary=_.geometry,
684
- rowid=ibis.row_number(),
685
- sk=ibis.row_number(),
20
+ name=getattr(c, language_name_column(language)),
21
+ rowid=row_number(),
22
+ sk=row_number(),
686
23
  )
687
24
 
688
25
 
689
26
  def load(extent=None, filters=None, sql=None):
690
27
  filters = filters or []
691
- c = table()
28
+ c = table(language=settings.language)
692
29
 
693
30
  if extent:
694
31
  filters.append(_.geometry.intersects(extent))
@@ -712,7 +49,7 @@ def load_borders(extent=None, filters=None):
712
49
  # ra=_.center_ra,
713
50
  # dec=_.center_dec,
714
51
  # constellation_id=_.iau_id,
715
- rowid=ibis.row_number(),
52
+ rowid=row_number(),
716
53
  # boundary=_.geometry,
717
54
  )
718
55
 
@@ -723,12 +60,3 @@ def load_borders(extent=None, filters=None):
723
60
  return c.filter(*filters)
724
61
 
725
62
  return c
726
-
727
-
728
- def get(constellation_id: str):
729
- return CONSTELLATIONS.get(constellation_id)
730
-
731
-
732
- def iterator():
733
- for c in CONSTELLATIONS.keys():
734
- yield c