Metadata-Version: 2.4
Name: water-column-sonar-processing
Version: 25.11.2
Summary: Processing tool for water column sonar data.
Author-email: Rudy Klucik <rudy.klucik@noaa.gov>
Maintainer-email: Rudy Klucik <rudy.klucik@noaa.gov>
License-Expression: MIT
Project-URL: Homepage, https://echo.fish
Project-URL: Repository, https://github.com/CI-CMG/water-column-sonar-processing
Project-URL: Issues, https://github.com/CI-CMG/water-column-sonar-processing/issues
Keywords: ocean,sonar,water column,zarr
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: bandit==1.8.6
Requires-Dist: black>=25.11.0
Requires-Dist: boto3==1.40.70
Requires-Dist: boto3-stubs==1.40.70
Requires-Dist: botocore==1.40.70
Requires-Dist: build>=1.3.0
Requires-Dist: echopype==0.11.0
Requires-Dist: fiona==1.10.1
Requires-Dist: geopandas==1.1.1
Requires-Dist: importlib
Requires-Dist: mock==5.2.0
Requires-Dist: moto[all]==5.1.16
Requires-Dist: moto[server]==5.1.16
Requires-Dist: multidict==6.7.0
Requires-Dist: netcdf4==1.7.3
Requires-Dist: numpy==2.3.5
Requires-Dist: pandas==2.3.3
Requires-Dist: pandas-stubs==2.3.2.250926
Requires-Dist: pooch==1.8.2
Requires-Dist: pyarrow==22.0.0
Requires-Dist: pykalman==0.10.2
Requires-Dist: python-dotenv==1.2.1
Requires-Dist: requests==2.32.5
Requires-Dist: s3fs==2025.10.0
Requires-Dist: scipy==1.16.3
Requires-Dist: setuptools==80.9.0
Requires-Dist: shapely==2.1.2
Requires-Dist: xarray==2025.11.0
Requires-Dist: zarr==3.1.3
Dynamic: license-file

# Water Column Sonar Processing

Processing tool for converting Level_0 water column sonar data to Level_1 and Level_2 derived data sets as well as
generating geospatial information.

![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/CI-CMG/water-column-sonar-processing/test_action.yaml)
![PyPI - Implementation](https://img.shields.io/pypi/v/water-column-sonar-processing) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/CI-CMG/water-column-sonar-processing) ![GitHub repo size](https://img.shields.io/github/repo-size/CI-CMG/water-column-sonar-processing)

# Setting up the Python Environment

> Python 3.12.12

# Installing Dependencies

```
source .venv/bin/activate
# or ".venv\Scripts\activate" in windows

uv pip install --upgrade pip

uv sync --all-groups

uv run pre-commit install
```

# Pytest

```
uv run pytest --cache-clear tests # -W ignore::DeprecationWarning
```

or
> pytest --cache-clear --cov=src tests/ --cov-report=xml

# Instructions

Following this tutorial:
https://packaging.python.org/en/latest/tutorials/packaging-projects/

# Pre Commit Hook

see here for installation: https://pre-commit.com/
https://dev.to/rafaelherik/using-trufflehog-and-pre-commit-hook-to-prevent-secret-exposure-edo

```
uv run pre-commit install --allow-missing-config
# or
uv run pre-commit install
```

# Black

https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/

```
Settings > Black
Execution mode: Package
Python Interpreter: .../.venv/bin/python
Use Black Formatter: X On Code reformat, X On Save
```

# Linting

Ruff
https://plugins.jetbrains.com/plugin/20574-ruff

# Colab Test

https://colab.research.google.com/drive/1KiLMueXiz9WVB9o4RuzYeGjNZ6PsZU7a#scrollTo=AayVyvpBdfIZ

# Test Coverage

TODO

# Tag a Release

Step 1 --> increment the semantic version in the zarr_manager.py "metadata" & the "pyproject.toml"

```commandline
git tag -a v25.11.1 -m "Releasing v25.11.1"
git push origin --tags
```

# To Publish To PROD

```
uv build --no-sources
uv publish
```

# TODO:

add https://pypi.org/project/setuptools-scm/
for extracting the version

# Security scanning

> bandit -r water_column_sonar_processing/

# Data Debugging

Experimental Plotting in Xarray (hvPlot):
https://colab.research.google.com/drive/18vrI9LAip4xRGEX6EvnuVFp35RAiVYwU#scrollTo=q9_j9p2yXsLV

HB0707 Zoomable Cruise:
https://hb0707.s3.us-east-1.amazonaws.com/index.html

# UV Debugging

```
uv pip install --upgrade pip
uv sync --all-groups
uv run pre-commit install
uv lock --check
uv lock
uv sync --all-groups
uv run pytest --cache-clear tests
```

# Fixing S3FS Problems

```commandline
To enable/disa asyncio for the debugger, follow the steps:
Open PyCharm
Use Shift + Shift (Search Everywhere)
In the popup type: Registry and press Enter
Find "Registry" in the list of results and click on it.
In the new popup find python.debug.asyncio.repl line and check the respective checkbox
Press Close.
Restart the IDE.
The asyncio support will be enabled in the debugger.
```

Another useful trick is to turn off "gevent" to speed up debugging:

```commandline
Python > Debugger > "Gevent Compatible"
```

# Fixing windows/wsl/ubuntu/mac git compatability

> git config --global core.filemode false
> git config --global core.autocrlf true
