citrascope 0.7.0__py3-none-any.whl → 0.8.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.
Files changed (44) hide show
  1. citrascope/api/abstract_api_client.py +14 -0
  2. citrascope/api/citra_api_client.py +41 -0
  3. citrascope/citra_scope_daemon.py +75 -0
  4. citrascope/hardware/abstract_astro_hardware_adapter.py +80 -2
  5. citrascope/hardware/adapter_registry.py +10 -3
  6. citrascope/hardware/devices/__init__.py +17 -0
  7. citrascope/hardware/devices/abstract_hardware_device.py +79 -0
  8. citrascope/hardware/devices/camera/__init__.py +13 -0
  9. citrascope/hardware/devices/camera/abstract_camera.py +102 -0
  10. citrascope/hardware/devices/camera/rpi_hq_camera.py +353 -0
  11. citrascope/hardware/devices/camera/usb_camera.py +402 -0
  12. citrascope/hardware/devices/camera/ximea_camera.py +744 -0
  13. citrascope/hardware/devices/device_registry.py +273 -0
  14. citrascope/hardware/devices/filter_wheel/__init__.py +7 -0
  15. citrascope/hardware/devices/filter_wheel/abstract_filter_wheel.py +73 -0
  16. citrascope/hardware/devices/focuser/__init__.py +7 -0
  17. citrascope/hardware/devices/focuser/abstract_focuser.py +78 -0
  18. citrascope/hardware/devices/mount/__init__.py +7 -0
  19. citrascope/hardware/devices/mount/abstract_mount.py +115 -0
  20. citrascope/hardware/direct_hardware_adapter.py +787 -0
  21. citrascope/hardware/filter_sync.py +94 -0
  22. citrascope/hardware/indi_adapter.py +6 -2
  23. citrascope/hardware/kstars_dbus_adapter.py +46 -37
  24. citrascope/hardware/nina_adv_http_adapter.py +13 -11
  25. citrascope/settings/citrascope_settings.py +6 -0
  26. citrascope/tasks/runner.py +2 -0
  27. citrascope/tasks/scope/static_telescope_task.py +17 -12
  28. citrascope/tasks/task.py +3 -0
  29. citrascope/time/__init__.py +13 -0
  30. citrascope/time/time_health.py +96 -0
  31. citrascope/time/time_monitor.py +164 -0
  32. citrascope/time/time_sources.py +62 -0
  33. citrascope/web/app.py +229 -51
  34. citrascope/web/static/app.js +296 -36
  35. citrascope/web/static/config.js +216 -81
  36. citrascope/web/static/filters.js +55 -0
  37. citrascope/web/static/style.css +39 -0
  38. citrascope/web/templates/dashboard.html +114 -9
  39. {citrascope-0.7.0.dist-info → citrascope-0.8.0.dist-info}/METADATA +17 -1
  40. citrascope-0.8.0.dist-info/RECORD +62 -0
  41. citrascope-0.7.0.dist-info/RECORD +0 -41
  42. {citrascope-0.7.0.dist-info → citrascope-0.8.0.dist-info}/WHEEL +0 -0
  43. {citrascope-0.7.0.dist-info → citrascope-0.8.0.dist-info}/entry_points.txt +0 -0
  44. {citrascope-0.7.0.dist-info → citrascope-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -67,17 +67,51 @@
67
67
  </div>
68
68
  <div class="row mb-2">
69
69
  <div class="col-6 fw-semibold">Camera</div>
70
- <div class="col-6" id="cameraConnected"><span class="badge rounded-pill bg-secondary">Unknown</span></div>
70
+ <div class="col-6 d-flex align-items-center gap-2" id="cameraConnected"><span class="badge rounded-pill bg-secondary">Unknown</span></div>
71
+ </div>
72
+ <div class="row mb-2">
73
+ <div class="col-6 fw-semibold">
74
+ <span data-bs-toggle="tooltip" data-bs-theme="dark" data-bs-placement="top" title="Controls whether the Citra.space server will automatically assign new observation tasks to this telescope">
75
+ Automated Scheduling
76
+ </span>
77
+ </div>
78
+ <div class="col-6 d-flex align-items-center gap-2">
79
+ <span id="automatedSchedulingStatus"><span class="badge rounded-pill bg-secondary">Unknown</span></span>
80
+ <div class="form-check form-switch">
81
+ <input class="form-check-input" type="checkbox" id="toggleAutomatedSchedulingSwitch" title="Toggle automated scheduling">
82
+ <label class="form-check-label visually-hidden" for="toggleAutomatedSchedulingSwitch">Automated Scheduling</label>
83
+ </div>
84
+ </div>
71
85
  </div>
72
86
  <div class="row">
73
- <div class="col-6 fw-semibold">Task Processing</div>
87
+ <div class="col-6 fw-semibold">
88
+ <span data-bs-toggle="tooltip" data-bs-theme="dark" data-bs-placement="top" title="Controls whether this local daemon will execute tasks from its queue. Pause to safely stop observations without canceling scheduled tasks">
89
+ Task Processing
90
+ </span>
91
+ </div>
74
92
  <div class="col-6 d-flex align-items-center gap-2">
75
93
  <span id="processingStatus"><span class="badge rounded-pill bg-success">Active</span></span>
76
- <button id="toggleProcessingButton" class="btn btn-sm btn-secondary" title="Pause task processing">
77
- <span id="processingButtonIcon">Pause</span>
78
- </button>
94
+ <div class="form-check form-switch">
95
+ <input class="form-check-input" type="checkbox" id="toggleProcessingSwitch" checked title="Toggle task processing">
96
+ <label class="form-check-label visually-hidden" for="toggleProcessingSwitch">Task Processing</label>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ <div class="row">
101
+ <div class="col-6 fw-semibold">
102
+ <span data-bs-toggle="tooltip" data-bs-theme="dark" data-bs-placement="top" title="System clock synchronization status. Accurate time is critical for astronomical observations">
103
+ Time Sync
104
+ </span>
105
+ </div>
106
+ <div class="col-6 d-flex align-items-center gap-2">
107
+ <span id="timeSyncStatus"><span class="badge rounded-pill bg-secondary">Unknown</span></span>
108
+ <small class="text-muted" id="timeOffsetDisplay">-</small>
79
109
  </div>
80
110
  </div>
111
+ <!-- Missing Dependencies Alert -->
112
+ <div id="missingDependenciesAlert" class="alert alert-warning mt-3 mb-0" role="alert" style="display: none;">
113
+ <!-- Populated by JavaScript -->
114
+ </div>
81
115
  </div>
82
116
  </div>
83
117
  </div>
@@ -92,12 +126,12 @@
92
126
  <div class="col-6" id="hardwareAdapter">-</div>
93
127
  </div>
94
128
  <div class="row mb-2">
95
- <div class="col-6 fw-semibold">Right Ascension</div>
96
- <div class="col-6" id="telescopeRA">-</div>
129
+ <div class="col-6 fw-semibold">RA / DEC</div>
130
+ <div class="col-6" id="telescopeCoords">-</div>
97
131
  </div>
98
132
  <div class="row mb-2">
99
- <div class="col-6 fw-semibold">Declination</div>
100
- <div class="col-6" id="telescopeDEC">-</div>
133
+ <div class="col-6 fw-semibold">Enabled Filters</div>
134
+ <div class="col-6" id="enabledFilters">-</div>
101
135
  </div>
102
136
  <div class="row">
103
137
  <div class="col-6 fw-semibold">Ground Station</div>
@@ -236,6 +270,11 @@
236
270
  <!-- Dynamic Adapter Settings Container -->
237
271
  <div id="adapter-settings-container"></div>
238
272
 
273
+ <!-- Missing Dependencies Alert (Config Page) -->
274
+ <div id="configMissingDependenciesAlert" class="alert alert-warning mt-3" role="alert" style="display: none;">
275
+ <!-- Populated by JavaScript -->
276
+ </div>
277
+
239
278
  <!-- Filter Configuration Section (shown when adapter supports filters) -->
240
279
  <div id="filterConfigSection" style="display: none; margin-top: 1.5rem;">
241
280
  <hr class="border-secondary">
@@ -306,6 +345,24 @@
306
345
  </div>
307
346
  </div>
308
347
 
348
+ <!-- Time Synchronization Settings Card -->
349
+ <div class="col-12">
350
+ <div class="card bg-dark text-light border-secondary">
351
+ <div class="card-header">
352
+ <h5 class="mb-0">Time Synchronization</h5>
353
+ </div>
354
+ <div class="card-body">
355
+ <div class="row g-3">
356
+ <div class="col-12 col-md-6">
357
+ <label for="time_offset_pause_ms" class="form-label">Pause Threshold (ms)</label>
358
+ <input type="number" class="form-control form-control-sm" id="time_offset_pause_ms" min="1" max="10000" step="1" value="500">
359
+ <small class="text-muted">Clock drift that triggers task pause (NTP-based monitoring)</small>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ </div>
365
+
309
366
  <!-- Logging Settings Card -->
310
367
  <div class="col-12">
311
368
  <div class="card bg-dark text-light border-secondary">
@@ -514,6 +571,54 @@
514
571
  </div>
515
572
  </div>
516
573
 
574
+ <!-- Camera Control Modal -->
575
+ <div class="modal fade" id="cameraControlModal" tabindex="-1" aria-labelledby="cameraControlModalLabel" aria-hidden="true">
576
+ <div class="modal-dialog modal-lg modal-dialog-centered">
577
+ <div class="modal-content bg-dark text-light border-secondary">
578
+ <div class="modal-header border-secondary">
579
+ <h5 class="modal-title" id="cameraControlModalLabel"><i class="bi bi-camera"></i> Camera Control</h5>
580
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
581
+ </div>
582
+ <div class="modal-body">
583
+ <div class="row g-3">
584
+ <div class="col-12">
585
+ <label for="exposureDuration" class="form-label">Exposure Duration (seconds)</label>
586
+ <input type="number" id="exposureDuration" class="form-control" value="0.1" min="0.001" max="300" step="0.001">
587
+ <small class="text-muted">Range: 0.001 to 300 seconds</small>
588
+ </div>
589
+ </div>
590
+
591
+ <!-- Capture Result Area -->
592
+ <div id="captureResult" class="mt-3" style="display: none;">
593
+ <hr class="border-secondary">
594
+ <h6>Latest Capture</h6>
595
+ <div class="alert alert-success mb-2">
596
+ <strong>Filename:</strong> <span id="captureFilename"></span><br>
597
+ <strong>Format:</strong> <span id="captureFormat"></span>
598
+ </div>
599
+ </div>
600
+
601
+ <!-- Images Directory -->
602
+ <div class="mt-3">
603
+ <hr class="border-secondary">
604
+ <h6>Images Directory</h6>
605
+ <p class="text-muted small mb-1">All captured images are saved to:</p>
606
+ <p><a href="#" id="imagesDirLink" class="text-break"></a></p>
607
+ </div>
608
+ </div>
609
+ <div class="modal-footer border-secondary">
610
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
611
+ <button type="button" class="btn btn-primary" id="captureButton" onclick="captureImage()">
612
+ <span id="captureButtonText">Capture</span>
613
+ <span id="captureButtonSpinner" class="spinner-border spinner-border-sm ms-2" role="status" style="display: none;">
614
+ <span class="visually-hidden">Capturing...</span>
615
+ </span>
616
+ </button>
617
+ </div>
618
+ </div>
619
+ </div>
620
+ </div>
621
+
517
622
  <!-- Toast Container for Notifications -->
518
623
  <div class="toast-container position-fixed top-0 end-0 p-3" style="z-index: 9999;" id="toastContainer"></div>
519
624
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: citrascope
3
- Version: 0.7.0
3
+ Version: 0.8.0
4
4
  Summary: Remotely control a telescope while it polls for tasks, collects and edge processes data, and delivers results and data for further processing.
5
5
  Project-URL: Homepage, https://citra.space
6
6
  Project-URL: Documentation, https://docs.citra.space/citrascope/
@@ -25,6 +25,7 @@ Requires-Python: <3.13,>=3.10
25
25
  Requires-Dist: click
26
26
  Requires-Dist: fastapi>=0.104.0
27
27
  Requires-Dist: httpx
28
+ Requires-Dist: ntplib>=0.4.0
28
29
  Requires-Dist: platformdirs>=4.0.0
29
30
  Requires-Dist: python-dateutil
30
31
  Requires-Dist: requests
@@ -36,6 +37,14 @@ Requires-Dist: dbus-python; extra == 'all'
36
37
  Requires-Dist: pixelemon; extra == 'all'
37
38
  Requires-Dist: plotly; extra == 'all'
38
39
  Requires-Dist: pyindi-client; extra == 'all'
40
+ Provides-Extra: all-hardware
41
+ Requires-Dist: cv2-enumerate-cameras>=1.0.0; extra == 'all-hardware'
42
+ Requires-Dist: opencv-python>=4.8.0; extra == 'all-hardware'
43
+ Requires-Dist: picamera2>=0.3.12; extra == 'all-hardware'
44
+ Requires-Dist: pixelemon; extra == 'all-hardware'
45
+ Requires-Dist: plotly; extra == 'all-hardware'
46
+ Requires-Dist: pyindi-client; extra == 'all-hardware'
47
+ Requires-Dist: ximea-api>=1.0.0; extra == 'all-hardware'
39
48
  Provides-Extra: build
40
49
  Requires-Dist: build; extra == 'build'
41
50
  Provides-Extra: deploy
@@ -58,10 +67,17 @@ Requires-Dist: plotly; extra == 'indi'
58
67
  Requires-Dist: pyindi-client; extra == 'indi'
59
68
  Provides-Extra: kstars
60
69
  Requires-Dist: dbus-python; extra == 'kstars'
70
+ Provides-Extra: rpi
71
+ Requires-Dist: picamera2>=0.3.12; extra == 'rpi'
61
72
  Provides-Extra: test
62
73
  Requires-Dist: mockito; extra == 'test'
63
74
  Requires-Dist: pytest; extra == 'test'
64
75
  Requires-Dist: pytest-cov; extra == 'test'
76
+ Provides-Extra: usb-camera
77
+ Requires-Dist: cv2-enumerate-cameras>=1.0.0; extra == 'usb-camera'
78
+ Requires-Dist: opencv-python>=4.8.0; extra == 'usb-camera'
79
+ Provides-Extra: ximea
80
+ Requires-Dist: ximea-api>=1.0.0; extra == 'ximea'
65
81
  Description-Content-Type: text/markdown
66
82
 
67
83
  # CitraScope
@@ -0,0 +1,62 @@
1
+ citrascope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ citrascope/__main__.py,sha256=W7uY30MOuIlmhzVEoiZ_6BMmKrsqIvxcAxqw4-pOT3k,596
3
+ citrascope/citra_scope_daemon.py,sha256=VIvRnvrsx1spfefHwTzkaxO7lAiNi0aau1EiDyYI8S4,16050
4
+ citrascope/constants.py,sha256=Mc7SLzCelUMDV96BIwP684fFLGANCOEO_mM3GCeRDVY,968
5
+ citrascope/api/abstract_api_client.py,sha256=GJXpHTQEsE3QRbRjLCj3LkQsxvtPxHggXieQLomAO1o,1012
6
+ citrascope/api/citra_api_client.py,sha256=JOu5uNuBYXizmQZWUo77YNjOdMA_uSc7RA8qzw_4e7M,7570
7
+ citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=vRlBFvGlzgb8AQIEojwGC68KFkhq5sELjZ9XWoOtf5k,14381
8
+ citrascope/hardware/adapter_registry.py,sha256=7Vi6RRxb5ygIJeHXd6objp9h0w96_JKaz2TnADkbv8Y,3597
9
+ citrascope/hardware/direct_hardware_adapter.py,sha256=eKYXQ2fx_RZ3A_b0Zh1SsawFnGHHXiVHTiUjWTPOkmo,29031
10
+ citrascope/hardware/filter_sync.py,sha256=jOo_P78TJC_FYhvm2SHvCAvQoBkVQNBiBx7jUSBdqhg,3463
11
+ citrascope/hardware/indi_adapter.py,sha256=VvlB13-9hk0ytfUjdNTGsLHfUz2q062KPDesBS8qxUQ,30060
12
+ citrascope/hardware/kstars_dbus_adapter.py,sha256=kpP8wC_HDHvPNMkynBiT7KGVGmi5F5_4uCQ7BJrOZHY,43439
13
+ citrascope/hardware/kstars_scheduler_template.esl,sha256=uHbS3Zs1S9_hz8kiMkrkZj5ye0z1T1zsy_8MO4N0D4Y,836
14
+ citrascope/hardware/kstars_sequence_template.esq,sha256=u1fzSGtyq7ybKvZcNRjDtQK7QnrQim-E6qiZyG9P7H0,626
15
+ citrascope/hardware/nina_adv_http_adapter.py,sha256=NZNF-_BMZVNhlOsx4k39v2hrTQWSJ1RTrEIe30rrCOg,28619
16
+ citrascope/hardware/nina_adv_http_survey_template.json,sha256=5y0l0h0rWZK6i6GxfAn-9rx7wA7aN5deAVe7op9RKPo,14480
17
+ citrascope/hardware/devices/__init__.py,sha256=6G9wIiSXDsKxAqW1goP6lWePbYfHpoW8j39OEeDsHqs,576
18
+ citrascope/hardware/devices/abstract_hardware_device.py,sha256=CYaLaOQ7TMjuZMfiYZnnERTuvCl-hSHv45qwDhxhPoo,2118
19
+ citrascope/hardware/devices/device_registry.py,sha256=1_ools6WQrbCtvb-9x6xStyeRnMXRtQ9P3BrhTFG2P4,8818
20
+ citrascope/hardware/devices/camera/__init__.py,sha256=ItA7cymHoMy-vnyk562XOcibLovCI5w4t1jixfzU0Ro,456
21
+ citrascope/hardware/devices/camera/abstract_camera.py,sha256=0s16dl8Pc8b4xYQH-KMJ-zHEwAofrDjk9cbm9ZNQcbQ,2857
22
+ citrascope/hardware/devices/camera/rpi_hq_camera.py,sha256=6mMU2l-GbdYhta6vP2HzF2OYdw2YW0UWqRDlhQtBn3k,11658
23
+ citrascope/hardware/devices/camera/usb_camera.py,sha256=JkyYyZS2esgSkksu56Ro6yDsZi_dP1TWWWd1jy0tvpg,14096
24
+ citrascope/hardware/devices/camera/ximea_camera.py,sha256=TpmQZeNBp4MM7R4icOghdg00IwVh7YTyZGpZ3fdDiBA,30715
25
+ citrascope/hardware/devices/filter_wheel/__init__.py,sha256=CukW3VbU3ttrTcKvVwvGiOrWhIe3fhjhVnMK7DVChK8,174
26
+ citrascope/hardware/devices/filter_wheel/abstract_filter_wheel.py,sha256=iMwZDOmZbjsfjQNSBTaAZCAmY_iO-siIB1o5078h8X4,1822
27
+ citrascope/hardware/devices/focuser/__init__.py,sha256=lPbSW43_gjYU9Q6E1pEHw-dMorA6F4vHms2JbdIZOnA,151
28
+ citrascope/hardware/devices/focuser/abstract_focuser.py,sha256=NfNzSVsqQEWwXVTmUFeTfCzV16jE66s_2TcQECME7lE,1959
29
+ citrascope/hardware/devices/mount/__init__.py,sha256=swyX-IXdZ_4gZa3MMLWgHdu2hTDjjgOkEOdrMdv1-fI,141
30
+ citrascope/hardware/devices/mount/abstract_mount.py,sha256=QKneKhK_YFyIFiEEld2w1O80U9IqjtHMggX30nLEUGw,2790
31
+ citrascope/logging/__init__.py,sha256=YU38HLMWfbXh_H-s7W7Zx2pbCR4f_tRk7z0G8xqz4_o,179
32
+ citrascope/logging/_citrascope_logger.py,sha256=GkqNpFJWiatqrBr8t4o2nHt7V9bBDJ8mysM0F4AXMa8,3479
33
+ citrascope/logging/web_log_handler.py,sha256=d0XQzHJZ5M1v3H351tdkBYg7EOwFzXpp7PA9nYejIV0,2659
34
+ citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ citrascope/settings/citrascope_settings.py,sha256=iClMV57Qd3_fTlC6nagAJg7M635x_Fu1kmhn3FH_o2k,7090
36
+ citrascope/settings/settings_file_manager.py,sha256=Yijb-I9hbbVJ2thkr7OrfkNknSPt1RDpsE7VvqAs0a8,4193
37
+ citrascope/tasks/runner.py,sha256=uEXMP_FSpi3zCqekvWWx4w6vRG-k3LdbfKwT77EsUrA,18292
38
+ citrascope/tasks/task.py,sha256=wK6t5iWhxxB0SC9k2nT_FS0ohBLnimwgBoWdAQQtrgI,1429
39
+ citrascope/tasks/scope/base_telescope_task.py,sha256=wIdyUxplFNhf_YMdCXOK6pG7HF7tZn_id59TvYyWZAY,9674
40
+ citrascope/tasks/scope/static_telescope_task.py,sha256=WYoqCPool2_Sel5VvjEAWWg_ZvytW9Y9wUxLPc6-Ojw,1627
41
+ citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
42
+ citrascope/time/__init__.py,sha256=sN81g6VT2qiyEF6e1RAPba2m0PRdcaSCwNUyx1mMnzQ,363
43
+ citrascope/time/time_health.py,sha256=jRrERYbzqNRzjJejW1Zp04Ka85P3EYZGMOd15bH5KIU,2598
44
+ citrascope/time/time_monitor.py,sha256=GAb6Otc3iwMd_HR7mV6Gxsne3y08wgIu1a5lzc_3KYs,5828
45
+ citrascope/time/time_sources.py,sha256=3oPKV6s44DsVmyRyxyPhRmyr8YTAErMzrmFHe_BT5_U,1739
46
+ citrascope/web/__init__.py,sha256=CgU36fyNSxGXjUy3hsHwx7UxF8UO4Qsb7PjC9-6tRmY,38
47
+ citrascope/web/app.py,sha256=hu2IErgjOAcRyFnIMhFIF50fe-S4eQMzrPJXE8dlqDg,37109
48
+ citrascope/web/server.py,sha256=IJJk4HgEwcsjHercL-Q5z39NmJRbkNk_51HIUKKhtRE,5242
49
+ citrascope/web/static/api.js,sha256=s-b1FIw-pTo3A8kLlLINVqHhIvfHwTWA7cEvz4N8Gqc,1924
50
+ citrascope/web/static/app.js,sha256=kXrPGeO2UqEc2RVTdVw7XTYzIOlSWSasPcvEhuSbo9I,39169
51
+ citrascope/web/static/config.js,sha256=MynZZMoF61UstDZbQ5ctDMmuCugPE7R5WP80IcUmgF0,35730
52
+ citrascope/web/static/filters.js,sha256=a_Ug4potNvcNu1Q-d7eodUdixZuXOIQYVdBOEdqhmn8,1768
53
+ citrascope/web/static/style.css,sha256=AMmdJ3aR7aAst71j7HP41_KiwyjjeqNLu5DsDJ_mahk,3690
54
+ citrascope/web/static/websocket.js,sha256=UITw1DDfehOKpjlltn5MXhewZYGKzPFmaTtMFtC0-Ps,3931
55
+ citrascope/web/static/img/citra.png,sha256=Bq8dPWB6fNz7a_H0FuEtNmZWcPHH2iV2OC-fMg4REbQ,205570
56
+ citrascope/web/static/img/favicon.png,sha256=zrbUlpFXDB_zmsIdhhn8_klnc2Ma3N6Q8ouBMAxFjbM,24873
57
+ citrascope/web/templates/dashboard.html,sha256=Sci5M57E9px-Pquokw5xXvhipBOhaQ2iVo5hb9jgvAw,39877
58
+ citrascope-0.8.0.dist-info/METADATA,sha256=kQPmtCYhE_dYgd3HvEd-51owPjUYBqoyk5HZ81eKGQw,8693
59
+ citrascope-0.8.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
60
+ citrascope-0.8.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
61
+ citrascope-0.8.0.dist-info/licenses/LICENSE,sha256=4B_Ug8tnhTwde7QywOV3HhQcweHJeI0QaGdZfJLxsV8,1068
62
+ citrascope-0.8.0.dist-info/RECORD,,
@@ -1,41 +0,0 @@
1
- citrascope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- citrascope/__main__.py,sha256=W7uY30MOuIlmhzVEoiZ_6BMmKrsqIvxcAxqw4-pOT3k,596
3
- citrascope/citra_scope_daemon.py,sha256=KDj_48zN1SFB-82Amc_IqTnmE_ExV2bRwklQPkAtT8o,12759
4
- citrascope/constants.py,sha256=Mc7SLzCelUMDV96BIwP684fFLGANCOEO_mM3GCeRDVY,968
5
- citrascope/api/abstract_api_client.py,sha256=gjmA9mw1O-TK16nYahOWClAwqPc_L1E3F2llZJeKTPw,624
6
- citrascope/api/citra_api_client.py,sha256=8rpz25Diy8YhuCiQ9HqMi4TIqxAc6BbrvqoFu8u-orQ,6007
7
- citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=S7vBG2cBA-EOR8XC_7H4enR6gTiAgeC-3hjN2T7Voco,10546
8
- citrascope/hardware/adapter_registry.py,sha256=fFIZhXYphZ_p480c6hICpcx9fNOeX-EG2tvLHm372dM,3170
9
- citrascope/hardware/indi_adapter.py,sha256=uNrjkfxD0zjOPfar6J-frb6A87VkEjsL7SD9N9bEsC8,29903
10
- citrascope/hardware/kstars_dbus_adapter.py,sha256=1Al4ZZNHUXyue8qEr0ryrwJ36a2gOC77GiK6pN_0QLc,43059
11
- citrascope/hardware/kstars_scheduler_template.esl,sha256=uHbS3Zs1S9_hz8kiMkrkZj5ye0z1T1zsy_8MO4N0D4Y,836
12
- citrascope/hardware/kstars_sequence_template.esq,sha256=u1fzSGtyq7ybKvZcNRjDtQK7QnrQim-E6qiZyG9P7H0,626
13
- citrascope/hardware/nina_adv_http_adapter.py,sha256=ul2vkoI9RvvWkEH8FGtUkqlAhoKUqSnUySNPz9Xs8Cw,28620
14
- citrascope/hardware/nina_adv_http_survey_template.json,sha256=5y0l0h0rWZK6i6GxfAn-9rx7wA7aN5deAVe7op9RKPo,14480
15
- citrascope/logging/__init__.py,sha256=YU38HLMWfbXh_H-s7W7Zx2pbCR4f_tRk7z0G8xqz4_o,179
16
- citrascope/logging/_citrascope_logger.py,sha256=GkqNpFJWiatqrBr8t4o2nHt7V9bBDJ8mysM0F4AXMa8,3479
17
- citrascope/logging/web_log_handler.py,sha256=d0XQzHJZ5M1v3H351tdkBYg7EOwFzXpp7PA9nYejIV0,2659
18
- citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- citrascope/settings/citrascope_settings.py,sha256=XQUcI1n_8WULtHNNa1lFG1q3Qa1bcNrH4pI9-kKonpY,6698
20
- citrascope/settings/settings_file_manager.py,sha256=Yijb-I9hbbVJ2thkr7OrfkNknSPt1RDpsE7VvqAs0a8,4193
21
- citrascope/tasks/runner.py,sha256=JHGaKPMsioAUB1feyLagDil-Q-XsSKr0xEi49HNeL0E,18099
22
- citrascope/tasks/task.py,sha256=0u0oN56E6KaNz19ba_7WuY43Sk4CTXc8UPT7sdUpRXo,1287
23
- citrascope/tasks/scope/base_telescope_task.py,sha256=wIdyUxplFNhf_YMdCXOK6pG7HF7tZn_id59TvYyWZAY,9674
24
- citrascope/tasks/scope/static_telescope_task.py,sha256=nrRV2M2bUfIwTtZacAmidwj1dlTxyZgTbFEVkpxzL7c,1389
25
- citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
26
- citrascope/web/__init__.py,sha256=CgU36fyNSxGXjUy3hsHwx7UxF8UO4Qsb7PjC9-6tRmY,38
27
- citrascope/web/app.py,sha256=p2Y0yUSghjiLx2B2lZ_4R-E12OQDNObDyKIANznUsWw,28564
28
- citrascope/web/server.py,sha256=IJJk4HgEwcsjHercL-Q5z39NmJRbkNk_51HIUKKhtRE,5242
29
- citrascope/web/static/api.js,sha256=s-b1FIw-pTo3A8kLlLINVqHhIvfHwTWA7cEvz4N8Gqc,1924
30
- citrascope/web/static/app.js,sha256=M54WudBqkXqFFvm0mcbDZOvgkClFetyLZUxW-5KY_aI,29440
31
- citrascope/web/static/config.js,sha256=AcCt_WpsuXVXBLR7Zgeva47CJRf3XB6beQq27WG2VZA,29973
32
- citrascope/web/static/style.css,sha256=z5D4FHWm-JBb0Cu0HWPD_4V7qnXNBuOllrPJD9nHI38,2961
33
- citrascope/web/static/websocket.js,sha256=UITw1DDfehOKpjlltn5MXhewZYGKzPFmaTtMFtC0-Ps,3931
34
- citrascope/web/static/img/citra.png,sha256=Bq8dPWB6fNz7a_H0FuEtNmZWcPHH2iV2OC-fMg4REbQ,205570
35
- citrascope/web/static/img/favicon.png,sha256=zrbUlpFXDB_zmsIdhhn8_klnc2Ma3N6Q8ouBMAxFjbM,24873
36
- citrascope/web/templates/dashboard.html,sha256=-BsbkN4S015n60TWv8V_CqX3KRQj9Gfa8Q9S3ms4DRw,32774
37
- citrascope-0.7.0.dist-info/METADATA,sha256=jaPQLyrnZkNgfWLH9rrpTfjNHyS7Pk_OFSW0L2L6Y2M,7945
38
- citrascope-0.7.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
39
- citrascope-0.7.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
40
- citrascope-0.7.0.dist-info/licenses/LICENSE,sha256=4B_Ug8tnhTwde7QywOV3HhQcweHJeI0QaGdZfJLxsV8,1068
41
- citrascope-0.7.0.dist-info/RECORD,,