python应用程序框架
cement的Python项目详细描述
水泥骨架
cement是python的高级应用程序框架,主要关注命令行接口(cli)。它的目标是为简单和复杂的命令行应用引入一个标准的、功能齐全的平台,并在不牺牲质量的情况下支持快速开发需求。水泥是柔性的,它的使用案例从简单的微观框架到巨型框架的复杂性。无论是单个文件脚本,还是多层应用程序,水泥都是你一直在寻找的基础。
对git的第一次承诺是在2009年12月4日。从那时起,这个框架在设计中经历了多次迭代,并且从一开始就不断地发展和改进。cement是用于命令行和后端应用程序开发的最稳定、最完整的框架。
核心功能
水泥芯特征包括(但不限于):
- 框架的核心部分可以通过处理程序/接口定制
- 处理程序系统用接口连接实现类
- 扩展处理程序接口,可轻松扩展框架功能
- 配置处理程序支持将多个配置文件解析为一个配置
- 参数处理程序分析命令行参数并与配置合并
- 日志处理程序支持控制台和文件日志记录
- plugin handler提供了一个接口,可以方便地扩展您的应用程序
- 输出处理程序接口将返回词典呈现到控制台
- 缓存处理程序接口添加了缓存支持以提高性能
- 控制器处理程序支持子命令和嵌套控制器
- hook支持为应用程序增加了一点魔力,也与框架紧密相连
- 零外部依赖项*(不包括可选扩展)
- 100%测试覆盖率(
pytest
) - 100%符合PEP8(
flake8
) - 广泛的api引用(
sphinx
) - 在Python3.5+上测试
- 不支持python 2.x
主线水泥源附带的一些可选扩展确实需要外部依赖项。应用程序开发人员有责任将这些依赖项与其应用程序一起包括在内,因为cement显式地不包括这些依赖项。
更多信息
- Official Website / Developer Documentation
- PyPi Packages
- Github Source Code / Issue Tracking
- Travis CI
- Slack Channel
许可证
cement cli应用程序框架是开源的,并根据bsd许可证(三条)进行分发。请参阅此软件附带的许可证文件。
开发
Docker
这个项目包括一个docker-compose
配置,用于设置所有必需的服务和开发依赖项。这是本地开发的推荐路径,也是唯一完全受支持的选项。
下面创建所有必需的docker容器,并在cement
dev容器中启动ash shell进行开发。
$ make dev
|> cement <| src #
以上相当于运行:
$ docker-compose up -d
$ docker-compose exec cement /bin/ash
virtualenv
传统的virtualenv助手可用:
$ make virtualenv
$ source env/bin/activate
|> cement <| $
流浪者
另一个选择是经营流浪者促进发展。部分支持此功能,主要用于在Windows上开发/测试,以及在目标操作系统上测试特定问题。
查看已配置系统的列表:
$ vagrant status
Linux
$ vagrant up linux
$ vagrant ssh linux
vagrant@linux $ cd /vagrant
vagrant@linux $ bash scripts/vagrant/bootstrap.sh
vagrant@linux $ make virtualenv
vagrant@linux $ source env/bin/activate
|> cement >| $
窗口
windows开发和支持不是100%完成的。众所周知,cement可以在windows上运行和工作,但是它并不是开发的主要目标,因此,安装程序没有那么简单,目前有几个已知的错误。
以下假设您在基于unix的系统中运行这两个初始命令:
$ make clean
$ vagrant up windows
RDP或登录到桌面/控制台,以及打开powershell终端:
C:\> cd C:\Vagrant
C:\Vagrant> powershell.exe scripts\vagrant\bootstrap.ps1
C:\Vagrant> make virtualenv-windows
C:\Vagrant> .\env-windows\Scripts\activate.ps1
C:\Vagrant> make test-core
请注意,只有核心库在windows上经过了全面测试。
运行测试和符合性
cement有一个严格的策略,即所有代码和测试都符合pep8指南,因此在任何单元测试运行之前都会调用flake8
。所有代码提交要求100%测试覆盖率和PEP8符合性:
执行以下操作以运行所有符合性和单元测试:
$ make test
请参阅Makefile
以了解所有其他常见的开发操作。