pyinat / pyinaturalist

Python client for iNaturalist
https://pyinaturalist.readthedocs.io
MIT License
130 stars 17 forks source link

Create/update observations with Observation objects #545

Open JWCook opened 7 months ago

JWCook commented 7 months ago

Currently iNatClient.observations.create() and update() take individual keyword arguments, same as v1.create_observation(), but I would like it to optionally accept an Observation instead. This would be useful for observations loaded from a file (CSV, JSON, etc.) via pyinaturalist-convert. See also #542

A small problem is that only a subset of Observation attributes can be used to create a new observation. For example, you can't add identifications, comments, or a full Taxon record (aside from name/ID) that way. It might be sufficient to just ignore any extra attributes, and log a warning indicating which attributes were ignored. For example:

>>> obs = Observation(
...     ...,
...     identifications=[Identification(...)],
...     comments=[Comment(...)],
... )
>>> client.observations.create(obs)
'[WARNING] Read-only observation attributes ignored: identifications, comments'