As soon as a formatter becomes big it has to be tested somehow but in many cases you don't necessarily want to depend on daf_butler so testing it is impossible (you must inherit from Formatter).
If you're not worried about swapping out persistence libraries, then I don't see why a type-defining package can't depend on daf_butler or, hypothetically, any number of other persistence libraries that it's compatible with. The example code you linked to in daf_base keeps the Butler-specific serialization code (and yes, I realize it's not a full-fledged Formatter) external to the classes being serialized, which seems like adequate separation of concerns.
Can you clarify exactly what problem you're trying to solve by factoring out a dependency on daf_butler? I assume it's a big one, if you're using language as strong as "impossible" or "no choice".
If you're not worried about swapping out persistence libraries, then I don't see why a type-defining package can't depend on daf_butler or, hypothetically, any number of other persistence libraries that it's compatible with. The example code you linked to in daf_base keeps the Butler-specific serialization code (and yes, I realize it's not a full-fledged Formatter) external to the classes being serialized, which seems like adequate separation of concerns.
Can you clarify exactly what problem you're trying to solve by factoring out a dependency on daf_butler? I assume it's a big one, if you're using language as strong as "impossible" or "no choice".