citrascope 0.1.0__py3-none-any.whl → 0.4.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.
- citrascope/__main__.py +13 -13
- citrascope/api/abstract_api_client.py +7 -0
- citrascope/api/citra_api_client.py +43 -2
- citrascope/citra_scope_daemon.py +205 -61
- citrascope/constants.py +23 -0
- citrascope/hardware/abstract_astro_hardware_adapter.py +70 -2
- citrascope/hardware/adapter_registry.py +94 -0
- citrascope/hardware/indi_adapter.py +456 -16
- citrascope/hardware/kstars_dbus_adapter.py +179 -0
- citrascope/hardware/nina_adv_http_adapter.py +593 -0
- citrascope/hardware/nina_adv_http_survey_template.json +328 -0
- citrascope/logging/__init__.py +2 -1
- citrascope/logging/_citrascope_logger.py +80 -1
- citrascope/logging/web_log_handler.py +75 -0
- citrascope/settings/citrascope_settings.py +140 -0
- citrascope/settings/settings_file_manager.py +126 -0
- citrascope/tasks/runner.py +129 -29
- citrascope/tasks/scope/base_telescope_task.py +25 -10
- citrascope/tasks/scope/static_telescope_task.py +11 -3
- citrascope/web/__init__.py +1 -0
- citrascope/web/app.py +479 -0
- citrascope/web/server.py +132 -0
- citrascope/web/static/api.js +82 -0
- citrascope/web/static/app.js +502 -0
- citrascope/web/static/config.js +438 -0
- citrascope/web/static/img/citra.png +0 -0
- citrascope/web/static/img/favicon.png +0 -0
- citrascope/web/static/style.css +152 -0
- citrascope/web/static/websocket.js +127 -0
- citrascope/web/templates/dashboard.html +407 -0
- {citrascope-0.1.0.dist-info → citrascope-0.4.0.dist-info}/METADATA +87 -47
- citrascope-0.4.0.dist-info/RECORD +38 -0
- {citrascope-0.1.0.dist-info → citrascope-0.4.0.dist-info}/WHEEL +1 -1
- citrascope/settings/_citrascope_settings.py +0 -42
- citrascope-0.1.0.dist-info/RECORD +0 -21
- docs/index.md +0 -47
- {citrascope-0.1.0.dist-info → citrascope-0.4.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: citrascope
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
-
Author-email:
|
|
5
|
+
Author-email: Patrick McDavid <patrick@citra.space>
|
|
6
6
|
License-Expression: MIT
|
|
7
|
-
Requires-Python:
|
|
7
|
+
Requires-Python: <3.13,>=3.10
|
|
8
8
|
Requires-Dist: click
|
|
9
|
+
Requires-Dist: fastapi>=0.104.0
|
|
9
10
|
Requires-Dist: httpx
|
|
10
|
-
Requires-Dist:
|
|
11
|
-
Requires-Dist: pydantic-settings
|
|
12
|
-
Requires-Dist: pyindi-client
|
|
13
|
-
Requires-Dist: pytest-cov
|
|
11
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
14
12
|
Requires-Dist: python-dateutil
|
|
15
|
-
Requires-Dist: python-json-logger
|
|
16
13
|
Requires-Dist: requests
|
|
17
14
|
Requires-Dist: skyfield
|
|
18
|
-
Requires-Dist:
|
|
15
|
+
Requires-Dist: uvicorn[standard]>=0.24.0
|
|
16
|
+
Requires-Dist: websockets>=12.0
|
|
17
|
+
Provides-Extra: all
|
|
18
|
+
Requires-Dist: dbus-python; extra == 'all'
|
|
19
|
+
Requires-Dist: pixelemon; extra == 'all'
|
|
20
|
+
Requires-Dist: plotly; extra == 'all'
|
|
21
|
+
Requires-Dist: pyindi-client; extra == 'all'
|
|
19
22
|
Provides-Extra: build
|
|
20
23
|
Requires-Dist: build; extra == 'build'
|
|
21
24
|
Provides-Extra: deploy
|
|
22
25
|
Requires-Dist: twine; extra == 'deploy'
|
|
23
26
|
Provides-Extra: dev
|
|
24
27
|
Requires-Dist: black; extra == 'dev'
|
|
28
|
+
Requires-Dist: bump-my-version; extra == 'dev'
|
|
25
29
|
Requires-Dist: flake8; extra == 'dev'
|
|
26
30
|
Requires-Dist: flake8-pytest-style; extra == 'dev'
|
|
27
31
|
Requires-Dist: isort; extra == 'dev'
|
|
@@ -30,10 +34,13 @@ Requires-Dist: mypy; extra == 'dev'
|
|
|
30
34
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
31
35
|
Requires-Dist: pytest; extra == 'dev'
|
|
32
36
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: types-python-dateutil; extra == 'dev'
|
|
38
|
+
Provides-Extra: indi
|
|
39
|
+
Requires-Dist: pixelemon; extra == 'indi'
|
|
40
|
+
Requires-Dist: plotly; extra == 'indi'
|
|
41
|
+
Requires-Dist: pyindi-client; extra == 'indi'
|
|
42
|
+
Provides-Extra: kstars
|
|
43
|
+
Requires-Dist: dbus-python; extra == 'kstars'
|
|
37
44
|
Provides-Extra: test
|
|
38
45
|
Requires-Dist: mockito; extra == 'test'
|
|
39
46
|
Requires-Dist: pytest; extra == 'test'
|
|
@@ -41,68 +48,78 @@ Requires-Dist: pytest-cov; extra == 'test'
|
|
|
41
48
|
Description-Content-Type: text/markdown
|
|
42
49
|
|
|
43
50
|
# CitraScope
|
|
44
|
-
[](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml) [](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml) [](https://github.com/citra-space/citrascope/actions/workflows/pypi-publish.yml)
|
|
45
52
|
|
|
46
53
|
Remotely control a telescope while it polls for tasks, collects observations, and delivers data for further processing.
|
|
47
54
|
|
|
48
55
|
## Features
|
|
49
|
-
|
|
56
|
+
- Offers a web UI to configure hardware and connect to Citra.space's api
|
|
50
57
|
- Connects to Citra.space's API and identifies itself as an online telescope
|
|
51
|
-
- Connects to configured
|
|
58
|
+
- Connects to configured telescope and camera hardware
|
|
52
59
|
- Acts as a task daemon carrying out and remitting photography tasks
|
|
53
60
|
|
|
61
|
+
## Documentation
|
|
62
|
+
|
|
63
|
+
Full documentation is available at [docs.citra.space](https://docs.citra.space/citrascope/).
|
|
64
|
+
|
|
65
|
+
Documentation source is maintained in the [citra-space/docs](https://github.com/citra-space/docs) repository.
|
|
66
|
+
|
|
54
67
|
## Installation
|
|
55
68
|
|
|
56
|
-
|
|
69
|
+
**Important:** CitraScope requires Python 3.10, 3.11, or 3.12.
|
|
70
|
+
|
|
71
|
+
### Check Your Python Version
|
|
57
72
|
|
|
58
73
|
```sh
|
|
59
|
-
|
|
74
|
+
python3 --version
|
|
60
75
|
```
|
|
61
76
|
|
|
62
|
-
|
|
77
|
+
If you don't have a compatible version, install one with [pyenv](https://github.com/pyenv/pyenv):
|
|
63
78
|
|
|
64
79
|
```sh
|
|
65
|
-
|
|
80
|
+
pyenv install 3.12.0
|
|
81
|
+
pyenv local 3.12.0 # Sets Python 3.12.0 for the current directory
|
|
66
82
|
```
|
|
67
83
|
|
|
68
|
-
|
|
84
|
+
### Install CitraScope
|
|
69
85
|
|
|
70
|
-
|
|
86
|
+
**Recommended: Using pip in a virtual environment**
|
|
71
87
|
|
|
72
88
|
```sh
|
|
73
|
-
citrascope
|
|
89
|
+
python3 -m venv citrascope-env
|
|
90
|
+
source citrascope-env/bin/activate # On Windows: citrascope-env\Scripts\activate
|
|
91
|
+
pip install citrascope
|
|
74
92
|
```
|
|
75
93
|
|
|
76
|
-
|
|
94
|
+
### Optional Dependencies
|
|
95
|
+
|
|
96
|
+
For Linux-based telescope control (INDI):
|
|
77
97
|
|
|
78
98
|
```sh
|
|
79
|
-
|
|
99
|
+
pip install citrascope[indi]
|
|
80
100
|
```
|
|
81
101
|
|
|
82
|
-
|
|
102
|
+
This provides the `citrascope` command-line tool. To see available commands:
|
|
83
103
|
|
|
84
|
-
|
|
104
|
+
```sh
|
|
105
|
+
citrascope --help
|
|
106
|
+
```
|
|
85
107
|
|
|
86
|
-
|
|
108
|
+
## Usage
|
|
87
109
|
|
|
88
|
-
|
|
89
|
-
CITRASCOPE_PERSONAL_ACCESS_TOKEN=citra_pat_xxx
|
|
90
|
-
CITRASCOPE_TELESCOPE_ID=xxx
|
|
91
|
-
# CITRASCOPE_INDI_SERVER_URL=127.0.0.1
|
|
92
|
-
CITRASCOPE_INDI_SERVER_URL=host.docker.internal # use with devcontainer for accessing a localhost indi server
|
|
93
|
-
CITRASCOPE_INDI_SERVER_PORT=7624
|
|
94
|
-
CITRASCOPE_INDI_TELESCOPE_NAME=Telescope Simulator
|
|
95
|
-
```
|
|
110
|
+
### Starting the Daemon
|
|
96
111
|
|
|
97
|
-
|
|
112
|
+
Run the daemon with:
|
|
98
113
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- `CITRASCOPE_INDI_SERVER_PORT`: Port for the INDI server (default: `7624`)
|
|
103
|
-
- `CITRASCOPE_INDI_TELESCOPE_NAME`: Name of the INDI telescope device (default: `Telescope Simulator`)
|
|
114
|
+
```sh
|
|
115
|
+
citrascope
|
|
116
|
+
```
|
|
104
117
|
|
|
105
|
-
|
|
118
|
+
By default, this starts the web interface on `http://localhost:24872`. You can customize the port:
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
citrascope --web-port 8080
|
|
122
|
+
```
|
|
106
123
|
|
|
107
124
|
## Developer Setup
|
|
108
125
|
|
|
@@ -112,6 +129,16 @@ By opening this project in VS Code and choosing "Reopen in Container" (or using
|
|
|
112
129
|
|
|
113
130
|
The devcontainer also ensures all required system dependencies (like `cmake`) are installed automatically.
|
|
114
131
|
|
|
132
|
+
### Python Version
|
|
133
|
+
|
|
134
|
+
This project requires Python 3.10 or higher, up to Python 3.12. A `.python-version` file is included specifying Python 3.12 as the recommended version. If you use [pyenv](https://github.com/pyenv/pyenv), it will automatically use this version when you enter the project directory.
|
|
135
|
+
|
|
136
|
+
### If not using the dev container:
|
|
137
|
+
```sh
|
|
138
|
+
python -m venv .venv
|
|
139
|
+
source .venv/bin/activate
|
|
140
|
+
```
|
|
141
|
+
|
|
115
142
|
### Installing Development Dependencies
|
|
116
143
|
|
|
117
144
|
To install development dependencies (for code style, linting, and pre-commit hooks):
|
|
@@ -138,20 +165,33 @@ pre-commit run --all-files
|
|
|
138
165
|
|
|
139
166
|
This ensures code style and quality checks are enforced for all contributors.
|
|
140
167
|
|
|
168
|
+
### Releasing a New Version
|
|
169
|
+
|
|
170
|
+
To bump the version and create a release:
|
|
171
|
+
|
|
172
|
+
```sh
|
|
173
|
+
bump-my-version bump patch # 0.1.3 → 0.1.4
|
|
174
|
+
bump-my-version bump minor # 0.1.3 → 0.2.0
|
|
175
|
+
bump-my-version bump major # 0.1.3 → 1.0.0
|
|
176
|
+
git push && git push --tags
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Then create a release in the GitHub UI from the new tag. This triggers automatic PyPI publishing.
|
|
180
|
+
|
|
141
181
|
### Running and Debugging with VS Code
|
|
142
182
|
|
|
143
183
|
If you are using Visual Studio Code, you can run or debug the project directly using the pre-configured launch options in `.vscode/launch.json`:
|
|
144
184
|
|
|
145
|
-
- **Python: citrascope
|
|
146
|
-
- **Python: citrascope
|
|
185
|
+
- **Python: citrascope** — Runs the daemon with default settings
|
|
186
|
+
- **Python: citrascope (custom port)** — Runs with web interface on port 8080
|
|
147
187
|
|
|
148
|
-
To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button.
|
|
188
|
+
To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button.
|
|
149
189
|
|
|
150
190
|
## Running Tests
|
|
151
191
|
|
|
152
192
|
This project uses [pytest](https://pytest.org/) for unit testing. All tests are located in the `tests/` directory.
|
|
153
193
|
|
|
154
|
-
To run tests
|
|
194
|
+
To run unit tests within your devcontainer:
|
|
155
195
|
|
|
156
196
|
```bash
|
|
157
197
|
pytest
|
|
@@ -0,0 +1,38 @@
|
|
|
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=mw7U2gEgfDc3TuXVUHZAkHjSwY2T259FW02LAjz7vWU,10315
|
|
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=BdQrZkLSh2siszG8fGNEWpknC5wyZXZWgbaq7Zc7cAo,6131
|
|
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=Nv6ijVDvgTCTZUmRFh3Wh-YS7ChiztiXF17OWlzJwoo,7001
|
|
11
|
+
citrascope/hardware/nina_adv_http_adapter.py,sha256=2McglZprEJQ8OKnqFXDrZCcl2AylkWO8Y1kGrS_nwtY,26261
|
|
12
|
+
citrascope/hardware/nina_adv_http_survey_template.json,sha256=beg4H6Bzby-0x5uDc_eRJQ_rKs8VT64sDJyAzS_q1l4,14424
|
|
13
|
+
citrascope/logging/__init__.py,sha256=YU38HLMWfbXh_H-s7W7Zx2pbCR4f_tRk7z0G8xqz4_o,179
|
|
14
|
+
citrascope/logging/_citrascope_logger.py,sha256=GkqNpFJWiatqrBr8t4o2nHt7V9bBDJ8mysM0F4AXMa8,3479
|
|
15
|
+
citrascope/logging/web_log_handler.py,sha256=d0XQzHJZ5M1v3H351tdkBYg7EOwFzXpp7PA9nYejIV0,2659
|
|
16
|
+
citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
citrascope/settings/citrascope_settings.py,sha256=yBDlM5uCnhUQgIrNDMTPX6cmgKnKl-lvra41-7XN40E,5966
|
|
18
|
+
citrascope/settings/settings_file_manager.py,sha256=Yijb-I9hbbVJ2thkr7OrfkNknSPt1RDpsE7VvqAs0a8,4193
|
|
19
|
+
citrascope/tasks/runner.py,sha256=xVnGWe_iYutBYqIhgOOriPjPcYUJ8IRbYRYKiAbehAQ,12584
|
|
20
|
+
citrascope/tasks/task.py,sha256=0u0oN56E6KaNz19ba_7WuY43Sk4CTXc8UPT7sdUpRXo,1287
|
|
21
|
+
citrascope/tasks/scope/base_telescope_task.py,sha256=wIdyUxplFNhf_YMdCXOK6pG7HF7tZn_id59TvYyWZAY,9674
|
|
22
|
+
citrascope/tasks/scope/static_telescope_task.py,sha256=XP53zYVcyLHLvebDU06Jx0ghPK3tb0c_XmO60yj_XSA,1132
|
|
23
|
+
citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
|
|
24
|
+
citrascope/web/__init__.py,sha256=CgU36fyNSxGXjUy3hsHwx7UxF8UO4Qsb7PjC9-6tRmY,38
|
|
25
|
+
citrascope/web/app.py,sha256=OfBur9oM06NakrA30MOk9CgX0ewJ7IZl4kn0gtQgHJ4,20261
|
|
26
|
+
citrascope/web/server.py,sha256=IJJk4HgEwcsjHercL-Q5z39NmJRbkNk_51HIUKKhtRE,5242
|
|
27
|
+
citrascope/web/static/api.js,sha256=s-b1FIw-pTo3A8kLlLINVqHhIvfHwTWA7cEvz4N8Gqc,1924
|
|
28
|
+
citrascope/web/static/app.js,sha256=xwKBzLB2uWytyUDdzrT6qsQBwIfESypjf8jSLnrQRZg,17820
|
|
29
|
+
citrascope/web/static/config.js,sha256=4pjMH8yS24JkH62OpklEdPC0EAmd7e5c21WWETz1EO0,15701
|
|
30
|
+
citrascope/web/static/style.css,sha256=haVMnKlULZ-SL_qmLyqnrwHdX28s6KzVK9uE_R5nlLo,2877
|
|
31
|
+
citrascope/web/static/websocket.js,sha256=UITw1DDfehOKpjlltn5MXhewZYGKzPFmaTtMFtC0-Ps,3931
|
|
32
|
+
citrascope/web/static/img/citra.png,sha256=Bq8dPWB6fNz7a_H0FuEtNmZWcPHH2iV2OC-fMg4REbQ,205570
|
|
33
|
+
citrascope/web/static/img/favicon.png,sha256=zrbUlpFXDB_zmsIdhhn8_klnc2Ma3N6Q8ouBMAxFjbM,24873
|
|
34
|
+
citrascope/web/templates/dashboard.html,sha256=4ChTsnMMP6VyfdQT9bM4rRruYHJorAeZFOMDhI-j3fA,24155
|
|
35
|
+
citrascope-0.4.0.dist-info/METADATA,sha256=eombd_1rHdc9ubLY6PM7M2UKBqLMeT8aOQDUtqqWMP0,6481
|
|
36
|
+
citrascope-0.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
37
|
+
citrascope-0.4.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
|
|
38
|
+
citrascope-0.4.0.dist-info/RECORD,,
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
2
|
-
|
|
3
|
-
from citrascope.logging import CITRASCOPE_LOGGER
|
|
4
|
-
|
|
5
|
-
UNDEFINED_STRING = "undefined"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class CitraScopeSettings(BaseSettings):
|
|
9
|
-
model_config = SettingsConfigDict(
|
|
10
|
-
env_prefix="CITRASCOPE_",
|
|
11
|
-
env_nested_delimiter="__",
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
# Default to production API
|
|
15
|
-
host: str = "api.citra.space"
|
|
16
|
-
port: int = 443
|
|
17
|
-
|
|
18
|
-
personal_access_token: str = UNDEFINED_STRING
|
|
19
|
-
use_ssl: bool = True
|
|
20
|
-
telescope_id: str = UNDEFINED_STRING
|
|
21
|
-
|
|
22
|
-
indi_server_url: str = "localhost"
|
|
23
|
-
indi_server_port: int = 7624
|
|
24
|
-
indi_telescope_name: str = UNDEFINED_STRING
|
|
25
|
-
indi_camera_name: str = UNDEFINED_STRING
|
|
26
|
-
|
|
27
|
-
log_level: str = "INFO"
|
|
28
|
-
|
|
29
|
-
def __init__(self, dev: bool = False, log_level: str = "INFO", **kwargs):
|
|
30
|
-
super().__init__(**kwargs)
|
|
31
|
-
self.log_level = log_level
|
|
32
|
-
if dev:
|
|
33
|
-
self.host = "dev.api.citra.space"
|
|
34
|
-
CITRASCOPE_LOGGER.info("Using development API endpoint.")
|
|
35
|
-
|
|
36
|
-
def model_post_init(self, __context) -> None:
|
|
37
|
-
if self.personal_access_token == UNDEFINED_STRING:
|
|
38
|
-
CITRASCOPE_LOGGER.warning(f"{self.__class__.__name__} personal_access_token has not been set")
|
|
39
|
-
exit(1)
|
|
40
|
-
if self.telescope_id == UNDEFINED_STRING:
|
|
41
|
-
CITRASCOPE_LOGGER.warning(f"{self.__class__.__name__} telescope_id has not been set")
|
|
42
|
-
exit(1)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
citrascope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
citrascope/__main__.py,sha256=MlIzMVRL_tnvd8vJcZXENIglepirST3KDPfVpN7V9bE,673
|
|
3
|
-
citrascope/citra_scope_daemon.py,sha256=rQ4U7r2q5n9FSxM7E7xTdhpJjYCT7Mv_3PhUPkWwMTc,4073
|
|
4
|
-
citrascope/api/abstract_api_client.py,sha256=FG386RwHZtsCNaGGx0bhwxajyj_0B6SxU3p2w0R4tYU,472
|
|
5
|
-
citrascope/api/citra_api_client.py,sha256=7T7woGN-cjTYF8CNkGSjWXCKO-q0ufnBLGrdT2pdY3w,4173
|
|
6
|
-
citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=JOw0PDoFrgicB5qZrurlLrVcDsjQNjHcxyFJ6674KJ8,3748
|
|
7
|
-
citrascope/hardware/indi_adapter.py,sha256=57AvH-AzthqXyefUgMq21GfcFfNh9WcGoara03NiJkg,12564
|
|
8
|
-
citrascope/logging/__init__.py,sha256=bXX2PX6MZelEX3fi_-lmT51uZCfN9WnLPZfx5_RswAA,101
|
|
9
|
-
citrascope/logging/_citrascope_logger.py,sha256=-KZ3ufQc3VOSlP1I3KC1YFDU7o880-O0iu3URlzRGlM,1056
|
|
10
|
-
citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
citrascope/settings/_citrascope_settings.py,sha256=JpuVFroZERPjbx58ZCw9BM9xr41qW6MNxm3sYGjYS14,1386
|
|
12
|
-
citrascope/tasks/runner.py,sha256=pUyQlrQkSNbM_SKl6AUFY8QSV2NzZfGvybGlzV7Q-BU,7320
|
|
13
|
-
citrascope/tasks/task.py,sha256=0u0oN56E6KaNz19ba_7WuY43Sk4CTXc8UPT7sdUpRXo,1287
|
|
14
|
-
citrascope/tasks/scope/base_telescope_task.py,sha256=He8W9OSHDL2tp56sY5dPdtYDswzp5HDMMeWpSNYNcgY,9198
|
|
15
|
-
citrascope/tasks/scope/static_telescope_task.py,sha256=DTrKZiOJ3ZPSDPvmMbyWkW50kS4I6Li6qC6SyrpWbaI,612
|
|
16
|
-
citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
|
|
17
|
-
docs/index.md,sha256=YQDeVrN9AcbRzo88Jc4iRCO70gAh_4GSgImrJMwcSCo,1402
|
|
18
|
-
citrascope-0.1.0.dist-info/METADATA,sha256=u7Uc7lN6PZz78TUNFqmYe3IWBgxPdfudIpg31kuuVX0,5817
|
|
19
|
-
citrascope-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
20
|
-
citrascope-0.1.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
|
|
21
|
-
citrascope-0.1.0.dist-info/RECORD,,
|
docs/index.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# CitraScope Documentation
|
|
2
|
-
|
|
3
|
-
Welcome to the CitraScope documentation.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
CitraScope is a Python application for remote telescope control, task automation, and data collection.
|
|
8
|
-
It connects to the Citra.space API and INDI hardware to execute observation tasks.
|
|
9
|
-
|
|
10
|
-
## Architecture
|
|
11
|
-
|
|
12
|
-
- **CLI Entrypoint:** `citrascope/__main__.py`
|
|
13
|
-
Handles configuration, authentication, and starts the task daemon.
|
|
14
|
-
- **API Client:** `citrascope/api/client.py`
|
|
15
|
-
Communicates with Citra.space for authentication, telescope, satellite, and ground station data.
|
|
16
|
-
- **Task Management:** `citrascope/tasks/runner.py`
|
|
17
|
-
Polls for tasks, schedules, and executes observations.
|
|
18
|
-
- **Settings:** `citrascope/settings/_citrascope_settings.py`
|
|
19
|
-
Loads configuration from environment variables.
|
|
20
|
-
|
|
21
|
-
## Configuration
|
|
22
|
-
|
|
23
|
-
See [README.md](../README.md) for installation and environment setup.
|
|
24
|
-
Environment variables are documented in `.env.example`.
|
|
25
|
-
|
|
26
|
-
## Usage
|
|
27
|
-
|
|
28
|
-
Run the CLI:
|
|
29
|
-
```sh
|
|
30
|
-
python -m citrascope start
|
|
31
|
-
```
|
|
32
|
-
Or use VS Code launch configurations for development and debugging.
|
|
33
|
-
|
|
34
|
-
## Testing
|
|
35
|
-
|
|
36
|
-
- **Unit tests** are written using [pytest](https://pytest.org/) and are located in the `tests/` directory.
|
|
37
|
-
- To run tests manually, use:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
pytest
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Further Documentation
|
|
44
|
-
|
|
45
|
-
- [API Reference](https://api.citra.space/docs)
|
|
46
|
-
- [Contributing Guide](contributing.md) (coming soon)
|
|
47
|
-
- [Troubleshooting](troubleshooting.md) (coming soon)
|
|
File without changes
|