metaip


Namemetaip JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/Stephen-RA-King/metaip
SummaryReturn the latitude and longitude associated with an IP address
upload_time2023-10-03 07:52:46
maintainerStephen R A King
docs_urlNone
authorStephen R A King
requires_python>=3.8
licenseMIT
keywords utility
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            # metaip

> Find the latitude and longitude associated with an IP address..

[![PyPI][pypi-image]][pypi-url]
[![Downloads][downloads-image]][downloads-url]
[![Status][status-image]][pypi-url]
[![Python Version][python-version-image]][pypi-url]
[![tests][tests-image]][tests-url]
[![Codecov][codecov-image]][codecov-url]
[![CodeQl][codeql-image]][codeql-url]
[![Docker][docker-image]][docker-url]
[![pre-commit][pre-commit-image]][pre-commit-url]
[![pre-commit.ci status][pre-commit.ci-image]][pre-commit.ci-url]
[![Imports: isort][isort-image]][isort-url]
[![Code style: black][black-image]][black-url]
[![Checked with mypy][mypy-image]][mypy-url]
[![security: bandit][bandit-image]][bandit-url]
[![Commitizen friendly][commitizen-image]][commitizen-url]
[![Conventional Commits][conventional-commits-image]][conventional-commits-url]
[![DeepSource][deepsource-image]][deepsource-url]
[![license][license-image]][license-url]
[![Pydough][pydough-image]][pydough-url]

A small command line utility that utilizes the API of ipstack to return the latitude and longitude associated with an IP address
in JSON notation.

# 🚀 Quick Start

---

## 📋 Prerequisites

---

-   [x] Python >= 3.8.
-   [x] Get an API key from [**ipstack.com**](https://ipstack.com/)

The following are optional but are recommended

-   [x] A pipx installation.

## 💾 Installation

metaip can be installed into any python environment using pip:

```bash
~ $ pip install metaip
```

However, optimal installation can be achieved using [**pipx**](https://pypa.github.io/pipx/):

```bash
~ $ pipx install metaip
```

For a development installation:

Editable (developer) installs were not possible prior to 2021, but that has been remedied by [**pep 660**](https://peps.python.org/pep-0660/).
This can be performed by either 'pip' or 'setuptools'. Clone or fork the repository first then:

```sh
$ python -m pip install -e .
```

or

```sh
$ python setup.py develop
```

## 📝 Basic Usage

Issue the command to get meta data about IP address specifying the API key

```sh
$ metaip 90.203.98.132 -k <api_key>
```

the result is return as JSON

```sh
{
    "ip": "90.203.98.132",
    "coordinates": {
        "latitude": 53.78388977050781,
        "longitude": -1.787500023841858
    }
}
```

Note: the API key is now stored for future use. More on this later.

# 📝 Usage

---

On first usage, if an API key is not specified from the command line, you will be asked to supply one:

```sh
$ metaip 90.203.98.132
Please enter your API key:
```

once the API key has benn entered, the coordinate information is returned as JSON

```shell
Please enter your API key:bb340ea1b8e683756a19d596ba421b56
{
    "ip": "90.203.98.132",
    "coordinates": {
        "latitude": 53.78388977050781,
        "longitude": -1.787500023841858
    }
}
```

Once the key has been entered once it is stored so you will not be asked for it again.

```shell
$ metaip 90.203.98.132
{
    "ip": "90.203.98.132",
    "coordinates": {
        "latitude": 53.78388977050781,
        "longitude": -1.787500023841858
    }
}
```

You can store a new key at any time by using the '-k' argument from the command line:

```shell
$>metaip 90.203.98.132 -k <api_key>
{
    "ip": "90.203.98.132",
    "coordinates": {
        "latitude": 53.78388977050781,
        "longitude": -1.787500023841858
    }
}
```

This new key will then be stored for future use.

# 🔒 Security Considerations

Obviously when dealing with API keys, the key should never be hard coded in the application.
There are a multitude of ways to deal with API keys (including using environment variables etc). To avoid hard-coding any credentials I use the Python [keyring](https://github.com/jaraco/keyring) library

Note:
On Linux, the KWallet backend relies on dbus-python, which does not always install correctly when using pip (compilation is needed). For best results, install dbus-python as a system package.
If keyring is not working then the fallback is to use the '-k' argument.

# 🧬 Design

As [**ipstack.com**](https://ipstack.com/) is a paid for service I have used the Look Before You Leap (LBYL) design principle to check Ip addresses and API keys.
This approach involves checking for preconditions or potential issues before taking an action. This is generally seen as unpythonic. However to issue malformed requests
would be wasteful on resources.
Generally speaking the Easier to Ask for Forgiveness than Permission (EAFP) is more pythonic which involves trying an action first and then handling any exceptions or errors if they occur.

# 🐳 Using Docker

## Building the Image

Start your docker runtime then:

docker build -t {{ repository }}/metaip:{{version}} .
e.g.

```shell
$ docker build -t sraking/metaip:0.1.0 -t sraking/metaip:latest .
```

Run the image (creates the container) - docker run -it {{ repository }}/metaip:{{version}} /bin/bash
e.g.

```shell
$ docker run -it sraking/metaip:0.1.0 /bin/bash
```

Upload the image to docker hub - docker push {{ repository }}/metaip:{{version}} e.g.

```shell
$ docker push sraking/metaip:0.1.0
```

## Using the ready built image

Pull the latest image from the Hub.

```bash
~ $ docker pull sraking/metaip
```

Run the image.

```bash
~ $ docker run -it sraking/metaip /bin/bash
```

Use the command line as normal in the container.

```bash
root@4d315992ca28:/app# metaip -k <api_key>
{
    "ip": "90.203.98.132",
    "coordinates": {
        "latitude": 53.78388977050781,
        "longitude": -1.787500023841858
    }
}
```

# ⚠️ Limitations

The IP addresses are restricted to IPv4 addresses.

# 📜 License

---

Distributed under the MIT license. See [![][license-image]][license-url] for more information.

<!-- Markdown link & img dfn's -->

[bandit-image]: https://img.shields.io/badge/security-bandit-yellow.svg
[bandit-url]: https://github.com/PyCQA/bandit
[black-image]: https://img.shields.io/badge/code%20style-black-000000.svg
[black-url]: https://github.com/psf/black
[codeclimate-image]: https://api.codeclimate.com/v1/badges/7fc352185512a1dab75d/maintainability
[codeclimate-url]: https://codeclimate.com/github/Stephen-RA-King/metaip/maintainability
[codecov-image]: https://codecov.io/gh/Stephen-RA-King/metaip/branch/main/graph/badge.svg
[codecov-url]: https://app.codecov.io/gh/Stephen-RA-King/metaip
[codefactor-image]: https://www.codefactor.io/repository/github/Stephen-RA-King/metaip/badge
[codefactor-url]: https://www.codefactor.io/repository/github/Stephen-RA-King/metaip
[codeql-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/github-code-scanning/codeql/badge.svg
[codeql-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/github-code-scanning/codeql
[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg
[commitizen-url]: http://commitizen.github.io/cz-cli/
[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square
[conventional-commits-url]: https://conventionalcommits.org
[deepsource-image]: https://app.deepsource.com/gh/Stephen-RA-King/metaip.svg/?label=active+issues&show_trend=true
[deepsource-url]: https://app.deepsource.com/gh/Stephen-RA-King/metaip/?ref=repository-badge
[docker-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/docker-image.yml/badge.svg
[docker-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/docker-image.yml
[downloads-image]: https://static.pepy.tech/personalized-badge/metaip?period=total&units=international_system&left_color=black&right_color=orange&left_text=Downloads
[downloads-url]: https://pepy.tech/project/metaip
[format-image]: https://img.shields.io/pypi/format/metaip
[isort-image]: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
[isort-url]: https://github.com/pycqa/isort/
[lgtm-alerts-image]: https://img.shields.io/lgtm/alerts/g/Stephen-RA-King/metaip.svg?logo=lgtm&logoWidth=18
[lgtm-alerts-url]: https://lgtm.com/projects/g/Stephen-RA-King/metaip/alerts/
[lgtm-quality-image]: https://img.shields.io/lgtm/grade/python/g/Stephen-RA-King/metaip.svg?logo=lgtm&logoWidth=18
[lgtm-quality-url]: https://lgtm.com/projects/g/Stephen-RA-King/metaip/context:python
[license-image]: https://img.shields.io/pypi/l/metaip
[license-url]: https://github.com/Stephen-RA-King/metaip/blob/main/LICENSE
[mypy-image]: http://www.mypy-lang.org/static/mypy_badge.svg
[mypy-url]: http://mypy-lang.org/
[pre-commit-image]: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white
[pre-commit-url]: https://github.com/pre-commit/pre-commit
[pre-commit.ci-image]: https://results.pre-commit.ci/badge/github/Stephen-RA-King/metaip/main.svg
[pre-commit.ci-url]: https://results.pre-commit.ci/latest/github/Stephen-RA-King/metaip/main
[pydough-image]: https://img.shields.io/badge/pydough-2023-orange
[pydough-url]: https://github.com/Stephen-RA-King/pydough
[pypi-url]: https://pypi.org/project/metaip/
[pypi-image]: https://img.shields.io/pypi/v/metaip.svg
[python-version-image]: https://img.shields.io/pypi/pyversions/metaip
[readthedocs-image]: https://readthedocs.org/projects/metaip/badge/?version=latest
[readthedocs-url]: https://metaip.readthedocs.io/en/latest/?badge=latest
[status-image]: https://img.shields.io/pypi/status/metaip.svg
[tests-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/tests.yml/badge.svg
[tests-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/tests.yml
[wiki]: https://github.com/Stephen-RA-King/metaip/wiki

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Stephen-RA-King/metaip",
    "name": "metaip",
    "maintainer": "Stephen R A King",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "sking.github@gmail.com",
    "keywords": "utility",
    "author": "Stephen R A King",
    "author_email": "sking.github@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/27/bb/b10f9796d9b6e9329308fef0e5ad19631041517a129f8871a07bf27526e5/metaip-0.1.0.tar.gz",
    "platform": "Any",
    "description": "# metaip\r\n\r\n> Find the latitude and longitude associated with an IP address..\r\n\r\n[![PyPI][pypi-image]][pypi-url]\r\n[![Downloads][downloads-image]][downloads-url]\r\n[![Status][status-image]][pypi-url]\r\n[![Python Version][python-version-image]][pypi-url]\r\n[![tests][tests-image]][tests-url]\r\n[![Codecov][codecov-image]][codecov-url]\r\n[![CodeQl][codeql-image]][codeql-url]\r\n[![Docker][docker-image]][docker-url]\r\n[![pre-commit][pre-commit-image]][pre-commit-url]\r\n[![pre-commit.ci status][pre-commit.ci-image]][pre-commit.ci-url]\r\n[![Imports: isort][isort-image]][isort-url]\r\n[![Code style: black][black-image]][black-url]\r\n[![Checked with mypy][mypy-image]][mypy-url]\r\n[![security: bandit][bandit-image]][bandit-url]\r\n[![Commitizen friendly][commitizen-image]][commitizen-url]\r\n[![Conventional Commits][conventional-commits-image]][conventional-commits-url]\r\n[![DeepSource][deepsource-image]][deepsource-url]\r\n[![license][license-image]][license-url]\r\n[![Pydough][pydough-image]][pydough-url]\r\n\r\nA small command line utility that utilizes the API of ipstack to return the latitude and longitude associated with an IP address\r\nin JSON notation.\r\n\r\n# \ud83d\ude80 Quick Start\r\n\r\n---\r\n\r\n## \ud83d\udccb Prerequisites\r\n\r\n---\r\n\r\n-   [x] Python >= 3.8.\r\n-   [x] Get an API key from [**ipstack.com**](https://ipstack.com/)\r\n\r\nThe following are optional but are recommended\r\n\r\n-   [x] A pipx installation.\r\n\r\n## \ud83d\udcbe Installation\r\n\r\nmetaip can be installed into any python environment using pip:\r\n\r\n```bash\r\n~ $ pip install metaip\r\n```\r\n\r\nHowever, optimal installation can be achieved using [**pipx**](https://pypa.github.io/pipx/):\r\n\r\n```bash\r\n~ $ pipx install metaip\r\n```\r\n\r\nFor a development installation:\r\n\r\nEditable (developer) installs were not possible prior to 2021, but that has been remedied by [**pep 660**](https://peps.python.org/pep-0660/).\r\nThis can be performed by either 'pip' or 'setuptools'. Clone or fork the repository first then:\r\n\r\n```sh\r\n$ python -m pip install -e .\r\n```\r\n\r\nor\r\n\r\n```sh\r\n$ python setup.py develop\r\n```\r\n\r\n## \ud83d\udcdd Basic Usage\r\n\r\nIssue the command to get meta data about IP address specifying the API key\r\n\r\n```sh\r\n$ metaip 90.203.98.132 -k <api_key>\r\n```\r\n\r\nthe result is return as JSON\r\n\r\n```sh\r\n{\r\n    \"ip\": \"90.203.98.132\",\r\n    \"coordinates\": {\r\n        \"latitude\": 53.78388977050781,\r\n        \"longitude\": -1.787500023841858\r\n    }\r\n}\r\n```\r\n\r\nNote: the API key is now stored for future use. More on this later.\r\n\r\n# \ud83d\udcdd Usage\r\n\r\n---\r\n\r\nOn first usage, if an API key is not specified from the command line, you will be asked to supply one:\r\n\r\n```sh\r\n$ metaip 90.203.98.132\r\nPlease enter your API key:\r\n```\r\n\r\nonce the API key has benn entered, the coordinate information is returned as JSON\r\n\r\n```shell\r\nPlease enter your API key:bb340ea1b8e683756a19d596ba421b56\r\n{\r\n    \"ip\": \"90.203.98.132\",\r\n    \"coordinates\": {\r\n        \"latitude\": 53.78388977050781,\r\n        \"longitude\": -1.787500023841858\r\n    }\r\n}\r\n```\r\n\r\nOnce the key has been entered once it is stored so you will not be asked for it again.\r\n\r\n```shell\r\n$ metaip 90.203.98.132\r\n{\r\n    \"ip\": \"90.203.98.132\",\r\n    \"coordinates\": {\r\n        \"latitude\": 53.78388977050781,\r\n        \"longitude\": -1.787500023841858\r\n    }\r\n}\r\n```\r\n\r\nYou can store a new key at any time by using the '-k' argument from the command line:\r\n\r\n```shell\r\n$>metaip 90.203.98.132 -k <api_key>\r\n{\r\n    \"ip\": \"90.203.98.132\",\r\n    \"coordinates\": {\r\n        \"latitude\": 53.78388977050781,\r\n        \"longitude\": -1.787500023841858\r\n    }\r\n}\r\n```\r\n\r\nThis new key will then be stored for future use.\r\n\r\n# \ud83d\udd12 Security Considerations\r\n\r\nObviously when dealing with API keys, the key should never be hard coded in the application.\r\nThere are a multitude of ways to deal with API keys (including using environment variables etc). To avoid hard-coding any credentials I use the Python [keyring](https://github.com/jaraco/keyring) library\r\n\r\nNote:\r\nOn Linux, the KWallet backend relies on dbus-python, which does not always install correctly when using pip (compilation is needed). For best results, install dbus-python as a system package.\r\nIf keyring is not working then the fallback is to use the '-k' argument.\r\n\r\n# \ud83e\uddec Design\r\n\r\nAs [**ipstack.com**](https://ipstack.com/) is a paid for service I have used the Look Before You Leap (LBYL) design principle to check Ip addresses and API keys.\r\nThis approach involves checking for preconditions or potential issues before taking an action. This is generally seen as unpythonic. However to issue malformed requests\r\nwould be wasteful on resources.\r\nGenerally speaking the Easier to Ask for Forgiveness than Permission (EAFP) is more pythonic which involves trying an action first and then handling any exceptions or errors if they occur.\r\n\r\n# \ud83d\udc33 Using Docker\r\n\r\n## Building the Image\r\n\r\nStart your docker runtime then:\r\n\r\ndocker build -t {{ repository }}/metaip:{{version}} .\r\ne.g.\r\n\r\n```shell\r\n$ docker build -t sraking/metaip:0.1.0 -t sraking/metaip:latest .\r\n```\r\n\r\nRun the image (creates the container) - docker run -it {{ repository }}/metaip:{{version}} /bin/bash\r\ne.g.\r\n\r\n```shell\r\n$ docker run -it sraking/metaip:0.1.0 /bin/bash\r\n```\r\n\r\nUpload the image to docker hub - docker push {{ repository }}/metaip:{{version}} e.g.\r\n\r\n```shell\r\n$ docker push sraking/metaip:0.1.0\r\n```\r\n\r\n## Using the ready built image\r\n\r\nPull the latest image from the Hub.\r\n\r\n```bash\r\n~ $ docker pull sraking/metaip\r\n```\r\n\r\nRun the image.\r\n\r\n```bash\r\n~ $ docker run -it sraking/metaip /bin/bash\r\n```\r\n\r\nUse the command line as normal in the container.\r\n\r\n```bash\r\nroot@4d315992ca28:/app# metaip -k <api_key>\r\n{\r\n    \"ip\": \"90.203.98.132\",\r\n    \"coordinates\": {\r\n        \"latitude\": 53.78388977050781,\r\n        \"longitude\": -1.787500023841858\r\n    }\r\n}\r\n```\r\n\r\n# \u26a0\ufe0f Limitations\r\n\r\nThe IP addresses are restricted to IPv4 addresses.\r\n\r\n# \ud83d\udcdc License\r\n\r\n---\r\n\r\nDistributed under the MIT license. See [![][license-image]][license-url] for more information.\r\n\r\n<!-- Markdown link & img dfn's -->\r\n\r\n[bandit-image]: https://img.shields.io/badge/security-bandit-yellow.svg\r\n[bandit-url]: https://github.com/PyCQA/bandit\r\n[black-image]: https://img.shields.io/badge/code%20style-black-000000.svg\r\n[black-url]: https://github.com/psf/black\r\n[codeclimate-image]: https://api.codeclimate.com/v1/badges/7fc352185512a1dab75d/maintainability\r\n[codeclimate-url]: https://codeclimate.com/github/Stephen-RA-King/metaip/maintainability\r\n[codecov-image]: https://codecov.io/gh/Stephen-RA-King/metaip/branch/main/graph/badge.svg\r\n[codecov-url]: https://app.codecov.io/gh/Stephen-RA-King/metaip\r\n[codefactor-image]: https://www.codefactor.io/repository/github/Stephen-RA-King/metaip/badge\r\n[codefactor-url]: https://www.codefactor.io/repository/github/Stephen-RA-King/metaip\r\n[codeql-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/github-code-scanning/codeql/badge.svg\r\n[codeql-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/github-code-scanning/codeql\r\n[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\r\n[commitizen-url]: http://commitizen.github.io/cz-cli/\r\n[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square\r\n[conventional-commits-url]: https://conventionalcommits.org\r\n[deepsource-image]: https://app.deepsource.com/gh/Stephen-RA-King/metaip.svg/?label=active+issues&show_trend=true\r\n[deepsource-url]: https://app.deepsource.com/gh/Stephen-RA-King/metaip/?ref=repository-badge\r\n[docker-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/docker-image.yml/badge.svg\r\n[docker-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/docker-image.yml\r\n[downloads-image]: https://static.pepy.tech/personalized-badge/metaip?period=total&units=international_system&left_color=black&right_color=orange&left_text=Downloads\r\n[downloads-url]: https://pepy.tech/project/metaip\r\n[format-image]: https://img.shields.io/pypi/format/metaip\r\n[isort-image]: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336\r\n[isort-url]: https://github.com/pycqa/isort/\r\n[lgtm-alerts-image]: https://img.shields.io/lgtm/alerts/g/Stephen-RA-King/metaip.svg?logo=lgtm&logoWidth=18\r\n[lgtm-alerts-url]: https://lgtm.com/projects/g/Stephen-RA-King/metaip/alerts/\r\n[lgtm-quality-image]: https://img.shields.io/lgtm/grade/python/g/Stephen-RA-King/metaip.svg?logo=lgtm&logoWidth=18\r\n[lgtm-quality-url]: https://lgtm.com/projects/g/Stephen-RA-King/metaip/context:python\r\n[license-image]: https://img.shields.io/pypi/l/metaip\r\n[license-url]: https://github.com/Stephen-RA-King/metaip/blob/main/LICENSE\r\n[mypy-image]: http://www.mypy-lang.org/static/mypy_badge.svg\r\n[mypy-url]: http://mypy-lang.org/\r\n[pre-commit-image]: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white\r\n[pre-commit-url]: https://github.com/pre-commit/pre-commit\r\n[pre-commit.ci-image]: https://results.pre-commit.ci/badge/github/Stephen-RA-King/metaip/main.svg\r\n[pre-commit.ci-url]: https://results.pre-commit.ci/latest/github/Stephen-RA-King/metaip/main\r\n[pydough-image]: https://img.shields.io/badge/pydough-2023-orange\r\n[pydough-url]: https://github.com/Stephen-RA-King/pydough\r\n[pypi-url]: https://pypi.org/project/metaip/\r\n[pypi-image]: https://img.shields.io/pypi/v/metaip.svg\r\n[python-version-image]: https://img.shields.io/pypi/pyversions/metaip\r\n[readthedocs-image]: https://readthedocs.org/projects/metaip/badge/?version=latest\r\n[readthedocs-url]: https://metaip.readthedocs.io/en/latest/?badge=latest\r\n[status-image]: https://img.shields.io/pypi/status/metaip.svg\r\n[tests-image]: https://github.com/Stephen-RA-King/metaip/actions/workflows/tests.yml/badge.svg\r\n[tests-url]: https://github.com/Stephen-RA-King/metaip/actions/workflows/tests.yml\r\n[wiki]: https://github.com/Stephen-RA-King/metaip/wiki\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Return the latitude and longitude associated with an IP address",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Stephen-RA-King/metaip/issues",
        "CI": "https://github.com/Stephen-RA-King/metaip/actions",
        "Documentation": "https://metaip.readthedocs.io/en/latest/",
        "Download": "https://github.com/Stephen-RA-King/metaip/archive/refs/heads/main.zip",
        "Homepage": "https://github.com/Stephen-RA-King/metaip",
        "Release Notes": "https://github.com/Stephen-RA-King/metaip/releases",
        "Source Code": "https://github.com/Stephen-RA-King/metaip/"
    },
    "split_keywords": [
        "utility"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6db355e594ab4ae2091335d61848a74ac0aea6897f921422ae836b7e817c6f5f",
                "md5": "835b214f858fb254b3a042b6aafb4f24",
                "sha256": "ae03377ea94d5dcbf00615c43c9eb206a104b93e24424374fe383cd4c44959cc"
            },
            "downloads": -1,
            "filename": "metaip-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "835b214f858fb254b3a042b6aafb4f24",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 9101,
            "upload_time": "2023-10-03T07:52:44",
            "upload_time_iso_8601": "2023-10-03T07:52:44.917514Z",
            "url": "https://files.pythonhosted.org/packages/6d/b3/55e594ab4ae2091335d61848a74ac0aea6897f921422ae836b7e817c6f5f/metaip-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "27bbb10f9796d9b6e9329308fef0e5ad19631041517a129f8871a07bf27526e5",
                "md5": "257c6052fc9669703284f9917a697052",
                "sha256": "04ffe152db33f58b5f20b6775ad9b636511d61279c19eeeb862e72640354d62c"
            },
            "downloads": -1,
            "filename": "metaip-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "257c6052fc9669703284f9917a697052",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 13920,
            "upload_time": "2023-10-03T07:52:46",
            "upload_time_iso_8601": "2023-10-03T07:52:46.441970Z",
            "url": "https://files.pythonhosted.org/packages/27/bb/b10f9796d9b6e9329308fef0e5ad19631041517a129f8871a07bf27526e5/metaip-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-03 07:52:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Stephen-RA-King",
    "github_project": "metaip",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "metaip"
}
        
Elapsed time: 0.12187s