dkist-processing-ops 1.6.12__tar.gz → 1.6.14__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.

Potentially problematic release.


This version of dkist-processing-ops might be problematic. Click here for more details.

Files changed (27) hide show
  1. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/PKG-INFO +1 -1
  2. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/_version.py +2 -2
  3. dkist_processing_ops-1.6.14/dkist_processing_ops/tasks/read_memory_leak.py +74 -0
  4. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/PKG-INFO +1 -1
  5. dkist_processing_ops-1.6.12/dkist_processing_ops/tasks/read_memory_leak.py +0 -79
  6. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/.gitignore +0 -0
  7. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/.pre-commit-config.yaml +0 -0
  8. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/LICENSE.rst +0 -0
  9. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/MANIFEST.in +0 -0
  10. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/README.rst +0 -0
  11. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/bitbucket-pipelines.yml +0 -0
  12. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/__init__.py +0 -0
  13. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/dags/scale.py +0 -0
  14. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/tasks/__init__.py +0 -0
  15. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/tasks/wait.py +0 -0
  16. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/tests/__init__.py +0 -0
  17. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/tests/test_workflows.py +0 -0
  18. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/workflows/__init__.py +0 -0
  19. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/workflows/memory_leak.py +0 -0
  20. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops/workflows/smoke.py +0 -0
  21. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/SOURCES.txt +0 -0
  22. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/dependency_links.txt +0 -0
  23. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/not-zip-safe +0 -0
  24. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/requires.txt +0 -0
  25. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/dkist_processing_ops.egg-info/top_level.txt +0 -0
  26. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/pyproject.toml +0 -0
  27. {dkist_processing_ops-1.6.12 → dkist_processing_ops-1.6.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-ops
3
- Version: 1.6.12
3
+ Version: 1.6.14
4
4
  Summary: Automated Processing smoke test and operations workflows
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD 3-Clause
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.6.12'
16
- __version_tuple__ = version_tuple = (1, 6, 12)
15
+ __version__ = version = '1.6.14'
16
+ __version_tuple__ = version_tuple = (1, 6, 14)
@@ -0,0 +1,74 @@
1
+ import gc
2
+ from abc import ABC
3
+ from pathlib import Path
4
+
5
+ import numpy as np
6
+ from astropy.io import fits
7
+ from dkist_processing_common.codecs.fits import fits_hdu_decoder
8
+ from dkist_processing_common.codecs.path import path_decoder
9
+ from dkist_processing_common.models.tags import Tag
10
+ from dkist_processing_common.tasks import WorkflowTaskBase
11
+
12
+
13
+ def generated_hdu_decoder(path: Path) -> fits.PrimaryHDU | fits.CompImageHDU:
14
+ data = np.random.rand(4096, 4096)
15
+ hdu = fits.CompImageHDU(data)
16
+ return hdu
17
+
18
+
19
+ def fits_garbage_collect_hdu_decoder(path: Path) -> fits.PrimaryHDU | fits.CompImageHDU:
20
+ hdul = fits.open(path)
21
+ hdu = fits.CompImageHDU(header=hdul[1].header, data=hdul[1].data)
22
+ hdul.close()
23
+ del hdul
24
+ gc.collect()
25
+ return hdu
26
+
27
+
28
+ class FitsDataRead(WorkflowTaskBase, ABC):
29
+ @property
30
+ def run_type(self):
31
+ return self.metadata_store_recipe_run_configuration().get("run_type", "file_read")
32
+
33
+ def run(self) -> None:
34
+ if self.run_type == "garbage_collect_read":
35
+ hdus = self.read(
36
+ tags=[Tag.input(), Tag.frame()], decoder=fits_garbage_collect_hdu_decoder
37
+ )
38
+ for hdu in hdus:
39
+ h = hdu.header
40
+ d = hdu.data
41
+
42
+ if self.run_type == "garbage_collect_task":
43
+ filepaths = self.read(tags=[Tag.input(), Tag.frame()], decoder=path_decoder)
44
+ for filepath in filepaths:
45
+ hdu = fits_garbage_collect_hdu_decoder(filepath)
46
+ h = hdu.header
47
+ d = hdu.data
48
+
49
+ if self.run_type == "file_read":
50
+ hdus = self.read(tags=[Tag.input(), Tag.frame()], decoder=fits_hdu_decoder)
51
+ for hdu in hdus:
52
+ h = hdu.header
53
+ d = hdu.data
54
+ #
55
+ # if self.run_type == "generated_read":
56
+ # hdus = self.read(tags=[Tag.input(), Tag.frame()], decoder=generated_hdu_decoder)
57
+ # for hdu in hdus:
58
+ # h = hdu.header
59
+ # d = hdu.data
60
+ #
61
+ # if self.run_type == "file_task":
62
+ # filepaths = self.read(tags=[Tag.input(), Tag.frame()], decoder=path_decoder)
63
+ # for filepath in filepaths:
64
+ # hdu = fits.open(filepath)[1]
65
+ # h = hdu.header
66
+ # d = hdu.data
67
+ #
68
+ # if self.run_type == "generated_task":
69
+ # filepaths = self.read(tags=[Tag.input(), Tag.frame()], decoder=path_decoder)
70
+ # for filepath in filepaths:
71
+ # data = np.random.rand(4096, 4096)
72
+ # hdu = fits.CompImageHDU(data)
73
+ # h = hdu.header
74
+ # d = hdu.data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-ops
3
- Version: 1.6.12
3
+ Version: 1.6.14
4
4
  Summary: Automated Processing smoke test and operations workflows
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD 3-Clause
@@ -1,79 +0,0 @@
1
- import logging
2
- import os
3
- import sys
4
- from abc import ABC
5
- from pathlib import Path
6
- from typing import Any
7
- from typing import Generator
8
-
9
- import numpy as np
10
- from astropy.io import fits
11
- from dkist_processing_common.codecs.path import path_decoder
12
- from dkist_processing_common.models.tags import Tag
13
- from dkist_processing_common.tasks import tag_type_hint
14
- from dkist_processing_common.tasks import WorkflowTaskBase
15
-
16
-
17
- def yield_from_read(
18
- self, tags: tag_type_hint, decoder: callable = path_decoder, **decoder_kwargs
19
- ) -> Generator[Any, None, None]:
20
- yield from (decoder(p, **decoder_kwargs) for p in self.scratch.find_all(tags=tags))
21
-
22
-
23
- def binary_decoder(path: Path) -> bytes:
24
- """Generates a random blob of binary data."""
25
- data = os.urandom(67109008) # This is the size of the VBI data arrays, in bytes
26
- logging.info(f"Size of data: {sys.getsizeof(data)}")
27
- logging.info(f"Bytes of data: {len(data)}")
28
- return data
29
-
30
-
31
- def fits_smart_hdu_decoder(path: Path) -> fits.PrimaryHDU | fits.CompImageHDU:
32
- """Read a Path with `fits` to produce an `HDUList`."""
33
- hdu_list = fits.open(path, lazy_load_hdus=False)
34
- return hdu_list[1]
35
-
36
-
37
- class FitsDataRead(WorkflowTaskBase, ABC):
38
- @property
39
- def data_type(self) -> str:
40
- """Recipe run configuration indicating how fFITS data should be read."""
41
- return self.metadata_store_recipe_run_configuration().get("data_type", "fits")
42
-
43
- @property
44
- def read_method(self):
45
- return self.metadata_store_recipe_run_configuration().get("read_method", "return")
46
-
47
- @property
48
- def manipulate_data(self):
49
- return self.metadata_store_recipe_run_configuration().get("manipulate_data", True)
50
-
51
- def run(self) -> None:
52
- if self.data_type == "fits":
53
- if self.read_method == "return":
54
- hdus = self.read(tags=[Tag.input(), Tag.frame()], decoder=fits_smart_hdu_decoder)
55
- for hdu in hdus:
56
- h = hdu.header
57
- d = hdu.data
58
- if self.manipulate_data:
59
- total = np.sum(d)
60
- if self.read_method == "yield":
61
- hdus = yield_from_read(
62
- self, tags=[Tag.input(), Tag.frame()], decoder=fits_smart_hdu_decoder
63
- )
64
- for hdu in hdus:
65
- h = hdu.header
66
- d = hdu.data
67
- if self.manipulate_data:
68
- total = np.sum(d)
69
- if self.data_type == "binary":
70
- if self.read_method == "return":
71
- hdus = self.read(tags=[Tag.input(), Tag.frame()], decoder=binary_decoder)
72
- for hdu in hdus:
73
- data = hdu
74
- if self.read_method == "yield":
75
- hdus = yield_from_read(
76
- self, tags=[Tag.input(), Tag.frame()], decoder=binary_decoder
77
- )
78
- for hdu in hdus:
79
- data = hdu