tabmat 4.2.0__tar.gz → 4.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 (124) hide show
  1. {tabmat-4.2.0 → tabmat-4.3.0}/.github/dependabot.yml +2 -0
  2. {tabmat-4.2.0 → tabmat-4.3.0}/.github/workflows/build-wheels.yml +11 -11
  3. {tabmat-4.2.0 → tabmat-4.3.0}/.github/workflows/ci.yml +7 -6
  4. {tabmat-4.2.0 → tabmat-4.3.0}/.github/workflows/daily.yml +5 -5
  5. tabmat-4.3.0/.github/workflows/package.yml +62 -0
  6. {tabmat-4.2.0 → tabmat-4.3.0}/.github/workflows/scorecard.yml +4 -4
  7. {tabmat-4.2.0 → tabmat-4.3.0}/CHANGELOG.rst +25 -0
  8. {tabmat-4.2.0/src/tabmat.egg-info → tabmat-4.3.0}/PKG-INFO +1 -1
  9. tabmat-4.3.0/conda.recipe/recipe.yaml +77 -0
  10. {tabmat-4.2.0 → tabmat-4.3.0}/docs/changelog.rst +25 -0
  11. {tabmat-4.2.0 → tabmat-4.3.0}/pixi.lock +17709 -14878
  12. {tabmat-4.2.0 → tabmat-4.3.0}/pixi.toml +11 -8
  13. {tabmat-4.2.0 → tabmat-4.3.0}/pyproject.toml +1 -1
  14. {tabmat-4.2.0 → tabmat-4.3.0}/setup.py +1 -2
  15. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/main.py +2 -2
  16. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/categorical_matrix.py +5 -4
  17. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/constructor.py +7 -5
  18. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/categorical.cpp +13513 -9282
  19. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/categorical.pyx +2 -2
  20. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/dense.cpp +12518 -9077
  21. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/sparse.cpp +17708 -11477
  22. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/split.cpp +13896 -9965
  23. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/split.pyx +12 -12
  24. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/formula.py +3 -0
  25. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/split_matrix.py +1 -1
  26. {tabmat-4.2.0 → tabmat-4.3.0/src/tabmat.egg-info}/PKG-INFO +1 -1
  27. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat.egg-info/SOURCES.txt +6 -4
  28. tabmat-4.3.0/src/tabmat.egg-info/scm_file_list.json +108 -0
  29. tabmat-4.3.0/src/tabmat.egg-info/scm_version.json +8 -0
  30. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_benchmark_cli.py +24 -0
  31. tabmat-4.3.0/tests/test_big_categorical_matrix.py +149 -0
  32. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_formula.py +27 -0
  33. tabmat-4.2.0/.github/workflows/conda-build.yml +0 -64
  34. tabmat-4.2.0/conda.recipe/meta.yaml +0 -68
  35. tabmat-4.2.0/tests/test_transpose_matvec.py +0 -24
  36. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_64_python3.10.____cpython.yaml +0 -0
  37. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_64_python3.11.____cpython.yaml +0 -0
  38. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_64_python3.12.____cpython.yaml +0 -0
  39. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_64_python3.13.____cp313.yaml +0 -0
  40. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_aarch64_python3.10.____cpython.yaml +0 -0
  41. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_aarch64_python3.11.____cpython.yaml +0 -0
  42. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_aarch64_python3.12.____cpython.yaml +0 -0
  43. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/linux_aarch64_python3.13.____cp313.yaml +0 -0
  44. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_64_python3.10.____cpython.yaml +0 -0
  45. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_64_python3.11.____cpython.yaml +0 -0
  46. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_64_python3.12.____cpython.yaml +0 -0
  47. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_64_python3.13.____cp313.yaml +0 -0
  48. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_arm64_python3.10.____cpython.yaml +0 -0
  49. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_arm64_python3.11.____cpython.yaml +0 -0
  50. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_arm64_python3.12.____cpython.yaml +0 -0
  51. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/osx_arm64_python3.13.____cp313.yaml +0 -0
  52. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/win_64_python3.10.____cpython.yaml +0 -0
  53. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/win_64_python3.11.____cpython.yaml +0 -0
  54. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/win_64_python3.12.____cpython.yaml +0 -0
  55. {tabmat-4.2.0 → tabmat-4.3.0}/.ci_support/win_64_python3.13.____cp313.yaml +0 -0
  56. {tabmat-4.2.0 → tabmat-4.3.0}/.gitattributes +0 -0
  57. {tabmat-4.2.0 → tabmat-4.3.0}/.github/CODEOWNERS +0 -0
  58. {tabmat-4.2.0 → tabmat-4.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  59. {tabmat-4.2.0 → tabmat-4.3.0}/.github/ISSUE_TEMPLATE/issue-template.md +0 -0
  60. {tabmat-4.2.0 → tabmat-4.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  61. {tabmat-4.2.0 → tabmat-4.3.0}/.gitignore +0 -0
  62. {tabmat-4.2.0 → tabmat-4.3.0}/.pre-commit-config.yaml +0 -0
  63. {tabmat-4.2.0 → tabmat-4.3.0}/.readthedocs.yml +0 -0
  64. {tabmat-4.2.0 → tabmat-4.3.0}/CONTRIBUTING.md +0 -0
  65. {tabmat-4.2.0 → tabmat-4.3.0}/LICENSE +0 -0
  66. {tabmat-4.2.0 → tabmat-4.3.0}/README.md +0 -0
  67. {tabmat-4.2.0 → tabmat-4.3.0}/SECURITY.md +0 -0
  68. {tabmat-4.2.0 → tabmat-4.3.0}/build_and_launch +0 -0
  69. {tabmat-4.2.0 → tabmat-4.3.0}/docs/Makefile +0 -0
  70. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/.gitignore +0 -0
  71. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/dense_bench.png +0 -0
  72. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/dense_cat_bench.png +0 -0
  73. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/headline.png +0 -0
  74. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/one_cat_bench.png +0 -0
  75. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/sparse_bench.png +0 -0
  76. {tabmat-4.2.0 → tabmat-4.3.0}/docs/_static/two_cat_bench.png +0 -0
  77. {tabmat-4.2.0 → tabmat-4.3.0}/docs/api.rst +0 -0
  78. {tabmat-4.2.0 → tabmat-4.3.0}/docs/benchmarks.rst +0 -0
  79. {tabmat-4.2.0 → tabmat-4.3.0}/docs/conf.py +0 -0
  80. {tabmat-4.2.0 → tabmat-4.3.0}/docs/dev +0 -0
  81. {tabmat-4.2.0 → tabmat-4.3.0}/docs/index.rst +0 -0
  82. {tabmat-4.2.0 → tabmat-4.3.0}/docs/make.bat +0 -0
  83. {tabmat-4.2.0 → tabmat-4.3.0}/images/intermediate_data_sandwich.png +0 -0
  84. {tabmat-4.2.0 → tabmat-4.3.0}/images/narrow_data_sandwich.png +0 -0
  85. {tabmat-4.2.0 → tabmat-4.3.0}/images/wide_data_sandwich.png +0 -0
  86. {tabmat-4.2.0 → tabmat-4.3.0}/pytest.ini +0 -0
  87. {tabmat-4.2.0 → tabmat-4.3.0}/setup.cfg +0 -0
  88. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/__init__.py +0 -0
  89. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/.gitignore +0 -0
  90. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/__init__.py +0 -0
  91. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/data/.gitignore +0 -0
  92. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/generate_matrices.py +0 -0
  93. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/memory_tools.py +0 -0
  94. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/benchmark/visualize_benchmarks.py +0 -0
  95. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/constructor_util.py +0 -0
  96. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/dense_matrix.py +0 -0
  97. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/.gitignore +0 -0
  98. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/__init__.py +0 -0
  99. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/alloc.h +0 -0
  100. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/cat_split_helpers-tmpl.cpp +0 -0
  101. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/cat_split_helpers.cpp +0 -0
  102. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/dense.pyx +0 -0
  103. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/dense_helpers-tmpl.cpp +0 -0
  104. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/dense_helpers.cpp +0 -0
  105. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/sparse.pyx +0 -0
  106. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/sparse_helpers-tmpl.cpp +0 -0
  107. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/ext/sparse_helpers.cpp +0 -0
  108. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/matrix_base.py +0 -0
  109. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/sparse_matrix.py +0 -0
  110. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/standardized_mat.py +0 -0
  111. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat/util.py +0 -0
  112. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat.egg-info/dependency_links.txt +0 -0
  113. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat.egg-info/not-zip-safe +0 -0
  114. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat.egg-info/requires.txt +0 -0
  115. {tabmat-4.2.0 → tabmat-4.3.0}/src/tabmat.egg-info/top_level.txt +0 -0
  116. {tabmat-4.2.0 → tabmat-4.3.0}/tests/real_matrix.pkl +0 -0
  117. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_categorical_matrix.py +0 -0
  118. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_constructor.py +0 -0
  119. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_fast_sandwich.py +0 -0
  120. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_matrices.py +0 -0
  121. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_mkl_sparse_matrix.py +0 -0
  122. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_real_matrix.py +0 -0
  123. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_split_matrix.py +0 -0
  124. {tabmat-4.2.0 → tabmat-4.3.0}/tests/test_standardized_mat.py +0 -0
@@ -10,3 +10,5 @@ updates:
10
10
  gh-actions:
11
11
  patterns:
12
12
  - "*"
13
+ cooldown:
14
+ default-days: 7
@@ -20,12 +20,12 @@ jobs:
20
20
  os: [ubuntu-22.04, ubuntu-22.04-arm, windows-2022, macos-15, macos-15-intel]
21
21
 
22
22
  steps:
23
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
23
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24
24
  - name: Set up micromamba
25
- uses: mamba-org/setup-micromamba@add3a49764cedee8ee24e82dfde87f5bc2914462
25
+ uses: mamba-org/setup-micromamba@f457c30a868e4760d3a6fcea5f25dc655b8edf39
26
26
  - name: Build wheels
27
- uses: pypa/cibuildwheel@63fd63b352a9a8bdcc24791c9dbee952ee9a8abc # v3.3.0
28
- - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
27
+ uses: pypa/cibuildwheel@e090b81e30c4d855ea63bf4b6e59204c09a101ae # v4.2.1
28
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
29
29
  with:
30
30
  name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
31
31
  path: ./wheelhouse/*.whl
@@ -34,8 +34,8 @@ jobs:
34
34
  name: Build source distribution
35
35
  runs-on: ubuntu-latest
36
36
  steps:
37
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
38
- - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
37
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
38
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
39
39
  name: Install Python
40
40
  with:
41
41
  python-version: '3.10'
@@ -43,7 +43,7 @@ jobs:
43
43
  run: python -m pip install setuptools setuptools-scm wheel mako numpy 'Cython!=3.0.4'
44
44
  - name: Build sdist
45
45
  run: python setup.py sdist
46
- - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
46
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
47
47
  with:
48
48
  path: dist/*.tar.gz
49
49
 
@@ -57,11 +57,11 @@ jobs:
57
57
  permissions:
58
58
  id-token: write
59
59
  steps:
60
- - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
60
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
61
61
  with:
62
62
  merge-multiple: true
63
63
  path: dist
64
- - uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
64
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
65
65
  with:
66
66
  repository-url: https://test.pypi.org/legacy/
67
67
 
@@ -75,8 +75,8 @@ jobs:
75
75
  permissions:
76
76
  id-token: write
77
77
  steps:
78
- - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
78
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
79
79
  with:
80
80
  merge-multiple: true
81
81
  path: dist
82
- - uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
82
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -19,9 +19,9 @@ jobs:
19
19
  runs-on: ubuntu-latest
20
20
  steps:
21
21
  - name: Checkout branch
22
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
22
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
  - name: Set up pixi
24
- uses: prefix-dev/setup-pixi@82d477f15f3a381dbcc8adc1206ce643fe110fb7 # v0.9.3
24
+ uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
25
25
  with:
26
26
  environments: lint default
27
27
  - name: pre-commit
@@ -40,15 +40,16 @@ jobs:
40
40
  - { os: ubuntu-latest, environment: 'py311' }
41
41
  - { os: ubuntu-latest, environment: 'py312' }
42
42
  - { os: ubuntu-latest, environment: 'py313' }
43
- - { os: windows-latest, environment: 'py313' }
44
- - { os: macos-latest, environment: 'py313' }
43
+ - { os: ubuntu-latest, environment: 'py314' }
44
+ - { os: windows-latest, environment: 'py314' }
45
+ - { os: macos-latest, environment: 'py314' }
45
46
  - { os: ubuntu-latest, environment: 'oldies' }
46
47
  - { os: ubuntu-latest, environment: 'nightly' }
47
48
  steps:
48
49
  - name: Checkout branch
49
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
50
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
51
  - name: Set up pixi
51
- uses: prefix-dev/setup-pixi@82d477f15f3a381dbcc8adc1206ce643fe110fb7 # v0.9.3
52
+ uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
52
53
  with:
53
54
  environments: ${{ matrix.environment }}
54
55
  - name: Update dependencies
@@ -19,13 +19,13 @@ jobs:
19
19
  include:
20
20
  - environment: 'nightly'
21
21
  NOTE: 'Nightly Builds' # run once with nightlies
22
- - environment: 'py313'
23
- NOTE: 'Python 3.13' # run once with normal dependencies
22
+ - environment: 'py314'
23
+ NOTE: 'Python 3.14' # run once with normal dependencies
24
24
  steps:
25
25
  - name: Checkout branch
26
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
26
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
27
27
  - name: Set up pixi
28
- uses: prefix-dev/setup-pixi@82d477f15f3a381dbcc8adc1206ce643fe110fb7 # v0.9.3
28
+ uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
29
29
  with:
30
30
  environments: ${{ matrix.environment }}
31
31
  - name: Update dependencies
@@ -48,7 +48,7 @@ jobs:
48
48
  pixi run --manifest-path ../tabmat/pixi.toml -e ${{ matrix.environment }} python -m doctest -v README.md
49
49
 
50
50
  - name: Issue on failure
51
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
51
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
52
52
  if: ${{ failure() && github.ref == 'refs/heads/main' }}
53
53
  with:
54
54
  script: |
@@ -0,0 +1,62 @@
1
+ name: conda-build
2
+ on:
3
+ # We would like to trigger for CI for any pull request action -
4
+ # both from QuantCo's branches as well as forks.
5
+ pull_request:
6
+ # In addition to pull requests, we want to run CI for pushes
7
+ # to the main branch and tags.
8
+ push:
9
+ branches:
10
+ - "main"
11
+ tags:
12
+ - "*"
13
+ paths:
14
+ - ".github/**"
15
+ - "conda.recipe/**"
16
+
17
+ jobs:
18
+ build:
19
+ name: ${{ matrix['variant-file'] }}
20
+ runs-on: ${{ matrix.os }}
21
+ env:
22
+ CI: True
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ include:
27
+ - { variant-file: linux_64_python3.10.____cpython, target-platform: linux-64, os: ubuntu-latest, rattler-build-args: '' }
28
+ - { variant-file: linux_64_python3.13.____cp313, target-platform: linux-64, os: ubuntu-latest, rattler-build-args: '' }
29
+ - { variant-file: osx_64_python3.10.____cpython, target-platform: osx-64, os: macos-15-intel, rattler-build-args: '' }
30
+ - { variant-file: osx_arm64_python3.10.____cpython, target-platform: osx-arm64, os: macos-latest, rattler-build-args: '' }
31
+ - { variant-file: osx_arm64_python3.13.____cp313, target-platform: osx-arm64, os: macos-latest, rattler-build-args: '' }
32
+ - { variant-file: win_64_python3.10.____cpython, target-platform: win-64, os: windows-2022, rattler-build-args: '' }
33
+ - { variant-file: win_64_python3.13.____cp313, target-platform: win-64, os: windows-2022, rattler-build-args: '' }
34
+
35
+ steps:
36
+ - name: Checkout branch
37
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
38
+ with:
39
+ fetch-depth: 0
40
+ - name: Get git metadata
41
+ id: git-metadata
42
+ shell: bash
43
+ run: |
44
+ if [ -f .git/shallow ]; then
45
+ git fetch --prune --unshallow
46
+ fi
47
+ GIT_DESCRIBE_TAG="$(git describe --tags --abbrev=0 || echo UNKNOWN)"
48
+ echo GIT_DESCRIBE_TAG=${GIT_DESCRIBE_TAG} >> $GITHUB_OUTPUT
49
+ GIT_DESCRIBE_HASH=g"$(git rev-parse --short HEAD || echo UNKNOWN)"
50
+ echo GIT_DESCRIBE_HASH=${GIT_DESCRIBE_HASH} >> $GITHUB_OUTPUT
51
+ GIT_DESCRIBE_NUMBER="$(git rev-list --count ${GIT_DESCRIBE_TAG}..HEAD || echo UNKNOWN)"
52
+ echo GIT_DESCRIBE_NUMBER=$GIT_DESCRIBE_NUMBER >> $GITHUB_OUTPUT
53
+
54
+ - uses: prefix-dev/rattler-build-action@1ca5f45832f419a46d1326ccc5861d7e14d67c44 # v0.2.39
55
+ with:
56
+ recipe-path: conda.recipe/recipe.yaml
57
+ build-args: -m .ci_support/${{ matrix['variant-file'] }}.yaml --target-platform ${{ matrix['target-platform'] }} ${{ matrix['rattler-build-args'] }}
58
+ artifact-name: package-${{ matrix['variant-file'] }}
59
+ env:
60
+ GIT_DESCRIBE_TAG: ${{ steps.git-metadata.outputs.GIT_DESCRIBE_TAG }}
61
+ GIT_DESCRIBE_HASH: ${{ steps.git-metadata.outputs.GIT_DESCRIBE_HASH }}
62
+ GIT_DESCRIBE_NUMBER: ${{ steps.git-metadata.outputs.GIT_DESCRIBE_NUMBER }}
@@ -35,12 +35,12 @@ jobs:
35
35
 
36
36
  steps:
37
37
  - name: "Checkout code"
38
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
38
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
39
39
  with:
40
40
  persist-credentials: false
41
41
 
42
42
  - name: "Run analysis"
43
- uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
43
+ uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
44
44
  with:
45
45
  results_file: results.sarif
46
46
  results_format: sarif
@@ -65,7 +65,7 @@ jobs:
65
65
  # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
66
66
  # format to the repository Actions tab.
67
67
  - name: "Upload artifact"
68
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
68
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
69
69
  with:
70
70
  name: SARIF file
71
71
  path: results.sarif
@@ -74,6 +74,6 @@ jobs:
74
74
  # Upload the results to GitHub's code scanning dashboard (optional).
75
75
  # Commenting out will disable upload of results to your repo's Code Scanning dashboard
76
76
  - name: "Upload to code-scanning"
77
- uses: github/codeql-action/upload-sarif@80cb6b56b93de3e779c7d476d9100d06fb87c877 # v3.28.15
77
+ uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
78
78
  with:
79
79
  sarif_file: results.sarif
@@ -7,6 +7,31 @@
7
7
  Changelog
8
8
  =========
9
9
 
10
+ 4.3.0 - 2026-10-30
11
+ ------------------
12
+
13
+ **New feature:**
14
+
15
+ - Numerical factors now record formulaic's ``spans_intercept`` in the model spec's ``encoder_state``. For example, this shows whether ``bs()`` dropped its first basis function.
16
+
17
+ **Bug fixes:**
18
+
19
+ - Fixed compatibility with polars 2.0, which removed ``Series.cat.get_categories()``.
20
+
21
+ **Other changes:**
22
+
23
+ - Clarified that ``sparse_threshold`` is used to sparsify numerical columns and is not used to densify columns that are already sparse.
24
+ - Fixed the benchmark harness silently recording zero timings and memory under pandas 3, where the chained assignment it used is rejected by copy-on-write.
25
+ - We disabled fast math to avoid invalid results (e.g., when dividing by zero).
26
+
27
+
28
+ 4.2.1 - 2026-02-04
29
+ ------------------
30
+
31
+ **Bug fixes:**
32
+
33
+ - Fixed methods `_cross_categorical`, `_cross_sandwich`, `multiply`, `tocsr` of `CategoricalMatrix` and function `_sandwich_cat_cat_limited_rows_cols` to operate on read-only buffers as well.
34
+
10
35
 
11
36
  4.2.0 - 2026-01-13
12
37
  ------------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tabmat
3
- Version: 4.2.0
3
+ Version: 4.3.0
4
4
  Summary: Efficient matrix representations for working with tabular data.
5
5
  Home-page: https://github.com/Quantco/tabmat
6
6
  Author: QuantCo, Inc.
@@ -0,0 +1,77 @@
1
+ context:
2
+ name: tabmat
3
+ version: ${{ env.get('GIT_DESCRIBE_TAG') | trim('v') }}${{ ('.post' + env.get('GIT_DESCRIBE_NUMBER') + '+' + env.get('GIT_DESCRIBE_HASH')) if env.get('GIT_DESCRIBE_NUMBER', default='0') != '0' }}
4
+
5
+ package:
6
+ name: tabmat
7
+ version: ${{ version }}
8
+
9
+ source:
10
+ path: ../
11
+ use_gitignore: false
12
+
13
+ build:
14
+ number: 0
15
+ script: python -m pip install . -vv
16
+
17
+ requirements:
18
+ build:
19
+ - if: build_platform != target_platform
20
+ then:
21
+ - python
22
+ - cross-python_${{ target_platform }}
23
+ - cython !=3.0.4
24
+ - numpy
25
+ - ${{ compiler("c") }}
26
+ - ${{ stdlib("c") }}
27
+ - ${{ compiler("cxx") }}
28
+ - if: osx
29
+ then:
30
+ - llvm-openmp
31
+ - if: linux
32
+ then:
33
+ - libgomp
34
+ host:
35
+ - python
36
+ - cython !=3.0.4
37
+ - if: not win
38
+ then:
39
+ - jemalloc-local
40
+ - if: osx
41
+ then:
42
+ - llvm-openmp
43
+ - mako
44
+ - numpy
45
+ - pip
46
+ - setuptools-scm
47
+ - xsimd <11|>12.1
48
+ run:
49
+ - python
50
+ - ${{ pin_compatible('numpy') }}
51
+ - formulaic >=1.2
52
+ - scipy
53
+ - narwhals >=2
54
+
55
+ tests:
56
+ - python:
57
+ pip_check: true
58
+ imports:
59
+ - tabmat
60
+
61
+ about:
62
+ homepage: https://github.com/Quantco/tabmat
63
+ license: BSD-3-Clause
64
+ license_file: LICENSE
65
+ summary: Efficient matrix representations for working with tabular data
66
+ description: |
67
+ tabmat provides efficient tools for representing tabular data as a mix of
68
+ dense, sparse and categorical subcomponents, resulting in 100x faster
69
+ performance on some machine learning problems!
70
+ documentation: https://tabmat.readthedocs.io/
71
+ repository: https://github.com/Quantco/tabmat
72
+
73
+ extra:
74
+ recipe-maintainers:
75
+ - MarcAntoineSchmidtQC
76
+ - xhochy
77
+ - tbenthompson
@@ -7,6 +7,31 @@
7
7
  Changelog
8
8
  =========
9
9
 
10
+ 4.3.0 - 2026-10-30
11
+ ------------------
12
+
13
+ **New feature:**
14
+
15
+ - Numerical factors now record formulaic's ``spans_intercept`` in the model spec's ``encoder_state``. For example, this shows whether ``bs()`` dropped its first basis function.
16
+
17
+ **Bug fixes:**
18
+
19
+ - Fixed compatibility with polars 2.0, which removed ``Series.cat.get_categories()``.
20
+
21
+ **Other changes:**
22
+
23
+ - Clarified that ``sparse_threshold`` is used to sparsify numerical columns and is not used to densify columns that are already sparse.
24
+ - Fixed the benchmark harness silently recording zero timings and memory under pandas 3, where the chained assignment it used is rejected by copy-on-write.
25
+ - We disabled fast math to avoid invalid results (e.g., when dividing by zero).
26
+
27
+
28
+ 4.2.1 - 2026-02-04
29
+ ------------------
30
+
31
+ **Bug fixes:**
32
+
33
+ - Fixed methods `_cross_categorical`, `_cross_sandwich`, `multiply`, `tocsr` of `CategoricalMatrix` and function `_sandwich_cat_cat_limited_rows_cols` to operate on read-only buffers as well.
34
+
10
35
 
11
36
  4.2.0 - 2026-01-13
12
37
  ------------------