Skip to content

Commit d21f547

Browse files
committed
working through precommit
1 parent 4d8fb51 commit d21f547

23 files changed

+2799
-1917
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ repos:
4141
language_version: python3
4242

4343
- repo: https://github.com/pre-commit/mirrors-mypy
44-
rev: v0.982
44+
rev: v1.15.0
4545
hooks:
4646
- id: mypy
4747
additional_dependencies: [types-setuptools,types-PyYAML]
@@ -54,3 +54,4 @@ repos:
5454
- id: codespell
5555
args:
5656
- --quiet-level=2
57+
exclude: 'particle_tracking_manager/models/opendrift/config_opendrift.py'

docs/ocean_models.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,5 +158,3 @@ The built-in models in PTM have wet/dry masks from ROMS so they have had to be s
158158

159159
* (DEFAULT) Use the typical, static, ROMS masks (`mask_rho`, `mask_u`, `mask_v`). For ROMS simulations run in [wet/dry mode](https://www.myroms.org/wiki/WET_DRY), grid cells in `mask_rho` are 0 if they are permanently dry and 1 if they are ever wet. This saves some computational time but is inconsistent with the ROMS output files in some places since the drifters may be allowed (due to the static mask) to enter a cell they wouldn't otherwise. However, it doesn't make much of a difference for simulations that aren't in the tidal flats.
160160
* Use the time-varying wet/dry masks (`wetdry_mask_rho`, `wetdry_mask_u`, `wetdry_mask_v`). This costs some more computational time but is fully consistent with the ROMS output files. This option should be selected if drifters are expected to run in the tidal flats.
161-
162-

particle_tracking_manager/__init__.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,19 @@
22

33
import logging
44

5+
56
# Set log levels for third paries to WARNING
6-
logging.getLogger('fsspec').setLevel(logging.WARNING)
7-
logging.getLogger('kerchunk').setLevel(logging.WARNING)
8-
logging.getLogger('opendrift').setLevel(logging.WARNING)
9-
logging.getLogger('numcodecs').setLevel(logging.WARNING)
7+
logging.getLogger("fsspec").setLevel(logging.WARNING)
8+
logging.getLogger("kerchunk").setLevel(logging.WARNING)
9+
logging.getLogger("opendrift").setLevel(logging.WARNING)
10+
logging.getLogger("numcodecs").setLevel(logging.WARNING)
1011

11-
from .models.opendrift.config_opendrift import OpenDriftConfig, LarvalFishModelConfig, LeewayModelConfig, OceanDriftModelConfig, OpenOilModelConfig
12+
from .config_the_manager import TheManagerConfig
13+
from .models.opendrift.config_opendrift import (
14+
LarvalFishModelConfig,
15+
LeewayModelConfig,
16+
OceanDriftModelConfig,
17+
OpenDriftConfig,
18+
OpenOilModelConfig,
19+
)
1220
from .models.opendrift.opendrift import OpenDriftModel
13-
from .config_the_manager import TheManagerConfig

particle_tracking_manager/cli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Standard library imports
44
import argparse
55
import ast
6+
67
from datetime import datetime
78

89
# Third-party imports

particle_tracking_manager/config_logging.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
"""Defines LoggerConfig to set up and manage logs."""
22

3-
"""Defines LoggerConfig to set up and manage logs."""
4-
53
# Standard library imports
64
import logging
75

@@ -11,13 +9,16 @@
119
# Local imports
1210
from .config_the_manager import LogLevelEnum, TheManagerConfig
1311

12+
1413
logger = logging.getLogger()
1514

1615

1716
class LoggerConfig(BaseModel):
1817
"""Methods for loggers."""
1918

20-
log_level: LogLevelEnum = Field(TheManagerConfig.model_json_schema()["properties"]["log_level"]["default"])
19+
log_level: LogLevelEnum = Field(
20+
TheManagerConfig.model_json_schema()["properties"]["log_level"]["default"]
21+
)
2122

2223
def close_loggers(self, logger: logging.Logger) -> None:
2324
"""Close and remove all handlers from the logger."""
@@ -36,11 +37,11 @@ def setup_logger(self, logfile_name: str) -> logging.Logger:
3637
logger.setLevel(getattr(logging, self.log_level))
3738

3839
# Add handlers from the main logger to the OpenDrift logger if not already added
39-
40+
4041
# Create file handler to save log to file
4142
file_handler = logging.FileHandler(logfile_name)
4243
fmt = "%(asctime)s %(levelname)-7s %(name)s.%(module)s.%(funcName)s:%(lineno)d: %(message)s"
43-
datefmt = '%Y-%m-%d %H:%M:%S'
44+
datefmt = "%Y-%m-%d %H:%M:%S"
4445
formatter = logging.Formatter(fmt, datefmt)
4546
file_handler.setFormatter(formatter)
4647
logger.addHandler(file_handler)
@@ -49,7 +50,7 @@ def setup_logger(self, logfile_name: str) -> logging.Logger:
4950
stream_handler = logging.StreamHandler()
5051
stream_handler.setFormatter(formatter)
5152
logger.addHandler(stream_handler)
52-
53+
5354
logger.info("Particle tracking manager simulation.")
5455
logger.info(f"Log filename: {logfile_name}")
5556
return logger

particle_tracking_manager/config_misc.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
# Standard library imports
44
import datetime
5-
import json
65
import logging
76
import pathlib
8-
from enum import Enum
9-
from typing import Any, Dict, Optional, Union
7+
8+
from typing import Self
109

1110
# Third-party imports
12-
import xarray as xr
1311
from pydantic import (
1412
BaseModel,
1513
ConfigDict,
@@ -19,17 +17,17 @@
1917
field_validator,
2018
model_validator,
2119
)
22-
from pydantic.fields import FieldInfo
23-
from typing_extensions import Self
2420

2521
# Local imports
26-
from .config_the_manager import TheManagerConfig, OutputFormatEnum
22+
from .config_the_manager import OutputFormatEnum, TheManagerConfig
23+
2724

2825
logger = logging.getLogger()
2926

3027

3128
class ParticleTrackingState(BaseModel):
3229
"""Track simulation state."""
30+
3331
has_run_setup: bool = False # this may not be required for all models
3432
has_added_reader: bool = False
3533
has_run_seeding: bool = False
@@ -40,20 +38,25 @@ def generate_default_output_file() -> str:
4038
"""Generate a default output file name based on the current date and time."""
4139
return f"output-results_{datetime.datetime.now():%Y-%m-%dT%H%M%SZ}"
4240

41+
4342
class SetupOutputFiles(BaseModel):
4443
"""Handle all changes/work on output files.
45-
44+
4645
This class runs first thing. Then logger setup.
4746
"""
4847

49-
output_file: Optional[str] = Field(TheManagerConfig.model_json_schema()["properties"]["output_file"]["default"])
50-
output_format: OutputFormatEnum = Field(TheManagerConfig.model_json_schema()["properties"]["output_format"]["default"])
48+
output_file: str | None = Field(
49+
TheManagerConfig.model_json_schema()["properties"]["output_file"]["default"]
50+
)
51+
output_format: OutputFormatEnum = Field(
52+
TheManagerConfig.model_json_schema()["properties"]["output_format"]["default"]
53+
)
5154

5255
class Config:
5356
validate_default: bool = True
5457

5558
@field_validator("output_file", mode="after")
56-
def assign_output_file_if_needed(value: Optional[str]) -> str:
59+
def assign_output_file_if_needed(value: str | None) -> str:
5760
"""Assign a default output file name if not provided."""
5861
if value is None:
5962
return generate_default_output_file()
@@ -70,9 +73,13 @@ def add_output_file_extension(self) -> Self:
7073
"""Add the appropriate file extension based on the output format."""
7174
if self.output_format is not None:
7275
if self.output_format == "netcdf":
73-
self.output_file = str(pathlib.Path(self.output_file).with_suffix(".nc"))
76+
self.output_file = str(
77+
pathlib.Path(self.output_file).with_suffix(".nc")
78+
)
7479
elif self.output_format == "parquet":
75-
self.output_file = str(pathlib.Path(self.output_file).with_suffix(".parquet"))
80+
self.output_file = str(
81+
pathlib.Path(self.output_file).with_suffix(".parquet")
82+
)
7683
else:
7784
raise ValueError(f"output_format {self.output_format} not recognized.")
7885
return self

0 commit comments

Comments
 (0)