spector


Namespector JSON
Version 1.4 PyPI version JSON
download
home_page
SummarySparse vectors.
upload_time2023-10-06 00:17:14
maintainer
docs_urlNone
author
requires_python>=3.9
licenseCopyright 2022 Aric Coady Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
keywords sparse array vector matrix numpy scipy
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![image](https://img.shields.io/pypi/v/spector.svg)](https://pypi.org/project/spector/)
[![image](https://img.shields.io/pypi/pyversions/spector.svg)](https://python3statement.org)
[![image](https://pepy.tech/badge/spector)](https://pepy.tech/project/spector)
![image](https://img.shields.io/pypi/status/spector.svg)
[![image](https://github.com/coady/spector/workflows/build/badge.svg)](https://github.com/coady/spector/actions)
[![image](https://codecov.io/gh/coady/spector/branch/main/graph/badge.svg)](https://codecov.io/gh/coady/spector/)
 [![image](https://github.com/coady/spector/workflows/codeql/badge.svg)](https://github.com/coady/spector/security/code-scanning)
[![image](https://img.shields.io/badge/code%20style-black-000000.svg)](https://pypi.org/project/black/)
[![image](https://mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)

Sparse vectors optimized for memory and [NumPy](https://www.numpy.org) integrations.

`numpy` handles densely populated n-dimemsional arrays. `scipy.sparse` handles sparsely populated 2-dimensional arrays, i.e., matrices. What's missing from the ecosystem is sparsely populated 1-dimensional arrays, i.e., vectors.

NumPy | Python | Spector
----- | ------ | -------
1-dim bool `numpy.array` | `set[int]` | `spector.indices`
1-dim float `numpy.array` | `dict[int, float]` | `spector.vector`
`scipy.sparse.dok_matrix` | `dict[int, dict[int, float]]` | `spector.matrix`

Indices and vectors are implemented in [Cython](https://cython.org) as hash sets and maps. All native operations are optimized and release the [GIL](https://docs.python.org/3/glossary.html#term-global-interpreter-lock).

* conversion between sparse `numpy` arrays
* conversion between dense `numpy` arrays
* binary set operations
* binary math operations
* `map`, `filter`, and `reduce` operations with `numpy` universal functions

## Usage
### indices
A sparse boolean array with a set interface.

```python
>>> from spector import indices
>>> ind = indices([0, 2])
>>> ind
indices([2 0])
>>> 1 in ind
False
>>> ind.add(1)
True
>>> ind.todense()
array([ True,  True,  True])
>>> ind.fromdense(_)
indices([2 1 0])
```

### vector
A sparse float array with a mapping interface.

```python
>>> from spector import vector
>>> vec = vector({0: 1.0, 2: 2.0, 4: 1.0})
>>> vec
vector([4 2 0], [1. 2. 1.])
>>> vec[2] += 1.0
>>> vec[2]
3.0
>>> vec.todense()
array([1., 0., 3., 0., 1.])
>>> vector.fromdense(_)
vector([4 2 0], [1. 3. 1.])
>>> vec.sum()
5.0
>>> vec + vec
vector([0 2 4], [2. 6. 2.])
```

Vectors support math operations with scalars, and with vectors if the set method is unambiguous.

vector operation | set method | ufunc
---------------- | ---------- | -----
`+` | union | add
`*` | intersection | multiply
`-` | | subtract
`/` | | true_divide
`**` | | power
`\|` | union | max
`&` | intersection | min
`^` | symmetric_difference |
`difference` | difference |

### matrix
A mapping of keys to vectors.

```python
>>> from spector import matrix
>>> mat = matrix({0: {1: 2.0}})
>>> mat
matrix(<class 'spector.vector.vector'>, {0: vector([1], [2.])})
>>> mat.row, mat.col, mat.data
(array([0]), array([1]), array([2.]))
```

## Installation
```console
% pip install spector
```

## Tests
100% branch coverage.

```console
% pytest [--cov]
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "spector",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "sparse,array,vector,matrix,numpy,scipy",
    "author": "",
    "author_email": "Aric Coady <aric.coady@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/7c/83/380278e51ec55ed04c830bcc5fa0788af4630559c41cdba08d288045bf1d/spector-1.4.tar.gz",
    "platform": null,
    "description": "[![image](https://img.shields.io/pypi/v/spector.svg)](https://pypi.org/project/spector/)\n[![image](https://img.shields.io/pypi/pyversions/spector.svg)](https://python3statement.org)\n[![image](https://pepy.tech/badge/spector)](https://pepy.tech/project/spector)\n![image](https://img.shields.io/pypi/status/spector.svg)\n[![image](https://github.com/coady/spector/workflows/build/badge.svg)](https://github.com/coady/spector/actions)\n[![image](https://codecov.io/gh/coady/spector/branch/main/graph/badge.svg)](https://codecov.io/gh/coady/spector/)\n [![image](https://github.com/coady/spector/workflows/codeql/badge.svg)](https://github.com/coady/spector/security/code-scanning)\n[![image](https://img.shields.io/badge/code%20style-black-000000.svg)](https://pypi.org/project/black/)\n[![image](https://mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)\n\nSparse vectors optimized for memory and [NumPy](https://www.numpy.org) integrations.\n\n`numpy` handles densely populated n-dimemsional arrays. `scipy.sparse` handles sparsely populated 2-dimensional arrays, i.e., matrices. What's missing from the ecosystem is sparsely populated 1-dimensional arrays, i.e., vectors.\n\nNumPy | Python | Spector\n----- | ------ | -------\n1-dim bool `numpy.array` | `set[int]` | `spector.indices`\n1-dim float `numpy.array` | `dict[int, float]` | `spector.vector`\n`scipy.sparse.dok_matrix` | `dict[int, dict[int, float]]` | `spector.matrix`\n\nIndices and vectors are implemented in [Cython](https://cython.org) as hash sets and maps. All native operations are optimized and release the [GIL](https://docs.python.org/3/glossary.html#term-global-interpreter-lock).\n\n* conversion between sparse `numpy` arrays\n* conversion between dense `numpy` arrays\n* binary set operations\n* binary math operations\n* `map`, `filter`, and `reduce` operations with `numpy` universal functions\n\n## Usage\n### indices\nA sparse boolean array with a set interface.\n\n```python\n>>> from spector import indices\n>>> ind = indices([0, 2])\n>>> ind\nindices([2 0])\n>>> 1 in ind\nFalse\n>>> ind.add(1)\nTrue\n>>> ind.todense()\narray([ True,  True,  True])\n>>> ind.fromdense(_)\nindices([2 1 0])\n```\n\n### vector\nA sparse float array with a mapping interface.\n\n```python\n>>> from spector import vector\n>>> vec = vector({0: 1.0, 2: 2.0, 4: 1.0})\n>>> vec\nvector([4 2 0], [1. 2. 1.])\n>>> vec[2] += 1.0\n>>> vec[2]\n3.0\n>>> vec.todense()\narray([1., 0., 3., 0., 1.])\n>>> vector.fromdense(_)\nvector([4 2 0], [1. 3. 1.])\n>>> vec.sum()\n5.0\n>>> vec + vec\nvector([0 2 4], [2. 6. 2.])\n```\n\nVectors support math operations with scalars, and with vectors if the set method is unambiguous.\n\nvector operation | set method | ufunc\n---------------- | ---------- | -----\n`+` | union | add\n`*` | intersection | multiply\n`-` | | subtract\n`/` | | true_divide\n`**` | | power\n`\\|` | union | max\n`&` | intersection | min\n`^` | symmetric_difference |\n`difference` | difference |\n\n### matrix\nA mapping of keys to vectors.\n\n```python\n>>> from spector import matrix\n>>> mat = matrix({0: {1: 2.0}})\n>>> mat\nmatrix(<class 'spector.vector.vector'>, {0: vector([1], [2.])})\n>>> mat.row, mat.col, mat.data\n(array([0]), array([1]), array([2.]))\n```\n\n## Installation\n```console\n% pip install spector\n```\n\n## Tests\n100% branch coverage.\n\n```console\n% pytest [--cov]\n```\n",
    "bugtrack_url": null,
    "license": "Copyright 2022 Aric Coady  Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ",
    "summary": "Sparse vectors.",
    "version": "1.4",
    "project_urls": {
        "Changelog": "https://github.com/coady/spector/blob/main/CHANGELOG.md",
        "Documentation": "https://coady.github.io/spector",
        "Homepage": "https://github.com/coady/spector",
        "Issues": "https://github.com/coady/spector/issues"
    },
    "split_keywords": [
        "sparse",
        "array",
        "vector",
        "matrix",
        "numpy",
        "scipy"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a2dcba83a4c35cb31b5d80810caed05bfb80026c8037836d1ef7e0736ce9ad23",
                "md5": "6ca5125ff6534335a2fc4aec9f79cba5",
                "sha256": "545f168d63e29518e7d67aad572b79c8d954a8f58c5868bd230575f8ab9c162d"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6ca5125ff6534335a2fc4aec9f79cba5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 441275,
            "upload_time": "2023-10-06T00:19:37",
            "upload_time_iso_8601": "2023-10-06T00:19:37.092908Z",
            "url": "https://files.pythonhosted.org/packages/a2/dc/ba83a4c35cb31b5d80810caed05bfb80026c8037836d1ef7e0736ce9ad23/spector-1.4-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a7796bd481a77c0bacae38d45287dbff59d43a559ab0bd598fd18f43734c3dc",
                "md5": "a159e516a7a90b4d54e26ec7817b5d7e",
                "sha256": "1dcc21d9db3c0fcc52181f88e66678ac3f2f2d50c1be69e4d11c827eef9dee2c"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "a159e516a7a90b4d54e26ec7817b5d7e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1361669,
            "upload_time": "2023-10-06T00:24:00",
            "upload_time_iso_8601": "2023-10-06T00:24:00.770327Z",
            "url": "https://files.pythonhosted.org/packages/9a/77/96bd481a77c0bacae38d45287dbff59d43a559ab0bd598fd18f43734c3dc/spector-1.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c8e9a004ea6bd8816ed23e9c38cd0ecba7eb23b4dab3f3a95c0871744d4ee13b",
                "md5": "29b5211ed072ee92be128031eeb4ed81",
                "sha256": "59730d0c9816d792fabfccee97c2042e6ed734a9904ca05c65982e6b566cb2c5"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "29b5211ed072ee92be128031eeb4ed81",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1406947,
            "upload_time": "2023-10-06T00:24:02",
            "upload_time_iso_8601": "2023-10-06T00:24:02.893403Z",
            "url": "https://files.pythonhosted.org/packages/c8/e9/a004ea6bd8816ed23e9c38cd0ecba7eb23b4dab3f3a95c0871744d4ee13b/spector-1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "beba1e64343c9c168d830bed023aa0ad7eb22ef157b3419dada8f86b68aa1473",
                "md5": "419762ef43e6af42b8da3dc68ce04ae5",
                "sha256": "c0621a68ccb8793b2157d64ca9efb52bf354d24abd76a6c04250462d1ef87fed"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "419762ef43e6af42b8da3dc68ce04ae5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1921937,
            "upload_time": "2023-10-06T00:24:05",
            "upload_time_iso_8601": "2023-10-06T00:24:05.058356Z",
            "url": "https://files.pythonhosted.org/packages/be/ba/1e64343c9c168d830bed023aa0ad7eb22ef157b3419dada8f86b68aa1473/spector-1.4-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "59ae78fb87e512b16b7c1596d3dcbb857e47d159e2f0a0b86c04fec73c123f75",
                "md5": "bd32a852ad2c4fff2c2a8d56c86f60f5",
                "sha256": "cdab8622edccb5a00e3c3e0fb00107518b31b468bb940bbdf11d285ed86d33e7"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bd32a852ad2c4fff2c2a8d56c86f60f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1912135,
            "upload_time": "2023-10-06T00:24:06",
            "upload_time_iso_8601": "2023-10-06T00:24:06.833856Z",
            "url": "https://files.pythonhosted.org/packages/59/ae/78fb87e512b16b7c1596d3dcbb857e47d159e2f0a0b86c04fec73c123f75/spector-1.4-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e40d595370d15f9f88287df04d08ac66fca31d2da3143d9839984ef0795c4855",
                "md5": "1d91fe68de4d43bb08a0d888bae0e405",
                "sha256": "706339ca830993285e20accffecc386d8c6fd7e2acbb8047246482a24eddb03d"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1d91fe68de4d43bb08a0d888bae0e405",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 441754,
            "upload_time": "2023-10-06T00:19:39",
            "upload_time_iso_8601": "2023-10-06T00:19:39.001701Z",
            "url": "https://files.pythonhosted.org/packages/e4/0d/595370d15f9f88287df04d08ac66fca31d2da3143d9839984ef0795c4855/spector-1.4-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7435a3a5803fc99c534942572a0ab85507e866a95fbaaed7a583b2d50742e2b3",
                "md5": "2648b2a1bd3e4762208adae5baef1629",
                "sha256": "786e072be91c5a69ad54e5e55d9cbe0c19b884a852fd3dec50978ce3a60a763c"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2648b2a1bd3e4762208adae5baef1629",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1415859,
            "upload_time": "2023-10-06T00:24:09",
            "upload_time_iso_8601": "2023-10-06T00:24:09.029226Z",
            "url": "https://files.pythonhosted.org/packages/74/35/a3a5803fc99c534942572a0ab85507e866a95fbaaed7a583b2d50742e2b3/spector-1.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "035fbc5181c8c41d82892a15b2b0e46e915937ed34d868ca6b0679c6276e75d3",
                "md5": "4329df26b3248355ef632d61fda9cd7c",
                "sha256": "0cc8aca96c2d4a036d9cb9950507d296a42da14ac8e1aecfa9ade5b597b9589e"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4329df26b3248355ef632d61fda9cd7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1468925,
            "upload_time": "2023-10-06T00:24:11",
            "upload_time_iso_8601": "2023-10-06T00:24:11.046755Z",
            "url": "https://files.pythonhosted.org/packages/03/5f/bc5181c8c41d82892a15b2b0e46e915937ed34d868ca6b0679c6276e75d3/spector-1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "64e2cb67b74b471c1e8959e1101a1105d48b44f8feed218911b344d2f84bfa8d",
                "md5": "6fe979abeb9b375908dbee16aad27f04",
                "sha256": "97199ef00d5bbd339ae52ca922e9f3d9daf21a33825798d0fd85fbec8b41b56e"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "6fe979abeb9b375908dbee16aad27f04",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1973289,
            "upload_time": "2023-10-06T00:24:13",
            "upload_time_iso_8601": "2023-10-06T00:24:13.335988Z",
            "url": "https://files.pythonhosted.org/packages/64/e2/cb67b74b471c1e8959e1101a1105d48b44f8feed218911b344d2f84bfa8d/spector-1.4-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9bd7dc0b85c4d756bf21a10c698372335a59e38a8e03db33ae7c408ba075296b",
                "md5": "6d944c7a92fb74078d5f2d8407fefb1a",
                "sha256": "04ea4ce003c2f873c403aa76ee096026c3dc0d3e30a1c13c3c39950978742913"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6d944c7a92fb74078d5f2d8407fefb1a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1968860,
            "upload_time": "2023-10-06T00:24:15",
            "upload_time_iso_8601": "2023-10-06T00:24:15.514986Z",
            "url": "https://files.pythonhosted.org/packages/9b/d7/dc0b85c4d756bf21a10c698372335a59e38a8e03db33ae7c408ba075296b/spector-1.4-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f94b5aa43f7e6dc660fc2e059e129ae9fb9d4366c30a775e5ea6c9a96c2d958e",
                "md5": "bc4dc70fa0f57fd84e29cb9e44cdc66f",
                "sha256": "c8c88d1de259103c3e938f463df61166cdc789e2e937dda560d8b91bc898d994"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bc4dc70fa0f57fd84e29cb9e44cdc66f",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 440353,
            "upload_time": "2023-10-06T00:19:40",
            "upload_time_iso_8601": "2023-10-06T00:19:40.847340Z",
            "url": "https://files.pythonhosted.org/packages/f9/4b/5aa43f7e6dc660fc2e059e129ae9fb9d4366c30a775e5ea6c9a96c2d958e/spector-1.4-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25028dace7b75cf9c8f19787cef0dc8f7f0b3d11726670ced20023f3f172874d",
                "md5": "eed063eec629b9a528f73156dd54c072",
                "sha256": "fa8d5a4169e7078644364b0664fb5f5901a61ca7032b955e2577c61e30ec1fa6"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "eed063eec629b9a528f73156dd54c072",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1393918,
            "upload_time": "2023-10-06T00:24:17",
            "upload_time_iso_8601": "2023-10-06T00:24:17.584768Z",
            "url": "https://files.pythonhosted.org/packages/25/02/8dace7b75cf9c8f19787cef0dc8f7f0b3d11726670ced20023f3f172874d/spector-1.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "062bca156d5a6c6a63e4d24f81bfac1d4d078ffa5a9df7ea72b64b139ad1c34d",
                "md5": "352ab17c704499b9397ba0f5790e3da8",
                "sha256": "9097cb045662de3f7f399c11dcaa46ce4c22221e3a2d5e9e762ef1941e87af15"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "352ab17c704499b9397ba0f5790e3da8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1454649,
            "upload_time": "2023-10-06T00:24:19",
            "upload_time_iso_8601": "2023-10-06T00:24:19.937819Z",
            "url": "https://files.pythonhosted.org/packages/06/2b/ca156d5a6c6a63e4d24f81bfac1d4d078ffa5a9df7ea72b64b139ad1c34d/spector-1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d935cd2e5572a24e09b98d2e61a4e337d93e8f374ad2070901b96d40ec61937a",
                "md5": "41b232c827a042e68e282b75db12f9f7",
                "sha256": "995d0049b0b448904961e0bee9caef0c2c655086992f4b35ecc17d507ad2706a"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp312-cp312-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "41b232c827a042e68e282b75db12f9f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1967356,
            "upload_time": "2023-10-06T00:24:21",
            "upload_time_iso_8601": "2023-10-06T00:24:21.525591Z",
            "url": "https://files.pythonhosted.org/packages/d9/35/cd2e5572a24e09b98d2e61a4e337d93e8f374ad2070901b96d40ec61937a/spector-1.4-cp312-cp312-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "957a9b50cec3859a4cd82b030695598ed10b8d812773d5b058737311fcdd94e8",
                "md5": "ebebfc069207892794ef14f9cf4937a5",
                "sha256": "88a156efc19949270596c210d3725b9919b62d07382baefa5e1eccb12ff21f3b"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ebebfc069207892794ef14f9cf4937a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1977955,
            "upload_time": "2023-10-06T00:24:23",
            "upload_time_iso_8601": "2023-10-06T00:24:23.964245Z",
            "url": "https://files.pythonhosted.org/packages/95/7a/9b50cec3859a4cd82b030695598ed10b8d812773d5b058737311fcdd94e8/spector-1.4-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3223553639ce33861fb091a246b0a0bceeee6203f9e31af2da8382ff20a28c2",
                "md5": "290005e1bdd4a109f546d7e62dddb29e",
                "sha256": "5d4d6fb553097dec8250ad7e38a9ed874877933cfb7f53ccd5c29f177a3179bf"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "290005e1bdd4a109f546d7e62dddb29e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 441460,
            "upload_time": "2023-10-06T00:19:42",
            "upload_time_iso_8601": "2023-10-06T00:19:42.691702Z",
            "url": "https://files.pythonhosted.org/packages/c3/22/3553639ce33861fb091a246b0a0bceeee6203f9e31af2da8382ff20a28c2/spector-1.4-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1404c9296eda2c4399a3411beb99243bb9913b68314330636f7ace9e3d22a947",
                "md5": "88d9fd483d755ed4e39e689b1cd2e1c1",
                "sha256": "9634fd3fc6965b2a1da263765fdd3055af0eb3c6f3f3c8c8a50aa01e7576c9c5"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "88d9fd483d755ed4e39e689b1cd2e1c1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1360821,
            "upload_time": "2023-10-06T00:24:25",
            "upload_time_iso_8601": "2023-10-06T00:24:25.756106Z",
            "url": "https://files.pythonhosted.org/packages/14/04/c9296eda2c4399a3411beb99243bb9913b68314330636f7ace9e3d22a947/spector-1.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53c7cffe19eaa54ea85e4105c56c47ee380141d01092efe08ba26b095ce43499",
                "md5": "93e4bb36f7aac9a53929b5b9889a9b84",
                "sha256": "4720142a1365945258101cdfd260defe07d287278f5a8d5f80cdf43c560c7826"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "93e4bb36f7aac9a53929b5b9889a9b84",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1409506,
            "upload_time": "2023-10-06T00:24:27",
            "upload_time_iso_8601": "2023-10-06T00:24:27.842853Z",
            "url": "https://files.pythonhosted.org/packages/53/c7/cffe19eaa54ea85e4105c56c47ee380141d01092efe08ba26b095ce43499/spector-1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5ef864c485e10adb985864cc66bf982c3bb6b87501a608a97357d95984627e68",
                "md5": "6c4556d26b4fccf4bc0d85b1969df8a5",
                "sha256": "a8abebf384f8ea31e3cc9c940ab653e169f335a26d87552f54542ddec41cd37d"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "6c4556d26b4fccf4bc0d85b1969df8a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1921026,
            "upload_time": "2023-10-06T00:24:29",
            "upload_time_iso_8601": "2023-10-06T00:24:29.429273Z",
            "url": "https://files.pythonhosted.org/packages/5e/f8/64c485e10adb985864cc66bf982c3bb6b87501a608a97357d95984627e68/spector-1.4-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ccdc4b80003754a62ed3e78172bf9a68f2bf3c57b6d86ec1903a665620c08887",
                "md5": "290baec04da1a782b62f8ecea5347ae0",
                "sha256": "caabb5722af72b2cb959888952e183c257d3af42ce2ab3eae08aa8e56411d9bd"
            },
            "downloads": -1,
            "filename": "spector-1.4-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "290baec04da1a782b62f8ecea5347ae0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1913678,
            "upload_time": "2023-10-06T00:24:30",
            "upload_time_iso_8601": "2023-10-06T00:24:30.891046Z",
            "url": "https://files.pythonhosted.org/packages/cc/dc/4b80003754a62ed3e78172bf9a68f2bf3c57b6d86ec1903a665620c08887/spector-1.4-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c83380278e51ec55ed04c830bcc5fa0788af4630559c41cdba08d288045bf1d",
                "md5": "19eae4ff32f402f2d8a2980dc5c1de73",
                "sha256": "a6c43b268cb2f3c1842b80ca24db78fc3320d953859f44d5c208662bf2286765"
            },
            "downloads": -1,
            "filename": "spector-1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "19eae4ff32f402f2d8a2980dc5c1de73",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 239895,
            "upload_time": "2023-10-06T00:17:14",
            "upload_time_iso_8601": "2023-10-06T00:17:14.677331Z",
            "url": "https://files.pythonhosted.org/packages/7c/83/380278e51ec55ed04c830bcc5fa0788af4630559c41cdba08d288045bf1d/spector-1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-06 00:17:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "coady",
    "github_project": "spector",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "spector"
}
        
Elapsed time: 0.12003s