pycequeau 0.0.2__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 (124) hide show
  1. pycequeau-0.0.2/DEVELOPMENT.rst +318 -0
  2. pycequeau-0.0.2/LICENSE +674 -0
  3. pycequeau-0.0.2/PKG-INFO +62 -0
  4. pycequeau-0.0.2/README.rst +26 -0
  5. pycequeau-0.0.2/docs/Makefile +20 -0
  6. pycequeau-0.0.2/docs/conf.py +51 -0
  7. pycequeau-0.0.2/docs/figures/GRASS-tutorial/01-Extent.png +0 -0
  8. pycequeau-0.0.2/docs/figures/GRASS-tutorial/02-Download.png +0 -0
  9. pycequeau-0.0.2/docs/figures/GRASS-tutorial/03-Mosaic.png +0 -0
  10. pycequeau-0.0.2/docs/figures/GRASS-tutorial/04-Extent-shp.png +0 -0
  11. pycequeau-0.0.2/docs/figures/GRASS-tutorial/05-Export.png +0 -0
  12. pycequeau-0.0.2/docs/figures/GRASS-tutorial/06-OpenGRASS.png +0 -0
  13. pycequeau-0.0.2/docs/figures/GRASS-tutorial/07-NewMapset.png +0 -0
  14. pycequeau-0.0.2/docs/figures/GRASS-tutorial/08-DEM-GRASS.png +0 -0
  15. pycequeau-0.0.2/docs/figures/GRASS-tutorial/09-Subbasins.png +0 -0
  16. pycequeau-0.0.2/docs/figures/GRASS-tutorial/09-outlet_point.png +0 -0
  17. pycequeau-0.0.2/docs/grass.rst +199 -0
  18. pycequeau-0.0.2/docs/index.rst +38 -0
  19. pycequeau-0.0.2/docs/make.bat +35 -0
  20. pycequeau-0.0.2/docs/modules.rst +7 -0
  21. pycequeau-0.0.2/docs/notebooks/get_meteo.ipynb +853 -0
  22. pycequeau-0.0.2/docs/notebooks/get_params.ipynb +196 -0
  23. pycequeau-0.0.2/docs/notebooks/get_physio.ipynb +608 -0
  24. pycequeau-0.0.2/docs/readme.rst +1 -0
  25. pycequeau-0.0.2/docs/src.core.rst +53 -0
  26. pycequeau-0.0.2/docs/src.meteo.rst +37 -0
  27. pycequeau-0.0.2/docs/src.physiographic.rst +45 -0
  28. pycequeau-0.0.2/docs/src.rst +21 -0
  29. pycequeau-0.0.2/docs/src.simulations.rst +29 -0
  30. pycequeau-0.0.2/docs.yml +25 -0
  31. pycequeau-0.0.2/environment.yml +18 -0
  32. pycequeau-0.0.2/matlab/README.md +6 -0
  33. pycequeau-0.0.2/matlab/functions/create_grid.m +9 -0
  34. pycequeau-0.0.2/matlab/functions/export_results_CE.m +21 -0
  35. pycequeau-0.0.2/matlab/functions/export_results_CP.m +23 -0
  36. pycequeau-0.0.2/matlab/functions/fix_struct.m +27 -0
  37. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/.gitignore +35 -0
  38. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/AUTHORS.txt +79 -0
  39. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/ChangeLog.txt +220 -0
  40. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/Contents.m +1432 -0
  41. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/DESCRIPTION +13 -0
  42. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/INDEX +43 -0
  43. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/LICENSE_BSD.txt +33 -0
  44. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/README.rst +622 -0
  45. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/README.txt +557 -0
  46. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/base64decode.m +49 -0
  47. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/base64encode.m +57 -0
  48. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/decodevarname.m +72 -0
  49. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/encodevarname.m +63 -0
  50. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/demo_jsonlab_basic.m +413 -0
  51. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/demo_msgpack_basic.m +353 -0
  52. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/demo_ubjson_basic.m +367 -0
  53. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/example1.json +23 -0
  54. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/example2.json +22 -0
  55. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/example3.json +11 -0
  56. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/example4.json +35 -0
  57. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/jsonlab_basictest.matlab +1454 -0
  58. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/jsonlab_selftest.m +27 -0
  59. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/jsonlab_selftest.matlab +157 -0
  60. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/jsonlab_speedtest.m +21 -0
  61. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/examples/jsonlab_ubjson_basictest.matlab +937 -0
  62. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/fast_match_bracket.m +65 -0
  63. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/gendocs.sh +61 -0
  64. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/genlog.sh +3 -0
  65. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/gzipdecode.m +69 -0
  66. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/gzipencode.m +63 -0
  67. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/images/jsonlab-banner.png +0 -0
  68. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/images/jsonlab-logo.png +0 -0
  69. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/isoctavemesh.m +19 -0
  70. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jdatadecode.m +464 -0
  71. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jdataencode.m +398 -0
  72. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jload.m +108 -0
  73. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jsave.m +128 -0
  74. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jsonlab.prj +154 -0
  75. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/jsonopt.m +36 -0
  76. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/loadbj.m +419 -0
  77. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/loadjson.m +552 -0
  78. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/loadmsgpack.m +261 -0
  79. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/loadubjson.m +39 -0
  80. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lz4decode.m +43 -0
  81. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lz4encode.m +39 -0
  82. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lz4hcdecode.m +43 -0
  83. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lz4hcencode.m +39 -0
  84. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lzipdecode.m +43 -0
  85. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lzipencode.m +39 -0
  86. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lzmadecode.m +43 -0
  87. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/lzmaencode.m +39 -0
  88. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/match_bracket.m +48 -0
  89. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/mergestruct.m +33 -0
  90. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/nestbracket2dim.m +53 -0
  91. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/package.json +21 -0
  92. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/savebj.m +1030 -0
  93. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/savejson.m +813 -0
  94. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/savemsgpack.m +31 -0
  95. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/saveubjson.m +71 -0
  96. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/test/run_jsonlab_test.m +274 -0
  97. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/test/test_jsonlab.m +32 -0
  98. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/varargin2struct.m +40 -0
  99. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/zlibdecode.m +70 -0
  100. pycequeau-0.0.2/matlab/functions/jsonlab-2.0/zlibencode.m +58 -0
  101. pycequeau-0.0.2/matlab/functions/upload_meteo.m +20 -0
  102. pycequeau-0.0.2/matlab/main.m +29 -0
  103. pycequeau-0.0.2/pyproject.toml +57 -0
  104. pycequeau-0.0.2/src/pycequeau/__init__.py +10 -0
  105. pycequeau-0.0.2/src/pycequeau/core/__init__.py +28 -0
  106. pycequeau-0.0.2/src/pycequeau/core/manage_files.py +112 -0
  107. pycequeau-0.0.2/src/pycequeau/core/netcdf.py +101 -0
  108. pycequeau-0.0.2/src/pycequeau/core/projections.py +73 -0
  109. pycequeau-0.0.2/src/pycequeau/core/units.py +138 -0
  110. pycequeau-0.0.2/src/pycequeau/core/utils.py +820 -0
  111. pycequeau-0.0.2/src/pycequeau/meteo/__init__.py +6 -0
  112. pycequeau-0.0.2/src/pycequeau/meteo/_stations.py +242 -0
  113. pycequeau-0.0.2/src/pycequeau/meteo/base.py +124 -0
  114. pycequeau-0.0.2/src/pycequeau/meteo/meteo_netcdf.py +177 -0
  115. pycequeau-0.0.2/src/pycequeau/meteo/meteo_surface_gauges.py +0 -0
  116. pycequeau-0.0.2/src/pycequeau/physiographic/CPfishnet.py +1075 -0
  117. pycequeau-0.0.2/src/pycequeau/physiographic/__init__.py +5 -0
  118. pycequeau-0.0.2/src/pycequeau/physiographic/base.py +977 -0
  119. pycequeau-0.0.2/src/pycequeau/physiographic/carreauxEntiers.py +66 -0
  120. pycequeau-0.0.2/src/pycequeau/physiographic/carreauxPartiels.py +243 -0
  121. pycequeau-0.0.2/src/pycequeau/simulations/__init__.py +6 -0
  122. pycequeau-0.0.2/src/pycequeau/simulations/_param_examples.py +132 -0
  123. pycequeau-0.0.2/src/pycequeau/simulations/parameters.py +598 -0
  124. pycequeau-0.0.2/src/pycequeau/simulations/simulations.py +13 -0
@@ -0,0 +1,318 @@
1
+ Development Guide
2
+ =================
3
+
4
+ This guide provides instructions for developers working on the pycequeau package, including setup, testing, and publishing to PyPI.
5
+
6
+ Development Setup
7
+ -----------------
8
+
9
+ 1. Clone the repository:
10
+
11
+ .. code-block:: bash
12
+
13
+ git clone https://github.com/erinconv/pycequeau.git
14
+ cd pycequeau
15
+
16
+ 2. Create a conda environment (recommended for geospatial dependencies):
17
+
18
+ .. code-block:: bash
19
+
20
+ conda env create -f environment.yml
21
+ conda activate pycequeau
22
+
23
+ 3. Install the package in development mode:
24
+
25
+ .. code-block:: bash
26
+
27
+ pip install -e .
28
+
29
+ 4. Install development dependencies:
30
+
31
+ .. code-block:: bash
32
+
33
+ pip install -e .[dev]
34
+
35
+ Building the Package
36
+ --------------------
37
+
38
+ 1. Install build tools:
39
+
40
+ .. code-block:: bash
41
+
42
+ pip install build twine
43
+
44
+ 2. Clean previous builds:
45
+
46
+ .. code-block:: bash
47
+
48
+ # Windows PowerShell
49
+ Remove-Item -Recurse -Force dist/, build/, *.egg-info/ -ErrorAction SilentlyContinue
50
+
51
+ # Linux/Mac
52
+ rm -rf dist/ build/ *.egg-info/
53
+
54
+ 3. Build the package:
55
+
56
+ .. code-block:: bash
57
+
58
+ python -m build
59
+
60
+ This creates:
61
+ - ``dist/pycequeau-X.X.X.tar.gz`` (source distribution)
62
+ - ``dist/pycequeau-X.X.X-py3-none-any.whl`` (wheel distribution)
63
+
64
+ Testing the Package
65
+ -------------------
66
+
67
+ 1. Test local installation:
68
+
69
+ .. code-block:: bash
70
+
71
+ pip install dist/pycequeau-*.whl --force-reinstall
72
+
73
+ 2. Test package import:
74
+
75
+ .. code-block:: python
76
+
77
+ import pycequeau
78
+ print(f"Version: {pycequeau.__version__}")
79
+ print(f"Available modules: {pycequeau.__all__}")
80
+
81
+ 3. Test all modules:
82
+
83
+ .. code-block:: python
84
+
85
+ import pycequeau.core
86
+ import pycequeau.meteo
87
+ import pycequeau.physiographic
88
+ import pycequeau.simulations
89
+ print("All modules imported successfully!")
90
+
91
+ Publishing to PyPI
92
+ ------------------
93
+
94
+ ### Prerequisites
95
+
96
+ 1. Create PyPI accounts:
97
+ - Production: `https://pypi.org/`
98
+ - Test: `https://test.pypi.org/`
99
+
100
+ 2. Create API tokens:
101
+ - Go to account settings → API tokens
102
+ - Create tokens for both production and test PyPI
103
+ - Save the tokens securely
104
+
105
+ 3. Configure credentials in ``~/.pypirc``:
106
+
107
+ .. code-block:: ini
108
+
109
+ [distutils]
110
+ index-servers = pypi testpypi
111
+
112
+ [pypi]
113
+ username = __token__
114
+ password = pypi-YOUR_ACTUAL_TOKEN_HERE
115
+
116
+ [testpypi]
117
+ repository = https://test.pypi.org/legacy/
118
+ username = __token__
119
+ password = pypi-YOUR_TEST_TOKEN_HERE
120
+
121
+ ### Publishing Steps
122
+
123
+ 1. **Test Upload (Recommended)**:
124
+
125
+ .. code-block:: bash
126
+
127
+ # Upload to test PyPI first
128
+ twine upload --repository testpypi dist/*
129
+
130
+ # Test installation from test PyPI
131
+ pip install --index-url https://test.pypi.org/simple/ pycequeau
132
+
133
+ 2. **Production Upload**:
134
+
135
+ .. code-block:: bash
136
+
137
+ # Upload to production PyPI
138
+ twine upload dist/*
139
+
140
+ 3. **Verify Installation**:
141
+
142
+ .. code-block:: bash
143
+
144
+ # Test installation from PyPI
145
+ pip install pycequeau
146
+
147
+ # Test with optional dependencies
148
+ pip install pycequeau[geo]
149
+ pip install pycequeau[all]
150
+
151
+ ### Version Management
152
+
153
+ 1. Update version in ``pyproject.toml``:
154
+
155
+ .. code-block:: toml
156
+
157
+ version = "0.0.2" # or 0.1.0, 1.0.0, etc.
158
+
159
+ 2. Follow semantic versioning:
160
+ - ``MAJOR.MINOR.PATCH``
161
+ - Examples: ``0.0.1``, ``0.1.0``, ``1.0.0``
162
+ - PyPI doesn't allow re-uploading the same version
163
+
164
+ 3. Rebuild and upload:
165
+
166
+ .. code-block:: bash
167
+
168
+ python -m build
169
+ twine upload dist/*
170
+
171
+ Package Structure
172
+ -----------------
173
+
174
+ The package follows this structure:
175
+
176
+ .. code-block:: text
177
+
178
+ pycequeau/
179
+ ├── src/
180
+ │ └── pycequeau/
181
+ │ ├── __init__.py
182
+ │ ├── core/
183
+ │ ├── meteo/
184
+ │ ├── physiographic/
185
+ │ └── simulations/
186
+ ├── docs/
187
+ ├── matlab/
188
+ ├── pyproject.toml
189
+ ├── requirements.txt
190
+ ├── environment.yml
191
+ ├── MANIFEST.in
192
+ └── README.rst
193
+
194
+ Dependencies
195
+ ------------
196
+
197
+ ### Required Dependencies
198
+ - ``pyproj``: Coordinate transformations
199
+ - ``xarray``: N-dimensional arrays
200
+ - ``scipy``: Scientific computing
201
+ - ``matplotlib``: Plotting
202
+ - ``shapely``: Geometric objects
203
+
204
+ ### Optional Dependencies
205
+
206
+ **Geospatial (``[geo]``)**:
207
+ - ``gdal``: Geospatial data processing
208
+ - ``geopandas``: Geospatial data analysis
209
+ - ``rasterstats``: Raster statistics
210
+ - ``netcdf4``: NetCDF file handling
211
+
212
+ **Development (``[dev]``)**:
213
+ - ``pytest``: Testing framework
214
+ - ``autopep8``: Code formatting
215
+ - ``ipykernel``: Jupyter notebook support
216
+
217
+ **All (``[all]``)**:
218
+ - Includes all geospatial and development dependencies
219
+
220
+ Installation Commands
221
+ --------------------
222
+
223
+ .. code-block:: bash
224
+
225
+ # Basic installation
226
+ pip install pycequeau
227
+
228
+ # With geospatial functionality
229
+ pip install pycequeau[geo]
230
+
231
+ # With development tools
232
+ pip install pycequeau[dev]
233
+
234
+ # Everything
235
+ pip install pycequeau[all]
236
+
237
+ # From source
238
+ git clone https://github.com/erinconv/pycequeau.git
239
+ cd pycequeau
240
+ pip install .
241
+
242
+ Troubleshooting
243
+ ---------------
244
+
245
+ ### Common Issues
246
+
247
+ 1. **HDF5 headers not found**:
248
+ - This occurs when installing geospatial dependencies
249
+ - Use conda environment: ``conda env create -f environment.yml``
250
+ - Or install pre-built packages: ``conda install gdal geopandas netcdf4``
251
+
252
+ 2. **GDAL installation issues**:
253
+ - GDAL requires system libraries
254
+ - Use conda for easier installation
255
+ - Or install GDAL system package first
256
+
257
+ 3. **Build failures**:
258
+ - Ensure all dependencies are installed
259
+ - Check Python version compatibility (3.8+)
260
+ - Clean build artifacts before rebuilding
261
+
262
+ ### Testing Installation
263
+
264
+ .. code-block:: bash
265
+
266
+ # Test basic functionality
267
+ python -c "import pycequeau; print('Success!')"
268
+
269
+ # Test geospatial functionality
270
+ python -c "import pycequeau; import geopandas; print('Geo features work!')"
271
+
272
+ # Test all modules
273
+ python -c "from pycequeau import core, meteo, physiographic, simulations; print('All modules work!')"
274
+
275
+ Contributing
276
+ ------------
277
+
278
+ 1. Fork the repository
279
+ 2. Create a feature branch
280
+ 3. Make your changes
281
+ 4. Test your changes:
282
+
283
+ .. code-block:: bash
284
+
285
+ python -m build
286
+ pip install dist/pycequeau-*.whl --force-reinstall
287
+
288
+ 5. Submit a pull request
289
+
290
+ ### Code Style
291
+
292
+ - Follow PEP 8 guidelines
293
+ - Use ``autopep8`` for formatting
294
+ - Add docstrings to functions and classes
295
+ - Include type hints where appropriate
296
+
297
+ ### Testing
298
+
299
+ - Add tests for new functionality
300
+ - Ensure all tests pass before submitting
301
+ - Test installation in clean environment
302
+
303
+ After Publishing
304
+ ----------------
305
+
306
+ Once published, your package will be available at:
307
+ - PyPI: `https://pypi.org/project/pycequeau/`
308
+ - Installation: ``pip install pycequeau``
309
+
310
+ Consider setting up:
311
+ - Documentation on Read the Docs
312
+ - Continuous integration with GitHub Actions
313
+ - Automated testing and publishing workflows
314
+
315
+
316
+
317
+ # Upload to production PyPI
318
+ twine upload dist/*