compress-utils 0.4.1__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.
- compress_utils-0.4.1/.clang-format +35 -0
- compress_utils-0.4.1/.clang-tidy +29 -0
- compress_utils-0.4.1/.github/workflows/build_and_test_c_cpp.yml +196 -0
- compress_utils-0.4.1/.github/workflows/build_and_test_python.yml +113 -0
- compress_utils-0.4.1/.github/workflows/pr_build_and_test.yml +37 -0
- compress_utils-0.4.1/.github/workflows/release_artifacts.yml +34 -0
- compress_utils-0.4.1/.gitignore +47 -0
- compress_utils-0.4.1/.vscode/c_cpp_properties.json +27 -0
- compress_utils-0.4.1/.vscode/settings.json +81 -0
- compress_utils-0.4.1/ACKNOWLEDGMENTS.md +27 -0
- compress_utils-0.4.1/CMakeLists.txt +311 -0
- compress_utils-0.4.1/CODEOWNERS +8 -0
- compress_utils-0.4.1/LICENSE +21 -0
- compress_utils-0.4.1/PKG-INFO +197 -0
- compress_utils-0.4.1/README.md +157 -0
- compress_utils-0.4.1/TODO.md +64 -0
- compress_utils-0.4.1/algorithms/README.md +10 -0
- compress_utils-0.4.1/algorithms/brotli/CMakeLists.txt +91 -0
- compress_utils-0.4.1/algorithms/xz/CMakeLists.txt +82 -0
- compress_utils-0.4.1/algorithms/zlib/CMakeLists.txt +71 -0
- compress_utils-0.4.1/algorithms/zstd/CMakeLists.txt +75 -0
- compress_utils-0.4.1/bindings/c/CMakeLists.txt +107 -0
- compress_utils-0.4.1/bindings/c/README.md +75 -0
- compress_utils-0.4.1/bindings/c/algorithms.h +34 -0
- compress_utils-0.4.1/bindings/c/algorithms.h.in +19 -0
- compress_utils-0.4.1/bindings/c/compress_utils.h +43 -0
- compress_utils-0.4.1/bindings/c/compress_utils_c.cpp +68 -0
- compress_utils-0.4.1/bindings/c/symbol_exports.h +21 -0
- compress_utils-0.4.1/bindings/c/symbol_exports_shared.h +13 -0
- compress_utils-0.4.1/bindings/c/symbol_exports_static.h +7 -0
- compress_utils-0.4.1/bindings/c/tests/CMakeLists.txt +84 -0
- compress_utils-0.4.1/bindings/c/tests/test_compress_utils.c +187 -0
- compress_utils-0.4.1/bindings/cpp/README.md +234 -0
- compress_utils-0.4.1/bindings/python/API.md +266 -0
- compress_utils-0.4.1/bindings/python/CMakeLists.txt +100 -0
- compress_utils-0.4.1/bindings/python/README.md +68 -0
- compress_utils-0.4.1/bindings/python/compress_utils/__init__.py +4 -0
- compress_utils-0.4.1/bindings/python/compress_utils.egg-info/PKG-INFO +197 -0
- compress_utils-0.4.1/bindings/python/compress_utils.egg-info/SOURCES.txt +74 -0
- compress_utils-0.4.1/bindings/python/compress_utils.egg-info/dependency_links.txt +1 -0
- compress_utils-0.4.1/bindings/python/compress_utils.egg-info/not-zip-safe +1 -0
- compress_utils-0.4.1/bindings/python/compress_utils.egg-info/top_level.txt +1 -0
- compress_utils-0.4.1/bindings/python/compress_utils_py.cpp +125 -0
- compress_utils-0.4.1/bindings/python/pyproject.toml +27 -0
- compress_utils-0.4.1/bindings/python/setup.py +82 -0
- compress_utils-0.4.1/bindings/python/tests/test_compress_utils.py +70 -0
- compress_utils-0.4.1/build.ps1 +223 -0
- compress_utils-0.4.1/build.sh +198 -0
- compress_utils-0.4.1/environment.yml +13 -0
- compress_utils-0.4.1/pyproject.toml +27 -0
- compress_utils-0.4.1/setup.cfg +4 -0
- compress_utils-0.4.1/setup.py +82 -0
- compress_utils-0.4.1/src/algorithms/brotli/brotli.cpp +122 -0
- compress_utils-0.4.1/src/algorithms/brotli/brotli.hpp +35 -0
- compress_utils-0.4.1/src/algorithms/xz/xz.cpp +138 -0
- compress_utils-0.4.1/src/algorithms/xz/xz.hpp +35 -0
- compress_utils-0.4.1/src/algorithms/zlib/zlib.cpp +87 -0
- compress_utils-0.4.1/src/algorithms/zlib/zlib.hpp +35 -0
- compress_utils-0.4.1/src/algorithms/zstd/zstd.cpp +80 -0
- compress_utils-0.4.1/src/algorithms/zstd/zstd.hpp +35 -0
- compress_utils-0.4.1/src/algorithms.hpp +30 -0
- compress_utils-0.4.1/src/algorithms.hpp.in +15 -0
- compress_utils-0.4.1/src/compress_utils.cpp +28 -0
- compress_utils-0.4.1/src/compress_utils.hpp +82 -0
- compress_utils-0.4.1/src/compress_utils_func.cpp +66 -0
- compress_utils-0.4.1/src/compress_utils_func.hpp +60 -0
- compress_utils-0.4.1/src/symbol_exports.hpp +21 -0
- compress_utils-0.4.1/src/symbol_exports_shared.hpp +13 -0
- compress_utils-0.4.1/src/symbol_exports_static.hpp +7 -0
- compress_utils-0.4.1/src/utils/algorithms_router.hpp +60 -0
- compress_utils-0.4.1/src/utils/constants.hpp +27 -0
- compress_utils-0.4.1/tests/CMakeLists.txt +100 -0
- compress_utils-0.4.1/tests/helpers.hpp +71 -0
- compress_utils-0.4.1/tests/test_compress_utils.cpp +118 -0
- compress_utils-0.4.1/tests/test_compress_utils_func.cpp +123 -0
- compress_utils-0.4.1/tests/test_main.cpp +6 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
BasedOnStyle: Google
|
|
2
|
+
IndentWidth: 4
|
|
3
|
+
TabWidth: 4
|
|
4
|
+
UseTab: Never
|
|
5
|
+
ColumnLimit: 100
|
|
6
|
+
|
|
7
|
+
IncludeCategories:
|
|
8
|
+
# 1. The source file's own header (should come first)
|
|
9
|
+
- Regex: '^"(.*/)?[^/]+\.h"$'
|
|
10
|
+
Priority: 0 # Highest priority for the source file's own header
|
|
11
|
+
SortPriority: 0
|
|
12
|
+
CaseSensitive: false
|
|
13
|
+
- Regex: '^"(.*/)?[^/]+\.hpp"$'
|
|
14
|
+
Priority: 0 # Highest priority for the source file's own header
|
|
15
|
+
SortPriority: 0
|
|
16
|
+
CaseSensitive: false
|
|
17
|
+
- Regex: '^"(.*/)?[^/]+\.cuh"$'
|
|
18
|
+
Priority: 0 # Same priority for .cuh file if it's the corresponding file's header
|
|
19
|
+
SortPriority: 0
|
|
20
|
+
CaseSensitive: false
|
|
21
|
+
|
|
22
|
+
# 2. C++ Standard Library headers (second)
|
|
23
|
+
- Regex: '^<.*>$' # Any header included with angle brackets is considered a system or standard library header
|
|
24
|
+
Priority: 1
|
|
25
|
+
SortPriority: 1
|
|
26
|
+
CaseSensitive: false
|
|
27
|
+
|
|
28
|
+
# 3. Other project headers (third)
|
|
29
|
+
- Regex: '^".*"$' # All remaining project headers included with double quotes
|
|
30
|
+
Priority: 2
|
|
31
|
+
SortPriority: 2
|
|
32
|
+
CaseSensitive: false
|
|
33
|
+
|
|
34
|
+
SortIncludes: true # Keep headers sorted within their priority groups
|
|
35
|
+
IncludeIsMainRegex: '([-_](test|unittest))?$'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Checks: 'google-*,readability-identifier-naming'
|
|
2
|
+
WarningsAsErrors: ''
|
|
3
|
+
HeaderFilterRegex: '.*'
|
|
4
|
+
FormatStyle: 'file'
|
|
5
|
+
CheckOptions:
|
|
6
|
+
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
|
|
7
|
+
- { key: readability-identifier-naming.ClassMemberCase, value: lower_case }
|
|
8
|
+
- { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
|
|
9
|
+
- { key: readability-identifier-naming.EnumCase, value: CamelCase }
|
|
10
|
+
- { key: readability-identifier-naming.EnumConstantCase, value: CamelCase }
|
|
11
|
+
- { key: readability-identifier-naming.FunctionCase, value: CamelCase }
|
|
12
|
+
- { key: readability-identifier-naming.StaticConstantCase, value: CamelCase }
|
|
13
|
+
- { key: readability-identifier-naming.StaticConstantPrefix, value: k }
|
|
14
|
+
- { key: readability-identifier-naming.StaticVariableCase, value: lower_case }
|
|
15
|
+
- { key: readability-identifier-naming.MacroDefinitionCase, value: UPPER_CASE }
|
|
16
|
+
- { key: readability-identifier-naming.MacroDefinitionIgnoredRegexp, value: '^[A-Z]+(_[A-Z]+)*_$' }
|
|
17
|
+
- { key: readability-identifier-naming.MemberCase, value: lower_case }
|
|
18
|
+
- { key: readability-identifier-naming.PrivateMemberSuffix, value: _ }
|
|
19
|
+
- { key: readability-identifier-naming.PublicMemberSuffix, value: '' }
|
|
20
|
+
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
|
|
21
|
+
- { key: readability-identifier-naming.ParameterCase, value: lower_case }
|
|
22
|
+
- { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
|
|
23
|
+
- { key: readability-identifier-naming.TypedefCase, value: CamelCase }
|
|
24
|
+
- { key: readability-identifier-naming.VariableCase, value: lower_case }
|
|
25
|
+
- { key: readability-identifier-naming.IgnoreMainLikeFunctions, value: 1 }
|
|
26
|
+
- { key: readability-identifier-naming.StructCase, value: CamelCase }
|
|
27
|
+
- { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE }
|
|
28
|
+
- { key: readability-identifier-naming.ConstantCase, value: lower_case }
|
|
29
|
+
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
name: Build, Test and Package C/C++
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ${{ matrix.os }}
|
|
10
|
+
strategy:
|
|
11
|
+
matrix:
|
|
12
|
+
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout Code
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
clean: true
|
|
20
|
+
|
|
21
|
+
- name: Configure CMake for C/C++ Language Bindings & All Compressors
|
|
22
|
+
run: |
|
|
23
|
+
mkdir build
|
|
24
|
+
cd build
|
|
25
|
+
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_PYTHON_BINDINGS=OFF
|
|
26
|
+
|
|
27
|
+
- name: Build All Languages
|
|
28
|
+
run: cmake --build build --config Release -j 4
|
|
29
|
+
|
|
30
|
+
- name: Install Bindings
|
|
31
|
+
run: cmake --install build
|
|
32
|
+
|
|
33
|
+
- name: Test All Bindings & Compressors
|
|
34
|
+
run: |
|
|
35
|
+
cd build
|
|
36
|
+
ctest --output-on-failure -C Release
|
|
37
|
+
|
|
38
|
+
- name: Zip C Bindings
|
|
39
|
+
run: |
|
|
40
|
+
cd dist
|
|
41
|
+
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
|
42
|
+
powershell -Command "Compress-Archive -Path c -DestinationPath c-bindings-${{ matrix.os }}.zip"
|
|
43
|
+
else
|
|
44
|
+
zip -r c-bindings-${{ matrix.os }}.zip c
|
|
45
|
+
fi
|
|
46
|
+
shell: bash
|
|
47
|
+
|
|
48
|
+
- name: Zip C++ Bindings
|
|
49
|
+
run: |
|
|
50
|
+
cd dist
|
|
51
|
+
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
|
52
|
+
powershell -Command "Compress-Archive -Path cpp -DestinationPath cpp-bindings-${{ matrix.os }}.zip"
|
|
53
|
+
else
|
|
54
|
+
zip -r cpp-bindings-${{ matrix.os }}.zip cpp
|
|
55
|
+
fi
|
|
56
|
+
shell: bash
|
|
57
|
+
|
|
58
|
+
- name: Upload C Artifacts
|
|
59
|
+
uses: actions/upload-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
name: c-bindings-${{ matrix.os }}
|
|
62
|
+
path: dist/c-bindings-${{ matrix.os }}.zip
|
|
63
|
+
retention-days: 1 # These artifacts are only used for the `combine` step
|
|
64
|
+
|
|
65
|
+
- name: Upload C++ Artifacts
|
|
66
|
+
uses: actions/upload-artifact@v4
|
|
67
|
+
with:
|
|
68
|
+
name: cpp-bindings-${{ matrix.os }}
|
|
69
|
+
path: dist/cpp-bindings-${{ matrix.os }}.zip
|
|
70
|
+
retention-days: 1 # These artifacts are only used for the `combine` step
|
|
71
|
+
|
|
72
|
+
combine:
|
|
73
|
+
needs: build
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
|
|
78
|
+
##### C Artifacts #####
|
|
79
|
+
|
|
80
|
+
- name: Create C Artifact Directories
|
|
81
|
+
run: mkdir -p compress-utils-c/macos compress-utils-c/linux compress-utils-c/windows
|
|
82
|
+
|
|
83
|
+
- name: Download C Artifacts from macOS
|
|
84
|
+
uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
name: c-bindings-macos-latest
|
|
87
|
+
path: compress-utils-c/macos
|
|
88
|
+
|
|
89
|
+
- name: Download C Artifacts from Ubuntu
|
|
90
|
+
uses: actions/download-artifact@v4
|
|
91
|
+
with:
|
|
92
|
+
name: c-bindings-ubuntu-latest
|
|
93
|
+
path: compress-utils-c/linux
|
|
94
|
+
|
|
95
|
+
- name: Download C Artifacts from Windows
|
|
96
|
+
uses: actions/download-artifact@v4
|
|
97
|
+
with:
|
|
98
|
+
name: c-bindings-windows-latest
|
|
99
|
+
path: compress-utils-c/windows
|
|
100
|
+
|
|
101
|
+
- name: Unzip C Artifacts from macOS
|
|
102
|
+
run: |
|
|
103
|
+
unzip -o compress-utils-c/macos/c-bindings-macos-latest.zip -d compress-utils-c/macos
|
|
104
|
+
mv compress-utils-c/macos/c/* compress-utils-c/macos/
|
|
105
|
+
rm -r compress-utils-c/macos/c
|
|
106
|
+
rm compress-utils-c/macos/c-bindings-macos-latest.zip
|
|
107
|
+
|
|
108
|
+
- name: Unzip C Artifacts from Ubuntu
|
|
109
|
+
run: |
|
|
110
|
+
unzip -o compress-utils-c/linux/c-bindings-ubuntu-latest.zip -d compress-utils-c/linux
|
|
111
|
+
mv compress-utils-c/linux/c/* compress-utils-c/linux/
|
|
112
|
+
rm -r compress-utils-c/linux/c
|
|
113
|
+
rm compress-utils-c/linux/c-bindings-ubuntu-latest.zip
|
|
114
|
+
|
|
115
|
+
- name: Unzip C Artifacts from Windows
|
|
116
|
+
run: |
|
|
117
|
+
set +e
|
|
118
|
+
unzip -o compress-utils-c/windows/c-bindings-windows-latest.zip -d compress-utils-c/windows
|
|
119
|
+
unzip_exit_code=$?
|
|
120
|
+
set -e
|
|
121
|
+
if [ $unzip_exit_code -gt 1 ]; then exit $unzip_exit_code; fi
|
|
122
|
+
chmod -R u+rwX,go+rwX compress-utils-c/windows/c
|
|
123
|
+
mv compress-utils-c/windows/c/* compress-utils-c/windows/
|
|
124
|
+
rm -r compress-utils-c/windows/c
|
|
125
|
+
rm compress-utils-c/windows/c-bindings-windows-latest.zip
|
|
126
|
+
|
|
127
|
+
##### C++ Artifacts #####
|
|
128
|
+
|
|
129
|
+
- name: Create C++ Artifact Directories
|
|
130
|
+
run: mkdir -p compress-utils-cpp/macos compress-utils-cpp/linux compress-utils-cpp/windows
|
|
131
|
+
|
|
132
|
+
- name: Download C++ Artifacts from macOS
|
|
133
|
+
uses: actions/download-artifact@v4
|
|
134
|
+
with:
|
|
135
|
+
name: cpp-bindings-macos-latest
|
|
136
|
+
path: compress-utils-cpp/macos
|
|
137
|
+
|
|
138
|
+
- name: Download C++ Artifacts from Ubuntu
|
|
139
|
+
uses: actions/download-artifact@v4
|
|
140
|
+
with:
|
|
141
|
+
name: cpp-bindings-ubuntu-latest
|
|
142
|
+
path: compress-utils-cpp/linux
|
|
143
|
+
|
|
144
|
+
- name: Download C++ Artifacts from Windows
|
|
145
|
+
uses: actions/download-artifact@v4
|
|
146
|
+
with:
|
|
147
|
+
name: cpp-bindings-windows-latest
|
|
148
|
+
path: compress-utils-cpp/windows
|
|
149
|
+
|
|
150
|
+
- name: Unzip C++ Artifacts from macOS
|
|
151
|
+
run: |
|
|
152
|
+
unzip -o compress-utils-cpp/macos/cpp-bindings-macos-latest.zip -d compress-utils-cpp/macos
|
|
153
|
+
mv compress-utils-cpp/macos/cpp/* compress-utils-cpp/macos/
|
|
154
|
+
rm -r compress-utils-cpp/macos/cpp
|
|
155
|
+
rm compress-utils-cpp/macos/cpp-bindings-macos-latest.zip
|
|
156
|
+
|
|
157
|
+
- name: Unzip C++ Artifacts from Ubuntu
|
|
158
|
+
run: |
|
|
159
|
+
unzip -o compress-utils-cpp/linux/cpp-bindings-ubuntu-latest.zip -d compress-utils-cpp/linux
|
|
160
|
+
mv compress-utils-cpp/linux/cpp/* compress-utils-cpp/linux/
|
|
161
|
+
rm -r compress-utils-cpp/linux/cpp
|
|
162
|
+
rm compress-utils-cpp/linux/cpp-bindings-ubuntu-latest.zip
|
|
163
|
+
|
|
164
|
+
- name: Unzip C++ Artifacts from Windows
|
|
165
|
+
run: |
|
|
166
|
+
set +e
|
|
167
|
+
unzip -o compress-utils-cpp/windows/cpp-bindings-windows-latest.zip -d compress-utils-cpp/windows
|
|
168
|
+
unzip_exit_code=$?
|
|
169
|
+
set -e
|
|
170
|
+
if [ $unzip_exit_code -gt 1 ]; then exit $unzip_exit_code; fi
|
|
171
|
+
chmod -R u+rwX,go+rwX compress-utils-cpp/windows/cpp
|
|
172
|
+
mv compress-utils-cpp/windows/cpp/* compress-utils-cpp/windows/
|
|
173
|
+
rm -r compress-utils-cpp/windows/cpp
|
|
174
|
+
rm compress-utils-cpp/windows/cpp-bindings-windows-latest.zip
|
|
175
|
+
|
|
176
|
+
##### Merge All Artifacts #####
|
|
177
|
+
|
|
178
|
+
- name: Zip All C Artifacts Together
|
|
179
|
+
run: zip -r compress-utils-c.zip compress-utils-c
|
|
180
|
+
|
|
181
|
+
- name: Zip All C++ Artifacts Together
|
|
182
|
+
run: zip -r compress-utils-cpp.zip compress-utils-cpp
|
|
183
|
+
|
|
184
|
+
##### Upload Artifacts #####
|
|
185
|
+
|
|
186
|
+
- name: Upload Unified C Artifacts
|
|
187
|
+
uses: actions/upload-artifact@v4
|
|
188
|
+
with:
|
|
189
|
+
name: compress-utils-c
|
|
190
|
+
path: compress-utils-c.zip
|
|
191
|
+
|
|
192
|
+
- name: Upload Unified C++ Artifacts
|
|
193
|
+
uses: actions/upload-artifact@v4
|
|
194
|
+
with:
|
|
195
|
+
name: compress-utils-cpp
|
|
196
|
+
path: compress-utils-cpp.zip
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: Build, Test and Package Python Wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags:
|
|
7
|
+
- "v*"
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build_wheels:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
15
|
+
python-version: ["cp36", "cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"]
|
|
16
|
+
exclude:
|
|
17
|
+
# Exclude Python 3.6 - 3.8 on macOS (Apple Silicon incompatible)
|
|
18
|
+
- os: macos-latest
|
|
19
|
+
python-version: "cp36"
|
|
20
|
+
- os: macos-latest
|
|
21
|
+
python-version: "cp37"
|
|
22
|
+
- os: macos-latest
|
|
23
|
+
python-version: "cp38"
|
|
24
|
+
fail-fast: false
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout code
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
fetch-depth: 0
|
|
31
|
+
|
|
32
|
+
- name: Set up Python
|
|
33
|
+
uses: actions/setup-python@v4
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.11"
|
|
36
|
+
|
|
37
|
+
- name: Install cibuildwheel and build
|
|
38
|
+
run: pip install cibuildwheel build
|
|
39
|
+
|
|
40
|
+
- name: Copy Python Bindings Configuration
|
|
41
|
+
run: cp bindings/python/pyproject.toml . && cp bindings/python/setup.py .
|
|
42
|
+
|
|
43
|
+
- name: Build Python Wheels
|
|
44
|
+
env:
|
|
45
|
+
CIBW_BUILD_VERBOSITY: 1
|
|
46
|
+
CIBW_BUILD: "${{ matrix.python-version }}-*"
|
|
47
|
+
CIBW_ARCHS_LINUX: "x86_64" # TODO - change this to "x86_64 aarch64"
|
|
48
|
+
CIBW_ARCHS_MACOS: "arm64" # TODO - change this to Universal2
|
|
49
|
+
CIBW_ARCHS_WINDOWS: "AMD64" # TODO - change this to "AMD64 ARM64"
|
|
50
|
+
run: cibuildwheel --output-dir wheelhouse
|
|
51
|
+
|
|
52
|
+
- name: Build Source Distribution (sdist)
|
|
53
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == 'cp310'
|
|
54
|
+
run: python -m build --sdist --outdir wheelhouse
|
|
55
|
+
|
|
56
|
+
- name: Upload Wheels as GitHub Artifact
|
|
57
|
+
uses: actions/upload-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
|
|
60
|
+
path: wheelhouse/*.whl
|
|
61
|
+
|
|
62
|
+
- name: Upload Source Distribution as GitHub Artifact
|
|
63
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == 'cp310'
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: python-sdist
|
|
67
|
+
path: wheelhouse/*.tar.gz
|
|
68
|
+
retention-days: 5
|
|
69
|
+
|
|
70
|
+
publish_to_pypi:
|
|
71
|
+
needs: build_wheels
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
if: github.ref_type == 'tag'
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
contents: write
|
|
77
|
+
|
|
78
|
+
steps:
|
|
79
|
+
- name: Download All Artifacts
|
|
80
|
+
uses: actions/download-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
path: dist
|
|
83
|
+
|
|
84
|
+
- name: Prepare for Upload
|
|
85
|
+
run: |
|
|
86
|
+
mkdir -p wheelhouse
|
|
87
|
+
find dist -type f -name "*.whl" -exec cp {} wheelhouse/ \;
|
|
88
|
+
find dist -type f -name "*.tar.gz" -exec cp {} wheelhouse/ \; || echo "No source distribution found"
|
|
89
|
+
ls -la wheelhouse/
|
|
90
|
+
|
|
91
|
+
- name: Create Combined Archive
|
|
92
|
+
run: |
|
|
93
|
+
VERSION=${GITHUB_REF_NAME#v} # Strip the 'v' prefix if present
|
|
94
|
+
echo "Creating archive for version $VERSION"
|
|
95
|
+
zip -r compress-utils-python-${VERSION}.zip wheelhouse/
|
|
96
|
+
echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
|
|
97
|
+
|
|
98
|
+
- name: Publish to GitHub Release
|
|
99
|
+
uses: softprops/action-gh-release@v1
|
|
100
|
+
with:
|
|
101
|
+
files: |
|
|
102
|
+
compress-utils-python-${{ env.RELEASE_VERSION }}.zip
|
|
103
|
+
generate_release_notes: false
|
|
104
|
+
fail_on_unmatched_files: false
|
|
105
|
+
draft: false
|
|
106
|
+
tag_name: ${{ github.ref_name }}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
- name: Publish to PyPI
|
|
110
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
111
|
+
with:
|
|
112
|
+
packages-dir: wheelhouse/
|
|
113
|
+
skip-existing: true
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Build and Test for PR
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, synchronize]
|
|
6
|
+
branches: [ "main" ]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build_and_test:
|
|
10
|
+
runs-on: ${{ matrix.os }}
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout Code
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
clean: true
|
|
21
|
+
|
|
22
|
+
- name: Configure CMake for All Language Bindings & All Compressors
|
|
23
|
+
run: |
|
|
24
|
+
mkdir build
|
|
25
|
+
cd build
|
|
26
|
+
cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
27
|
+
|
|
28
|
+
- name: Build All Languages
|
|
29
|
+
run: cmake --build build --config Release -j 4
|
|
30
|
+
|
|
31
|
+
- name: Install Bindings
|
|
32
|
+
run: cmake --install build
|
|
33
|
+
|
|
34
|
+
- name: Test All Bindings & Compressors
|
|
35
|
+
run: |
|
|
36
|
+
cd build
|
|
37
|
+
ctest --output-on-failure -C Release
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Attach Artifacts to Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
attach-unified-artifacts:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout Code
|
|
12
|
+
uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Download Unified C Artifact
|
|
15
|
+
uses: actions/download-artifact@v4
|
|
16
|
+
with:
|
|
17
|
+
name: compress-utils-c
|
|
18
|
+
path: ./dist
|
|
19
|
+
|
|
20
|
+
- name: Download Unified C++ Artifact
|
|
21
|
+
uses: actions/download-artifact@v4
|
|
22
|
+
with:
|
|
23
|
+
name: compress-utils-cpp
|
|
24
|
+
path: ./dist
|
|
25
|
+
|
|
26
|
+
- name: Attach Unified Artifacts to Release
|
|
27
|
+
env:
|
|
28
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
29
|
+
run: |
|
|
30
|
+
# Get the release ID of the current release
|
|
31
|
+
release_id=$(gh release view "${{ github.event.release.tag_name }}" --json id --jq '.id')
|
|
32
|
+
|
|
33
|
+
# Upload the artifacts to the release
|
|
34
|
+
gh release upload "$release_id" ./dist/compress-utils-c.zip ./dist/compress-utils-cpp.zip --clobber
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Prerequisites
|
|
2
|
+
*.d
|
|
3
|
+
|
|
4
|
+
# Compiled Object files
|
|
5
|
+
*.slo
|
|
6
|
+
*.lo
|
|
7
|
+
*.o
|
|
8
|
+
*.obj
|
|
9
|
+
|
|
10
|
+
# Precompiled Headers
|
|
11
|
+
*.gch
|
|
12
|
+
*.pch
|
|
13
|
+
|
|
14
|
+
# Compiled Dynamic libraries
|
|
15
|
+
*.so
|
|
16
|
+
*.dylib
|
|
17
|
+
*.dll
|
|
18
|
+
|
|
19
|
+
# Fortran module files
|
|
20
|
+
*.mod
|
|
21
|
+
*.smod
|
|
22
|
+
|
|
23
|
+
# Compiled Static libraries
|
|
24
|
+
*.lai
|
|
25
|
+
*.la
|
|
26
|
+
*.a
|
|
27
|
+
*.lib
|
|
28
|
+
|
|
29
|
+
# Executables
|
|
30
|
+
*.exe
|
|
31
|
+
*.out
|
|
32
|
+
*.app
|
|
33
|
+
|
|
34
|
+
# Output files
|
|
35
|
+
build/
|
|
36
|
+
dist/
|
|
37
|
+
algorithms/dist/
|
|
38
|
+
algorithms/*/src/
|
|
39
|
+
algorithms/*/build/
|
|
40
|
+
algorithms/*/dist/
|
|
41
|
+
|
|
42
|
+
# Python
|
|
43
|
+
__pycache__/
|
|
44
|
+
.pytest_cache/
|
|
45
|
+
|
|
46
|
+
# MacOS
|
|
47
|
+
.DS_Store
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"configurations": [
|
|
3
|
+
{
|
|
4
|
+
"name": "compress-utils",
|
|
5
|
+
"includePath": [
|
|
6
|
+
"${workspaceFolder}/src",
|
|
7
|
+
"${workspaceFolder}/algorithms/dist/include",
|
|
8
|
+
"${workspaceFolder}/build/external/CUnit/include",
|
|
9
|
+
"/usr/local/include"
|
|
10
|
+
],
|
|
11
|
+
"defines": [
|
|
12
|
+
"INCLUDE_BROTLI",
|
|
13
|
+
"INCLUDE_XZ",
|
|
14
|
+
"INCLUDE_ZLIB",
|
|
15
|
+
"INCLUDE_ZSTD"
|
|
16
|
+
],
|
|
17
|
+
"macFrameworkPath": [
|
|
18
|
+
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
|
|
19
|
+
],
|
|
20
|
+
"compilerPath": "/usr/bin/clang++",
|
|
21
|
+
"cStandard": "c17",
|
|
22
|
+
"cppStandard": "c++20",
|
|
23
|
+
"intelliSenseMode": "macos-clang-arm64"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"version": 4
|
|
27
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
|
|
3
|
+
"C_Cpp.codeAnalysis.clangTidy.enabled": true,
|
|
4
|
+
"C_Cpp.codeAnalysis.runAutomatically": true,
|
|
5
|
+
"C_Cpp.codeAnalysis.exclude": {
|
|
6
|
+
"build/**": true,
|
|
7
|
+
"build": true,
|
|
8
|
+
"algorithms/**": true,
|
|
9
|
+
"algorithms": true
|
|
10
|
+
},
|
|
11
|
+
"editor.formatOnSave": true,
|
|
12
|
+
"files.associations": {
|
|
13
|
+
"vector": "cpp",
|
|
14
|
+
"__bit_reference": "cpp",
|
|
15
|
+
"__hash_table": "cpp",
|
|
16
|
+
"__locale": "cpp",
|
|
17
|
+
"__node_handle": "cpp",
|
|
18
|
+
"__split_buffer": "cpp",
|
|
19
|
+
"__threading_support": "cpp",
|
|
20
|
+
"__verbose_abort": "cpp",
|
|
21
|
+
"array": "cpp",
|
|
22
|
+
"bitset": "cpp",
|
|
23
|
+
"cctype": "cpp",
|
|
24
|
+
"charconv": "cpp",
|
|
25
|
+
"clocale": "cpp",
|
|
26
|
+
"cmath": "cpp",
|
|
27
|
+
"complex": "cpp",
|
|
28
|
+
"cstdarg": "cpp",
|
|
29
|
+
"cstddef": "cpp",
|
|
30
|
+
"cstdint": "cpp",
|
|
31
|
+
"cstdio": "cpp",
|
|
32
|
+
"cstdlib": "cpp",
|
|
33
|
+
"cstring": "cpp",
|
|
34
|
+
"ctime": "cpp",
|
|
35
|
+
"cwchar": "cpp",
|
|
36
|
+
"cwctype": "cpp",
|
|
37
|
+
"deque": "cpp",
|
|
38
|
+
"execution": "cpp",
|
|
39
|
+
"memory": "cpp",
|
|
40
|
+
"forward_list": "cpp",
|
|
41
|
+
"fstream": "cpp",
|
|
42
|
+
"initializer_list": "cpp",
|
|
43
|
+
"iomanip": "cpp",
|
|
44
|
+
"ios": "cpp",
|
|
45
|
+
"iosfwd": "cpp",
|
|
46
|
+
"iostream": "cpp",
|
|
47
|
+
"istream": "cpp",
|
|
48
|
+
"limits": "cpp",
|
|
49
|
+
"locale": "cpp",
|
|
50
|
+
"mutex": "cpp",
|
|
51
|
+
"new": "cpp",
|
|
52
|
+
"optional": "cpp",
|
|
53
|
+
"ostream": "cpp",
|
|
54
|
+
"print": "cpp",
|
|
55
|
+
"queue": "cpp",
|
|
56
|
+
"ratio": "cpp",
|
|
57
|
+
"sstream": "cpp",
|
|
58
|
+
"stack": "cpp",
|
|
59
|
+
"stdexcept": "cpp",
|
|
60
|
+
"streambuf": "cpp",
|
|
61
|
+
"string": "cpp",
|
|
62
|
+
"string_view": "cpp",
|
|
63
|
+
"tuple": "cpp",
|
|
64
|
+
"typeindex": "cpp",
|
|
65
|
+
"typeinfo": "cpp",
|
|
66
|
+
"unordered_map": "cpp",
|
|
67
|
+
"unordered_set": "cpp",
|
|
68
|
+
"variant": "cpp",
|
|
69
|
+
"algorithm": "cpp",
|
|
70
|
+
"__tree": "cpp",
|
|
71
|
+
"any": "cpp",
|
|
72
|
+
"cinttypes": "cpp",
|
|
73
|
+
"condition_variable": "cpp",
|
|
74
|
+
"map": "cpp",
|
|
75
|
+
"set": "cpp",
|
|
76
|
+
"span": "cpp",
|
|
77
|
+
"csignal": "cpp",
|
|
78
|
+
"list": "cpp"
|
|
79
|
+
},
|
|
80
|
+
"C_Cpp.errorSquiggles": "disabled"
|
|
81
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Acknowledgements
|
|
2
|
+
|
|
3
|
+
This project would not be possible without the remarkable work of other engineers in the data compression space. `compress-utils` incorporates such code from the following third-party projects:
|
|
4
|
+
|
|
5
|
+
## Brotli
|
|
6
|
+
|
|
7
|
+
- **Repository**: https://github.com/google/brotli.git
|
|
8
|
+
- **License**: MIT License
|
|
9
|
+
- **Authors**: Google and contributors
|
|
10
|
+
|
|
11
|
+
## zlib
|
|
12
|
+
|
|
13
|
+
- **Repository**: https://github.com/madler/zlib
|
|
14
|
+
- **License**: zlib License
|
|
15
|
+
- **Authors**: Jean-loup Gailly, Mark Adler and contributors
|
|
16
|
+
|
|
17
|
+
## Zstandard (zstd)
|
|
18
|
+
|
|
19
|
+
- **Repository**: https://github.com/facebook/zstd
|
|
20
|
+
- **License**: BSD 3-Clause License
|
|
21
|
+
- **Authors**: Yann Collet and contributors
|
|
22
|
+
|
|
23
|
+
## XZ Utils
|
|
24
|
+
|
|
25
|
+
- **Repository**: https://github.com/tukaani-project/xz
|
|
26
|
+
- **License**: BSD 0-Clause License
|
|
27
|
+
- **Authors**: Lasse Collin, Tukaani and contributors
|