一个集装箱级的权限范围

scopelist的Python项目详细描述


build statusLicensecoverallspypi

重要

这个包裹过时了。它的替代品可以在https://pypi.python.org/pypi/scopes

scopelist公开ScopeList类,该容器类型旨在 简化检查授权范围。

安装

您可以从pypi安装scopelist:

> pip install scopelist

这将为您安装所有依赖项。如果要安装 直接从源代码处克隆git存储库并运行标准 python setup.py install命令。

依赖性

  • Python2.7,3.2+

用法

scopelist实现了__contains__magic方法,使它变得简单 检查特定范围和权限是否表示为 斯科普斯

>>> from scopelist import ScopeList
>>> ScopeList(['user/emails+r'])
ScopeList(['user/emails'])
>>> 'user/emails' in ScopeList(['user/emails'])
True

实际上,scopelist的工作方式类似于任何不可变的序列。

>>> len(ScopeList(['user/emails', 'user/repo']))
2
>>> ScopeList(['user/emails+r', 'user/repo+aaaaa'])[1]
'user/repo+a'
>>> list(ScopeList(['user/emails+r', 'user/repo+aaaaa']))
['user/emails', 'user/repo+a']
>>> ['foo/bar', 'foo/baz'] in ScopeList.from_string('foo')
True
>>> ['foo/bar', 'foo/baz', 'extra'] in ScopeList(['foo', 'bar'])
False

它们也可以直接从字符串中解析出来

>>> ScopeList.from_string("user/emails+r   user/emails+n")
ScopeList(['user/emails', 'user/emails+n'])
>>> ScopeList.from_string("user/emails+r:user/emails+n", item_sep=":")
ScopeList(['user/emails', 'user/emails+n'])

权限

您可以将字母附加到范围项以表示某些权限。 权限分隔符(+by)后面的任何ascii字母 默认)被解释为权限。检查项目时 在作用域列表中,其值和权限必须至少匹配 列表中的一项。

>>> 'user/emails+a' in ScopeList(['user/emails'])
False
>>> 'user/emails+a' in ScopeList(['user/emails+a'])
True

通过包含多个 在+符号后一个字母。将忽略重复的权限。

>>> 'user/repo+w' in ScopeList(['user/repo+abcd', 'user/repo+rw'])
True

权限是完全任意的,除了+r由 未显式授予权限时的默认值。

>>> 'user/emails+r' in ScopeList(['user/emails'])
True

您可以将默认权限更改为您喜欢的任何权限。

>>> 'user/emails+n' in ScopeList(['user/emails'], default_mode='n')
True
>>> 'user/emails+q' in ScopeList(['user/emails'], default_mode='pq')
True
>>> 'user/emails+p' in ScopeList(['user/emails'], default_mode='pq')
True

权限分隔符也是可配置的。

>>> 'user/emails|r' in ScopeList(['user/emails'], mode_sep='|')
True

父母

/符号是默认的子分隔符。父范围项 自动“包含”作用域列表中的子项。

>>> 'user/emails+r' in ScopeList(['user'])
True
>>> 'user/emails+w' in ScopeList(['user'])
False
>>> 'user/emails+rw' in ScopeList(['user+w', 'user/emails+r'])
True

子分隔符也可以更改:

>>> 'user:emails+r' in ScopeList(['user'], child_sep=':')
True

许可证

版权所有(c)2016 TE-Jérodgers

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库