用于在快照中与快照系统交互的帮助程序

snap-helpers的Python项目详细描述


Latest VersionBuild StatusCoverage StatusDocumentation Status

从快照内部与快照配置和属性交互的python库。

它公开了一个顶级的snaphelpers.Snap对象,该对象提供对:

  • 快照详细信息:

    >>>snap=snaphelpers.Snap()>>>snap.name'testapp'>>>snap.instance_name'testapp'>>>snap.version'0+git.fdf80cd'>>>snap.revision'x1'
  • 路径:

    >>>snap.paths.commonPosixPath('/var/snap/testapp/common')>>>snap.paths.dataPosixPath('/var/snap/testapp/x1')>>>snap.paths.snapPosixPath('/snap/testapp/x1')>>>snap.paths.user_commonPosixPath('/home/ack/snap/testapp/common')>>>snap.paths.user_dataPosixPath('/home/ack/snap/testapp/x1')
  • 快照相关的环境变量:

    >>>pprint.pprint(dict(snap.environ)){'ARCH':'amd64','COMMON':'/var/snap/testapp/common','CONTEXT':'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','COOKIE':'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','DATA':'/var/snap/testapp/x1','INSTANCE_KEY':'','INSTANCE_NAME':'testapp','LIBRARY_PATH':'/var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl32:/var/lib/snapd/void','NAME':'testapp','REEXEC':'','REVISION':'x1','SNAP':'/snap/testapp/x1','USER_COMMON':'/home/ack/snap/testapp/common','USER_DATA':'/home/ack/snap/testapp/x1','VERSION':'0+git.fdf80cd'}>>>snap.environ.ARCH'amd64'
  • 配置选项:

    >>>snap.config.set({'foo.bar':'baz','asdf':3})# this needs to be run as root>>>options=snap.config.get_options('foo','asdf')>>>options['foo']{'bar':'baz'}>>>options['foo.bar']'baz'>>>options['asdf']3>>>options.as_dict(){'asdf':3,'foo':{'bar':'baz'}}

挂钩辅助对象

库提供了在设置捕捉挂钩时减少样板文件的帮助程序。

钩子可以通过简单地将函数注册为钩子来定义 entry_points在应用程序中setup.py

setup(# ...entry_points={'snaphelpers.hooks':['configure = testapp:configure_hook','install = testapp:install_hook']})

使用Snapobject作为参数调用钩子函数:

definstall_hook(snap:snaphelpers.Snap):# ...defconfigure_hook(snap:snaphelpers.Snap):# ...

snap-helpers将负责hooks管道(即创建hook文件 在$SNAP/snap/hooks中。

使用快照进行测试

snap-helperssnap提供了一种使用中的库轻松测试代码的方法。 一个有严格限制的环境。

它提供pythonipython命令:

$ snap-helpers.python -c 'from pprint import pprint; import snaphelpers; pprint(dict(snaphelpers.SnapEnviron()))'
{'ARCH': 'amd64',
 'COMMON': '/var/snap/snap-helpers/common',
 'CONTEXT': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
 'COOKIE': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
 'DATA': '/var/snap/snap-helpers/x1',
 'INSTANCE_KEY': '',
 'INSTANCE_NAME': 'snap-helpers',
 'LIBRARY_PATH': '/var/lib/snapd/lib/gl:/var/lib/snapd/lib/gl32:/var/lib/snapd/void',
 'NAME': 'snap-helpers',
 'REEXEC': '',
 'REVISION': 'x1',
 'SNAP': '/snap/snap-helpers/x1',
 'USER_COMMON': '/home/ack/snap/snap-helpers/common',
 'USER_DATA': '/home/ack/snap/snap-helpers/x1',
 'VERSION': '0+git.26e1e9d'}

可以按如下方式构建和安装快照:

$ snapcraft
$ sudo snap install --dangerous snap-helpers_*.snap

安装

snap-helpers可以从PyPI安装。

运行:

$ pip install snap-helpers

文档

完整的文档可以在ReadTheDocs上找到。

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

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?