From 566de67d88bc962db72b2965ba13f37041e98948 Mon Sep 17 00:00:00 2001 From: Steffen Brinckmann Date: Tue, 31 Oct 2023 15:32:17 +0100 Subject: [PATCH] validator using pypi's rocrate --- .github/workflows/validator_pypi_rocrate.yml | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflows/validator_pypi_rocrate.yml diff --git a/.github/workflows/validator_pypi_rocrate.yml b/.github/workflows/validator_pypi_rocrate.yml new file mode 100644 index 0000000..a7eeac8 --- /dev/null +++ b/.github/workflows/validator_pypi_rocrate.yml @@ -0,0 +1,50 @@ +name: pypi_rocrate +# Validate if rocrate of pypi can open and parse it +# https://pypi.org/project/rocrate/ + +on: [ push ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ "3.10" ] + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install rocrate + - name: validate + run: | + import os + import tempfile + from pathlib import Path + from zipfile import ZIP_DEFLATED + from zipfile import Path as ZPath + from zipfile import ZipFile + from rocrate.rocrate import ROCrate + from rocrate.model.entity import Entity + from rocrate.model.contextentity import ContextEntity + + for root, _, files in os.walk(".", topdown=False): + for name in files: + if not name.endswith('.eln'): + continue + fileName = os.path.join(root, name) + print(f'\n\nTry to parse: {fileName}') + with ZipFile(fileName, 'r', compression=ZIP_DEFLATED) as elnFile: + p = ZPath(elnFile) + dirName = sorted(p.iterdir())[0] + try: + dirpath = Path(tempfile.mkdtemp()) + elnFile.extractall(dirpath) + temppath= dirpath.joinpath(dirName.name) + crate = ROCrate(temppath) + for e in crate.get_entities(): + print(f' {e.id}: {e.type}') + except ValueError: + print("**ERROR: Could not parse content\n"+traceback.format_exc()+'\n\n') + shell: python