具有文件指定继承的configparser子类。
iniherit的Python项目详细描述
======
ini文件继承
=======
=======
将ini文件继承添加到configparser。注意,尽管它的有效行为与将多个文件传递给configparser的'read()'方法非常相似,但这需要在
处更改代码。如果这不可行,或者ini文件应该指定继承本身,那么“iniherit”包是一个更好的选择。
哦,“iniherit”还通过`%(env:varname)s``增加了对环境变量扩展的支持。这确实不应该出现在这里,但是由于
`iniherit`支持`%(super)s``扩展,因此添加envvar扩展也“太简单了”…
project info
===
*项目页面:https://github.com/cadithealth/iniherit
*错误跟踪:https://github.com/cadithealth/iniherit/issues
=
给定以下两个文件:``base.ini`:
…代码::ini
[app:main]
name=my application name
代码::ini
[默认值]
下面将导致“base.ini”和“override.ini”都被继承。“?”表示如果找不到“override.ini”将被忽略,否则将发生错误。
%inherit=base.ini?override.ini
则以下代码将传递断言:
…代码::python
import-iniherit
cfg=iniherit.safeconfigparser()
cfg.read('config.ini')
assert cfg.get('app:main','name')='我的应用程序名'
代码::python < Br/>模块导入configparser以使全局覆盖生效。
代码::bash
$iniherit--watch--interval 2--verbose input.ini output.ini
info:iniherit.cli:“source.ini”已更改;正在更新输出…
info:iniherit.cli:“inherited file.ini”已更改;正在更新输出…
^c
installation
==
代码::bash
如果使用python 3+,请首先升级“distribute”包*
$pip install“distribute>;=0.7.3“
指定的文件。示例:
…代码::ini
[默认]
%inherit=base.ini
def_var=覆盖“base.ini”的“默认”部分中的“def_var”设置(如果存在)。
[my app]
sect_var=覆盖“base.ini”的“my app”部分中的“sect_var”设置(如果存在)。
“base.ini”中的其他部分也将被继承,即使未在此处指定
。
*选项“`%inherit`”指向一个以空格分隔、URL编码的
要从中继承值的文件列表,该列表的值是从左到右加载的
深度优先。例如:
…代码::ini
[默认值]
%inherit=base.ini文件,空间为%20space.ini可调用部分。默认情况下,
相同名称的节将从其他文件加载,除非文件名
以方括号括起来(“[”…)作为后缀。]”,URL编码,
节名称。示例:
…代码::ini
[节]
%inherit=base.ini override.ini[其他%20节]
这些将**不**结转!在其他
单词中,继承当前仅继承实际值,而不是
解释值。请注意,这可能会导致意外的结果!
如果文件名的实际名称中有“[”,则可以对其进行url编码。
*如果相对指定,则将文件名视为相对于当前ini文件。
*如果文件名的前缀是“?”然后,它将被随意加载:如果文件不存在,它将被忽略。如果文件没有“?”前缀为且找不到
,则会引发“ioerror”。注意,这与标准的configparser.read()行为不同,后者会自动忽略任何找不到的
文件。
如果文件名有“?”作为它的第一个字符,它可以是url编码的。
*注意,对于全局效果,inherit.parser.default_inheritag``可以通过
更改'inherit.parser.default_inheritag``来更改inherit选项的实际名称,或者``configparser.im_inheritag``用于每个实例的效果。
指定一个值,如果未提供默认值
,则会引发“interpolationmissingsupererror”。
“继承值”首先计算深度。请注意,“super”必须全部大写。
例如,给定以下ini文件:
…代码:ini
代码:ini
config.ini
[默认值]
%inherit=base.ini
[记录器]
键=%(超级)s,auth
wdef=%(超级:-更多)s或更少
nada=%(超级)s boom!
然后将生成以下python:
…
In Hyth.By/P>导入构造器< Br/> CFG= CONTROPSER.SAFECOFICANPARSER():Read('CONFIG.INI))BR/> BR/> CFG。获取(“日志器”,“密钥”),“根,APP,AUTH”BR/> CFG。获取(“日志者”,“WDEF”)=“=”&“或多或少”< BR/> CFG。代码:Python < BR>“nada”)35;==>;与标准插值错误一样,引发插值丢失超级错误
,只有当从配置中请求
值(将“raw”设置为falsy)时,才会引发
interpolationmissingsupererror异常。
*``%(env:varname[:-default])s``
计算结果为环境变量名“varname”的值。
如果未定义环境变量且没有默认值
如果已提供,则会引发“interpolationmissingenvenerror”。注意
环境变量名称总是区分大小写。
例如,给定以下ini文件:
…代码::ini
config.ini
[节]
home=%(env:home)s
rdir=%(env:rdir:-/var/run)s
nada=%(env:rdir)s
代码::Python
=“/家/用户”保证“家庭”EnvaVaR存在“BR/OS.Envial.POP”(“RDIR”,没有)确保不存在“BR/>< BR/> CFG。获取(“段”,“home”)*==& gt;“/home /用户”< BR/> CFG。GET(“段”,“Rdir”)α==& gt;'/Va/Run’< BR/> CFG。导入OS:BR/> OS环境引发InterpolationMissingInverror
与标准插值错误一样,只有当从配置请求
值时(将“raw”设置为falsy),才会引发
==
*加载启用继承的ini文件后,配置分析器no
longer知道某个选项是从何处加载的,或者它是如何派生的。因此,当调用“write”方法时,configparser将生成一个不带继承的ini文件。
换句话说,它将展平继承树。
。_ configparser:http://docs.python.org/2/library/configparser.html
ini文件继承
=======
=======
将ini文件继承添加到configparser。注意,尽管它的有效行为与将多个文件传递给configparser的'read()'方法非常相似,但这需要在
处更改代码。如果这不可行,或者ini文件应该指定继承本身,那么“iniherit”包是一个更好的选择。
哦,“iniherit”还通过`%(env:varname)s``增加了对环境变量扩展的支持。这确实不应该出现在这里,但是由于
`iniherit`支持`%(super)s``扩展,因此添加envvar扩展也“太简单了”…
project info
===
*项目页面:https://github.com/cadithealth/iniherit
*错误跟踪:https://github.com/cadithealth/iniherit/issues
给定以下两个文件:``base.ini`:
…代码::ini
[app:main]
name=my application name
代码::ini
[默认值]
下面将导致“base.ini”和“override.ini”都被继承。“?”表示如果找不到“override.ini”将被忽略,否则将发生错误。
%inherit=base.ini?override.ini
则以下代码将传递断言:
…代码::python
import-iniherit
cfg=iniherit.safeconfigparser()
cfg.read('config.ini')
assert cfg.get('app:main','name')='我的应用程序名'
代码::python < Br/>模块导入configparser以使全局覆盖生效。
代码::bash
$iniherit--watch--interval 2--verbose input.ini output.ini
info:iniherit.cli:“source.ini”已更改;正在更新输出…
info:iniherit.cli:“inherited file.ini”已更改;正在更新输出…
^c
installation
==
代码::bash
如果使用python 3+,请首先升级“distribute”包*
$pip install“distribute>;=0.7.3“
指定的文件。示例:
…代码::ini
[默认]
%inherit=base.ini
def_var=覆盖“base.ini”的“默认”部分中的“def_var”设置(如果存在)。
[my app]
sect_var=覆盖“base.ini”的“my app”部分中的“sect_var”设置(如果存在)。
“base.ini”中的其他部分也将被继承,即使未在此处指定
。
*选项“`%inherit`”指向一个以空格分隔、URL编码的
要从中继承值的文件列表,该列表的值是从左到右加载的
深度优先。例如:
…代码::ini
[默认值]
%inherit=base.ini文件,空间为%20space.ini可调用部分。默认情况下,
相同名称的节将从其他文件加载,除非文件名
以方括号括起来(“[”…)作为后缀。]”,URL编码,
节名称。示例:
…代码::ini
[节]
%inherit=base.ini override.ini[其他%20节]
这些将**不**结转!在其他
单词中,继承当前仅继承实际值,而不是
解释值。请注意,这可能会导致意外的结果!
如果文件名的实际名称中有“[”,则可以对其进行url编码。
*如果相对指定,则将文件名视为相对于当前ini文件。
*如果文件名的前缀是“?”然后,它将被随意加载:如果文件不存在,它将被忽略。如果文件没有“?”前缀为且找不到
,则会引发“ioerror”。注意,这与标准的configparser.read()行为不同,后者会自动忽略任何找不到的
文件。
如果文件名有“?”作为它的第一个字符,它可以是url编码的。
*注意,对于全局效果,inherit.parser.default_inheritag``可以通过
更改'inherit.parser.default_inheritag``来更改inherit选项的实际名称,或者``configparser.im_inheritag``用于每个实例的效果。
指定一个值,如果未提供默认值
,则会引发“interpolationmissingsupererror”。
“继承值”首先计算深度。请注意,“super”必须全部大写。
例如,给定以下ini文件:
…代码:ini
代码:ini
config.ini
[默认值]
%inherit=base.ini
[记录器]
键=%(超级)s,auth
wdef=%(超级:-更多)s或更少
nada=%(超级)s boom!
然后将生成以下python:
…
In Hyth.By/P>导入构造器< Br/> CFG= CONTROPSER.SAFECOFICANPARSER():Read('CONFIG.INI))BR/> BR/> CFG。获取(“日志器”,“密钥”),“根,APP,AUTH”BR/> CFG。获取(“日志者”,“WDEF”)=“=”&“或多或少”< BR/> CFG。代码:Python < BR>“nada”)35;==>;与标准插值错误一样,引发插值丢失超级错误
,只有当从配置中请求
值(将“raw”设置为falsy)时,才会引发
interpolationmissingsupererror异常。
*``%(env:varname[:-default])s``
计算结果为环境变量名“varname”的值。
如果未定义环境变量且没有默认值
如果已提供,则会引发“interpolationmissingenvenerror”。注意
环境变量名称总是区分大小写。
例如,给定以下ini文件:
…代码::ini
config.ini
[节]
home=%(env:home)s
rdir=%(env:rdir:-/var/run)s
nada=%(env:rdir)s
代码::Python
=“/家/用户”保证“家庭”EnvaVaR存在“BR/OS.Envial.POP”(“RDIR”,没有)确保不存在“BR/>< BR/> CFG。获取(“段”,“home”)*==& gt;“/home /用户”< BR/> CFG。GET(“段”,“Rdir”)α==& gt;'/Va/Run’< BR/> CFG。导入OS:BR/> OS环境引发InterpolationMissingInverror
与标准插值错误一样,只有当从配置请求
值时(将“raw”设置为falsy),才会引发
*加载启用继承的ini文件后,配置分析器no
longer知道某个选项是从何处加载的,或者它是如何派生的。因此,当调用“write”方法时,configparser将生成一个不带继承的ini文件。
换句话说,它将展平继承树。
。_ configparser:http://docs.python.org/2/library/configparser.html