Closed richieadler closed 2 years ago
The main issue with this is that from_file
relies on the extension to know what transform it uses, it doesn't blindly guess.
from_str
would require just running everything on it and seeing what works, which can be handy but wrong. I personally don't like the unpredictability of it
from_str
would require just running everything on it and seeing what works, which can be handy but wrong. I personally don't like the unpredictability of it
How about this: determine the format from a mandatory parameter, but detect whether is a BoxList or a Box from the content? That was my main goal anyway.
Thinking about it a bit more, I think it would be safe to assume json standard (as that is the only converter in standard library), and have a parameter for changing type.
def box_from_string(content: str, string_type: str = "json") -> Union[Box, BoxList]:
"""
Parse the provided string into a Box or BoxList object as appropriate.
:param content: String to parse
:param string_type: manually specify file type: json, toml or yaml
:return: Box or BoxList
"""
Thoughs?
Thoughs?
Seems reasonable. (Sorry for the account confusion, it's the same person)
Added in 6.10.0 https://github.com/cdgriffith/Box/releases/tag/6.10.0
Sometimes it's not known beforehand if the value of a string will contain a list or a dict.
It would be useful to have a function to autodetect the required type (
Box
orBoxList
) as it is done forbox.from_file
.Alternatively, enhance
box.from_file
to accept a file-like (but in that case if you have astr
, you have to resort toio.StringIO
; a separate function, possible calledbox.from_str
, would be preferable).