Skip to content

Commit 7535926

Browse files
authored
Merge pull request #85 from ocefpaf/pre-commit
2 parents 1eb9b22 + 09cf8b7 commit 7535926

13 files changed

Lines changed: 58 additions & 61 deletions

.appveyor.yml

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,45 @@
1+
build: false
2+
13
environment:
2-
CONDA_INSTALL_LOCN: C:\\Miniconda36-x64
4+
PYTHON: "C:\\myminiconda3"
35
matrix:
4-
- TARGET_ARCH: x64
5-
PY: 3.7
6+
- PY: 3.6
7+
- PY: 3.8
68

7-
platform:
8-
- x64
9+
init:
10+
- "ECHO %PYTHON_VERSION% %MINICONDA%"
911

1012
install:
11-
# If there is a newer build queued for the same PR, cancel this one.
12-
# The AppVeyor 'rollout builds' option is supposed to serve the same
13-
# purpose but it is problematic because it tends to cancel builds pushed
14-
# directly to master instead of just PR builds (or the converse).
15-
# credits: JuliaLang developers.
16-
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
17-
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
18-
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
19-
throw "There are newer queued builds for this pull request, failing early." }
20-
21-
# Add path, activate `conda` and update conda.
22-
- cmd: call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
23-
24-
- cmd: conda config --set always_yes yes --set changeps1 no --set show_channel_urls true
25-
- cmd: conda update conda --quiet
26-
- cmd: conda install pycryptosat --quiet
27-
- cmd: conda config --add channels conda-forge --force
28-
- cmd: conda config --set sat_solver pycryptosat
29-
- cmd: conda config --set channel_priority strict
30-
- cmd: conda config --set safety_checks disabled
31-
32-
- cmd: set PYTHONUNBUFFERED=1
33-
34-
- cmd: conda create --name TEST python=%PY% --file requirements.txt --file requirements-dev.txt
35-
- cmd: conda activate TEST
36-
37-
# Skip .NET project specific build phase.
38-
build: off
13+
# If there is a newer build queued for the same PR, cancel this one.
14+
# The AppVeyor 'rollout builds' option is supposed to serve the same
15+
# purpose but it is problematic because it tends to cancel builds pushed
16+
# directly to master instead of just PR builds (or the converse).
17+
# credits: JuliaLang developers.
18+
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
19+
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
20+
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
21+
throw "There are newer queued builds for this pull request, failing early." }
22+
23+
# Add path, activate `conda` and update conda.
24+
- set URL="https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe"
25+
- curl -fsS -o miniconda3.exe %URL%
26+
- start /wait "" miniconda3.exe /InstallationType=JustMe /RegisterPython=0 /S /D=%PYTHON%
27+
28+
- "set PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
29+
- call %PYTHON%\Scripts\activate
30+
31+
- conda config --set always_yes yes --set changeps1 no --set show_channel_urls true
32+
- conda config --add channels conda-forge --force
33+
- conda config --set channel_priority strict
34+
- set PYTHONUNBUFFERED=1
35+
36+
- conda create --name TEST python=%PY% --file requirements.txt --file requirements-dev.txt
37+
38+
- conda activate TEST
39+
- conda info --all
40+
- conda list
3941

4042
test_script:
41-
- pytest -n 2 -rxs --cov=ctd tests
42-
- pytest -s -rxs --doctest-modules -vv ctd
43+
- "python -m pip install . --no-deps -vv"
44+
- pytest -n 2 -rxs --cov=ctd tests
45+
- pytest -s -rxs --doctest-modules -vv ctd

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ script:
6464
check-manifest --verbose ;
6565
twine check dist/* ;
6666
fi
67-
67+
6868
- |
6969
if [[ $TRAVIS_JOB_NAME == 'docs' ]]; then
7070
set -e
7171
cp notebooks/quick_intro.ipynb docs/source/
7272
pushd docs
7373
make clean html linkcheck
7474
popd
75-
if [[ -z "$TRAVIS_TAG" ]]; then
75+
if [[ -z "$TRAVIS_TAG" ]]; then
7676
python -m doctr deploy --build-tags --key-path github_deploy_key_pyoceans_python_ctd.enc --built-docs docs/build/html/ dev
7777
else
7878
python -m doctr deploy --build-tags --key-path github_deploy_key_pyoceans_python_ctd.enc --built-docs docs/build/html/ "version-$TRAVIS_TAG"
@@ -92,4 +92,4 @@ deploy:
9292
repo: pyoceans/python-ctd
9393
tags: true
9494
all_branches: master
95-
condition: '$TRAVIS_JOB_NAME == "tarball"'
95+
condition: '$TRAVIS_JOB_NAME == "tarball"'

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
include *.txt
22
include README.md
33
recursive-include ctd *.py
4-
prune tests
4+
prune tests

ctd/extras.py

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import matplotlib.pyplot as plt
22
import numpy as np
33
import numpy.ma as ma
4+
45
from pandas import Series
56

67

@@ -17,9 +18,7 @@ def pointwise(x):
1718
if x < xs[0]:
1819
return ys[0] + (x - xs[0]) * (ys[1] - ys[0]) / (xs[1] - xs[0])
1920
elif x > xs[-1]:
20-
return ys[-1] + (x - xs[-1]) * (ys[-1] - ys[-2]) / (
21-
xs[-1] - xs[-2]
22-
)
21+
return ys[-1] + (x - xs[-1]) * (ys[-1] - ys[-2]) / (xs[-1] - xs[-2])
2322
else:
2423
return interpolator(x)
2524

@@ -143,9 +142,7 @@ def gen_topomask(h, lon, lat, dx=1.0, kind="linear", plot=False):
143142
def plot_section(self, reverse=False, filled=False, **kw):
144143
import gsw
145144

146-
lon, lat, data = list(
147-
map(np.asanyarray, (self.lon, self.lat, self.values))
148-
)
145+
lon, lat, data = list(map(np.asanyarray, (self.lon, self.lat, self.values)))
149146
data = ma.masked_invalid(data)
150147
h = self.get_maxdepth()
151148
if reverse:
@@ -167,8 +164,7 @@ def plot_section(self, reverse=False, filled=False, **kw):
167164
labelsize = kw.pop("labelsize", 11)
168165
cmap = kw.pop("cmap", plt.cm.rainbow)
169166
levels = kw.pop(
170-
"levels",
171-
np.arange(np.floor(data.min()), np.ceil(data.max()) + 0.5, 0.5),
167+
"levels", np.arange(np.floor(data.min()), np.ceil(data.max()) + 0.5, 0.5),
172168
)
173169

174170
# Colorbar key words.
@@ -218,14 +214,7 @@ def plot_section(self, reverse=False, filled=False, **kw):
218214

219215
# Color version.
220216
cs = ax.contourf(
221-
x,
222-
z,
223-
data,
224-
cmap=cmap,
225-
levels=levels,
226-
alpha=1.0,
227-
extend=extend,
228-
zorder=2,
217+
x, z, data, cmap=cmap, levels=levels, alpha=1.0, extend=extend, zorder=2,
229218
) # manual=True
230219
# Colorbar.
231220
cb = fig.colorbar(

ctd/plotting.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import matplotlib.pyplot as plt
22
import pandas as pd
3+
34
from pandas_flavor import register_dataframe_method, register_series_method
45

56

ctd/processing.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22
import numpy.ma as ma
33
import pandas as pd
4+
45
from pandas_flavor import register_dataframe_method, register_series_method
56

67

@@ -145,9 +146,7 @@ def _despike(series, n1, n2, block, keep):
145146
# Use the last value to fill-up.
146147
std = np.r_[std, np.tile(std[-1], block - 1)]
147148
mean = np.r_[mean, np.tile(mean[-1], block - 1)]
148-
mask = np.abs(data - mean.filled(fill_value=np.NaN)) > std.filled(
149-
fill_value=np.NaN
150-
)
149+
mask = np.abs(data - mean.filled(fill_value=np.NaN)) > std.filled(fill_value=np.NaN)
151150
data[mask] = np.NaN
152151

153152
# Pass two recompute the mean and std without the flagged values from pass

docs/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ help:
1717
# Catch-all target: route all unknown targets to Sphinx using the new
1818
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
1919
%: Makefile
20-
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
20+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

docs/source/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
#
6262
from ctd import __version__ as VERSION
6363

64+
6465
version = VERSION
6566
# The full version, including alpha/beta/rc tags.
6667
release = VERSION
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
gAAAAABcksnrznRahez_EoXZFuM--QLw571JcTmBChG3FHtIT58M9kbyywC55snxWenuEYm2my2Z_9er_DXYRPcCcCJtQzx0jwM-4NkXgcwz5Pq-zolDbRQOK6mtAs7VAQgznj_R34EZLPwdELDbK2xZ0AhLdGCh5vuMkisHGLUrSCPQ3DcCkxuqWEIaADREj5-hVy88lzZ9atzRvCcKm-bdabHOZBCEUKSssQvC99w1zZgYlCfs6Ennqve6QE32rtRS962PiXGnVw1ez-QX2vIb7ZmhZUcOXIos6n_6fUFKbgU1q0ed6N9tY9gEwSoXtbTi1ANhgzneg5bxI1BaC3QgJ90F7VBl2dWwJF_-N1ezX_FwYMGTYrx_tLS0tybQd-M_EEBM_nwWH6MaOZMKV-37rP9ZCTjHBz6SAIadGdsDfHqAjHyXlh10YhWbz7hWHWYySmvca0TYJ6TwD5PiKRf6lgY0N3Ql1OHifd3_tG1f1Pi7BPOFzQYraslspV814QRGooEYF9jMB4OYkODv-OVsfAvBWPlAgjBcl-P5MC1NjAHmZqyIKuBTutZEhgl02b0LNmCgDUMW5DRRfsMf7-BL-FUEoyxRMC2cPr5gW7VYrGet9f7kAIK0St-_4DtZhOM-FXtHH9HK9i29oX7WvYWOatVcqzj722bVIaZ32OUByaSGPQlveWg2zIYClpSpwN5TGJZwLxMnpaK-ZkigC-xJcGDyBsYzDdHoKt_q1iH0pD9GYxT_7yselI2skVi6tKws4pltwsCv-NBEpwTY0deiCM4RWAn0ZQ7fegz3NZpam-Z9Z2v7iDKcnNcLlst7M237LUuo2EwRv695XTpS36CIjA0MlGujrjFKx6SWdMIZHmkxPdh97-cLwVIi6rLOej-MUKcIS2-aq1LSYrn_YwYHEKtDxVPU562Wgzxrwjo64MvvVw5zi6wEZwZjGDFPm5bCivfsF_bcVZqvBxVWSbmBGLgbtOncIt_SQf1jN7MmqQnVtSSEfcgHPV4lXGvqCsFf_3bUfxUjJvE9tfNeeO4h2IYiJcKb1m42Yz4OMNebsBYMRL5RTx8dsnCAUxNl-62fJcqiklx4poLqW4eN0Ky-aYperJbARWhPqPEb26T76KuXE-xXVUFCFUsl2orShoj7KnJCJvS1cHhQNoOISwO8N2iPlteHcOs_NrObyDJ6GkbvKwYHjtdZSfq-4UsIayC0mGHMIerwxQ5ZsIbnjW3_Jz3FBxkNIqU-U2NfZ6QEYGCxgYSu7dMeLM2DO0dcEpRTeVqbVqVsdv5O68KnOzkr_KtpcUcpBTGIRy2ziy6CqSQ2zIQZMpDbFGEob13AO90A8Zm3JPfAommo-zg8XnPv28qv-33hIDEseuaDJq0bLeFlj4IdBtaVzq_l9CUIFZHCsXu2PFQ0xfrPrcu0OQ84gNwFx_gR5GhFK1i46pwcvOCUqiqzMIC7FO-AhMJKqn5dCWoZYloHdpGa7kYz2-Ix4aCelXPVLaC1qQoPZwGO9E6oE7n53ZeinTj77sNY0qZyxGYdsL4GhLW-EO_BwOS8oMehb7sIXItw-dWjb-ohp5HDTOwH0DqEt3T-X6C3o6GeraMdAzGXnxKB0et0Kvpq65bPAcW0yA8jkrjxoYUIW-wnWqo5SMCzpHE4auEj5Ral7-4WID66jkHVhiz7i8qv5YW4foctwPEuDBxeXN_I-tMSNmmkwOCeDzNHA8wx4u9qVJTvhZC0c7MeIqGVC04jIhyjMabrusKCjEjokjtiDa5znICgC4N-lD6xORUhPSqEW5T-IfQg8loAYENpMoTD5V6LGbnu7aKwkbFCTI48w79iRSZjk0RMVhSFWZud1XbJpVB-F7Nr4ItGmNgmU4BSTJgU5bFmQa14YET2xaVBbDBpmqhhNpHvL0wnBKLFMbNJcUyi8hHE64X7rULLIycM6YQdEVlmhT_hJCfTDjg60QSsyY-om-N5H9yUeq0-RceNNdWvij81xghkCBkZnPoT7YxcynAAOdVRHb7HsUMkmit3NcWDum7CE7NNm5-8OrK-V3u4TpvJXORcec7NjHpe8ixUN1S2_ATme5lQz49-TQaDVDETS8EiLa2r2FleIrdKVTAFtF0CspA-_IKarPRFBrc2EUX6nUlxqNdmLeRbtnavVQYmT-nL-cFjtYea5cPSIIj5jB5UWW-gzGv2If45byj10-wxhsoqe6fADs9t16ianPC6BLAANWTyi5oW75FSI4DVmFvDQ98Znmhp0NTS7DzRFDXmrqs-Q1zd52wyOs3tA2zkDRZgcXg6lt0tfF9DAauGQEPNACrkRk-LRsBIP5vV8F0m0myYMB7dpPE_Agt8c0oBx07QAVjUhmWeqbfnd40YEuI91Xnru4AHVHhjRQqZeBcO1Dqz3h7000Wkr0xViAIE4QUxjkXW32fXKI0XqRI9HKLA9O75ISMcEWWBWD_swHDhVM_0P7o3jOgb1I6LpBitoAFopHRaeP0O--iFC__IhkGP_WVCmHjsuik7fFmUoVMFesaP03291NJ9EJviLL8fJ3WUKc4iOYrUqR6M_LE1ykErV3AAMznSjRApp-D4kx0zA_s3vbOyFu2M5P6FW7u9jJ4d2kz0OUUVZUDmlAyombeQSCdYqfnFiNketLFI3YGhaeyxc6V-ZoWJlDAUhVn4WxX2PPLib80iZPqIvKBbnZ1-vGpexcV7JQ9kukfC6gIAS6fnB-qbqDvz4FHvX1ZHLzUeFloS6-xL3KlzwOYug2M4R-JAP9--2eXVzJy3eStkgMUiWixYDIxmoaiSqVaU5kWSdttNs_dmDQK2SOqv_ljDQkwHAdwSJco4McXR_gOYMJnbEmBsTPAkPei1lmqwY8N53c9JgbtGDnD3qq624yeOpy9zZ4nCcjm6EK2_XYe_2Z6ptb_3YtDHzKOgt0DINlWvW4OZlsmJz1pEevOAD9h6c6_Ikro4pePyXVcGOtuP7KpzjzK3JnjWGRc_VfvTmh709PQxdq8wtUdILwWIXHombihk5YOGYlh8i3Xg5O1UOfNSWgsSKgf8VBPYZk3eosEnXKozG_aV2KTnSIc1VWy43kwMYsoRHEYXkIgSgac0iar0GBOFdPhUstu7abp7eBATkIy6bDVyE3Wvfr7zvTV2B6RwBP0o_Cr8HbWL5ZyXu3-FQ_3Bt4PiFKMNqTG1jF0I6xbGSRrXrQXUvwnZxnPQabgkrPReM3gm1BpM7vurX2LYH7eya7dCaKcb9DR9delcYmmLY0Qc_ZPvc1EaTDbGaU5huY_nP1ufCFCPKZA8LIdQygiD8Z37gt9wUVswieszRaiRWGcnRG558bvjk5HOW_vPCcq8KIHsdIGA9Twrv1DLtohTpHHKHaai--juIB94Wyjq3PSe5K6_e5vXUV8KdlB0gsVAHPBM4HnXxJ1rBSbUT6xPLbnHfhRn3aX-Q7VOXQjHCSi_sQN1dxiPf9WqNaub437XHMRlE-IuwWM1aVEJikEagIOJQvQybXmeD9YYOGmOpszLVjrm8R9x6os5JfuQu9PN18PoY9Avpat7Eqr19T4lWzwqVgUwDZZA3hOG8k0nq3fWhLbgkxF9O-PFT3V2eo8TcwQDIHq3IU_CqcjhSzMieAkIjsVdb4AMaf0Lq3XSo3BReNSyjEAjHpGbVb9AlCNKWoTK2xfUrlN8zAunccHz1BxlmlxiO8mZ9zxFeCRZXZxw-lluR1gw9HwypGnWZJLfS9_1Q_oHBquVLEj8zAu43MwYRV--G-nqD0pTY7a0BB3_xXTCc-PRk_UAVbpUVDuGzWmzJN6kXgUVrMCFxA_SX7Oma2NSkXXpzmOofLCtsf_ET2_lfkNYJlG7QTnfowbFbMpxebkSxAWIeUrS8BeGn7KabStxetdxyOVtpY4bUcUwFc9ItlUxyOmzeSOzLm_HOtrsnaH-T4wc3P9X5TFj_uCEw7WqSfTqssl5xhW2Db-9Up8u2rjjg_NwfERHS2eUPYbtT7qCszCV6jVUW5xZkPOMODx-ht7IyqKOyyagb6wbFY6CZhScX_hmMuqnqSY5EzSfF-AyZGlAdc9Kb8ogzoZxGox2coutJHD0VLsX3rDEOofUE1_OKO3T1y288FRd7Df-f4YSztjn8wFIoudq-VaUpmVC498svNmWkh9Q9cOZ3hBxMCI8FzzUdARpfC2aW84bfLaM7IErduNBIvUOVXj3iIxUGb4bJ5xBjKuvrhKowXtA216iSw_iB4ZdUzd26XEUXvoQX5LXQMaKA5hvtf22Sgc3oF0LceW4JAo-cxafLrH1UD_QxH3I8NGlTf2C0Xp8wEDQYvhWlQwHCqHNbIOvRCccpu-KtFqTvnoRddgCasAkH-pYgq94Ne0L028DlVy022H5mtsYr3v9XSGeSQfEXwcZSGXIgorsAjkgN8O8fySi2GzLr00b6lzdIjRXEppzwn0UR6RXKA==
1+
gAAAAABcksnrznRahez_EoXZFuM--QLw571JcTmBChG3FHtIT58M9kbyywC55snxWenuEYm2my2Z_9er_DXYRPcCcCJtQzx0jwM-4NkXgcwz5Pq-zolDbRQOK6mtAs7VAQgznj_R34EZLPwdELDbK2xZ0AhLdGCh5vuMkisHGLUrSCPQ3DcCkxuqWEIaADREj5-hVy88lzZ9atzRvCcKm-bdabHOZBCEUKSssQvC99w1zZgYlCfs6Ennqve6QE32rtRS962PiXGnVw1ez-QX2vIb7ZmhZUcOXIos6n_6fUFKbgU1q0ed6N9tY9gEwSoXtbTi1ANhgzneg5bxI1BaC3QgJ90F7VBl2dWwJF_-N1ezX_FwYMGTYrx_tLS0tybQd-M_EEBM_nwWH6MaOZMKV-37rP9ZCTjHBz6SAIadGdsDfHqAjHyXlh10YhWbz7hWHWYySmvca0TYJ6TwD5PiKRf6lgY0N3Ql1OHifd3_tG1f1Pi7BPOFzQYraslspV814QRGooEYF9jMB4OYkODv-OVsfAvBWPlAgjBcl-P5MC1NjAHmZqyIKuBTutZEhgl02b0LNmCgDUMW5DRRfsMf7-BL-FUEoyxRMC2cPr5gW7VYrGet9f7kAIK0St-_4DtZhOM-FXtHH9HK9i29oX7WvYWOatVcqzj722bVIaZ32OUByaSGPQlveWg2zIYClpSpwN5TGJZwLxMnpaK-ZkigC-xJcGDyBsYzDdHoKt_q1iH0pD9GYxT_7yselI2skVi6tKws4pltwsCv-NBEpwTY0deiCM4RWAn0ZQ7fegz3NZpam-Z9Z2v7iDKcnNcLlst7M237LUuo2EwRv695XTpS36CIjA0MlGujrjFKx6SWdMIZHmkxPdh97-cLwVIi6rLOej-MUKcIS2-aq1LSYrn_YwYHEKtDxVPU562Wgzxrwjo64MvvVw5zi6wEZwZjGDFPm5bCivfsF_bcVZqvBxVWSbmBGLgbtOncIt_SQf1jN7MmqQnVtSSEfcgHPV4lXGvqCsFf_3bUfxUjJvE9tfNeeO4h2IYiJcKb1m42Yz4OMNebsBYMRL5RTx8dsnCAUxNl-62fJcqiklx4poLqW4eN0Ky-aYperJbARWhPqPEb26T76KuXE-xXVUFCFUsl2orShoj7KnJCJvS1cHhQNoOISwO8N2iPlteHcOs_NrObyDJ6GkbvKwYHjtdZSfq-4UsIayC0mGHMIerwxQ5ZsIbnjW3_Jz3FBxkNIqU-U2NfZ6QEYGCxgYSu7dMeLM2DO0dcEpRTeVqbVqVsdv5O68KnOzkr_KtpcUcpBTGIRy2ziy6CqSQ2zIQZMpDbFGEob13AO90A8Zm3JPfAommo-zg8XnPv28qv-33hIDEseuaDJq0bLeFlj4IdBtaVzq_l9CUIFZHCsXu2PFQ0xfrPrcu0OQ84gNwFx_gR5GhFK1i46pwcvOCUqiqzMIC7FO-AhMJKqn5dCWoZYloHdpGa7kYz2-Ix4aCelXPVLaC1qQoPZwGO9E6oE7n53ZeinTj77sNY0qZyxGYdsL4GhLW-EO_BwOS8oMehb7sIXItw-dWjb-ohp5HDTOwH0DqEt3T-X6C3o6GeraMdAzGXnxKB0et0Kvpq65bPAcW0yA8jkrjxoYUIW-wnWqo5SMCzpHE4auEj5Ral7-4WID66jkHVhiz7i8qv5YW4foctwPEuDBxeXN_I-tMSNmmkwOCeDzNHA8wx4u9qVJTvhZC0c7MeIqGVC04jIhyjMabrusKCjEjokjtiDa5znICgC4N-lD6xORUhPSqEW5T-IfQg8loAYENpMoTD5V6LGbnu7aKwkbFCTI48w79iRSZjk0RMVhSFWZud1XbJpVB-F7Nr4ItGmNgmU4BSTJgU5bFmQa14YET2xaVBbDBpmqhhNpHvL0wnBKLFMbNJcUyi8hHE64X7rULLIycM6YQdEVlmhT_hJCfTDjg60QSsyY-om-N5H9yUeq0-RceNNdWvij81xghkCBkZnPoT7YxcynAAOdVRHb7HsUMkmit3NcWDum7CE7NNm5-8OrK-V3u4TpvJXORcec7NjHpe8ixUN1S2_ATme5lQz49-TQaDVDETS8EiLa2r2FleIrdKVTAFtF0CspA-_IKarPRFBrc2EUX6nUlxqNdmLeRbtnavVQYmT-nL-cFjtYea5cPSIIj5jB5UWW-gzGv2If45byj10-wxhsoqe6fADs9t16ianPC6BLAANWTyi5oW75FSI4DVmFvDQ98Znmhp0NTS7DzRFDXmrqs-Q1zd52wyOs3tA2zkDRZgcXg6lt0tfF9DAauGQEPNACrkRk-LRsBIP5vV8F0m0myYMB7dpPE_Agt8c0oBx07QAVjUhmWeqbfnd40YEuI91Xnru4AHVHhjRQqZeBcO1Dqz3h7000Wkr0xViAIE4QUxjkXW32fXKI0XqRI9HKLA9O75ISMcEWWBWD_swHDhVM_0P7o3jOgb1I6LpBitoAFopHRaeP0O--iFC__IhkGP_WVCmHjsuik7fFmUoVMFesaP03291NJ9EJviLL8fJ3WUKc4iOYrUqR6M_LE1ykErV3AAMznSjRApp-D4kx0zA_s3vbOyFu2M5P6FW7u9jJ4d2kz0OUUVZUDmlAyombeQSCdYqfnFiNketLFI3YGhaeyxc6V-ZoWJlDAUhVn4WxX2PPLib80iZPqIvKBbnZ1-vGpexcV7JQ9kukfC6gIAS6fnB-qbqDvz4FHvX1ZHLzUeFloS6-xL3KlzwOYug2M4R-JAP9--2eXVzJy3eStkgMUiWixYDIxmoaiSqVaU5kWSdttNs_dmDQK2SOqv_ljDQkwHAdwSJco4McXR_gOYMJnbEmBsTPAkPei1lmqwY8N53c9JgbtGDnD3qq624yeOpy9zZ4nCcjm6EK2_XYe_2Z6ptb_3YtDHzKOgt0DINlWvW4OZlsmJz1pEevOAD9h6c6_Ikro4pePyXVcGOtuP7KpzjzK3JnjWGRc_VfvTmh709PQxdq8wtUdILwWIXHombihk5YOGYlh8i3Xg5O1UOfNSWgsSKgf8VBPYZk3eosEnXKozG_aV2KTnSIc1VWy43kwMYsoRHEYXkIgSgac0iar0GBOFdPhUstu7abp7eBATkIy6bDVyE3Wvfr7zvTV2B6RwBP0o_Cr8HbWL5ZyXu3-FQ_3Bt4PiFKMNqTG1jF0I6xbGSRrXrQXUvwnZxnPQabgkrPReM3gm1BpM7vurX2LYH7eya7dCaKcb9DR9delcYmmLY0Qc_ZPvc1EaTDbGaU5huY_nP1ufCFCPKZA8LIdQygiD8Z37gt9wUVswieszRaiRWGcnRG558bvjk5HOW_vPCcq8KIHsdIGA9Twrv1DLtohTpHHKHaai--juIB94Wyjq3PSe5K6_e5vXUV8KdlB0gsVAHPBM4HnXxJ1rBSbUT6xPLbnHfhRn3aX-Q7VOXQjHCSi_sQN1dxiPf9WqNaub437XHMRlE-IuwWM1aVEJikEagIOJQvQybXmeD9YYOGmOpszLVjrm8R9x6os5JfuQu9PN18PoY9Avpat7Eqr19T4lWzwqVgUwDZZA3hOG8k0nq3fWhLbgkxF9O-PFT3V2eo8TcwQDIHq3IU_CqcjhSzMieAkIjsVdb4AMaf0Lq3XSo3BReNSyjEAjHpGbVb9AlCNKWoTK2xfUrlN8zAunccHz1BxlmlxiO8mZ9zxFeCRZXZxw-lluR1gw9HwypGnWZJLfS9_1Q_oHBquVLEj8zAu43MwYRV--G-nqD0pTY7a0BB3_xXTCc-PRk_UAVbpUVDuGzWmzJN6kXgUVrMCFxA_SX7Oma2NSkXXpzmOofLCtsf_ET2_lfkNYJlG7QTnfowbFbMpxebkSxAWIeUrS8BeGn7KabStxetdxyOVtpY4bUcUwFc9ItlUxyOmzeSOzLm_HOtrsnaH-T4wc3P9X5TFj_uCEw7WqSfTqssl5xhW2Db-9Up8u2rjjg_NwfERHS2eUPYbtT7qCszCV6jVUW5xZkPOMODx-ht7IyqKOyyagb6wbFY6CZhScX_hmMuqnqSY5EzSfF-AyZGlAdc9Kb8ogzoZxGox2coutJHD0VLsX3rDEOofUE1_OKO3T1y288FRd7Df-f4YSztjn8wFIoudq-VaUpmVC498svNmWkh9Q9cOZ3hBxMCI8FzzUdARpfC2aW84bfLaM7IErduNBIvUOVXj3iIxUGb4bJ5xBjKuvrhKowXtA216iSw_iB4ZdUzd26XEUXvoQX5LXQMaKA5hvtf22Sgc3oF0LceW4JAo-cxafLrH1UD_QxH3I8NGlTf2C0Xp8wEDQYvhWlQwHCqHNbIOvRCccpu-KtFqTvnoRddgCasAkH-pYgq94Ne0L028DlVy022H5mtsYr3v9XSGeSQfEXwcZSGXIgorsAjkgN8O8fySi2GzLr00b6lzdIjRXEppzwn0UR6RXKA==

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
gsw>=3.3.0
22
matplotlib
33
numpy
4-
pandas-flavor==0.1.2
54
pandas>=0.24.0
5+
pandas-flavor==0.1.2
66
scipy

0 commit comments

Comments
 (0)