Name | vacheck JSON |
Version |
0.0.3
JSON |
| download |
home_page | None |
Summary | Verbal autopsy data consistency checks (from InterVA algorithm). |
upload_time | 2024-04-03 16:37:13 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | GPLv3 |
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"
}