citrascope 0.5.2__tar.gz → 0.6.1__tar.gz

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 (55) hide show
  1. {citrascope-0.5.2 → citrascope-0.6.1}/.github/copilot-instructions.md +2 -0
  2. {citrascope-0.5.2 → citrascope-0.6.1}/.github/workflows/pypi-publish.yml +4 -0
  3. {citrascope-0.5.2 → citrascope-0.6.1}/.github/workflows/pytest.yml +1 -0
  4. {citrascope-0.5.2 → citrascope-0.6.1}/.pre-commit-config.yaml +0 -9
  5. {citrascope-0.5.2 → citrascope-0.6.1}/PKG-INFO +19 -1
  6. {citrascope-0.5.2 → citrascope-0.6.1}/README.md +2 -0
  7. citrascope-0.6.1/citrascope/hardware/kstars_dbus_adapter.py +1062 -0
  8. citrascope-0.6.1/citrascope/hardware/kstars_scheduler_template.esl +30 -0
  9. citrascope-0.6.1/citrascope/hardware/kstars_sequence_template.esq +16 -0
  10. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/settings/citrascope_settings.py +6 -4
  11. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/tasks/scope/static_telescope_task.py +6 -1
  12. {citrascope-0.5.2 → citrascope-0.6.1}/pyproject.toml +33 -2
  13. citrascope-0.5.2/citrascope/hardware/kstars_dbus_adapter.py +0 -179
  14. {citrascope-0.5.2 → citrascope-0.6.1}/.devcontainer/devcontainer.json +0 -0
  15. {citrascope-0.5.2 → citrascope-0.6.1}/.flake8 +0 -0
  16. {citrascope-0.5.2 → citrascope-0.6.1}/.github/dependabot.yml +0 -0
  17. {citrascope-0.5.2 → citrascope-0.6.1}/.gitignore +0 -0
  18. {citrascope-0.5.2 → citrascope-0.6.1}/.python-version +0 -0
  19. {citrascope-0.5.2 → citrascope-0.6.1}/.vscode/launch.json +0 -0
  20. {citrascope-0.5.2 → citrascope-0.6.1}/LICENSE +0 -0
  21. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/__init__.py +0 -0
  22. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/__main__.py +0 -0
  23. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/api/abstract_api_client.py +0 -0
  24. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/api/citra_api_client.py +0 -0
  25. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/citra_scope_daemon.py +0 -0
  26. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/constants.py +0 -0
  27. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/hardware/abstract_astro_hardware_adapter.py +0 -0
  28. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/hardware/adapter_registry.py +0 -0
  29. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/hardware/indi_adapter.py +0 -0
  30. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/hardware/nina_adv_http_adapter.py +0 -0
  31. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/hardware/nina_adv_http_survey_template.json +0 -0
  32. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/logging/__init__.py +0 -0
  33. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/logging/_citrascope_logger.py +0 -0
  34. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/logging/web_log_handler.py +0 -0
  35. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/settings/__init__.py +0 -0
  36. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/settings/settings_file_manager.py +0 -0
  37. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/tasks/runner.py +0 -0
  38. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/tasks/scope/base_telescope_task.py +0 -0
  39. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/tasks/scope/tracking_telescope_task.py +0 -0
  40. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/tasks/task.py +0 -0
  41. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/__init__.py +0 -0
  42. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/app.py +0 -0
  43. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/server.py +0 -0
  44. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/api.js +0 -0
  45. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/app.js +0 -0
  46. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/config.js +0 -0
  47. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/img/citra.png +0 -0
  48. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/img/favicon.png +0 -0
  49. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/style.css +0 -0
  50. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/static/websocket.js +0 -0
  51. {citrascope-0.5.2 → citrascope-0.6.1}/citrascope/web/templates/dashboard.html +0 -0
  52. {citrascope-0.5.2 → citrascope-0.6.1}/tests/unit/test_api_client.py +0 -0
  53. {citrascope-0.5.2 → citrascope-0.6.1}/tests/unit/test_hardware_adapter.py +0 -0
  54. {citrascope-0.5.2 → citrascope-0.6.1}/tests/unit/test_task_manager.py +0 -0
  55. {citrascope-0.5.2 → citrascope-0.6.1}/tests/unit/utils.py +0 -0
@@ -9,6 +9,8 @@ This project is a Python package for interacting with astronomical data and serv
9
9
  - Write docstrings for all modules, classes, and functions.
10
10
  - Prefer logging via the custom logger in `citrascope/logging/` over print statements.
11
11
  - Organize code into logical modules as per the existing structure.
12
+ - **Type hints for nullable attributes**: Use `Type | None` for class attributes that start as `None` and are initialized later (e.g., `self.bus: dbus.SessionBus | None = None`).
13
+ - **Satisfy type checkers**: When attributes can be None but are guaranteed non-None in certain methods (e.g., after successful connection), use `assert attribute is not None` to inform type checkers, or use explicit checks if the validation is critical for production.
12
14
 
13
15
  ## Directory Structure
14
16
  - `citrascope/api/`: API client code
@@ -5,7 +5,11 @@ on:
5
5
  types: [published]
6
6
 
7
7
  jobs:
8
+ test:
9
+ uses: ./.github/workflows/pytest.yml
10
+
8
11
  build-and-publish:
12
+ needs: test
9
13
  runs-on: ubuntu-latest
10
14
  steps:
11
15
  - uses: actions/checkout@v4
@@ -5,6 +5,7 @@ on:
5
5
  branches: [main]
6
6
  pull_request:
7
7
  branches: [main]
8
+ workflow_call:
8
9
 
9
10
  jobs:
10
11
  test:
@@ -22,12 +22,3 @@ repos:
22
22
  rev: 25.9.0
23
23
  hooks:
24
24
  - id: black
25
-
26
- - repo: local
27
- hooks:
28
- - id: pytest
29
- name: pytest
30
- entry: pytest
31
- language: system
32
- types: [python]
33
- pass_filenames: false
@@ -1,10 +1,26 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: citrascope
3
- Version: 0.5.2
3
+ Version: 0.6.1
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
+ Project-URL: Homepage, https://citra.space
6
+ Project-URL: Documentation, https://docs.citra.space/citrascope/
7
+ Project-URL: Repository, https://github.com/citra-space/citrascope
8
+ Project-URL: Issues, https://github.com/citra-space/citrascope/issues
9
+ Project-URL: Changelog, https://github.com/citra-space/citrascope/releases
5
10
  Author-email: Patrick McDavid <patrick@citra.space>
6
11
  License: MIT
7
12
  License-File: LICENSE
13
+ Keywords: INDI,KStars,NINA,astronomy,astrophotography,imaging,observatory,remote-telescope,telescope,telescope-control
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
23
+ Classifier: Topic :: System :: Hardware :: Hardware Drivers
8
24
  Requires-Python: <3.13,>=3.10
9
25
  Requires-Dist: click
10
26
  Requires-Dist: fastapi>=0.104.0
@@ -51,6 +67,8 @@ Description-Content-Type: text/markdown
51
67
  # CitraScope
52
68
  [![Pytest](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml/badge.svg)](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml) [![Publish Python Package](https://github.com/citra-space/citrascope/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/citra-space/citrascope/actions/workflows/pypi-publish.yml) [![PyPI version](https://badge.fury.io/py/citrascope.svg)](https://pypi.org/project/citrascope/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/citrascope)](https://pypi.org/project/citrascope/) [![License](https://img.shields.io/github/license/citra-space/citrascope)](https://github.com/citra-space/citrascope/blob/main/LICENSE)
53
69
 
70
+ **[GitHub Repository](https://github.com/citra-space/citrascope)** | **[Documentation](https://docs.citra.space/citrascope/)** | **[Citra.space](https://citra.space)**
71
+
54
72
  Remotely control a telescope while it polls for tasks, collects observations, and delivers data for further processing.
55
73
 
56
74
  ## Features
@@ -1,6 +1,8 @@
1
1
  # CitraScope
2
2
  [![Pytest](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml/badge.svg)](https://github.com/citra-space/citrascope/actions/workflows/pytest.yml) [![Publish Python Package](https://github.com/citra-space/citrascope/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/citra-space/citrascope/actions/workflows/pypi-publish.yml) [![PyPI version](https://badge.fury.io/py/citrascope.svg)](https://pypi.org/project/citrascope/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/citrascope)](https://pypi.org/project/citrascope/) [![License](https://img.shields.io/github/license/citra-space/citrascope)](https://github.com/citra-space/citrascope/blob/main/LICENSE)
3
3
 
4
+ **[GitHub Repository](https://github.com/citra-space/citrascope)** | **[Documentation](https://docs.citra.space/citrascope/)** | **[Citra.space](https://citra.space)**
5
+
4
6
  Remotely control a telescope while it polls for tasks, collects observations, and delivers data for further processing.
5
7
 
6
8
  ## Features