Package: pymodconf
This is a Python package which enables to modularize configuration files.In configuration-based applications, it is sometimes desirable to group
sections in a configuration file. This can, for instance, be sections which are for a specific purpose, e.g. modules in
an application which shall be configurable.For this purpose,pymodconfadd the functionality to define customTags representing groups in a configuration
file.
For instance, if you have an application with multiple modules you can define the tagModule:and add that prefix to
each section in the configuration file describing a certain module.InstallationYou can find the latest version onPyPi. So simply usepipwithpipinstallpymodconfUsageThis following configuration file shows the feature set ofpymodconf:1:[Application]2:name=pymodconf3:string=Hello ${name}!4:list=One, Two, Three, Four6:[Some Section]7:opt=${Application:name}-section9:[Module: Test]10:log-dir= /tmp/test_moduleSectionsIn line[1]a new sectionApplicationis created with multiple options show in lines[2]-[3].Variable replacementDue to the fact thatpymodconfis based on theconfigparsermodule, the variable-replacement feature is available,
too. In line[3]a reference to an option in the same section is shown. If you want to reference an option in any
other section, you’ll have to specify the name of the section, as you can see in line[7].ListsIfpymodconffinds any commata in the value of an option, it will split up that value and generate a list of it. In
line[4]the value is represented in Python as a list with four entries: ‘One’, ‘Two’, ‘Three’, ‘Four’.Directory creationAnother feature ofpymodconfis the automatic directory creation. If any option name ends with the suffix-dirit
will try to recursively create the directory tree. For instance, due to the definition in line[10], a directorytest-modulewill be created in the directory/tmp/.TaggingThe most interesting feature ofpymodconfis the ability to group sections using user-definedTags. As you
can see
in line[9]a section with the tag definitionModuleis defined.Beforepymodconfis able to group such sections, you’ll have to register the tag atpymodconfwith:importpymodconfasmcmodule_tag=mc.tag.Tag('Module:')mc.tag.register(module_tag)Afterwards, you can load the configuration file with:config=mc.parser.load('example.cfg')The result is dictionary with section names and user-defined modules as keys and the corresponding options as values.You can, for instance, access the section belonging to the groupModuleeither with:config['module']# returns [{'name': ' Test', 'log-dir': '/tmp/test_module'}]or using the tag itself with:config[str(module_tag)]# returns [{'name': ' Test', 'log-dir': '/tmp/test_module'}]ThanksIf you like this tool, donate some bugs 💸 for a drink or two atETH:0xf7d518A730D93a6d27415EcaE5D801Dde125dE15XRP:rhVWrjB9EGDeK4zuJ1x2KXSjjSpsDQSaU6with destination tag653103618Stellar:GCXDBCRQHDTUJDSZUJPC5TTLBERIWRC7SYBTZO3UOFM2QBE2JXK3DJKEwith Memo3388649662849648or viaPayPal. Cheers 🍻!LicenseThis program is free software: you can redistribute it and/or modify it under the terms of theGNU General Public
Licenseas published by the Free Software Foundation, either version 3
of the License, or (at your option) any later version. This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program.  If not, seehttp://www.gnu.org/licenses/.