rashdf 0.2.0__tar.gz → 0.2.1__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rashdf
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Read data from HEC-RAS HDF files.
5
5
  Project-URL: repository, https://github.com/fema-ffrd/rashdf
6
6
  Classifier: Development Status :: 4 - Beta
@@ -12,7 +12,7 @@ classifiers = [
12
12
  "Programming Language :: Python :: 3.11",
13
13
  "Programming Language :: Python :: 3.12",
14
14
  ]
15
- version = "0.2.0"
15
+ version = "0.2.1"
16
16
  dependencies = ["h5py", "geopandas", "pyarrow"]
17
17
 
18
18
  [project.optional-dependencies]
@@ -8,23 +8,34 @@ from typing import Any, List, Tuple, Union, Optional
8
8
 
9
9
 
10
10
  def parse_ras_datetime(datetime_str: str) -> datetime:
11
- """Parse a datetime string from a RAS file into a datetime object.
11
+ """
12
+ Parse a datetime string from a RAS file into a datetime object. If the datetime has
13
+ a time of 2400, then it is converted to midnight of the next day.
12
14
 
13
15
  Parameters
14
16
  ----------
15
- datetime_str (str): The datetime string to be parsed. The string should be in the format "ddMMMyyyy HHmm".
17
+ datetime_str (str): The datetime string to be parsed. The string should be in the format "ddMMMyyyy HH:mm:ss".
16
18
 
17
19
  Returns
18
20
  -------
19
21
  datetime: A datetime object representing the parsed datetime.
20
22
  """
21
23
  format = "%d%b%Y %H:%M:%S"
22
- return datetime.strptime(datetime_str, format)
24
+
25
+ if datetime_str.endswith("24:00:00"):
26
+ datetime_str = datetime_str.replace("24:00:00", "00:00:00")
27
+ parsed_dt = datetime.strptime(datetime_str, format)
28
+ parsed_dt += timedelta(days=1)
29
+ else:
30
+ parsed_dt = datetime.strptime(datetime_str, format)
31
+
32
+ return parsed_dt
23
33
 
24
34
 
25
35
  def parse_ras_simulation_window_datetime(datetime_str) -> datetime:
26
36
  """
27
- Parse a datetime string from a RAS simulation window into a datetime object.
37
+ Parse a datetime string from a RAS simulation window into a datetime object.If the datetime has a
38
+ time of 2400, then it is converted to midnight of the next day.
28
39
 
29
40
  Parameters
30
41
  ----------
@@ -35,7 +46,15 @@ def parse_ras_simulation_window_datetime(datetime_str) -> datetime:
35
46
  datetime: A datetime object representing the parsed datetime.
36
47
  """
37
48
  format = "%d%b%Y %H%M"
38
- return datetime.strptime(datetime_str, format)
49
+
50
+ if datetime_str.endswith("2400"):
51
+ datetime_str = datetime_str.replace("2400", "0000")
52
+ parsed_dt = datetime.strptime(datetime_str, format)
53
+ parsed_dt += timedelta(days=1)
54
+ else:
55
+ parsed_dt = datetime.strptime(datetime_str, format)
56
+
57
+ return parsed_dt
39
58
 
40
59
 
41
60
  def parse_run_time_window(window: str) -> Tuple[datetime, datetime]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rashdf
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Read data from HEC-RAS HDF files.
5
5
  Project-URL: repository, https://github.com/fema-ffrd/rashdf
6
6
  Classifier: Development Status :: 4 - Beta
@@ -15,13 +15,35 @@ def test_convert_ras_hdf_value():
15
15
  assert utils.convert_ras_hdf_value(b"15Mar2024 16:39:01") == datetime(
16
16
  2024, 3, 15, 16, 39, 1
17
17
  )
18
+ assert utils.convert_ras_hdf_value(b"15Mar2024 24:00:00") == datetime(
19
+ 2024, 3, 16, 0, 0, 0
20
+ )
18
21
  assert utils.convert_ras_hdf_value(b"15Mar2024 16:39:01 to 16Mar2024 16:39:01") == [
19
22
  datetime(2024, 3, 15, 16, 39, 1),
20
23
  datetime(2024, 3, 16, 16, 39, 1),
21
24
  ]
25
+ assert utils.convert_ras_hdf_value(b"18Mar2024 24:00:00 to 19Mar2024 24:00:00") == [
26
+ datetime(2024, 3, 19, 0, 0, 0),
27
+ datetime(2024, 3, 20, 0, 0, 0),
28
+ ]
22
29
  assert utils.convert_ras_hdf_value(b"01:23:45") == timedelta(
23
30
  hours=1, minutes=23, seconds=45
24
31
  )
32
+ assert utils.convert_ras_hdf_value(b"15Mar2024 2400") == datetime(
33
+ 2024, 3, 16, 0, 0, 0
34
+ )
35
+ assert utils.convert_ras_hdf_value(b"15Mar2024 2315") == datetime(
36
+ 2024, 3, 15, 23, 15, 0
37
+ )
38
+
39
+ assert utils.convert_ras_hdf_value(b"15Mar2024 1639 to 16Mar2024 1639") == [
40
+ datetime(2024, 3, 15, 16, 39, 0),
41
+ datetime(2024, 3, 16, 16, 39, 0),
42
+ ]
43
+ assert utils.convert_ras_hdf_value(b"18Mar2024 2400 to 19Mar2024 2400") == [
44
+ datetime(2024, 3, 19, 0, 0, 0),
45
+ datetime(2024, 3, 20, 0, 0, 0),
46
+ ]
25
47
 
26
48
 
27
49
  def test_df_datetimes_to_str():
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes