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.
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/tests.yml +1 -1
- {arcsecond-3.10.2 → arcsecond-3.11.0}/PKG-INFO +1 -1
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/endpoint.py +6 -2
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/resources.py +6 -2
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cli.py +4 -1
- arcsecond-3.11.0/arcsecond/hosting/__init__.py +3 -0
- arcsecond-3.11.0/arcsecond/hosting/backups.py +969 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/local.py +15 -4
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/main.py +10 -10
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/setup.py +2 -1
- arcsecond-3.11.0/arcsecond/hosting/utils.py +48 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/commands.py +73 -42
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/proxy.py +32 -21
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/registry.py +8 -4
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/base.py +4 -3
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/filewatch.py +8 -6
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/opencv.py +10 -5
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/targets.py +35 -14
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/config.js +3 -1
- arcsecond-3.11.0/docs/backups.md +158 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/package-lock.json +12 -12
- {arcsecond-3.10.2 → arcsecond-3.11.0}/pyproject.toml +1 -1
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_api_endpoint.py +3 -1
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_targets.py +3 -1
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_cli.py +3 -3
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_hosting_local.py +23 -7
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/test_targets_planning.py +4 -1
- arcsecond-3.10.2/arcsecond/hosting/__init__.py +0 -2
- arcsecond-3.10.2/arcsecond/hosting/utils.py +0 -24
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.docker/Dockerfile_postgres +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.docker/Dockerfile_redis +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/dependabot.yml +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/docsdeploy.yml +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.github/workflows/pythonpublish.yml +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/.gitignore +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/LICENSE +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/Makefile +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/README.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/__version__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/config.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/constants.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/api/main.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/auth.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/resources.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/context.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/errors.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/uploader.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/allskycameraimages/utils.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/constants.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/context.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/context.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/errors.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/uploader.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/datafiles/utils.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/errors.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/logger.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/uploader.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/utils.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploader/walker.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/cloud/uploads.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/errors.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/checks.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/constants.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/constants.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/containers.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/docker-compose.yml +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/images.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/docker/utils.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/client.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/keygen/utils.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/postgres/init-db.sh +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/hosting/validation.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/imagesources/sources/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/arcsecond/options.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/deploy.sh +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/theme/custom.css +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/.vitepress/theme/index.js +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/api-basics.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/img/icon-logo.png +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/index.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/install.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/public/img/icon-logo.png +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/resources.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/rotate-postgres-password.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/upload.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/docs/webcam.md +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/examples/example_upload_files.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/examples/example_upload_images.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/package.json +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/poetry.lock +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/requirements.txt +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/setup.cfg +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/setup.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/sonar-project.properties +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_api.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/api/test_config.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/test_context.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/allskycameraimages/test_uploader_full_process.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/__init__.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_errors.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_full_process.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_init.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_prepare.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/cloud/uploader/datafiles/test_uploader_upload.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/conftest.py +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/fixtures/file1.fits +0 -0
- {arcsecond-3.10.2 → arcsecond-3.11.0}/tests/utils.py +0 -0
|
@@ -68,7 +68,9 @@ class ArcsecondAPIEndpoint(object):
|
|
|
68
68
|
payload = {}
|
|
69
69
|
if json:
|
|
70
70
|
payload.update(json)
|
|
71
|
-
payload.update(
|
|
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(
|
|
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(
|
|
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(
|
|
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)
|