teareduce 0.5.8__tar.gz → 0.5.9__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 (57) hide show
  1. {teareduce-0.5.8/src/teareduce.egg-info → teareduce-0.5.9}/PKG-INFO +17 -5
  2. {teareduce-0.5.8 → teareduce-0.5.9}/README.md +12 -1
  3. {teareduce-0.5.8 → teareduce-0.5.9}/pyproject.toml +9 -4
  4. teareduce-0.5.9/src/teareduce/cleanest/__init__.py +19 -0
  5. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/__main__.py +0 -1
  6. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/cosmicraycleanerapp.py +8 -1
  7. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/lacosmicpad.py +8 -1
  8. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/reviewcosmicray.py +42 -55
  9. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/version.py +1 -1
  10. {teareduce-0.5.8 → teareduce-0.5.9/src/teareduce.egg-info}/PKG-INFO +17 -5
  11. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/requires.txt +5 -3
  12. teareduce-0.5.8/src/teareduce/cleanest/__init__.py +0 -12
  13. {teareduce-0.5.8 → teareduce-0.5.9}/LICENSE.txt +0 -0
  14. {teareduce-0.5.8 → teareduce-0.5.9}/setup.cfg +0 -0
  15. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/__init__.py +0 -0
  16. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/avoid_astropy_warnings.py +0 -0
  17. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/centerchildparent.py +0 -0
  18. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/definitions.py +0 -0
  19. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/dilatemask.py +0 -0
  20. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/find_closest_true.py +0 -0
  21. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/imagedisplay.py +0 -0
  22. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolate.py +0 -0
  23. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_a.py +0 -0
  24. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_x.py +0 -0
  25. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_y.py +0 -0
  26. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolationeditor.py +0 -0
  27. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/mergemasks.py +0 -0
  28. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/modalprogressbar.py +0 -0
  29. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/parametereditor.py +0 -0
  30. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cookbook/__init__.py +0 -0
  31. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cookbook/get_cookbook_file.py +0 -0
  32. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/correct_pincushion_distortion.py +0 -0
  33. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cosmicrays.py +0 -0
  34. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/ctext.py +0 -0
  35. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/draw_rectangle.py +0 -0
  36. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/elapsed_time.py +0 -0
  37. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/histogram1d.py +0 -0
  38. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/imshow.py +0 -0
  39. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/numsplines.py +0 -0
  40. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/peaks_spectrum.py +0 -0
  41. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/polfit.py +0 -0
  42. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/robust_std.py +0 -0
  43. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/sdistortion.py +0 -0
  44. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/simulateccdexposure.py +0 -0
  45. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/sliceregion.py +0 -0
  46. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/statsummary.py +0 -0
  47. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/__init__.py +0 -0
  48. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_cleanest.py +0 -0
  49. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_sliceregion.py +0 -0
  50. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_version.py +0 -0
  51. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/wavecal.py +0 -0
  52. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/write_array_to_fits.py +0 -0
  53. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/zscale.py +0 -0
  54. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/SOURCES.txt +0 -0
  55. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/dependency_links.txt +0 -0
  56. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/entry_points.txt +0 -0
  57. {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: teareduce
3
- Version: 0.5.8
3
+ Version: 0.5.9
4
4
  Summary: Utilities for astronomical data reduction
5
5
  Author-email: Nicolás Cardiel <cardiel@ucm.es>
6
6
  License: GPL-3.0-or-later
@@ -20,16 +20,17 @@ Requires-Python: >=3.10
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE.txt
22
22
  Requires-Dist: astropy
23
- Requires-Dist: ccdproc
24
23
  Requires-Dist: lmfit
25
24
  Requires-Dist: matplotlib
26
- Requires-Dist: maskfill
27
- Requires-Dist: numpy>=1.22
25
+ Requires-Dist: numpy>=2
28
26
  Requires-Dist: requests
29
27
  Requires-Dist: rich
30
28
  Requires-Dist: rich-argparse
31
29
  Requires-Dist: scipy
32
30
  Requires-Dist: tqdm
31
+ Provides-Extra: cleanest
32
+ Requires-Dist: ccdproc; extra == "cleanest"
33
+ Requires-Dist: maskfill; extra == "cleanest"
33
34
  Provides-Extra: test
34
35
  Requires-Dist: pytest; extra == "test"
35
36
  Dynamic: license-file
@@ -67,6 +68,13 @@ $ . venv_teareduce/bin/activate
67
68
  (venv_teareduce) $
68
69
  ```
69
70
 
71
+ If you are planning to use **tea-cleanest**, you need to install this package
72
+ with extra dependencies. In this case employ:
73
+
74
+ ```shell
75
+ (venv_teareduce) $ pip install 'teareduce[cleanest]'
76
+ ```
77
+
70
78
  ### Installing the package
71
79
 
72
80
  The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
@@ -94,6 +102,10 @@ The latest development version is available through [GitHub](https://github.com/
94
102
  (venv_teareduce) $ ipython
95
103
  In [1]: import teareduce as tea
96
104
  In [2]: print(tea.__version__)
97
- 0.4.3
105
+ 0.5.9
98
106
  ```
99
107
 
108
+ Note that in PyPI there is a package called **tea** that provides utilities
109
+ unrelated to **teareduce**. However, throughout the examples described
110
+ in the documentation we are making use of ``import teareduce as tea``
111
+ to define a convenient alias.
@@ -31,6 +31,13 @@ $ . venv_teareduce/bin/activate
31
31
  (venv_teareduce) $
32
32
  ```
33
33
 
34
+ If you are planning to use **tea-cleanest**, you need to install this package
35
+ with extra dependencies. In this case employ:
36
+
37
+ ```shell
38
+ (venv_teareduce) $ pip install 'teareduce[cleanest]'
39
+ ```
40
+
34
41
  ### Installing the package
35
42
 
36
43
  The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
@@ -58,6 +65,10 @@ The latest development version is available through [GitHub](https://github.com/
58
65
  (venv_teareduce) $ ipython
59
66
  In [1]: import teareduce as tea
60
67
  In [2]: print(tea.__version__)
61
- 0.4.3
68
+ 0.5.9
62
69
  ```
63
70
 
71
+ Note that in PyPI there is a package called **tea** that provides utilities
72
+ unrelated to **teareduce**. However, throughout the examples described
73
+ in the documentation we are making use of ``import teareduce as tea``
74
+ to define a convenient alias.
@@ -2,7 +2,7 @@
2
2
  # Minimum requirements for the build system to execute.
3
3
  # (include packages imported in the different modules; otherwise
4
4
  # a ModuleNotFoundError is raised when using $ pip install -e .)
5
- requires = ["setuptools >= 61.0.0"]
5
+ requires = ["setuptools >= 61.0.0", "wheel"]
6
6
  build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
@@ -28,13 +28,12 @@ classifiers = [
28
28
  "Topic :: Scientific/Engineering :: Astronomy",
29
29
  ]
30
30
 
31
+ # Core dependencies (always installed)
31
32
  dependencies = [
32
33
  "astropy",
33
- "ccdproc",
34
34
  "lmfit",
35
35
  "matplotlib",
36
- "maskfill",
37
- "numpy >= 1.22",
36
+ "numpy >= 2",
38
37
  "requests",
39
38
  "rich",
40
39
  "rich-argparse",
@@ -43,6 +42,12 @@ dependencies = [
43
42
  ]
44
43
 
45
44
  [project.optional-dependencies]
45
+ # Version with dependencies needed to run the tea-cleanest script
46
+ cleanest = [
47
+ "ccdproc",
48
+ "maskfill",
49
+ ]
50
+
46
51
  test = [
47
52
  "pytest",
48
53
  ]
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2023-2025 Universidad Complutense de Madrid
3
+ #
4
+ # This file is part of teareduce
5
+ #
6
+ # SPDX-License-Identifier: GPL-3.0-or-later
7
+ # License-Filename: LICENSE.txt
8
+ #
9
+
10
+ """Module providing functions for cleaning astronomical images.
11
+ Includes functions for interpolating over bad pixels,
12
+ applying the L.A.Cosmic algorithm to detect cosmic ray pixels.
13
+ """
14
+
15
+ from .interpolate import interpolate
16
+ from .lacosmicpad import lacosmicpad
17
+ from .mergemasks import merge_peak_tail_masks
18
+
19
+ __all__ = ['interpolate', 'lacosmicpad', 'merge_peak_tail_masks']
@@ -10,7 +10,6 @@
10
10
  """Interactive Cosmic Ray cleaning tool."""
11
11
 
12
12
  import argparse
13
- from ast import arg
14
13
  import tkinter as tk
15
14
  from tkinter import filedialog
16
15
  from tkinter import simpledialog
@@ -17,7 +17,14 @@ from tkinter import simpledialog
17
17
  import sys
18
18
 
19
19
  from astropy.io import fits
20
- from maskfill import maskfill
20
+ try:
21
+ from maskfill import maskfill
22
+ except ModuleNotFoundError as e:
23
+ raise ModuleNotFoundError(
24
+ "The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
25
+ "Please install teareduce with the 'cleanest' extra dependencies: "
26
+ "`pip install teareduce[cleanest]`."
27
+ ) from e
21
28
  import matplotlib.pyplot as plt
22
29
  from matplotlib.backend_bases import key_press_handler
23
30
  from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
@@ -9,7 +9,14 @@
9
9
 
10
10
  """Execute LACosmic algorithm on a padded image."""
11
11
 
12
- from ccdproc import cosmicray_lacosmic
12
+ try:
13
+ from ccdproc import cosmicray_lacosmic
14
+ except ModuleNotFoundError as e:
15
+ raise ModuleNotFoundError(
16
+ "The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
17
+ "Please install teareduce with the 'cleanest' extra dependencies: "
18
+ "`pip install teareduce[cleanest]`."
19
+ ) from e
13
20
  import numpy as np
14
21
 
15
22
 
@@ -13,7 +13,14 @@ import tkinter as tk
13
13
  from tkinter import messagebox
14
14
  from tkinter import simpledialog
15
15
 
16
- from maskfill import maskfill
16
+ try:
17
+ from maskfill import maskfill
18
+ except ModuleNotFoundError as e:
19
+ raise ModuleNotFoundError(
20
+ "The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
21
+ "Please install teareduce with the 'cleanest' extra dependencies: "
22
+ "`pip install teareduce[cleanest]`."
23
+ ) from e
17
24
  import matplotlib.pyplot as plt
18
25
  from matplotlib.backend_bases import key_press_handler
19
26
  from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
@@ -371,16 +378,9 @@ class ReviewCosmicRay(ImageDisplay):
371
378
 
372
379
  def set_buttons_after_cleaning_cr(self):
373
380
  """Set the state of buttons after cleaning a cosmic ray."""
381
+ self.disable_interpolation_buttons()
374
382
  self.restore_cr_button.config(state=tk.NORMAL)
375
383
  self.remove_crosses_button.config(state=tk.DISABLED)
376
- self.interp_x_button.config(state=tk.DISABLED)
377
- self.interp_y_button.config(state=tk.DISABLED)
378
- self.interp_s_button.config(state=tk.DISABLED)
379
- self.interp_d_button.config(state=tk.DISABLED)
380
- self.interp_m_button.config(state=tk.DISABLED)
381
- self.interp_l_button.config(state=tk.DISABLED)
382
- self.interp_maskfill_button.config(state=tk.DISABLED)
383
- self.interp_aux_button.config(state=tk.DISABLED)
384
384
 
385
385
  def interp_x(self):
386
386
  """Perform x-direction interpolation to clean a cosmic ray."""
@@ -506,35 +506,21 @@ class ReviewCosmicRay(ImageDisplay):
506
506
  for iy, ix in zip(ycr_list, xcr_list):
507
507
  self.cr_labels[iy, ix] = 0
508
508
  print(f"Removed all pixels of cosmic ray {self.cr_index}")
509
- self.remove_crosses_button.config(state=tk.DISABLED)
510
- self.interp_x_button.config(state=tk.DISABLED)
511
- self.interp_y_button.config(state=tk.DISABLED)
512
- self.interp_s_button.config(state=tk.DISABLED)
513
- self.interp_d_button.config(state=tk.DISABLED)
514
- self.interp_m_button.config(state=tk.DISABLED)
515
- self.interp_l_button.config(state=tk.DISABLED)
516
- self.interp_aux_button.config(state=tk.DISABLED)
509
+ self.disable_interpolation_buttons()
517
510
  self.update_display()
518
511
 
519
512
  def restore_cr(self):
520
513
  """Restore all pixels of the current cosmic ray to their original values."""
521
514
  ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
515
+ if len(xcr_list) == 0:
516
+ print(f"No pixels to restore for cosmic ray {self.cr_index}")
517
+ return
522
518
  for iy, ix in zip(ycr_list, xcr_list):
523
519
  self.data[iy, ix] = self.data_original[iy, ix]
524
520
  self.mask_fixed[iy, ix] = False
525
- self.interp_x_button.config(state=tk.NORMAL)
526
- self.interp_y_button.config(state=tk.NORMAL)
527
- self.interp_s_button.config(state=tk.NORMAL)
528
- self.interp_d_button.config(state=tk.NORMAL)
529
- self.interp_m_button.config(state=tk.NORMAL)
530
- if self.cleandata_lacosmic is not None:
531
- if self.last_dilation is None or self.last_dilation == 0:
532
- self.interp_l_button.config(state=tk.NORMAL)
533
- self.interp_maskfill_button.config(state=tk.NORMAL)
534
- if self.auxdata is not None:
535
- self.interp_aux_button.config(state=tk.NORMAL)
536
521
  print(f"Restored all pixels of cosmic ray {self.cr_index}")
537
522
  self.num_cr_cleaned -= 1
523
+ self.enable_interpolation_buttons()
538
524
  self.remove_crosses_button.config(state=tk.NORMAL)
539
525
  self.restore_cr_button.config(state=tk.DISABLED)
540
526
  self.update_display()
@@ -550,16 +536,7 @@ class ReviewCosmicRay(ImageDisplay):
550
536
  return # important: do not remove (to avoid errors)
551
537
  self.first_plot = True
552
538
  self.restore_cr_button.config(state=tk.DISABLED)
553
- self.interp_x_button.config(state=tk.NORMAL)
554
- self.interp_y_button.config(state=tk.NORMAL)
555
- self.interp_s_button.config(state=tk.NORMAL)
556
- self.interp_d_button.config(state=tk.NORMAL)
557
- self.interp_m_button.config(state=tk.NORMAL)
558
- if self.cleandata_lacosmic is not None:
559
- if self.last_dilation is None or self.last_dilation == 0:
560
- self.interp_l_button.config(state=tk.NORMAL)
561
- if self.auxdata is not None:
562
- self.interp_aux_button.config(state=tk.NORMAL)
539
+ self.enable_interpolation_buttons()
563
540
  self.remove_crosses_button.config(state=tk.NORMAL)
564
541
  self.update_display()
565
542
 
@@ -624,25 +601,35 @@ class ReviewCosmicRay(ImageDisplay):
624
601
  print(f"Pixel ({ix+1}, {iy+1}), with signal {self.data[iy, ix]}, marked as cosmic ray.")
625
602
  xcr_list, ycr_list = np.where(self.cr_labels == self.cr_index)
626
603
  if len(xcr_list) == 0:
627
- self.interp_x_button.config(state=tk.DISABLED)
628
- self.interp_y_button.config(state=tk.DISABLED)
629
- self.interp_s_button.config(state=tk.DISABLED)
630
- self.interp_d_button.config(state=tk.DISABLED)
631
- self.interp_m_button.config(state=tk.DISABLED)
632
- self.interp_l_button.config(state=tk.DISABLED)
633
- self.interp_aux_button.config(state=tk.DISABLED)
604
+ self.disable_interpolation_buttons()
634
605
  self.remove_crosses_button.config(state=tk.DISABLED)
635
606
  else:
636
- self.interp_x_button.config(state=tk.NORMAL)
637
- self.interp_y_button.config(state=tk.NORMAL)
638
- self.interp_s_button.config(state=tk.NORMAL)
639
- self.interp_d_button.config(state=tk.NORMAL)
640
- self.interp_m_button.config(state=tk.NORMAL)
641
- if self.cleandata_lacosmic is not None:
642
- if self.last_dilation is None or self.last_dilation == 0:
643
- self.interp_l_button.config(state=tk.NORMAL)
644
- if self.auxdata is not None:
645
- self.interp_aux_button.config(state=tk.NORMAL)
607
+ self.enable_interpolation_buttons()
646
608
  self.remove_crosses_button.config(state=tk.NORMAL)
647
609
  # Update the display to reflect the change
648
610
  self.update_display()
611
+
612
+ def disable_interpolation_buttons(self):
613
+ """Disable all interpolation buttons."""
614
+ self.interp_x_button.config(state=tk.DISABLED)
615
+ self.interp_y_button.config(state=tk.DISABLED)
616
+ self.interp_s_button.config(state=tk.DISABLED)
617
+ self.interp_d_button.config(state=tk.DISABLED)
618
+ self.interp_m_button.config(state=tk.DISABLED)
619
+ self.interp_l_button.config(state=tk.DISABLED)
620
+ self.interp_maskfill_button.config(state=tk.DISABLED)
621
+ self.interp_aux_button.config(state=tk.DISABLED)
622
+
623
+ def enable_interpolation_buttons(self):
624
+ """Enable all interpolation buttons."""
625
+ self.interp_x_button.config(state=tk.NORMAL)
626
+ self.interp_y_button.config(state=tk.NORMAL)
627
+ self.interp_s_button.config(state=tk.NORMAL)
628
+ self.interp_d_button.config(state=tk.NORMAL)
629
+ self.interp_m_button.config(state=tk.NORMAL)
630
+ if self.cleandata_lacosmic is not None:
631
+ if self.last_dilation is None or self.last_dilation == 0:
632
+ self.interp_l_button.config(state=tk.NORMAL)
633
+ self.interp_maskfill_button.config(state=tk.NORMAL)
634
+ if self.auxdata is not None:
635
+ self.interp_aux_button.config(state=tk.NORMAL)
@@ -9,7 +9,7 @@
9
9
  #
10
10
  """Module to define the version of the teareduce package."""
11
11
 
12
- VERSION = '0.5.8'
12
+ VERSION = '0.5.9'
13
13
 
14
14
 
15
15
  def main():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: teareduce
3
- Version: 0.5.8
3
+ Version: 0.5.9
4
4
  Summary: Utilities for astronomical data reduction
5
5
  Author-email: Nicolás Cardiel <cardiel@ucm.es>
6
6
  License: GPL-3.0-or-later
@@ -20,16 +20,17 @@ Requires-Python: >=3.10
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE.txt
22
22
  Requires-Dist: astropy
23
- Requires-Dist: ccdproc
24
23
  Requires-Dist: lmfit
25
24
  Requires-Dist: matplotlib
26
- Requires-Dist: maskfill
27
- Requires-Dist: numpy>=1.22
25
+ Requires-Dist: numpy>=2
28
26
  Requires-Dist: requests
29
27
  Requires-Dist: rich
30
28
  Requires-Dist: rich-argparse
31
29
  Requires-Dist: scipy
32
30
  Requires-Dist: tqdm
31
+ Provides-Extra: cleanest
32
+ Requires-Dist: ccdproc; extra == "cleanest"
33
+ Requires-Dist: maskfill; extra == "cleanest"
33
34
  Provides-Extra: test
34
35
  Requires-Dist: pytest; extra == "test"
35
36
  Dynamic: license-file
@@ -67,6 +68,13 @@ $ . venv_teareduce/bin/activate
67
68
  (venv_teareduce) $
68
69
  ```
69
70
 
71
+ If you are planning to use **tea-cleanest**, you need to install this package
72
+ with extra dependencies. In this case employ:
73
+
74
+ ```shell
75
+ (venv_teareduce) $ pip install 'teareduce[cleanest]'
76
+ ```
77
+
70
78
  ### Installing the package
71
79
 
72
80
  The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
@@ -94,6 +102,10 @@ The latest development version is available through [GitHub](https://github.com/
94
102
  (venv_teareduce) $ ipython
95
103
  In [1]: import teareduce as tea
96
104
  In [2]: print(tea.__version__)
97
- 0.4.3
105
+ 0.5.9
98
106
  ```
99
107
 
108
+ Note that in PyPI there is a package called **tea** that provides utilities
109
+ unrelated to **teareduce**. However, throughout the examples described
110
+ in the documentation we are making use of ``import teareduce as tea``
111
+ to define a convenient alias.
@@ -1,14 +1,16 @@
1
1
  astropy
2
- ccdproc
3
2
  lmfit
4
3
  matplotlib
5
- maskfill
6
- numpy>=1.22
4
+ numpy>=2
7
5
  requests
8
6
  rich
9
7
  rich-argparse
10
8
  scipy
11
9
  tqdm
12
10
 
11
+ [cleanest]
12
+ ccdproc
13
+ maskfill
14
+
13
15
  [test]
14
16
  pytest
@@ -1,12 +0,0 @@
1
- #
2
- # Copyright 2023-2025 Universidad Complutense de Madrid
3
- #
4
- # This file is part of teareduce
5
- #
6
- # SPDX-License-Identifier: GPL-3.0-or-later
7
- # License-Filename: LICENSE.txt
8
- #
9
-
10
- from .interpolate import interpolate
11
- from .lacosmicpad import lacosmicpad
12
- from .mergemasks import merge_peak_tail_masks
File without changes
File without changes