pyramid.path¶
- CALLER_PACKAGE¶
由的构造函数使用的常量
pyramid.path.DottedNameResolver和pyramid.path.AssetResolver.
- class DottedNameResolver(package=pyramid.path.CALLER_PACKAGE)[源代码]¶
用于解析 dotted Python name 到包或模块对象。
在 1.3 版本加入.
构造函数接受一个名为
package可能是以下任何一种:模块或包的完全限定(非相对)点式名称
python模块或包对象
价值
None
默认值为
pyramid.path.CALLER_PACKAGE.这个
packageis used when a relative dotted name is supplied to theresolve()method. A dotted name which has a.(点)或:(冒号)作为其第一个字符被视为相对字符。如果
package是None解析程序只能解析完全限定(非相对)的名称。任何解析相对名称的尝试都将导致ValueError例外。如果
package是pyramid.path.CALLER_PACKAGE,冲突解决程序将相对点名称视为相对于resolve()方法。如果
package是一个 模块 或 模块名 (与包或包名称不同),将计算其包含的包,并使用此包来派生包名称(所有名称都是相对于包解析的,而不是相对于模块解析的)。例如,如果package向此类型的参数传递了字符串xml.dom.expatbuilder和.mindom提供给resolve()方法,结果导入将用于xml.minidom,因为xml.dom.expatbuilder是模块对象,而不是包对象。如果
package是一个 包 或 包名 (与模块或模块名称不同),此包将用于相对计算点名称。例如,如果package向此类型的参数传递了字符串xml.dom和.minidom提供给resolve()方法,结果导入将用于xml.minidom.- maybe_resolve(dotted)[源代码]¶
这个方法的行为就像
resolve(),除非dotted传递的值不是字符串,它只是简单地返回。例如:import xml r = DottedNameResolver() v = r.maybe_resolve(xml) # v is the xml module; no exception raised
- resolve(dotted)[源代码]¶
此方法解析对全局python对象(可以导入的对象)的点式名称引用到对象本身。
支持两种点式名称样式:
pkg_resources-style dotted names where non-module attributes of a package are separated from the rest of the path using a:e.g. `` package.module:attr```。zope.dottedname-样式点式名称,其中包的非模块属性使用.例如package.module.attr.
这些样式可以互换使用。如果提供的名称包含
:(冒号)pkg_resources将选择解决机制,否则zope.dottedname将选择解决机制。如果
dotted传递给此方法的参数不是字符串,而是ValueError将被提升。当点式名称无法解析时,
ValueError出现错误。例子:
r = DottedNameResolver() v = r.resolve('xml') # v is the xml module
- class AssetResolver(package=pyramid.path.CALLER_PACKAGE)[源代码]¶
用于解析 asset specification 对 asset descriptor .
在 1.3 版本加入.
构造函数接受一个名为
package可能是以下任何一种:模块或包的完全限定(非相对)点式名称
python模块或包对象
价值
None
默认值为
pyramid.path.CALLER_PACKAGE.这个
package在向resolve()方法。没有冒号的资产规范被视为相对的。如果
package是None解析程序只能解析完全限定(非相对)的资产规范。任何解决相关资产规范的尝试都将导致ValueError例外。如果
package是pyramid.path.CALLER_PACKAGE,冲突解决程序将相对资产规范视为相对于resolve()方法。如果
package是一个 模块 或 模块名 (与包或包名称不同),将计算其包含的包,并使用此包派生包名称(所有名称都相对于包解析,而不是相对于模块解析)。例如,如果package向此类型的参数传递了字符串xml.dom.expatbuilder和template.pt提供给resolve()方法,得到的绝对资产规格将是xml.minidom:template.pt,因为xml.dom.expatbuilder是模块对象,而不是包对象。如果
package是一个 包 或 包名 (与模块或模块名称不同),此包将用于计算相关资产规格。例如,如果package向此类型的参数传递了字符串xml.dom和template.pt提供给resolve()方法,得到的绝对资产规格将是xml.minidom:template.pt.- resolve(spec)[源代码]¶
解析名为的资产规格
spec到具有中描述的属性和方法的对象pyramid.interfaces.IAssetDescriptor.如果
spec是绝对文件名(例如/path/to/myproject/templates/foo.pt)或绝对资产规格(例如myproject:templates.foo.pt)返回一个资产描述符,而不考虑package传递给此类的构造函数。如果
specis a relative asset specification (an asset specification without a:in it, e.g. `` 模板/foo.pt```),即package构造函数的参数用作资产规范的包部分。例如:a = AssetResolver('myproject') resolver = a.resolve('templates/foo.pt') print(resolver.abspath()) # -> /path/to/myproject/templates/foo.pt
如果AssetResolver的构造没有
package的参数None,并将相关资产规范传递给resolve,一个ValueError引发异常。