eo-tides 0.6.1__tar.gz → 0.6.2.dev7__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 (82) hide show
  1. eo_tides-0.6.2.dev7/.editorconfig +5 -0
  2. eo_tides-0.6.2.dev7/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. eo_tides-0.6.2.dev7/.github/ISSUE_TEMPLATE/feature_request.md +13 -0
  4. eo_tides-0.6.2.dev7/.github/actions/setup-python-env/action.yml +44 -0
  5. eo_tides-0.6.2.dev7/.github/workflows/check-links.yml +33 -0
  6. eo_tides-0.6.2.dev7/.github/workflows/main.yml +108 -0
  7. eo_tides-0.6.2.dev7/.github/workflows/on-release-main.yml +82 -0
  8. eo_tides-0.6.2.dev7/.github/workflows/paper.yml +47 -0
  9. eo_tides-0.6.2.dev7/.gitignore +143 -0
  10. eo_tides-0.6.2.dev7/.pre-commit-config.yaml +27 -0
  11. eo_tides-0.6.2.dev7/CITATION.cff +30 -0
  12. eo_tides-0.6.2.dev7/CONTRIBUTING.md +102 -0
  13. eo_tides-0.6.2.dev7/Dockerfile +21 -0
  14. eo_tides-0.6.2.dev7/Makefile +105 -0
  15. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/PKG-INFO +18 -18
  16. eo_tides-0.6.2.dev7/codecov.yaml +9 -0
  17. eo_tides-0.6.2.dev7/docs/api.md +5 -0
  18. eo_tides-0.6.2.dev7/docs/assets/dtu23_download.jpg +0 -0
  19. eo_tides-0.6.2.dev7/docs/assets/eo-tides-abstract.gif +0 -0
  20. eo_tides-0.6.2.dev7/docs/assets/eo-tides-logo-128.png +0 -0
  21. eo_tides-0.6.2.dev7/docs/assets/eo-tides-logo-256.png +0 -0
  22. eo_tides-0.6.2.dev7/docs/assets/eo-tides-logo.gif +0 -0
  23. eo_tides-0.6.2.dev7/docs/assets/eo-tides-logo.png +0 -0
  24. eo_tides-0.6.2.dev7/docs/assets/eot20_download.jpg +0 -0
  25. eo_tides-0.6.2.dev7/docs/assets/fes_ftp.jpg +0 -0
  26. eo_tides-0.6.2.dev7/docs/assets/fes_myproducts.jpg +0 -0
  27. eo_tides-0.6.2.dev7/docs/assets/fes_productselection.jpg +0 -0
  28. eo_tides-0.6.2.dev7/docs/assets/fes_subscriptions.jpg +0 -0
  29. eo_tides-0.6.2.dev7/docs/assets/got_download.jpg +0 -0
  30. eo_tides-0.6.2.dev7/docs/assets/tide_models_clipped.jpg +0 -0
  31. eo_tides-0.6.2.dev7/docs/assets/tpxo_download.jpg +0 -0
  32. eo_tides-0.6.2.dev7/docs/changelog.md +111 -0
  33. eo_tides-0.6.2.dev7/docs/credits.md +42 -0
  34. eo_tides-0.6.2.dev7/docs/index.md +59 -0
  35. eo_tides-0.6.2.dev7/docs/install.md +49 -0
  36. eo_tides-0.6.2.dev7/docs/migration.md +104 -0
  37. eo_tides-0.6.2.dev7/docs/notebooks/Case_study_intertidal.ipynb +1288 -0
  38. eo_tides-0.6.2.dev7/docs/notebooks/Model_tides.ipynb +1700 -0
  39. eo_tides-0.6.2.dev7/docs/notebooks/Satellite_data.ipynb +903 -0
  40. eo_tides-0.6.2.dev7/docs/notebooks/Tide_statistics.ipynb +794 -0
  41. eo_tides-0.6.2.dev7/docs/notebooks/Validating_tides.ipynb +995 -0
  42. eo_tides-0.6.2.dev7/docs/setup.md +381 -0
  43. eo_tides-0.6.2.dev7/docs/stylesheets/extra.css +26 -0
  44. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/model.py +32 -18
  45. eo_tides-0.6.2.dev7/mkdocs.yml +127 -0
  46. eo_tides-0.6.2.dev7/paper/benchmarking.ipynb +267 -0
  47. eo_tides-0.6.2.dev7/paper/figures/joss_abstract.png +0 -0
  48. eo_tides-0.6.2.dev7/paper/figures/joss_fig_gesla.png +0 -0
  49. eo_tides-0.6.2.dev7/paper/figures/joss_fig_list.png +0 -0
  50. eo_tides-0.6.2.dev7/paper/figures/joss_fig_pixel.png +0 -0
  51. eo_tides-0.6.2.dev7/paper/figures/joss_fig_stats.png +0 -0
  52. eo_tides-0.6.2.dev7/paper/paper.bib +229 -0
  53. eo_tides-0.6.2.dev7/paper/paper.md +113 -0
  54. eo_tides-0.6.2.dev7/paper/paper.pdf +0 -0
  55. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/pyproject.toml +3 -3
  56. eo_tides-0.6.2.dev7/tests/conftest.py +144 -0
  57. eo_tides-0.6.2.dev7/tests/data/GESLA3_ALL 2.csv +4 -0
  58. eo_tides-0.6.2.dev7/tests/data/IDO71013_2020.csv +8785 -0
  59. eo_tides-0.6.2.dev7/tests/data/broome-62650-aus-bom +17098 -0
  60. eo_tides-0.6.2.dev7/tests/data/san_diego_ca-569a-usa-uhslc +8801 -0
  61. eo_tides-0.6.2.dev7/tests/data/sydney_fort_denison-60370-aus-bom +8730 -0
  62. eo_tides-0.6.2.dev7/tests/data/tide_models.tar.gz +0 -0
  63. eo_tides-0.6.2.dev7/tests/testing.ipynb +2712 -0
  64. eo_tides-0.6.2.dev7/uv.lock +3449 -0
  65. eo_tides-0.6.1/eo_tides.egg-info/PKG-INFO +0 -121
  66. eo_tides-0.6.1/eo_tides.egg-info/SOURCES.txt +0 -19
  67. eo_tides-0.6.1/eo_tides.egg-info/dependency_links.txt +0 -1
  68. eo_tides-0.6.1/eo_tides.egg-info/requires.txt +0 -23
  69. eo_tides-0.6.1/eo_tides.egg-info/top_level.txt +0 -1
  70. eo_tides-0.6.1/setup.cfg +0 -4
  71. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/LICENSE +0 -0
  72. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/README.md +0 -0
  73. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/__init__.py +0 -0
  74. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/eo.py +0 -0
  75. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/stats.py +0 -0
  76. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/utils.py +0 -0
  77. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/eo_tides/validation.py +0 -0
  78. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/tests/test_eo.py +0 -0
  79. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/tests/test_model.py +0 -0
  80. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/tests/test_stats.py +0 -0
  81. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/tests/test_utils.py +0 -0
  82. {eo_tides-0.6.1 → eo_tides-0.6.2.dev7}/tests/test_validation.py +0 -0
@@ -0,0 +1,5 @@
1
+ max_line_length = 120
2
+
3
+ [*.json]
4
+ indent_style = space
5
+ indent_size = 4
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a bug or problem
4
+ title: "Bug report: "
5
+ labels: bug
6
+ assignees: ""
7
+ ---
8
+
9
+ **Expected behavior**
10
+ A clear and concise description of what you expected to happen.
11
+
12
+ **Describe the problem**
13
+ A clear and concise description of the bug or problem (i.e. what actually happens).
14
+
15
+ **To reproduce**
16
+ Steps to reproduce the behavior:
17
+
18
+ 1. Run function/notebook '....'
19
+ 2. See error '....'
20
+ 3. A minimum reproducible code example is greatly appreciated!
21
+
22
+ **Screenshots**
23
+ If applicable, add screenshots to help explain your problem.
24
+
25
+ **Environment:**
26
+
27
+ - OS: [e.g. Linux, Windows]
28
+ - `eo-tides` version: [e.g. `v0.1.0`]
29
+
30
+ **Additional context**
31
+ Add any other context about the problem here.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: Feature suggestion
3
+ about: Suggest an idea for this project
4
+ title: "Feature suggestion: "
5
+ labels: enhancement
6
+ assignees: ""
7
+ ---
8
+
9
+ **Describe your idea or suggestion**
10
+ A clear and concise description of your idea or suggestion.
11
+
12
+ **Additional context**
13
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,44 @@
1
+ name: "Setup Python Environment"
2
+ description: "Set up Python environment for the given Python version"
3
+
4
+ inputs:
5
+ python-version:
6
+ description: "Python version to use"
7
+ required: true
8
+ default: "3.10"
9
+ resolution:
10
+ description: "Resolution strategy"
11
+ required: true
12
+ default: "frozen"
13
+ uv-version:
14
+ description: "uv version to use"
15
+ required: true
16
+ default: "0.6.2"
17
+
18
+ runs:
19
+ using: "composite"
20
+ steps:
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ inputs.python-version }}
24
+
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@v2
27
+ with:
28
+ version: ${{ inputs.uv-version }}
29
+ enable-cache: "true"
30
+ cache-suffix: ${{ inputs.python-version }}-${{ inputs.resolution }}
31
+
32
+ # Install eo-tides and all required dependencies.
33
+ # --all-extras installs all optional dependencies.
34
+ # If resolution method is "frozen", then use existing lockfile.
35
+ # Otherwise, pass resolution method to specify "highest"
36
+ # dependencies or "lowest-direct" dependencies
37
+ - name: Install Python dependencies
38
+ run: |
39
+ if [ "${{ inputs.resolution }}" == "frozen" ]; then
40
+ uv sync --frozen --all-extras
41
+ else
42
+ uv sync --all-extras --resolution ${{ inputs.resolution }}
43
+ fi
44
+ shell: bash
@@ -0,0 +1,33 @@
1
+ name: Check for broken links
2
+
3
+ on:
4
+ workflow_dispatch: # Triggered manually
5
+
6
+ jobs:
7
+ link-checker:
8
+ runs-on: ubuntu-latest
9
+ permissions:
10
+ issues: write
11
+ steps:
12
+ - name: Checkout repository
13
+ uses: actions/checkout@v4
14
+ with:
15
+ submodules: true
16
+
17
+ - name: Check links
18
+ id: check-links
19
+ uses: lycheeverse/lychee-action@v2
20
+ with:
21
+ fail: false
22
+ output: /tmp/broken-links-report.md
23
+ args: >
24
+ --exclude-path ./tests/testing.ipynb
25
+ **/*.md **/*.ipynb **/*.yaml **/*.yml
26
+
27
+ - name: Create issue
28
+ if: steps.check-links.outputs.exit_code != 0
29
+ uses: peter-evans/create-issue-from-file@v5
30
+ with:
31
+ title: Fix broken links
32
+ content-filepath: /tmp/broken-links-report.md
33
+ labels: link-checker
@@ -0,0 +1,108 @@
1
+ name: Main
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths-ignore:
8
+ - "paper/**"
9
+ - "README.md"
10
+ pull_request:
11
+ types: [opened, synchronize, reopened]
12
+ paths-ignore:
13
+ - "paper/**"
14
+ - "README.md"
15
+
16
+ env:
17
+ EO_TIDES_TIDE_MODELS: ./tests/data/tide_models
18
+
19
+ jobs:
20
+ quality:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Check out
24
+ uses: actions/checkout@v4
25
+
26
+ - uses: actions/cache@v4
27
+ with:
28
+ path: ~/.cache/pre-commit
29
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
30
+
31
+ - name: Set up the environment
32
+ uses: ./.github/actions/setup-python-env
33
+
34
+ - name: Run checks
35
+ run: make check
36
+
37
+ run-tests:
38
+ runs-on: ubuntu-latest
39
+ strategy:
40
+ matrix:
41
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
42
+ resolution: ["highest", "lowest-direct"]
43
+ exclude: # Temporarily excluded due to 3.13 only supported by Numpy >=2.0
44
+ - python-version: "3.13"
45
+ resolution: "lowest-direct"
46
+ fail-fast: false
47
+ max-parallel: 10
48
+ defaults:
49
+ run:
50
+ shell: bash
51
+ steps:
52
+ - name: Check out
53
+ uses: actions/checkout@v4
54
+
55
+ - name: Extract model data
56
+ run: |
57
+ # Extract tide modelling test files
58
+ tar -xvzf ./tests/data/tide_models.tar.gz -C ./tests/data
59
+
60
+ - name: Set up the environment
61
+ uses: ./.github/actions/setup-python-env
62
+ with:
63
+ python-version: ${{ matrix.python-version }}
64
+ resolution: ${{ matrix.resolution }}
65
+
66
+ - name: Run Python unit tests
67
+ timeout-minutes: 10
68
+ run: uv run python -m pytest tests --cov --cov-config=pyproject.toml --cov-report=xml --verbose
69
+
70
+ - name: Run Jupyter Notebook integration tests
71
+ timeout-minutes: 10
72
+ run: uv run python -m pytest --nbval-lax docs/notebooks/
73
+
74
+ - name: Check typing
75
+ run: uv run mypy
76
+
77
+ - name: Upload coverage reports to Codecov with GitHub Action on Python 3.10
78
+ uses: codecov/codecov-action@v4
79
+ if: ${{ matrix.python-version == '3.10' && matrix.resolution == 'highest' }}
80
+ env:
81
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
82
+
83
+ check-docs:
84
+ runs-on: ubuntu-latest
85
+ steps:
86
+ - name: Check out
87
+ uses: actions/checkout@v4
88
+
89
+ - name: Set up the environment
90
+ uses: ./.github/actions/setup-python-env
91
+
92
+ - name: Check if documentation can be built
93
+ run: uv run mkdocs build -s
94
+
95
+ # Only deploy docs if on push and if all tests pass
96
+ deploy-docs:
97
+ if: github.event_name == 'push'
98
+ needs: [quality, check-docs, run-tests]
99
+ runs-on: ubuntu-latest
100
+ steps:
101
+ - name: Check out
102
+ uses: actions/checkout@v4
103
+
104
+ - name: Set up the environment
105
+ uses: ./.github/actions/setup-python-env
106
+
107
+ - name: Deploy documentation
108
+ run: uv run mkdocs gh-deploy --force
@@ -0,0 +1,82 @@
1
+ name: release-main
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ push:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ set-version:
11
+ runs-on: ubuntu-24.04
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ with:
15
+ fetch-depth: 0 # Need full history for tags
16
+
17
+ - name: Export tag
18
+ id: vars
19
+ run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
20
+ if: ${{ github.event_name == 'release' }}
21
+
22
+ # For full releases, use tag for version name
23
+ - name: Set release version
24
+ run: |
25
+ sed -i "s/^version = \".*\"/version = \"$RELEASE_VERSION\"/" pyproject.toml
26
+ env:
27
+ RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
28
+ if: ${{ github.event_name == 'release' }}
29
+
30
+ # For merges to main, incremement patch version by one
31
+ # and use ".devN" suffix based on commits since tag
32
+ - name: Set dev version
33
+ run: |
34
+ LATEST_TAG=$(git describe --tags --abbrev=0)
35
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST_TAG"
36
+ PATCH=$((PATCH + 1))
37
+ DEV_NUM=$(git rev-list $LATEST_TAG..HEAD --count)
38
+ DEV_VERSION="$MAJOR.$MINOR.$PATCH.dev$DEV_NUM"
39
+ sed -i "s/^version = \".*\"/version = \"$DEV_VERSION\"/" pyproject.toml
40
+ if: ${{ github.event_name == 'push' }}
41
+
42
+ - name: Upload updated pyproject.toml
43
+ uses: actions/upload-artifact@v4
44
+ with:
45
+ name: pyproject-toml
46
+ path: pyproject.toml
47
+
48
+ publish:
49
+ runs-on: ubuntu-latest
50
+ needs: [set-version]
51
+ steps:
52
+ - name: Check out
53
+ uses: actions/checkout@v4
54
+
55
+ - name: Set up the environment
56
+ uses: ./.github/actions/setup-python-env
57
+
58
+ - name: Download updated pyproject.toml
59
+ uses: actions/download-artifact@v4
60
+ with:
61
+ name: pyproject-toml
62
+
63
+ - name: Build package
64
+ run: uv build
65
+
66
+ - name: Publish package
67
+ run: uv publish
68
+ env:
69
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
70
+
71
+ deploy-docs:
72
+ needs: publish
73
+ runs-on: ubuntu-latest
74
+ steps:
75
+ - name: Check out
76
+ uses: actions/checkout@v4
77
+
78
+ - name: Set up the environment
79
+ uses: ./.github/actions/setup-python-env
80
+
81
+ - name: Deploy documentation
82
+ run: uv run mkdocs gh-deploy --force
@@ -0,0 +1,47 @@
1
+ name: Draft paper PDF
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ - JOSS_paper
7
+ paths:
8
+ - paper/**
9
+ - .github/workflows/paper.yml
10
+ pull_request:
11
+ branches:
12
+ - main
13
+ - JOSS_paper
14
+ paths:
15
+ - paper/**
16
+ - .github/workflows/paper.yml
17
+
18
+ jobs:
19
+ paper:
20
+ runs-on: ubuntu-latest
21
+ name: Generate paper draft
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v4
25
+
26
+ - name: Build draft PDF
27
+ uses: openjournals/openjournals-draft-action@master
28
+ with:
29
+ journal: joss
30
+ paper-path: paper/paper.md
31
+
32
+ - name: Upload
33
+ uses: actions/upload-artifact@v4
34
+ with:
35
+ name: paper
36
+ # Output path where Pandoc will write the compiled PDF.
37
+ # Note, this should be the same directory as the input
38
+ # paper.md
39
+ path: paper/paper.pdf
40
+
41
+ - name: Commit updated PDF
42
+ uses: stefanzweifel/git-auto-commit-action@v4
43
+ if: github.event_name == 'pull_request'
44
+ continue-on-error: true
45
+ with:
46
+ commit_message: Update generated PDF
47
+ file_pattern: "paper/paper.pdf"
@@ -0,0 +1,143 @@
1
+ # Ignore project-specific directories
2
+ tests/data/tide_models
3
+ tests/data/tide_models_clipped
4
+ docs/source
5
+
6
+ # From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
7
+
8
+ # Byte-compiled / optimized / DLL files
9
+ __pycache__/
10
+ *.py[cod]
11
+ *$py.class
12
+
13
+ # C extensions
14
+ *.so
15
+
16
+ # Distribution / packaging
17
+ .Python
18
+ build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ share/python-wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+
36
+ # PyInstaller
37
+ # Usually these files are written by a python script from a template
38
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
39
+ *.manifest
40
+ *.spec
41
+
42
+ # Installer logs
43
+ pip-log.txt
44
+ pip-delete-this-directory.txt
45
+
46
+ # Unit test / coverage reports
47
+ htmlcov/
48
+ .tox/
49
+ .nox/
50
+ .coverage
51
+ .coverage.*
52
+ .cache
53
+ nosetests.xml
54
+ coverage.xml
55
+ *.cover
56
+ *.py,cover
57
+ .hypothesis/
58
+ .pytest_cache/
59
+ cover/
60
+
61
+ # Translations
62
+ *.mo
63
+ *.pot
64
+
65
+ # Django stuff:
66
+ *.log
67
+ local_settings.py
68
+ db.sqlite3
69
+ db.sqlite3-journal
70
+
71
+ # Flask stuff:
72
+ instance/
73
+ .webassets-cache
74
+
75
+ # Scrapy stuff:
76
+ .scrapy
77
+
78
+ # Sphinx documentation
79
+ docs/_build/
80
+
81
+ # PyBuilder
82
+ .pybuilder/
83
+ target/
84
+
85
+ # Jupyter Notebook
86
+ .ipynb_checkpoints
87
+
88
+ # IPython
89
+ profile_default/
90
+ ipython_config.py
91
+
92
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
93
+ __pypackages__/
94
+
95
+ # Celery stuff
96
+ celerybeat-schedule
97
+ celerybeat.pid
98
+
99
+ # SageMath parsed files
100
+ *.sage.py
101
+
102
+ # Environments
103
+ .env
104
+ .venv
105
+ env/
106
+ venv/
107
+ ENV/
108
+ env.bak/
109
+ venv.bak/
110
+
111
+ # Spyder project settings
112
+ .spyderproject
113
+ .spyproject
114
+
115
+ # Rope project settings
116
+ .ropeproject
117
+
118
+ # mkdocs documentation
119
+ /site
120
+
121
+ # mypy
122
+ .mypy_cache/
123
+ .dmypy.json
124
+ dmypy.json
125
+
126
+ # Pyre type checker
127
+ .pyre/
128
+
129
+ # pytype static type analyzer
130
+ .pytype/
131
+
132
+ # Cython debug symbols
133
+ cython_debug/
134
+
135
+ # Vscode config files
136
+ .vscode/
137
+
138
+ # PyCharm
139
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
140
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
141
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
142
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
143
+ #.idea/
@@ -0,0 +1,27 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: "v4.4.0"
4
+ hooks:
5
+ - id: check-case-conflict
6
+ - id: check-merge-conflict
7
+ - id: check-toml
8
+ - id: check-yaml
9
+ - id: end-of-file-fixer
10
+ - id: trailing-whitespace
11
+
12
+ - repo: https://github.com/astral-sh/ruff-pre-commit
13
+ # Ruff version.
14
+ rev: v0.6.4
15
+ hooks:
16
+ # Run the linter.
17
+ - id: ruff
18
+ types_or: [python, pyi]
19
+ args: [--fix, --select=I] # --select=ALL, I
20
+ # Run the formatter.
21
+ - id: ruff-format
22
+ types_or: [python, pyi]
23
+
24
+ - repo: https://github.com/pre-commit/mirrors-prettier
25
+ rev: "v3.0.3"
26
+ hooks:
27
+ - id: prettier
@@ -0,0 +1,30 @@
1
+ # YAML 1.2
2
+ ---
3
+ abstract: ""
4
+ authors:
5
+ - affiliation: "Geoscience Australia"
6
+ family-names: "Bishop-Taylor"
7
+ given-names: Robbi
8
+ orcid: "https://orcid.org/0000-0002-1533-2599"
9
+ - affiliation: "Geoscience Australia"
10
+ family-names: Sagar
11
+ given-names: Stephen
12
+ - affiliation: "Geoscience Australia"
13
+ family-names: Phillips
14
+ given-names: Claire
15
+ - affiliation: "Geoscience Australia"
16
+ family-names: Newey
17
+ given-names: Vanessa
18
+ orcid: "https://orcid.org/0000-0003-3705-5665"
19
+ cff-version: "1.1.0"
20
+ date-released: 2024-10-30
21
+ doi: ""
22
+ keywords:
23
+ - "Tide modelling"
24
+ - "Earth Observation"
25
+ - "Remote sensing"
26
+ license: "Apache-2.0"
27
+ message: "Please cite `eo-tides` using the citation below:"
28
+ repository-code: "https://github.com/GeoscienceAustralia/eo-tides"
29
+ title: "eo-tides: Tide modelling tools for large-scale satellite earth observation analysis"
30
+ # version: "1.0.0"
@@ -0,0 +1,102 @@
1
+ # Contributing to `eo-tides`
2
+
3
+ Contributions are welcome, and they are greatly appreciated!
4
+
5
+ You can contribute in many ways:
6
+
7
+ # Types of Contributions
8
+
9
+ ## Report Bugs
10
+
11
+ Report bugs at https://github.com/GeoscienceAustralia/eo-tides/issues
12
+
13
+ If you are reporting a bug, please include:
14
+
15
+ - Your operating system name and version.
16
+ - Any details about your local setup that might be helpful in troubleshooting.
17
+ - Detailed steps to reproduce the bug.
18
+
19
+ ## Fix Bugs
20
+
21
+ Look through the GitHub issues for bugs.
22
+ Anything tagged with "bug" and "help wanted" is open to whoever wants to implement a fix for it.
23
+
24
+ ## Implement Features
25
+
26
+ Look through the GitHub issues for features.
27
+ Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
28
+
29
+ ## Submit Feedback
30
+
31
+ The best way to send feedback is to file an issue at https://github.com/GeoscienceAustralia/eo-tides/issues.
32
+
33
+ If you are proposing a new feature:
34
+
35
+ - Explain in detail how it would work.
36
+ - Keep the scope as narrow as possible, to make it easier to implement.
37
+ - Remember that this is a volunteer-driven project, and that contributions
38
+ are welcome :)
39
+
40
+ # Get Started!
41
+
42
+ Ready to contribute? Here's how to set up `eo-tides` for local development.
43
+ Please note this documentation assumes you already have `uv` and `Git` installed and ready to go.
44
+
45
+ 1. Fork the `eo-tides` repo on GitHub.
46
+
47
+ 2. Clone your fork locally:
48
+
49
+ ```bash
50
+ cd <directory_in_which_repo_should_be_created>
51
+ git clone git@github.com:YOUR_NAME/eo-tides.git
52
+ ```
53
+
54
+ 3. Now we need to install the environment. Navigate into the directory
55
+
56
+ ```bash
57
+ cd eo-tides
58
+ ```
59
+
60
+ Then, install and activate the environment with:
61
+
62
+ ```bash
63
+ uv sync
64
+ ```
65
+
66
+ 4. Install pre-commit to run linters/formatters at commit time:
67
+
68
+ ```bash
69
+ uv run pre-commit install
70
+ ```
71
+
72
+ 5. Create a branch for local development:
73
+
74
+ ```bash
75
+ git checkout -b name-of-your-bugfix-or-feature
76
+ ```
77
+
78
+ Now you can make your changes locally.
79
+
80
+ 6. Don't forget to add test cases for your added functionality to the `tests` directory.
81
+
82
+ 7. When you're done making changes, check that your changes pass the formatting tests.
83
+
84
+ ```bash
85
+ make check
86
+ ```
87
+
88
+ Now, validate that all unit tests are passing:
89
+
90
+ ```bash
91
+ make test
92
+ ```
93
+
94
+ 9. Commit your changes and push your branch to GitHub:
95
+
96
+ ```bash
97
+ git add .
98
+ git commit -m "Your detailed description of your changes."
99
+ git push origin name-of-your-bugfix-or-feature
100
+ ```
101
+
102
+ 11. Submit a pull request through the GitHub website.
@@ -0,0 +1,21 @@
1
+ # Install uv
2
+ FROM python:3.12-slim
3
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
4
+
5
+ # Change the working directory to the `app` directory
6
+ WORKDIR /app
7
+
8
+ # Copy the lockfile and `pyproject.toml` into the image
9
+ ADD uv.lock /app/uv.lock
10
+ ADD pyproject.toml /app/pyproject.toml
11
+
12
+ # Install dependencies
13
+ RUN uv sync --frozen --no-install-project
14
+
15
+ # Copy the project into the image
16
+ ADD . /app
17
+
18
+ # Sync the project
19
+ RUN uv sync --frozen
20
+
21
+ CMD [ "python", "eo_tides/foo.py"]