-
-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Recently, several dependencies were extracted into "extras", which I think was a great move. I only wish it would go further.
We are currently using benedict exclusively for the keypath functionality and some general dict-utility functionality like "flatten". Because we are using benedict, we get an additional 6 dependencies (benedict has 7, but we already have requests as a dependency). As far as I can tell, most of these dependencies are only used in special utility functions like "get_string" and similar.
To me, the scope of python-benedict is unclear. The dict functionality is very useful (and, I suspect, the main thing people use from benedict?), but there is a plethora of functions like "get_string", "get_slug", "get_phonenumber", "get_datetime", etc, that all seem extremely specific and niche, and add further dependencies. It is not clear to me what the imagined scope of benedict is; theoretically, you could add a "get_" method for any conceivable object defined in some other library ("get_social_security_number", "get_timestamp", "get_monetary_sum", etc), and it is not clear to me where benedict draws the line. For example, I see issue #249 mentioning support for encrypted data, and I wonder if this will mean that benedict will get additional methods which add more dependencies in the future. Supporting, e.g., parsing of phone numbers in what is to a large extent an extended-dict-handling library already seems to suggest feature creep. As a user, I would have loved it if benedict was just keypath/keyattr/keylist dict with no further dependencies, or if that basic functionality was one library, and then another library with the rest of the functionality was built on top of it.
We are at the point where we are considering developing some alternative to python-benedict simply because of the extra dependencies and us being unsure about the future direction/scope of benedict. Will more dependencies be shifted to extras? Will more dependencies be added to benedict? Is there any limit to the scope of things benedict will support?