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
.这个
package
is 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
传递给此类的构造函数。如果
spec
is 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
引发异常。