pycdhit4 0.1.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 (132) hide show
  1. pycdhit4-0.1.0/.github/workflows/package.yml +266 -0
  2. pycdhit4-0.1.0/.github/workflows/requirements.txt +7 -0
  3. pycdhit4-0.1.0/.github/workflows/test.yml +202 -0
  4. pycdhit4-0.1.0/.gitignore +171 -0
  5. pycdhit4-0.1.0/.gitmodules +3 -0
  6. pycdhit4-0.1.0/CHANGELOG.md +15 -0
  7. pycdhit4-0.1.0/CMakeLists.txt +24 -0
  8. pycdhit4-0.1.0/CONTRIBUTING.md +41 -0
  9. pycdhit4-0.1.0/COPYING +674 -0
  10. pycdhit4-0.1.0/PKG-INFO +203 -0
  11. pycdhit4-0.1.0/README.md +166 -0
  12. pycdhit4-0.1.0/include/cdhit/__init__.pxd +36 -0
  13. pycdhit4-0.1.0/include/cdhit/options.pxd +83 -0
  14. pycdhit4-0.1.0/include/cdhit/score_matrix.pxd +17 -0
  15. pycdhit4-0.1.0/include/cdhit/seq.pxd +104 -0
  16. pycdhit4-0.1.0/include/cdhit/vector.pxd +11 -0
  17. pycdhit4-0.1.0/patches/Makefile.patch +67 -0
  18. pycdhit4-0.1.0/patches/cdhit-2d.c++.patch +35 -0
  19. pycdhit4-0.1.0/patches/cdhit-454.c++.patch +66 -0
  20. pycdhit4-0.1.0/patches/cdhit-common.c++.patch +7998 -0
  21. pycdhit4-0.1.0/patches/cdhit-common.h.patch +210 -0
  22. pycdhit4-0.1.0/patches/cdhit-div.c++.patch +20 -0
  23. pycdhit4-0.1.0/patches/cdhit-error.c++.patch +32 -0
  24. pycdhit4-0.1.0/patches/cdhit-est-2d.c++.patch +77 -0
  25. pycdhit4-0.1.0/patches/cdhit-est.c++.patch +72 -0
  26. pycdhit4-0.1.0/patches/cdhit.c++.patch +34 -0
  27. pycdhit4-0.1.0/pyproject.toml +132 -0
  28. pycdhit4-0.1.0/src/CMakeLists.txt +2 -0
  29. pycdhit4-0.1.0/src/cdhit/CMakeLists.txt +64 -0
  30. pycdhit4-0.1.0/src/pycdhit4/CMakeLists.txt +1 -0
  31. pycdhit4-0.1.0/src/pycdhit4/__init__.py +10 -0
  32. pycdhit4-0.1.0/src/pycdhit4/_cdhit.pyi +25 -0
  33. pycdhit4-0.1.0/src/pycdhit4/_cdhit.pyx +168 -0
  34. pycdhit4-0.1.0/src/pycdhit4/_errors.cpp +35 -0
  35. pycdhit4-0.1.0/src/pycdhit4/py.typed +0 -0
  36. pycdhit4-0.1.0/src/pycdhit4/tests/__init__.py +12 -0
  37. pycdhit4-0.1.0/src/pycdhit4/tests/__main__.py +5 -0
  38. pycdhit4-0.1.0/src/pycdhit4/tests/test_cluster.py +41 -0
  39. pycdhit4-0.1.0/src/pycdhit4/tests/test_doctest.py +82 -0
  40. pycdhit4-0.1.0/src/scripts/apply_patch.py +65 -0
  41. pycdhit4-0.1.0/src/scripts/cmake/CythonExtension.cmake +138 -0
  42. pycdhit4-0.1.0/src/scripts/cmake/pystate_patch.h +10 -0
  43. pycdhit4-0.1.0/src/scripts/generate_patches.py +51 -0
  44. pycdhit4-0.1.0/vendor/cdhit/ChangeLog +82 -0
  45. pycdhit4-0.1.0/vendor/cdhit/FET.pl +109 -0
  46. pycdhit4-0.1.0/vendor/cdhit/Makefile +108 -0
  47. pycdhit4-0.1.0/vendor/cdhit/README +42 -0
  48. pycdhit4-0.1.0/vendor/cdhit/cd-hit-2d-para.pl +483 -0
  49. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/Makefile +47 -0
  50. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/bioSequence.cxx +241 -0
  51. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/bioSequence.hxx +132 -0
  52. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/cd-hit-dup-PE-out.pl +111 -0
  53. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/cdhit-dup.cxx +1034 -0
  54. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/cdhit-lap.cxx +381 -0
  55. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minArray.hxx +250 -0
  56. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minBase.hxx +13 -0
  57. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minMap.cxx +538 -0
  58. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minMap.hxx +218 -0
  59. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minString.cxx +499 -0
  60. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minString.hxx +86 -0
  61. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/mintlib/minUtility.hxx +6 -0
  62. pycdhit4-0.1.0/vendor/cdhit/cd-hit-auxtools/read-linker.cxx +270 -0
  63. pycdhit4-0.1.0/vendor/cdhit/cd-hit-clstr_2_blm8.pl +58 -0
  64. pycdhit4-0.1.0/vendor/cdhit/cd-hit-div.pl +49 -0
  65. pycdhit4-0.1.0/vendor/cdhit/cd-hit-para.pl +454 -0
  66. pycdhit4-0.1.0/vendor/cdhit/cdhit-2d.c++ +78 -0
  67. pycdhit4-0.1.0/vendor/cdhit/cdhit-454.c++ +108 -0
  68. pycdhit4-0.1.0/vendor/cdhit/cdhit-common.c++ +4408 -0
  69. pycdhit4-0.1.0/vendor/cdhit/cdhit-common.h +642 -0
  70. pycdhit4-0.1.0/vendor/cdhit/cdhit-div.c++ +69 -0
  71. pycdhit4-0.1.0/vendor/cdhit/cdhit-est-2d.c++ +115 -0
  72. pycdhit4-0.1.0/vendor/cdhit/cdhit-est.c++ +95 -0
  73. pycdhit4-0.1.0/vendor/cdhit/cdhit-utility.c++ +383 -0
  74. pycdhit4-0.1.0/vendor/cdhit/cdhit-utility.h +7 -0
  75. pycdhit4-0.1.0/vendor/cdhit/cdhit.c++ +68 -0
  76. pycdhit4-0.1.0/vendor/cdhit/clstr2tree.pl +51 -0
  77. pycdhit4-0.1.0/vendor/cdhit/clstr2txt.pl +57 -0
  78. pycdhit4-0.1.0/vendor/cdhit/clstr2xml.pl +151 -0
  79. pycdhit4-0.1.0/vendor/cdhit/clstr_cut.pl +31 -0
  80. pycdhit4-0.1.0/vendor/cdhit/clstr_list.pl +89 -0
  81. pycdhit4-0.1.0/vendor/cdhit/clstr_list_sort.pl +51 -0
  82. pycdhit4-0.1.0/vendor/cdhit/clstr_merge.pl +144 -0
  83. pycdhit4-0.1.0/vendor/cdhit/clstr_merge_noorder.pl +100 -0
  84. pycdhit4-0.1.0/vendor/cdhit/clstr_quality_eval.pl +137 -0
  85. pycdhit4-0.1.0/vendor/cdhit/clstr_quality_eval_by_link.pl +85 -0
  86. pycdhit4-0.1.0/vendor/cdhit/clstr_reduce.pl +51 -0
  87. pycdhit4-0.1.0/vendor/cdhit/clstr_renumber.pl +14 -0
  88. pycdhit4-0.1.0/vendor/cdhit/clstr_rep.pl +32 -0
  89. pycdhit4-0.1.0/vendor/cdhit/clstr_reps_faa_rev.pl +57 -0
  90. pycdhit4-0.1.0/vendor/cdhit/clstr_rev.pl +83 -0
  91. pycdhit4-0.1.0/vendor/cdhit/clstr_select.pl +29 -0
  92. pycdhit4-0.1.0/vendor/cdhit/clstr_select_rep.pl +38 -0
  93. pycdhit4-0.1.0/vendor/cdhit/clstr_size_histogram.pl +38 -0
  94. pycdhit4-0.1.0/vendor/cdhit/clstr_size_stat.pl +40 -0
  95. pycdhit4-0.1.0/vendor/cdhit/clstr_sort_by.pl +47 -0
  96. pycdhit4-0.1.0/vendor/cdhit/clstr_sort_prot_by.pl +59 -0
  97. pycdhit4-0.1.0/vendor/cdhit/clstr_sql_tbl.pl +127 -0
  98. pycdhit4-0.1.0/vendor/cdhit/clstr_sql_tbl_sort.pl +45 -0
  99. pycdhit4-0.1.0/vendor/cdhit/license.txt +339 -0
  100. pycdhit4-0.1.0/vendor/cdhit/make_multi_seq.pl +76 -0
  101. pycdhit4-0.1.0/vendor/cdhit/plot_2d.pl +159 -0
  102. pycdhit4-0.1.0/vendor/cdhit/plot_len1.pl +105 -0
  103. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/README.psi-cd-hit +22 -0
  104. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/cd-hit-div.pl +49 -0
  105. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/clstr_select_rep.pl +38 -0
  106. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/clstr_select_seq.pl +35 -0
  107. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/fetch_fasta_by_ids.pl +29 -0
  108. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/fetch_fasta_exclude_ids.pl +29 -0
  109. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/psi-2d.pl +440 -0
  110. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/psi-cd-hit-local-old.pl +1285 -0
  111. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/psi-cd-hit-local.pl +1524 -0
  112. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/psi-cd-hit-old.pl +165 -0
  113. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/psi-cd-hit.pl +167 -0
  114. pycdhit4-0.1.0/vendor/cdhit/psi-cd-hit/qsub-template +10 -0
  115. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/16S-ref-db-PE-splice.pl +458 -0
  116. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/NG-Omics-Miseq-16S.pl +117 -0
  117. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/NG-Omics-Miseq-16S.py +117 -0
  118. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/NG-Omics-WF.pl +1189 -0
  119. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/NG-Omics-WF.py +888 -0
  120. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/README +207 -0
  121. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/cd-hit-otu-miseq-PE.pl +222 -0
  122. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/clstr_2_OTU_table.pl +82 -0
  123. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/filter-chimeric-and-small.pl +237 -0
  124. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/filter-chimeric-by-ref.pl +207 -0
  125. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/filter-nontop-ref.pl +51 -0
  126. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/filter-refonly-cluster.pl +34 -0
  127. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/greengene-ann1.pl +75 -0
  128. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/pool_samples.pl +83 -0
  129. pycdhit4-0.1.0/vendor/cdhit/usecases/Miseq-16S/silva-ana1.pl +65 -0
  130. pycdhit4-0.1.0/vendor/cdhit/usecases/miRNA-seq/NG-Omics-miRNA-seq.pl +132 -0
  131. pycdhit4-0.1.0/vendor/cdhit/usecases/miRNA-seq/clstr_2_miRNA-table.pl +66 -0
  132. pycdhit4-0.1.0/vendor/cdhit/usecases/miRNA-seq/filter-small-cluster.pl +94 -0
@@ -0,0 +1,266 @@
1
+ name: Package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - v*
7
+
8
+ jobs:
9
+
10
+ wheel-linux-aarch64:
11
+ name: Build Linux wheels (Aarch64)
12
+ runs-on: ubuntu-22.04-arm
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ with:
16
+ submodules: recursive
17
+ - name: Build manylinux wheels
18
+ uses: pypa/cibuildwheel@v4.3.5
19
+ env:
20
+ CIBW_ARCHS: aarch64
21
+ CIBW_BUILD: '*-manylinux_aarch64'
22
+ CIBW_BUILD_VERBOSITY: 2
23
+ with:
24
+ output-dir: dist
25
+ - uses: actions/upload-artifact@v4
26
+ with:
27
+ name: wheels-manylinux_aarch64
28
+ path: dist/*
29
+
30
+ wheel-linux-x86_64:
31
+ name: Build Linux wheels (x86-64)
32
+ runs-on: ubuntu-latest
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+ with:
36
+ submodules: recursive
37
+ - name: Build manylinux wheels
38
+ uses: pypa/cibuildwheel@v4.3.5
39
+ env:
40
+ CIBW_ARCHS: x86_64
41
+ CIBW_BUILD: '*-manylinux_x86_64'
42
+ CIBW_BUILD_VERBOSITY: 2
43
+ with:
44
+ output-dir: dist
45
+ - uses: actions/upload-artifact@v4
46
+ with:
47
+ name: wheels-manylinux_x86_64
48
+ path: dist/*
49
+
50
+ wheel-macos-x86_64:
51
+ name: Build MacOS wheels (x86-64)
52
+ runs-on: macOS-latest
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+ with:
56
+ submodules: recursive
57
+ - name: Build manylinux wheels
58
+ uses: pypa/cibuildwheel@v4.3.5
59
+ env:
60
+ CIBW_ARCHS: x86_64
61
+ CIBW_BUILD: '*-macosx_x86_64'
62
+ CIBW_BUILD_VERBOSITY: 2
63
+ MACOSX_DEPLOYMENT_TARGET: 11.0
64
+ with:
65
+ output-dir: dist
66
+ - uses: actions/upload-artifact@v4
67
+ with:
68
+ name: wheels-macosx_x86_64
69
+ path: dist/*
70
+
71
+ wheel-macos-aarch64:
72
+ name: Build MacOS wheels (Aarch64)
73
+ runs-on: macOS-latest
74
+ steps:
75
+ - uses: actions/checkout@v4
76
+ with:
77
+ submodules: recursive
78
+ - name: Build manylinux wheels
79
+ uses: pypa/cibuildwheel@v4.3.5
80
+ env:
81
+ CIBW_ARCHS: arm64
82
+ CIBW_BUILD: '*-macosx_arm64'
83
+ CIBW_BUILD_VERBOSITY: 2
84
+ with:
85
+ output-dir: dist
86
+ - uses: actions/upload-artifact@v4
87
+ with:
88
+ name: wheels-macosx_arm64
89
+ path: dist/*
90
+
91
+ wheel-win32-x86_64:
92
+ name: Build Windows wheels (x86-64)
93
+ runs-on: windows-latest
94
+ steps:
95
+ - uses: actions/checkout@v4
96
+ with:
97
+ submodules: recursive
98
+ - name: Configure build for amd64
99
+ uses: ilammy/msvc-dev-cmd@v1
100
+ with:
101
+ arch: amd64
102
+ - name: Build manylinux wheels
103
+ uses: pypa/cibuildwheel@v4.3.5
104
+ env:
105
+ CIBW_ARCHS: AMD64
106
+ CIBW_BUILD: '*-win_amd64'
107
+ CIBW_BUILD_VERBOSITY: 2
108
+ CMAKE_GENERATOR: Ninja
109
+ with:
110
+ output-dir: dist
111
+ - uses: actions/upload-artifact@v4
112
+ with:
113
+ name: wheels-win_amd64
114
+ path: dist/*
115
+
116
+ wheel-wasm:
117
+ name: Build WebAssembly wheel
118
+ runs-on: ubuntu-latest
119
+ steps:
120
+ - uses: actions/checkout@v4
121
+ with:
122
+ submodules: true
123
+ - name: Set up Python 3.13
124
+ uses: actions/setup-python@v2
125
+ with:
126
+ python-version: 3.13
127
+ - name: Install Pyodide
128
+ run: python -m pip install pyodide-build
129
+ - name: Build wheel
130
+ run: pyodide build .
131
+ - name: Create virtualenv
132
+ run: pyodide venv .venv-pyodide
133
+ - name: Install WebAssembly wheel
134
+ run: .venv-pyodide/bin/pip install dist/pycdhit4-*.whl
135
+ - name: Run tests
136
+ run: .venv-pyodide/bin/python -m unittest pycdhit4.tests -vv
137
+ - uses: actions/upload-artifact@v4
138
+ with:
139
+ name: wheels-wasm
140
+ path: dist/*
141
+
142
+ sdist:
143
+ runs-on: ubuntu-latest
144
+ name: Build source distribution
145
+ steps:
146
+ - uses: actions/checkout@v4
147
+ with:
148
+ submodules: recursive
149
+ - name: Set up Python 3.12
150
+ uses: actions/setup-python@v5
151
+ with:
152
+ python-version: 3.12
153
+ - name: Install build requirements
154
+ run: python -m pip install -r .github/workflows/requirements.txt
155
+ - name: Build source distribution
156
+ run: python -m build -s .
157
+ - name: Store built source distribution
158
+ uses: actions/upload-artifact@v4
159
+ with:
160
+ name: sdist
161
+ path: dist/*
162
+
163
+ test-sdist:
164
+ runs-on: ubuntu-latest
165
+ name: Test source distribution
166
+ needs:
167
+ - sdist
168
+ steps:
169
+ - name: Setup Python 3.12
170
+ uses: actions/setup-python@v5
171
+ with:
172
+ python-version: 3.12
173
+ - name: Download built wheels
174
+ uses: actions/download-artifact@v4
175
+ with:
176
+ name: sdist
177
+ path: dist/
178
+ - name: Update pip to latest version
179
+ run: python -m pip install -U pip
180
+ - name: Install built wheel
181
+ run: python -m pip install --no-binary pycdhit4 --find-links=dist pycdhit4
182
+ - name: Run tests without coverage
183
+ run: python -m unittest pycdhit4.tests -vv
184
+
185
+ upload:
186
+ environment: PyPI
187
+ runs-on: ubuntu-latest
188
+ permissions:
189
+ id-token: write
190
+ name: Upload
191
+ needs:
192
+ - sdist
193
+ - test-sdist
194
+ - wheel-linux-aarch64
195
+ - wheel-linux-x86_64
196
+ - wheel-macos-aarch64
197
+ - wheel-macos-x86_64
198
+ - wheel-win32-x86_64
199
+ - wheel-wasm
200
+ steps:
201
+ - uses: actions/download-artifact@v4
202
+ with:
203
+ name: sdist
204
+ path: dist
205
+ merge-multiple: true
206
+ - uses: actions/download-artifact@v4
207
+ with:
208
+ pattern: wheels-*
209
+ path: dist
210
+ merge-multiple: true
211
+ - uses: pypa/gh-action-pypi-publish@release/v1
212
+ if: startsWith(github.ref, 'refs/tags')
213
+
214
+ release:
215
+ environment: GitHub Releases
216
+ runs-on: ubuntu-latest
217
+ if: "!contains(github.ref, 'rc')"
218
+ name: Release
219
+ needs: upload
220
+ permissions: write-all
221
+ steps:
222
+ - uses: actions/checkout@v4
223
+ with:
224
+ submodules: recursive
225
+ - uses: rasmus-saks/release-a-changelog-action@v1.2.0
226
+ with:
227
+ github-token: '${{ secrets.GITHUB_TOKEN }}'
228
+
229
+ # aur:
230
+ # environment: Arch User Repository
231
+ # runs-on: ubuntu-latest
232
+ # if: "!contains(github.ref, 'alpha') && !contains(github.ref, 'rc') && !contains(github.ref, 'post')"
233
+ # name: Update AUR package
234
+ # needs:
235
+ # - sdist
236
+ # - test-sdist
237
+ # - upload
238
+ # steps:
239
+ # - uses: actions/checkout@v3
240
+ # with:
241
+ # submodules: recursive
242
+ # - name: Set up Python 3.13
243
+ # uses: actions/setup-python@v5
244
+ # with:
245
+ # python-version: '3.13'
246
+ # - name: Download source distribution
247
+ # uses: actions/download-artifact@v4
248
+ # with:
249
+ # name: sdist
250
+ # path: dist
251
+ # - name: Extract package version
252
+ # run: echo PKGVER=$(echo '${{ github.ref }}' | cut -d'v' -f2) >> $GITHUB_ENV
253
+ # - name: Compute SHA256 of source distribution
254
+ # run: echo SHA256=$(sha256sum dist/pycdhit4-${{ env.PKGVER }}.tar.gz | cut -f1 -d' ') >> $GITHUB_ENV
255
+ # - name: Generate PKGBUILD
256
+ # run: sed -e "s/%pkgver/${{ env.PKGVER }}/g" -e "s/%sha256sum/${{ env.SHA256 }}/g" pkg/aur/PKGBUILD.in > pkg/aur/PKGBUILD
257
+ # - name: Update package
258
+ # uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
259
+ # with:
260
+ # pkgname: python-pycdhit4
261
+ # pkgbuild: pkg/aur/PKGBUILD
262
+ # commit_username: ${{ secrets.AUR_USER }}
263
+ # commit_email: ${{ secrets.AUR_EMAIL }}
264
+ # ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
265
+ # commit_message: ${{ github.event.head_commit.message }}
266
+ # ssh_keyscan_types: rsa,ecdsa,ed25519
@@ -0,0 +1,7 @@
1
+ # coverage ~=7.0
2
+ cython ~=3.0
3
+ # semantic-version ~=2.10
4
+ scikit-build-core
5
+ build
6
+ importlib-resources ; python_version < '3.9'
7
+ scoring-matrices ~=0.3.0
@@ -0,0 +1,202 @@
1
+ name: Test
2
+
3
+ on:
4
+ - push
5
+ - pull_request
6
+
7
+ jobs:
8
+
9
+ test_linux:
10
+ name: Test (Linux)
11
+ runs-on: ubuntu-latest
12
+ env:
13
+ OS: Linux
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ include:
18
+ - python-version: 3.8
19
+ python-release: v3.8
20
+ python-impl: CPython
21
+ - python-version: 3.9
22
+ python-release: v3.9
23
+ python-impl: CPython
24
+ - python-version: '3.10'
25
+ python-release: v3.10
26
+ python-impl: CPython
27
+ - python-version: 3.11
28
+ python-release: v3.11
29
+ python-impl: CPython
30
+ - python-version: 3.12
31
+ python-release: v3.12
32
+ python-impl: CPython
33
+ - python-version: 3.13
34
+ python-release: v3.13
35
+ python-impl: CPython
36
+ - python-version: 3.14
37
+ python-release: v3.14
38
+ python-impl: CPython
39
+ - python-version: pypy-3.8
40
+ python-release: v3.8
41
+ python-impl: PyPy
42
+ - python-version: pypy-3.9
43
+ python-release: v3.9
44
+ python-impl: PyPy
45
+ - python-version: pypy-3.10
46
+ python-release: v3.10
47
+ python-impl: PyPy
48
+ steps:
49
+ - name: Checkout code
50
+ uses: actions/checkout@v4
51
+ with:
52
+ submodules: recursive
53
+ - name: Setup Python ${{ matrix.python-version }}
54
+ uses: actions/setup-python@v5
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+ - name: Update pip
58
+ run: python -m pip install -U pip wheel setuptools
59
+ - name: Install Python requirements
60
+ run: python -m pip install -r .github/workflows/requirements.txt
61
+ - name: Build extension in debug mode
62
+ run: python -m pip install -v -e . --no-build-isolation
63
+ - name: Test extension
64
+ run: python -m unittest pycdhit.tests -vv
65
+ # - name: Upload to Codecov
66
+ # if: matrix.python-impl == 'CPython'
67
+ # uses: codecov/codecov-action@v3
68
+ # with:
69
+ # flags: ${{ matrix.python-impl }},${{ matrix.python-release }},${{ env.OS }}
70
+ # name: test-python-${{ matrix.python-version }}
71
+ # fail_ci_if_error: true
72
+ # token: ${{ secrets.CODECOV_TOKEN }}
73
+
74
+ test_osx:
75
+ name: Test (OSX)
76
+ runs-on: macos-latest
77
+ env:
78
+ OS: OSX
79
+ strategy:
80
+ fail-fast: false
81
+ matrix:
82
+ include:
83
+ - python-version: 3.8
84
+ python-release: v3.8
85
+ python-impl: CPython
86
+ - python-version: 3.9
87
+ python-release: v3.9
88
+ python-impl: CPython
89
+ - python-version: '3.10'
90
+ python-release: v3.10
91
+ python-impl: CPython
92
+ - python-version: '3.11'
93
+ python-release: v3.11
94
+ python-impl: CPython
95
+ - python-version: '3.12'
96
+ python-release: v3.12
97
+ python-impl: CPython
98
+ - python-version: '3.14'
99
+ python-release: v3.13
100
+ python-impl: CPython
101
+ - python-version: '3.14'
102
+ python-release: v3.13
103
+ python-impl: CPython
104
+ - python-version: pypy-3.8
105
+ python-release: v3.8
106
+ python-impl: PyPy
107
+ - python-version: pypy-3.9
108
+ python-release: v3.9
109
+ python-impl: PyPy
110
+ - python-version: pypy-3.10
111
+ python-release: v3.10
112
+ python-impl: PyPy
113
+ steps:
114
+ - name: Checkout code
115
+ uses: actions/checkout@v4
116
+ with:
117
+ submodules: recursive
118
+ - name: Setup Python ${{ matrix.python-version }}
119
+ uses: actions/setup-python@v5
120
+ with:
121
+ python-version: ${{ matrix.python-version }}
122
+ # - name: Setup deployment target
123
+ # shell: bash
124
+ # if: ${{ startsWith(matrix.python-version, 'pypy') || matrix.python-version == '3.11' || matrix.python-version == '3.12' }}
125
+ # run: echo "MACOSX_DEPLOYMENT_TARGET=10.12" >> $GITHUB_ENV
126
+ - name: Update pip
127
+ run: python -m pip install -U pip wheel setuptools
128
+ - name: Install Python requirements
129
+ run: python -m pip install -r .github/workflows/requirements.txt
130
+
131
+ - name: Install LLVM
132
+ run: brew install llvm
133
+ - name: Build extension in debug mode
134
+ run: python -m pip install -v -e . --no-build-isolation -C cmake.define.CMAKE_C_COMPILER=$(brew --prefix llvm)/bin/clang -C cmake.define.CMAKE_CXX_COMPILER=$(brew --prefix llvm)/bin/clang++
135
+ - name: Test extension
136
+ run: python -m unittest pycdhit.tests -vv
137
+ # - name: Upload to Codecov
138
+ # if: matrix.python-impl == 'CPython'
139
+ # uses: codecov/codecov-action@v3
140
+ # with:
141
+ # flags: ${{ matrix.python-impl }},${{ matrix.python-release }},${{ env.OS }}
142
+ # name: test-python-${{ matrix.python-version }}
143
+ # fail_ci_if_error: true
144
+ # token: ${{ secrets.CODECOV_TOKEN }}
145
+
146
+ test_windows:
147
+ name: Test (Windows)
148
+ runs-on: windows-latest
149
+ env:
150
+ OS: Windows
151
+ strategy:
152
+ fail-fast: false
153
+ matrix:
154
+ include:
155
+ - python-version: 3.8
156
+ python-release: v3.8
157
+ python-impl: CPython
158
+ - python-version: 3.9
159
+ python-release: v3.9
160
+ python-impl: CPython
161
+ - python-version: '3.10'
162
+ python-release: v3.10
163
+ python-impl: CPython
164
+ - python-version: '3.11'
165
+ python-release: v3.11
166
+ python-impl: CPython
167
+ - python-version: '3.12'
168
+ python-release: v3.12
169
+ python-impl: CPython
170
+ - python-version: '3.13'
171
+ python-release: v3.13
172
+ python-impl: CPython
173
+ - python-version: '3.14'
174
+ python-release: v3.14
175
+ python-impl: CPython
176
+ - python-version: pypy-3.8
177
+ python-release: v3.8
178
+ python-impl: PyPy
179
+ - python-version: pypy-3.9
180
+ python-release: v3.9
181
+ python-impl: PyPy
182
+ - python-version: pypy-3.10
183
+ python-release: v3.10
184
+ python-impl: PyPy
185
+ steps:
186
+ - name: Checkout code
187
+ uses: actions/checkout@v4
188
+ with:
189
+ submodules: recursive
190
+ - name: Setup Python ${{ matrix.python-version }}
191
+ uses: actions/setup-python@v5
192
+ with:
193
+ python-version: ${{ matrix.python-version }}
194
+ architecture: x64
195
+ - name: Update pip
196
+ run: python -m pip install -U pip wheel setuptools
197
+ - name: Install Python requirements
198
+ run: python -m pip install -r .github/workflows/requirements.txt
199
+ - name: Build extension in debug mode
200
+ run: python -m pip install -v . --no-build-isolation
201
+ - name: Test extension
202
+ run: python -m unittest pycdhit.tests -vv
@@ -0,0 +1,171 @@
1
+
2
+ ### Cython ###
3
+
4
+ # Created by https://www.gitignore.io/api/python,c
5
+ # Edit at https://www.gitignore.io/?templates=python,c
6
+
7
+ ### C ###
8
+ # Prerequisites
9
+ *.d
10
+
11
+ # Object files
12
+ *.o
13
+ *.ko
14
+ *.obj
15
+ *.elf
16
+
17
+ # Linker output
18
+ *.ilk
19
+ *.map
20
+ *.exp
21
+
22
+ # Precompiled Headers
23
+ *.gch
24
+ *.pch
25
+
26
+ # Libraries
27
+ *.lib
28
+ *.a
29
+ *.la
30
+ *.lo
31
+
32
+ # Shared objects (inc. Windows DLLs)
33
+ *.dll
34
+ *.so
35
+ *.so.*
36
+ *.dylib
37
+
38
+ # Executables
39
+ *.exe
40
+ *.out
41
+ *.app
42
+ *.i*86
43
+ *.x86_64
44
+ *.hex
45
+
46
+ # Debug files
47
+ *.dSYM/
48
+ *.su
49
+ *.idb
50
+ *.pdb
51
+
52
+ # Kernel Module Compile Results
53
+ *.mod*
54
+ *.cmd
55
+ .tmp_versions/
56
+ modules.order
57
+ Module.symvers
58
+ Mkfile.old
59
+ dkms.conf
60
+
61
+ # Valgrind files
62
+ callgrind.out.*
63
+
64
+ # Memprofile
65
+ mprofile_*.dat
66
+
67
+ ### Python ###
68
+ # Byte-compiled / optimized / DLL files
69
+ __pycache__/
70
+ *.py[cod]
71
+ *$py.class
72
+
73
+ # C extensions
74
+
75
+ # Distribution / packaging
76
+ .Python
77
+ build/
78
+ develop-eggs/
79
+ dist/
80
+ downloads/
81
+ eggs/
82
+ .eggs/
83
+ lib/
84
+ lib64/
85
+ parts/
86
+ sdist/
87
+ var/
88
+ wheels/
89
+ pip-wheel-metadata/
90
+ share/python-wheels/
91
+ *.egg-info/
92
+ .installed.cfg
93
+ *.egg
94
+ MANIFEST
95
+
96
+ # PyInstaller
97
+ # Usually these files are written by a python script from a template
98
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
99
+ *.manifest
100
+ *.spec
101
+
102
+ # Installer logs
103
+ pip-log.txt
104
+ pip-delete-this-directory.txt
105
+
106
+ # Unit test / coverage reports
107
+ htmlcov/
108
+ .tox/
109
+ .nox/
110
+ .coverage
111
+ .coverage.*
112
+ .cache
113
+ nosetests.xml
114
+ coverage.xml
115
+ *.cover
116
+ .hypothesis/
117
+ .pytest_cache/
118
+
119
+ # Translations
120
+ *.mo
121
+ *.pot
122
+
123
+ # Scrapy stuff:
124
+ .scrapy
125
+
126
+ # Sphinx documentation
127
+ docs/_build/
128
+
129
+ # PyBuilder
130
+ target/
131
+
132
+ # pyenv
133
+ .python-version
134
+
135
+ # pipenv
136
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
137
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
138
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
139
+ # install all needed dependencies.
140
+ #Pipfile.lock
141
+
142
+ # celery beat schedule file
143
+ celerybeat-schedule
144
+
145
+ # SageMath parsed files
146
+ *.sage.py
147
+
148
+ # Spyder project settings
149
+ .spyderproject
150
+ .spyproject
151
+
152
+ # Rope project settings
153
+ .ropeproject
154
+
155
+ # Mr Developer
156
+ .mr.developer.cfg
157
+ .project
158
+ .pydevproject
159
+
160
+ # mkdocs documentation
161
+ /site
162
+
163
+ # mypy
164
+ .mypy_cache/
165
+ .dmypy.json
166
+ dmypy.json
167
+
168
+ # Pyre type checker
169
+ .pyre/
170
+
171
+ # End of https://www.gitignore.io/api/python,c
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/cdhit"]
2
+ path = vendor/cdhit
3
+ url = https://github.com/weizhongli/cdhit
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+
8
+ ## [Unreleased]
9
+ [Unreleased]: https://github.com/althonos/pycdhit4/compare/v0.1.0...HEAD
10
+
11
+
12
+ ## [v0.1.0] - 2026-11-08
13
+ [v0.1.0]: https://github.com/althonos/pycdhit4/compare/ee06510...v0.1.0
14
+
15
+ Initial release.
@@ -0,0 +1,24 @@
1
+ cmake_minimum_required(VERSION 3.20)
2
+ project(${SKBUILD_PROJECT_NAME} VERSION ${SKBUILD_PROJECT_VERSION} LANGUAGES C CXX)
3
+
4
+ set(BUILD_SHARED_LIBS OFF)
5
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
6
+
7
+ set(CMAKE_CXX_STANDARD 20)
8
+ set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
9
+
10
+ message(STATUS "Building ${SKBUILD_PROJECT_NAME} for ${CMAKE_SYSTEM_PROCESSOR}")
11
+
12
+ # --- Setup include folders ----------------------------------------------------
13
+
14
+ set_property(GLOBAL PROPERTY PYTHON_EXTENSIONS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
15
+ set(CYTHON_HEADERS_DIR ${CMAKE_CURRENT_LIST_DIR}/include)
16
+
17
+ # --- Add scripts for Cython ---------------------------------------------------
18
+
19
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/src/scripts/cmake")
20
+ include(CythonExtension)
21
+
22
+ # --- Compile code -------------------------------------------------------------
23
+
24
+ add_subdirectory("src")