{ "info": { "author": "Aaron Bach", "author_email": "bachya1208@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n# \u2600\ufe0f pyairvisual: a thin Python wrapper for the AirVisual\u00a9 API\n\n[![Travis CI](https://travis-ci.org/bachya/pyairvisual.svg?branch=master)](https://travis-ci.org/bachya/pyairvisual)\n[![PyPi](https://img.shields.io/pypi/v/pyairvisual.svg)](https://pypi.python.org/pypi/pyairvisual)\n[![Version](https://img.shields.io/pypi/pyversions/pyairvisual.svg)](https://pypi.python.org/pypi/pyairvisual)\n[![License](https://img.shields.io/pypi/l/pyairvisual.svg)](https://github.com/bachya/pyairvisual/blob/master/LICENSE)\n[![Code Coverage](https://codecov.io/gh/bachya/pyairvisual/branch/master/graph/badge.svg)](https://codecov.io/gh/bachya/pyairvisual)\n[![Maintainability](https://api.codeclimate.com/v1/badges/948e4e3c84e5c49826f1/maintainability)](https://codeclimate.com/github/bachya/pyairvisual/maintainability)\n[![Say Thanks](https://img.shields.io/badge/SayThanks-!-1EAEDB.svg)](https://saythanks.io/to/bachya)\n\n`pyairvisual` is a simple, clean, well-tested library for interacting with\n[AirVisual](https://www.airvisual.com/) to retrieve air quality information.\n\n# PLEASE READ: Version 2.0.0 and Beyond\n\nVersion 2.0.0 of `pyairvisual` makes several breaking, but necessary changes:\n\n* Moves the underlying library from\n [Requests](http://docs.python-requests.org/en/master/) to\n [aiohttp](https://aiohttp.readthedocs.io/en/stable/)\n* Changes the entire library to use `asyncio`\n* Makes 3.6 the minimum version of Python required\n\nIf you wish to continue using the previous, synchronous version of\n`pyairvisual`, make sure to pin version 1.0.0.\n\n# Python Versions\n\n`pyairvisual` is currently supported on:\n\n* Python 3.6\n* Python 3.7\n\n# Installation\n\n```python\npip install pyairvisual\n```\n\n# API Key\n\nYou can get an AirVisual API key from\n[the AirVisual API site](https://www.airvisual.com/user/api). Depending on\nthe plan you choose, more functionality will be available from the API:\n\n## Community\n\nThe Community Plan gives access to:\n\n* List supported countries\n* List supported states\n* List supported cities\n* Get data from the nearest city based on IP address\n* Get data from the nearest city based on latitude/longitude\n* Get data from a specific city\n\n## Startup\n\nThe Startup Plan gives access to:\n\n* List supported stations in a city\n* Get data from the nearest station based on IP address\n* Get data from the nearest station based on latitude/longitude\n* Get data from a specific station\n\n## Enterprise\n\nThe Enterprise Plan gives access to:\n\n* Get a global city ranking of air quality\n\n# Usage\n\n`pyairvisual` starts within an\n[aiohttp](https://aiohttp.readthedocs.io/en/stable/) `ClientSession`:\n\n```python\nimport asyncio\n\nfrom aiohttp import ClientSession\n\nfrom pyairvisual import Client\n\n\nasync def main() -> None:\n \"\"\"Create the aiohttp session and run the example.\"\"\"\n async with ClientSession() as websession:\n # YOUR CODE HERE\n\n\nasyncio.get_event_loop().run_until_complete(main())\n```\n\nCreate a client and get to work:\n\n```python\nimport asyncio\n\nfrom aiohttp import ClientSession\n\nfrom pyairvisual import Client\n\n\nasync def main() -> None:\n \"\"\"Create the aiohttp session and run the example.\"\"\"\n async with ClientSession() as websession:\n # If an API key isn't provided, only Nodes can be queried; everything else\n # requires an API key:\n client = Client(websession, api_key='')\n\n # Get data based on the city nearest to your IP address:\n data = await client.data.nearest_city()\n\n # ...or get data based on the city nearest to a latitude/longitude:\n data = await client.data.nearest_city(\n latitude=39.742599, longitude=-104.9942557)\n\n # ...or get it explicitly:\n data = await client.data.city(\n city='Los Angeles', state='California', country='USA')\n\n # If you have the appropriate API key, you can also get data based on\n # station (nearest or explicit):\n data = await client.data.nearest_station()\n data = await client.data.nearest_station(\n latitude=39.742599, longitude=-104.9942557)\n data = await client.data.station(\n station='US Embassy in Beijing',\n city='Beijing',\n state='Beijing',\n country='China')\n\n # With the appropriate API key, you can get an air quality ranking:\n data = await client.data.ranking()\n\n # pyairvisual gives you several methods to look locations up:\n countries = await client.supported.countries()\n states = await client.supported.states('USA')\n cities = await client.supported.cities('USA', 'Colorado')\n stations = await client.supported.stations('USA', 'Colorado', 'Denver')\n\n # AirVisual Nodes can also be queried by ID\n data = await client.api.node('12345abcdef')\n\n\nasyncio.get_event_loop().run_until_complete(main())\n```\n\nCheck out `example.py`, the tests, and the source files themselves for method\nsignatures and more examples.\n\n# Contributing\n\n1. [Check for open features/bugs](https://github.com/bachya/pyairvisual/issues)\n or [initiate a discussion on one](https://github.com/bachya/pyairvisual/issues/new).\n2. [Fork the repository](https://github.com/bachya/pyairvisual/fork).\n3. Install the dev environment: `make init`.\n4. Enter the virtual environment: `pipenv shell`\n5. Code your new feature or bug fix.\n6. Write a test that covers your new functionality.\n7. Run tests and ensure 100% code coverage: `make coverage`\n8. Add yourself to `AUTHORS.md`.\n9. Submit a pull request!\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bachya/pyairvisual", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyairvisual", "package_url": "https://pypi.org/project/pyairvisual/", "platform": "", "project_url": "https://pypi.org/project/pyairvisual/", "project_urls": { "Homepage": "https://github.com/bachya/pyairvisual" }, "release_url": "https://pypi.org/project/pyairvisual/3.0.2/", "requires_dist": [ "aiohttp" ], "requires_python": ">=3.6.0", "summary": "A simple API for AirVisual air quality data", "version": "3.0.2" }, "last_serial": 5881244, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f55889b891842d94c0f4909692500e2e", "sha256": "3170bd1a7bdb98a2daa4c51921e75d5c6b53a854d9999f9575ae6e87a8645ca0" }, "downloads": -1, "filename": "pyairvisual-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f55889b891842d94c0f4909692500e2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5491, "upload_time": "2017-09-04T20:02:10", "url": "https://files.pythonhosted.org/packages/08/28/9a56ddde419b83c688e34584246b2d60464739d63aa4788ba29caf7932ae/pyairvisual-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4690abfff5882c0807de5884eece8449", "sha256": "db53bb316427f2f15899125174a2c542647780391ccdebcbd33ba09e8c98d151" }, "downloads": -1, "filename": "pyairvisual-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4690abfff5882c0807de5884eece8449", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3942, "upload_time": "2017-09-04T20:02:16", "url": "https://files.pythonhosted.org/packages/5f/bf/e24886503bbb95bc8f7f4729b34c40f162ad96baff0d4bc989b679164e68/pyairvisual-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "9490a1ef28f531f1530091400c004a51", "sha256": "1d5bc85f4f5ed1f42330279f6babb66871e1fb8b66715408acf37ddfc2dab212" }, "downloads": -1, "filename": "pyairvisual-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9490a1ef28f531f1530091400c004a51", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5496, "upload_time": "2017-09-23T22:03:38", "url": "https://files.pythonhosted.org/packages/19/38/a43e4a24cd58e728cb3c2253cb12d743fc3864fcbe88579a24b9472a82bd/pyairvisual-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e26f0ac05d2f8ea5725dd45d6080796", "sha256": "4906bfe93ed8551f949d66471748a84ca1c1f4d866055bc4016dc69d456c0cc2" }, "downloads": -1, "filename": "pyairvisual-1.0.0.tar.gz", "has_sig": false, "md5_digest": "7e26f0ac05d2f8ea5725dd45d6080796", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3953, "upload_time": "2017-09-23T22:03:39", "url": "https://files.pythonhosted.org/packages/25/f9/c840939b69890e01238d62798a767a76b91a780b47a7840a59779cd105f4/pyairvisual-1.0.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "9a93af593c0c3fb030ea0ca77e103d74", "sha256": "9d5e09eb206c667b65eba1faaf3e0bf91137571ab37932a0c419c71b2c6a6222" }, "downloads": -1, "filename": "pyairvisual-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "9a93af593c0c3fb030ea0ca77e103d74", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.5.0", "size": 6038, "upload_time": "2018-06-11T21:56:18", "url": "https://files.pythonhosted.org/packages/ce/27/bbfcc2dbd44c8d8df458c4baf763fc0c97f1c6bc723999bb3060105b2780/pyairvisual-2.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e902ed898bdca21b556dfbd07b68ccf5", "sha256": "4f3ca41c30d9bae362dc6fdf649dab9fcaf415c01d49dd4d1f98f8487faa40c6" }, "downloads": -1, "filename": "pyairvisual-2.0.0.tar.gz", "has_sig": false, "md5_digest": "e902ed898bdca21b556dfbd07b68ccf5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6057, "upload_time": "2018-06-11T21:56:19", "url": "https://files.pythonhosted.org/packages/c3/2e/47260ce5683ff163aa3cfc06042788934c2a313522ef158f4f96445de9c2/pyairvisual-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "f82ba96c23a981e535c3f43ebff5da74", "sha256": "94c6da88ff54564bdf1332b02c79dfc98434901f0bf24a9ad04363ca62ab0800" }, "downloads": -1, "filename": "pyairvisual-2.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f82ba96c23a981e535c3f43ebff5da74", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.5.0", "size": 6295, "upload_time": "2018-06-12T14:36:19", "url": "https://files.pythonhosted.org/packages/8d/dd/bd9db698490efb80ff6df5dd4f47322ab369d38f4ff5822766ac9be570ed/pyairvisual-2.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd30a4c0fed6b31d845defd3406f8de5", "sha256": "9323c367c5cf484c4fdb24525cc428804cf493a2f190c67500c74d63eaa0033d" }, "downloads": -1, "filename": "pyairvisual-2.0.1.tar.gz", "has_sig": false, "md5_digest": "bd30a4c0fed6b31d845defd3406f8de5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6422, "upload_time": "2018-06-12T14:36:20", "url": "https://files.pythonhosted.org/packages/3a/2f/243568b6d5164359fbcafb74fa9272599e671a6f9b465c658e76cb61376a/pyairvisual-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "83af1331eb792a8bfd5ac25904cd7850", "sha256": "a5408ccec2749f5f40da06b976ae42af67094aaf9b16d1b053069efa7bdecb19" }, "downloads": -1, "filename": "pyairvisual-2.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "83af1331eb792a8bfd5ac25904cd7850", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6.0", "size": 6353, "upload_time": "2018-09-24T18:08:55", "url": "https://files.pythonhosted.org/packages/c2/79/55ba1b79856d3b7bc0c459f957a78568afd75051ab4f7bb73378caf16381/pyairvisual-2.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "000dc4e4629802eb6f6a5e6b4e39cd02", "sha256": "e4c4a202b2580dc195933d6897436d64cb6f58f7d3cf7116a5d4b250bdf5cca1" }, "downloads": -1, "filename": "pyairvisual-2.0.2.tar.gz", "has_sig": false, "md5_digest": "000dc4e4629802eb6f6a5e6b4e39cd02", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6342, "upload_time": "2018-09-24T18:08:57", "url": "https://files.pythonhosted.org/packages/1d/bc/f940d784961381f340fdeb358ef54224d7e484e271c360e5a4c66e854feb/pyairvisual-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "12630468161a015440ac8e6db99961e6", "sha256": "3d0b32a324133de2e8d06dd153e5dba88ca1b6cb5f60cfb9b674a0da44638e9b" }, "downloads": -1, "filename": "pyairvisual-2.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "12630468161a015440ac8e6db99961e6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=3.6.0", "size": 6357, "upload_time": "2018-09-24T18:26:02", "url": "https://files.pythonhosted.org/packages/ea/60/9446607ec232c42eb32b85bbbe775d67ab072ada1790580edbbeb247934a/pyairvisual-2.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b3bf8d4d3a2bd9893a821d73c998bcf", "sha256": "610e386c870116e701ca3795ea998b1e506d12ed150f5d0252a62c85d405152e" }, "downloads": -1, "filename": "pyairvisual-2.0.3.tar.gz", "has_sig": false, "md5_digest": "8b3bf8d4d3a2bd9893a821d73c998bcf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6335, "upload_time": "2018-09-24T18:26:03", "url": "https://files.pythonhosted.org/packages/fe/93/132a0c10696176f0afe8bbb419de8067d0dd601e494eadacfb8c6ae218f9/pyairvisual-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "444995f186b914f8ea0a89eb5831690a", "sha256": "2d43317e0d267a4c64f79faabf369802660e6775216d281d6ca71a778bcb37a6" }, "downloads": -1, "filename": "pyairvisual-2.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "444995f186b914f8ea0a89eb5831690a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.3", "size": 6439, "upload_time": "2018-11-03T03:33:18", "url": "https://files.pythonhosted.org/packages/72/27/a0e18758f8a5a96ee08ff24651b774c23c14f20b3a513a8a601a769d1d1c/pyairvisual-2.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a394338b2b38aa054dcb4afc251c42ea", "sha256": "08893ee23cf62a7d1d9d5ef9b2cde8ac33956fafb255707b790fedeb7ee8dbc5" }, "downloads": -1, "filename": "pyairvisual-2.0.4.tar.gz", "has_sig": false, "md5_digest": "a394338b2b38aa054dcb4afc251c42ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 6442, "upload_time": "2018-11-03T03:33:19", "url": "https://files.pythonhosted.org/packages/f1/6f/303d63011e609f15f7892d187d9bb05887ddaa58b4cdb4e3b5baa3046d13/pyairvisual-2.0.4.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "24d2055402722defe04ac0b550e9dd98", "sha256": "746900d74fb4cbfad7ba2b78e6231b3857e2f3eef93e7b5ad549ec1cbd4586ee" }, "downloads": -1, "filename": "pyairvisual-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "24d2055402722defe04ac0b550e9dd98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.3", "size": 11593, "upload_time": "2019-02-16T03:20:59", "url": "https://files.pythonhosted.org/packages/61/c9/b5e9ac64de7f2d36858c8649e2942929c7c7ceeb6e33384085636f226a60/pyairvisual-3.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c684075164a188c5b1e3b252911398ac", "sha256": "62878c8a0cb02b161b1cadf2b4b4d2738231e3dd9ab21af9809e9c3d61136338" }, "downloads": -1, "filename": "pyairvisual-3.0.0.tar.gz", "has_sig": false, "md5_digest": "c684075164a188c5b1e3b252911398ac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 9308, "upload_time": "2019-02-16T03:21:01", "url": "https://files.pythonhosted.org/packages/c6/b7/085f569a752976330c31d1be1222a9d78864f9e4af114e515928862fd12e/pyairvisual-3.0.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "50325eb481fa0798b2e7f567f003d56c", "sha256": "d4c79fd35538774ac423b0ab5e1061715d316e0c997db04800eac95181d1f94d" }, "downloads": -1, "filename": "pyairvisual-3.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "50325eb481fa0798b2e7f567f003d56c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.3", "size": 11587, "upload_time": "2019-02-28T00:24:20", "url": "https://files.pythonhosted.org/packages/b9/70/13a1ce96f4fd98d6bf6443c9a65cdc7c93a50647e99cec0796de8f5f1eb4/pyairvisual-3.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db2ba93d1d565a9f8f12dbde9a4c4ca3", "sha256": "b7e330864bf4e7143ae53886e91124cf31e76470fd95f9e00ac287531d50e8d3" }, "downloads": -1, "filename": "pyairvisual-3.0.1.tar.gz", "has_sig": false, "md5_digest": "db2ba93d1d565a9f8f12dbde9a4c4ca3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.3", "size": 9302, "upload_time": "2019-02-28T00:24:21", "url": "https://files.pythonhosted.org/packages/01/c1/cabf63ae86d7423246951bacbd7aec586e3f158540e2e1b4039113c4a5f6/pyairvisual-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "ef0cd6306e30899e0b72e99a2bb30093", "sha256": "29a91da79466b8ff603f38312cec6e88b5fd9ffce70957e459196f63623148d5" }, "downloads": -1, "filename": "pyairvisual-3.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ef0cd6306e30899e0b72e99a2bb30093", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 11515, "upload_time": "2019-09-24T18:19:12", "url": "https://files.pythonhosted.org/packages/8a/32/5f570f7f0170940a4dcc8cd452b32e7bbdd03871907e0e87202b7a892f28/pyairvisual-3.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "283c22b1c5431b4fda298569907627ae", "sha256": "bb6db83aea6fd96faad2e2b0f971312508f7f48121196974e2e9844326c90e54" }, "downloads": -1, "filename": "pyairvisual-3.0.2.tar.gz", "has_sig": false, "md5_digest": "283c22b1c5431b4fda298569907627ae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9200, "upload_time": "2019-09-24T18:19:14", "url": "https://files.pythonhosted.org/packages/79/7e/5f6de934d05abe364006d1f5259f4e69124d0a2a4f03bfed66ce8e0c0871/pyairvisual-3.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ef0cd6306e30899e0b72e99a2bb30093", "sha256": "29a91da79466b8ff603f38312cec6e88b5fd9ffce70957e459196f63623148d5" }, "downloads": -1, "filename": "pyairvisual-3.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ef0cd6306e30899e0b72e99a2bb30093", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 11515, "upload_time": "2019-09-24T18:19:12", "url": "https://files.pythonhosted.org/packages/8a/32/5f570f7f0170940a4dcc8cd452b32e7bbdd03871907e0e87202b7a892f28/pyairvisual-3.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "283c22b1c5431b4fda298569907627ae", "sha256": "bb6db83aea6fd96faad2e2b0f971312508f7f48121196974e2e9844326c90e54" }, "downloads": -1, "filename": "pyairvisual-3.0.2.tar.gz", "has_sig": false, "md5_digest": "283c22b1c5431b4fda298569907627ae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9200, "upload_time": "2019-09-24T18:19:14", "url": "https://files.pythonhosted.org/packages/79/7e/5f6de934d05abe364006d1f5259f4e69124d0a2a4f03bfed66ce8e0c0871/pyairvisual-3.0.2.tar.gz" } ] }