Spaces:
Runtime error
Runtime error
import requests | |
from pathlib import Path | |
from typing import Set | |
import pytest | |
import toml | |
from pip._internal.req import parse_requirements | |
def get_parsed_requirements(requirements_file: str) -> Set: | |
""" | |
Returns a set of requirements that are defined in `requirements_file`, | |
without versions | |
""" | |
requirements_set = set() | |
ignore_list = [ | |
"paddlenlp", | |
"paddle2onnx", | |
"paddlepaddle", | |
] # temporary ignore paddle | |
parsed_requirements = parse_requirements(requirements_file, session=False) | |
separators = ("=", "<", ">", "[") | |
for req in parsed_requirements: | |
requirement = req.requirement | |
# requirements for Windows or macOS only | |
if ";" in requirement and "linux" not in requirement: | |
continue | |
if requirement.startswith("git+"): | |
requirement = requirement.split("#egg=")[-1] | |
for separator in separators: | |
requirement = requirement.replace(separator, "|") | |
reqname = requirement.split("|")[0] | |
if reqname not in ignore_list: | |
requirements_set.add(reqname) | |
return requirements_set | |
def test_readme(): | |
""" | |
Test that all notebooks have a README file | |
""" | |
for item in Path("notebooks").iterdir(): | |
if item.is_dir(): | |
# item is a notebook directory | |
notebook_dir = item.relative_to(Path("notebooks")) | |
if str(notebook_dir)[0].isdigit(): | |
assert "README.md" in [filename.name for filename in item.iterdir()], f"README not found in {item}" | |
def test_requirements_docker(): | |
""" | |
Test that requirements.txt is a subset of Docker requirements in Pipfile | |
This test does not check requirements versions, it only verifies existence | |
""" | |
with open(".docker/Pipfile") as f: | |
pipfile_contents = toml.load(f) | |
docker_requirements = set(list(pipfile_contents["packages"].keys())) | |
pip_requirements = get_parsed_requirements("requirements.txt") | |
assert pip_requirements.issubset(docker_requirements), f"Docker Pipfile misses: {pip_requirements.difference(docker_requirements)}" | |
def test_requirements_binder(): | |
""" | |
Test that requirements.txt is a subset of Binder requirements | |
This test does not check requirements versions, it only verifies existence | |
""" | |
pip_requirements = get_parsed_requirements("requirements.txt") | |
binder_requirements = get_parsed_requirements(".binder/requirements.txt") | |
assert pip_requirements.issubset(binder_requirements), f"Binder requirements misses: {pip_requirements.difference(binder_requirements)}" | |
def test_urls_exist(): | |
""" | |
Test that urls that may be cached still exist on the server | |
""" | |
urls = [ | |
"http://cs231n.stanford.edu/tiny-imagenet-200.zip", | |
"https://github.com/onnx/models/raw/main/vision/style_transfer/fast_neural_style/model/pointilism-9.onnx", | |
"https://storage.openvinotoolkit.org/data/test_data/openvino_notebooks/kits19/case_00030.zip", | |
] | |
headers = {"User-Agent": "Mozilla/5.0"} | |
for url in urls: | |
response = requests.get(url=url, headers=headers) | |
if not response.status_code == 200: | |
print(f"Downloading {url} failed") | |
raise | |