Metadata-Version: 2.1
Name: confload
Version: 0.3
Summary: A tool to handle configuration
Home-page: https://github.com/divad1196/ConfLoad
Author: Gallay David
Author-email: davidtennis96@hotmail.com
License: UNKNOWN
Description: ConfLoad
        ========
        
        A tool to handle configurations
        
        `Pypi Linkl <https://pypi.org/project/confload>`__
        
        Support
        -------
        
        format:
        
        -  ini
        -  json
        -  yaml
        
        origins:
        
        -  url
        -  environment
        -  objects
        -  files
        
        Installation
        ------------
        
        .. code:: bash
        
            pip3 install confload
        
        Use
        ---
        
        .. code:: python
        
            from confload import Config
        
            # Construct config with default values
            cfg = Config({"test": 43})
        
            # load from yaml, json or ini specificly
            cfg.load_yaml("test.yml")
        
            # guess loading type from suffix
            cfg.load("test.ini")
        
            cfg["abcd"]["test4"]["test2"] = 4  # automaticly create dict if key does not exists
        
            dict(cfg)  # convertible to dict, best is to use dict method
            cfg.dict(copy=False)
        
            # update methods are currently merge and replace
            cfg["abcd"].merge(test4={"test3": 5})  # Merge recursively merge two dicts objects
            cfg["abcd"].replace(test4={"test3": 5})  # replace will replace objects as dict's update builtins method
            cfg["abcd"].update(test4={"test3": 5})  # use the strategy defined on cfg build
        
            # You can also load your config from an url (method's parameters are passed to requests.get method)
            cfg.request_json("my_site.com/config.json")
        
            # Or from your env
            cfg.env.json("MY_JSON_FILE")  # Precise the format
            cfg.env("MY_INI_FILE")  # or let it guess using the file suffix
        
            # you can also retrieve vars from env
            cfg.env.string("MY_VAR", default="not found", name="myvar")  # you can give the name to use in the config (default take env var name)
        
            # cfg.env.int, cfg.env.float also exists
            cfg.env.bool(...)  # Value are case INsensitive tested.
                               # True value are "on", "True" or any non nulle number
                               # False value are "off", "False" or 0
                    
            # we can get a list too
            cfg.list(...)
            # and cast the result
            cfg.list[int](...)  #  the value "1,2,3" becomes [1, 2, 3] and not ["1", "2", "3"]
        
            cfg.dump_json("myfile.json")  # can be yaml but not ini file
        
        Nb: most of the methods can be chained
        
        .. code:: python
        
            cfg = Config(...).update(...).env(...).load(...)
        
        Custom CLi parser
        -----------------
        
        `argparse <https://docs.python.org/3/library/argparse.html>`__,
        `click <https://click.palletsprojects.com/en/7.x/>`__ and many others
        are goods, but i found them too complicated for most of the used i had.
        
        Based on those two, here is another parser
        
        .. code:: python
        
            from confload.cli import Parser, SubParser, String, Int, Float, Bool, Toggle, List
        
        
            parser = Parser(
                # Positional values
                [
                    String("name"),
                    Int("abcde"),
                ],
        
                # Optional values
                [
                    String("lastname", aliases=["lastname", "l"]),
                    List("children", aliases=["child", "c"]),
                    Toggle("active", aliases=["active", "y"], default=False),
                ],
            )
        
        
            print(str(parser))
            print(parser.aliases)
            res = parser()
        
            print(res)
        
        Running
        ``python3 test_parser.py -l abcde --child foo,bar --lastname trew -c another -c some,other test 56``
        we get the following output
        
        .. code:: txt
        
            [OPTIONS] NAME ABCDE
            {'--lastname': lastname, '-l': lastname, '--child': children, '-c': children, '--active': active, '-y': active}
            {'active': False, 'name': 'test', 'abcde': 56, 'lastname': 'trew', 'children': ['foo', 'bar', 'another', 'some', 'other']}
        
        When we implement a tool, it is usefull to use subparser automaticly
        calling functions. (This is in progress)
        
        Futur
        -----
        
        -  add support for argparse
        -  documentation will be done, some change may appear as well.
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
