144 got a bit messy, I think it makes sense to merge this cherry-pick instead.
What I was worried about in #144 was that the depenendency chain became too long, mainly through the dependency on URI::NamespaceMap, which brings in many things that could be optional, like UUID types.
I didn't at first realize that URI::NamespaceMap had that effect, so I thought I should remove some coercions from Attean to avoid it, and then, it didn't anyway.
So, either we can do this, or I can make more stuff optional in URI::NamespaceMap. Unless you are really worried about the dependency chain, I suggest we merge this PR.
URI::NamespaceMap has quite a lot of moving parts already, since the mapping libraries are optional, and further optionals make testing harder.
I think it should be possible to make some coercions optional later if we find it is needed.
144 got a bit messy, I think it makes sense to merge this cherry-pick instead.
What I was worried about in #144 was that the depenendency chain became too long, mainly through the dependency on URI::NamespaceMap, which brings in many things that could be optional, like UUID types.
I didn't at first realize that URI::NamespaceMap had that effect, so I thought I should remove some coercions from Attean to avoid it, and then, it didn't anyway.
So, either we can do this, or I can make more stuff optional in URI::NamespaceMap. Unless you are really worried about the dependency chain, I suggest we merge this PR.
URI::NamespaceMap has quite a lot of moving parts already, since the mapping libraries are optional, and further optionals make testing harder.
I think it should be possible to make some coercions optional later if we find it is needed.