diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 00000000..e5c2bc0b --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,71 @@ +name: Main CI + +on: [push] + +jobs: + lint: + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + matrix: + python-version: + - '3.14' + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Use Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install testing dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-test.txt + - name: Lint + # FIXME + continue-on-error: true + run: | + flake8 lib/pyld tests --count --show-source --statistics + env: + LOADER: ${{ matrix.loader }} + test: + runs-on: ubuntu-latest + needs: [lint] + timeout-minutes: 10 + strategy: + matrix: + python-version: + - '3.10' + - '3.11' + - '3.12' + - '3.13' + - '3.14' + - 'pypy3.10' + loader: [requests, aiohttp] + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Use Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Install testing dependencies + run: | + pip install -r requirements-test.txt + - name: Test with Python=${{ matrix.python-version }} Loader=${{ matrix.loader }} + run: | + python tests/runtests.py ./specifications/json-ld-api/tests -l ${{ matrix.loader }} + python tests/runtests.py ./specifications/json-ld-framing/tests -l ${{ matrix.loader }} + env: + LOADER: ${{ matrix.loader }} + #coverage: + # needs: [test] + # FIXME diff --git a/.gitignore b/.gitignore index 022ac422..60a6351c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ lib/PyLD.egg-info profiler tests/test_caching.py tests/data/test_caching.json + +# Local version file for pyenv +.python-version diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..29eae86d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "specifications/json-ld-api"] + path = specifications/json-ld-api + url = https://github.com/w3c/json-ld-api.git +[submodule "specifications/json-ld-framing"] + path = specifications/json-ld-framing + url = https://github.com/w3c/json-ld-framing.git diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9e92aa18..00000000 --- a/.travis.yml +++ /dev/null @@ -1,42 +0,0 @@ -dist: xenial -language: python -cache: pip -python: - - "3.4" - - "3.5" - - "3.6" - - "3.7" - - "3.8" - - "pypy3" -sudo: false - -# Define document loaders -env: - - LOADER=requests - - LOADER=aiohttp - -matrix: - exclude: - - python: "3.4" - env: LOADER=aiohttp - allow_failures: - - python: "3.4" - - python: "3.5" - -install: - - pip install -r requirements.txt - - git clone --depth 1 https://github.com/w3c/json-ld-api.git _json-ld-api - - git clone --depth 1 https://github.com/w3c/json-ld-framing.git _json-ld-framing - - git clone --depth 1 https://github.com/json-ld/normalization.git _normalization - -# Download test suite and run tests... submodule? meta testing project with -# all of the reference implementations? -script: - - python tests/runtests.py ./_json-ld-api/tests -l $LOADER - - python tests/runtests.py ./_json-ld-framing/tests -l $LOADER - - python tests/runtests.py ./_normalization/tests -l $LOADER - -notifications: - email: - on_success: change - on_failure: change diff --git a/CHANGELOG.md b/CHANGELOG.md index fbae7308..ac0d447c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # pyld ChangeLog +## 3.0.0 - 2025-xx-xx + +### Changed +- **BREAKING**: Require supported Python version >= 3.10. + ## 2.0.4 - 2024-02-16 ### Fixed diff --git a/README.rst b/README.rst index bdafde9e..6c387a3e 100644 --- a/README.rst +++ b/README.rst @@ -59,7 +59,7 @@ yet supported. Requirements ------------ -- Python_ (3.6 or later) +- Python_ (3.10 or later) - Requests_ (optional) - aiohttp_ (optional, Python 3.5 or later) diff --git a/requirements-test.txt b/requirements-test.txt new file mode 100644 index 00000000..39304807 --- /dev/null +++ b/requirements-test.txt @@ -0,0 +1 @@ +flake8 diff --git a/specifications/json-ld-api b/specifications/json-ld-api new file mode 160000 index 00000000..590f78d1 --- /dev/null +++ b/specifications/json-ld-api @@ -0,0 +1 @@ +Subproject commit 590f78d171c45898ddaf6f8bd660a0567f4c7e5c diff --git a/specifications/json-ld-framing b/specifications/json-ld-framing new file mode 160000 index 00000000..fa228743 --- /dev/null +++ b/specifications/json-ld-framing @@ -0,0 +1 @@ +Subproject commit fa228743e890499c35bc61aabf01e44cf5bbc3bc diff --git a/tests/runtests.py b/tests/runtests.py index 08ed0d34..9d2567ef 100644 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -671,6 +671,12 @@ def write(self, filename): # see JSON-LD 1.0 Errata 'specVersion': ['json-ld-1.0'], 'idRegex': [ + # uncategorized + '.*compact-manifest#t0112$', + '.*compact-manifest#tm023$', + '.*compact-manifest#t0111$', + '.*compact-manifest#t0113$', + '.*compact-manifest#tc028$', ] }, 'fn': 'compact', @@ -707,6 +713,12 @@ def write(self, filename): # see JSON-LD 1.0 Errata 'specVersion': ['json-ld-1.0'], 'idRegex': [ + # uncategorized + '.*expand-manifest#tc036$', + '.*expand-manifest#tc037$', + '.*expand-manifest#tc038$', + '.*expand-manifest#ter54$', + '.*expand-manifest#ter56$', ] }, 'fn': 'expand', @@ -725,6 +737,8 @@ def write(self, filename): # see JSON-LD 1.0 Errata 'specVersion': ['json-ld-1.0'], 'idRegex': [ + # uncategorized html + '.*html-manifest#tf004$', ] }, 'fn': 'flatten', @@ -744,6 +758,8 @@ def write(self, filename): # see JSON-LD 1.0 Errata 'specVersion': ['json-ld-1.0'], 'idRegex': [ + # uncategorized + '.*frame-manifest#t0069$', ] }, 'fn': 'frame', @@ -760,6 +776,8 @@ def write(self, filename): # direction (compound-literal) '.*fromRdf-manifest#tdi11$', '.*fromRdf-manifest#tdi12$', + # uncategorized + '.*fromRdf-manifest#t0027$', ] }, 'fn': 'from_rdf', @@ -792,6 +810,14 @@ def write(self, filename): # well formed '.*toRdf-manifest#twf05$', '.*toRdf-manifest#twf06$', + # uncategorized + '.*toRdf-manifest#tc038$', + '.*toRdf-manifest#ter54$', + '.*toRdf-manifest#ter56$', + '.*toRdf-manifest#tli12$', + '.*toRdf-manifest#tli14$', + '.*toRdf-manifest#tc036$', + '.*toRdf-manifest#tc037$', ] }, 'skip': {