arcsecond 3.18.0__tar.gz → 3.18.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 (112) hide show
  1. {arcsecond-3.18.0 → arcsecond-3.18.1}/PKG-INFO +1 -1
  2. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/sources/filewatch.py +13 -2
  3. {arcsecond-3.18.0 → arcsecond-3.18.1}/pyproject.toml +1 -1
  4. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_detection.py +29 -0
  5. {arcsecond-3.18.0 → arcsecond-3.18.1}/uv.lock +1 -1
  6. {arcsecond-3.18.0 → arcsecond-3.18.1}/.docker/Dockerfile_postgres +0 -0
  7. {arcsecond-3.18.0 → arcsecond-3.18.1}/.docker/Dockerfile_redis +0 -0
  8. {arcsecond-3.18.0 → arcsecond-3.18.1}/.flake8 +0 -0
  9. {arcsecond-3.18.0 → arcsecond-3.18.1}/.github/dependabot.yml +0 -0
  10. {arcsecond-3.18.0 → arcsecond-3.18.1}/.github/workflows/pythonpublish.yml +0 -0
  11. {arcsecond-3.18.0 → arcsecond-3.18.1}/.github/workflows/tests.yml +0 -0
  12. {arcsecond-3.18.0 → arcsecond-3.18.1}/.gitignore +0 -0
  13. {arcsecond-3.18.0 → arcsecond-3.18.1}/LICENSE +0 -0
  14. {arcsecond-3.18.0 → arcsecond-3.18.1}/Makefile +0 -0
  15. {arcsecond-3.18.0 → arcsecond-3.18.1}/README.md +0 -0
  16. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/__init__.py +0 -0
  17. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/__version__.py +0 -0
  18. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/alpaca/__init__.py +0 -0
  19. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/alpaca/commands.py +0 -0
  20. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/alpaca/dome_probe.py +0 -0
  21. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/__init__.py +0 -0
  22. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/config.py +0 -0
  23. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/constants.py +0 -0
  24. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/endpoint.py +0 -0
  25. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/main.py +0 -0
  26. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/api/resources.py +0 -0
  27. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cli.py +0 -0
  28. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/__init__.py +0 -0
  29. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/auth.py +0 -0
  30. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/resources.py +0 -0
  31. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/__init__.py +0 -0
  32. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/constants.py +0 -0
  33. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/context.py +0 -0
  34. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/datafiles/__init__.py +0 -0
  35. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/datafiles/context.py +0 -0
  36. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/datafiles/errors.py +0 -0
  37. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/datafiles/uploader.py +0 -0
  38. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/datafiles/utils.py +0 -0
  39. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/errors.py +0 -0
  40. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/logger.py +0 -0
  41. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/uploader.py +0 -0
  42. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/utils.py +0 -0
  43. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploader/walker.py +0 -0
  44. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/cloud/uploads.py +0 -0
  45. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/errors.py +0 -0
  46. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/__init__.py +0 -0
  47. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/backups.py +0 -0
  48. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/checks.py +0 -0
  49. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/constants.py +0 -0
  50. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/database.py +0 -0
  51. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/__init__.py +0 -0
  52. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/constants.py +0 -0
  53. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/containers.py +0 -0
  54. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/docker-compose.yml +0 -0
  55. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/images.py +0 -0
  56. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/docker/utils.py +0 -0
  57. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/keygen/__init__.py +0 -0
  58. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/keygen/client.py +0 -0
  59. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/keygen/utils.py +0 -0
  60. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/local.py +0 -0
  61. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/main.py +0 -0
  62. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/postgres/init-db.sh +0 -0
  63. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/setup.py +0 -0
  64. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/utils.py +0 -0
  65. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/hosting/validation.py +0 -0
  66. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/__init__.py +0 -0
  67. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/commands.py +0 -0
  68. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/detection.py +0 -0
  69. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/proxy.py +0 -0
  70. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/registry.py +0 -0
  71. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/runtime.py +0 -0
  72. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/sources/__init__.py +0 -0
  73. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/sources/base.py +0 -0
  74. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/sources/network.py +0 -0
  75. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/sources/opencv.py +0 -0
  76. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/imagesources/store.py +0 -0
  77. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/options.py +0 -0
  78. {arcsecond-3.18.0 → arcsecond-3.18.1}/arcsecond/targets.py +0 -0
  79. {arcsecond-3.18.0 → arcsecond-3.18.1}/examples/example_upload_files.py +0 -0
  80. {arcsecond-3.18.0 → arcsecond-3.18.1}/requirements.txt +0 -0
  81. {arcsecond-3.18.0 → arcsecond-3.18.1}/setup.cfg +0 -0
  82. {arcsecond-3.18.0 → arcsecond-3.18.1}/setup.py +0 -0
  83. {arcsecond-3.18.0 → arcsecond-3.18.1}/sonar-project.properties +0 -0
  84. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/__init__.py +0 -0
  85. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/api/__init__.py +0 -0
  86. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/api/test_api.py +0 -0
  87. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/api/test_api_endpoint.py +0 -0
  88. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/api/test_config.py +0 -0
  89. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/api/test_targets.py +0 -0
  90. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/__init__.py +0 -0
  91. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/__init__.py +0 -0
  92. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/__init__.py +0 -0
  93. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/test_uploader_errors.py +0 -0
  94. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/test_uploader_full_process.py +0 -0
  95. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/test_uploader_init.py +0 -0
  96. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/test_uploader_prepare.py +0 -0
  97. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/cloud/uploader/datafiles/test_uploader_upload.py +0 -0
  98. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/conftest.py +0 -0
  99. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/fixtures/file1.fits +0 -0
  100. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_alpaca_probe.py +0 -0
  101. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_cli.py +0 -0
  102. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_hosting_backups_restore.py +0 -0
  103. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_hosting_database.py +0 -0
  104. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_hosting_local.py +0 -0
  105. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_hosting_utils_secret_key.py +0 -0
  106. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_commands.py +0 -0
  107. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_network.py +0 -0
  108. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_proxy.py +0 -0
  109. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_store.py +0 -0
  110. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_imagesources_webcam.py +0 -0
  111. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/test_targets_planning.py +0 -0
  112. {arcsecond-3.18.0 → arcsecond-3.18.1}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: arcsecond
3
- Version: 3.18.0
3
+ Version: 3.18.1
4
4
  Summary: CLI for arcsecond.io
5
5
  Project-URL: Homepage, https://github.com/arcsecond-io/cli
6
6
  Project-URL: Issues, https://github.com/arcsecond-io/cli/issues
@@ -21,10 +21,21 @@ logger = logging.getLogger(__name__)
21
21
  _POLL_INTERVAL = 5.0 # seconds — image cadence is much slower; this is fine
22
22
 
23
23
  # Common locations to probe at startup. First match wins per software.
24
+ #
25
+ # For Thomas Jacquin's allsky these are its own variables, resolved: since the
26
+ # 2023 rearrangement everything lives under ALLSKY_HOME (``~/allsky``), with
27
+ # ALLSKY_TMP at ``${ALLSKY_HOME}/tmp`` and the local website at
28
+ # ``${ALLSKY_HOME}/html/allsky``. Installs older than that kept the website in
29
+ # ``/var/www/html/allsky`` instead. Beware the ``/current/tmp/`` in the URL its
30
+ # web interface uses: that is a lighttpd alias for ALLSKY_TMP, not a directory,
31
+ # and pasting it in here as a path is how this list went stale before.
24
32
  ALLSKY_DISCOVERY_PATHS: list[Path] = [
25
- # Thomas Jacquin's allsky (https://github.com/AllskyTeam/allsky)
33
+ # Thomas Jacquin's allsky (https://github.com/AllskyTeam/allsky).
34
+ # ALLSKY_TMP first: the capture loop rewrites it every cycle, and it is
35
+ # there whether or not the local website is enabled.
26
36
  Path.home() / "allsky" / "tmp" / "image.jpg",
27
- Path("/var/www/html/allsky/current/tmp/image.jpg"),
37
+ Path.home() / "allsky" / "html" / "allsky" / "image.jpg",
38
+ Path("/var/www/html/allsky/image.jpg"),
28
39
  # indi-allsky (https://github.com/aaronwmorris/indi-allsky)
29
40
  Path("/var/lib/indi-allsky/images/latest.jpg"),
30
41
  Path.home() / "indi-allsky" / "latest.jpg",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "arcsecond"
7
- version = "3.18.0"
7
+ version = "3.18.1"
8
8
  authors = [
9
9
  { name = "Cedric Foellmi", email = "cedric@arcsecond.io" },
10
10
  ]
@@ -227,6 +227,35 @@ def test_an_all_sky_address_is_never_looked_for_on_this_disk():
227
227
  looked_at_disk.assert_not_called()
228
228
 
229
229
 
230
+ # ---------------------------------------------------------------------------
231
+ # Probing the well-known locations
232
+ # ---------------------------------------------------------------------------
233
+
234
+
235
+ def test_an_image_at_a_well_known_location_is_detected(tmp_path, monkeypatch):
236
+ from arcsecond.imagesources.sources import filewatch
237
+
238
+ image = tmp_path / "image.jpg"
239
+ image.write_bytes(b"x")
240
+ monkeypatch.setattr(filewatch, "ALLSKY_DISCOVERY_PATHS", [image])
241
+
242
+ (device,) = filewatch.detect_allsky()
243
+ assert device.identity == (ALLSKY, str(image))
244
+ assert device.extra["path"] == str(image)
245
+
246
+
247
+ def test_a_well_known_location_with_nothing_at_it_is_not_reported(
248
+ tmp_path, monkeypatch
249
+ ):
250
+ """Probing reports what is there — an empty list is an answer, not a fault."""
251
+ from arcsecond.imagesources.sources import filewatch
252
+
253
+ monkeypatch.setattr(
254
+ filewatch, "ALLSKY_DISCOVERY_PATHS", [tmp_path / "nothing-here.jpg"]
255
+ )
256
+ assert filewatch.detect_allsky() == []
257
+
258
+
230
259
  # ---------------------------------------------------------------------------
231
260
  # Probing must never take the report down
232
261
  # ---------------------------------------------------------------------------
@@ -155,7 +155,7 @@ wheels = [
155
155
 
156
156
  [[package]]
157
157
  name = "arcsecond"
158
- version = "3.18.0"
158
+ version = "3.18.1"
159
159
  source = { editable = "." }
160
160
  dependencies = [
161
161
  { name = "alpyca" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes