如何添加适当的 'meta.yaml' 配方文件来创建 conda-forge 包分发?特别是配方文件中的“测试”部分?
How to add a proper 'meta.yaml' recipe file for creating a conda-forge package distribution? Particularly `test` section in recipe file?
我正在尝试让 conda-forge 托管一个我创建的 python 包,它已经在 PyPI 上:https://pypi.org/project/ludoSim-jaib1/
我已经阅读了有关贡献包的 conda-forge 文档 here and the conda documentation on defining metadata via a meta.yaml
recipe file here
我向 conda-forge/staged-recipes
存储库提交的拉取请求是 here。我的 meta.yaml
文件可以在该拉取请求中找到,但我也会 post 在此处的文本中:
{% set name = "ludoSim-jaib1" %}
{% set version = "0.0.1" %}
package:
name: {{ name|lower }}
version: {{ version }}
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
sha256: 3342abcd52a6a18e1d4b0e2e626c051f24133187647c6618c0f81d7add28d543
build:
number: 0
script: python -m pip install . --no-deps -vv
skip: true # [py<30]
requirements:
host:
- python
- pip
run:
- python
test:
source_files:
tests/test_ludo.py
tests/runTest.py
imports:
- ludoSim
- pytest
about:
home: http://github.com/jaib1/ludoSim
license: GPL-3.0
license_family: GPL
license_file: LICENSE.md
summary: A simple ludo simulator
description: See the package README.md for more information.
extra:
recipe-maintainers:
- jaib1
我认为我在 meta.yaml
配方中一定有一些简单的错误,但由于这是我第一次向 conda-forge 提交包,所以我不确定到底是什么。在阅读文档时,我对配方文件中的 test
部分感到困惑:我不完全理解 test
部分中的信息如何用于构建的 运行 测试:对于我的包,我想 运行 我的包中存在的测试脚本,取决于 pytest 包,并且需要 运行 在我的包所在位置的父目录中。
我能否获得有关如何修复我的 meta.yaml
配方文件以及如何为我的场景建模该文件中的 test
部分的信息?
以下文档是我在下面重复的所有内容的规范参考:
https://docs.conda.io/projects/conda-build/en/stable/resources/define-metadata.html#test-section
创建 conda 配方时,有(AFAIK)三种方法来定义将要执行的测试:
- 在食谱目录中创建
run_test.[py,pl,sh,bat]
(这是conda-build
自动发现的
- 包含
test/imports
以测试 python 模块是否可以导入
- 包括
test/commands
到 运行 任意 shell 命令
这些可以通过 source_files
、requires
和许多其他键来补充,以正确格式化测试环境。我认为,鉴于您的问题描述:
for my package, I want to run a test script which exists in my package, depends on the pytest package, and which needs to be run in the parent directory of the location my package is located in
你可能想要这样的东西:
test:
imports:
- ludoSim
source_files:
- tests/test_ludo.py
- tests/runTest.py
requires:
- pytest
commands:
- pytest tests/
这应该将给定的 source_files
从您的源文件夹复制到测试目录,然后安装 pytest
,然后 运行 pytest tests/
。我不确定我是否正确解释了您的目录要求,但是您的 test/commands
可以包括对 pushd
或类似内容的任意次数的调用,以移动到您需要的位置。
我正在尝试让 conda-forge 托管一个我创建的 python 包,它已经在 PyPI 上:https://pypi.org/project/ludoSim-jaib1/
我已经阅读了有关贡献包的 conda-forge 文档 here and the conda documentation on defining metadata via a meta.yaml
recipe file here
我向 conda-forge/staged-recipes
存储库提交的拉取请求是 here。我的 meta.yaml
文件可以在该拉取请求中找到,但我也会 post 在此处的文本中:
{% set name = "ludoSim-jaib1" %}
{% set version = "0.0.1" %}
package:
name: {{ name|lower }}
version: {{ version }}
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
sha256: 3342abcd52a6a18e1d4b0e2e626c051f24133187647c6618c0f81d7add28d543
build:
number: 0
script: python -m pip install . --no-deps -vv
skip: true # [py<30]
requirements:
host:
- python
- pip
run:
- python
test:
source_files:
tests/test_ludo.py
tests/runTest.py
imports:
- ludoSim
- pytest
about:
home: http://github.com/jaib1/ludoSim
license: GPL-3.0
license_family: GPL
license_file: LICENSE.md
summary: A simple ludo simulator
description: See the package README.md for more information.
extra:
recipe-maintainers:
- jaib1
我认为我在 meta.yaml
配方中一定有一些简单的错误,但由于这是我第一次向 conda-forge 提交包,所以我不确定到底是什么。在阅读文档时,我对配方文件中的 test
部分感到困惑:我不完全理解 test
部分中的信息如何用于构建的 运行 测试:对于我的包,我想 运行 我的包中存在的测试脚本,取决于 pytest 包,并且需要 运行 在我的包所在位置的父目录中。
我能否获得有关如何修复我的 meta.yaml
配方文件以及如何为我的场景建模该文件中的 test
部分的信息?
以下文档是我在下面重复的所有内容的规范参考:
https://docs.conda.io/projects/conda-build/en/stable/resources/define-metadata.html#test-section
创建 conda 配方时,有(AFAIK)三种方法来定义将要执行的测试:
- 在食谱目录中创建
run_test.[py,pl,sh,bat]
(这是conda-build
自动发现的
- 包含
test/imports
以测试 python 模块是否可以导入 - 包括
test/commands
到 运行 任意 shell 命令
这些可以通过 source_files
、requires
和许多其他键来补充,以正确格式化测试环境。我认为,鉴于您的问题描述:
for my package, I want to run a test script which exists in my package, depends on the pytest package, and which needs to be run in the parent directory of the location my package is located in
你可能想要这样的东西:
test:
imports:
- ludoSim
source_files:
- tests/test_ludo.py
- tests/runTest.py
requires:
- pytest
commands:
- pytest tests/
这应该将给定的 source_files
从您的源文件夹复制到测试目录,然后安装 pytest
,然后 运行 pytest tests/
。我不确定我是否正确解释了您的目录要求,但是您的 test/commands
可以包括对 pushd
或类似内容的任意次数的调用,以移动到您需要的位置。