cloudnetpy 1.77.0__tar.gz → 1.77.2__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 (132) hide show
  1. {cloudnetpy-1.77.0/cloudnetpy.egg-info → cloudnetpy-1.77.2}/PKG-INFO +1 -1
  2. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/bowtie.py +8 -0
  3. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/fd12p.py +42 -18
  4. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/utils.py +2 -0
  5. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/version.py +1 -1
  6. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2/cloudnetpy.egg-info}/PKG-INFO +1 -1
  7. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/LICENSE +0 -0
  8. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/MANIFEST.in +0 -0
  9. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/README.md +0 -0
  10. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/__init__.py +0 -0
  11. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/__init__.py +0 -0
  12. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/atmos_utils.py +0 -0
  13. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuation.py +0 -0
  14. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuations/__init__.py +0 -0
  15. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuations/gas_attenuation.py +0 -0
  16. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuations/liquid_attenuation.py +0 -0
  17. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuations/melting_attenuation.py +0 -0
  18. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/attenuations/rain_attenuation.py +0 -0
  19. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/categorize.py +0 -0
  20. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/classify.py +0 -0
  21. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/containers.py +0 -0
  22. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/disdrometer.py +0 -0
  23. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/droplet.py +0 -0
  24. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/falling.py +0 -0
  25. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/freezing.py +0 -0
  26. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/insects.py +0 -0
  27. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/itu.py +0 -0
  28. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/lidar.py +0 -0
  29. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/melting.py +0 -0
  30. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/model.py +0 -0
  31. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/mwr.py +0 -0
  32. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/categorize/radar.py +0 -0
  33. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/cli.py +0 -0
  34. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/cloudnetarray.py +0 -0
  35. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/concat_lib.py +0 -0
  36. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/constants.py +0 -0
  37. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/datasource.py +0 -0
  38. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/exceptions.py +0 -0
  39. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/__init__.py +0 -0
  40. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/basta.py +0 -0
  41. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/ceilo.py +0 -0
  42. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/ceilometer.py +0 -0
  43. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/cl61d.py +0 -0
  44. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/cloudnet_instrument.py +0 -0
  45. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/copernicus.py +0 -0
  46. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/disdrometer/__init__.py +0 -0
  47. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/disdrometer/common.py +0 -0
  48. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/disdrometer/parsivel.py +0 -0
  49. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/disdrometer/thies.py +0 -0
  50. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/galileo.py +0 -0
  51. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/hatpro.py +0 -0
  52. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/instruments.py +0 -0
  53. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/lufft.py +0 -0
  54. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/mira.py +0 -0
  55. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/mrr.py +0 -0
  56. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/nc_lidar.py +0 -0
  57. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/nc_radar.py +0 -0
  58. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/pollyxt.py +0 -0
  59. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/radiometrics.py +0 -0
  60. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/rain_e_h3.py +0 -0
  61. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/rpg.py +0 -0
  62. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/rpg_reader.py +0 -0
  63. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/toa5.py +0 -0
  64. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/vaisala.py +0 -0
  65. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/instruments/weather_station.py +0 -0
  66. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/metadata.py +0 -0
  67. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/__init__.py +0 -0
  68. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/file_handler.py +0 -0
  69. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/metadata.py +0 -0
  70. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/model_metadata.py +0 -0
  71. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/plotting/__init__.py +0 -0
  72. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/plotting/plot_meta.py +0 -0
  73. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/plotting/plot_tools.py +0 -0
  74. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/plotting/plotting.py +0 -0
  75. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/__init__.py +0 -0
  76. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/advance_methods.py +0 -0
  77. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/grid_methods.py +0 -0
  78. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/model_products.py +0 -0
  79. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/observation_products.py +0 -0
  80. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/product_resampling.py +0 -0
  81. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/products/tools.py +0 -0
  82. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/statistics/__init__.py +0 -0
  83. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/statistics/statistical_methods.py +0 -0
  84. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/__init__.py +0 -0
  85. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/__init__.py +0 -0
  86. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/conftest.py +0 -0
  87. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/__init__.py +0 -0
  88. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/main.py +0 -0
  89. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_cf/tests.py +0 -0
  90. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/__init__.py +0 -0
  91. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/main.py +0 -0
  92. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_iwc/tests.py +0 -0
  93. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/__init__.py +0 -0
  94. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/main.py +0 -0
  95. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/e2e/process_lwc/tests.py +0 -0
  96. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/__init__.py +0 -0
  97. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/conftest.py +0 -0
  98. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_advance_methods.py +0 -0
  99. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_grid_methods.py +0 -0
  100. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_model_products.py +0 -0
  101. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_observation_products.py +0 -0
  102. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_plot_tools.py +0 -0
  103. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_plotting.py +0 -0
  104. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_statistical_methods.py +0 -0
  105. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/tests/unit/test_tools.py +0 -0
  106. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/model_evaluation/utils.py +0 -0
  107. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/output.py +0 -0
  108. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/plotting/__init__.py +0 -0
  109. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/plotting/plot_meta.py +0 -0
  110. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/plotting/plotting.py +0 -0
  111. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/__init__.py +0 -0
  112. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/classification.py +0 -0
  113. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/der.py +0 -0
  114. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/drizzle.py +0 -0
  115. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/drizzle_error.py +0 -0
  116. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/drizzle_tools.py +0 -0
  117. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/epsilon.py +0 -0
  118. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/ier.py +0 -0
  119. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/iwc.py +0 -0
  120. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/lwc.py +0 -0
  121. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/mie_lu_tables.nc +0 -0
  122. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/mwr_tools.py +0 -0
  123. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/products/product_tools.py +0 -0
  124. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy/py.typed +0 -0
  125. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy.egg-info/SOURCES.txt +0 -0
  126. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy.egg-info/dependency_links.txt +0 -0
  127. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy.egg-info/entry_points.txt +0 -0
  128. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy.egg-info/requires.txt +0 -0
  129. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/cloudnetpy.egg-info/top_level.txt +0 -0
  130. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/docs/source/conf.py +0 -0
  131. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/pyproject.toml +0 -0
  132. {cloudnetpy-1.77.0 → cloudnetpy-1.77.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.77.0
3
+ Version: 1.77.2
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
@@ -1,5 +1,7 @@
1
1
  from os import PathLike
2
2
 
3
+ import numpy as np
4
+
3
5
  from cloudnetpy import output
4
6
  from cloudnetpy.constants import G_TO_KG, MM_H_TO_M_S
5
7
  from cloudnetpy.exceptions import ValidTimeStampError
@@ -59,6 +61,7 @@ def bowtie2nc(
59
61
  bowtie.add_site_geolocation()
60
62
  bowtie.add_height()
61
63
  bowtie.convert_units()
64
+ bowtie.fix_chirp_start_indices()
62
65
  bowtie.test_if_all_masked()
63
66
  attributes = output.add_time_attribute(ATTRIBUTES, bowtie.date)
64
67
  output.update_attributes(bowtie.data, attributes)
@@ -76,6 +79,11 @@ class Bowtie(NcRadar):
76
79
  self.data["rainfall_rate"].data *= MM_H_TO_M_S
77
80
  self.data["relative_humidity"].data /= 100
78
81
 
82
+ def fix_chirp_start_indices(self) -> None:
83
+ ind = self.data["chirp_start_indices"].data
84
+ self.data["chirp_start_indices"].data = np.array([int(i) for i in ind])
85
+ self.data["chirp_start_indices"].data_type = "int32"
86
+
79
87
  def check_date(self, date: str):
80
88
  if "-".join(self.date) != date:
81
89
  raise ValidTimeStampError
@@ -1,5 +1,7 @@
1
1
  import datetime
2
+ import logging
2
3
  import math
4
+ import re
3
5
  from os import PathLike
4
6
  from uuid import UUID
5
7
 
@@ -78,20 +80,31 @@ class FD12P(CSVFile):
78
80
  # In Lindenberg, format is date and time followed by Message 2 without
79
81
  # non-printable characters.
80
82
  with open(filename) as file:
83
+ invalid_lines = 0
81
84
  for line in file:
82
- columns = line.split()
83
- date = _parse_date(columns[0])
84
- time = _parse_time(columns[1])
85
- self._data["time"].append(datetime.datetime.combine(date, time))
86
- self._data["visibility"].append(_parse_int(columns[4]))
87
- self._data["synop_WaWa"].append(_parse_int(columns[7]))
88
- self._data["precipitation_rate"].append(
89
- _parse_float(columns[10])
90
- ) # mm/h
91
- self._data["precipitation_amount"].append(
92
- _parse_float(columns[11])
93
- ) # mm
94
- self._data["snowfall_amount"].append(_parse_int(columns[12])) # mm
85
+ try:
86
+ columns = line.split()
87
+ if len(columns) != 13:
88
+ msg = "Invalid column count"
89
+ raise ValueError(msg) # noqa: TRY301
90
+ date = _parse_date(columns[0])
91
+ time = _parse_time(columns[1])
92
+ visibility = _parse_int(columns[4])
93
+ synop = _parse_int(columns[7])
94
+ p_rate = _parse_float(columns[10]) # mm/h
95
+ p_amount = _parse_float(columns[11]) # mm
96
+ s_amount = _parse_int(columns[12]) # mm
97
+ self._data["time"].append(datetime.datetime.combine(date, time))
98
+ self._data["visibility"].append(visibility)
99
+ self._data["synop_WaWa"].append(synop)
100
+ self._data["precipitation_rate"].append(p_rate)
101
+ self._data["precipitation_amount"].append(p_amount)
102
+ self._data["snowfall_amount"].append(s_amount)
103
+ except ValueError:
104
+ invalid_lines += 1
105
+ continue
106
+ if invalid_lines:
107
+ logging.info("Skipped %d lines", invalid_lines)
95
108
  for key in ("visibility", "synop_WaWa", "snowfall_amount"):
96
109
  values = np.array(
97
110
  [0 if x is math.nan else x for x in self._data[key]], dtype=np.int32
@@ -124,14 +137,25 @@ class FD12P(CSVFile):
124
137
 
125
138
 
126
139
  def _parse_date(date: str) -> datetime.date:
127
- day, month, year = map(int, date.split("."))
128
- return datetime.date(year, month, day)
140
+ match = re.fullmatch(r"(?P<day>\d{2})\.(?P<month>\d{2})\.(?P<year>\d{4})", date)
141
+ if match is None:
142
+ msg = f"Invalid date: {date}"
143
+ raise ValueError(msg)
144
+ return datetime.date(int(match["year"]), int(match["month"]), int(match["day"]))
129
145
 
130
146
 
131
147
  def _parse_time(time: str) -> datetime.time:
132
- hour, minute, *rest = [int(x) for x in time.split(":")]
133
- second = rest[0] if rest else 0
134
- return datetime.time(hour, minute, second)
148
+ match = re.fullmatch(
149
+ r"(?P<hour>\d{2}):(?P<minute>\d{2})(:(?P<second>\d{2}))?", time
150
+ )
151
+ if match is None:
152
+ msg = f"Invalid time: {time}"
153
+ raise ValueError(msg)
154
+ return datetime.time(
155
+ int(match["hour"]),
156
+ int(match["minute"]),
157
+ int(match["second"]) if match["second"] is not None else 0,
158
+ )
135
159
 
136
160
 
137
161
  def _parse_int(value: str) -> float:
@@ -826,6 +826,8 @@ def get_epoch(units: str) -> Epoch:
826
826
  except IndexError:
827
827
  return fallback
828
828
  date = date.replace(",", "")
829
+ if "T" in date:
830
+ date = date[: date.index("T")]
829
831
  try:
830
832
  date_components = [int(x) for x in date.split("-")]
831
833
  except ValueError:
@@ -1,4 +1,4 @@
1
1
  MAJOR = 1
2
2
  MINOR = 77
3
- PATCH = 0
3
+ PATCH = 2
4
4
  __version__ = f"{MAJOR}.{MINOR}.{PATCH}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudnetpy
3
- Version: 1.77.0
3
+ Version: 1.77.2
4
4
  Summary: Python package for Cloudnet processing
5
5
  Author: Simo Tukiainen
6
6
  License: MIT License
File without changes
File without changes
File without changes
File without changes
File without changes