python-calamine 0.8.0__tar.gz → 0.8.2__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 (47) hide show
  1. python_calamine-0.8.2/.github/pyodide/pylock.314.toml +57 -0
  2. python_calamine-0.8.2/.github/pyodide/requirements.in +7 -0
  3. {python_calamine-0.8.0 → python_calamine-0.8.2}/.github/workflows/CI.yml +99 -6
  4. {python_calamine-0.8.0 → python_calamine-0.8.2}/Cargo.lock +1 -1
  5. {python_calamine-0.8.0 → python_calamine-0.8.2}/Cargo.toml +1 -1
  6. {python_calamine-0.8.0 → python_calamine-0.8.2}/PKG-INFO +1 -1
  7. {python_calamine-0.8.0 → python_calamine-0.8.2}/pyproject.toml +1 -0
  8. python_calamine-0.8.2/uv.lock +1821 -0
  9. {python_calamine-0.8.0 → python_calamine-0.8.2}/.github/dependabot.yml +0 -0
  10. {python_calamine-0.8.0 → python_calamine-0.8.2}/.gitignore +0 -0
  11. {python_calamine-0.8.0 → python_calamine-0.8.2}/.pre-commit-config.yaml +0 -0
  12. {python_calamine-0.8.0 → python_calamine-0.8.2}/LICENSE +0 -0
  13. {python_calamine-0.8.0 → python_calamine-0.8.2}/README.md +0 -0
  14. {python_calamine-0.8.0 → python_calamine-0.8.2}/build.rs +0 -0
  15. {python_calamine-0.8.0 → python_calamine-0.8.2}/python/python_calamine/__init__.py +0 -0
  16. {python_calamine-0.8.0 → python_calamine-0.8.2}/python/python_calamine/_python_calamine.pyi +0 -0
  17. {python_calamine-0.8.0 → python_calamine-0.8.2}/python/python_calamine/py.typed +0 -0
  18. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/lib.rs +0 -0
  19. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/cell.rs +0 -0
  20. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/errors.rs +0 -0
  21. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/mod.rs +0 -0
  22. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/sheet.rs +0 -0
  23. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/table.rs +0 -0
  24. {python_calamine-0.8.0 → python_calamine-0.8.2}/src/types/workbook.rs +0 -0
  25. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/__init__.py +0 -0
  26. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/conftest.py +0 -0
  27. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/any_sheets.ods +0 -0
  28. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/any_sheets.xls +0 -0
  29. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/any_sheets.xlsb +0 -0
  30. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/any_sheets.xlsx +0 -0
  31. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/base.ods +0 -0
  32. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/base.xls +0 -0
  33. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/base.xlsb +0 -0
  34. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/base.xlsx +0 -0
  35. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/empty_file.ods +0 -0
  36. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/empty_file.xlsb +0 -0
  37. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/empty_file.xlsx +0 -0
  38. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/issue139.xlsx +0 -0
  39. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/password.ods +0 -0
  40. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/password.xls +0 -0
  41. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/password.xlsb +0 -0
  42. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/password.xlsx +0 -0
  43. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/data/table-multiple.xlsx +0 -0
  44. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/test_base.py +0 -0
  45. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/test_pandas.py +0 -0
  46. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/test_sheet_type.py +0 -0
  47. {python_calamine-0.8.0 → python_calamine-0.8.2}/tests/test_tables.py +0 -0
@@ -0,0 +1,57 @@
1
+ lock-version = "1.0"
2
+ created-by = "pip"
3
+
4
+ [[packages]]
5
+ name = "iniconfig"
6
+ version = "2.3.0"
7
+
8
+ [[packages.wheels]]
9
+ name = "iniconfig-2.3.0-py3-none-any.whl"
10
+ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"
11
+
12
+ [packages.wheels.hashes]
13
+ sha256 = "f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"
14
+
15
+ [[packages]]
16
+ name = "packaging"
17
+ version = "26.2"
18
+
19
+ [[packages.wheels]]
20
+ name = "packaging-26.2-py3-none-any.whl"
21
+ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl"
22
+
23
+ [packages.wheels.hashes]
24
+ sha256 = "5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e"
25
+
26
+ [[packages]]
27
+ name = "pluggy"
28
+ version = "1.6.0"
29
+
30
+ [[packages.wheels]]
31
+ name = "pluggy-1.6.0-py3-none-any.whl"
32
+ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"
33
+
34
+ [packages.wheels.hashes]
35
+ sha256 = "e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"
36
+
37
+ [[packages]]
38
+ name = "pygments"
39
+ version = "2.20.0"
40
+
41
+ [[packages.wheels]]
42
+ name = "pygments-2.20.0-py3-none-any.whl"
43
+ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl"
44
+
45
+ [packages.wheels.hashes]
46
+ sha256 = "81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"
47
+
48
+ [[packages]]
49
+ name = "pytest"
50
+ version = "9.1.1"
51
+
52
+ [[packages.wheels]]
53
+ name = "pytest-9.1.1-py3-none-any.whl"
54
+ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"
55
+
56
+ [packages.wheels.hashes]
57
+ sha256 = "37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c"
@@ -0,0 +1,7 @@
1
+ # Selected dependencies (including dev ones) to run the test suite with Pyodide.
2
+ # Dependencies should be installed from the derived `pylock.toml` file.
3
+ # To generate the lockfile, run `python -m pip lock -r requirements.in -o pylock.31x.toml`,
4
+ # in a Pyodide venv matching the target Python version. Such a venv can be created using
5
+ # `pyodide venv .venv-pyodide` (and this must be done from a Python venv matching the target
6
+ # Python version).
7
+ pytest~=9.0
@@ -1,4 +1,5 @@
1
1
  # some code from https://github.com/pydantic/pydantic-core/blob/d6e7890b36ef21cb28180a7f5b1479da2319012d/.github/workflows/ci.yml
2
+ # and https://github.com/pydantic/pydantic/blob/f59e929c999e8b2efc7b12fd0bc1685c1a186be3/.github/workflows/ci.yml
2
3
  # MIT License, see author list by link
3
4
 
4
5
  name: CI
@@ -11,6 +12,9 @@ on:
11
12
  - "**"
12
13
  pull_request: {}
13
14
 
15
+ env:
16
+ UV_FROZEN: true
17
+
14
18
  permissions: {}
15
19
 
16
20
  jobs:
@@ -94,6 +98,43 @@ jobs:
94
98
 
95
99
  - run: pytest
96
100
 
101
+ test-pyemscripten:
102
+ name: test ${{ matrix.python-version }} PyEmscripten
103
+ needs: [build-pyemscripten]
104
+ runs-on: ubuntu-latest
105
+ strategy:
106
+ fail-fast: false
107
+ matrix:
108
+ include:
109
+ - python-version: "3.14"
110
+ pylock-suffix: "314"
111
+
112
+ steps:
113
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
114
+ with:
115
+ persist-credentials: false
116
+
117
+ - name: install uv
118
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
119
+ with:
120
+ python-version: ${{ matrix.python-version }}
121
+ enable-cache: true # zizmor: ignore[cache-poisoning] -- Job does not produce release artifacts and does not have sensitive permissions
122
+
123
+ - name: get dist artifacts
124
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
125
+ with:
126
+ name: python_calamine_pypi_files_pyemscripten_${{ matrix.python-version }}
127
+ path: dist
128
+
129
+ - run: |
130
+ uv sync --only-group pyodide-build
131
+ uv run pyodide venv .venv-pyodide
132
+ source .venv-pyodide/bin/activate
133
+ python -m pip install --upgrade pip>=26.1.1
134
+ python -m pip install -r .github/pyodide/pylock.${{ matrix.pylock-suffix }}.toml
135
+ python -m pip install python-calamine --no-index --no-deps --find-links dist
136
+ python -m pytest
137
+
97
138
  lint:
98
139
  permissions:
99
140
  contents: read
@@ -138,7 +179,7 @@ jobs:
138
179
  # https://github.com/marketplace/actions/alls-green#why used for branch protection checks
139
180
  check:
140
181
  if: always()
141
- needs: [test, lint]
182
+ needs: [test, test-pyemscripten, lint]
142
183
  runs-on: ubuntu-latest
143
184
  steps:
144
185
  - name: Decide whether the needed jobs succeeded or failed
@@ -252,11 +293,63 @@ jobs:
252
293
 
253
294
  - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
254
295
  with:
255
- name: wheels-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux || 'auto' }}
296
+ name: python_calamine_pypi_files_${{ matrix.os }}_${{ matrix.target }}_${{ matrix.manylinux || 'auto' }}
297
+ path: dist
298
+
299
+ build-pyemscripten:
300
+ name: build PyEmscripten (${{ matrix.python-version }})
301
+ runs-on: ubuntu-latest
302
+ strategy:
303
+ fail-fast: false
304
+ matrix:
305
+ include:
306
+ - python-version: "3.14"
307
+ steps:
308
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
309
+ with:
310
+ persist-credentials: false
311
+
312
+ - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
313
+ with:
314
+ python-version: ${{ matrix.python-version }}
315
+ enable-cache: ${{ !startsWith(github.ref, 'refs/tags/') }} # zizmor: ignore[cache-poisoning]
316
+
317
+ - run: uv sync --only-group pyodide-build
318
+
319
+ - name: Get pyodide config
320
+ id: pyodide-config
321
+ run: |
322
+ echo "rust-toolchain=$(uv run pyodide config get rust_toolchain)" >> "$GITHUB_OUTPUT"
323
+ echo "emscripten-version=$(uv run pyodide config get emscripten_version)" >> "$GITHUB_OUTPUT"
324
+ echo "pyodide-abi-version=$(uv run pyodide config get pyodide_abi_version)" >> "$GITHUB_OUTPUT"
325
+ echo "rustflags=$(uv run pyodide config get rustflags)" >> "$GITHUB_OUTPUT"
326
+
327
+ - uses: emscripten-core/setup-emsdk@4528d102f7230f0e7b276855c01ea1159be0e984 # v16
328
+ with:
329
+ version: ${{ steps.pyodide-config.outputs.emscripten-version }}
330
+ no-cache: ${{ startsWith(github.ref, 'refs/tags/') }}
331
+
332
+ - name: Build wheels
333
+ uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
334
+ # Unclear how to avoid manually specifying this yet (https://github.com/PyO3/maturin/issues/3189):
335
+ env:
336
+ CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUSTFLAGS: ${{ steps.pyodide-config.outputs.rustflags }}
337
+ MATURIN_PYEMSCRIPTEN_PLATFORM_VERSION: ${{ steps.pyodide-config.outputs.pyodide-abi-version }}
338
+ with:
339
+ target: wasm32-unknown-emscripten
340
+ args: --release --out dist --interpreter ${{ matrix.python-version }}
341
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} # zizmor: ignore[cache-poisoning]
342
+ rust-toolchain: ${{ steps.pyodide-config.outputs.rust-toolchain }}
343
+
344
+ - run: ls -lh dist/
345
+
346
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
347
+ with:
348
+ name: python_calamine_pypi_files_pyemscripten_${{ matrix.python-version }}
256
349
  path: dist
257
350
 
258
351
  release:
259
- needs: [build, check]
352
+ needs: [build, build-pyemscripten, check]
260
353
  if: success() && startsWith(github.ref, 'refs/tags/')
261
354
 
262
355
  runs-on: ubuntu-latest
@@ -273,14 +366,14 @@ jobs:
273
366
  uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
274
367
  with:
275
368
  path: dist
276
- pattern: wheels-*
369
+ pattern: python_calamine_pypi_files_*
277
370
  merge-multiple: true
278
371
 
279
372
  - name: Publish package distributions to PyPI
280
373
  uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1.14
281
374
 
282
375
  gh-release:
283
- needs: [build, check]
376
+ needs: [build, build-pyemscripten, check]
284
377
  if: success() && startsWith(github.ref, 'refs/tags/')
285
378
 
286
379
  runs-on: ubuntu-latest
@@ -293,7 +386,7 @@ jobs:
293
386
  uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
294
387
  with:
295
388
  path: dist
296
- pattern: wheels-*
389
+ pattern: python_calamine_pypi_files_*
297
390
  merge-multiple: true
298
391
 
299
392
  - name: Upload to GitHub
@@ -373,7 +373,7 @@ dependencies = [
373
373
 
374
374
  [[package]]
375
375
  name = "python-calamine"
376
- version = "0.8.0"
376
+ version = "0.8.2"
377
377
  dependencies = [
378
378
  "calamine",
379
379
  "chrono",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "python-calamine"
3
- version = "0.8.0"
3
+ version = "0.8.2"
4
4
  edition = "2021"
5
5
  readme = "README.md"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-calamine
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -24,6 +24,7 @@ dev = [
24
24
  "pytest~=9.0",
25
25
  "pandas[excel]>=2.2",
26
26
  ]
27
+ pyodide-build = ["pyodide-build"]
27
28
 
28
29
  [project.urls]
29
30
  homepage = "https://github.com/dimastbk/python-calamine"