Как добавить правильный файл рецепта 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 или подобное, чтобы перемещаться туда, где вы должны быть.

Другие вопросы по тегам