spectre-core 0.0.2__tar.gz → 0.0.4__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 (77) hide show
  1. {spectre_core-0.0.2 → spectre_core-0.0.4}/PKG-INFO +1 -1
  2. {spectre_core-0.0.2 → spectre_core-0.0.4}/pyproject.toml +1 -1
  3. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/factory.py +1 -1
  4. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/file_handlers/base.py +2 -28
  5. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/file_handlers/configs.py +4 -2
  6. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/file_handlers/json.py +9 -5
  7. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/logging.py +13 -14
  8. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/base.py +4 -4
  9. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/spectrograms/analytical.py +11 -1
  10. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/library/fixed/event_handler.py +2 -2
  11. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/library/sweep/event_handler.py +2 -2
  12. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core.egg-info/PKG-INFO +1 -1
  13. {spectre_core-0.0.2 → spectre_core-0.0.4}/LICENSE +0 -0
  14. {spectre_core-0.0.2 → spectre_core-0.0.4}/README.md +0 -0
  15. {spectre_core-0.0.2 → spectre_core-0.0.4}/setup.cfg +0 -0
  16. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/__init__.py +0 -0
  17. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/cfg.py +0 -0
  18. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/__init__.py +0 -0
  19. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/base.py +0 -0
  20. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/chunk_register.py +0 -0
  21. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/__init__.py +0 -0
  22. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/callisto/__init__.py +0 -0
  23. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/callisto/chunk.py +0 -0
  24. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/fixed/__init__.py +0 -0
  25. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/fixed/chunk.py +0 -0
  26. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/sweep/__init__.py +0 -0
  27. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/chunks/library/sweep/chunk.py +0 -0
  28. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/dynamic_imports.py +0 -0
  29. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/exceptions.py +0 -0
  30. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/file_handlers/text.py +0 -0
  31. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/__init__.py +0 -0
  32. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/base.py +0 -0
  33. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/factory.py +0 -0
  34. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/format.py +0 -0
  35. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/library/__init__.py +0 -0
  36. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/library/frequency_cuts/panel.py +0 -0
  37. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/library/integral_over_frequency/panel.py +0 -0
  38. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/library/spectrogram/panel.py +0 -0
  39. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/library/time_cuts/panel.py +0 -0
  40. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/panel_register.py +0 -0
  41. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/plotting/panel_stack.py +0 -0
  42. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/__init__.py +0 -0
  43. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/factory.py +0 -0
  44. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/__init__.py +0 -0
  45. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rsp1a/__init__.py +0 -0
  46. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rsp1a/gr/__init__.py +0 -0
  47. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rsp1a/gr/fixed.py +0 -0
  48. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rsp1a/gr/sweep.py +0 -0
  49. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rsp1a/receiver.py +0 -0
  50. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rspduo/__init__.py +0 -0
  51. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rspduo/gr/__init__.py +0 -0
  52. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rspduo/gr/tuner_1_fixed.py +0 -0
  53. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rspduo/gr/tuner_1_sweep.py +0 -0
  54. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/rspduo/receiver.py +0 -0
  55. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/test/__init__.py +0 -0
  56. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/test/gr/__init__.py +0 -0
  57. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/test/gr/cosine_signal_1.py +0 -0
  58. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/test/gr/tagged_staircase.py +0 -0
  59. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/library/test/receiver.py +0 -0
  60. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/receiver_register.py +0 -0
  61. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/receivers/validators.py +0 -0
  62. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/spectrograms/__init__.py +0 -0
  63. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/spectrograms/array_operations.py +0 -0
  64. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/spectrograms/spectrogram.py +0 -0
  65. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/spectrograms/transform.py +0 -0
  66. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/__init__.py +0 -0
  67. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/base.py +0 -0
  68. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/event_handler_register.py +0 -0
  69. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/factory.py +0 -0
  70. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/library/__init__.py +0 -0
  71. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/library/fixed/__init__.py +0 -0
  72. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/watchdog/watcher.py +0 -0
  73. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core/web_fetch/callisto.py +0 -0
  74. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core.egg-info/SOURCES.txt +0 -0
  75. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core.egg-info/dependency_links.txt +0 -0
  76. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core.egg-info/requires.txt +0 -0
  77. {spectre_core-0.0.2 → spectre_core-0.0.4}/src/spectre_core.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spectre-core
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: The core Python package used by the spectre program.
5
5
  Maintainer-email: Jimmy Fitzpatrick <jcfitzpatrick12@gmail.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "spectre-core"
7
- version = "0.0.2"
7
+ version = "0.0.4"
8
8
  maintainers = [
9
9
  { name="Jimmy Fitzpatrick", email="jcfitzpatrick12@gmail.com" },
10
10
  ]
@@ -6,7 +6,7 @@
6
6
  from spectre_core.chunks.base import BaseChunk
7
7
  from spectre_core.file_handlers.configs import CaptureConfig
8
8
  from spectre_core.exceptions import ChunkNotFoundError
9
-
9
+ from spectre_core.chunks.chunk_register import chunk_map
10
10
 
11
11
  def get_chunk(chunk_key: str) -> BaseChunk:
12
12
  Chunk = chunk_map.get(chunk_key)
@@ -56,39 +56,13 @@ class BaseFileHandler(ABC):
56
56
  os.makedirs(self.parent_path, exist_ok=True)
57
57
 
58
58
 
59
- def delete(self,
60
- doublecheck_delete = True) -> None:
59
+ def delete(self) -> None:
61
60
  if not self.exists:
62
61
  warn(f"{self.file_path} does not exist. No deletion taking place")
63
62
  return
64
63
  else:
65
- if doublecheck_delete:
66
- self.doublecheck_delete()
67
64
  os.remove(self.file_path)
68
65
 
69
66
 
70
67
  def cat(self) -> None:
71
- print(self.read())
72
-
73
-
74
- def _doublecheck_action(self,
75
- action_message: str) -> None:
76
- proceed_with_action = False
77
- while not proceed_with_action:
78
- user_input = input(f"{action_message} [y/n]: ").strip().lower()
79
- if user_input == "y":
80
- proceed_with_action = True
81
- elif user_input == "n":
82
- print("Operation cancelled by the user")
83
- raise exit(1)
84
- else:
85
- print(f"Please enter one of [y/n], received {user_input}")
86
- proceed_with_action = False
87
-
88
-
89
- def doublecheck_overwrite(self) -> None:
90
- self._doublecheck_action(action_message=f"The file '{self.file_path}' already exists. Overwrite?")
91
-
92
-
93
- def doublecheck_delete(self) -> None:
94
- self._doublecheck_action(action_message=f"Are you sure you would like to delete '{self.file_path}'?")
68
+ print(self.read())
@@ -239,12 +239,14 @@ class FitsConfig(SPECTREConfig):
239
239
 
240
240
  def save_params(self,
241
241
  params: list[str],
242
- doublecheck_overwrite: bool = True
242
+ force: bool = False
243
243
  ) -> None:
244
244
  d = type_cast_params(params,
245
245
  self.type_template)
246
+ validate_against_type_template(d,
247
+ self.type_template)
246
248
  self.save(d,
247
- doublecheck_overwrite = doublecheck_overwrite)
249
+ force = force)
248
250
 
249
251
 
250
252
  class CaptureConfig(SPECTREConfig):
@@ -26,11 +26,15 @@ class JsonHandler(BaseFileHandler):
26
26
 
27
27
  def save(self,
28
28
  d: dict,
29
- doublecheck_overwrite: bool = True) -> None:
29
+ force: bool = False) -> None:
30
30
  self.make_parent_path()
31
31
 
32
- if self.exists and doublecheck_overwrite:
33
- self.doublecheck_overwrite()
34
-
32
+ if self.exists:
33
+ if force:
34
+ pass
35
+ else:
36
+ raise RuntimeError((f"{self.file_name} already exists, write has been abandoned. "
37
+ f"You can override this functionality with `force`"))
38
+
35
39
  with open(self.file_path, 'w') as file:
36
- json.dump(d, file, indent=4)
40
+ json.dump(d, file, indent=4)
@@ -12,6 +12,7 @@ from typing import Callable, Optional
12
12
  import warnings
13
13
  from collections import OrderedDict
14
14
  from datetime import datetime
15
+ from functools import wraps
15
16
 
16
17
  from spectre_core.file_handlers.text import TextHandler
17
18
  from spectre_core.cfg import (
@@ -206,17 +207,15 @@ def configure_root_logger(process_type: str,
206
207
 
207
208
  return log_handler
208
209
 
209
- # Logger must be passed in to preserve context of the service function
210
- def log_call(logger: logging.Logger
211
- ) -> Callable:
212
- def decorator(func: Callable) -> Callable:
213
- def wrapper(*args, **kwargs):
214
- try:
215
- logger.info(f"Calling the function: {func.__name__}")
216
- return func(*args, **kwargs)
217
- except Exception as e:
218
- logger.error(f"An error occurred while calling the function: {func.__name__}",
219
- exc_info=True)
220
- raise
221
- return wrapper
222
- return decorator
210
+
211
+ def log_call(func: Callable) -> Callable:
212
+ @wraps(func)
213
+ def wrapper(*args, **kwargs):
214
+ logger = logging.getLogger(func.__module__) # Automatically get module-level logger
215
+ try:
216
+ logger.info(f"Calling the function: {func.__name__}")
217
+ return func(*args, **kwargs)
218
+ except Exception as e:
219
+ logger.error(f"Error in function: {func.__name__}", exc_info=True)
220
+ raise
221
+ return wrapper
@@ -155,7 +155,7 @@ class BaseReceiver(ABC):
155
155
  def save_params(self,
156
156
  params: list[str],
157
157
  tag: str,
158
- doublecheck_overwrite: bool = True) -> None:
158
+ force: bool = False) -> None:
159
159
  d = type_cast_params(params,
160
160
  self.type_template)
161
161
 
@@ -164,13 +164,13 @@ class BaseReceiver(ABC):
164
164
 
165
165
  self.save_capture_config(d,
166
166
  tag,
167
- doublecheck_overwrite=doublecheck_overwrite)
167
+ force = force)
168
168
 
169
169
 
170
170
  def save_capture_config(self,
171
171
  d: dict[str, Any],
172
172
  tag: str,
173
- doublecheck_overwrite: bool = True) -> None:
173
+ force: bool = False) -> None:
174
174
 
175
175
  self.validate_capture_config(d)
176
176
 
@@ -180,7 +180,7 @@ class BaseReceiver(ABC):
180
180
 
181
181
  capture_config = CaptureConfig(tag)
182
182
  capture_config.save(d,
183
- doublecheck_overwrite = doublecheck_overwrite)
183
+ force = force)
184
184
 
185
185
 
186
186
  def load_capture_config(self,
@@ -2,7 +2,7 @@
2
2
  # This file is part of SPECTRE
3
3
  # SPDX-License-Identifier: GPL-3.0-or-later
4
4
 
5
- from typing import Callable
5
+ from typing import Callable, Any
6
6
  from dataclasses import dataclass
7
7
 
8
8
  import numpy as np
@@ -23,15 +23,25 @@ class TestResults:
23
23
  # Maps each time to whether the corresponding spectrum matched analytically
24
24
  spectrum_validated: dict[float, bool] = None
25
25
 
26
+
26
27
  @property
27
28
  def num_validated_spectrums(self) -> int:
28
29
  """Counts the number of validated spectrums."""
29
30
  return sum(is_validated for is_validated in self.spectrum_validated.values())
30
31
 
32
+
31
33
  @property
32
34
  def num_invalid_spectrums(self) -> int:
33
35
  """Counts the number of spectrums that are not validated."""
34
36
  return len(self.spectrum_validated) - self.num_validated_spectrums
37
+
38
+
39
+ def jsonify(self) -> dict[str, Any]:
40
+ return {
41
+ "time_validated": self.times_validated,
42
+ "frequencies_validated": self.frequencies_validated,
43
+ "spectrum_validated": self.spectrum_validated
44
+ }
35
45
 
36
46
 
37
47
  class _AnalyticalFactory:
@@ -34,8 +34,8 @@ class EventHandler(BaseEventHandler):
34
34
 
35
35
  bin_chunk = chunk.get_file('bin')
36
36
  _LOGGER.info(f"Deleting {bin_chunk.file_path}")
37
- bin_chunk.delete(doublecheck_delete = False)
37
+ bin_chunk.delete()
38
38
 
39
39
  hdr_chunk = chunk.get_file('hdr')
40
40
  _LOGGER.info(f"Deleting {hdr_chunk.file_path}")
41
- hdr_chunk.delete(doublecheck_delete = False)
41
+ hdr_chunk.delete()
@@ -45,11 +45,11 @@ class EventHandler(BaseEventHandler):
45
45
  else:
46
46
  bin_chunk = self.previous_chunk.get_file('bin')
47
47
  _LOGGER.info(f"Deleting {bin_chunk.file_path}")
48
- bin_chunk.delete(doublecheck_delete = False)
48
+ bin_chunk.delete()
49
49
 
50
50
  hdr_chunk = self.previous_chunk.get_file('hdr')
51
51
  _LOGGER.info(f"Deleting {hdr_chunk.file_path}")
52
- hdr_chunk.delete(doublecheck_delete = False)
52
+ hdr_chunk.delete()
53
53
 
54
54
  # and reassign the current chunk to be used as the previous chunk at the next call of this method
55
55
  self.previous_chunk = chunk
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spectre-core
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: The core Python package used by the spectre program.
5
5
  Maintainer-email: Jimmy Fitzpatrick <jcfitzpatrick12@gmail.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
File without changes
File without changes
File without changes