{ "info": { "author": "Nicolas No\u00e9", "author_email": "nicolas@niconoe.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "=============================\npyinaturalist\n=============================\n\n.. image:: https://badge.fury.io/py/pyinaturalist.png\n :target: http://badge.fury.io/py/pyinaturalist\n\n.. image:: https://www.travis-ci.com/inbo/pyinaturalist.svg?branch=master\n :target: https://www.travis-ci.com/inbo/pyinaturalist\n\n.. image:: https://readthedocs.org/projects/pyinaturalist/badge/?version=latest\n :target: https://pyinaturalist.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nPython client for the `iNaturalist APIs `_.\n\nStatus\n------\n\nWork in progress: features are implemented one by one, as time allows and as the authors needs them.\n\nThat being said, many things are already possible (searching observations, creating a new observation, ...) and\ncontributions are welcome!\n\nPython 3 only.\n\nExamples\n--------\n\nSearch all observations matching a criteria:\n--------------------------------------------\n\n.. code-block:: python\n\n from pyinaturalist.node_api import get_all_observations\n\n obs = get_all_observations(params={'user_id': 'niconoe'})\n\nsee `available parameters `_.\n\nFor authenticated API calls, you first need to obtain a token for the user:\n---------------------------------------------------------------------------\n\n\n.. code-block:: python\n\n from pyinaturalist.rest_api import get_access_token\n\n token = get_access_token(username='', password='',\n app_id='',\n app_secret=)\n\n\n\nNote: you'll need to `create an iNaturalist app `_.\n\nCreate a new observation:\n-------------------------\n\n.. code-block:: python\n\n from pyinaturalist.rest_api import create_observations\n\n params = {'observation':\n {'taxon_id': 54327, # Vespa Crabro\n 'observed_on_string': datetime.datetime.now().isoformat(),\n 'time_zone': 'Brussels',\n 'description': 'This is a free text comment for the observation',\n 'tag_list': 'wasp, Belgium',\n 'latitude': 50.647143,\n 'longitude': 4.360216,\n 'positional_accuracy': 50, # meters,\n\n # sets vespawatch_id (an observation field whose ID is 9613) to the value '100'.\n 'observation_field_values_attributes':\n [{'observation_field_id': 9613,'value': 100}],\n },\n }\n\n r = create_observations(params=params, access_token=token)\n\n new_observation_id = r[0]['id']\n\nUpload a picture for this observation:\n--------------------------------------\n.. code-block:: python\n\n from pyinaturalist.rest_api import add_photo_to_observation\n\n r = add_photo_to_observation(observation_id=new_observation_id,\n file_object=open('/Users/nicolasnoe/vespa.jpg', 'rb'),\n access_token=token)\n\nUpdate an existing observation of yours:\n----------------------------------------\n.. code-block:: python\n\n from pyinaturalist.rest_api import update_observation\n\n p = {'ignore_photos': 1, # Otherwise existing pictures will be deleted\n 'observation': {'description': 'updated description !'}}\n r = update_observation(observation_id=17932425, params=p, access_token=token)\n\n\nGet a list of all (globally available) observation fields:\n----------------------------------------------------------\n.. code-block:: python\n\n from pyinaturalist.rest_api import get_all_observation_fields\n\n r = get_all_observation_fields(search_query=\"DNA\")\n\nSets an observation field value to an existing observation:\n-----------------------------------------------------------\n.. code-block:: python\n\n from pyinaturalist.rest_api import put_observation_field_values\n\n put_observation_field_values(observation_id=7345179,\n observation_field_id=9613,\n value=250,\n access_token=token)\n\n\n\n\n\nHistory\n-------\n\n0.8.0 (2019-07-11)\n++++++++++++++++++\n\n* all functions now take an optional `user-agent `_ parameter in order to identify yourself to iNaturalist. If not set, `Pyinaturalist/` will be used.\n\n0.7.0 (2019-05-08)\n++++++++++++++++++\n\n* rest_api.delete_observation() now raises ObservationNotFound if the observation doesn't exists\n* minor dependencies update for security reasons\n\n0.6.0 (2018-11-15)\n++++++++++++++++++\n\n* New function: rest_api.delete_observation()\n\n0.5.0 (2018-11-05)\n++++++++++++++++++\n\n* New function: node_api.get_observation()\n\n0.4.0 (2018-11-05)\n++++++++++++++++++\n\n* create_observation() now raises exceptions in case of errors.\n\n0.3.0 (2018-11-05)\n++++++++++++++++++\n\n* update_observation() now raises exceptions in case of errors.\n\n0.2.0 (2018-10-31)\n++++++++++++++++++\n\n* Better infrastructure (type annotations, documentation, ...)\n* Dropped support for Python 2.\n* New function: update_observation()\n* rest_api.AuthenticationError is now exceptions.AuthenticationError\n\n\n0.1.0 (2018-10-10)\n++++++++++++++++++\n\n* First release on PyPI.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/inbo/pyinaturalist", "keywords": "pyinaturalist", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyinaturalist", "package_url": "https://pypi.org/project/pyinaturalist/", "platform": "", "project_url": "https://pypi.org/project/pyinaturalist/", "project_urls": { "Homepage": "https://github.com/inbo/pyinaturalist" }, "release_url": "https://pypi.org/project/pyinaturalist/0.8.0/", "requires_dist": [ "requests (>=2.21.0)", "typing (>=3.7.4)" ], "requires_python": "", "summary": "Python client for the iNaturalist APIs", "version": "0.8.0" }, "last_serial": 5517426, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ad35be0fcf64745d53ad6468da2d7560", "sha256": "8c905c0ab323dded1de2c789fbeee26e6900ef165a489671755f67c9ac69debc" }, "downloads": -1, "filename": "pyinaturalist-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad35be0fcf64745d53ad6468da2d7560", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7368, "upload_time": "2018-10-10T14:16:22", "url": "https://files.pythonhosted.org/packages/04/63/60a6c2736f0a66f94e75e08ca78cb568147559568725800a2abb32f7ed2a/pyinaturalist-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e3073b3fe48711cb81351073febb647", "sha256": "8e13375968affe252657c3328fdeba5420e97a013a8c6a714bbc47f7c323ce84" }, "downloads": -1, "filename": "pyinaturalist-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9e3073b3fe48711cb81351073febb647", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7516, "upload_time": "2018-10-10T14:16:23", "url": "https://files.pythonhosted.org/packages/9b/ef/2c4257965e2b1f2dab30b47a403b7202862c3e3dc7b36820d610c7bb4c8f/pyinaturalist-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f632655b6a34368cc73dc9d0839b7cf0", "sha256": "60ae66ef026f966f9fc0a76d6afb8485bc474613d44239ae9b39f3fc2db99e0c" }, "downloads": -1, "filename": "pyinaturalist-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f632655b6a34368cc73dc9d0839b7cf0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8142, "upload_time": "2018-10-31T15:06:05", "url": "https://files.pythonhosted.org/packages/77/07/e9900c137d5c79e32dcf31004836c0476ec0c2a51f14c5af419a2a608333/pyinaturalist-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b12c04903090d96844f3d8742bee01f", "sha256": "04438b53a6cefa81002ed563c18bdc9ce9748cd8b891498679799740c8833216" }, "downloads": -1, "filename": "pyinaturalist-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3b12c04903090d96844f3d8742bee01f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8573, "upload_time": "2018-10-31T15:06:06", "url": "https://files.pythonhosted.org/packages/e8/e1/b602c3daa2a1a5e88269b06d6df9c6dda9a2f6d8297f44a686ec59c235b2/pyinaturalist-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ce6b98ba164a8e706004cc8bbb824309", "sha256": "c0ef3b7f4cf8ff2d51e846208275c2c7f1c852d161af9f3c8a0d16d3ab1042da" }, "downloads": -1, "filename": "pyinaturalist-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ce6b98ba164a8e706004cc8bbb824309", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8278, "upload_time": "2018-11-05T08:59:36", "url": "https://files.pythonhosted.org/packages/cd/81/6b71ea252c5478e74ea0d57420226ab0ad57bec575823f0e32e8bc93046b/pyinaturalist-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5116f4590f10cdfff89fff07a4083c9f", "sha256": "e2f0d4228d9bc312e0b244ed7908a264988e29d73b18721d4ed51d7e08aea99c" }, "downloads": -1, "filename": "pyinaturalist-0.3.0.tar.gz", "has_sig": false, "md5_digest": "5116f4590f10cdfff89fff07a4083c9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8939, "upload_time": "2018-11-05T08:59:39", "url": "https://files.pythonhosted.org/packages/fc/9e/b2f85105d65161dd4d9b84fa62175b0083c1bed8e8649eac8bffa389b1b6/pyinaturalist-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "2f44d26967600cfe83409d0a9d8fa6a7", "sha256": "418de73a8824032080b075c14309aca6ebbd71f463286a88c1e97c2b63cced39" }, "downloads": -1, "filename": "pyinaturalist-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f44d26967600cfe83409d0a9d8fa6a7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8409, "upload_time": "2018-11-05T10:56:29", "url": "https://files.pythonhosted.org/packages/8e/ec/dea0cab68a07181607af74484264a8724fa6b6881038a5e57665c18d6352/pyinaturalist-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7c8f04dbac3568023e0be2e9f071980", "sha256": "865c349bfa1315011c9c6ab0ff00f0eff0ce4de7f7c9f836b1ed32660bae1a5e" }, "downloads": -1, "filename": "pyinaturalist-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c7c8f04dbac3568023e0be2e9f071980", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9401, "upload_time": "2018-11-05T10:56:32", "url": "https://files.pythonhosted.org/packages/d9/0d/56b29273787c9162597078ebc914f13dd76a9b3c92e80c2988f2e069c4ae/pyinaturalist-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "f52ff62dfd18bd22c9c6c96f8b9b2f57", "sha256": "1d08520441fc05c45f31e72863e81eddaa49c1dc8309b47b5d29d2b0df92268a" }, "downloads": -1, "filename": "pyinaturalist-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f52ff62dfd18bd22c9c6c96f8b9b2f57", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8600, "upload_time": "2018-11-05T14:53:36", "url": "https://files.pythonhosted.org/packages/0c/db/4f35525974f8d3a833f67045b3ff29a2101289950d38686ec1afb3c535b1/pyinaturalist-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bf65c70835880eebbb7368b7a7027a0", "sha256": "76807d35ef15ab96c7945cf51622d42896a4e49c9eee01ec68a05c0edb886556" }, "downloads": -1, "filename": "pyinaturalist-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0bf65c70835880eebbb7368b7a7027a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9633, "upload_time": "2018-11-05T14:53:40", "url": "https://files.pythonhosted.org/packages/fe/1a/76aa37d5e7bb6a80025a3441fec85f18897c69a878a7ec01a384797385e8/pyinaturalist-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "0e68ae488ae338b35479d1a5f9876417", "sha256": "e68fcdb865afa5d9cb815deb453f1a8921b5db7e9749d1f8200594848a75d834" }, "downloads": -1, "filename": "pyinaturalist-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e68ae488ae338b35479d1a5f9876417", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9029, "upload_time": "2018-11-15T12:14:00", "url": "https://files.pythonhosted.org/packages/a2/4d/d996fff11b1460c4a53c10f85e9b7080e3445534fc9e8af8b29c5934bb04/pyinaturalist-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce25e8462e3f1f475570542694fb7ef7", "sha256": "5f2cd716da97866f9e30b532111de7cbc1053da981fb689e009655a7e6050513" }, "downloads": -1, "filename": "pyinaturalist-0.6.0.tar.gz", "has_sig": false, "md5_digest": "ce25e8462e3f1f475570542694fb7ef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10131, "upload_time": "2018-11-15T12:14:04", "url": "https://files.pythonhosted.org/packages/a2/5f/85b4eaabdc9d2d2e2aa740decadf59cb2470991eaa5f598062b644965400/pyinaturalist-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "fba4eadf3a73e098f8bd43b92c79c92a", "sha256": "cd9179a3fa6aaed457140c4d16a82fe7463b91503da00dab168201c0192d1eb7" }, "downloads": -1, "filename": "pyinaturalist-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fba4eadf3a73e098f8bd43b92c79c92a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9392, "upload_time": "2019-05-08T10:02:18", "url": "https://files.pythonhosted.org/packages/7e/ea/13fc7f705bc54bd83ab1f5e3edddb551afff32ded8b2e4ad3e5760f0344b/pyinaturalist-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e931c37b451595a676ea3aeb817774c", "sha256": "833c1f96c7bfa4c27c6f5ca7c8ea65de6e92310a57d2f11eb2acbfb1438202c0" }, "downloads": -1, "filename": "pyinaturalist-0.7.0.tar.gz", "has_sig": false, "md5_digest": "3e931c37b451595a676ea3aeb817774c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10563, "upload_time": "2019-05-08T10:02:24", "url": "https://files.pythonhosted.org/packages/8d/82/5a6164180cf8e3d49b9272dca65a47b4a9c1512ed68e7a74f378eb7b1403/pyinaturalist-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "6f90b0f53783a56ed3d4efa77849ce62", "sha256": "b5150baa9989ef101712fbf016e1152e8c0ccfb66734e4c4f9a50fecaeb63a25" }, "downloads": -1, "filename": "pyinaturalist-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f90b0f53783a56ed3d4efa77849ce62", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9983, "upload_time": "2019-07-11T12:34:21", "url": "https://files.pythonhosted.org/packages/19/d1/ecf9ecc1cec675fd44cf6d72669c0ac026d9433244bf4e6eeec533825d4a/pyinaturalist-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d28ce977d0a9cfe8473241aa935ee22", "sha256": "f086baea8a04101362319ca0d6f64045b91b4e0d55895b9a3bf99b792f4d0c63" }, "downloads": -1, "filename": "pyinaturalist-0.8.0.tar.gz", "has_sig": false, "md5_digest": "1d28ce977d0a9cfe8473241aa935ee22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12278, "upload_time": "2019-07-11T12:34:22", "url": "https://files.pythonhosted.org/packages/13/ff/d3ac9c08f95e7381a9d97bf9a783343974c758ab0ece54c534ba6869f79c/pyinaturalist-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6f90b0f53783a56ed3d4efa77849ce62", "sha256": "b5150baa9989ef101712fbf016e1152e8c0ccfb66734e4c4f9a50fecaeb63a25" }, "downloads": -1, "filename": "pyinaturalist-0.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f90b0f53783a56ed3d4efa77849ce62", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9983, "upload_time": "2019-07-11T12:34:21", "url": "https://files.pythonhosted.org/packages/19/d1/ecf9ecc1cec675fd44cf6d72669c0ac026d9433244bf4e6eeec533825d4a/pyinaturalist-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d28ce977d0a9cfe8473241aa935ee22", "sha256": "f086baea8a04101362319ca0d6f64045b91b4e0d55895b9a3bf99b792f4d0c63" }, "downloads": -1, "filename": "pyinaturalist-0.8.0.tar.gz", "has_sig": false, "md5_digest": "1d28ce977d0a9cfe8473241aa935ee22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12278, "upload_time": "2019-07-11T12:34:22", "url": "https://files.pythonhosted.org/packages/13/ff/d3ac9c08f95e7381a9d97bf9a783343974c758ab0ece54c534ba6869f79c/pyinaturalist-0.8.0.tar.gz" } ] }