gpt4 book ai didi

python - 如何添加正确的 'meta.yaml' 配方文件来创建 conda-forge 包分发?特别是配方文件中的 `test` 部分?

转载 作者:行者123 更新时间:2023-12-01 07:34:55 29 4
gpt4 key购买 nike

我正在尝试让 conda-forge 托管我创建的 python 包,该包已经在 PyPI 上:https://pypi.org/project/ludoSim-jaib1/

我已阅读有关贡献包的 conda-forge 文档 here以及通过 meta.yaml 配方文件定义元数据的 conda 文档 here

我向 conda-forge/staged-recipes 存储库提交的拉取请求是 here 。我的 meta.yaml 文件可以在该拉取请求中找到,但我也会在此处以文本形式发布它:

{% 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 配方时,(据我所知)有三种方法来定义将要执行的测试:

  • 在配方目录中创建run_test.[py,pl,sh,bat](这是由conda-build自动发现的
  • include test/imports 测试 python 模块是否可以导入
  • 包含 test/commands 来运行任意 shell 命令

这些可以通过 source_filesrequires 和许多其他键来补充,以正确格式化测试环境。我认为,鉴于您的问题描述:

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测试/。我不确定我是否正确解释了您的目录要求,但您的 test/commands 可以包含任意数量的对 pushd 的调用或类似的调用,以便移动到您所在的位置需要。

关于python - 如何添加正确的 'meta.yaml' 配方文件来创建 conda-forge 包分发?特别是配方文件中的 `test` 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57031437/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com