vacheck


Namevacheck JSON
Version 0.0.3 PyPI version JSON
download
home_pageNone
SummaryVerbal autopsy data consistency checks (from InterVA algorithm).
upload_time2024-04-03 16:37:13
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPLv3
keywords verbal autopsy
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # vacheck

[![image](https://img.shields.io/pypi/pyversions/vacheck)](https://pypi.org/project/vacheck/)
[![pytest](https://github.com/verbal-autopsy-software/vacheck/actions/workflows/python-package.yml/badge.svg)](https://github.com/verbal-autopsy-software/vacheck/actions)

Data consistency checks for verbal autopsy (VA) data collected using the WHO 
VA instrument.

```python
>>> from vacheck.datacheck5 import datacheck5, get_example_input
>>> input = get_example_input()
>>> input.head
<bound method NDFrame.head of        ID  i004a  i004b  i019a  i019b  i022a  i022b  i022c  i022d  i022e  ...  i450o  i451o  i452o  i453o  i454o  i455o  i456o  i457o  i458o  i459o
0      d1    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
1      d2    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
2      d3    NaN    NaN    1.0    NaN    NaN    1.0    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
3      d4    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
4      d5    NaN    NaN    1.0    NaN    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
..    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...  ...    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...
195  d196    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
196  d197    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
197  d198    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
198  d199    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
199  d200    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0

[200 rows x 354 columns]>
>>> pb = get_probbase()
>>> checked_input = datacheck5(va_input=input.iloc[0], va_id=input.at[0, "ID"], probbase=pb)
>>> checked_input.get("output")
ID        d1
i004a    NaN
i004b    NaN
i019a    1.0
i019b    NaN
        ... 
i455o      0
i456o      0
i457o      0
i458o      0
i459o      0
Name: 0, Length: 354, dtype: object
>>> checked_input.get("first_pass")[0]
'd1   W610104-o (ever cry) only required for neonates - cleared in working information'
>>> checked_input.get("second_pass")
[]
>>> # run checks on entire DataFrame (takes a few seconds for 200 records)
>>> check_all = input.apply(lambda x: datacheck5(x, x.ID, probbase=pb)["output"], axis=1)
>>> check_all
       ID  i004a  i004b  i019a  i019b  i022a  i022b  i022c  i022d  i022e  ...  i450o  i451o  i452o  i453o  i454o  i455o  i456o  i457o  i458o  i459o
0      d1    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
1      d2    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
2      d3    NaN    NaN    1.0    NaN    NaN    1.0    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
3      d4    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
4      d5    NaN    NaN    1.0    NaN    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
..    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...  ...    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...
195  d196    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0
196  d197    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
197  d198    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
198  d199    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0
199  d200    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0

[200 rows x 354 columns]
```

# Details

With the development of the [**InterVA** algorithm](http://www.byass.uk/interva/), 
several data consistency checks were designed to ensure that indicators and 
symptoms do not indicate conflicting information (e.g., male and pregnant).  
For example, the following are inconsistent:

* *ageInDays*: 10 days
* *How long did (s)he have a cough*: 4 weeks

The data checks try to reconcile inconsistencies like these.  In the original 
software the data checks were defined in **probbase.xls** 
(the symptom-cause-information matrix with the conditional probabilities of 
each symptom given a cause -- see below for more information on the SCI,
and the [InterVA User's Guide](http://www.byass.uk/interva/)).  

Each type of consistency check is performed for each VA record, and then the 
process is repeated a second time.

Before the consistency checks are run, any VA record with missing information
on age or sex are removed -- these indicators are necessary for running the
InterVA and InSilicoVA algorithms.

## How each data check is performed

There are 3 types of data consistency checks

1. **Don't ask**
    * **Necessary Conditions** (for inconsistency)
        + both symptoms have non-missing values
        + index symptom == (Y or N) value in `subst` probbase column 
        + symptom in the `dontaskX` probbase column == last character
        (Y or N) in that cell <br> (`dontaskX` ranges from `dontask1` to
        `dontask8`)
    * **Action**: index symptom is set to missing
    * the log message is "(don't ask symptom) cleared in working information"
   
2. **Ask if**
    * **Necessary Conditions**
      + the index symptom == (Y or N) value in the `subst` probbase
      column (and thus not a missing value)
      + the symptom listed in the `doaskif` probbase column *does not* equal 
      the last character in that cell
    * **Action**: assign the symptom listed in the `doaskif` to the last
    character (Y or N) in that cell (concatenated to the symptom label, 
    e.g., `i022cY`)
    * the log message is "(ask if symptom label) updated in working information"

3. **Neonates only**
   * **Necessary Conditions**
     + index symptom == (Y or N) value in the `subst` probbase column
       (and thus index symptom does not have a missing value)
     + the decedent was NOT a neonate
   * **Action**: assign the index symptom to missing
   * the log message is "(index symptom) only required for neonates - cleared
   in working information"

## probbase

Relevant columns in **probbase.xls**

* **indic** (column A)
* **subst** (column F)
* **dontask1 - dontask8** (columns H - O)
* **doaskif** (column P)
* **nnonly** (column Q)

```python
>>> from vacheck.datacheck5 import get_probbase
>>> probbase = get_probbase(replace_nan=False, replace_qdesc=False)
>>> probbase.iat[0, 2]
'probbase v18 20200403 '
>>> probbase.columns
Index(['indic', 'qdesc', 'sdesc', 'who_2016', 'ilab', 'subst', 'samb',
       'dontask1', 'dontask2', 'dontask3', 'dontask4', 'dontask5', 'dontask6',
       'dontask7', 'dontask8', 'doaskif', 'nnonly', 'a_nrp', 'a_pend_6w',
       'a_preg', 'b_0101', 'b_0102', 'b_0103', 'b_0104', 'b_0105', 'b_0106',
       'b_0107', 'b_0108', 'b_0109', 'b_0110', 'b_0111', 'b_0112', 'b_0199',
       'b_0201', 'b_0202', 'b_0203', 'b_0204', 'b_0205', 'b_0299', 'b_0301',
       'b_0302', 'b_0303', 'b_0401', 'b_0402', 'b_0403', 'b_0499', 'b_0501',
       'b_0502', 'b_0601', 'b_0602', 'b_0701', 'b_0801', 'b_0901', 'b_0902',
       'b_0903', 'b_0904', 'b_0905', 'b_0906', 'b_0907', 'b_0908', 'b_0999',
       'b_1001', 'b_1002', 'b_1003', 'b_1004', 'b_1006', 'b_1099', 'b_1101',
       'b_1102', 'b_1201', 'b_1202', 'b_1203', 'b_1204', 'b_1205', 'b_1206',
       'b_1207', 'b_1208', 'b_1209', 'b_1210', 'b_1299', 'b_9800', 'c_cult',
       'c_emer', 'c_hsys', 'c_inev', 'c_know', 'c_resr'],
      dtype='object')
>>> probbase[["indic", "subst", "dontask1", "dontask8", "doaskif", "nnonly"]]
     indic subst dontask1 dontask8 doaskif nnonly
1    prior   NaN      NaN      NaN     NaN    NaN
2    i004a     Y   i004bY      NaN     NaN    NaN
3    i004b     Y   i004aY      NaN     NaN    NaN
4    i019a     Y   i019bY      NaN     NaN    NaN
5    i019b     Y   i019aY      NaN     NaN    NaN
..     ...   ...      ...      ...     ...    ...
350  i455o     Y      NaN      NaN     NaN    NaN
351  i456o     Y      NaN      NaN     NaN    NaN
352  i457o     Y      NaN      NaN     NaN    NaN
353  i458o     N      NaN      NaN     NaN    NaN
354  i459o     Y      NaN      NaN     NaN    NaN

[354 rows x 6 columns]
```


## Examples

* *Don't ask*
  + Log message: "4 W610059-o (married) value inconsistent with W610022-a (65+) - 
  cleared in working information"
  + VA record ID is 4
  + `i059o` - Was she married at the time of death? (with `subst == Y`)
  + `i022a` - Was s(he) aged 65 years or more at death?
  + `dontask6` - `i022aY` (don't ask item for index symptom `i059o` if
  `i022a == Y`)
  + **action**: `i059a` is changed (in the working copy of the data) from
  Y to missing

* Ask If
  + Log message: "7 W610152-o (fev nsw) not flagged in category W610147-o 
  (fever) - updated in working information"
  + VA record ID is 7
  + `i152o` - Did (s)he have night sweats? (with `subst == Y`)
  + `i147o` - During the illness that led to death, did (s)he have a fever?
  + `doaskif` - do ask `i152o` if `i147o == Y`
  + **action** `i147o` is changed from missing to Y

* Neonates only
  + Log message: "103075 W610394-a (born 1st pr) only required for neonates -
  cleared in working information"
  + VA record ID is 103075
  + `i394a` - Was this baby born from the mother's first pregnancy?
  + VA record was not a neonatal death
  + **action** `i394a` is set to missing

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "vacheck",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Jason Thomas <jarathomas@gmail.com>",
    "keywords": "verbal autopsy",
    "author": null,
    "author_email": "Jason Thomas <jarathomas@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/e2/12/6b652250214c4e5d738a1becc1c8e9778dfc3fe2179d1b1d6252f8e7ccab/vacheck-0.0.3.tar.gz",
    "platform": null,
    "description": "# vacheck\n\n[![image](https://img.shields.io/pypi/pyversions/vacheck)](https://pypi.org/project/vacheck/)\n[![pytest](https://github.com/verbal-autopsy-software/vacheck/actions/workflows/python-package.yml/badge.svg)](https://github.com/verbal-autopsy-software/vacheck/actions)\n\nData consistency checks for verbal autopsy (VA) data collected using the WHO \nVA instrument.\n\n```python\n>>> from vacheck.datacheck5 import datacheck5, get_example_input\n>>> input = get_example_input()\n>>> input.head\n<bound method NDFrame.head of        ID  i004a  i004b  i019a  i019b  i022a  i022b  i022c  i022d  i022e  ...  i450o  i451o  i452o  i453o  i454o  i455o  i456o  i457o  i458o  i459o\n0      d1    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n1      d2    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n2      d3    NaN    NaN    1.0    NaN    NaN    1.0    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n3      d4    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n4      d5    NaN    NaN    1.0    NaN    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n..    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...  ...    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...\n195  d196    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n196  d197    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n197  d198    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n198  d199    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n199  d200    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n\n[200 rows x 354 columns]>\n>>> pb = get_probbase()\n>>> checked_input = datacheck5(va_input=input.iloc[0], va_id=input.at[0, \"ID\"], probbase=pb)\n>>> checked_input.get(\"output\")\nID        d1\ni004a    NaN\ni004b    NaN\ni019a    1.0\ni019b    NaN\n        ... \ni455o      0\ni456o      0\ni457o      0\ni458o      0\ni459o      0\nName: 0, Length: 354, dtype: object\n>>> checked_input.get(\"first_pass\")[0]\n'd1   W610104-o (ever cry) only required for neonates - cleared in working information'\n>>> checked_input.get(\"second_pass\")\n[]\n>>> # run checks on entire DataFrame (takes a few seconds for 200 records)\n>>> check_all = input.apply(lambda x: datacheck5(x, x.ID, probbase=pb)[\"output\"], axis=1)\n>>> check_all\n       ID  i004a  i004b  i019a  i019b  i022a  i022b  i022c  i022d  i022e  ...  i450o  i451o  i452o  i453o  i454o  i455o  i456o  i457o  i458o  i459o\n0      d1    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n1      d2    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n2      d3    NaN    NaN    1.0    NaN    NaN    1.0    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n3      d4    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n4      d5    NaN    NaN    1.0    NaN    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n..    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...  ...    ...    ...    ...    ...    ...    ...    ...    ...    ...    ...\n195  d196    NaN    NaN    NaN    1.0    NaN    NaN    1.0      0      0  ...      0      0      0      0      0      0      0      0      0      0\n196  d197    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n197  d198    NaN    NaN    1.0    NaN    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n198  d199    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n199  d200    NaN    NaN    NaN    1.0    1.0    NaN    NaN      0      0  ...      0      0      0      0      0      0      0      0      0      0\n\n[200 rows x 354 columns]\n```\n\n# Details\n\nWith the development of the [**InterVA** algorithm](http://www.byass.uk/interva/), \nseveral data consistency checks were designed to ensure that indicators and \nsymptoms do not indicate conflicting information (e.g., male and pregnant).  \nFor example, the following are inconsistent:\n\n* *ageInDays*: 10 days\n* *How long did (s)he have a cough*: 4 weeks\n\nThe data checks try to reconcile inconsistencies like these.  In the original \nsoftware the data checks were defined in **probbase.xls** \n(the symptom-cause-information matrix with the conditional probabilities of \neach symptom given a cause -- see below for more information on the SCI,\nand the [InterVA User's Guide](http://www.byass.uk/interva/)).  \n\nEach type of consistency check is performed for each VA record, and then the \nprocess is repeated a second time.\n\nBefore the consistency checks are run, any VA record with missing information\non age or sex are removed -- these indicators are necessary for running the\nInterVA and InSilicoVA algorithms.\n\n## How each data check is performed\n\nThere are 3 types of data consistency checks\n\n1. **Don't ask**\n    * **Necessary Conditions** (for inconsistency)\n        + both symptoms have non-missing values\n        + index symptom == (Y or N) value in `subst` probbase column \n        + symptom in the `dontaskX` probbase column == last character\n        (Y or N) in that cell <br> (`dontaskX` ranges from `dontask1` to\n        `dontask8`)\n    * **Action**: index symptom is set to missing\n    * the log message is \"(don't ask symptom) cleared in working information\"\n   \n2. **Ask if**\n    * **Necessary Conditions**\n      + the index symptom == (Y or N) value in the `subst` probbase\n      column (and thus not a missing value)\n      + the symptom listed in the `doaskif` probbase column *does not* equal \n      the last character in that cell\n    * **Action**: assign the symptom listed in the `doaskif` to the last\n    character (Y or N) in that cell (concatenated to the symptom label, \n    e.g., `i022cY`)\n    * the log message is \"(ask if symptom label) updated in working information\"\n\n3. **Neonates only**\n   * **Necessary Conditions**\n     + index symptom == (Y or N) value in the `subst` probbase column\n       (and thus index symptom does not have a missing value)\n     + the decedent was NOT a neonate\n   * **Action**: assign the index symptom to missing\n   * the log message is \"(index symptom) only required for neonates - cleared\n   in working information\"\n\n## probbase\n\nRelevant columns in **probbase.xls**\n\n* **indic** (column A)\n* **subst** (column F)\n* **dontask1 - dontask8** (columns H - O)\n* **doaskif** (column P)\n* **nnonly** (column Q)\n\n```python\n>>> from vacheck.datacheck5 import get_probbase\n>>> probbase = get_probbase(replace_nan=False, replace_qdesc=False)\n>>> probbase.iat[0, 2]\n'probbase v18 20200403 '\n>>> probbase.columns\nIndex(['indic', 'qdesc', 'sdesc', 'who_2016', 'ilab', 'subst', 'samb',\n       'dontask1', 'dontask2', 'dontask3', 'dontask4', 'dontask5', 'dontask6',\n       'dontask7', 'dontask8', 'doaskif', 'nnonly', 'a_nrp', 'a_pend_6w',\n       'a_preg', 'b_0101', 'b_0102', 'b_0103', 'b_0104', 'b_0105', 'b_0106',\n       'b_0107', 'b_0108', 'b_0109', 'b_0110', 'b_0111', 'b_0112', 'b_0199',\n       'b_0201', 'b_0202', 'b_0203', 'b_0204', 'b_0205', 'b_0299', 'b_0301',\n       'b_0302', 'b_0303', 'b_0401', 'b_0402', 'b_0403', 'b_0499', 'b_0501',\n       'b_0502', 'b_0601', 'b_0602', 'b_0701', 'b_0801', 'b_0901', 'b_0902',\n       'b_0903', 'b_0904', 'b_0905', 'b_0906', 'b_0907', 'b_0908', 'b_0999',\n       'b_1001', 'b_1002', 'b_1003', 'b_1004', 'b_1006', 'b_1099', 'b_1101',\n       'b_1102', 'b_1201', 'b_1202', 'b_1203', 'b_1204', 'b_1205', 'b_1206',\n       'b_1207', 'b_1208', 'b_1209', 'b_1210', 'b_1299', 'b_9800', 'c_cult',\n       'c_emer', 'c_hsys', 'c_inev', 'c_know', 'c_resr'],\n      dtype='object')\n>>> probbase[[\"indic\", \"subst\", \"dontask1\", \"dontask8\", \"doaskif\", \"nnonly\"]]\n     indic subst dontask1 dontask8 doaskif nnonly\n1    prior   NaN      NaN      NaN     NaN    NaN\n2    i004a     Y   i004bY      NaN     NaN    NaN\n3    i004b     Y   i004aY      NaN     NaN    NaN\n4    i019a     Y   i019bY      NaN     NaN    NaN\n5    i019b     Y   i019aY      NaN     NaN    NaN\n..     ...   ...      ...      ...     ...    ...\n350  i455o     Y      NaN      NaN     NaN    NaN\n351  i456o     Y      NaN      NaN     NaN    NaN\n352  i457o     Y      NaN      NaN     NaN    NaN\n353  i458o     N      NaN      NaN     NaN    NaN\n354  i459o     Y      NaN      NaN     NaN    NaN\n\n[354 rows x 6 columns]\n```\n\n\n## Examples\n\n* *Don't ask*\n  + Log message: \"4 W610059-o (married) value inconsistent with W610022-a (65+) - \n  cleared in working information\"\n  + VA record ID is 4\n  + `i059o` - Was she married at the time of death? (with `subst == Y`)\n  + `i022a` - Was s(he) aged 65 years or more at death?\n  + `dontask6` - `i022aY` (don't ask item for index symptom `i059o` if\n  `i022a == Y`)\n  + **action**: `i059a` is changed (in the working copy of the data) from\n  Y to missing\n\n* Ask If\n  + Log message: \"7 W610152-o (fev nsw) not flagged in category W610147-o \n  (fever) - updated in working information\"\n  + VA record ID is 7\n  + `i152o` - Did (s)he have night sweats? (with `subst == Y`)\n  + `i147o` - During the illness that led to death, did (s)he have a fever?\n  + `doaskif` - do ask `i152o` if `i147o == Y`\n  + **action** `i147o` is changed from missing to Y\n\n* Neonates only\n  + Log message: \"103075 W610394-a (born 1st pr) only required for neonates -\n  cleared in working information\"\n  + VA record ID is 103075\n  + `i394a` - Was this baby born from the mother's first pregnancy?\n  + VA record was not a neonatal death\n  + **action** `i394a` is set to missing\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Verbal autopsy data consistency checks (from InterVA algorithm).",
    "version": "0.0.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/verbal-autopsy-software/vacheck/issues",
        "Homepage": "https://github.com/verbal-autopsy-software/vacheck"
    },
    "split_keywords": [
        "verbal",
        "autopsy"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "566d2cc38f2d5d1c1b2ed157e3ae258b898fa3beff869f5580494cc035b482f5",
                "md5": "4af9cbab81a7f3074b2f3b1f28d501f9",
                "sha256": "a8f5445b6a2027310db69f6bf8773980c50c0528262a602faf56ad7f48435735"
            },
            "downloads": -1,
            "filename": "vacheck-0.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4af9cbab81a7f3074b2f3b1f28d501f9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 49968,
            "upload_time": "2024-04-03T16:37:12",
            "upload_time_iso_8601": "2024-04-03T16:37:12.466736Z",
            "url": "https://files.pythonhosted.org/packages/56/6d/2cc38f2d5d1c1b2ed157e3ae258b898fa3beff869f5580494cc035b482f5/vacheck-0.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e2126b652250214c4e5d738a1becc1c8e9778dfc3fe2179d1b1d6252f8e7ccab",
                "md5": "18bcfd7df12220ad6345f87a1a972d5d",
                "sha256": "bdf4e9683051b0ff21ca7b7bfa940744d2ae7fb17b2d39885fe042479e03900d"
            },
            "downloads": -1,
            "filename": "vacheck-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "18bcfd7df12220ad6345f87a1a972d5d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 52203,
            "upload_time": "2024-04-03T16:37:13",
            "upload_time_iso_8601": "2024-04-03T16:37:13.643363Z",
            "url": "https://files.pythonhosted.org/packages/e2/12/6b652250214c4e5d738a1becc1c8e9778dfc3fe2179d1b1d6252f8e7ccab/vacheck-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-03 16:37:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "verbal-autopsy-software",
    "github_project": "vacheck",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "vacheck"
}
        
Elapsed time: 0.21405s