Warnings with category for missing and unsupported arguments
If a source json bibliographic entry has missing arguments, the current implementation raises a TypeError complaining about the missing entry. This behavior can be problematic in workflows where the bibliographic entry is retrieved automatically (e.g., from api.crossref.org); in such cases it might be preferable to proceed to produce the best possible citation while warning the user about the missing arguments, rather than stopping the workflow.
The proposed solution introduces two warning categories, MissingArgumentWarning and UnsupportedArgumentWarning, that are emitted in the case of a missing argument and in the case of an unsupported argument. Using the warnings python module, the user may choose to deal with the warnings as they see best fit, e.g., by silencing the warning or turning the warning into an exception. (The UnsupportedArgumentWarning warning category is suggested in order to mirror the corresponding MissingArgumentWarning warning category, and give further user control on how they would like to handle this warning.)
The suggested pull request would change the default behavior from raising an exception on a missing argument to emitting a warning instead. I'm not sure how to keep the default behavior as raising an exception without messing with python warning filters at module load-time.