diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 34bbcf7..61de436 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -37,16 +37,16 @@ jobs: matrix: python-version: - '3.9' - - '3.11' + - '3.12' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '11' - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Pre-commit Checks @@ -71,7 +71,7 @@ jobs: # Upload the packages on all develop and main pipleines for test consumption - name: Upload HTML Docs - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: packages path: ./dist/ diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml new file mode 100644 index 0000000..a4dfe11 --- /dev/null +++ b/.github/workflows/prerelease.yml @@ -0,0 +1,42 @@ +# Portions of this file contributed by NIST are governed by the +# following statement: +# +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to Title 17 Section 105 of the +# United States Code, this software is not subject to copyright +# protection within the United States. NIST assumes no responsibility +# whatsoever for its use by other parties, and makes no guarantees, +# expressed or implied, about its quality, reliability, or any other +# characteristic. +# +# We would appreciate acknowledgement if the software is used. + +# This workflow uses Make to review direct dependencies of this +# repository. + +name: Prerelease + +on: + pull_request: + branches: + - main + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: + - '3.9' + - '3.12' + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Review dependencies + run: make check-supply-chain-pre-commit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 57e17c2..56a9ae4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,10 +1,10 @@ repos: - repo: https://github.com/psf/black - rev: 23.1.0 + rev: 23.11.0 hooks: - id: black - repo: https://github.com/pycqa/flake8 - rev: 6.0.0 + rev: 6.1.0 hooks: - id: flake8 - repo: https://github.com/pycqa/isort diff --git a/Makefile b/Makefile index 3d5560f..bebec08 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,8 @@ all: \ .venv-pre-commit/var/.pre-commit-built.log .PHONY: \ + check-supply-chain \ + check-supply-chain-pre-commit \ download .git_submodule_init.done.log: \ @@ -89,6 +91,19 @@ check: \ --directory tests \ check +# This target's dependencies potentially modify the working directory's Git state, so it is intentionally not a dependency of check. +check-supply-chain: \ + check-supply-chain-pre-commit + +# This target is scheduled to run as part of prerelease review. +check-supply-chain-pre-commit: \ + .venv-pre-commit/var/.pre-commit-built.log + source .venv-pre-commit/bin/activate \ + && pre-commit autoupdate + git diff \ + --exit-code \ + .pre-commit-config.yaml + clean: @$(MAKE) \ PYTHON3=$(PYTHON3) \ diff --git a/case_utils/__init__.py b/case_utils/__init__.py index ee0b8df..1421b3e 100644 --- a/case_utils/__init__.py +++ b/case_utils/__init__.py @@ -14,6 +14,6 @@ # # We would appreciate acknowledgement if the software is used. -__version__ = "0.13.0" +__version__ = "0.14.0" from . import local_uuid # noqa: F401 diff --git a/case_utils/case_validate/__init__.py b/case_utils/case_validate/__init__.py index babea69..8e606ee 100644 --- a/case_utils/case_validate/__init__.py +++ b/case_utils/case_validate/__init__.py @@ -32,7 +32,7 @@ details.) """ -__version__ = "0.4.0" +__version__ = "0.5.0" import argparse import logging diff --git a/setup.cfg b/setup.cfg index 826c63f..eaa7b47 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,8 +20,8 @@ license_files = include_package_data = true install_requires = pandas - pyshacl - rdflib >= 6.2.0, < 7.0.0 + pyshacl >= 0.24.0 + rdflib < 8 requests tabulate packages = find: diff --git a/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-records.json b/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-records.json new file mode 100644 index 0000000..f053616 --- /dev/null +++ b/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-records.json @@ -0,0 +1 @@ +[{"?name":"Johnny Lee Outlaw","?mbox":"mailto:jlow@example.com"},{"?name":"Peter Goodguy","?mbox":"mailto:peter@example.org"}] diff --git a/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-values.json b/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-values.json new file mode 100644 index 0000000..e49c3eb --- /dev/null +++ b/tests/case_utils/case_sparql_select/.check-w3-output-with_header-without_index-orient-values.json @@ -0,0 +1 @@ +[["Johnny Lee Outlaw","mailto:jlow@example.com"],["Peter Goodguy","mailto:peter@example.org"]] diff --git a/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-records.json b/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-records.json new file mode 100644 index 0000000..f053616 --- /dev/null +++ b/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-records.json @@ -0,0 +1 @@ +[{"?name":"Johnny Lee Outlaw","?mbox":"mailto:jlow@example.com"},{"?name":"Peter Goodguy","?mbox":"mailto:peter@example.org"}] diff --git a/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-values.json b/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-values.json new file mode 100644 index 0000000..e49c3eb --- /dev/null +++ b/tests/case_utils/case_sparql_select/.check-w3-output-without_header-without_index-orient-values.json @@ -0,0 +1 @@ +[["Johnny Lee Outlaw","mailto:jlow@example.com"],["Peter Goodguy","mailto:peter@example.org"]] diff --git a/tests/case_utils/case_sparql_select/test_data_frame_to_table_text_json.py b/tests/case_utils/case_sparql_select/test_data_frame_to_table_text_json.py index 545666c..7533cc2 100644 --- a/tests/case_utils/case_sparql_select/test_data_frame_to_table_text_json.py +++ b/tests/case_utils/case_sparql_select/test_data_frame_to_table_text_json.py @@ -55,10 +55,22 @@ def make_data_frame_to_json_table_text_parameters() -> ( "values", ]: # Handle incompatible parameter pairings for JSON mode. - if use_index is False: - if json_orient not in {"split", "table"}: + if use_index is True: + if json_orient not in { + "columns", + "index", + "split", + "table", + }: + continue + elif use_index is False: + if json_orient not in { + "records", + "split", + "table", + "values", + }: continue - yield (json_orient, output_mode, use_header, use_index) else: yield ("columns", output_mode, use_header, use_index)