Name | glum JSON |
Version |
3.1.1
JSON |
| download |
home_page | https://github.com/Quantco/glum |
Summary | High performance Python GLMs with all the features! |
upload_time | 2025-01-13 16:13:20 |
maintainer | None |
docs_url | None |
author | QuantCo, Inc. |
requires_python | >=3.9 |
license | BSD |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# glum
[](https://github.com/Quantco/glum/actions)
[](https://github.com/Quantco/glum/actions/workflows/daily.yml)
[](https://glum.readthedocs.io/)
[](https://anaconda.org/conda-forge/glum)
[](https://pypi.org/project/glum)
[](https://pypi.org/project/glum)
[Documentation](https://glum.readthedocs.io/en/latest/)
Generalized linear models (GLM) are a core statistical tool that include many common methods like least-squares regression, Poisson regression and logistic regression as special cases. At QuantCo, we have used GLMs in e-commerce pricing, insurance claims prediction and more. We have developed `glum`, a fast Python-first GLM library. The development was based on [a fork of scikit-learn](https://github.com/scikit-learn/scikit-learn/pull/9405), so it has a scikit-learn-like API. We are thankful for the starting point provided by Christian Lorentzen in that PR!
The goal of `glum` is to be at least as feature-complete as existing GLM libraries like `glmnet` or `h2o`. It supports
* Built-in cross validation for optimal regularization, efficiently exploiting a “regularization path”
* L1 regularization, which produces sparse and easily interpretable solutions
* L2 regularization, including variable matrix-valued (Tikhonov) penalties, which are useful in modeling correlated effects
* Elastic net regularization
* Normal, Poisson, logistic, gamma, and Tweedie distributions, plus varied and customizable link functions
* Box constraints, linear inequality constraints, sample weights, offsets
This repo also includes tools for benchmarking GLM implementations in the `glum_benchmarks` module. For details on the benchmarking, [see here](src/glum_benchmarks/README.md). Although the performance of `glum` relative to `glmnet` and `h2o` depends on the specific problem, we find that when N >> K (there are more observations than predictors), it is consistently much faster for a wide range of problems.


For more information on `glum`, including tutorials and API reference, please see [the documentation](https://glum.readthedocs.io/en/latest/).
Why did we choose the name `glum`? We wanted a name that had the letters GLM and wasn't easily confused with any existing implementation. And we thought glum sounded like a funny name (and not glum at all!). If you need a more professional sounding name, feel free to pronounce it as G-L-um. Or maybe it stands for "Generalized linear... ummm... modeling?"
# A classic example predicting housing prices
```python
>>> import pandas as pd
>>> from sklearn.datasets import fetch_openml
>>> from glum import GeneralizedLinearRegressor
>>>
>>> # This dataset contains house sale prices for King County, which includes
>>> # Seattle. It includes homes sold between May 2014 and May 2015.
>>> # The full version of this dataset can be found at:
>>> # https://www.openml.org/search?type=data&status=active&id=42092
>>> house_data = pd.read_parquet("data/housing.parquet")
>>>
>>> # Use only select features
>>> X = house_data[
... [
... "bedrooms",
... "bathrooms",
... "sqft_living",
... "floors",
... "waterfront",
... "view",
... "condition",
... "grade",
... "yr_built",
... "yr_renovated",
... ]
... ].copy()
>>>
>>>
>>> # Model whether a house had an above or below median price via a Binomial
>>> # distribution. We'll be doing L1-regularized logistic regression.
>>> price = house_data["price"]
>>> y = (price < price.median()).values.astype(int)
>>> model = GeneralizedLinearRegressor(
... family='binomial',
... l1_ratio=1.0,
... alpha=0.001
... )
>>>
>>> _ = model.fit(X=X, y=y)
>>>
>>> # .report_diagnostics shows details about the steps taken by the iterative solver.
>>> diags = model.get_formatted_diagnostics(full_report=True)
>>> diags[['objective_fct']]
objective_fct
n_iter
0 0.693091
1 0.489500
2 0.449585
3 0.443681
4 0.443498
5 0.443497
>>>
>>> # Models can also be built with formulas from formulaic.
>>> model_formula = GeneralizedLinearRegressor(
... family='binomial',
... l1_ratio=1.0,
... alpha=0.001,
... formula="bedrooms + np.log(bathrooms + 1) + bs(sqft_living, 3) + C(waterfront)"
... )
>>> _ = model_formula.fit(X=house_data, y=y)
```
# Installation
Please install the package through conda-forge:
```bash
conda install glum -c conda-forge
```
# Performance
For optimal performance on an x86_64 architecture, we recommend using the MKL library
(`conda install mkl`). By default, conda usually installs the openblas version, which
is slower, but supported on all major architecture and OS.
Raw data
{
"_id": null,
"home_page": "https://github.com/Quantco/glum",
"name": "glum",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "QuantCo, Inc.",
"author_email": "noreply@quantco.com",
"download_url": "https://files.pythonhosted.org/packages/a0/85/42adfc3030273a5453bd120b254af8d4e9d2b6eb91e39920167497811702/glum-3.1.1.tar.gz",
"platform": null,
"description": "# glum\n\n[](https://github.com/Quantco/glum/actions)\n[](https://github.com/Quantco/glum/actions/workflows/daily.yml)\n[](https://glum.readthedocs.io/)\n[](https://anaconda.org/conda-forge/glum)\n[](https://pypi.org/project/glum)\n[](https://pypi.org/project/glum)\n\n\n[Documentation](https://glum.readthedocs.io/en/latest/)\n\nGeneralized linear models (GLM) are a core statistical tool that include many common methods like least-squares regression, Poisson regression and logistic regression as special cases. At QuantCo, we have used GLMs in e-commerce pricing, insurance claims prediction and more. We have developed `glum`, a fast Python-first GLM library. The development was based on [a fork of scikit-learn](https://github.com/scikit-learn/scikit-learn/pull/9405), so it has a scikit-learn-like API. We are thankful for the starting point provided by Christian Lorentzen in that PR!\n\nThe goal of `glum` is to be at least as feature-complete as existing GLM libraries like `glmnet` or `h2o`. It supports\n\n* Built-in cross validation for optimal regularization, efficiently exploiting a \u201cregularization path\u201d\n* L1 regularization, which produces sparse and easily interpretable solutions\n* L2 regularization, including variable matrix-valued (Tikhonov) penalties, which are useful in modeling correlated effects\n* Elastic net regularization\n* Normal, Poisson, logistic, gamma, and Tweedie distributions, plus varied and customizable link functions\n* Box constraints, linear inequality constraints, sample weights, offsets\n\nThis repo also includes tools for benchmarking GLM implementations in the `glum_benchmarks` module. For details on the benchmarking, [see here](src/glum_benchmarks/README.md). Although the performance of `glum` relative to `glmnet` and `h2o` depends on the specific problem, we find that when N >> K (there are more observations than predictors), it is consistently much faster for a wide range of problems.\n\n\n\n\nFor more information on `glum`, including tutorials and API reference, please see [the documentation](https://glum.readthedocs.io/en/latest/).\n\nWhy did we choose the name `glum`? We wanted a name that had the letters GLM and wasn't easily confused with any existing implementation. And we thought glum sounded like a funny name (and not glum at all!). If you need a more professional sounding name, feel free to pronounce it as G-L-um. Or maybe it stands for \"Generalized linear... ummm... modeling?\"\n\n# A classic example predicting housing prices\n\n```python\n>>> import pandas as pd\n>>> from sklearn.datasets import fetch_openml\n>>> from glum import GeneralizedLinearRegressor\n>>>\n>>> # This dataset contains house sale prices for King County, which includes\n>>> # Seattle. It includes homes sold between May 2014 and May 2015.\n>>> # The full version of this dataset can be found at:\n>>> # https://www.openml.org/search?type=data&status=active&id=42092\n>>> house_data = pd.read_parquet(\"data/housing.parquet\")\n>>>\n>>> # Use only select features\n>>> X = house_data[\n... [\n... \"bedrooms\",\n... \"bathrooms\",\n... \"sqft_living\",\n... \"floors\",\n... \"waterfront\",\n... \"view\",\n... \"condition\",\n... \"grade\",\n... \"yr_built\",\n... \"yr_renovated\",\n... ]\n... ].copy()\n>>>\n>>>\n>>> # Model whether a house had an above or below median price via a Binomial\n>>> # distribution. We'll be doing L1-regularized logistic regression.\n>>> price = house_data[\"price\"]\n>>> y = (price < price.median()).values.astype(int)\n>>> model = GeneralizedLinearRegressor(\n... family='binomial',\n... l1_ratio=1.0,\n... alpha=0.001\n... )\n>>>\n>>> _ = model.fit(X=X, y=y)\n>>>\n>>> # .report_diagnostics shows details about the steps taken by the iterative solver.\n>>> diags = model.get_formatted_diagnostics(full_report=True)\n>>> diags[['objective_fct']]\n objective_fct\nn_iter \n0 0.693091\n1 0.489500\n2 0.449585\n3 0.443681\n4 0.443498\n5 0.443497\n>>>\n>>> # Models can also be built with formulas from formulaic.\n>>> model_formula = GeneralizedLinearRegressor(\n... family='binomial',\n... l1_ratio=1.0,\n... alpha=0.001,\n... formula=\"bedrooms + np.log(bathrooms + 1) + bs(sqft_living, 3) + C(waterfront)\"\n... )\n>>> _ = model_formula.fit(X=house_data, y=y)\n\n```\n\n# Installation\n\nPlease install the package through conda-forge:\n```bash\nconda install glum -c conda-forge\n```\n\n# Performance\n\nFor optimal performance on an x86_64 architecture, we recommend using the MKL library\n(`conda install mkl`). By default, conda usually installs the openblas version, which\nis slower, but supported on all major architecture and OS.\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "High performance Python GLMs with all the features!",
"version": "3.1.1",
"project_urls": {
"Homepage": "https://github.com/Quantco/glum"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "289fdbe7048b89796d39d7116516306e1a6689a25342e170a76b0742a93fb228",
"md5": "adcc53f3c682d244c645e633c26a1d17",
"sha256": "f83f165a47b9adfd398f2ed9bcdccb15271206b56d3cd29970b358accd4501ac"
},
"downloads": -1,
"filename": "glum-3.1.1-cp310-cp310-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "adcc53f3c682d244c645e633c26a1d17",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 953317,
"upload_time": "2025-01-13T16:12:30",
"upload_time_iso_8601": "2025-01-13T16:12:30.356843Z",
"url": "https://files.pythonhosted.org/packages/28/9f/dbe7048b89796d39d7116516306e1a6689a25342e170a76b0742a93fb228/glum-3.1.1-cp310-cp310-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa9b2611eba1f78730f467ef076879dfe317911040ebb02161f0efee61900d8b",
"md5": "e8978aaa1523cf539f0d625b03371062",
"sha256": "2c2f4d8f3e59857abae88cf7d3abd8c65c828400ef662e8ee891c0592ef87595"
},
"downloads": -1,
"filename": "glum-3.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e8978aaa1523cf539f0d625b03371062",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 832559,
"upload_time": "2025-01-13T16:12:32",
"upload_time_iso_8601": "2025-01-13T16:12:32.675754Z",
"url": "https://files.pythonhosted.org/packages/fa/9b/2611eba1f78730f467ef076879dfe317911040ebb02161f0efee61900d8b/glum-3.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7d01a65fca389ac01083db55ae37d67f6ab111d10c5f2d19fd577cf8b9c6ff92",
"md5": "d56414dfcc2d68d0d418a4744e7ef693",
"sha256": "f2ed32bfc75d25ca67e571c1388e833ba70338ceebe90841bd7463b28f9c6f81"
},
"downloads": -1,
"filename": "glum-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d56414dfcc2d68d0d418a4744e7ef693",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 3371284,
"upload_time": "2025-01-13T16:12:34",
"upload_time_iso_8601": "2025-01-13T16:12:34.801530Z",
"url": "https://files.pythonhosted.org/packages/7d/01/a65fca389ac01083db55ae37d67f6ab111d10c5f2d19fd577cf8b9c6ff92/glum-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "33db9c700b5dca7083a88b65aec213057d475d7df45166d599e593831dbcaa0b",
"md5": "2b1dc44568143477d04d0ff461287117",
"sha256": "00330f722180759fd374b9c041e6b4b330a5fd9d5e9ebba37cc653631a2606bb"
},
"downloads": -1,
"filename": "glum-3.1.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "2b1dc44568143477d04d0ff461287117",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 532751,
"upload_time": "2025-01-13T16:12:37",
"upload_time_iso_8601": "2025-01-13T16:12:37.075427Z",
"url": "https://files.pythonhosted.org/packages/33/db/9c700b5dca7083a88b65aec213057d475d7df45166d599e593831dbcaa0b/glum-3.1.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "543dc00f15dd57a944f3a7f43a177759e78adbdadaf9add558e4750213ea412a",
"md5": "601aa2d382571b0ce7571823a177910d",
"sha256": "3faf1d2d037e48a6f8ccb2747d0c041bb8e5f45d0c9f2cd3c8081e76d7e00571"
},
"downloads": -1,
"filename": "glum-3.1.1-cp311-cp311-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "601aa2d382571b0ce7571823a177910d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 942769,
"upload_time": "2025-01-13T16:12:40",
"upload_time_iso_8601": "2025-01-13T16:12:40.486407Z",
"url": "https://files.pythonhosted.org/packages/54/3d/c00f15dd57a944f3a7f43a177759e78adbdadaf9add558e4750213ea412a/glum-3.1.1-cp311-cp311-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d8373f0f0f76322f0f226f0278a31e71e6d1de8e04cea32399845e56e938ba9e",
"md5": "d6fad2f9ea8762de41a66b1f2b9be998",
"sha256": "8ce101c2e74a1b0228c28d0102550446ee3200d336c5226db792b0030540e281"
},
"downloads": -1,
"filename": "glum-3.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d6fad2f9ea8762de41a66b1f2b9be998",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 824061,
"upload_time": "2025-01-13T16:12:42",
"upload_time_iso_8601": "2025-01-13T16:12:42.136019Z",
"url": "https://files.pythonhosted.org/packages/d8/37/3f0f0f76322f0f226f0278a31e71e6d1de8e04cea32399845e56e938ba9e/glum-3.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "125bc00f0d92bf91697dbf0868a7281083ed4ffdcac10a181ab52a7ef555cab2",
"md5": "9d6b80a13ea18d675a16437eea1b8aa6",
"sha256": "4a61ecea8b1197d0a3a1f5a92ceefa8dc88ab0053a38b9c3089b4909836b9ebf"
},
"downloads": -1,
"filename": "glum-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9d6b80a13ea18d675a16437eea1b8aa6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 3582058,
"upload_time": "2025-01-13T16:12:45",
"upload_time_iso_8601": "2025-01-13T16:12:45.182592Z",
"url": "https://files.pythonhosted.org/packages/12/5b/c00f0d92bf91697dbf0868a7281083ed4ffdcac10a181ab52a7ef555cab2/glum-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7da05d4f070561ea6d6f8c8b6809153c160eb292bebe46bd25ec023e9dd5018f",
"md5": "f9282a13b6d379c209e82209f9ff7cf4",
"sha256": "6541ef889fd1adeea3ec542d27cf4ac5bfea3054ed9ba7927af2721f632b6b43"
},
"downloads": -1,
"filename": "glum-3.1.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "f9282a13b6d379c209e82209f9ff7cf4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 532499,
"upload_time": "2025-01-13T16:12:50",
"upload_time_iso_8601": "2025-01-13T16:12:50.381573Z",
"url": "https://files.pythonhosted.org/packages/7d/a0/5d4f070561ea6d6f8c8b6809153c160eb292bebe46bd25ec023e9dd5018f/glum-3.1.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "281507053c290d7487c0a51a1bf07d96ff5bc1a8636a85e457474ae8be537dcf",
"md5": "b03e7a3b14934b7a944fb187e915fa9a",
"sha256": "98218b145d5a0da9ba1fd4bcc410fba545733ee04f25577f7c2ca1a981fa9a12"
},
"downloads": -1,
"filename": "glum-3.1.1-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "b03e7a3b14934b7a944fb187e915fa9a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 1043317,
"upload_time": "2025-01-13T16:12:51",
"upload_time_iso_8601": "2025-01-13T16:12:51.846470Z",
"url": "https://files.pythonhosted.org/packages/28/15/07053c290d7487c0a51a1bf07d96ff5bc1a8636a85e457474ae8be537dcf/glum-3.1.1-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd71e9f6987ac5b40d83ed224dbdcb0a02148b2f4b9b616678926053827f1068",
"md5": "664467cdad2aaf4d8d09f9cb5992e612",
"sha256": "b27f6ba2e33103322dd131a54416e76a14dc19efabdde25d24d5a8d386db7324"
},
"downloads": -1,
"filename": "glum-3.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "664467cdad2aaf4d8d09f9cb5992e612",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 859389,
"upload_time": "2025-01-13T16:12:54",
"upload_time_iso_8601": "2025-01-13T16:12:54.957789Z",
"url": "https://files.pythonhosted.org/packages/cd/71/e9f6987ac5b40d83ed224dbdcb0a02148b2f4b9b616678926053827f1068/glum-3.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "409076006d7f7cdad3ecaa3e33b82aab5707b6770d73f93a685a0db01503abc4",
"md5": "53199873e1dd86498b84d6a5337e2b78",
"sha256": "ecdbbc895c5ec264e96abc378129522171e0c94eb3ed1943772f06485b08cbe8"
},
"downloads": -1,
"filename": "glum-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "53199873e1dd86498b84d6a5337e2b78",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 3417672,
"upload_time": "2025-01-13T16:12:57",
"upload_time_iso_8601": "2025-01-13T16:12:57.721742Z",
"url": "https://files.pythonhosted.org/packages/40/90/76006d7f7cdad3ecaa3e33b82aab5707b6770d73f93a685a0db01503abc4/glum-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "edf5376bcfd3dacc288ca631807680347c45f355c31ac7dc9c4ed2610366be40",
"md5": "3f77e0aea265363033b123a3501ccaf0",
"sha256": "33019188e076d3ce6a9c2b5e5b39dc15ed76904a3572bc4313b09881cf3227d3"
},
"downloads": -1,
"filename": "glum-3.1.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "3f77e0aea265363033b123a3501ccaf0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 541765,
"upload_time": "2025-01-13T16:12:59",
"upload_time_iso_8601": "2025-01-13T16:12:59.895579Z",
"url": "https://files.pythonhosted.org/packages/ed/f5/376bcfd3dacc288ca631807680347c45f355c31ac7dc9c4ed2610366be40/glum-3.1.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "824caff2284861a2754d390942eed4369a0581cdb06a40cfa1f799afb4371294",
"md5": "1332fb6932780c4e6e14cd71d4241caa",
"sha256": "33158c63c2593ccf74e865d47f8db18726d60304699522efaf2ef732165fbb75"
},
"downloads": -1,
"filename": "glum-3.1.1-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "1332fb6932780c4e6e14cd71d4241caa",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 1060055,
"upload_time": "2025-01-13T16:13:02",
"upload_time_iso_8601": "2025-01-13T16:13:02.853553Z",
"url": "https://files.pythonhosted.org/packages/82/4c/aff2284861a2754d390942eed4369a0581cdb06a40cfa1f799afb4371294/glum-3.1.1-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e611535366b4c0402ce4bde13bcb9c06cda097be4f3099687734f8293919dc12",
"md5": "441ee0f61cc8078b599bdf41c835e941",
"sha256": "6e2ec1efe9ab6255cb844568c0308c24ee85950c48a57c427a19f4309f92d620"
},
"downloads": -1,
"filename": "glum-3.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "441ee0f61cc8078b599bdf41c835e941",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 878753,
"upload_time": "2025-01-13T16:13:04",
"upload_time_iso_8601": "2025-01-13T16:13:04.692278Z",
"url": "https://files.pythonhosted.org/packages/e6/11/535366b4c0402ce4bde13bcb9c06cda097be4f3099687734f8293919dc12/glum-3.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b72559316cf881365b040965e312bcb26029f92e78e04c341e4e66665185e899",
"md5": "21aab5e0bb294eba7bbfaebf0230717d",
"sha256": "6a7695f3f0887576876a02fd3dcdc484ff1f913c681ad055ba6f06f8a915627b"
},
"downloads": -1,
"filename": "glum-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "21aab5e0bb294eba7bbfaebf0230717d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 3409870,
"upload_time": "2025-01-13T16:13:07",
"upload_time_iso_8601": "2025-01-13T16:13:07.768870Z",
"url": "https://files.pythonhosted.org/packages/b7/25/59316cf881365b040965e312bcb26029f92e78e04c341e4e66665185e899/glum-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fc00863fcb0dd6c480e899447b4b5bc54b3035ef2281690909a209965913714c",
"md5": "b24c1c842e021d6272cec04553b1b02e",
"sha256": "bb0fbdba43ad1c541647b6ad443b553b06753de10879000b5ff1cc5eb1dd0900"
},
"downloads": -1,
"filename": "glum-3.1.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "b24c1c842e021d6272cec04553b1b02e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 540953,
"upload_time": "2025-01-13T16:13:09",
"upload_time_iso_8601": "2025-01-13T16:13:09.538203Z",
"url": "https://files.pythonhosted.org/packages/fc/00/863fcb0dd6c480e899447b4b5bc54b3035ef2281690909a209965913714c/glum-3.1.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fb285b52995e2df8c866edcb2ec0484ca301d12228ded7e2f67b5f8ed6db0476",
"md5": "c6f198b524293b472cc6378c5b903cab",
"sha256": "f06193f9c85945ce6fdf52292ea1fe718ae9448c76f73642b9689cc0e26b4f9a"
},
"downloads": -1,
"filename": "glum-3.1.1-cp39-cp39-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "c6f198b524293b472cc6378c5b903cab",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 954618,
"upload_time": "2025-01-13T16:13:11",
"upload_time_iso_8601": "2025-01-13T16:13:11.102074Z",
"url": "https://files.pythonhosted.org/packages/fb/28/5b52995e2df8c866edcb2ec0484ca301d12228ded7e2f67b5f8ed6db0476/glum-3.1.1-cp39-cp39-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "570dc80e90b6661d4f84067996913a2915085d890d620710cb248bcd0fa0f416",
"md5": "3bb74009c360556aa5391a919a5140dd",
"sha256": "bbf568f54203f0d268a53a5575468e2095adbb88d3b1573001bdf0ace4add8c1"
},
"downloads": -1,
"filename": "glum-3.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3bb74009c360556aa5391a919a5140dd",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 833560,
"upload_time": "2025-01-13T16:13:12",
"upload_time_iso_8601": "2025-01-13T16:13:12.759748Z",
"url": "https://files.pythonhosted.org/packages/57/0d/c80e90b6661d4f84067996913a2915085d890d620710cb248bcd0fa0f416/glum-3.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c1479209ee928f19c1701be740048f65298d36a62551e04ab1133236978f9564",
"md5": "3440e90024706f7631681dc0daaeb3fc",
"sha256": "fdff7016f57d1835b3b19b07c93667f6cacc6f97e1fe6a0cb74cb741525c1e94"
},
"downloads": -1,
"filename": "glum-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3440e90024706f7631681dc0daaeb3fc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 3377514,
"upload_time": "2025-01-13T16:13:14",
"upload_time_iso_8601": "2025-01-13T16:13:14.424772Z",
"url": "https://files.pythonhosted.org/packages/c1/47/9209ee928f19c1701be740048f65298d36a62551e04ab1133236978f9564/glum-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bd32b2533f0e4786310b87170e340a1c902fe86fc3b9c588d2cce2dadf0a9e2c",
"md5": "259926121ee6f2e68f331e462f106666",
"sha256": "7200680ca3ba795cb3e34e25fae230bb9128292e37c61ae371d87684798f23e8"
},
"downloads": -1,
"filename": "glum-3.1.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "259926121ee6f2e68f331e462f106666",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 533766,
"upload_time": "2025-01-13T16:13:17",
"upload_time_iso_8601": "2025-01-13T16:13:17.619231Z",
"url": "https://files.pythonhosted.org/packages/bd/32/b2533f0e4786310b87170e340a1c902fe86fc3b9c588d2cce2dadf0a9e2c/glum-3.1.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a08542adfc3030273a5453bd120b254af8d4e9d2b6eb91e39920167497811702",
"md5": "a828642ce24df5692f4826c1ddce5729",
"sha256": "0354f792a1467ae295b9f9ec9fe2fb1b4af9ee97c0f72cb5ef2cf785c0cca792"
},
"downloads": -1,
"filename": "glum-3.1.1.tar.gz",
"has_sig": false,
"md5_digest": "a828642ce24df5692f4826c1ddce5729",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13492393,
"upload_time": "2025-01-13T16:13:20",
"upload_time_iso_8601": "2025-01-13T16:13:20.709878Z",
"url": "https://files.pythonhosted.org/packages/a0/85/42adfc3030273a5453bd120b254af8d4e9d2b6eb91e39920167497811702/glum-3.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-13 16:13:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Quantco",
"github_project": "glum",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "glum"
}