Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
07a27e7
Transformer Implementation
OlivGruwe Jun 7, 2023
3c1ef15
Transformer Implementation
OlivGruwe Jun 7, 2023
6d23b4c
Transformer Implementation +
OlivGruwe Jun 12, 2023
d85aa30
Transformer Implementation
OlivGruwe Jun 12, 2023
b02bb01
Transformer Implementation
OlivGruwe Jun 12, 2023
d7c727f
Transformer Implementation
OlivGruwe Jun 12, 2023
b3b4f52
Transformer Implementation
OlivGruwe Jun 12, 2023
dcde84e
Correction Txt -> Pdf
OlivGruwe Jul 3, 2023
d6b8c6c
Merge branch 'master' of github.com:crim-ca/weaver into job_output_tr…
Nazim-crim Sep 24, 2024
b3048bb
Fixing naming typos
Nazim-crim Sep 24, 2024
a23519e
Adding libpangocairo to dockerfile
Nazim-crim Sep 24, 2024
ee9c208
Fixing import and linting
Nazim-crim Sep 25, 2024
a8d4473
Fixing docker call and removing unused code
Nazim-crim Sep 26, 2024
574314c
Removing transformer route and test in job, fixing makefile
Nazim-crim Sep 26, 2024
0304b3a
Adding swagger and endpoint definition to support outputId and resultId
Nazim-crim Sep 26, 2024
4cf0e80
Adding in config output and result service
Nazim-crim Oct 1, 2024
81721dd
Fixing test to use transformer resource path
Nazim-crim Oct 11, 2024
e66c582
Fix transform function any to pdf and any to html for transform test …
Nazim-crim Oct 11, 2024
34cd699
Fix import lint
Nazim-crim Oct 11, 2024
fe71427
fixing some linting
Nazim-crim Oct 15, 2024
71f6f96
Adding get job output route
Nazim-crim Oct 15, 2024
34ddd87
Fxing more linting
Nazim-crim Oct 15, 2024
5fe2af0
Merge branch 'master' of github.com:crim-ca/weaver into job_output_tr…
Nazim-crim Oct 15, 2024
9fedeb7
Remove duplicate code from merge
Nazim-crim Oct 15, 2024
13d3d17
Update get job output to use get_job_results_single and refactor tran…
Nazim-crim Oct 15, 2024
bc14eac
fix docstring
Nazim-crim Oct 15, 2024
a837ff0
Fixing wps api test
Nazim-crim Oct 25, 2024
037a8a4
Fix test and transform to use conversion list and content type from f…
Nazim-crim Oct 28, 2024
a658579
Merge branch 'master' of github.com:crim-ca/weaver into job_output_tr…
Nazim-crim Oct 28, 2024
38314b6
Modify offering to add alternate formats to format in process and test
Nazim-crim Nov 5, 2024
472ac6b
Remove call of get_all_possible_formats_links in get outputs endpoint
Nazim-crim Nov 5, 2024
4ee2247
Fix wps package test and offering method for edge case where formats …
Nazim-crim Nov 5, 2024
a71187d
Fixing process test
Nazim-crim Nov 6, 2024
e6143b5
Fixing json indent
Nazim-crim Nov 6, 2024
6bfb158
Fixing typo and adding missing format in test
Nazim-crim Nov 6, 2024
7591617
Fixing pep8
Nazim-crim Nov 6, 2024
41147b0
fix single quote
Nazim-crim Nov 6, 2024
3448038
Fixing providers test and fix empty line eof
Nazim-crim Nov 6, 2024
ce4bbb3
Adding test files for different conversion
Nazim-crim Nov 7, 2024
9d823e8
Adding create content id, fixing test with additional format type
Nazim-crim Nov 7, 2024
969f76b
Adding excluded in transform and fixing link parsing
Nazim-crim Nov 8, 2024
42c772d
Fixing make result link and adding URN schema
Nazim-crim Nov 8, 2024
e4c3194
Fixing kwargs parsing
Nazim-crim Nov 8, 2024
c3b0db7
Fixing make link header and adding test, fix old test
Nazim-crim Nov 14, 2024
7544834
Merge branch 'master' of github.com:crim-ca/weaver into job_output_tr…
Nazim-crim Nov 14, 2024
a7fb477
Fixing write images and adding coverage
Nazim-crim Nov 14, 2024
bf1118d
Adding docstring and typing, fixing test to use parametrize
Nazim-crim Nov 14, 2024
3c24142
Adding change log entry and fixing import
Nazim-crim Nov 15, 2024
7c1ff74
Using smaller tests files
Nazim-crim Nov 18, 2024
e70233e
Using contentType class for test
Nazim-crim Nov 18, 2024
32bdb81
Fixing comment indent, removing unused code
Nazim-crim Nov 26, 2024
a7f8216
Wrap test in try finally
Nazim-crim Nov 29, 2024
c017929
Fixing docstring, removing unused function
Nazim-crim Nov 29, 2024
2ce3667
Fixing doc, requirements ordering and removing print
Nazim-crim Dec 12, 2024
f9aee2f
Fixing cli formating, swagger def and correcting wps_package assert
Nazim-crim Dec 18, 2024
0bc4822
modifying execute and fix import
Nazim-crim Feb 19, 2025
a2e8eee
Merge master
Nazim-crim Feb 19, 2025
216b7ea
fixing requirements
Nazim-crim Feb 19, 2025
11e5546
Merge branch 'master' into job_output_transform
fmigneault Mar 12, 2025
f2a87a8
Fixing linting and provenance test when outputs are empty
Nazim-crim Mar 13, 2025
c8e7564
Fixing test to keep outputs endpoint json only
Nazim-crim Mar 24, 2025
ddbe770
Fix cli download to only unique link
Nazim-crim Mar 24, 2025
2f89e63
Removing unused import, code cleanup, fixing ogc strict check
Nazim-crim Mar 24, 2025
e8093ec
Fix process test to use contentType constants
Nazim-crim Mar 24, 2025
c79a22b
Merge branch 'master' of github.com:crim-ca/weaver into job_output_tr…
Nazim-crim Mar 24, 2025
2852caf
Fixing import
Nazim-crim Mar 24, 2025
704e217
Simplify possible output format lookup and removing unused function
Nazim-crim Mar 24, 2025
7ec5e4f
refactoring to extract logic to extend_alternate_formats
Nazim-crim Mar 26, 2025
f3d0d9e
Adding missing types to tests and adding missing docstring
Nazim-crim Mar 26, 2025
e289017
Fixing import, adding test for coverage and removed unused code
Nazim-crim Apr 1, 2025
64db348
Adding parameter in extend alternate format to avoid circular dep, re…
Nazim-crim Apr 1, 2025
bc859d3
Merge branch 'master' into job_output_transform
fmigneault Apr 2, 2025
555ecc1
Fixing changelog
Nazim-crim Apr 7, 2025
a2306c1
Fixing test formating, removing try catch
Nazim-crim Apr 7, 2025
8b3b3c4
Adding pytest fixture to avoid duplicate
Nazim-crim Apr 7, 2025
e2b282c
fixing docstring
Nazim-crim Apr 9, 2025
47d35cf
Fixing format resolution and type validation
Nazim-crim Apr 9, 2025
9641524
Merge branch 'master' into job_output_transform
Nazim-crim Mar 6, 2026
9f19f73
Add missing import
Nazim-crim Mar 6, 2026
7a9934b
Fix test, docstring
Nazim-crim Mar 11, 2026
1f2324c
Refactor transform, fix test, adjust logic in get job output
Nazim-crim Mar 11, 2026
163b015
Fix upstream order jobs include
Nazim-crim Mar 11, 2026
a537d8e
adding missing test file
Nazim-crim Mar 11, 2026
8a8bc62
Fix wps package test
Nazim-crim Mar 11, 2026
022054d
Rename class, update test
Nazim-crim Mar 12, 2026
ba9a805
Fix test
Nazim-crim Mar 12, 2026
f386973
Update schema generated
Nazim-crim Mar 12, 2026
d7dbf53
remove unused import
Nazim-crim Mar 12, 2026
8e667ef
Fix static flake analysis
Nazim-crim Mar 12, 2026
c69020c
Add resolve result single fix lint
Nazim-crim Mar 12, 2026
576a266
Merge branch 'master' into job_output_transform
Nazim-crim Mar 12, 2026
f69410b
Fix test with output format
Nazim-crim Mar 12, 2026
21e8de6
Update docker and create new transform requirements
Nazim-crim Mar 12, 2026
aed4be5
Move install transform to isntall dev pre target
Nazim-crim Mar 12, 2026
dda8c16
Add sudo in make call to install cairo in ci
Nazim-crim Mar 12, 2026
e98d493
fix readthe docs install
Nazim-crim Mar 12, 2026
afc6813
add coverage
Nazim-crim Mar 13, 2026
cf5d9be
Fix docstring
Nazim-crim Mar 18, 2026
fa3e6d3
fix docstring, and format
Nazim-crim Mar 18, 2026
42ef873
fix contenttype and content encoding string
Nazim-crim Mar 18, 2026
30e216e
Update change log, fix format and test
Nazim-crim Mar 18, 2026
f08edcb
Add transform entry in changelog
Nazim-crim Mar 18, 2026
6420dfa
Fix format test for xml
Nazim-crim Mar 18, 2026
4c4a48c
Revert xml convert change, and force to raw xml in handler
Nazim-crim Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ jobs:
if: ${{ matrix.test-case != 'test-docker' }}
# install package and dependencies directly,
# skip sys/conda setup to use active python
run: make install-sys install-pkg install-pip install-raw install-dev install-dev-npm
run: SUDO=sudo make install-sys install-pkg install-pip install-raw install-dev install-dev-npm
- name: Display Packages
# skip python setup if running with docker
if: ${{ matrix.test-case != 'test-docker' }}
Expand Down
1 change: 1 addition & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ python:
install:
- requirements: requirements-sys.txt
- requirements: requirements-doc.txt
- requirements: requirements-transform.txt
22 changes: 17 additions & 5 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,23 @@ Changes

Changes:
--------
- No change.

Fixes:
------
- No change.
- Add support for various GeoTIFF formats, allowing flexible handling and representation of GeoTIFFs in outputs
(fixes `#100 <https://github.com/crim-ca/weaver/issues/100>`_).
- Add support for ``GET /jobs/{jobId}/results/{id}`` and ``GET /jobs/{jobId}/outputs/{id}`` routes to enable direct access to
individual `Job` result items by ID. This enhancement includes support alternate representations based on the ``Accept`` header.
If an alternate format (e.g., YAML for a JSON source) is requested it will be automatically generated and returned.
- Return ``Link`` headers with ``rel="alternate"`` containing all possible output formats, allowing retrieval via query parameters
(e.g., ``/jobs/{jobId}/outputs/{id}?f=application/x-yaml``) (fixes `#18 <https://github.com/crim-ca/weaver/issues/18>`_).
- Add ``weaver.formats.OutputFormat.CSV`` format support and extend ``OutputFormat.convert()`` method to handle CSV conversions
from JSON data structures.
- Add ``weaver.transform`` module providing format conversion handlers for `Job` outputs. Output formats are dynamically
extended from the original `Process` definition to provide alternate result representations without modifying the deployed
`Process` metadata.

Fixes:
------
- Fix ``OutputFormat.convert()`` returning ``bytes`` instead of ``str`` for XML/HTML conversions, causing write errors when
saving transformation results to files.

.. _changes_6.9.1:

Expand Down
22 changes: 18 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ APP_INI ?= $(APP_ROOT)/config/$(APP_NAME).ini
# guess OS (Linux, Darwin,...)
OS_NAME := $(shell uname -s 2>/dev/null || echo "unknown")
CPU_ARCH := $(shell uname -m 2>/dev/null || uname -p 2>/dev/null || echo "unknown")
SUDO ?=

# conda
CONDA_CMD ?= __EMPTY__
Expand Down Expand Up @@ -227,10 +228,10 @@ conda-env-export: ## export the conda environment
install: install-all ## alias for 'install-all' target

.PHONY: install-run
install-run: conda-install install-sys install-pkg install-raw ## install requirements and application to run locally
install-run: conda-install install-sys install-pkg install-raw install-dev ## install requirements and application to run locally

.PHONY: install-all
install-all: conda-install install-sys install-pkg install-pip install-dev ## install application with all dependencies
install-all: conda-install install-sys install-pkg install-pip install-dev ## install application with all dependencies

.PHONY: install-doc
install-doc: install-pip ## install documentation dependencies
Expand All @@ -239,7 +240,7 @@ install-doc: install-pip ## install documentation dependencies
@echo "Install with pip complete. Run documentation generation with 'make docs' target."

.PHONY: install-dev
install-dev: install-pip ## install development and test dependencies
install-dev: install-pip install-transform ## install development and test dependencies
@echo "Installing development packages with pip..."
@bash -c '$(CONDA_CMD) pip install $(PIP_XARGS) -r "$(APP_ROOT)/requirements-dev.txt"'
@echo "Install with pip complete. Test service with 'make test*' variations."
Expand Down Expand Up @@ -273,7 +274,7 @@ install-raw: ## install without any requirements or dependencies (suppose everyt
install-npm: ## install npm package manager and dependencies if they cannot be found
@[ -f "$(shell which npm)" ] || ( \
echo "Binary package manager npm not found. Attempting to install it."; \
apt-get install npm \
$(SUDO) apt-get install npm \
)

.PHONY: install-npm-stylelint
Expand All @@ -290,6 +291,19 @@ install-npm-remarklint: install-npm ## install remark-lint dependency for 'chec
npm install --save-dev \
)

.PHONY: install-transform
install-transform: install-cairo-dependencies # install-transform dependencies
@echo "Installing transformation dependencies..."
@bash -c '$(CONDA_CMD) pip install $(PIP_XARGS) -r "$(APP_ROOT)/requirements-transform.txt" --no-cache-dir'
@echo "Install with pip complete."

.PHONY: install-cairo-dependencies
install-cairo-dependencies: ## install required dependencies for Transformer
@[ -f "$(shell which cairo)" ] || ( \
echo "Binary package manager cairo not found. Attempting to install it."; \
$(SUDO) apt-get install libpangocairo-1.0-0 \
)

.PHONY: install-dev-npm
install-dev-npm: install-npm install-npm-remarklint install-npm-remarklint ## install all npm development dependencies

Expand Down
8 changes: 4 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ Security and vulnerability reports should be submitted as an issue of type [Secu

Patches for security vulnerabilities will be released for the following versions:

| Version | Supported |
|---------|--------------------|
| 4.x | :white_check_mark: |
| < 4.x | :x: |
| Version | Supported |
| ------- | --------- |
| 4.x | |
| < 4.x | |

[svr]: https://github.com/crim-ca/weaver/issues/new?assignees=fmigneault&labels=triage%2Fsecurity&template=security.md
3 changes: 2 additions & 1 deletion docker/Dockerfile-base
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
g++ \
git \
nodejs \
libpangocairo-1.0-0 \
&& pip install --no-cache-dir --upgrade -r requirements-sys.txt \
&& pip install --no-cache-dir -r requirements.txt \
&& pip install --no-cache-dir -r requirements.txt -r requirements-transform.txt \
&& pip install --no-cache-dir -e ${APP_DIR} \
&& apt-get remove -y \
gcc \
Expand Down
7 changes: 7 additions & 0 deletions requirements-transform.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
cairosvg
fpdf
multipagetiff
pandas
Pillow
python-magic
rasterio
13 changes: 12 additions & 1 deletion tests/functional/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,11 @@ def test_describe(self):
for out_fmt in output_formats:
out_fmt.pop("$schema", None)
out_fmt.pop("$id", None)
assert output_formats == [{"default": True, "mediaType": ContentType.TEXT_PLAIN}]
assert output_formats == [
{"default": True, "mediaType": ContentType.TEXT_PLAIN},
{"mediaType": ContentType.TEXT_HTML},
{"mediaType": ContentType.APP_PDF}
]
assert "undefined" not in result.message, "CLI should not have confused process description as response detail."
assert result.body["description"] == (
"Dummy process that simply echo's back the input message for testing purposes."
Expand Down Expand Up @@ -1564,6 +1568,13 @@ def test_deploy_payload_process_info_merged(self):
out_cwl_fmt = {"default": False, "mediaType": io_fmt, "encoding": "base64"}
out_oas_fmt = {"default": True, "mediaType": ContentType.APP_JSON}
out_any_fmt = [out_cwl_fmt, out_oas_fmt]
# Alternative format added in process description
out_alt_fmt = [
{"mediaType": ContentType.TEXT_CSV},
{"mediaType": ContentType.APP_XML},
{"mediaType": ContentType.APP_YAML},
]
out_any_fmt.extend(out_alt_fmt)
# ignore schema specifications for comparison only of contents
for field in ["$id", "$schema"]:
in_schema.pop(field, None)
Expand Down
Loading
Loading