一个集装箱级的权限范围

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中优雅地处理FileNotFoundexception   java线程卡在BlockingQueue上。无缘无故   类网格程序w/java   StrutsJava:动态应用Velocity脚本   java在运行时重写/禁用方面   java Apache POI无法正确读取Excel单元格中的秒数   具有不同用户权限的Java文件夹/文件创建   java我可以检查Firebase ValueEventListener onDataChanged是否已被调用吗?   尽管获得了用户权限,java Android开发文件权限仍被拒绝   java如何使用JPA映射map<EnumType,Double>?   java是否使用UI线程显示toast消息?   JAVAlang.IllegalArgumentException:不支持的元素:rss   java Android setRequestedOrientation活动和视图生命周期   安卓如何在Java中定义支票盒?   在Java中,对于大输入,字符串解析长期失败   使Java在XP中按计划任务运行读取env用户变量时出现问题   任务“:workflowsjava:NodeDriver”的梯度执行失败。main()   java如何检测是否只设置了部分属性?   在客户端web服务上使用JBossWS时,java无法找到/更改log4j的默认配置   java LibGDX写入文本文件并接收各种错误