cdgriffith/Box

Feature request: only one function for loading files

thmsklngr opened this issue · 3 comments

Hi,

another idea which came into my mind is to provide just one function for loading data into an instance. Currently there are a number of class methods for creating a new instance with a type of file, i.e. from_json, from_yaml, etc.

This could be simplified with one function and parse the file according the extension or an optional keyword parameter:

>>> config = Box.from_file('/this/is/my/datafile.yml')
# or
>>> config = Box.from_file('/this/is/my/datafile.txt', file_type='yaml')

Just an idea, I had a similar implementation in my own config parser, but not as sophisticated like your package python-box. It's really, really great, thanks for the efforts.

Regards, Thomas

Sorry for delay, This is actually already / still in discussion #195 . Feel free to add thoughts there!

I am also an IDIOT and forgot about my own code. There is box_from_file already!

https://github.com/cdgriffith/Box/blob/master/box/from_file.py#L94-#L96

from box import box_from_file

box_from_file(".black.toml") 

# Box({'tool': {'black': {'line-length': 120, 'target-version': ['py36', 'py37', 'py38'])

To clarify why it isn't a class function of, it's meant to be more powerful that it can return either a Box or BoxList as needed.

I am re-opening this becausse I need to add better docs for this in the wiki