15
0

- Update to 2.11.0

* Initial impl zero-copy Buffer by @milesgranger in #209
  * Buffer: Fix extended and negative int reads by @milesgranger in
    #210
  * Initial Type/JavaScript support by @milesgranger in #217
  * Fix lz4.decompress_block_into w/o prepended size by
    @milesgranger in #219
  * Add typing stub files and proper docs site by @milesgranger in
    #220
  * Ban mutating immutable buffers on the free-threaded build by
    @ngoldbaum in #214
  * zstd: store size by @milesgranger in #225
  * Add Python 3.14/t - Drop Python 3.8 by @milesgranger in #226
- Release 2.10.0
  * Remove experimental codecs in default builds by @milesgranger
    in #197
  * Bump libcramjam -> 0.7.0 by @milesgranger in #198
  * Update PyO3 to 0.24 by @musicinmybrain in #207
- Disable test_variants_raise_exception[deflate] 
  * gh#milesgranger/cramjam#211
- Disable blosc2 because it fails to compile right now and upstream
  degraded it from the default feature set to experimental
  * gh#milesgranger/cramjam#197
- Add debuginfo

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cramjam?expand=0&rev=15
This commit is contained in:
2026-01-03 20:11:57 +00:00
committed by Git OBS Bridge
commit f62c9f72f9
12 changed files with 425 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

4
_multibuild Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0"?>
<multibuild>
<package>test</package>
</multibuild>

25
_service Normal file
View File

@@ -0,0 +1,25 @@
<services>
<service mode="manual" name="obs_scm">
<param name="url">https://github.com/milesgranger/cramjam.git</param>
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@</param>
<!-- can change back to master when there are no .post tags on top of the branch -->
<param name="revision">v2.11.0</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
</service>
<service mode="manual" name="tar" />
<service mode="manual" name="recompress">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service mode="manual" name="set_version"/>
<service name="cargo_vendor" mode="manual">
<param name="srcdir">cramjam</param>
<param name="compression">xz</param>
<param name="update">true</param>
</service>
<service name="cargo_audit" mode="manual">
<param name="srcdir">cramjam</param>
</service>
</services>

3
cramjam-2.11.0.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c420c6c5d6d27df9c783869c8bf55971a03ecaf7684beea507a5ab15d1b8f0ce
size 56189840

3
cramjam-2.9.1.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b52175262a350c7aa536bdd8e1b31574de6c6ce475e83cb4e0a56a438349a8bd
size 56142388

View File

@@ -0,0 +1,32 @@
Index: cramjam-2.11.0/tests/test_variants.py
===================================================================
--- cramjam-2.11.0.orig/tests/test_variants.py
+++ cramjam-2.11.0/tests/test_variants.py
@@ -104,7 +104,7 @@ def test_variants_raise_exception(varian
"output_type", (bytes, bytearray, "numpy", cramjam.Buffer, cramjam.File, memoryview)
)
@pytest.mark.parametrize("variant_str", VARIANTS)
-@given(raw_data=st.binary())
+@given(raw_data=st.binary(min_size=2))
def test_variants_compress_into(
variant_str,
input_type,
@@ -181,7 +181,7 @@ def test_variants_compress_into(
"output_type", (bytes, bytearray, "numpy", cramjam.Buffer, cramjam.File, memoryview)
)
@pytest.mark.parametrize("variant_str", VARIANTS)
-@given(raw_data=st.binary())
+@given(raw_data=st.binary(min_size=2))
def test_variants_decompress_into(
variant_str,
input_type,
@@ -191,9 +191,6 @@ def test_variants_decompress_into(
is_pypy,
is_free_threaded,
):
- if variant_str == "izlib" and output_type == "memoryview":
- pytest.skip("See issue https://github.com/milesgranger/cramjam/issues/193")
-
variant = getattr(cramjam, variant_str)
compressed = variant.compress(raw_data)

View File

@@ -0,0 +1,46 @@
Index: cramjam-2.11.0/pyproject.toml
===================================================================
--- cramjam-2.11.0.orig/pyproject.toml
+++ cramjam-2.11.0/pyproject.toml
@@ -15,7 +15,26 @@ requires = ["maturin>=0.14"]
build-backend = "maturin"
[tool.maturin]
-strip = true
+strip = false
+no-default-features = true
+features = [
+ "extension-module",
+ "snappy",
+ "lz4",
+ "bzip2",
+ "brotli",
+ "zstd",
+ "xz-shared",
+ "igzip-shared",
+ "ideflate-shared",
+ "izlib-shared",
+ "use-system-isal-shared",
+ "gzip-shared",
+ "zlib-shared",
+ "deflate-shared",
+# "blosc2-shared",
+# "use-system-blosc2-shared"
+]
[dependency-groups]
dev = [
Index: cramjam-2.11.0/Cargo.toml
===================================================================
--- cramjam-2.11.0.orig/Cargo.toml
+++ cramjam-2.11.0/Cargo.toml
@@ -79,7 +79,8 @@ libcramjam = { version = "^0.8", default
pyo3-build-config = "^0.25"
[profile.release]
-strip = true
+strip = "none"
+debug = true
lto = "fat"
codegen-units = 1
opt-level = 3

4
cramjam.obsinfo Normal file
View File

@@ -0,0 +1,4 @@
name: cramjam
version: 2.11.0
mtime: 1753648793
commit: 1f411f3a05e5acf96ca8a632087916d5bf8b3500

179
python-cramjam.changes Normal file
View File

@@ -0,0 +1,179 @@
-------------------------------------------------------------------
Fri Jan 2 16:11:13 UTC 2026 - Ben Greiner <code@bnavigator.de>
- Update to 2.11.0
* Initial impl zero-copy Buffer by @milesgranger in #209
* Buffer: Fix extended and negative int reads by @milesgranger in
#210
* Initial Type/JavaScript support by @milesgranger in #217
* Fix lz4.decompress_block_into w/o prepended size by
@milesgranger in #219
* Add typing stub files and proper docs site by @milesgranger in
#220
* Ban mutating immutable buffers on the free-threaded build by
@ngoldbaum in #214
* zstd: store size by @milesgranger in #225
* Add Python 3.14/t - Drop Python 3.8 by @milesgranger in #226
- Release 2.10.0
* Remove experimental codecs in default builds by @milesgranger
in #197
* Bump libcramjam -> 0.7.0 by @milesgranger in #198
* Update PyO3 to 0.24 by @musicinmybrain in #207
- Disable test_variants_raise_exception[deflate]
* gh#milesgranger/cramjam#211
- Disable blosc2 because it fails to compile right now and upstream
degraded it from the default feature set to experimental
* gh#milesgranger/cramjam#197
- Add debuginfo
-------------------------------------------------------------------
Wed Dec 18 11:40:10 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Update to 2.9.1
* Add Cargo.lock and bump patch version by @milesgranger in #192
- Release 2.9.0
* Bump libcramjam/isal-rs by @milesgranger in #183
* Add cramjam.zlib, cramjam.experimental.izlib, and
cramjam.experimental.ideflate by @milesgranger in #184
- Release 2.8.4
* Add cramjam.experimental.blosc2
* Add cramjam.experimental.igzip (on 64bit targets)
* Add wasm32 emscripten build and test for pyodide
- Release 2.8.3
* Move LZMA / XZ out of experimental to xz submodule by
@milesgranger in #133
* Remove unused Cargo.lock files by @milesgranger in #149
* Fix tests that assume C char is signed by @musicinmybrain in
#150
- Release 2.8.2
* Remove zstd-safe dep in libcramjam by @milesgranger in #132
* Remove relative libcramjam dep for python builds by
@milesgranger in #131
* Impl eq for python Buffer by @milesgranger in #135
* Fix missing LICENSE file in cramjam-cli by @musicinmybrain in
#137
* Adjust the binary name in the cramjam-cli example by
@musicinmybrain in #138
* Cargo.toml: set workspace.resolver to 2 by @veprbl in #140
- Add cramjam-opensuse-config.patch: Use some system libraries and
avoid static linking
- Add cramjam-issue193-test_variants.patch
gh#milesgranger/cramjam#193
-------------------------------------------------------------------
Wed Aug 14 15:11:07 UTC 2024 - Dirk Müller <dmueller@suse.com>
- use modern python on sle15
-------------------------------------------------------------------
Mon Feb 19 09:16:39 UTC 2024 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 2.8.1:
* Experimental support for LZMA / XZ codec
(gh#milesgranger/cramjam#127).
* In libcramjam, bump zstd to 0.13.0 (to go with zstd-safe
7.0.0) (gh#milesgranger/cramjam#128).
* Bump rustix from 0.37.17 to 0.38.28 in /cramjam-python
(gh#milesgranger/cramjam#122).
- Changes from version 2.8.0:
* Bump zstd from 1.5.0.2 to 1.5.4.0 in /cramjam-python
(gh#milesgranger/cramjam#108).
* Simpler isinstance() calls (gh#milesgranger/cramjam#111).
* Support Python 3.12 (gh#milesgranger/cramjam#113).
* Bump rustix from 0.37.18 to 0.37.25
(gh#milesgranger/cramjam#114).
* Fix docstring for lz4.compress_block_bound
(gh#milesgranger/cramjam#117).
* Use pyo3 0.20 (gh#milesgranger/cramjam#118).
* Make libcramjam a better libcramjam w/ C API
(gh#milesgranger/cramjam#119).
* Fix missing license file in the Python sdist and bdist/wheel
(gh#milesgranger/cramjam#124).
* Support independent mode in LZ4 compressor
(gh#milesgranger/cramjam#125).
- Changes from version 2.7.0:
* Bump bzip2 from 0.4.3 to 0.4.4 (gh#milesgranger/cramjam#94).
* Refactoring, release GIL, Decompressor, remove mimalloc, etc.
(gh#milesgranger/cramjam#96).
* Accept anything with Buffer Protocol, remove numpy
(gh#milesgranger/cramjam#100).
* Refactor into workspaces: libcramjam, cramjam-python, and
cramjam-cli (gh#milesgranger/cramjam#101).
* Basic CLI improvements (gh#milesgranger/cramjam#103).
* Fix cramjam-cli decompress bug (gh#milesgranger/cramjam#104).
* Support all buffer types where c-contiguous
(gh#milesgranger/cramjam#105).
* Fixes for maturin v1 --universal2 removal
(gh#milesgranger/cramjam#109).
- pyrus-cramjam is now simply cramjam; adapt to name change in
spec and _service file.
- Drop cargo_config: Updated rust packaging services include it in
vendor.tar.xz.
- Split out test into multibuild flavor since it takes a long time
to run (about an hour).
-------------------------------------------------------------------
Fri Jan 13 11:04:41 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Update to v2.6.2
* Bump pyo3, numpy and expand pyproject.toml by @milesgranger in
#90
- Updated crate fixes bzip2 < 0.4.4 vulnerability
* boo#1207039, CVE-2023-22895
-------------------------------------------------------------------
Sat Oct 29 09:30:13 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to v2.6.1
* Switch brotli2 -> brotli crate by @milesgranger in #87
-------------------------------------------------------------------
Fri Oct 28 16:05:38 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to v2.6.0
* Update to pyo3 0.16 by @messense in #78
* Update dependencies and simplify CI by @messense in #79
* Support Lz4 de/compress_block_into functions by @milesgranger
in #80
* Upgrade maturin to 0.13.0 by @messense in #81
* Integration tests, benchmark updates, subclass Buffer by
@milesgranger in #83
* Bump lz4-sys from 1.9.3 to 1.9.4 by @dependabot in #84
* Add Python 3.11 by @milesgranger in #85
- Release v2.5.0
* Incorporate property-based testing by @milesgranger in #69
* Support bzip2 by @milesgranger in #70
- Release v2.4.0
* This release comes with streaming compression support for all
variants. And updates Gzip compression variant to support
properly decoding input which has multiple streams, as is the
default with std gzip lib. This release does not alter any of
the existing APIs.
* Support compressed gzip multistream (#64) b9cfa13
* Support Compressor for each variant (#64) 8ecb0fa
* Support .flush for Compressor (#68) 4b92e42
* Add official OSI name in the license metadata (#66) 446a671
-------------------------------------------------------------------
Tue Sep 28 01:17:05 UTC 2021 - William Brown <william.brown@suse.com>
- Replace rust-packaging with cargo-packaging
-------------------------------------------------------------------
Mon Jul 19 19:37:30 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Update to 2.3.2
* no core library code changes
- Update filelist due to updated setuptools: not a single .so but
a full module directory now.
- run cargo crate service: update vendored rust crates
- re-activate cargo audit service
* gh#openSUSE/obs-service-cargo_audit#1 is fixed
-------------------------------------------------------------------
Tue May 18 14:12:27 UTC 2021 - Ben Greiner <code@bnavigator.de>
- initial specfile for 2.3.1
- new requirement of python-fastparquet 0.6
- use rust cargo crate vendoring following the how-to from
https://fy.blackhats.net.au/blog/html/2021/02/15/getting_started_packaging_a_rust_cli_tool_in_suse_obs.html

102
python-cramjam.spec Normal file
View File

@@ -0,0 +1,102 @@
#
# spec file for package python-cramjam
#
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%bcond_without test
%define psuffix -test
%else
%bcond_with test
%define psuffix %{nil}
%endif
# Adjust the version in _service and use `rm -rf cramjam; osc service runall` in order to update
%define modname cramjam
%{?sle15_python_module_pythons}
Name: python-cramjam%{psuffix}
Version: 2.11.0
Release: 0
Summary: Thin Python bindings to de/compression algorithms in Rust
License: MIT
URL: https://github.com/milesgranger/cramjam
Source: %{modname}-%{version}.tar.xz
Source1: vendor.tar.xz
# PATCH-FEATURE-OPENSUSE cramjam-opensuse-config.patch code@bnavigator.de -- Use system libraries and avoid static linking
Patch0: cramjam-opensuse-config.patch
# PATCH-FIX-UPSTREAM cramjam-issue193-test_variants.patch gh#milesgranger/cramjam#193
Patch1: cramjam-issue193-test_variants.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module maturin >= 0.13}
BuildRequires: %{python_module pip}
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: cargo-packaging
BuildRequires: cmake
BuildRequires: libtool
BuildRequires: nasm
BuildRequires: python-rpm-macros
# blosc2 disabled: see Patch0 and gh#milesgranger/cramjam#197
#BuildRequires: pkgconfig(blosc2)
BuildRequires: pkgconfig(libisal)
BuildRequires: pkgconfig(libzstd)
# SECTION test dependencies
%if %{with test}
BuildRequires: %{python_module %{modname} = %{version}}
BuildRequires: %{python_module hypothesis}
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest}
%endif
# /SECTION
BuildRequires: fdupes
%python_subpackages
%description
Extremely thin Python bindings to de/compression algorithms in Rust.
Allows for using algorithms such as Snappy, without any system dependencies.
%prep
%autosetup -p1 -n %{modname}-%{version} -a1
%build
%if %{without test}
export ZSTD_SYS_USE_PKG_CONFIG=1
%pyproject_wheel
%endif
%install
%if %{without test}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%endif
%check
%if %{with test}
# gh#milesgranger/cramjam#211
donttest="(test_variants_raise_exception and deflate)"
%pytest_arch -n auto --ignore benchmarks -k "not ($donttest)"
%endif
%if %{without test}
%files %{python_files}
%license LICENSE
%{python_sitearch}/%{modname}
%{python_sitearch}/%{modname}-%{version}.dist-info
%endif
%changelog

3
vendor.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:22880b5c4cb447b9e3068e4618840c904c7a70d587153114bd048cec2fcd243b
size 12499420