mercury-python


Namemercury-python JSON
Version 2.10.0 PyPI version JSON
download
home_pagehttps://github.com/cisco/mercury-python/
SummaryPython interface into mercury's network protocol fingerprinting and analysis functionality
upload_time2025-10-25 13:31:48
maintainerNone
docs_urlNone
authorBlake Anderson
requires_python>=3.6.0
licenseNone
keywords tls fingerprinting network traffic analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mercury-python

The goal of the `mercury-python` package is to expose mercury's network protocol analysis functionality via python. The cython interface is given in `mercury.pyx`.

## Installation

### Recommended Installation

```bash
pip install mercury-python
```

### From Source

You will first need to [build mercury](https://wwwin-github.cisco.com/network-intelligence/mercury-transition#building-and-installing-mercury)
and install cython and optionally wheel:

```bash
pip install Cython
pip install wheel
pip install setuptools
```

Within mercury's `src/cython/` directory, `Makefile` will build the package based on the makefile target:

```bash
make        # default build in-place
make wheel  # generates pip-installable wheel file
```

## Usage

### Initialization

```python
import mercury

libmerc = mercury.Mercury()                                                            # initialization for packet parsing
libmerc = mercury.Mercury(do_analysis=True, resources=b'/<path>/<to>/<resources.tgz>') # initialization for analysis
```

### Parsing packets

```python
hex_packet = '5254001235020800273a230d08004500...'
libmerc.get_mercury_json(bytes.fromhex(hex_packet))
```

```javascript
{
    "fingerprints": {
        "tls": "tls/(0303)(13011303...)((0000)...)"
    },
    "tls": {
        "client": {
            "version": "0303",
            "random": "0d4e266cf66416689ded443b58d2b12bb2f53e8a3207148e3c8f2be2476cbd24",
            "session_id": "67b5db473da1b71fbca9ed288052032ee0d5139dcfd6ea78b4436e509703c0e4",
            "cipher_suites": "130113031302c02bc02fcca9cca8c02cc030c00ac009c013c014009c009d002f0035000a",
            "compression_methods": "00",
            "server_name": "content-signature-2.cdn.mozilla.net",
            "application_layer_protocol_negotiation": [
                "h2",
                "http/1.1"
            ],
            "session_ticket": ""
        }
    },
    "src_ip": "10.0.2.15",
    "dst_ip": "13.249.64.25",
    "protocol": 6,
    "src_port": 32972,
    "dst_port": 443,
}
```


### Analysis

There are two methods to invoke mercury's analysis functionality. The first operates on the full hex packet:

```python
libmerc.analyze_packet(bytes.fromhex(hex_packet))
```

```javascript
{
    "tls": {
        "client": {
            "server_name": "content-signature-2.cdn.mozilla.net"
        }
    },
    "fingerprint_info": {
        "status": "labeled",
        "type": "tls",
        "str_repr": "tls/1/(0303)(13011303...)[(0000)...]"
    },
    "analysis": {
        "process": "firefox",
        "score": 0.9992411956652674,
        "malware": false,
        "p_malware": 8.626882751003134e-06
    }
```

The second method operates directly on the data features (network protocol fingerprint string and destination context):

```python
libmerc.perform_analysis('tls/1/(0303)(13011303...)[(0000)...]', 'content-signature-2.cdn.mozilla.net', '13.249.64.25', 443)
```

```javascript
{
    "fingerprint_info": {
        "status": "labeled"
    },
    "analysis": {
        "process": "firefox",
        "score": 0.9992158715704546,
        "malware": false,
        "p_malware": 8.745628825189023e-06
    }
}
```


### Static functions

Parsing base64 representations of certificate data:

```python
b64_cert = 'MIIJRDC...'
mercury.parse_cert(b64_cert)
```
output:
```javascript
{
    "version": "02",
    "serial_number": "00eede6560cd35c0af02000000005971b7",
    "signature_identifier": {
        "algorithm": "sha256WithRSAEncryption"
    },
    "issuer": [
        {
            "country_name": "US"
        },
        {
            "organization_name": "Google Trust Services"
        },
        {
            "common_name": "GTS CA 1O1"
        }
    ],
    ...
```

Parsing base64 representations of DNS data:

```python
b64_dns = '1e2BgAAB...'
mercury.parse_dns(b64_dns)
```
output:
```javascript
{
    "response": {
        "question": [
            {
                "name": "live.github.com.",
                "type": "AAAA",
                "class": "IN"
            }
        ],
        ...
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cisco/mercury-python/",
    "name": "mercury-python",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6.0",
    "maintainer_email": null,
    "keywords": "tls fingerprinting network traffic analysis",
    "author": "Blake Anderson",
    "author_email": "blake.anderson@cisco.com",
    "download_url": null,
    "platform": null,
    "description": "# mercury-python\n\nThe goal of the `mercury-python` package is to expose mercury's network protocol analysis functionality via python. The cython interface is given in `mercury.pyx`.\n\n## Installation\n\n### Recommended Installation\n\n```bash\npip install mercury-python\n```\n\n### From Source\n\nYou will first need to [build mercury](https://wwwin-github.cisco.com/network-intelligence/mercury-transition#building-and-installing-mercury)\nand install cython and optionally wheel:\n\n```bash\npip install Cython\npip install wheel\npip install setuptools\n```\n\nWithin mercury's `src/cython/` directory, `Makefile` will build the package based on the makefile target:\n\n```bash\nmake        # default build in-place\nmake wheel  # generates pip-installable wheel file\n```\n\n## Usage\n\n### Initialization\n\n```python\nimport mercury\n\nlibmerc = mercury.Mercury()                                                            # initialization for packet parsing\nlibmerc = mercury.Mercury(do_analysis=True, resources=b'/<path>/<to>/<resources.tgz>') # initialization for analysis\n```\n\n### Parsing packets\n\n```python\nhex_packet = '5254001235020800273a230d08004500...'\nlibmerc.get_mercury_json(bytes.fromhex(hex_packet))\n```\n\n```javascript\n{\n    \"fingerprints\": {\n        \"tls\": \"tls/(0303)(13011303...)((0000)...)\"\n    },\n    \"tls\": {\n        \"client\": {\n            \"version\": \"0303\",\n            \"random\": \"0d4e266cf66416689ded443b58d2b12bb2f53e8a3207148e3c8f2be2476cbd24\",\n            \"session_id\": \"67b5db473da1b71fbca9ed288052032ee0d5139dcfd6ea78b4436e509703c0e4\",\n            \"cipher_suites\": \"130113031302c02bc02fcca9cca8c02cc030c00ac009c013c014009c009d002f0035000a\",\n            \"compression_methods\": \"00\",\n            \"server_name\": \"content-signature-2.cdn.mozilla.net\",\n            \"application_layer_protocol_negotiation\": [\n                \"h2\",\n                \"http/1.1\"\n            ],\n            \"session_ticket\": \"\"\n        }\n    },\n    \"src_ip\": \"10.0.2.15\",\n    \"dst_ip\": \"13.249.64.25\",\n    \"protocol\": 6,\n    \"src_port\": 32972,\n    \"dst_port\": 443,\n}\n```\n\n\n### Analysis\n\nThere are two methods to invoke mercury's analysis functionality. The first operates on the full hex packet:\n\n```python\nlibmerc.analyze_packet(bytes.fromhex(hex_packet))\n```\n\n```javascript\n{\n    \"tls\": {\n        \"client\": {\n            \"server_name\": \"content-signature-2.cdn.mozilla.net\"\n        }\n    },\n    \"fingerprint_info\": {\n        \"status\": \"labeled\",\n        \"type\": \"tls\",\n        \"str_repr\": \"tls/1/(0303)(13011303...)[(0000)...]\"\n    },\n    \"analysis\": {\n        \"process\": \"firefox\",\n        \"score\": 0.9992411956652674,\n        \"malware\": false,\n        \"p_malware\": 8.626882751003134e-06\n    }\n```\n\nThe second method operates directly on the data features (network protocol fingerprint string and destination context):\n\n```python\nlibmerc.perform_analysis('tls/1/(0303)(13011303...)[(0000)...]', 'content-signature-2.cdn.mozilla.net', '13.249.64.25', 443)\n```\n\n```javascript\n{\n    \"fingerprint_info\": {\n        \"status\": \"labeled\"\n    },\n    \"analysis\": {\n        \"process\": \"firefox\",\n        \"score\": 0.9992158715704546,\n        \"malware\": false,\n        \"p_malware\": 8.745628825189023e-06\n    }\n}\n```\n\n\n### Static functions\n\nParsing base64 representations of certificate data:\n\n```python\nb64_cert = 'MIIJRDC...'\nmercury.parse_cert(b64_cert)\n```\noutput:\n```javascript\n{\n    \"version\": \"02\",\n    \"serial_number\": \"00eede6560cd35c0af02000000005971b7\",\n    \"signature_identifier\": {\n        \"algorithm\": \"sha256WithRSAEncryption\"\n    },\n    \"issuer\": [\n        {\n            \"country_name\": \"US\"\n        },\n        {\n            \"organization_name\": \"Google Trust Services\"\n        },\n        {\n            \"common_name\": \"GTS CA 1O1\"\n        }\n    ],\n    ...\n```\n\nParsing base64 representations of DNS data:\n\n```python\nb64_dns = '1e2BgAAB...'\nmercury.parse_dns(b64_dns)\n```\noutput:\n```javascript\n{\n    \"response\": {\n        \"question\": [\n            {\n                \"name\": \"live.github.com.\",\n                \"type\": \"AAAA\",\n                \"class\": \"IN\"\n            }\n        ],\n        ...\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python interface into mercury's network protocol fingerprinting and analysis functionality",
    "version": "2.10.0",
    "project_urls": {
        "Homepage": "https://github.com/cisco/mercury-python/"
    },
    "split_keywords": [
        "tls",
        "fingerprinting",
        "network",
        "traffic",
        "analysis"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "99d3b92ed850ca52652c5660372dfef236571cf397752f7c2eaadaeb8511a8ef",
                "md5": "deee827723f4268bd52f8ea891c56bec",
                "sha256": "7d00fd39cb5fcbdcff333c0c5c315413b0887c1e199cbcd479e4fed21bd52476"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "deee827723f4268bd52f8ea891c56bec",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6.0",
            "size": 11458557,
            "upload_time": "2025-10-25T13:31:48",
            "upload_time_iso_8601": "2025-10-25T13:31:48.138951Z",
            "url": "https://files.pythonhosted.org/packages/99/d3/b92ed850ca52652c5660372dfef236571cf397752f7c2eaadaeb8511a8ef/mercury_python-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df0db7b7763a32f7df5290b2a3dcdafb0b26fc42149e354abbed158d02ba135f",
                "md5": "4ce46857b753c645e4857795f008f42a",
                "sha256": "4bc1b0c15bbd7221465c57c18f5990642dc2e7f4900512d5572396685d9215fa"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4ce46857b753c645e4857795f008f42a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6.0",
            "size": 11737935,
            "upload_time": "2025-10-25T13:31:59",
            "upload_time_iso_8601": "2025-10-25T13:31:59.577372Z",
            "url": "https://files.pythonhosted.org/packages/df/0d/b7b7763a32f7df5290b2a3dcdafb0b26fc42149e354abbed158d02ba135f/mercury_python-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5bade6f9a04c5c8ece6d39c2363e06c1ee5d257a5985423583febcaf2239b19b",
                "md5": "6be1197e358a2562c4e74ac755b89330",
                "sha256": "8165f6bb23b46d43084929f411a5b8f1b28e59c2608f76945dcfdb0ff97047d6"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "6be1197e358a2562c4e74ac755b89330",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6.0",
            "size": 11492157,
            "upload_time": "2025-10-25T13:32:10",
            "upload_time_iso_8601": "2025-10-25T13:32:10.944004Z",
            "url": "https://files.pythonhosted.org/packages/5b/ad/e6f9a04c5c8ece6d39c2363e06c1ee5d257a5985423583febcaf2239b19b/mercury_python-2.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ba1aab98701b6332ecb7ad62e0001303d7931426a3cc6f7c5b19fbcab2fc830",
                "md5": "7d22aa3ce88ad6aecf19b54c412135b0",
                "sha256": "4a4ff32ed1ec5fc747aa43cc38e46b7adb134a6e6790c56de62c9d0d6305cd77"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7d22aa3ce88ad6aecf19b54c412135b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6.0",
            "size": 11775786,
            "upload_time": "2025-10-25T13:32:22",
            "upload_time_iso_8601": "2025-10-25T13:32:22.291641Z",
            "url": "https://files.pythonhosted.org/packages/3b/a1/aab98701b6332ecb7ad62e0001303d7931426a3cc6f7c5b19fbcab2fc830/mercury_python-2.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b4c54f95f9f2936947e6abdca8b6c83c0b7f46c8d716ca2bf6e742c133527c29",
                "md5": "9fb2a0f27d6f67c69c1633be1f1b303f",
                "sha256": "b02b5af632c3f3a7a15a0ebe74668db89f04d479425a22c05135ef712184c70c"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9fb2a0f27d6f67c69c1633be1f1b303f",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6.0",
            "size": 11445540,
            "upload_time": "2025-10-25T13:32:33",
            "upload_time_iso_8601": "2025-10-25T13:32:33.320983Z",
            "url": "https://files.pythonhosted.org/packages/b4/c5/4f95f9f2936947e6abdca8b6c83c0b7f46c8d716ca2bf6e742c133527c29/mercury_python-2.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5b0e66d4ca81e6979ab45c9d73df42cf50b3d43e933c9f2d4d3299abe7f4ec48",
                "md5": "ee0b2ce65550db7d0e81b94e88fbbc7c",
                "sha256": "ea987afdde80526f0003c6295d336d1e162bec22950f781c5b88a2ac28ea4dfd"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ee0b2ce65550db7d0e81b94e88fbbc7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6.0",
            "size": 11741624,
            "upload_time": "2025-10-25T13:32:44",
            "upload_time_iso_8601": "2025-10-25T13:32:44.403991Z",
            "url": "https://files.pythonhosted.org/packages/5b/0e/66d4ca81e6979ab45c9d73df42cf50b3d43e933c9f2d4d3299abe7f4ec48/mercury_python-2.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "238ff71133cfce93473c5577f4846bbf08054e457bc69bd097fa2f02ea148681",
                "md5": "079c0403aca33ba438cfccdd9973c3d2",
                "sha256": "a77c0a8b710c6d2bbc764247945087ecea79f04692f14d175ad8d3545a18fb6a"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "079c0403aca33ba438cfccdd9973c3d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6.0",
            "size": 11442759,
            "upload_time": "2025-10-25T13:32:55",
            "upload_time_iso_8601": "2025-10-25T13:32:55.581021Z",
            "url": "https://files.pythonhosted.org/packages/23/8f/f71133cfce93473c5577f4846bbf08054e457bc69bd097fa2f02ea148681/mercury_python-2.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a811eb956bee2af4aed6432c959b9fc25fd769c85d9ad41b5439daf832262620",
                "md5": "d7f3031d517bb31dc8c434a3b910ab37",
                "sha256": "90b52b25ac48102b5ad7025b639ced4440b9c3dfa9431128d734a3e105474270"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d7f3031d517bb31dc8c434a3b910ab37",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.6.0",
            "size": 11746326,
            "upload_time": "2025-10-25T13:33:06",
            "upload_time_iso_8601": "2025-10-25T13:33:06.938562Z",
            "url": "https://files.pythonhosted.org/packages/a8/11/eb956bee2af4aed6432c959b9fc25fd769c85d9ad41b5439daf832262620/mercury_python-2.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2a5a90a348b005f9f7ab7cedaf25a0e93cdd706825ce30c661d9d74c4a6a8e1b",
                "md5": "a80f1871e02b617e1cee1e4a855a8276",
                "sha256": "03b79da6bb11895d9c9cf497163d12e78a56f75c61541fb4c2df7659a132f0f0"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a80f1871e02b617e1cee1e4a855a8276",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6.0",
            "size": 11442472,
            "upload_time": "2025-10-25T13:33:17",
            "upload_time_iso_8601": "2025-10-25T13:33:17.787072Z",
            "url": "https://files.pythonhosted.org/packages/2a/5a/90a348b005f9f7ab7cedaf25a0e93cdd706825ce30c661d9d74c4a6a8e1b/mercury_python-2.10.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15d251a83832b89503f711ec2b06d10a37f9a8ad07b3705c1c625b644528a9e8",
                "md5": "35fb57a6395964880f65ab6d4576cf27",
                "sha256": "3ed268a4f21d79a9a3240966796e219a1b27f6c4a096996e4a08ef07bdc5fb5a"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35fb57a6395964880f65ab6d4576cf27",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6.0",
            "size": 11722027,
            "upload_time": "2025-10-25T13:33:29",
            "upload_time_iso_8601": "2025-10-25T13:33:29.197327Z",
            "url": "https://files.pythonhosted.org/packages/15/d2/51a83832b89503f711ec2b06d10a37f9a8ad07b3705c1c625b644528a9e8/mercury_python-2.10.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "255b1fb09c48cd1104b4ff67f424ea4dc6fbca97e031fad1b28194f1da8596f6",
                "md5": "feafa6491b3636c2bda97c139c1b85cb",
                "sha256": "6a4c3b37468cde88da443db1a1fc5b2c1ac40d595d7336c9055d726cc8c17450"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "feafa6491b3636c2bda97c139c1b85cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6.0",
            "size": 11428763,
            "upload_time": "2025-10-25T13:33:40",
            "upload_time_iso_8601": "2025-10-25T13:33:40.503044Z",
            "url": "https://files.pythonhosted.org/packages/25/5b/1fb09c48cd1104b4ff67f424ea4dc6fbca97e031fad1b28194f1da8596f6/mercury_python-2.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a1933c398df4dcc6b477eb8903b32b3462e456eb18453be56b077d78daafc79",
                "md5": "c104af666387087e445dc44ac7b2e975",
                "sha256": "b5ac68b9f379561b99ff8e995027259d9e3c11edd7e427ffe65d2a541b0f40c2"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c104af666387087e445dc44ac7b2e975",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6.0",
            "size": 11716591,
            "upload_time": "2025-10-25T13:33:51",
            "upload_time_iso_8601": "2025-10-25T13:33:51.686408Z",
            "url": "https://files.pythonhosted.org/packages/0a/19/33c398df4dcc6b477eb8903b32b3462e456eb18453be56b077d78daafc79/mercury_python-2.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0e3b7413c5dffe331cd077fd03e89a0af0d1b3681c4e710a8f35b24fef6acc44",
                "md5": "136951ee73f773fcfce180010f3b5f70",
                "sha256": "b9731b66363c6681a1f80083ef321ae11a36811f3539a70c48934d13dc72637b"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "136951ee73f773fcfce180010f3b5f70",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6.0",
            "size": 11471152,
            "upload_time": "2025-10-25T13:34:02",
            "upload_time_iso_8601": "2025-10-25T13:34:02.572125Z",
            "url": "https://files.pythonhosted.org/packages/0e/3b/7413c5dffe331cd077fd03e89a0af0d1b3681c4e710a8f35b24fef6acc44/mercury_python-2.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d493e2b0d73fd4f1c5bd55691696958b82800b304830867e30a0730efe55a0b8",
                "md5": "59f6992e8606ac6d5e598f613063de33",
                "sha256": "975bbedbfd361257c88280898d109bc1036fc60e6c9422dbaa286afe477ab19e"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "59f6992e8606ac6d5e598f613063de33",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6.0",
            "size": 11750031,
            "upload_time": "2025-10-25T13:34:14",
            "upload_time_iso_8601": "2025-10-25T13:34:14.271496Z",
            "url": "https://files.pythonhosted.org/packages/d4/93/e2b0d73fd4f1c5bd55691696958b82800b304830867e30a0730efe55a0b8/mercury_python-2.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0fea90fe0cedfc283cc93d5dad4b28f9a5012c298c230623e30badf33ba2d1bd",
                "md5": "c2dc6b21c49ed2b7ebcf0bda5b9464fa",
                "sha256": "509f5bbd0eb07df55f81c7c18607130e7cfc50de4f74276ab60109907831ed73"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c2dc6b21c49ed2b7ebcf0bda5b9464fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6.0",
            "size": 11455863,
            "upload_time": "2025-10-25T13:34:25",
            "upload_time_iso_8601": "2025-10-25T13:34:25.191526Z",
            "url": "https://files.pythonhosted.org/packages/0f/ea/90fe0cedfc283cc93d5dad4b28f9a5012c298c230623e30badf33ba2d1bd/mercury_python-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c1e86e5415531fef2084d81c831215d3c7b86c07479f8df8889c4e2f2b926786",
                "md5": "a9a50e07e1c8741d2460d39216cda22f",
                "sha256": "6936f896fc7a857562d21ffba363af3be8e76acd5f758b459827e58ce24582dd"
            },
            "downloads": -1,
            "filename": "mercury_python-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a9a50e07e1c8741d2460d39216cda22f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6.0",
            "size": 11733235,
            "upload_time": "2025-10-25T13:34:36",
            "upload_time_iso_8601": "2025-10-25T13:34:36.525942Z",
            "url": "https://files.pythonhosted.org/packages/c1/e8/6e5415531fef2084d81c831215d3c7b86c07479f8df8889c4e2f2b926786/mercury_python-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-25 13:31:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cisco",
    "github_project": "mercury-python",
    "github_not_found": true,
    "lcname": "mercury-python"
}
        
Elapsed time: 2.29933s