跳转到主要内容

Plone API。

项目描述

# plone.api

[![最新PyPI版本](https://img.shields.io/pypi/v/plone.api.svg “最新PyPI版本”)](https://pypi.python.org/pypi/plone.api/)

![PyPI下载次数](https://img.shields.io/pypi/dm/plone.api.svg “PyPI下载次数”)](https://pypi.python.org/pypi/plone.api/)

为希望使用Plone进行开发的人构建的一个简单API。

意图是

  • 尽可能覆盖Plone开发者执行的各项任务

  • 为Plone功能提供清晰的API方法,这些功能可能令人困惑或难以访问,

  • 将所有内容集中在一个地方,

  • 保持可内省和可发现性,这是Python风格的重要方面。

## 文档

[plone.api 文档](https://6.docs.plone.org/plone.api/index.html)是官方Plone文档的一部分。

plone.api附带类似于食谱的文档和执行Plone常见开发任务的逐步说明。食谱试图假设用户对Plone内部没有深入的了解。

## 源代码和贡献

![测试状态](https://github.com/plone/plone.api/actions/workflows/plone_python.yml/badge.svg “测试状态”)](https://github.com/plone/plone.api/actions/workflows/plone_python.yml)

贡献者

请阅读[向Plone贡献](https://6.docs.plone.org/contributing/index.html)和[向plone.api贡献](https://6.docs.plone.org/plone.api/contribute/index.html)。

源代码

位于[GitHub上托管的Plone代码仓库](https://github.com/plone/plone.api)。

问题

请使用[问题跟踪器](https://github.com/plone/plone.api/issues)

持续集成

在[GitHub Actions](https://github.com/plone/plone.api/actions)上测试。

代码覆盖率

在[Coveralls.io](https://coveralls.io/github/plone/plone.api)上测量。

变更日志

2.2.2 (2024-07-30)

文档

  • 重写Plone 6的贡献文档。@stevepiercy (#539)

  • 在文档中使用正确的no-index语法。@stevepiercy (#540)

2.2.1 (2024-06-26)

错误修复

  • 从文档和测试中删除了portal_properties。[maurits] (#125)

2.2.0 (2024-05-06)

新功能

  • 当调用api.user.has_permission时,报告如果权限不存在。[gforcada] (#515)

错误修复

  • 在relation.create中:修复了现有RelationList值为None的边缘情况。[davisagli] (#535)

内部

  • 更新配置文件。[plone devs] (cfffba8c)

2.1.0 (2024-02-22)

新功能

  • 实现了内容类型的无限制查找。[gogobd] (#312)

内部

  • 增强Makefile路径以解决空白兼容性问题。[Vivek-04022001] (#530)

2.0.9 (2024-02-12)

内部

  • 通过将可用性检查推迟到错误处理中,提高了视图检索的效率。[samriddhi99] (#479)

2.0.8 (2023-12-14)

错误修复

  • 修复了使用国家特定语言代码的api.portal.translate的使用。[ericof] (#524)

2.0.7 (2023-11-30)

文档

2.0.6 (2023-11-03)

错误修复

  • 在plone.api.content.create()中提供更详细的自定义错误信息。[ajung] (#516)

2.0.5 (2023-10-25)

错误修复

  • 替换已弃用的断言方法。[gforcada] (#1)

内部

  • 更新GHA。[gforcada] (#1)

  • 修复测试,因为PloneSite再次获得IContentish。[Akshat2Jain] @jaroel (#518)

2.0.4 (2023-07-14)

错误修复

  • 不要运行GitHub Actions测试两次。仅在直接针对master或main提交或打开针对master或main的拉取请求时运行GitHub Actions测试。这避免了在同一环境中运行相同的测试套件两次。[thet] (#0)

  • Mockup TinyMCE设置:删除未使用的AtD相关视图。

    修复了一个检查“checkDocument”等可用视图的测试。 “checkDocument”是未维护的“After the Deadline”插件的TinyMCE端点,现已删除。(#504)

文档

  • 增强《portal.translate》API文档,以显示在某些情况下域名是可选的。@thet (#510)

2.0.3 (2023-05-22)

错误修复

  • 只有当没有与相同源、目标和关系名称的现有关系时才创建关系。但标记源为已修改。@ksuess (#507)

2.0.2 (2023-04-14)

错误修复

  • 修复通过关系名称删除关系的问题。@ksuess (#501)

文档

  • 更新培训链接。@stevepiercy (#503)

2.0.1 (2023-01-26)

文档

  • 切换到6.docs.plone.org(之前是6.dev-docs.plone.org)[ksuess] (#497)

  • 在准备将docs.plone.org重定向到6.docs.plone.org之前,修复指向文档适当版本的链接。修复一些错别字。使用重命名的tox配置选项。[stevepiercy] (#498)

  • 由于sphinx-book-theme 0.3.3的要求,将Sphinx版本锁定为<5,>=3。[stevepiercy] (#499)

  • 更新文档链接以使用正确的版本。[stevepiercy] (#500)

2.0.0 (2022-11-26)

错误修复

  • 要求Python 3.8或更高。[maurits] (#600)

2.0.0b4 (2022-11-11)

错误修复

  • 当plone.api文档更新时,触发核心Plone文档的新部署。[esteele] (#496)

2.0.0b3 (2022-10-03)

错误修复

  • 在测试中使用更长的密码。[davisagli] (#495)

2.0.0b2 (2022-09-07)

错误修复

  • 确保即使发生错误,安全相关上下文管理器也能恢复上下文。(#374)

2.0.0b1 (2022-06-23)

错误修复

  • mutually_exclusive_parameters错误信息应仅包括相关参数。[martin.peeters] (#489)

2.0.0a4 (2022-06-07)

新功能

  • 文档:添加元数据[ksuess, stevepiercy] (#485)

错误修复

  • plone.api.content.get应始终返回内容。[ericof] (#487)

2.0.0a3 (2022-05-26)

新功能

  • 不需要指定请求参数。如果没有指定,则回退到全局请求。[ale-rt] (#412)

  • 集成到新的Plone 6文档中。[ksuess] (#469)

  • 按拉取请求预览文档。Netlify机器人将链接添加到PR注释中。[ksuess] (#469)

  • 文档使用MyST markdown编写。以前是reStructuredText。[ksuess] (#470)

  • 在MyST markdown文档中测试代码示例。更新文档[ksuess] 在plone.api.relation模块中添加一些doctests。[ksuess] (#474)

错误修复

  • 从#469的审查中清理文档[stevepiercy] (#476)

  • 在文档中不允许使用Unicode字面量。[ksuess] (#483)

2.0.0a2 (2021-10-13)

错误修复

  • 当调用set_registry_record使用错误值时修复IndexError。[maurits] (#435)

  • 防止在< span class="docutils literal">plone.app.iterate缺失时关系代码启动错误。[maurits] (#462)

2.0.0a1 (2021-09-01)

破坏性更改

  • 取消对Archetypes和Python 2的支持。[pbauer] (#460)

新功能

  • 现在有一个< span class="docutils literal">plone.api.relation模块,可以更轻松地处理关系。[pbauer] (#449)

1.11.0 (2021-06-30)

新功能

  • 取消对Plone 4.3、5.0、5.1的支持,添加对6.0的支持。代码可能仍然可以工作,但不再进行测试。您可以在旧版本上使用1.10系列的版本。[maurits] (#431)

错误修复

  • 添加测试以验证移动内容后intids实用程序是正确的。[ale-rt, maurits] (#430)

  • 改进tox.ini,以便可以在本地测试plone.api。将所有测试添加到travis-ci配置中。将.editorconfig文件添加到plone.api中,以帮助强制执行编码约定[loechel] (#448)

  • 修复plone.api.content.find对object_provides "not"查询的尊重。修复:#451 [thet] (#452)

1.10.4 (2020-09-28)

错误修复

  • 修复了Python 3上使用Products.MailHost 4.10的测试失败。[maurits] (#3178)

1.10.3 (2020-09-07)

错误修复

  • 修复了对CMFPlone.interfaces.ILanguageSchema的弃用警告。[maurits] (#3130)

1.10.2 (2020-04-20)

错误修复

  • 小型的包装更新。(#1)

1.10.1 (2020-03-04)

错误修复

  • 删除弃用警告[ale-rt] (#432)

  • 在测试中使用更强的密码。[maurits] (#436)

  • 删除了content.find的重复和失败的行内doctest。[maurits] (#437)

1.10.0 (2019-05-01)

新功能

  • 优雅地处理接口上的丢失注册记录。

    [gforcada] (#428)

1.9.2 (2019-03-04)

错误修复

  • 修复使用“and”运算符查询多个接口的object_provides。[fRiSi] (#426)

1.9.1 (2018-11-20)

错误修复

  • 当inherit=False时,仅显示本地角色。[tschorr]

1.9.0 (2018-09-27)

新功能

  • Python 2/3支持。[pbauer]

1.8.5 (2018-09-14)

错误修复

  • 从base.cfg中删除allow-hosts,因此我们可以使用新的pypi仓库。参见https://github.com/plone/plone.api/issues/403 [jaroel]

  • 修复文档字符串中的错别字 [tkimnguyen]

  • 修复使用api.content.create时创建AT集合失败的错误。 [gbastien]

1.8.4 (2018-04-24)

错误修复

  • 使用processForm函数时,传入的值为字典{None: None}。这防止了processForm使用REQUEST.form并覆盖由invokeFactory设置的值。修复了问题99。 [david-batranu]

  • 简化/轻微加速:权限检查现在直接使用AccessControl。技术上与之前完全相同。之前需要查找工具,调用实用函数,调用AccessControl。 [jensens]

1.8.3 (2018-02-23)

错误修复

  • 根据isort和flake8改进了代码质量。 [maurits]

  • 修复了测试Plone版本的正则表达式。 [maurits]

1.8.2 (2018-01-17)

错误修复

  • 修复了Zope4中的测试,其中Products.PlonePAS.tools.memberdata.MemberData现在是一个适配器。它不能在两次检索时被证明相等。[jensens]

  • 修改api.group.get_groups以与CMF master兼容。[jaroel]

  • 添加six以处理Python 2/3兼容性。[rudaporto]

1.8.1 (2017-10-17)

错误修复

  • 当id已经是目标id时,不要重命名对象。修复了问题361。[jaroel]

  • 更改content.delete以允许obj=None、objects=[]或objects=None。修复了问题383。[jaroel]

  • zope.i18n为我们translate函数执行语言协商。我们的get_current_translation并不总是给出正确的语言,尤其是在组合语言的情况下:nl-be(比利时/荷兰语)应回退到nl(荷兰语)。正确的协商语言也可能因翻译域而异,而我们没有考虑这一点。zope.i18n做得更好。修复了问题379。[maurits]

  • 修复了在Zope4中删除的Globals.DB的使用(修复https://github.com/plone/plone.api/issues/385)[pbauer]

1.8 (2017-08-05)

新功能

  • 添加了检查ZODB是否处于只读模式的方法。[loechel]

  • 添加了tox.ini和在setup.py和.editorconfig中的代码约定定义,以便可以强制执行它们。[loechel]

错误修复

  • 修复了此存储库中的测试和代码约定。[loechel]

1.7 (2017-05-23)

新功能

  • 将disable_roles_acquisition和enable_roles_acquisition添加到api.content中。[MrTango]

错误修复

  • 简化了plone.api.content.delete方法。[thet]

  • 当safe_id=False时,content.copy应抛出自定义异常。修复了#340。[jaroel]

1.6.1 (2017-03-31)

错误修复

  • 简化了删除和转换函数。[adamcheasley]

  • 使用user.grant_roles()时,不要将动态角色重新分配为本地角色。修复了与#351相同的问题(组)。[pbauer]

  • 使用“inherit=False”时,将组中授予的本地角色包含在user.get_roles中。修复了#346。[pbauer]

  • 使用“inherit=False”时,忽略在父对象上授予的本地角色。修复了#354。[pbauer]

  • 修复了从GS设置处理程序调用时由api.content.create错误设置标题的问题。[gotcha, pgrunewald]

1.6 (2017-02-15)

新功能

  • 将inherit=False传递给groups.get_roles()将仅获取组的本地角色。[pbauer]

错误修复

  • 支持匿名用户的user.get_roles。参看#339。[jaroel]

  • 修复了在Zope4中删除的从 Globals 导入的导入。[pbauer]

  • 修复了“坏”引号。[adamcheasley]

  • 文档中的错别字。[ale-rt]

  • 修复了尝试添加已内置角色的测试中的错误,这在Zope4中不再静默失败。[MatthewWilkes]

  • 使用group.grant_roles()时,不要将全局角色重新分配为本地角色。[pbauer]

  • 文档中的reST语法,遵循风格指南,调整setup.py。[svx]

  • 使用group.grant_roles()时,不要将动态角色重新分配为本地角色。[pbauer]

1.5.1 (2016-12-06)

新功能

  • api.portal.get_registry_record支持可选的default参数。[ale-rt]

修复了

  • 修复翻译相关测试,使用plonelocales域而不是passwordresettool。Products.PasswordResetTool已在Plone 5.1中移除。[thet]

  • 允许匿名用户使用plone.api.group.get_groups。参见#290 [jaroel]

  • 允许采用特殊用户。修复#320 - 检查匿名用户的权限。[jaroel]

  • 修复了api.user.revoke_roles中的AttributeError。[ale-rt]

  • 移除打印语句并使用@security装饰器使代码分析更愉快。[ale-rt]

  • 文档中的错别字。[ale-rt]

  • 修复travis和coveralls。[gforcada]

  • 各种文字调整。[tkimnguyen]

  • 在api.content.move中,如果源和目标都已指定,且目标已经是源父级,则跳过操作。

  • 修复测试[gforcada]

  • 修复PRINTINGMAILHOST_ENABLED评估,使其遵守Products.PrintingMailHost的内部逻辑。[ale-rt]

1.5 (2016-02-20)

新功能

  • 添加portal.translate。[ebrehault]

  • 添加portal.get_default_languageportal.get_current_language。[ebrehault]

修复了

1.4.11 (2016-01-08)

新功能

1.4.10 (2015-11-19)

修复了

  • 重新发布,因为1.4.9缺少doctests目录。[maurits]

1.4.9 (2015-11-19)

修复了

  • 问题#283:portal.send_email不尊重事务中断[jensens]

1.4.8 (2015-10-27)

新功能

  • 更新文档链接,我们现在住在docs.plone.org/develop/plone.api。[polyester]

修复了

  • 修复测试中的Plone 5版本比较。[maurits]

1.4.7 (2015-09-27)

  • 从配置注册表中获取email_charset值,如果找不到则回退到portal属性。[esteele]

1.4.6 (2015-09-14)

  • 修复了api.content.find,结合了深度和路径。路径现在不再被忽略。[maurits]

  • 移除unittest2依赖。[gforcada]

1.4.5 (2015-09-09)

  • 修复了包的长期描述,使其成为有效的reStructuredText,并在PyPI上显示良好。[maurits]

1.4.4 (2015-09-08)

  • 将doctests符号链接,以便它们将被包含在构建的egg中,并且不会破坏coredev构建。[esteele]

1.4.3 (2015-09-08)

  • 首先尝试从注册表获取use_email_as_login。[pbauer]

1.4.2 (2015-09-07)

  • 在env.plone_version中使用Products.CMFPlone中定义的版本,就像Plone的控制面板一样。同时修复了Jenkins测试运行器,因为我们没有Plone egg。[jaroel]

1.4.1 (2015-09-07)

  • 移除对Products.CMFPlone的依赖,以避免循环依赖。Products.CMFPlone将存在。[jaroel]

1.4 (2015-09-04)

  • plone.api.content.delete:添加check_linkintegrity选项。如果为True,删除会导致断链,则引发异常。[pbauer]

  • plone.api.content.find:object_provides参数接受元组。修复#266。[ale-rt]

  • 在Plone 5中修复了plone.api.content.create。参见160。[jaroel]

  • plone.api.content.transition现在接受可以传递给工作流转换的kwargs。[neilferreira]

1.3.3 (2015-07-14)

  • plone.api.content.get_state现在允许可选的默认值。当没有为对象定义工作流时使用此值。参见#246 [jaroel]

  • plone.api.portal.get_registry_record现在在找不到记录时建议类似记录。参见#249。[jaroel]

  • 修复了针对Plone 5的测试。参见#241。[jaroel]

  • 支持Products.PrintingMailHost。参见#228。[jaroel]

  • api.plone.org文档指向docs.plone.org/external/plone.api/docs/。参见#202 [jaroel]

  • plone.api.content.get_view不再吞咽异常。[jaroel]

  • 添加plone.api.content.find。参见#210 [jaroel]

  • 使send_email与Plone >= 5.0b2兼容。[pbauer]

  • 如果没有指定目标,则使用源父级作为目标。[jaroel]

  • 使Products.Archetypes依赖项可选。修复#197 [jaroel]

  • 在主文档页面中添加本地TOC。修复#90 [jaroel]

  • 允许删除多个对象。修复 #198 [jaroel]

  • 修复了 make docs。 [jaroel]

  • 在 user.adopt_user 中支持 Zope 用户。修复 #171 和 #157。 [jaroel]

  • 在 setup.py 中明确依赖项,在测试中明确加载 zcml。 [jensens]

  • 从原始位置导入 getToolByName [jensens]

  • 改进文档:语义换行,修复少数链接,微调措辞。 [jensens]

  • 修复 revoke_roles 方法:现在如果它没有使用 obj 参数调用,它不会在本地设置继承的角色。 [cekk]

1.3.2 (2014-11-17)

  • 修复 #190 - 破坏的 MANIFEST.in。 [jensens]

1.3.1 (2014-11-17)

  • 解决了 README.rst 符号链接的问题,这阻止了 1.3.0 的安装。并且请今后永远不要再在 eggs 中使用符号链接,好吗? [jensens]

1.3.0 (2014-11-17)

  • 修复 #184 名称选择器在重命名时使用错误,并且在 safe_id=True 时失败。 [benniboy]

  • 澄清了 content.copy 的文档,参考 #185。 [benniboy]

  • 修复了当内容在同一文件夹或目标文件夹中复制时,如果存在相同的源 id,现有源(同一文件夹)或第三个对象(与源具有相同的 id)被重命名而不是目标的问题。 [benniboy]

  • 在 adopt_user 中使用 getUserById 来查找用户。 [tschanzt]

  • 使 api.portal.get_localized_time 也支持 datetime.date。 [nightmarebadger]

  • api.user.grant_rolesapi.user.revoke_roles 中引发更好的/预期的错误。 [adamcheasley]

  • 添加 api.user.has_permission 参考 #172。 [adamcheasley]

1.2.1 (2014-06-24)

  • 解决了某些情况下阻止 1.2.0 安装的 CHANGES.rst 符号链接问题。 [mattss]

1.2.0 (2014-06-24)

  • 增强 api.content.transition,使其能够从当前状态过渡到给定的状态,而无需知道过渡 '路径' 参考。 #162 [adamcheasley]

  • 添加 api.env.plone_version()api.env.zope_version(),参考 #126。 [hvelarde]

  • api.content.create 中停止吞咽 UnicodeDecodeError。 [mattss]

  • api.content.get 中捕获 AttributeError(如果只有部分遍历路径存在则引发)。 [mattss]

1.1.0 (2013-10-12)

  • 在 setup.py 中列出支持的 Plone 版本。 [zupo]

  • Plone 4.0 和 4.1 现在在 CI 上使用 Python 2.6 进行测试。 [hvelarde]

  • 默认使用 Plone 4.3 进行开发(之前是 4.2)。 [hvelarde]

1.1.0-rc.1 (2013-10-10)

  • 修复 README.rst,使其在 PyPI 上正确渲染。 [zupo]

  • 使用 api.plone.org/foo 重定向。 [zupo]

  • 添加 MANIFEST.in 文件。 [hvelarde]

1.0.0-rc.3 (2013-10-09)

  • 打包问题。 [zupo]

1.0.0-rc.2 (2013-10-09)

  • 校对文档,改进语法和措辞。 [cewing]

  • 将 plone.recipe.codeanalysis 添加到我们的 buildout 中。 [flohcim]

  • 使所有 assertRaise() 调用使用 with 关键字。 [winstonf88]

  • 修改 user.get 方法以接受一个 userid 参数,参考 #112。 [cewing, xiru, winstonf88]

  • 添加 api.env.debug_mode() 和 api.env.test_mode(),参考 #125。 [sdelcourt]

  • 将大部分文本从 docs/index.rst 移动到 README.rst,使其在 PyPI 和 GitHub 上也可见。 [zupo]

  • 在 ReadTheDocs 上弃用 plone.api 并重定向到 api.plone.org,参考 #130。 [wormj, zupo]

  • 添加一个新的 make coverage 命令,并添加支持将覆盖率发布到 Coveralls.io。 [zupo]

  • 使 api.content.create() 也打印出底层错误,参考 #118。 [winston88]

  • 修复 api.content 的 copy/move/rename 函数,在更改内容后返回对象,参考 #115。 [rodfersou]

  • 使 Travis IRC 通知消息为单行,而不是三行。 [zupo]

  • 在文档中添加更多好与坏的代码块示例,更多关于如何编写良好的 docstrings 的信息。 [zupo]

  • 在代码风格中优先使用单引号而不是双引号。 [zupo]

  • 新增 bootstrap.py 以保持 zc.buildout 1.x 的环境。 [zupo]

  • 软件包现在包括 GPLv2 许可证的副本,如 GNU 通用公共许可证文档中所述。 [hvelarde]

  • 修复了复制文件夹对象。 [pingviini]

  • 修复了移动文件夹对象。 [pingviini]

1.0.0-rc.1 (2013-01-27)

  • 增加测试覆盖率。 [cillianderoiste, JessN, reinhardt, zupo]

  • 实现 api.env.adopt_roles() 上下文管理器,用于在块内临时切换角色。 [RichyB]

  • 创建 api.env 模块,用于与全局环境交互。 [RichyB]

  • 用于定义 api 方法约束的装饰器。依赖于 decorator 包。 [JessN]

  • 解决 #61:改进 api.portal.get()。 [cillianderoiste]

  • 在 plone.api 代码库中使用 plone.api 方法。 [zupo]

  • 切换到 flake8 而不是 pep8`+`pyflakes。 [zupo]

  • 使用 absolute_url_path 获取门户路径。 [cillianderoiste]

  • Travis 构建速度提升。 [zupo]

  • 支持 Python 2.6。 [RichyB, zupo]

  • 支持 Plone 4.0。 [adamcheasley]

  • 支持 Plone 4.3。 [cillianderoiste, zupo]

  • 拼写修正。 [adamtheturtle]

  • 使 get_view 和 get_tool 测试不具有硬编码的 所有 期望值列表。 [RichyB, cillianderoiste]

  • 代码风格指南。 [iElectric, cillianderoiste, marciomazza, RichyB, thet, zupo]

  • 在 setup.py 中依赖 manuel。 [zupo]

  • 如何获取/设置成员属性的文档。 [zupo]

  • 改进 get_registry_record。 [zupo]

0.1b1 (2012-10-23)

  • 贡献者指南和风格指南。 [zupo]

  • 强制执行 PEP257 对 docstrings。 [zupo]

  • 修复 get_navigation_root() 以返回对象而不是路径。 [pbauer]

  • 为用户和组实现 get_permissions()get_roles()grant_roles()revoke roles()。 [rudaporto, xiru]

  • 实现 get_registry_recordset_registry_record。 [pbauer]

  • 使用 Makefile 构建、运行测试、生成文档等。 [witsch]

  • 将所有 ReadTheDocs 依赖项移动到 rtd_requirements.txt。 [zupo]

0.1a2 (2012-09-03)

  • 更新版本,添加新功能、测试覆盖率、清理与重构。 [hvelarde, avelino, ericof, jpgimenez, xiru, macagua, zupo]

0.1a1 (2012-07-13)

  • 首次发布。 [davisagli, fulv, iElectric, jcerjak, jonstahl, kcleong, mauritsvanrees, wamdam, witsch, zupo]

许可

版权 (C) 2012-2013 Plone 基金会

本程序是自由软件;您可以在自由软件基金会发布的 GNU 通用公共许可证版本 2 的条款下重新分发和/或修改它。

本程序以希望它将是有用的,但没有任何保证;甚至没有适销性或针对特定目的的隐含保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应该已经收到本程序的 GNU 通用公共许可证副本;如果没有,请写信给自由软件基金会,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源代码分发

plone_api-2.2.2.tar.gz (114.2 kB 查看哈希值)

上传时间 源代码

构建分发

plone.api-2.2.2-py3-none-any.whl (88.8 kB 查看哈希值)

上传时间 Python 3

支持者

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