netCDF4 1.7.2__tar.gz → 1.7.4__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.
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/workflows/build_latest.yml +23 -14
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/workflows/build_master.yml +17 -11
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/workflows/build_old.yml +20 -12
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/workflows/cibuildwheel.yml +76 -64
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/workflows/miniconda.yml +8 -3
- {netcdf4-1.7.2 → netcdf4-1.7.4}/Changelog +22 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/MANIFEST.in +0 -1
- {netcdf4-1.7.2/src/netCDF4.egg-info → netcdf4-1.7.4}/PKG-INFO +13 -9
- {netcdf4-1.7.2 → netcdf4-1.7.4}/README.md +9 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/docs/index.html +112 -36
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/membuf.pyx +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/netcdf-compat.h +1 -1
- netcdf4-1.7.4/pyproject.toml +168 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/setup.py +36 -5
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/__init__.py +8 -7
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/__init__.pyi +14 -3
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/_netCDF4.pyx +113 -76
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/utils.py +6 -6
- {netcdf4-1.7.2 → netcdf4-1.7.4/src/netCDF4.egg-info}/PKG-INFO +13 -9
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4.egg-info/SOURCES.txt +1 -0
- netcdf4-1.7.4/src/netCDF4.egg-info/requires.txt +17 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/run_all.py +0 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_cdl.py +10 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression_blosc.py +3 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked2.py +1 -2
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked3.py +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked4.py +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked5.py +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked6.py +1 -1
- netcdf4-1.7.4/test/test_no_iter_contains.py +34 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_open_mem.py +0 -6
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_scaled.py +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_stringarr.py +17 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_types.py +1 -1
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_vlen.py +9 -0
- netcdf4-1.7.2/pyproject.toml +0 -101
- netcdf4-1.7.2/src/netCDF4.egg-info/requires.txt +0 -8
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/dependabot.yml +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.github/stubtest-allowlist +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/.gitmodules +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/LICENSE +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/README.htmldocs +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/README.release +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/checkversion.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/create_docs.sh +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/README.md +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench_compress.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench_compress2.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench_compress3.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench_compress4.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/bench_diskless.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/complex_numbers.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/json_att.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/mpi_example.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/mpi_example_compressed.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/reading_netCDF.ipynb +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/subset.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/test_stringarr.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/threaded_read.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/tutorial.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/examples/writing_netCDF.ipynb +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/external/README +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/external/nc_complex/include/generated_fallbacks/nc_complex_version.h +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/external/nc_complex/include/nc_complex/nc_complex.h +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/external/nc_complex/src/nc_complex.c +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/mpi-compat.h +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/netCDF4.pxi +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/no_parallel_support_imports.pxi.in +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/include/parallel_support_imports.pxi.in +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/man/nc3tonc4.1 +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/man/nc4tonc3.1 +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/man/ncinfo.1 +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/setup.cfg +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/_netCDF4.pyi +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/plugins/empty.txt +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4/py.typed +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4.egg-info/dependency_links.txt +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4.egg-info/entry_points.txt +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/src/netCDF4.egg-info/top_level.txt +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/20171025_2056.Cloud_Top_Height.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/CRM032_test1.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/__init__.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/filter_availability.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/issue1152.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/issue671.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/issue672.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/netcdf_dummy_file.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_Unsigned.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_alignment.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_atts.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_cdf5.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_chunk_cache.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_complex.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compound_alignment.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compoundatt.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compoundvar.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression_bzip2.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression_quant.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression_szip.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_compression_zstd.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_create_mem.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_dap.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_dims.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_diskless.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_endian.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_enum.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_fancyslicing.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_filepath.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_get_fill_value.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_get_variables_by_attributes.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_gold.nc +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_grps.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_grps2.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_issue908.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_masked.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_multifile.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_multifile2.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_multiple_open_close.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_ncrc.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_refcount.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_rename.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_scalarvar.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_shape.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_slicing.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_unicode.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_unicodeatt.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_unlimdim.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_utils.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/test_vars.py +0 -0
- {netcdf4-1.7.2 → netcdf4-1.7.4}/test/ubyte.nc +0 -0
|
@@ -5,30 +5,32 @@ jobs:
|
|
|
5
5
|
name: Python (${{ matrix.python-version }})
|
|
6
6
|
runs-on: ubuntu-latest
|
|
7
7
|
env:
|
|
8
|
-
PNETCDF_VERSION: 1.
|
|
9
|
-
NETCDF_VERSION: 4.9.
|
|
8
|
+
PNETCDF_VERSION: 1.14.1
|
|
9
|
+
NETCDF_VERSION: 4.9.3
|
|
10
10
|
NETCDF_DIR: ${{ github.workspace }}/..
|
|
11
11
|
NETCDF_EXTRA_CONFIG: --enable-pnetcdf
|
|
12
|
-
CC: mpicc.mpich
|
|
12
|
+
#CC: mpicc.mpich
|
|
13
|
+
CC: mpicc
|
|
13
14
|
#NO_NET: 1
|
|
14
15
|
strategy:
|
|
15
16
|
matrix:
|
|
16
|
-
python-version: ["3.
|
|
17
|
+
python-version: ["3.14"]
|
|
17
18
|
steps:
|
|
18
19
|
|
|
19
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v6
|
|
20
21
|
with:
|
|
21
22
|
submodules: true
|
|
22
23
|
|
|
23
24
|
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@v6
|
|
25
26
|
with:
|
|
26
27
|
python-version: ${{ matrix.python-version }}
|
|
27
28
|
|
|
28
29
|
- name: Install Ubuntu Dependencies
|
|
29
30
|
run: |
|
|
30
31
|
sudo apt-get update
|
|
31
|
-
sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
32
|
+
#sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev openmpi-bin openmpi-common libopenmpi-dev libhdf5-openmpi-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
33
|
+
sudo apt-get install openmpi-common libopenmpi-dev openmpi-bin libhdf5-openmpi-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
32
34
|
echo "Download and build PnetCDF version ${PNETCDF_VERSION}"
|
|
33
35
|
wget https://parallel-netcdf.github.io/Release/pnetcdf-${PNETCDF_VERSION}.tar.gz
|
|
34
36
|
tar -xzf pnetcdf-${PNETCDF_VERSION}.tar.gz
|
|
@@ -41,9 +43,12 @@ jobs:
|
|
|
41
43
|
wget https://downloads.unidata.ucar.edu/netcdf-c/${NETCDF_VERSION}/netcdf-c-${NETCDF_VERSION}.tar.gz
|
|
42
44
|
tar -xzf netcdf-c-${NETCDF_VERSION}.tar.gz
|
|
43
45
|
pushd netcdf-c-${NETCDF_VERSION}
|
|
44
|
-
export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
46
|
+
#export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
47
|
+
export CPPFLAGS="-I/usr/include/hdf5/openmpi -I${NETCDF_DIR}/include"
|
|
45
48
|
export LDFLAGS="-L${NETCDF_DIR}/lib"
|
|
46
|
-
export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
49
|
+
#export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
50
|
+
export LIBS="-lhdf5_openmpi_hl -lhdf5_openmpi -lm -lz"
|
|
51
|
+
which $CC
|
|
47
52
|
./configure --prefix $NETCDF_DIR --enable-netcdf-4 --enable-shared --enable-dap --enable-parallel4 $NETCDF_EXTRA_CONFIG
|
|
48
53
|
make -j 2
|
|
49
54
|
sudo make install
|
|
@@ -58,13 +63,14 @@ jobs:
|
|
|
58
63
|
- name: Install python dependencies via pip
|
|
59
64
|
run: |
|
|
60
65
|
python -m pip install --upgrade pip
|
|
61
|
-
pip install numpy cython cftime pytest twine wheel check-manifest mpi4py typing-extensions
|
|
66
|
+
python -m pip install numpy cython cftime pytest twine wheel check-manifest mpi4py typing-extensions
|
|
62
67
|
|
|
63
68
|
- name: Install netcdf4-python
|
|
64
69
|
run: |
|
|
65
70
|
export PATH=${NETCDF_DIR}/bin:${PATH}
|
|
66
71
|
export NETCDF_PLUGIN_DIR=${{ github.workspace }}/netcdf-c-${NETCDF_VERSION}/plugins/plugindir
|
|
67
|
-
python
|
|
72
|
+
python -m pip install . --no-build-isolation
|
|
73
|
+
|
|
68
74
|
- name: Test
|
|
69
75
|
run: |
|
|
70
76
|
export PATH=${NETCDF_DIR}/bin:${PATH}
|
|
@@ -74,21 +80,24 @@ jobs:
|
|
|
74
80
|
python run_all.py
|
|
75
81
|
# parallel (hdf5 for netcdf4, pnetcdf for netcdf3)
|
|
76
82
|
cd ../examples
|
|
77
|
-
mpirun.mpich -np 4 python mpi_example.py
|
|
83
|
+
#mpirun.mpich -np 4 python mpi_example.py
|
|
84
|
+
mpirun -np 4 --oversubscribe python mpi_example.py
|
|
78
85
|
if [ $? -ne 0 ] ; then
|
|
79
86
|
echo "hdf5 mpi test failed!"
|
|
80
87
|
exit 1
|
|
81
88
|
else
|
|
82
89
|
echo "hdf5 mpi test passed!"
|
|
83
90
|
fi
|
|
84
|
-
mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
91
|
+
#mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
92
|
+
mpirun -np 4 --oversubscribe python mpi_example_compressed.py
|
|
85
93
|
if [ $? -ne 0 ] ; then
|
|
86
94
|
echo "hdf5 compressed mpi test failed!"
|
|
87
95
|
exit 1
|
|
88
96
|
else
|
|
89
97
|
echo "hdf5 compressed mpi test passed!"
|
|
90
98
|
fi
|
|
91
|
-
mpirun.mpich -np 4 python mpi_example.py NETCDF3_64BIT_DATA
|
|
99
|
+
#mpirun.mpich -np 4 python mpi_example.py NETCDF3_64BIT_DATA
|
|
100
|
+
mpirun -np 4 --oversubscribe python mpi_example.py NETCDF3_64BIT_DATA
|
|
92
101
|
if [ $? -ne 0 ] ; then
|
|
93
102
|
echo "pnetcdf mpi test failed!"
|
|
94
103
|
exit 1
|
|
@@ -6,32 +6,36 @@ jobs:
|
|
|
6
6
|
runs-on: ubuntu-latest
|
|
7
7
|
env:
|
|
8
8
|
NETCDF_DIR: ${{ github.workspace }}/..
|
|
9
|
-
CC: mpicc.mpich
|
|
9
|
+
#CC: mpicc.mpich
|
|
10
|
+
CC: mpicc
|
|
10
11
|
#NO_NET: 1
|
|
11
12
|
strategy:
|
|
12
13
|
matrix:
|
|
13
|
-
python-version: ["3.
|
|
14
|
+
python-version: ["3.14"]
|
|
14
15
|
steps:
|
|
15
16
|
|
|
16
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v6
|
|
17
18
|
with:
|
|
18
19
|
submodules: true
|
|
19
20
|
|
|
20
21
|
- name: Set up Python ${{ matrix.python-version }}
|
|
21
|
-
uses: actions/setup-python@
|
|
22
|
+
uses: actions/setup-python@v6
|
|
22
23
|
with:
|
|
23
24
|
python-version: ${{ matrix.python-version }}
|
|
24
25
|
|
|
25
26
|
- name: Install Ubuntu Dependencies
|
|
26
27
|
run: |
|
|
27
28
|
sudo apt-get update
|
|
28
|
-
sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
29
|
+
#sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
30
|
+
sudo apt-get install openmpi-common libopenmpi-dev openmpi-bin libhdf5-openmpi-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
29
31
|
echo "Download and build netCDF github master"
|
|
30
32
|
git clone https://github.com/Unidata/netcdf-c
|
|
31
33
|
pushd netcdf-c
|
|
32
|
-
export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
34
|
+
#export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
35
|
+
export CPPFLAGS="-I/usr/include/hdf5/openmpi -I${NETCDF_DIR}/include"
|
|
33
36
|
export LDFLAGS="-L${NETCDF_DIR}/lib"
|
|
34
|
-
export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
37
|
+
#export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
38
|
+
export LIBS="-lhdf5_openmpi_hl -lhdf5_openmpi -lm -lz"
|
|
35
39
|
autoreconf -i
|
|
36
40
|
./configure --prefix $NETCDF_DIR --enable-netcdf-4 --enable-shared --enable-dap --enable-parallel4
|
|
37
41
|
make -j 2
|
|
@@ -47,13 +51,13 @@ jobs:
|
|
|
47
51
|
- name: Install python dependencies via pip
|
|
48
52
|
run: |
|
|
49
53
|
python -m pip install --upgrade pip
|
|
50
|
-
pip install numpy cython cftime pytest twine wheel check-manifest mpi4py mypy types-setuptools typing-extensions
|
|
54
|
+
python -m pip install numpy cython cftime pytest twine wheel check-manifest mpi4py mypy types-setuptools typing-extensions
|
|
51
55
|
|
|
52
56
|
- name: Install netcdf4-python
|
|
53
57
|
run: |
|
|
54
58
|
export PATH=${NETCDF_DIR}/bin:${PATH}
|
|
55
59
|
export NETCDF_PLUGIN_DIR=${{ github.workspace }}/netcdf-c/plugins/plugindir
|
|
56
|
-
python
|
|
60
|
+
python -m pip install . --no-build-isolation
|
|
57
61
|
|
|
58
62
|
- name: Test
|
|
59
63
|
run: |
|
|
@@ -65,14 +69,16 @@ jobs:
|
|
|
65
69
|
python run_all.py
|
|
66
70
|
# parallel
|
|
67
71
|
cd ../examples
|
|
68
|
-
mpirun.mpich -np 4 python mpi_example.py
|
|
72
|
+
#mpirun.mpich -np 4 python mpi_example.py
|
|
73
|
+
mpirun -np 4 --oversubscribe python mpi_example.py
|
|
69
74
|
if [ $? -ne 0 ] ; then
|
|
70
75
|
echo "hdf5 mpi test failed!"
|
|
71
76
|
exit 1
|
|
72
77
|
else
|
|
73
78
|
echo "hdf5 mpi test passed!"
|
|
74
79
|
fi
|
|
75
|
-
mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
80
|
+
#mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
81
|
+
mpirun -np 4 --oversubscribe python mpi_example_compressed.py
|
|
76
82
|
if [ $? -ne 0 ] ; then
|
|
77
83
|
echo "hdf5 compressed mpi test failed!"
|
|
78
84
|
exit 1
|
|
@@ -9,26 +9,28 @@ jobs:
|
|
|
9
9
|
NETCDF_VERSION: 4.7.4
|
|
10
10
|
NETCDF_DIR: ${{ github.workspace }}/..
|
|
11
11
|
NETCDF_EXTRA_CONFIG: --enable-pnetcdf
|
|
12
|
-
CC: mpicc.mpich
|
|
12
|
+
#CC: mpicc.mpich
|
|
13
|
+
CC: mpicc
|
|
13
14
|
#NO_NET: 1
|
|
14
15
|
strategy:
|
|
15
16
|
matrix:
|
|
16
|
-
python-version: ["3.
|
|
17
|
+
python-version: ["3.14"]
|
|
17
18
|
steps:
|
|
18
19
|
|
|
19
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v6
|
|
20
21
|
with:
|
|
21
22
|
submodules: true
|
|
22
23
|
|
|
23
24
|
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@v6
|
|
25
26
|
with:
|
|
26
27
|
python-version: ${{ matrix.python-version }}
|
|
27
28
|
|
|
28
29
|
- name: Install Ubuntu Dependencies
|
|
29
30
|
run: |
|
|
30
31
|
sudo apt-get update
|
|
31
|
-
sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
32
|
+
#sudo apt-get install mpich libmpich-dev libhdf5-mpich-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
33
|
+
sudo apt-get install openmpi-common libopenmpi-dev openmpi-bin libhdf5-openmpi-dev libcurl4-openssl-dev bzip2 libsnappy-dev libblosc-dev libzstd-dev
|
|
32
34
|
echo "Download and build PnetCDF version ${PNETCDF_VERSION}"
|
|
33
35
|
wget https://parallel-netcdf.github.io/Release/pnetcdf-${PNETCDF_VERSION}.tar.gz
|
|
34
36
|
tar -xzf pnetcdf-${PNETCDF_VERSION}.tar.gz
|
|
@@ -42,9 +44,11 @@ jobs:
|
|
|
42
44
|
wget https://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-c-${NETCDF_VERSION}.tar.gz
|
|
43
45
|
tar -xzf netcdf-c-${NETCDF_VERSION}.tar.gz
|
|
44
46
|
pushd netcdf-c-${NETCDF_VERSION}
|
|
45
|
-
export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
47
|
+
#export CPPFLAGS="-I/usr/include/hdf5/mpich -I${NETCDF_DIR}/include"
|
|
48
|
+
export CPPFLAGS="-I/usr/include/hdf5/openmpi -I${NETCDF_DIR}/include"
|
|
46
49
|
export LDFLAGS="-L${NETCDF_DIR}/lib"
|
|
47
|
-
export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
50
|
+
#export LIBS="-lhdf5_mpich_hl -lhdf5_mpich -lm -lz"
|
|
51
|
+
export LIBS="-lhdf5_openmpi_hl -lhdf5_openmpi -lm -lz"
|
|
48
52
|
./configure --prefix $NETCDF_DIR --enable-netcdf-4 --enable-shared --enable-dap --enable-parallel4 $NETCDF_EXTRA_CONFIG
|
|
49
53
|
make -j 2
|
|
50
54
|
sudo make install
|
|
@@ -59,13 +63,14 @@ jobs:
|
|
|
59
63
|
- name: Install python dependencies via pip
|
|
60
64
|
run: |
|
|
61
65
|
python -m pip install --upgrade pip
|
|
62
|
-
pip install numpy cython cftime pytest twine wheel check-manifest mpi4py typing-extensions
|
|
66
|
+
python -m pip install numpy cython cftime pytest twine wheel check-manifest mpi4py typing-extensions
|
|
63
67
|
|
|
64
68
|
- name: Install netcdf4-python
|
|
65
69
|
run: |
|
|
66
70
|
export PATH=${NETCDF_DIR}/bin:${PATH}
|
|
67
71
|
export NETCDF_PLUGIN_DIR=${{ github.workspace }}/netcdf-c-${NETCDF_VERSION}/plugins/plugindir
|
|
68
|
-
python
|
|
72
|
+
python -m pip install . --no-build-isolation
|
|
73
|
+
|
|
69
74
|
- name: Test
|
|
70
75
|
run: |
|
|
71
76
|
export PATH=${NETCDF_DIR}/bin:${PATH}
|
|
@@ -75,21 +80,24 @@ jobs:
|
|
|
75
80
|
python run_all.py
|
|
76
81
|
# parallel (hdf5 for netcdf4, pnetcdf for netcdf3)
|
|
77
82
|
cd ../examples
|
|
78
|
-
mpirun.mpich -np 4 python mpi_example.py
|
|
83
|
+
#mpirun.mpich -np 4 python mpi_example.py
|
|
84
|
+
mpirun -np 4 --oversubscribe python mpi_example.py
|
|
79
85
|
if [ $? -ne 0 ] ; then
|
|
80
86
|
echo "hdf5 mpi test failed!"
|
|
81
87
|
exit 1
|
|
82
88
|
else
|
|
83
89
|
echo "hdf5 mpi test passed!"
|
|
84
90
|
fi
|
|
85
|
-
mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
91
|
+
#mpirun.mpich -np 4 python mpi_example_compressed.py
|
|
92
|
+
mpirun -np 4 --oversubscribe python mpi_example_compressed.py
|
|
86
93
|
if [ $? -ne 0 ] ; then
|
|
87
94
|
echo "hdf5 compressed mpi test failed!"
|
|
88
95
|
exit 1
|
|
89
96
|
else
|
|
90
97
|
echo "hdf5 compressed mpi test passed!"
|
|
91
98
|
fi
|
|
92
|
-
mpirun.mpich -np 4 python mpi_example.py NETCDF3_64BIT_DATA
|
|
99
|
+
#mpirun.mpich -np 4 python mpi_example.py NETCDF3_64BIT_DATA
|
|
100
|
+
mpirun -np 4 --oversubscribe python mpi_example.py NETCDF3_64BIT_DATA
|
|
93
101
|
if [ $? -ne 0 ] ; then
|
|
94
102
|
echo "pnetcdf mpi test failed!"
|
|
95
103
|
exit 1
|
|
@@ -18,11 +18,11 @@ jobs:
|
|
|
18
18
|
name: Build source distribution
|
|
19
19
|
runs-on: ubuntu-22.04
|
|
20
20
|
steps:
|
|
21
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
22
|
with:
|
|
23
23
|
fetch-depth: 0
|
|
24
24
|
|
|
25
|
-
- uses: actions/setup-python@
|
|
25
|
+
- uses: actions/setup-python@v6
|
|
26
26
|
name: Install Python
|
|
27
27
|
with:
|
|
28
28
|
python-version: 3.x
|
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
pip install build
|
|
39
39
|
&& python -m build --sdist . --outdir dist
|
|
40
40
|
|
|
41
|
-
- uses: actions/upload-artifact@
|
|
41
|
+
- uses: actions/upload-artifact@v6
|
|
42
42
|
with:
|
|
43
43
|
name: pypi-artifacts
|
|
44
44
|
path: ${{ github.workspace }}/dist/*.tar.gz
|
|
@@ -55,17 +55,11 @@ jobs:
|
|
|
55
55
|
include:
|
|
56
56
|
- os: ubuntu-22.04
|
|
57
57
|
arch: x86_64
|
|
58
|
-
- os: ubuntu-
|
|
58
|
+
- os: ubuntu-24.04-arm
|
|
59
59
|
arch: aarch64
|
|
60
|
-
- os: macos-14
|
|
61
|
-
arch: arm64
|
|
62
|
-
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=14.0
|
|
63
|
-
- os: macos-12
|
|
64
|
-
arch: x86_64
|
|
65
|
-
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=12.0
|
|
66
60
|
|
|
67
61
|
steps:
|
|
68
|
-
- uses: actions/checkout@
|
|
62
|
+
- uses: actions/checkout@v6
|
|
69
63
|
with:
|
|
70
64
|
fetch-depth: 0
|
|
71
65
|
|
|
@@ -80,54 +74,47 @@ jobs:
|
|
|
80
74
|
shell: bash
|
|
81
75
|
# On PRs we run only oldest and newest Python versions to reduce CI load.
|
|
82
76
|
# Skips pypy and musllinux everywhere.
|
|
83
|
-
# We are
|
|
77
|
+
# We are building 310, 311 and 314 for now.
|
|
78
|
+
# (3.11 is the oldest version for which we support abi3 wheels)
|
|
84
79
|
# These needs to rotate every new Python release.
|
|
85
80
|
run: |
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
echo "CIBW_SKIP=$CIBW_SKIP" >> $GITHUB_ENV
|
|
92
|
-
echo "Setting CIBW_SKIP=$CIBW_SKIP"
|
|
81
|
+
set -x
|
|
82
|
+
echo "CIBW_BUILD=cp310-* cp311-* cp314-* cp314t-*" >> $GITHUB_ENV
|
|
83
|
+
set +x
|
|
84
|
+
|
|
85
|
+
if: ${{ github.event_name }} == "pull_request"
|
|
93
86
|
|
|
94
87
|
- name: "Building ${{ matrix.os }} (${{ matrix.arch }}) wheels"
|
|
95
|
-
uses: pypa/cibuildwheel@
|
|
88
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
96
89
|
env:
|
|
97
|
-
CIBW_SKIP: ${{ env.CIBW_SKIP }}
|
|
98
90
|
CIBW_ARCHS: ${{ matrix.arch }}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
CIBW_MANYLINUX_AARCH64_IMAGE: ghcr.io/ocefpaf/manylinux2014_aarch64-netcdf
|
|
102
|
-
# Emulation testing is slow, testing only latest Python.
|
|
103
|
-
CIBW_TEST_SKIP: "cp38-*_aarch64 cp39-*_aarch64 cp310-*_aarch64 cp311-*_aarch64"
|
|
104
|
-
CIBW_ENVIRONMENT: ${{ matrix.CIBW_ENVIRONMENT }}
|
|
105
|
-
CIBW_BEFORE_BUILD_MACOS: brew install hdf5 netcdf
|
|
106
|
-
CIBW_TEST_REQUIRES: pytest cython packaging typing-extensions
|
|
107
|
-
CIBW_TEST_COMMAND: >
|
|
108
|
-
python -c "import netCDF4; print(f'netCDF4 v{netCDF4.__version__}')"
|
|
109
|
-
&& pytest -s -rxs -v {project}/test
|
|
110
|
-
|
|
111
|
-
- uses: actions/upload-artifact@v4
|
|
91
|
+
|
|
92
|
+
- uses: actions/upload-artifact@v6
|
|
112
93
|
with:
|
|
113
94
|
name: pypi-artifacts-${{ matrix.os }}-${{ matrix.arch }}
|
|
114
95
|
path: ${{ github.workspace }}/wheelhouse/*.whl
|
|
115
96
|
|
|
116
97
|
|
|
117
|
-
|
|
98
|
+
build_wheels_winmac:
|
|
118
99
|
name: Build wheels for ${{matrix.arch}} on ${{ matrix.os }}
|
|
119
100
|
runs-on: ${{ matrix.os }}
|
|
120
101
|
strategy:
|
|
102
|
+
fail-fast: false
|
|
121
103
|
matrix:
|
|
122
|
-
|
|
123
|
-
|
|
104
|
+
include:
|
|
105
|
+
- os: windows-latest
|
|
106
|
+
arch: AMD64
|
|
107
|
+
- os: macos-14
|
|
108
|
+
arch: arm64
|
|
109
|
+
- os: macos-15-intel
|
|
110
|
+
arch: x86_64
|
|
124
111
|
|
|
125
112
|
steps:
|
|
126
|
-
- uses: actions/checkout@
|
|
113
|
+
- uses: actions/checkout@v6
|
|
127
114
|
with:
|
|
128
115
|
fetch-depth: 0
|
|
129
116
|
|
|
130
|
-
- uses: actions/setup-python@
|
|
117
|
+
- uses: actions/setup-python@v6
|
|
131
118
|
name: Install Python
|
|
132
119
|
with:
|
|
133
120
|
python-version: 3.x
|
|
@@ -138,40 +125,65 @@ jobs:
|
|
|
138
125
|
environment-name: build
|
|
139
126
|
init-shell: bash
|
|
140
127
|
create-args: >-
|
|
141
|
-
python=${{ matrix.python-version }} libnetcdf=4.9.
|
|
128
|
+
python=${{ matrix.python-version }} libnetcdf=4.9.3 --channel conda-forge
|
|
142
129
|
|
|
143
|
-
- name:
|
|
144
|
-
|
|
145
|
-
python -m pip install --upgrade cibuildwheel delvewheel
|
|
146
|
-
|
|
147
|
-
- name: Build wheels for Windows (${{ matrix.arch }})
|
|
148
|
-
run: cibuildwheel --output-dir wheelhouse
|
|
130
|
+
- name: Build wheels for Windows/Mac
|
|
131
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
149
132
|
env:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
netCDF4_DIR="C:\\Users\\runneradmin\\micromamba\\envs\\build\\Library"
|
|
154
|
-
PATH="C:\\Users\\runneradmin\\micromamba\\envs\\build\\Library\\bin;${PATH}"
|
|
155
|
-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: >
|
|
156
|
-
delvewheel show {wheel}
|
|
157
|
-
&& delvewheel repair -w {dest_dir} {wheel}
|
|
158
|
-
CIBW_TEST_REQUIRES: pytest cython packaging typing-extensions
|
|
159
|
-
CIBW_TEST_COMMAND: >
|
|
160
|
-
python -c "import netCDF4; print(f'netCDF4 v{netCDF4.__version__}')"
|
|
161
|
-
&& pytest -s -rxs -v {project}\\test
|
|
162
|
-
|
|
163
|
-
- uses: actions/upload-artifact@v4
|
|
133
|
+
CIBW_ARCHS: ${{ matrix.arch }}
|
|
134
|
+
|
|
135
|
+
- uses: actions/upload-artifact@v6
|
|
164
136
|
with:
|
|
165
137
|
name: pypi-artifacts-${{ matrix.os }}-${{ matrix.arch }}
|
|
166
138
|
path: ${{ github.workspace }}/wheelhouse/*.whl
|
|
167
139
|
|
|
168
140
|
|
|
141
|
+
build_wheels_windows_arm:
|
|
142
|
+
name: Build wheels for ARM64 on Windows
|
|
143
|
+
runs-on: windows-11-arm
|
|
144
|
+
steps:
|
|
145
|
+
- uses: actions/checkout@v6
|
|
146
|
+
with:
|
|
147
|
+
fetch-depth: 0
|
|
148
|
+
|
|
149
|
+
- uses: actions/setup-python@v6
|
|
150
|
+
name: Install Python
|
|
151
|
+
with:
|
|
152
|
+
python-version: 3.x
|
|
153
|
+
|
|
154
|
+
- name: Install vcpkg dependencies
|
|
155
|
+
shell: pwsh
|
|
156
|
+
run: |
|
|
157
|
+
# Install vcpkg
|
|
158
|
+
git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg
|
|
159
|
+
cd C:\vcpkg
|
|
160
|
+
.\bootstrap-vcpkg.bat
|
|
161
|
+
|
|
162
|
+
# Install netcdf and dependencies
|
|
163
|
+
.\vcpkg.exe install hdf5:arm64-windows netcdf-c:arm64-windows zlib:arm64-windows
|
|
164
|
+
|
|
165
|
+
# Set environment variables for build
|
|
166
|
+
echo "HDF5_DIR=C:\vcpkg\installed\arm64-windows" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
167
|
+
echo "NETCDF4_DIR=C:\vcpkg\installed\arm64-windows" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
168
|
+
|
|
169
|
+
- name: Build wheels for Windows ARM64
|
|
170
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
171
|
+
env:
|
|
172
|
+
CIBW_ARCHS: ARM64
|
|
173
|
+
CIBW_SKIP: "cp310-*"
|
|
174
|
+
|
|
175
|
+
- uses: actions/upload-artifact@v6
|
|
176
|
+
with:
|
|
177
|
+
name: pypi-artifacts-windows-11-arm-ARM64
|
|
178
|
+
path: ${{ github.workspace }}/wheelhouse/*.whl
|
|
179
|
+
|
|
180
|
+
|
|
169
181
|
show-artifacts:
|
|
170
|
-
needs: [build_bdist, build_sdist,
|
|
182
|
+
needs: [build_bdist, build_sdist, build_wheels_winmac, build_wheels_windows_arm]
|
|
171
183
|
name: "Show artifacts"
|
|
172
184
|
runs-on: ubuntu-22.04
|
|
173
185
|
steps:
|
|
174
|
-
- uses: actions/download-artifact@
|
|
186
|
+
- uses: actions/download-artifact@v7
|
|
175
187
|
with:
|
|
176
188
|
pattern: pypi-artifacts*
|
|
177
189
|
path: ${{ github.workspace }}/dist
|
|
@@ -183,13 +195,13 @@ jobs:
|
|
|
183
195
|
|
|
184
196
|
|
|
185
197
|
publish-artifacts-pypi:
|
|
186
|
-
needs: [build_bdist, build_sdist,
|
|
198
|
+
needs: [build_bdist, build_sdist, build_wheels_winmac, build_wheels_windows_arm]
|
|
187
199
|
name: "Publish to PyPI"
|
|
188
200
|
runs-on: ubuntu-22.04
|
|
189
201
|
# upload to PyPI for every tag starting with 'v'
|
|
190
202
|
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
|
|
191
203
|
steps:
|
|
192
|
-
- uses: actions/download-artifact@
|
|
204
|
+
- uses: actions/download-artifact@v7
|
|
193
205
|
with:
|
|
194
206
|
pattern: pypi-artifacts*
|
|
195
207
|
path: ${{ github.workspace }}/dist
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
# NO_NET: 1
|
|
13
13
|
strategy:
|
|
14
14
|
matrix:
|
|
15
|
-
python-version: [ "3.
|
|
15
|
+
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
|
|
16
16
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
17
17
|
platform: [x64, x32]
|
|
18
18
|
exclude:
|
|
@@ -24,7 +24,7 @@ jobs:
|
|
|
24
24
|
shell: bash -l {0}
|
|
25
25
|
|
|
26
26
|
steps:
|
|
27
|
-
- uses: actions/checkout@
|
|
27
|
+
- uses: actions/checkout@v6
|
|
28
28
|
with:
|
|
29
29
|
submodules: true
|
|
30
30
|
|
|
@@ -45,6 +45,11 @@ jobs:
|
|
|
45
45
|
|
|
46
46
|
- name: Tests
|
|
47
47
|
run: |
|
|
48
|
+
if [ "$RUNNER_OS" == "Windows" ]; then
|
|
49
|
+
export HDF5_PLUGIN_PATH="${CONDA_PREFIX}\\Library\\hdf5\\lib\\plugin"
|
|
50
|
+
else
|
|
51
|
+
export HDF5_PLUGIN_PATH="${CONDA_PREFIX}/hdf5/lib/plugin/"
|
|
52
|
+
fi
|
|
48
53
|
pytest -s -rxs -v test
|
|
49
54
|
|
|
50
55
|
run-mpi:
|
|
@@ -58,7 +63,7 @@ jobs:
|
|
|
58
63
|
run:
|
|
59
64
|
shell: bash -l {0}
|
|
60
65
|
steps:
|
|
61
|
-
- uses: actions/checkout@
|
|
66
|
+
- uses: actions/checkout@v6
|
|
62
67
|
with:
|
|
63
68
|
submodules: true
|
|
64
69
|
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
version 1.7.4 (tag v1.7.4rel)
|
|
2
|
+
================================
|
|
3
|
+
* Make sure automatic conversion of character arrays <--> string arrays works for Unicode strings (issue #1440).
|
|
4
|
+
(previously only worked correctly for encoding="ascii").
|
|
5
|
+
* Add netcdf plugins (blosc, zstd, bzip2) in wheels. Blosc plugin doesn't work in Windows wheels.
|
|
6
|
+
Macos wheels now use conda provided libs. (PR #1450)
|
|
7
|
+
* Add windows/arm (PR #1453) and free-threaded python wheels (issue #1454). Windows wheels now use netcdf-c 4.9.3.
|
|
8
|
+
WARNING: netcdf-c is not thread-safe and netcdf4-python does have internal locking so expect segfaults if you
|
|
9
|
+
use netcdf4-python on multiple threads with free-threaded python. Users must exercise care to only call netcdf from
|
|
10
|
+
a single thread.
|
|
11
|
+
|
|
12
|
+
version 1.7.3 (tag v1.7.3rel)
|
|
13
|
+
=============================
|
|
14
|
+
* Python 3.14 wheels (issue #1432)
|
|
15
|
+
* support os.PathLike arguments for `Dataset.fromcdl` and raise a `FileNotFoundError`
|
|
16
|
+
if the cdl is missing and a `FileExistsError` if the nc file already exists (PR #1387)
|
|
17
|
+
* raise more informative error when trying to iterate or
|
|
18
|
+
perform a membership operation on a Dataset (issue #1383)
|
|
19
|
+
* fix type hint for createEnumType (issue #1378)
|
|
20
|
+
* add python 3.13 to windows wheel builds (PR #1377)
|
|
21
|
+
* allow slicing of vlen and string variables with non-unitary strides (issue #1408).
|
|
22
|
+
|
|
1
23
|
version 1.7.2 (tag v1.7.2rel)
|
|
2
24
|
=============================
|
|
3
25
|
* add static type hints (PRs #1302, #1349)
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: netCDF4
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.4
|
|
4
4
|
Summary: Provides an object-oriented python interface to the netCDF version 4 library
|
|
5
|
-
Author-email: Jeff Whitaker <jeffrey
|
|
6
|
-
License: MIT
|
|
5
|
+
Author-email: Jeff Whitaker <whitaker.jeffrey@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
7
|
Project-URL: Documentation, https://unidata.github.io/netcdf4-python/
|
|
8
8
|
Project-URL: Repository, https://github.com/Unidata/netcdf4-python
|
|
9
9
|
Keywords: numpy,netcdf,data,science,network,oceanography,meteorology,climate
|
|
10
10
|
Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
17
|
Classifier: Intended Audience :: Science/Research
|
|
18
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
19
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
19
|
Classifier: Topic :: System :: Archiving :: Compression
|
|
21
20
|
Classifier: Operating System :: OS Independent
|
|
22
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.10
|
|
23
22
|
Description-Content-Type: text/x-rst
|
|
24
23
|
License-File: LICENSE
|
|
25
24
|
Requires-Dist: cftime
|
|
26
25
|
Requires-Dist: certifi
|
|
27
|
-
Requires-Dist: numpy
|
|
26
|
+
Requires-Dist: numpy>=2.3.0; platform_system == "Windows" and platform_machine == "ARM64"
|
|
27
|
+
Requires-Dist: numpy>=1.21.2; platform_system != "Windows" or platform_machine != "ARM64"
|
|
28
28
|
Provides-Extra: tests
|
|
29
29
|
Requires-Dist: Cython; extra == "tests"
|
|
30
30
|
Requires-Dist: packaging; extra == "tests"
|
|
31
31
|
Requires-Dist: pytest; extra == "tests"
|
|
32
|
+
Requires-Dist: typing-extensions>=4.15.0; extra == "tests"
|
|
33
|
+
Provides-Extra: parallel
|
|
34
|
+
Requires-Dist: mpi4py; extra == "parallel"
|
|
35
|
+
Dynamic: license-file
|
|
32
36
|
|
|
33
37
|
netCDF version 4 has many features not found in earlier versions of the library,
|
|
34
38
|
such as hierarchical groups, zlib compression, multiple unlimited dimensions,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# [netcdf4-python](http://unidata.github.io/netcdf4-python)
|
|
2
2
|
[Python](http://python.org)/[numpy](http://numpy.org) interface to the netCDF [C library](https://github.com/Unidata/netcdf-c).
|
|
3
3
|
|
|
4
|
-
[](https://github.com/Unidata/netcdf4-python/actions/workflows/github-code-scanning/codeql)
|
|
5
5
|
[](http://python.org/pypi/netCDF4)
|
|
6
6
|
[](https://anaconda.org/conda-forge/netCDF4)
|
|
7
7
|
[](https://doi.org/10.5281/zenodo.2592290)
|
|
@@ -10,6 +10,14 @@
|
|
|
10
10
|
## News
|
|
11
11
|
For details on the latest updates, see the [Changelog](https://github.com/Unidata/netcdf4-python/blob/master/Changelog).
|
|
12
12
|
|
|
13
|
+
1/5/2026: Version [1.7.4](https://pypi.python.org/pypi/netCDF4/1.7.4) released. Compression plugins now included in wheels, windows/arm64 and
|
|
14
|
+
free-threaded python wheels provided. Automatic conversion of character arrays <--> string arrays works for Unicode (not just ascii) strings.
|
|
15
|
+
WARNING: netcdf-c is not thread-safe and netcdf4-python does have internal locking so expect segfaults if you
|
|
16
|
+
use netcdf4-python on multiple threads with free-threaded python. Users must exercise care to only call netcdf from
|
|
17
|
+
a single thread.
|
|
18
|
+
|
|
19
|
+
10/13/2025: Version [1.7.3](https://pypi.python.org/pypi/netCDF4/1.7.3) released. Minor updates/bugfixes and python 3.14 wheels, see Changelog for details.
|
|
20
|
+
|
|
13
21
|
10/22/2024: Version [1.7.2](https://pypi.python.org/pypi/netCDF4/1.7.2) released. Minor updates/bugfixes and python 3.13 wheels, see Changelog for details.
|
|
14
22
|
|
|
15
23
|
06/17/2024: Version [1.7.1](https://pypi.python.org/pypi/netCDF4/1.7.1) released. Fixes for wheels, no code changes.
|