跳转到主要内容

用于处理Hypercat目录的模块

项目描述

Hypercat.py

一个用于处理Hypercat 3.0目录的最小库。有关Hypercat的完整详细信息,请参阅:http://www.hypercat.io/standard.html

起源

此模块是对以下位置的Hypercat模块的简单打包:[链接](https://github.com/hypercatIoT/python-tools)

用例

服务器

  • 创建一个空的Hypercat目录

  • 可选,添加元数据来描述它

  • 可选,向目录添加条目

    • 条目可以是另一个目录或资源

  • 将其作为JSON输出,可以是最小化或格式化的

  • 查找目录层次结构中的特定部分

客户端

  • 加载和验证Hypercat

示例 - Hypercat服务器

我们将创建一个包含2个条目的Hypercat目录

  h
 / \
h2  r

用法

from hypercat import hypercat

# Create a catalogue
h = hypercat.hypercat("CatalogueContainingOneCatalogueAndOneResource")

# Create a second catalogue, and add it as a child of the first
h2 = hypercat.hypercat("ChildCatalogue")
h.addItem(h2, "/child_cat")

# Create a resource, and add it as another child of the first catalogue
r = hypercat.resource("resource1", "application/vnd.hypercat.sensordata+json")
h.addItem(r, "/resource")

# Print the raw JSON of the catalogue, and then with human-friendly formatting
print h.asJSON()
print h.prettyprint()

这应该输出

{
    "catalogue-metadata": [
        {
            "rel": "urn:X-hypercat:rels:isContentType",
            "val": "application/vnd.hypercat.catalogue+json"
        },
        {
            "rel": "urn:X-hypercat:rels:hasDescription:en",
            "val": "CatalogueContainingOneCatalogueAndOneResource"
        }
    ],
    "items": [
        {
            "href": "/child_cat",
            "item-metadata": [
                {
                    "rel": "urn:X-hypercat:rels:isContentType",
                    "val": "application/vnd.hypercat.catalogue+json"
                },
                {
                    "rel": "urn:X-hypercat:rels:hasDescription:en",
                    "val": "ChildCatalogue"
                }
            ]
        },
        {
            "href": "/resource",
            "item-metadata": [
                {
                    "rel": "urn:X-hypercat:rels:isContentType",
                    "val": "application/vnd.hypercat.sensordata+json"
                },
                {
                    "rel": "urn:X-hypercat:rels:hasDescription:en",
                    "val": "resource1"
                }
            ]
        }
    ]
}

示例 - Hypercat客户端

用法

from hypercat import hypercat

h = hypercat.loads(inString)  # Read-in and validate Hypercat
print "Metadata is ",h.metadata

此模块的工作方式

根据规范,每个目录都有一个(可读)描述和关于它的元数据列表。它还包含一个“条目”列表,每个条目都有一个HREF和关于它的元数据列表。条目可以是任何类型的资源,包括另一个目录。

因此,在概念上,目录可以有多个层次级别的层次结构(即目录可以包含目录,该目录又包含目录,依此类推)。目录不必仅仅是树,它们可以是图,包含循环等,并且此模块的客户端通常会希望一次性声明完整的目录结构,即在深度声明整个层次结构。

但根据规范,一次只能输出一级目录,也就是说,获取目录时会声明其子目录,但不会声明其孙目录(要查看孙目录,您需要获取子目录)

另一个复杂的问题是,当目录是父目录时与它是子目录时,属性声明的某些不对称性

为了处理这个问题,在这个模块中,我们为每个hypercat对象维护一个通用的基类。然后,在输出过程中,我们忽略孙目录,并根据需要修改属性。

许可协议

该软件采用MIT许可证发布。请参阅LICENSE.txt中的详细信息。

待办事项

4.3.3表示使用isContentType对items[]中的每个成员进行标记是可选的,但我们在这里将其视为强制性的。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

hypercat.py-0.1.2.tar.gz (6.7 kB 查看哈希值)

上传时间 源代码

构建分发

hypercat.py-0.1.2-py2.py3-none-any.whl (8.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面