arcsecond 3.10.2__tar.gz → 3.11.0__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 (121) hide show
  1. {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/tests.yml +1 -1
  2. {arcsecond-3.10.2 → arcsecond-3.11.0}/PKG-INFO +1 -1
  3. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/endpoint.py +6 -2
  4. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/resources.py +6 -2
  5. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cli.py +4 -1
  6. arcsecond-3.11.0/arcsecond/hosting/__init__.py +3 -0
  7. arcsecond-3.11.0/arcsecond/hosting/backups.py +969 -0
  8. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/local.py +15 -4
  9. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/main.py +10 -10
  10. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/setup.py +2 -1
  11. arcsecond-3.11.0/arcsecond/hosting/utils.py +48 -0
  12. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/commands.py +73 -42
  13. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/proxy.py +32 -21
  14. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/registry.py +8 -4
  15. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/base.py +4 -3
  16. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/filewatch.py +8 -6
  17. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/opencv.py +10 -5
  18. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/targets.py +35 -14
  19. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/config.js +3 -1
  20. arcsecond-3.11.0/docs/backups.md +158 -0
  21. {arcsecond-3.10.2 → arcsecond-3.11.0}/package-lock.json +12 -12
  22. {arcsecond-3.10.2 → arcsecond-3.11.0}/pyproject.toml +1 -1
  23. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_api_endpoint.py +3 -1
  24. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_targets.py +3 -1
  25. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_cli.py +3 -3
  26. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_hosting_local.py +23 -7
  27. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_targets_planning.py +4 -1
  28. arcsecond-3.10.2/arcsecond/hosting/__init__.py +0 -2
  29. arcsecond-3.10.2/arcsecond/hosting/utils.py +0 -24
  30. {arcsecond-3.10.2 → arcsecond-3.11.0}/.docker/Dockerfile_postgres +0 -0
  31. {arcsecond-3.10.2 → arcsecond-3.11.0}/.docker/Dockerfile_redis +0 -0
  32. {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/dependabot.yml +0 -0
  33. {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/docsdeploy.yml +0 -0
  34. {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/pythonpublish.yml +0 -0
  35. {arcsecond-3.10.2 → arcsecond-3.11.0}/.gitignore +0 -0
  36. {arcsecond-3.10.2 → arcsecond-3.11.0}/LICENSE +0 -0
  37. {arcsecond-3.10.2 → arcsecond-3.11.0}/Makefile +0 -0
  38. {arcsecond-3.10.2 → arcsecond-3.11.0}/README.md +0 -0
  39. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/__init__.py +0 -0
  40. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/__version__.py +0 -0
  41. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/__init__.py +0 -0
  42. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/config.py +0 -0
  43. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/constants.py +0 -0
  44. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/main.py +0 -0
  45. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/__init__.py +0 -0
  46. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/auth.py +0 -0
  47. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/resources.py +0 -0
  48. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/__init__.py +0 -0
  49. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/__init__.py +0 -0
  50. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/context.py +0 -0
  51. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/errors.py +0 -0
  52. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/uploader.py +0 -0
  53. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/utils.py +0 -0
  54. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/constants.py +0 -0
  55. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/context.py +0 -0
  56. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/__init__.py +0 -0
  57. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/context.py +0 -0
  58. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/errors.py +0 -0
  59. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/uploader.py +0 -0
  60. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/utils.py +0 -0
  61. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/errors.py +0 -0
  62. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/logger.py +0 -0
  63. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/uploader.py +0 -0
  64. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/utils.py +0 -0
  65. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/walker.py +0 -0
  66. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploads.py +0 -0
  67. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/errors.py +0 -0
  68. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/checks.py +0 -0
  69. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/constants.py +0 -0
  70. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/__init__.py +0 -0
  71. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/constants.py +0 -0
  72. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/containers.py +0 -0
  73. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/docker-compose.yml +0 -0
  74. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/images.py +0 -0
  75. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/utils.py +0 -0
  76. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/__init__.py +0 -0
  77. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/client.py +0 -0
  78. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/utils.py +0 -0
  79. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/postgres/init-db.sh +0 -0
  80. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/validation.py +0 -0
  81. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/__init__.py +0 -0
  82. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/__init__.py +0 -0
  83. {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/options.py +0 -0
  84. {arcsecond-3.10.2 → arcsecond-3.11.0}/deploy.sh +0 -0
  85. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/theme/custom.css +0 -0
  86. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/theme/index.js +0 -0
  87. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/api-basics.md +0 -0
  88. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/img/icon-logo.png +0 -0
  89. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/index.md +0 -0
  90. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/install.md +0 -0
  91. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/public/img/icon-logo.png +0 -0
  92. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/resources.md +0 -0
  93. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/rotate-postgres-password.md +0 -0
  94. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/upload.md +0 -0
  95. {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/webcam.md +0 -0
  96. {arcsecond-3.10.2 → arcsecond-3.11.0}/examples/example_upload_files.py +0 -0
  97. {arcsecond-3.10.2 → arcsecond-3.11.0}/examples/example_upload_images.py +0 -0
  98. {arcsecond-3.10.2 → arcsecond-3.11.0}/package.json +0 -0
  99. {arcsecond-3.10.2 → arcsecond-3.11.0}/poetry.lock +0 -0
  100. {arcsecond-3.10.2 → arcsecond-3.11.0}/requirements.txt +0 -0
  101. {arcsecond-3.10.2 → arcsecond-3.11.0}/setup.cfg +0 -0
  102. {arcsecond-3.10.2 → arcsecond-3.11.0}/setup.py +0 -0
  103. {arcsecond-3.10.2 → arcsecond-3.11.0}/sonar-project.properties +0 -0
  104. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/__init__.py +0 -0
  105. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/__init__.py +0 -0
  106. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_api.py +0 -0
  107. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_config.py +0 -0
  108. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/__init__.py +0 -0
  109. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/__init__.py +0 -0
  110. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/__init__.py +0 -0
  111. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/test_context.py +0 -0
  112. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/test_uploader_full_process.py +0 -0
  113. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/__init__.py +0 -0
  114. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_errors.py +0 -0
  115. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_full_process.py +0 -0
  116. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_init.py +0 -0
  117. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_prepare.py +0 -0
  118. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_upload.py +0 -0
  119. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/conftest.py +0 -0
  120. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/fixtures/file1.fits +0 -0
  121. {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/utils.py +0 -0
@@ -58,7 +58,7 @@ jobs:
58
58
  path: .
59
59
 
60
60
  - name: SonarQube Scan
61
- uses: SonarSource/sonarcloud-github-action@master
61
+ uses: SonarSource/sonarqube-scan-action@v5
62
62
  env:
63
63
  SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
64
64
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arcsecond
3
- Version: 3.10.2
3
+ Version: 3.11.0
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
@@ -68,7 +68,9 @@ class ArcsecondAPIEndpoint(object):
68
68
  payload = {}
69
69
  if json:
70
70
  payload.update(json)
71
- payload.update({key: value for key, value in fields.items() if value is not None})
71
+ payload.update(
72
+ {key: value for key, value in fields.items() if value is not None}
73
+ )
72
74
  return payload or None
73
75
 
74
76
  def _extract_results(self, response):
@@ -151,7 +153,9 @@ class ArcsecondAPIEndpoint(object):
151
153
 
152
154
  identifier = self._extract_identifier(existing)
153
155
  if identifier is None:
154
- return None, ArcsecondError(f"Could not find an identifier for '{match_value}'.")
156
+ return None, ArcsecondError(
157
+ f"Could not find an identifier for '{match_value}'."
158
+ )
155
159
 
156
160
  return self.update(identifier, json=payload)
157
161
 
@@ -90,7 +90,9 @@ class ArcsecondTargetListsResource(ArcsecondAPIEndpoint):
90
90
  )
91
91
  return ArcsecondAPIEndpoint.update(self, id_name_uuid, json=payload)
92
92
 
93
- def upsert(self, match_field="name", json=None, targets=None, target_key=None, **fields):
93
+ def upsert(
94
+ self, match_field="name", json=None, targets=None, target_key=None, **fields
95
+ ):
94
96
  payload = self._build_payload(
95
97
  json=json, targets=targets, target_key=target_key, **fields
96
98
  )
@@ -104,7 +106,9 @@ class ArcsecondTargetListsResource(ArcsecondAPIEndpoint):
104
106
 
105
107
  def set_targets(self, id_name_uuid, targets, target_key=None):
106
108
  target_key = target_key or self.target_relation_key
107
- return self.update(id_name_uuid, **{target_key: self._normalise_target_payloads(targets)})
109
+ return self.update(
110
+ id_name_uuid, **{target_key: self._normalise_target_payloads(targets)}
111
+ )
108
112
 
109
113
  def clear_targets(self, id_name_uuid, target_key=None):
110
114
  return self.set_targets(id_name_uuid, [], target_key=target_key)
@@ -9,7 +9,7 @@ from arcsecond.cloud import (
9
9
  telescopes,
10
10
  upload_data,
11
11
  )
12
- from arcsecond.hosting import setup
12
+ from arcsecond.hosting import backups, setup
13
13
  from arcsecond.imagesources import commands as imagesources
14
14
 
15
15
  from . import __version__
@@ -61,6 +61,9 @@ main.add_command(upload_data)
61
61
  # Allow to try arcsecond by installing a local version
62
62
  main.add_command(setup)
63
63
 
64
+ # Browse and restore Arcsecond.local DB backups.
65
+ main.add_command(backups)
66
+
64
67
  # Native live-image proxy — exposes USB webcams and all-sky cameras to
65
68
  # Arcsecond.local Docker containers via host.docker.internal.
66
69
  main.add_command(imagesources.webcam)
@@ -0,0 +1,3 @@
1
+ # from .main import install, status, stop
2
+ from .backups import backups
3
+ from .local import setup