pyramid.path

CALLER_PACKAGE

由的构造函数使用的常量 pyramid.path.DottedNameResolverpyramid.path.AssetResolver .

class DottedNameResolver(package=pyramid.path.CALLER_PACKAGE)[源代码]

用于解析 dotted Python name 到包或模块对象。

在 1.3 版本加入.

构造函数接受一个名为 package 可能是以下任何一种:

默认值为 pyramid.path.CALLER_PACKAGE .

这个 package is used when a relative dotted name is supplied to the resolve() method. A dotted name which has a . (点)或 : (冒号)作为其第一个字符被视为相对字符。

如果 packageNone 解析程序只能解析完全限定(非相对)的名称。任何解析相对名称的尝试都将导致 ValueError 例外。

如果 packagepyramid.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 specificationasset descriptor .

在 1.3 版本加入.

构造函数接受一个名为 package 可能是以下任何一种:

默认值为 pyramid.path.CALLER_PACKAGE .

这个 package 在向 resolve() 方法。没有冒号的资产规范被视为相对的。

如果 packageNone 解析程序只能解析完全限定(非相对)的资产规范。任何解决相关资产规范的尝试都将导致 ValueError 例外。

如果 packagepyramid.path.CALLER_PACKAGE ,冲突解决程序将相对资产规范视为相对于 resolve() 方法。

如果 package 是一个 模块模块名 (与包或包名称不同),将计算其包含的包,并使用此包派生包名称(所有名称都相对于包解析,而不是相对于模块解析)。例如,如果 package 向此类型的参数传递了字符串 xml.dom.expatbuildertemplate.pt 提供给 resolve() 方法,得到的绝对资产规格将是 xml.minidom:template.pt ,因为 xml.dom.expatbuilder 是模块对象,而不是包对象。

如果 package 是一个 包名 (与模块或模块名称不同),此包将用于计算相关资产规格。例如,如果 package 向此类型的参数传递了字符串 xml.domtemplate.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 引发异常。