{ "info": { "author": "Anthon van der Neut", "author_email": "a.van.der.neut@ruamel.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "appconfig\n=========\n\nThis module provides a way to easily add a config directory and file to an\napplication. The config directory can be used for additional\nuser specific data files.::\n\n\n\n.. example output clean.py\n\nBy default it uses `ruamel.yaml `_ \nfor reading and\nwriting the configuration files, as this library preserves any\ncomments added (which pythons own `ConfigParser` discards).\n\nThe basic invocation is::\n\n from __future__ import print_function\n\n import sys\n\n from ruamel.appconfig import AppConfig\n\n def to_stdout(*args):\n sys.stdout.write(' '.join(args))\n\n ac = AppConfig(\n 'appconfigbasic', # name of config diretory, normally the application name\n warning=to_stdout,\n )\n\n\n.. example code basic.py\n\nResulting in::\n\n created directory /home/a114/.config/appconfigbasic\n\n\n.. example output basic.py\n\nBy default (on Linux/macOS) the config directory is created under\n``~/.config``, and the default config file would be\n``~/.config/appconfigbasic/appconfigbasic.ini`` (the ``appconfigbasic``\nbeing the value passed to ``AppConfig()``. Before that it is\ntested if that file already exists, or whether\n``~/.appconfigbasic/appconfigbasic.ini`` or ``~/.appconfigbasic.ini``\nexists.\n\nOn windows the config directory is to be ``$APPDATA/appconfigbasic``\n\nInteraction with argparse\n-------------------------\n\n``AppConfig()`` has additional options to interact with `argparse\n`_ argument parsing:\n\n- it is able to fill in the defaults for application options\n (including those options for subparsers). \n- it can add a ``--config`` option to allow the user to specify an\n alternative path for the config file.\n- it can add a ``--save-defaults`` with which the user can save values\n for options specified on the commandline, to the config file. Global\n options are stored in the ``[global]`` section of the configuration\n file, options for subparsers in sections with the suparser name.\n\nAdding ``--config``\n+++++++++++++++++++\n\nTo get this option added, pass in the parser and set\nthe ``filename`` parameter to the ``AppConfig.check`` attribute::\n\n from __future__ import print_function\n\n from argparse import ArgumentParser\n from ruamel.appconfig import AppConfig\n\n parser = ArgumentParser()\n\n ac = AppConfig(\n 'appconfigconfig',\n parser=parser, # needed to set new options\n filename=AppConfig.check, # sets --config option\n )\n\n parser.parse_args(['--help'])\n\n.. example code addconfig.py\n\nResulting in::\n\n usage: addconfig.py [-h] [--config FILE]\n\n optional arguments:\n -h, --help show this help message and exit\n --config FILE set FILE as configuration file\n [~/.config/appconfigconfig/appconfigconfig.ini]\n\n\n.. example output addconfig.py\n\nSetting defaults and adding ``--save-defaults``\n+++++++++++++++++++++++++++++++++++++++++++++++\n\nTo add the saving the defaults to the config file::\n\n from __future__ import print_function\n\n from argparse import ArgumentParser\n from ruamel.appconfig import AppConfig\n\n parser = ArgumentParser()\n\n parser.add_argument('--delete', '-d', default='bla',\n help='delete a file (default: %(default)s)')\n parser.add_argument('--owner', default='itsme',\n help='set owner (default: %(default)s)')\n parser.add_argument('--force', action='store_true',\n help='force action (default: %(default)s)')\n ac = AppConfig(\n 'addconfigsave',\n parser=parser, # needed to set new options\n filename=AppConfig.check, # sets --config option\n add_save=True, # add save option\n )\n ac.set_defaults() # set the ArgumentParser() defaults\n # and save to config file\n args = ac.parse_args(['--delete', 'two', '--save-defaults'])\n\n with open(ac.get_file_name()) as fp:\n print(fp.read())\n\n.. example code addsave.py\n\nResulting in::\n\n [global]\n delete = two\n owner = itsme\n force = False\n\n\n\n.. example output addsave.py\n\n\nInteraction with ``ruamel.std.argparse`` decorators\n---------------------------------------------------\n\nSince the ``ruamel.std.argparse`` decorator is a wrapper\naround normal argparse usage, adding ``AppConfig()`` is easy::\n\n from __future__ import print_function\n\n import sys\n import os\n\n from ruamel.std.argparse import ProgramBase, option, sub_parser, version, \\\n SmartFormatter\n\n\n class TestCmd(ProgramBase):\n def __init__(self):\n super(TestCmd, self).__init__(\n formatter_class=SmartFormatter\n )\n\n # you can put these on __init__, but subclassing TestCmd\n # will cause that to break\n @option('--quiet', '-q', help='suppress verbosity', action='store_true',\n global_option=True)\n @version('version: 1.2.3')\n def _pb_init(self):\n # special name for which attribs are included in help\n pass\n\n def run(self):\n if self._args.func:\n return self._args.func()\n\n def parse_args(self, *args):\n from ruamel.appconfig import AppConfig\n app = 'addconfigcomplex'\n # pre populate config file\n with open(os.path.expanduser(\n '~/.config/{}/{}.ini'.format(app, app)), 'w') as fp:\n fp.write('[readit]\\nname=XYZ\\n')\n self._config = AppConfig(\n app,\n parser=self._parser, # self._parser set by ProgramBase\n filename=AppConfig.check, # sets --config option\n add_save=True, # add save option\n )\n self._config.set_defaults()\n self._parse_args(*args)\n\n @sub_parser(help='specific help for readit')\n @option('--name', default='abc',\n help='help for name (default: %(default)s)')\n def readit(self):\n print('calling readit')\n\n @sub_parser('writeit', help='help for writeit')\n @option('--target')\n def other_name(self):\n print('calling writeit')\n\n\n n = TestCmd()\n n.parse_args(['readit', '--help']) # normaly no parameters -> sys.argv\n n.run() # never reached\n\n.. example code complex.py\n\nWith outputs (please note the XYZ as default, because of the config \nfile being written before the ``AppConfig`` instantiation)::\n\n usage: complex.py readit [-h] [--name NAME] [--quiet] [--save-defaults]\n\n optional arguments:\n -h, --help show this help message and exit\n --name NAME help for name (default: XYZ)\n --quiet, -q suppress verbosity\n --save-defaults save option values as defaults to config file\n\n\n.. example output complex.py\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/ruamel/appconfig", "keywords": "", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "ruamel.appconfig", "package_url": "https://pypi.org/project/ruamel.appconfig/", "platform": "", "project_url": "https://pypi.org/project/ruamel.appconfig/", "project_urls": { "Homepage": "https://bitbucket.org/ruamel/appconfig" }, "release_url": "https://pypi.org/project/ruamel.appconfig/0.5.4/", "requires_dist": null, "requires_python": "", "summary": "create and read configuration dir/file, set argparse (sub)parser defaults from config", "version": "0.5.4" }, "last_serial": 4004421, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "d8873f693d5eea67f96fcf9cbabde5e2", "sha256": "98a72b46b0815ffa65f632ca3c7132ad98b2bd324a4b10d64f555ee16dfa2887" }, "downloads": -1, "filename": "ruamel.appconfig-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d8873f693d5eea67f96fcf9cbabde5e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9413, "upload_time": "2014-10-25T20:02:31", "url": "https://files.pythonhosted.org/packages/6e/b6/88ac181e19f4b72a9e14d32981e034cdb17d803dd049c463466d9c714a5c/ruamel.appconfig-0.1.2.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "950ffd9ec1e0efcbef76dfa05a58b8f1", "sha256": "78947dda3cf912a2d19a59bef0d932b86b39ae099e718cb47911388ddd6f6f2c" }, "downloads": -1, "filename": "ruamel.appconfig-0.2.tar.gz", "has_sig": false, "md5_digest": "950ffd9ec1e0efcbef76dfa05a58b8f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10494, "upload_time": "2014-12-14T10:27:56", "url": "https://files.pythonhosted.org/packages/2f/0f/03d21c0d513c34a93bc74cae675e2f6f1939164d5ed58c303ba7b101bd56/ruamel.appconfig-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "636c6d6893cba7646ed573c6fa97bae1", "sha256": "a012ede436a4dd6033aa519ca65e927b32db881f951b16fefacbda077db46851" }, "downloads": -1, "filename": "ruamel.appconfig-0.2.1.tar.gz", "has_sig": false, "md5_digest": "636c6d6893cba7646ed573c6fa97bae1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9980, "upload_time": "2015-01-14T21:09:36", "url": "https://files.pythonhosted.org/packages/00/d8/d99995900e0386027628a3b526005cd277698760f4b08c00184b08628993/ruamel.appconfig-0.2.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "f86438afed4da39600e5c063854401c1", "sha256": "3a8d5e7ba103ea87c3846774b23720fd9b50c100bf10a23cefc2ccb82a8bcbea" }, "downloads": -1, "filename": "ruamel.appconfig-0.3.tar.gz", "has_sig": false, "md5_digest": "f86438afed4da39600e5c063854401c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10735, "upload_time": "2015-08-09T13:06:08", "url": "https://files.pythonhosted.org/packages/c4/d5/634adcd50620b582e7b52fd92219d1f1549be8aebdbe874b656e21ee6859/ruamel.appconfig-0.3.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "76bc44fe8acf177df3a6666633b9ac60", "sha256": "b751eb3310782bf53dfcec47785db3c31339eab66e232bcc936aa01668047615" }, "downloads": -1, "filename": "ruamel.appconfig-0.3.2.tar.gz", "has_sig": false, "md5_digest": "76bc44fe8acf177df3a6666633b9ac60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10774, "upload_time": "2015-08-27T09:11:49", "url": "https://files.pythonhosted.org/packages/5e/73/b683510669cff2f6b9c3acfac585b02200e4fd93b8d376cca4b6a4ca81b0/ruamel.appconfig-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "c98b47583c163b0570f6e25a6352a96c", "sha256": "fef7fb8994c6cc64a47bf8fda0942146079387819486ed42e5245b3a778a117b" }, "downloads": -1, "filename": "ruamel.appconfig-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c98b47583c163b0570f6e25a6352a96c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12637, "upload_time": "2015-08-29T06:25:38", "url": "https://files.pythonhosted.org/packages/bf/6b/a5591af9157744dc1fc6aca6ea609bb303a1e21b2fb7c74269d750eda14e/ruamel.appconfig-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18d9b9d7f49d62963ad6fc682e6658ba", "sha256": "5f4b3a05da5066274694f1b26dadefa0603230e22d945b8d3bedbc38f29031e0" }, "downloads": -1, "filename": "ruamel.appconfig-0.4.0.tar.gz", "has_sig": false, "md5_digest": "18d9b9d7f49d62963ad6fc682e6658ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14795, "upload_time": "2015-08-29T06:25:33", "url": "https://files.pythonhosted.org/packages/ec/84/bc0675137ff373c0a2b29fb78668fd2e0c881cda0b3aeb5febfeb9332fbd/ruamel.appconfig-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "2fcbb5134d481911c2a76d5ba96a866c", "sha256": "d6d67c8591c01492f7d7deb130df8738de3597e349a328caaa7bcf6934c909b3" }, "downloads": -1, "filename": "ruamel.appconfig-0.4.2.tar.gz", "has_sig": false, "md5_digest": "2fcbb5134d481911c2a76d5ba96a866c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16086, "upload_time": "2016-01-03T11:54:52", "url": "https://files.pythonhosted.org/packages/73/fe/f6c019a8662dccaf40745035d5e5bead98756fb1cedb9426e9be93187d9e/ruamel.appconfig-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "3a3f56dc36f135fdc4e95befb7be3ae2", "sha256": "dbf8e39357e5c1a397d53747bb3a752c1a854a3d099a5a2dcc60c73f8e608f1d" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a3f56dc36f135fdc4e95befb7be3ae2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15107, "upload_time": "2016-02-22T07:37:35", "url": "https://files.pythonhosted.org/packages/b5/58/f962a3dccb0e3ee1163de42e4f2f7d6e84cfdc71ff766ac0d510c405e07d/ruamel.appconfig-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d3183fe97502c456a2443bd61a5f20f2", "sha256": "7898604ea43b6215a72d1ed2c55ccaaee31d7220e6384c36d6910cb5c318af4f" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d3183fe97502c456a2443bd61a5f20f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18218, "upload_time": "2016-02-22T07:37:45", "url": "https://files.pythonhosted.org/packages/58/0c/d2196214ef36daff635cd3090d5fbade067ede1374b03f0ba281f7506d47/ruamel.appconfig-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "e2c3b8aaac42728bb3f73382eb70a2a9", "sha256": "2944ff4f134d62cae6bb3e43600d2dd5070553ab9742bb6246014059f9d9b471" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2c3b8aaac42728bb3f73382eb70a2a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15111, "upload_time": "2016-02-22T07:51:09", "url": "https://files.pythonhosted.org/packages/a0/6f/9a048a6c1f34cef8f00fd61a3c9c0bfcbbceb63f7d134b16554af42c9ade/ruamel.appconfig-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e484d4d429b2132aa9edd96e7813fbf6", "sha256": "dd81593ac42177d006fc0e49a48dcc9b62361b5d8f0e50cbbe85dd366a512b62" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.1.tar.gz", "has_sig": false, "md5_digest": "e484d4d429b2132aa9edd96e7813fbf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18209, "upload_time": "2016-02-22T07:51:15", "url": "https://files.pythonhosted.org/packages/8f/bd/9316a455f928bd63e30239b98e9675cd258dc6d92a0c3a98be9ea0aea7e8/ruamel.appconfig-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "80b4890a2e085d6a72d31cc528a05ef4", "sha256": "24fcf2440a0f053602c515f288ab6fd51ec90e246a4b3fb4aaa5d37224c8a22b" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "80b4890a2e085d6a72d31cc528a05ef4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15303, "upload_time": "2016-02-24T10:58:32", "url": "https://files.pythonhosted.org/packages/50/4b/05fec3e7adb3c1528e43db6136292ecce7cb8adb0e3da6fee5b21062064c/ruamel.appconfig-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5468729376476985614e5afe0185e06", "sha256": "897b23389e738451f1eb0b5fe30018a2e16ed425b536552308d54ee907cedd42" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.2.tar.gz", "has_sig": false, "md5_digest": "d5468729376476985614e5afe0185e06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18467, "upload_time": "2016-02-24T10:58:38", "url": "https://files.pythonhosted.org/packages/5f/5a/a0e0fa3f977dc453b8fa9d0ba38c81b3321a598fa5e14f5bd252117b7c48/ruamel.appconfig-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "a47211282bb377772daba3975de22a7c", "sha256": "35eea2a59f6c8581cafc4a447a4417daec187fb59b575ad42ed2e7feac0e3934" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a47211282bb377772daba3975de22a7c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15348, "upload_time": "2016-08-01T07:54:55", "url": "https://files.pythonhosted.org/packages/5a/d1/e1c0dd10b2bff60ff3abb0ee8a370cb4951f0ad996b6289c0a4ba267f210/ruamel.appconfig-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e7b6b05c830ceced9732684c75fcbec", "sha256": "12dced835336e810e6541c2779fc809e6f9f13c3d935220dcec0287fb4aefc72" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.3.tar.gz", "has_sig": false, "md5_digest": "1e7b6b05c830ceced9732684c75fcbec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18677, "upload_time": "2016-08-01T07:54:57", "url": "https://files.pythonhosted.org/packages/12/18/ff13813ef0d347f23da28f46d701e5da346d59e5e9dfb319558c873f18c8/ruamel.appconfig-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "878d0736e21ac298a42f21a8dfc88bca", "sha256": "d65f8589abafd45398944e5afa787ab4052d9a71d81e8445af536bf4943788e4" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "878d0736e21ac298a42f21a8dfc88bca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15487, "upload_time": "2018-06-26T16:57:45", "url": "https://files.pythonhosted.org/packages/72/1f/c668366b57f9826b2d5c365e25b51f0d55bd3ee734be5f6ad3950ecdef87/ruamel.appconfig-0.5.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f031b371080acc7a3c386df774679770", "sha256": "65cb9edbe233470a09dec961c8536bae0cdab5ba645b66405953ecafc8828002" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.4.tar.gz", "has_sig": false, "md5_digest": "f031b371080acc7a3c386df774679770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21364, "upload_time": "2018-06-26T16:57:47", "url": "https://files.pythonhosted.org/packages/75/92/4148fdc136d8b3af508d23a0fb7a584ff1d84b1e21c1cadfbe0673e5b0ac/ruamel.appconfig-0.5.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "878d0736e21ac298a42f21a8dfc88bca", "sha256": "d65f8589abafd45398944e5afa787ab4052d9a71d81e8445af536bf4943788e4" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "878d0736e21ac298a42f21a8dfc88bca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15487, "upload_time": "2018-06-26T16:57:45", "url": "https://files.pythonhosted.org/packages/72/1f/c668366b57f9826b2d5c365e25b51f0d55bd3ee734be5f6ad3950ecdef87/ruamel.appconfig-0.5.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f031b371080acc7a3c386df774679770", "sha256": "65cb9edbe233470a09dec961c8536bae0cdab5ba645b66405953ecafc8828002" }, "downloads": -1, "filename": "ruamel.appconfig-0.5.4.tar.gz", "has_sig": false, "md5_digest": "f031b371080acc7a3c386df774679770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21364, "upload_time": "2018-06-26T16:57:47", "url": "https://files.pythonhosted.org/packages/75/92/4148fdc136d8b3af508d23a0fb7a584ff1d84b1e21c1cadfbe0673e5b0ac/ruamel.appconfig-0.5.4.tar.gz" } ] }