Metadata-Version: 2.4
Name: water_column_sonar_processing
Version: 25.3.0
Summary: Processing tool for water column sonar data.
Author-email: Rudy Klucik <rudy.klucik@noaa.gov>
Maintainer-email: Rudy Klucik <rudy.klucik@noaa.gov>
Project-URL: Homepage, 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
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiobotocore==2.19.0
Requires-Dist: boto3==1.36.3
Requires-Dist: botocore==1.36.3
Requires-Dist: echopype==0.9.0
Requires-Dist: fiona==1.10.1
Requires-Dist: geopandas==1.0.1
Requires-Dist: mock==5.1.0
Requires-Dist: moto[all]==5.0.27
Requires-Dist: moto[server]==5.0.27
Requires-Dist: networkx==3.4.2
Requires-Dist: numcodecs==0.13.1
Requires-Dist: numpy==1.26.4
Requires-Dist: pandas==2.2.3
Requires-Dist: pyarrow==18.1.0
Requires-Dist: pykalman==0.10.1
Requires-Dist: python-dotenv==1.0.1
Requires-Dist: requests==2.32.3
Requires-Dist: s3fs==2024.2.0
Requires-Dist: safety==3.2.14
Requires-Dist: scipy==1.14.1
Requires-Dist: setuptools
Requires-Dist: shapely==2.0.3
Requires-Dist: typing-extensions==4.10.0
Requires-Dist: xarray==2024.10.0
Requires-Dist: xbatcher==0.4.0
Requires-Dist: zarr==2.18.3
Provides-Extra: dev
Requires-Dist: bandit[toml]==1.8.0; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: flake8==7.1.1; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: matplotlib==3.10.1; extra == "dev"
Requires-Dist: pooch==1.8.2; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pyinstaller; extra == "dev"
Requires-Dist: pytest~=8.3.3; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: tqdm; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest-cov; extra == "test"
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 License](https://img.shields.io/github/license/CI-CMG/water-column-sonar-processing) ![PyPI - Downloads](https://img.shields.io/pypi/dd/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.10.12

# MacOS Pyenv Installation Instructions
  1. Install pyenv (https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv)
     1. ```brew update```
     2. ```arch -arm64 brew install pyenv```
     3. In ~/.bashrc add
        1. ```export PYENV_ROOT="$HOME/.pyenv"```
        2. ```export PATH="$PYENV_ROOT/bin:$PATH"```
        3. ```eval "$(pyenv init -)"```
     4. ```arch -arm64 brew install openssl readline sqlite3 xz zlib tcl-tk```
  2. Install pyenv-virtualenv (https://github.com/pyenv/pyenv-virtualenv)
     1. ```arch -arm64 brew install pyenv-virtualenv```
     2. In ~/.bashrc add
         1. ```eval "$(pyenv virtualenv-init -)"```
  3. Open a new terminal
  4. Install Python version
     1. ```env CONFIGURE_OPTS='--enable-optimizations' arch -arm64 pyenv install 3.10.12```
  5. Create virtual env (to delete 'pyenv uninstall 3.10.12/water-column-sonar-processing')
     1. ```pyenv virtualenv 3.10.12 water-column-sonar-processing```
  6. Set local version of python (if not done already)
     1. change directory to root of project
     2. ```pyenv local 3.10.12 water-column-sonar-processing```
     3. ```pyenv activate water-column-sonar-processing```

# Setting up IntelliJ

  1. Install the IntelliJ Python plugin
  2. Set up pyenv
     1. File -> Project Structure or CMD + ;
     2. SDKs -> + -> Add Python SDK -> Virtual Environment
     3. Select Existing Environment
     4. Choose ~/.pyenv/versions/mocking_aws/bin/python
  3. Set up Python Facet (not sure if this is required)
     1. File -> Project Structure or CMD + ;
     2. Facets -> + -> Python
     3. Set interpreter

# Installing Dependencies
```
uv pip install --upgrade pip
#uv pip install -r requirements_dev.txt
uv pip install -r pyproject.toml --extra dev
```


# Pytest
```commandline
uv run pytest tests
#pytest --disable-warnings
```
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
```
pre-commit install --allow-missing-config
```

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

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

# Test Coverage
20241124
8 failed, 32 passed, 3 skipped, 1 warning in 6.92s
20241125
5 failed, 35 passed, 3 skipped, 1 warning in 9.71s
3 failed, 38 passed, 3 skipped, 1 warning in 7.24s

# Tag a Release
Step 1 --> increment the semantic version in the zarr_manager.py "metadata" & the "pyproject.toml"
```commandline
git tag -a v25.1.8 -m "Releasing version v25.1.8"
git push origin --tags
```

# To Publish To PROD
```commandline
uv build
python -m twine upload --repository pypi dist/*
```

# 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 Cruise zoomable:
https://hb0707.s3.us-east-1.amazonaws.com/index.html
