Как добавить правильный файл рецепта meta.yaml для создания дистрибутива пакета conda-forge? В частности, раздел `test` в файле рецепта?
Я пытаюсь создать на conda-forge созданный мной пакет Python, который уже находится на PyPI: https://pypi.org/project/ludoSim-jaib1/
Я прочитал документацию conda-forge по предоставлению пакетов здесь и документацию conda по определению метаданных через meta.yaml
файл рецепта здесь
Мой отправленный запрос на отправку conda-forge/staged-recipes
репо здесь. мой 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
раздел в этом файле для моего сценария?
1 ответ
Следующий документ является канонической ссылкой на все, что я повторяю ниже:
https://docs.conda.io/projects/conda-build/en/stable/resources/define-metadata.html
При создании рецептов conda (AFAIK) существует три способа определения тестов, которые будут выполняться:
- Создайте
run_test.[py,pl,sh,bat]
в каталоге рецептов (это автоматически обнаруживаетсяconda-build
- включают
test/imports
чтобы проверить, что модули Python могут быть импортированы - включают
test/commands
запускать произвольные команды оболочки
Они могут быть дополнены source_files
, requires
и ряд других ключей для правильного форматирования тестовой среды. Я думаю, учитывая ваше описание проблемы:
для моего пакета я хочу запустить тестовый сценарий, который существует в моем пакете, зависит от пакета pytest и который необходимо запустить в родительском каталоге, в котором находится мой пакет
Вы, вероятно, хотите что-то вроде этого:
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
или подобное, чтобы перемещаться туда, где вы должны быть.