{ "info": { "author": "Lucas Costa", "author_email": "lucasrodcosta@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI version](https://badge.fury.io/py/iprange-python.svg)](https://badge.fury.io/py/iprange-python)\n\n# IPRange\n\nStore IP Ranges in Redis as sorted sets for fast retrieval\n\n## Installation\n\n pip install iprange-python\n\n## Usage\n\n```python\nfrom iprange import IPRange\n\niprange = IPRange()\n\n# Add a new range with some metadata\niprange.add('192.168.0.1/24', {'some': 'data', 'more': 'metadata'})\n\n# Find the most specific range that contains a specific IP\niprange.find('192.168.0.20')\n# => {'range': '192.168.0.1/24', 'some': 'data', 'more': 'metadata'}\n\n# Find all ranges that contains a specific IP\niprange.find_all('192.168.0.20')\n# => [{'range': '192.168.0.1/24', 'some': 'data', 'more': 'metadata'}]\n\n# Delete the range\niprange.remove('192.168.0.1/24')\n```\n\nYou can use it with Redis Cluster too:\n\n```python\nfrom iprange import IPRange\n\n# Requires at least one node for cluster discovery. Multiple nodes is recommended.\nstartup_nodes = [{'host': '127.0.0.1', 'port': 16379}]\niprange = IPRange(redis_cluster=True, startup_nodes=startup_nodes)\n\n# ...\n```\n\n## IPRange in other languages\n\n- [Ruby](https://github.com/globocom/iprange)\n\n## Notice\n\nThis library relies on [a Redis fork that implements interval sets](https://github.com/hoxworth/redis/tree/2.6-intervals),\nas described in this [blog post](http://blog.togo.io/how-to/adding-interval-sets-to-redis/).\n\nYou can also use [a more recent version of Redis with Interval Sets](https://github.com/lucasrodcosta/redis).\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lucasrodcosta/iprange-python", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "iprange-python", "package_url": "https://pypi.org/project/iprange-python/", "platform": "", "project_url": "https://pypi.org/project/iprange-python/", "project_urls": { "Homepage": "https://github.com/lucasrodcosta/iprange-python" }, "release_url": "https://pypi.org/project/iprange-python/0.0.7/", "requires_dist": null, "requires_python": "", "summary": "Redis as a storage for IP range", "version": "0.0.7" }, "last_serial": 4083263, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "e5af55785b4a0178348800320e648e44", "sha256": "b22d94eef9170df86addcb9baebfacfcd86d5d7af659db7b65817dbbc7409c53" }, "downloads": -1, "filename": "iprange_python-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "e5af55785b4a0178348800320e648e44", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3653, "upload_time": "2018-04-14T21:08:36", "url": "https://files.pythonhosted.org/packages/4f/d8/4de235603fffb7182ad73c32a4ffeacd1fa88fd7ed189f51066497459553/iprange_python-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "75de784c435cff461aa05dbc9be81853", "sha256": "94597ff6af637605a2dcf64c056de3c5974d3d2346cc0ff44d4636c4c30a2d41" }, "downloads": -1, "filename": "iprange-python-0.0.2.tar.gz", "has_sig": false, "md5_digest": "75de784c435cff461aa05dbc9be81853", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2800, "upload_time": "2018-04-14T21:08:37", "url": "https://files.pythonhosted.org/packages/c3/92/7c509202d76bc08abd85253310fb56d465e97199176c72de0d33d80dbae5/iprange-python-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "97cc939ea52b3902d5de16aaf1ad35d7", "sha256": "1a726e6b04834d74aa6b4eb4b19a094b8b8621b0d972d55d10be13b1cd07b346" }, "downloads": -1, "filename": "iprange_python-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "97cc939ea52b3902d5de16aaf1ad35d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3657, "upload_time": "2018-04-16T13:06:06", "url": "https://files.pythonhosted.org/packages/9d/c2/c5550ac6bd466e2c8075ebde2bc950e4c3d34332e9c4f4a47104d414ac39/iprange_python-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cf8f8789ae7bb7b7d2a06d761994291", "sha256": "59834b7bf2ac3f1db34b7d9d0150652b8e732769b6a0af5d7c5156f6032fad77" }, "downloads": -1, "filename": "iprange-python-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3cf8f8789ae7bb7b7d2a06d761994291", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2813, "upload_time": "2018-04-16T13:06:07", "url": "https://files.pythonhosted.org/packages/41/26/7fa130b008bac6b5fe7d58c57cd35c17c68e4e608f7dd18ff3b47a754370/iprange-python-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3e20d4e3bb8f8ba349216d223f09f8e2", "sha256": "d74ab611ee056d770fd8ec6b2ae4ab5b29281a30de9d57583c3c573ac39afd7f" }, "downloads": -1, "filename": "iprange-python-0.0.4.tar.gz", "has_sig": false, "md5_digest": "3e20d4e3bb8f8ba349216d223f09f8e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2950, "upload_time": "2018-04-25T18:26:37", "url": "https://files.pythonhosted.org/packages/35/2f/93b07b699ad9497c459c663c9d3212f7181fcb926134a00cbcacbb2fa605/iprange-python-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "3b4ad19da1f5e5dc0fba745e14c27241", "sha256": "fb80201f47a9946e7a74969fd820f0c6a9bc50ee431edf05fac1b17f9ea75679" }, "downloads": -1, "filename": "iprange-python-0.0.5.tar.gz", "has_sig": false, "md5_digest": "3b4ad19da1f5e5dc0fba745e14c27241", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2928, "upload_time": "2018-04-25T18:32:08", "url": "https://files.pythonhosted.org/packages/0f/b1/57ce7cd70badeeda978dc32202c3e78a63844e3d7bf92954017ae386e8ba/iprange-python-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "fa84926f72e90c7732c3156901299318", "sha256": "ee585b98eed0b52b9d773632be44cc4be37dcbc7b771fcdc8eaf43b23fb61d5c" }, "downloads": -1, "filename": "iprange-python-0.0.6.tar.gz", "has_sig": false, "md5_digest": "fa84926f72e90c7732c3156901299318", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2927, "upload_time": "2018-04-25T18:33:49", "url": "https://files.pythonhosted.org/packages/69/b1/61f9d1f36a09ffb02803537310f659b8e499888519952cbc9419bb807ce7/iprange-python-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "cca88434282b6c4085b21da3d526f17d", "sha256": "08523f45f603ebdbc0b1405fe57721cc12d0c56fafdba69a6286ad1fde812f7e" }, "downloads": -1, "filename": "iprange-python-0.0.7.tar.gz", "has_sig": false, "md5_digest": "cca88434282b6c4085b21da3d526f17d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3257, "upload_time": "2018-07-19T18:18:27", "url": "https://files.pythonhosted.org/packages/d0/52/ec12b87a649cb3f6ed9ae91d5b4e46f477a6aebddb024059277572f878af/iprange-python-0.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cca88434282b6c4085b21da3d526f17d", "sha256": "08523f45f603ebdbc0b1405fe57721cc12d0c56fafdba69a6286ad1fde812f7e" }, "downloads": -1, "filename": "iprange-python-0.0.7.tar.gz", "has_sig": false, "md5_digest": "cca88434282b6c4085b21da3d526f17d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3257, "upload_time": "2018-07-19T18:18:27", "url": "https://files.pythonhosted.org/packages/d0/52/ec12b87a649cb3f6ed9ae91d5b4e46f477a6aebddb024059277572f878af/iprange-python-0.0.7.tar.gz" } ] }