wavpack-numcodecs 0.2.2__tar.gz → 0.3.0__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 (50) hide show
  1. {wavpack-numcodecs-0.2.2/src/wavpack_numcodecs.egg-info → wavpack_numcodecs-0.3.0}/PKG-INFO +41 -9
  2. wavpack-numcodecs-0.2.2/PKG-INFO → wavpack_numcodecs-0.3.0/README.md +28 -21
  3. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/pyproject.toml +5 -2
  4. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/setup.py +2 -4
  5. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/__init__.py +36 -0
  6. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/compat_ext.c +8082 -0
  7. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/linux-x86_64-glibc2.39/libwavpack.so +0 -0
  8. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/linux-x86_64-glibc2.35/libwavpack.so +0 -0
  9. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/linux-x86_64-glibc2.39/libwavpack.so +0 -0
  10. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/linux-x86_64-glibc2.39/libwavpack.so.1 +0 -0
  11. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/windows-x86_32/wavpackdll.dll +0 -0
  12. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/windows-x86_32/wavpackdll.lib +0 -0
  13. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/windows-x86_64/wavpackdll.dll +0 -0
  14. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/libraries/5.8.0/windows-x86_64/wavpackdll.lib +0 -0
  15. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/wavpack.c +16410 -0
  16. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/wavpack.pyx +0 -3
  17. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs/wavpackv3.py +93 -0
  18. wavpack-numcodecs-0.2.2/README.md → wavpack_numcodecs-0.3.0/src/wavpack_numcodecs.egg-info/PKG-INFO +53 -5
  19. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs.egg-info/SOURCES.txt +8 -1
  20. wavpack_numcodecs-0.3.0/src/wavpack_numcodecs.egg-info/entry_points.txt +5 -0
  21. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/tests/test_imports.py +2 -2
  22. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/tests/test_wavpack_codec.py +106 -10
  23. wavpack-numcodecs-0.2.2/src/wavpack_numcodecs/__init__.py +0 -13
  24. wavpack-numcodecs-0.2.2/src/wavpack_numcodecs/compat_ext.c +0 -4502
  25. wavpack-numcodecs-0.2.2/src/wavpack_numcodecs/libraries/5.7.0/linux-x86_64-glibc2.35/libwavpack.so.1 +0 -0
  26. wavpack-numcodecs-0.2.2/src/wavpack_numcodecs/wavpack.c +0 -9787
  27. wavpack-numcodecs-0.2.2/src/wavpack_numcodecs.egg-info/entry_points.txt +0 -2
  28. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/LICENSE +0 -0
  29. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/setup.cfg +0 -0
  30. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/compat_ext.pxd +0 -0
  31. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/compat_ext.pyx +0 -0
  32. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/globals.py +0 -0
  33. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/include/wavpack/wavpack.h +0 -0
  34. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.6.0/linux-x86_64-glibc2.35/libwavpack.so +0 -0
  35. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.6.0/windows-x86_32/wavpackdll.dll +0 -0
  36. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.6.0/windows-x86_32/wavpackdll.lib +0 -0
  37. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.6.0/windows-x86_64/wavpackdll.dll +0 -0
  38. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.6.0/windows-x86_64/wavpackdll.lib +0 -0
  39. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/linux-x86_64-glibc2.31/libwavpack.so +0 -0
  40. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/linux-x86_64-glibc2.35/libwavpack.so +0 -0
  41. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/windows-x86_32/wavpackdll.dll +0 -0
  42. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/windows-x86_32/wavpackdll.lib +0 -0
  43. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/windows-x86_64/wavpackdll.dll +0 -0
  44. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libraries/5.7.0/windows-x86_64/wavpackdll.lib +0 -0
  45. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/libwavpack.so.1 +0 -0
  46. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/src/decoder.c +0 -0
  47. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs/src/encoder.c +0 -0
  48. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs.egg-info/dependency_links.txt +0 -0
  49. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs.egg-info/requires.txt +0 -0
  50. {wavpack-numcodecs-0.2.2 → wavpack_numcodecs-0.3.0}/src/wavpack_numcodecs.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: wavpack-numcodecs
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: Numcodecs implementation of WavPack audio codec.
5
5
  Author-email: Alessio Buccino <alessiop.buccino@gmail.com>, David Bryant <david@wavpack.com>
6
6
  License: MIT
@@ -10,9 +10,18 @@ Classifier: Programming Language :: Python :: 3
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Description-Content-Type: text/markdown
13
- Provides-Extra: test
14
- Provides-Extra: test_no_cython
15
13
  License-File: LICENSE
14
+ Requires-Dist: numpy
15
+ Requires-Dist: numcodecs
16
+ Requires-Dist: packaging
17
+ Provides-Extra: test
18
+ Requires-Dist: pytest; extra == "test"
19
+ Requires-Dist: zarr; extra == "test"
20
+ Requires-Dist: Cython; extra == "test"
21
+ Provides-Extra: test-no-cython
22
+ Requires-Dist: pytest; extra == "test-no-cython"
23
+ Requires-Dist: zarr; extra == "test-no-cython"
24
+ Dynamic: license-file
16
25
 
17
26
  [![PyPI version](https://badge.fury.io/py/wavpack-numcodecs.svg)](https://badge.fury.io/py/wavpack-numcodecs) ![tests](https://github.com/AllenNeuralDynamics/wavpack-numcodecs/actions/workflows/python-package-cython.yml/badge.svg)
18
27
 
@@ -35,11 +44,26 @@ brew install wavpack
35
44
  ```
36
45
 
37
46
  For Linux and Windows, the package comes with pre-built binaries of the most
38
- [recent version Wavpack version](https://github.com/dbry/WavPack/releases/tag/5.7.0).
47
+ [recent version Wavpack version](https://github.com/dbry/WavPack/releases/tag/5.8.0).
48
+
49
+ On Windows, you need to have the "Microsoft C++ Build Tools" installed. You can download it and install it from [here](https://visualstudio.microsoft.com/visual-cpp-build-tools/).
39
50
 
40
51
  On Linux, if an existing `wavpack` installation is found, the package will use it. Otherwise, it will use the pre-built binaries available in the `wavpack_numcodecs/libraries` folder.
41
52
 
42
- On Windows, you need to have the "Microsoft C++ Build Tools" installed. You can download it and install it from [here](https://visualstudio.microsoft.com/visual-cpp-build-tools/).
53
+ > [!IMPORTANT]
54
+ > The pre-built binaries for Linux are pre-compiled against ``glibc`` libraries that come with Ubuntu LTS recent versions
55
+ > (2.35 for LTS 22.04 and 2.39 for LTS 24.04).
56
+ > If your system has a different version of ``glibc``, you need to install `wavpack` manually with:
57
+
58
+ ```bash
59
+ WAVPACK_VERSION=5.8.0
60
+ wget "https://www.wavpack.com/wavpack-${WAVPACK_VERSION}.tar.bz2"
61
+ tar -xf wavpack-$WAVPACK_VERSION.tar.bz2
62
+ cd wavpack-$WAVPACK_VERSION
63
+ ./configure
64
+ sudo make install
65
+ cd ..
66
+ ```
43
67
 
44
68
  ## Installation
45
69
 
@@ -69,16 +93,24 @@ data = ... # any numpy array
69
93
  # instantiate WavPack compressor
70
94
  wv_compressor = WavPack(level=2, bps=None)
71
95
 
72
- z = zarr.array(data, compressor=wv_compressor)
96
+ # v2
97
+ group = zarr.group()
98
+ z = group.create_dataset(name="wv_dset", data=data, compressor=wv_compressor)
99
+
100
+ # v3
101
+ zarr.config.set({"default_zarr_version": 3})
102
+ group = zarr.group()
103
+ z = group.create_array(name="wv_dset3", data=data, serializer=wv_compressor)
73
104
 
74
105
  data_read = z[:]
75
106
  ```
76
107
  Available `**kwargs` can be browsed with: `WavPack?`
77
108
 
78
- **NOTE:**
79
- In order to reload in zarr an array saved with the `WavPack`, you just need to have the `wavpack_numcodecs` package
109
+ > **_NOTE 1:_** In order to reload in zarr an array saved with the `WavPack`, you just need to have the `wavpack_numcodecs` package
80
110
  installed.
81
111
 
112
+ > **_NOTE 2:_** The Zarr v3 implementation is an `ArrayBytesCodec`. The `zarr.create_array` function only supports `ArrayArrayCodec` objects for `filters` and `BytesBytesCodecs` for `compressors`. Hence, we need to use the `WavPack` codec as a `serializer`, which is expected to be an `ArrayBytesCodec` object.
113
+
82
114
  # Developmers guide
83
115
 
84
116
  ## How to upgrade WavPack installation and make a new release
@@ -1,19 +1,3 @@
1
- Metadata-Version: 2.1
2
- Name: wavpack-numcodecs
3
- Version: 0.2.2
4
- Summary: Numcodecs implementation of WavPack audio codec.
5
- Author-email: Alessio Buccino <alessiop.buccino@gmail.com>, David Bryant <david@wavpack.com>
6
- License: MIT
7
- Project-URL: Homepage, https://github.com/AllenNeuralDynamics/wavpack-numcodecs
8
- Keywords: example,project
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
12
- Description-Content-Type: text/markdown
13
- Provides-Extra: test
14
- Provides-Extra: test_no_cython
15
- License-File: LICENSE
16
-
17
1
  [![PyPI version](https://badge.fury.io/py/wavpack-numcodecs.svg)](https://badge.fury.io/py/wavpack-numcodecs) ![tests](https://github.com/AllenNeuralDynamics/wavpack-numcodecs/actions/workflows/python-package-cython.yml/badge.svg)
18
2
 
19
3
 
@@ -35,11 +19,26 @@ brew install wavpack
35
19
  ```
36
20
 
37
21
  For Linux and Windows, the package comes with pre-built binaries of the most
38
- [recent version Wavpack version](https://github.com/dbry/WavPack/releases/tag/5.7.0).
22
+ [recent version Wavpack version](https://github.com/dbry/WavPack/releases/tag/5.8.0).
23
+
24
+ On Windows, you need to have the "Microsoft C++ Build Tools" installed. You can download it and install it from [here](https://visualstudio.microsoft.com/visual-cpp-build-tools/).
39
25
 
40
26
  On Linux, if an existing `wavpack` installation is found, the package will use it. Otherwise, it will use the pre-built binaries available in the `wavpack_numcodecs/libraries` folder.
41
27
 
42
- On Windows, you need to have the "Microsoft C++ Build Tools" installed. You can download it and install it from [here](https://visualstudio.microsoft.com/visual-cpp-build-tools/).
28
+ > [!IMPORTANT]
29
+ > The pre-built binaries for Linux are pre-compiled against ``glibc`` libraries that come with Ubuntu LTS recent versions
30
+ > (2.35 for LTS 22.04 and 2.39 for LTS 24.04).
31
+ > If your system has a different version of ``glibc``, you need to install `wavpack` manually with:
32
+
33
+ ```bash
34
+ WAVPACK_VERSION=5.8.0
35
+ wget "https://www.wavpack.com/wavpack-${WAVPACK_VERSION}.tar.bz2"
36
+ tar -xf wavpack-$WAVPACK_VERSION.tar.bz2
37
+ cd wavpack-$WAVPACK_VERSION
38
+ ./configure
39
+ sudo make install
40
+ cd ..
41
+ ```
43
42
 
44
43
  ## Installation
45
44
 
@@ -69,16 +68,24 @@ data = ... # any numpy array
69
68
  # instantiate WavPack compressor
70
69
  wv_compressor = WavPack(level=2, bps=None)
71
70
 
72
- z = zarr.array(data, compressor=wv_compressor)
71
+ # v2
72
+ group = zarr.group()
73
+ z = group.create_dataset(name="wv_dset", data=data, compressor=wv_compressor)
74
+
75
+ # v3
76
+ zarr.config.set({"default_zarr_version": 3})
77
+ group = zarr.group()
78
+ z = group.create_array(name="wv_dset3", data=data, serializer=wv_compressor)
73
79
 
74
80
  data_read = z[:]
75
81
  ```
76
82
  Available `**kwargs` can be browsed with: `WavPack?`
77
83
 
78
- **NOTE:**
79
- In order to reload in zarr an array saved with the `WavPack`, you just need to have the `wavpack_numcodecs` package
84
+ > **_NOTE 1:_** In order to reload in zarr an array saved with the `WavPack`, you just need to have the `wavpack_numcodecs` package
80
85
  installed.
81
86
 
87
+ > **_NOTE 2:_** The Zarr v3 implementation is an `ArrayBytesCodec`. The `zarr.create_array` function only supports `ArrayArrayCodec` objects for `filters` and `BytesBytesCodecs` for `compressors`. Hence, we need to use the `WavPack` codec as a `serializer`, which is expected to be an `ArrayBytesCodec` object.
88
+
82
89
  # Developmers guide
83
90
 
84
91
  ## How to upgrade WavPack installation and make a new release
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wavpack-numcodecs"
3
- version = "0.2.2"
3
+ version = "0.3.0"
4
4
  description = "Numcodecs implementation of WavPack audio codec."
5
5
  authors = [
6
6
  {name = "Alessio Buccino", email = "alessiop.buccino@gmail.com"},
@@ -32,10 +32,13 @@ test_no_cython = [
32
32
  "zarr"
33
33
  ]
34
34
 
35
-
36
35
  [project.urls]
37
36
  "Homepage" = "https://github.com/AllenNeuralDynamics/wavpack-numcodecs"
38
37
 
38
+ [project.entry-points."numcodecs.codecs"]
39
+ wavpack = "wavpack_numcodecs.wavpack:WavPack"
40
+ [project.entry-points."zarr.codecs"]
41
+ wavpack = "wavpack_numcodecs.wavpackv3:WavPack"
39
42
 
40
43
  [build-system]
41
44
  requires = ["setuptools>=62.0"]
@@ -14,7 +14,7 @@ except ImportError:
14
14
  else:
15
15
  have_cython = True
16
16
 
17
- LATEST_WAVPACK_VERSION = "5.7.0"
17
+ LATEST_WAVPACK_VERSION = "5.8.0"
18
18
  SRC_FOLDER = "src/wavpack_numcodecs"
19
19
 
20
20
 
@@ -43,7 +43,7 @@ def get_build_extensions():
43
43
  glibc_version = platform.libc_ver()[1]
44
44
  if glibc_version not in available_glibc_versions:
45
45
  raise RuntimeError(
46
- f"Could not find a matching glibc version for the shipped libraries. "
46
+ f"Could not find a matching the system's glibc version {glibc_version}. "
47
47
  f"Available builds: {available_glibc_versions}"
48
48
  )
49
49
  distr_folder = f"linux-x86_64-glibc{glibc_version}"
@@ -108,12 +108,10 @@ def get_build_extensions():
108
108
  return extensions
109
109
 
110
110
 
111
- entry_points = {"numcodecs.codecs": ["wavpack = wavpack_numcodecs:WavPack"]}
112
111
  extensions = get_build_extensions()
113
112
  cmdclass = {"build_ext": build_ext} if have_cython else {}
114
113
 
115
114
  setup(
116
115
  ext_modules=extensions,
117
116
  cmdclass=cmdclass,
118
- entry_points=entry_points,
119
117
  )
@@ -0,0 +1,36 @@
1
+ import importlib.metadata
2
+ import importlib.util
3
+ import numcodecs
4
+ from packaging.version import parse
5
+
6
+ from wavpack_numcodecs.wavpack import wavpack_version
7
+
8
+
9
+ HAVE_ZARR = importlib.util.find_spec("zarr") is not None
10
+
11
+ USE_ZARR_V3 = False
12
+ if HAVE_ZARR:
13
+ import zarr
14
+
15
+ if parse(zarr.__version__) >= parse("3.0.0"):
16
+ USE_ZARR_V3 = True
17
+
18
+ if USE_ZARR_V3:
19
+ from zarr.registry import register_codec
20
+ from wavpack_numcodecs.wavpackv3 import WavPack
21
+ else:
22
+ from numcodecs import register_codec
23
+ from wavpack_numcodecs.wavpack import WavPack
24
+
25
+ register_codec("wavpack", WavPack)
26
+
27
+ from .globals import (
28
+ get_num_decoding_threads,
29
+ get_num_encoding_threads,
30
+ reset_num_decoding_threads,
31
+ reset_num_encoding_threads,
32
+ set_num_decoding_threads,
33
+ set_num_encoding_threads,
34
+ )
35
+
36
+ __version__ = importlib.metadata.version("wavpack_numcodecs")