esneft-tools


Nameesneft-tools JSON
Version 0.1.4 PyPI version JSON
download
home_page
SummaryUtilities to analyse population and deprivation data.
upload_time2022-12-15 12:40:06
maintainer
docs_urlNone
authorStephen Richer
requires_python>=3.7
licenseMIT License Copyright (c) 2022 NHS England and Improvement Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords esneft_tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ESNEFT Analysis - Diabetes Inequalities

[![status: experimental](https://github.com/GIScience/badges/raw/master/status/experimental.svg)](https://github.com/GIScience/badges#experimental)

## Table of contents

  * [Installation](#installation)
  * [Setup](#setup)
  * [Retrieve Data](#retrieve-public-data)
    * [Download](#download)
    * [Process](#process)
      * [Aggregate By Practice Level](#aggregate-by-practice-level)
      * [Aggregate By LSOA Level](#aggregate-by-lsoa-Level)
  * [Visualise](#visualise)
    * [Practice Map](#practice-map)
    * [LSOA Map](#lsoa-map)
  * [Further Documentation](#additional-documentation)
  * [Contributing](#contributing)
  * [License](#license)
  * [Contact](#contact)


## Installation
Installation is possible via `pip` as shown below.

Unix/macOS
```bash
python3 -m pip install esneft_tools
```

Windows
```bash
py -m pip install esneft_tools
```

#### Install within a Virtual Environment (optional)
<details>
<summary><strong>Unix/macOS</strong></summary>

```bash
python -m venv esneft_tools
source esneft_tools/bin/activate
python3 -m pip install esneft_tools
```
</details>

<details>
<summary><strong>Windows</strong></summary>

```bash
py -m venv esneft_tools
esneft_tools/Scripts/Activate.ps1
py -m pip install esneft_tools
```

If running scripts is disabled on your system then run the following command before activating your environment.

```bash
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
</details>


#### Geospatial Dependencies (optional)
Additional geospatial utilities may be optionally installed as below.
Note these packages have non-trivial dependencies and automatic installation may not work on all systems.

An additional optional dependency, OSMnx, must be installed by the user.
Please refer to the [OSMnx documentation](https://osmnx.readthedocs.io/en/stable/) for further installation instructions.

<details>
<summary><strong>Clear here for code</strong></summary>

Unix/macOS
```bash
python3 -m pip install esneft_tools[geo]
```

Windows
```bash
py -m pip install esneft_tools[geo]
```

</details>


## Setup
The logging level of `esneft_tools` can be set via the `setVerbosity()` function.

```python
import logging
from esneft_tools.utils import setVerbosity
from esneft_tools import download, process, visualise

setVerbosity(logging.INFO)
```

## Retrieve Public Data

### Download

#### From Host
Each of the `esneft_tools.download.getData().fromHost()` functions retrieve a static copy of a particular data set from GitHub.
A local copy of these tables is saved to `./.data-cache/` by default.
Each can be obtained individually but it is recommended to retrieve all data, as below.

```python
# Instantiate data download class.
getData = download.getData(cache='./.data-cache')

# Retrieve all data as dictionary (recommended)
data = getData.fromHost('all')
```

* `all` **(default)**
  * Retrieve all of the below data in dictionary format (**recommended**).
*  `postcodeLSOA`
  * Postcode -> LSOA (2011) lookup Table from [ArcGIS](https://hub.arcgis.com/datasets/ons::national-statistics-postcode-lookup-2021-census-november-2022/about)
*  `imdLSOA`
  * Indices of Deprivation by LSOA in England from [National Statistics (.gov.uk)](https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/845345/File_7_-_All_IoD2019_Scores__Ranks__Deciles_and_Population_Denominators_3.csv/preview)
*  `populationLSOA`
  * LSOA population estimates, by age and sex, from [ONS](https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/lowersuperoutputareamidyearpopulationestimates)
* `ethnicityLSOA`
  * Proportion of ethnicity minorities (non-white) by LSOA from [NOMIS](https://www.nomisweb.co.uk/query/select/getdatasetbytheme.asp?opt=3&theme=&subgrp=)
*  `areaLSOA`
  * Land hectare measures by LSOA from [ArcGIS](https://hub.arcgis.com/datasets/ons::standard-area-measurements-latest-for-2021-statistical-geographies-in-england-and-wales-v2-1/about)
* `gpRegistration`
  * GP registration by LSOA [NHS Digital](https://digital.nhs.uk/data-and-information/publications/statistical/patients-registered-at-a-gp-practice/metadata)
* `gpPractice`
  * GP Practice information from [NHS Digital](https://digital.nhs.uk/services/organisation-data-service/file-downloads/gp-and-gp-practice-related-data)
* `gpStaff`
  * GPs by GP Practices from [NHS Digital](https://digital.nhs.uk/services/organisation-data-service/file-downloads/gp-and-gp-practice-related-data)
* `qof`
  * Quality and Outcomes Framework, 2021-22 from [NHS Digital](https://digital.nhs.uk/data-and-information/publications/statistical/quality-and-outcomes-framework-achievement-prevalence-and-exceptions-data/2021-22)
* `geoLSOA`
  * LSOA GeoJSON from [UK Data Service](https://statistics.ukdataservice.ac.uk/dataset/2011-census-geography-boundaries-lower-layer-super-output-areas-and-data-zones)
* `esneftLSOA`
  * List of LSOAs within ESNEFT trust.
* `esneftOSM`
  * OpenStreetMap (OSM) data for ESNEFT area from [Geofabrik](https://download.geofabrik.de/europe/great-britain/england.html)

#### From Source
Alternatively, the `.fromSource()` method can be used to retrieve each dataset directly from its public source.
By default, `esneft_tools` will retrieve the source data that matches the `fromHost()` methods.
Each source URL can be updated to newer versions by providing a YAML file to `download.getData()` as shown below.
An example of the YAML file is shown [here](./README_files/sourceURL.yaml).

<details>
<summary><strong>Clear here for code</strong></summary>

```python
# Instantiate data download class.
getData = download.getData(sourceURL='sourceURL.yaml', cache='./.data-cache')

# Retrieve a specific dataset from host.
# Note: "all" does not work with .fromSource().
imdLSOA = getData.fromSource('imdLSOA')
```

</details>

### Processing

#### Aggregate by Practice Level
The `getGPsummary` function aggregates the downloaded data to practice level statistics.

```python
GPsummary = process.getGPsummary(**data, iod_cols='IMD')
```

| Field               | Description                                               |
| ---                 | ---                                                       |
| *OrganisationCode*  | Practice Service Code                                     |
| IMD                 | Mean Index of Multiple Deprivation of Registered Patients |
| Patient             | Total Registered Patients                                 |
| QOF-DM              | QOF achievement for Diabetes mellitus (max 76)            |
| DM-prevalance       | Prevalence of Diabetes mellitus                           |
| PCDS                | Postcode                                                  |
| OpenDate            | Opening Date                                              |
| CloseDate           | Closing Date                                              |
| Status              | Service Status (e.g. Active)                              |
| PrescribingSetting  | Service Type (e.g. GP Practice)                           |
| currentStaff        | Current Practitioners                                     |
| departedStaff       | Total Departed Practitioners                              |
| meanStaff           | Average Working Practitioners                             |
| annualStaffTurnover | Mean Annual % Practitioner Turnover                       |
| Lat                 | Latitude of Site                                          |
| Long                | Longitude of Site                                         |
| patientPerGP        | Total Registered Patient per Average Practitioner Count   |
| ESNEFT              | Boolean Flag of Practices within ESNEFT                   |
| Node                | Closest OSM Map Node to Site                              |


#### Aggregate by LSOA Level
The `getLSOAsummary` function aggregates the downloaded data LSOA level statistics.

```python
LSOAsummary = process.getLSOAsummary(**data, iod_cols='IMD')
```

| Field         | Description                               |
| ---           | ---                                       |
| *LSOA11CD*    | LSOA (2011) Code                          |
| LSOA11NM      | LSOA (2011) Name                          |
| Age (median)  | Median Age of Population                  |
| Population    | Population Estimate (2011 Census)         |
| LandHectare   | Land Area (Hectares)                      |
| Patient       | Total Registered GP Patients              |
| IMD           | Index of Multiple Deprivation             |
| IMD (q5)      | Index of Multiple Deprivation (quintiles) |
| DM-prevalance | Prevalence of Diabetes mellitus           |
| Density       | Population Density                        |
| ESNEFT        | Boolean Flag of LSOAs within ESNEFT       |


### Visualise

### Practice Map

```python
fig = visualise.scatterGP(GPsummary[GPsummary['Status'] == 'Active'], minCount=250)
```

![gp-loc](./README_files/GP-locations.png)
 <br> *Map of Practice Distributions within ESNEFT (Plotly Interactive)*


### LSOA Map

```python
fig = visualise.choroplethLSOA(LSOAsummary, data['geoLSOA'], colour='IMD')
```

![gp-loc](./README_files/LSOA-choropleth.png)
 <br> *Choropleth Map of LSOA Domains within ESNEFT coloured by IMD (Plotly Interactive)*


## Further Documentation
Refer to the [additional documentation](./README_files/docs.md) for further examples of functionality.


## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidance.


## License
Distributed under the MIT License. _See [LICENSE](./LICENSE) for more information._


## Contact
If you have any other questions please contact the author, [Stephen Richer](mailto:stephen.richer@proton.me?subject=[GitHub]%20esneft_tools).

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "esneft-tools",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "esneft_tools",
    "author": "Stephen Richer",
    "author_email": "stephen.richer@nhs.net",
    "download_url": "https://files.pythonhosted.org/packages/77/ec/2c5e2fb48c35b872e82ca2aa762f7944294ca15002c3f24fa5047179b3ce/esneft_tools-0.1.4.tar.gz",
    "platform": null,
    "description": "# ESNEFT Analysis - Diabetes Inequalities\n\n[![status: experimental](https://github.com/GIScience/badges/raw/master/status/experimental.svg)](https://github.com/GIScience/badges#experimental)\n\n## Table of contents\n\n  * [Installation](#installation)\n  * [Setup](#setup)\n  * [Retrieve Data](#retrieve-public-data)\n    * [Download](#download)\n    * [Process](#process)\n      * [Aggregate By Practice Level](#aggregate-by-practice-level)\n      * [Aggregate By LSOA Level](#aggregate-by-lsoa-Level)\n  * [Visualise](#visualise)\n    * [Practice Map](#practice-map)\n    * [LSOA Map](#lsoa-map)\n  * [Further Documentation](#additional-documentation)\n  * [Contributing](#contributing)\n  * [License](#license)\n  * [Contact](#contact)\n\n\n## Installation\nInstallation is possible via `pip` as shown below.\n\nUnix/macOS\n```bash\npython3 -m pip install esneft_tools\n```\n\nWindows\n```bash\npy -m pip install esneft_tools\n```\n\n#### Install within a Virtual Environment (optional)\n<details>\n<summary><strong>Unix/macOS</strong></summary>\n\n```bash\npython -m venv esneft_tools\nsource esneft_tools/bin/activate\npython3 -m pip install esneft_tools\n```\n</details>\n\n<details>\n<summary><strong>Windows</strong></summary>\n\n```bash\npy -m venv esneft_tools\nesneft_tools/Scripts/Activate.ps1\npy -m pip install esneft_tools\n```\n\nIf running scripts is disabled on your system then run the following command before activating your environment.\n\n```bash\nSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser\n```\n</details>\n\n\n#### Geospatial Dependencies (optional)\nAdditional geospatial utilities may be optionally installed as below.\nNote these packages have non-trivial dependencies and automatic installation may not work on all systems.\n\nAn additional optional dependency, OSMnx, must be installed by the user.\nPlease refer to the [OSMnx documentation](https://osmnx.readthedocs.io/en/stable/) for further installation instructions.\n\n<details>\n<summary><strong>Clear here for code</strong></summary>\n\nUnix/macOS\n```bash\npython3 -m pip install esneft_tools[geo]\n```\n\nWindows\n```bash\npy -m pip install esneft_tools[geo]\n```\n\n</details>\n\n\n## Setup\nThe logging level of `esneft_tools` can be set via the `setVerbosity()` function.\n\n```python\nimport logging\nfrom esneft_tools.utils import setVerbosity\nfrom esneft_tools import download, process, visualise\n\nsetVerbosity(logging.INFO)\n```\n\n## Retrieve Public Data\n\n### Download\n\n#### From Host\nEach of the `esneft_tools.download.getData().fromHost()` functions retrieve a static copy of a particular data set from GitHub.\nA local copy of these tables is saved to `./.data-cache/` by default.\nEach can be obtained individually but it is recommended to retrieve all data, as below.\n\n```python\n# Instantiate data download class.\ngetData = download.getData(cache='./.data-cache')\n\n# Retrieve all data as dictionary (recommended)\ndata = getData.fromHost('all')\n```\n\n* `all` **(default)**\n  * Retrieve all of the below data in dictionary format (**recommended**).\n*  `postcodeLSOA`\n  * Postcode -> LSOA (2011) lookup Table from [ArcGIS](https://hub.arcgis.com/datasets/ons::national-statistics-postcode-lookup-2021-census-november-2022/about)\n*  `imdLSOA`\n  * Indices of Deprivation by LSOA in England from [National Statistics (.gov.uk)](https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/845345/File_7_-_All_IoD2019_Scores__Ranks__Deciles_and_Population_Denominators_3.csv/preview)\n*  `populationLSOA`\n  * LSOA population estimates, by age and sex, from [ONS](https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/lowersuperoutputareamidyearpopulationestimates)\n* `ethnicityLSOA`\n  * Proportion of ethnicity minorities (non-white) by LSOA from [NOMIS](https://www.nomisweb.co.uk/query/select/getdatasetbytheme.asp?opt=3&theme=&subgrp=)\n*  `areaLSOA`\n  * Land hectare measures by LSOA from [ArcGIS](https://hub.arcgis.com/datasets/ons::standard-area-measurements-latest-for-2021-statistical-geographies-in-england-and-wales-v2-1/about)\n* `gpRegistration`\n  * GP registration by LSOA [NHS Digital](https://digital.nhs.uk/data-and-information/publications/statistical/patients-registered-at-a-gp-practice/metadata)\n* `gpPractice`\n  * GP Practice information from [NHS Digital](https://digital.nhs.uk/services/organisation-data-service/file-downloads/gp-and-gp-practice-related-data)\n* `gpStaff`\n  * GPs by GP Practices from [NHS Digital](https://digital.nhs.uk/services/organisation-data-service/file-downloads/gp-and-gp-practice-related-data)\n* `qof`\n  * Quality and Outcomes Framework, 2021-22 from [NHS Digital](https://digital.nhs.uk/data-and-information/publications/statistical/quality-and-outcomes-framework-achievement-prevalence-and-exceptions-data/2021-22)\n* `geoLSOA`\n  * LSOA GeoJSON from [UK Data Service](https://statistics.ukdataservice.ac.uk/dataset/2011-census-geography-boundaries-lower-layer-super-output-areas-and-data-zones)\n* `esneftLSOA`\n  * List of LSOAs within ESNEFT trust.\n* `esneftOSM`\n  * OpenStreetMap (OSM) data for ESNEFT area from [Geofabrik](https://download.geofabrik.de/europe/great-britain/england.html)\n\n#### From Source\nAlternatively, the `.fromSource()` method can be used to retrieve each dataset directly from its public source.\nBy default, `esneft_tools` will retrieve the source data that matches the `fromHost()` methods.\nEach source URL can be updated to newer versions by providing a YAML file to `download.getData()` as shown below.\nAn example of the YAML file is shown [here](./README_files/sourceURL.yaml).\n\n<details>\n<summary><strong>Clear here for code</strong></summary>\n\n```python\n# Instantiate data download class.\ngetData = download.getData(sourceURL='sourceURL.yaml', cache='./.data-cache')\n\n# Retrieve a specific dataset from host.\n# Note: \"all\" does not work with .fromSource().\nimdLSOA = getData.fromSource('imdLSOA')\n```\n\n</details>\n\n### Processing\n\n#### Aggregate by Practice Level\nThe `getGPsummary` function aggregates the downloaded data to practice level statistics.\n\n```python\nGPsummary = process.getGPsummary(**data, iod_cols='IMD')\n```\n\n| Field               | Description                                               |\n| ---                 | ---                                                       |\n| *OrganisationCode*  | Practice Service Code                                     |\n| IMD                 | Mean Index of Multiple Deprivation of Registered Patients |\n| Patient             | Total Registered Patients                                 |\n| QOF-DM              | QOF achievement for Diabetes mellitus (max 76)            |\n| DM-prevalance       | Prevalence of Diabetes mellitus                           |\n| PCDS                | Postcode                                                  |\n| OpenDate            | Opening Date                                              |\n| CloseDate           | Closing Date                                              |\n| Status              | Service Status (e.g. Active)                              |\n| PrescribingSetting  | Service Type (e.g. GP Practice)                           |\n| currentStaff        | Current Practitioners                                     |\n| departedStaff       | Total Departed Practitioners                              |\n| meanStaff           | Average Working Practitioners                             |\n| annualStaffTurnover | Mean Annual % Practitioner Turnover                       |\n| Lat                 | Latitude of Site                                          |\n| Long                | Longitude of Site                                         |\n| patientPerGP        | Total Registered Patient per Average Practitioner Count   |\n| ESNEFT              | Boolean Flag of Practices within ESNEFT                   |\n| Node                | Closest OSM Map Node to Site                              |\n\n\n#### Aggregate by LSOA Level\nThe `getLSOAsummary` function aggregates the downloaded data LSOA level statistics.\n\n```python\nLSOAsummary = process.getLSOAsummary(**data, iod_cols='IMD')\n```\n\n| Field         | Description                               |\n| ---           | ---                                       |\n| *LSOA11CD*    | LSOA (2011) Code                          |\n| LSOA11NM      | LSOA (2011) Name                          |\n| Age (median)  | Median Age of Population                  |\n| Population    | Population Estimate (2011 Census)         |\n| LandHectare   | Land Area (Hectares)                      |\n| Patient       | Total Registered GP Patients              |\n| IMD           | Index of Multiple Deprivation             |\n| IMD (q5)      | Index of Multiple Deprivation (quintiles) |\n| DM-prevalance | Prevalence of Diabetes mellitus           |\n| Density       | Population Density                        |\n| ESNEFT        | Boolean Flag of LSOAs within ESNEFT       |\n\n\n### Visualise\n\n### Practice Map\n\n```python\nfig = visualise.scatterGP(GPsummary[GPsummary['Status'] == 'Active'], minCount=250)\n```\n\n![gp-loc](./README_files/GP-locations.png)\n <br> *Map of Practice Distributions within ESNEFT (Plotly Interactive)*\n\n\n### LSOA Map\n\n```python\nfig = visualise.choroplethLSOA(LSOAsummary, data['geoLSOA'], colour='IMD')\n```\n\n![gp-loc](./README_files/LSOA-choropleth.png)\n <br> *Choropleth Map of LSOA Domains within ESNEFT coloured by IMD (Plotly Interactive)*\n\n\n## Further Documentation\nRefer to the [additional documentation](./README_files/docs.md) for further examples of functionality.\n\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidance.\n\n\n## License\nDistributed under the MIT License. _See [LICENSE](./LICENSE) for more information._\n\n\n## Contact\nIf you have any other questions please contact the author, [Stephen Richer](mailto:stephen.richer@proton.me?subject=[GitHub]%20esneft_tools).\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2022 NHS England and Improvement  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "Utilities to analyse population and deprivation data.",
    "version": "0.1.4",
    "split_keywords": [
        "esneft_tools"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "982966b78e142d281773b1dd0b7fdde5",
                "sha256": "1f97626aa677e2633fc5c8f378d70cbb46cc98d04af8024116899f73423f5492"
            },
            "downloads": -1,
            "filename": "esneft_tools-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "982966b78e142d281773b1dd0b7fdde5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 21549,
            "upload_time": "2022-12-15T12:40:01",
            "upload_time_iso_8601": "2022-12-15T12:40:01.697131Z",
            "url": "https://files.pythonhosted.org/packages/52/22/61f52806208e94fff7cca0652bd82f5e1d09b6b843ad1d90322de42d2eca/esneft_tools-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "2021acfa98d338423d78cc49a21526c7",
                "sha256": "14fcd8e30a25574f30074f565646e5e89425096f0f7cb950e9c1d09fdc45e05c"
            },
            "downloads": -1,
            "filename": "esneft_tools-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "2021acfa98d338423d78cc49a21526c7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 23648,
            "upload_time": "2022-12-15T12:40:06",
            "upload_time_iso_8601": "2022-12-15T12:40:06.817637Z",
            "url": "https://files.pythonhosted.org/packages/77/ec/2c5e2fb48c35b872e82ca2aa762f7944294ca15002c3f24fa5047179b3ce/esneft_tools-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-15 12:40:06",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "esneft-tools"
}
        
Elapsed time: 0.02294s