跳转到主要内容

将Cookiecutter项目模板集成到PyScaffold中(见:https://github.com/cookiecutter/cookiecutter)

项目描述

Built Status ReadTheDocs Coveralls PyPI-Server Monthly Downloads

pyscaffoldext-cookiecutter

一个扩展,它将Cookiecutter模板的灵活性与PyScaffold的强大功能结合起来。

Cookiecutter是一个灵活的工具,允许定义各种软件项目的模板。另一方面,PyScaffold专注于为开发可分发Python包提供良好的即用型体验(仅限Python包)。尽管有不同的目标,但可以将这两个工具的强大功能结合起来,以创建自定义Python项目设置。

快速入门

此扩展可以直接使用pip安装

pip install pyscaffoldext-cookiecutter

或者,如果您更喜欢pipx

pipx install pyscaffold  # if you haven't installed pyscaffold yet
pipx inject pyscaffold pyscaffoldext-cookiecutter

请注意,安装完成后,运行 putup -h 将显示一个新选项 --cookiecutter 模板。使用此选项指定您要使用的模板(路径或URL)。Cookiecutter创建的文件结构将由PyScaffold进一步精炼。例如

putup my-proj1 --cookiecutter ~/my-templates/default
putup my-proj2 --cookiecutter gh:something/from-github

有关可能的URL和缩写语的详细信息,请参阅Cookiecutter文档。

还添加了一个额外的选项 --cookiecutter-params,因此您可以更全面地控制Cookiecutter渲染模板时使用的值(PyScaffold不会运行Cookiecutter的交互式提示)。此选项的形式为空格分隔的NAME=VALUE参数列表,如下例所示

putup mypkg \
  --cookiecutter gh:pyscaffold/cookiecutter-pypackage \
  --cookiecutter-params command_line_interface=Argparse use_pytest=y

检查您正在使用的模板(或目录)中的cookiecutter.json文件,以查看可用的参数。请注意,PyScaffold已添加一些默认参数,如以下适合的模板部分所示。

PyScaffold与Cookiecutter模板

以下示例演示了如何创建一个名为mypkg的新包,该包使用Cookiecutter模板,但增强了PyScaffold的功能

putup mypkg --cookiecutter gh:pyscaffold/cookiecutter-pypackage

这大致相当于首先使用Cookiecutter模板创建一个项目,然后将其转换为PyScaffold

cookiecutter --no-input gh:pyscaffold/cookiecutter-pypackage project_name=mypkg
putup mypkg --force

适合的模板

请注意,PyScaffold将覆盖一些由Cookiecutter生成的文件,如setup.py,包目录下的__init__.py文件和大部分docs目录,以便提供setuptools_scmsphinx集成。因此,并非所有Cookiecutter模板都适合这种方法。

理想情况下,互操作模板应专注于src文件夹内的文件结构,而不是打包或分发,因为PyScaffold已经在底层处理了它。这也意味着,如果您想在Python包内生成文件,您的模板应遵循src-layout。

此外,PyScaffold使用带有--no-input标志的Cookiecutter,因此用户不会进行手动配置。相反,PyScaffold注入以下参数

author
email
full_name => same as author
project_name => the name of the folder where the project will be generated
repo_name => same as project_name
package_name => putup's --package (as in `import`)
namespace => putup's --namespace (if any)
installable_name => putup's --name (an installable name, like in PyPI/pip install)
project_short_description => putup's description
release_date => equivalent to the day you are running putup
year => equivalent to the year you are running putup

任何额外的参数都应使用--cookiecutter-params选项传递。

因此,模板文件结构应类似于

cookiecutter-something/
└── {{cookiecutter.project_name}}/
    └── src/
        └── {{cookiecutter.package_name}}/
            └── ...

有关模板创建的更多信息,请参阅Cookiecutter

修改与贡献

此项目使用pre-commit,请在进行任何更改之前确保已安装它

pip install pre-commit
cd pyscaffoldext-cookiecutter
pre-commit install

更新钩子到最新版本是个好主意

pre-commit autoupdate

请还检查PyScaffold的贡献指南

注意

此项目已使用PyScaffold 4.0a2设置。有关PyScaffold的详细信息和使用信息,请参阅https://pyscaffold.org/

项目详细信息


下载文件

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

源代码分发

pyscaffoldext-cookiecutter-0.1.tar.gz (26.4 kB 查看哈希值)

上传时间 源代码

构建分发

pyscaffoldext_cookiecutter-0.1-py2.py3-none-any.whl (8.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持