Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.0.0 Release #16

Merged
merged 64 commits into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
046ae04
Unit test to deploy, execute, and undeploy CWL DAG
nikki-t Jul 2, 2024
8afdb59
Fix new line at end of file
nikki-t Jul 2, 2024
14e276f
Merge branch 'develop' into 131-test-cwl-dag
nikki-t Jul 2, 2024
5dc5589
Parametrize unit test functions to run on multiple CWL/DAGs
nikki-t Jul 5, 2024
b252499
Fix JSON file formatting
nikki-t Jul 5, 2024
2f0f3e7
Allow execution of workflow via dispatch and on pull request
nikki-t Jul 5, 2024
789cd10
Fix trailing whitespace
nikki-t Jul 5, 2024
752dea0
Remove duplicate unit tests
nikki-t Jul 5, 2024
d0a42e3
Merge pull request #14 from unity-sds/131-test-cwl-dag
nikki-t Jul 5, 2024
5a6e628
feat: Initial autogenerated FastAPI implementation
Aug 14, 2024
95de49c
feat: Initial autogenerated FastAPI implementation
Aug 14, 2024
dc4a994
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
7abe7a8
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
bb098f3
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
5648b1e
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
466cf1e
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
51f680f
feat: Initial autogenerated FastAPI implementation
Aug 15, 2024
6d4d7fe
feat: Initial autogenerated FastAPI implementation
Aug 19, 2024
5e01259
feat: Initial autogenerated FastAPI implementation
Aug 28, 2024
d44abf2
feat: Initial autogenerated FastAPI implementation
Aug 29, 2024
fcb04ac
feat: Initial autogenerated FastAPI implementation
Aug 29, 2024
9e9e8c0
feat: Initial autogenerated FastAPI implementation
Aug 29, 2024
0dd8b2b
feat: Initial autogenerated FastAPI implementation
Aug 29, 2024
f5329de
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
e0ca255
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
97c0737
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
f3a8011
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
c1825d4
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
c2d3025
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
cbaeba5
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
e73ecf0
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
30efac8
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
cbf62b1
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
7c860ad
feat: Initial autogenerated FastAPI implementation
Sep 3, 2024
1085142
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
dcdaa42
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
be92122
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
3bf6c8a
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
f7559d6
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
2e69b45
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
d9ac14a
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
d8763b7
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
91f2421
feat: Initial autogenerated FastAPI implementation
Sep 4, 2024
de0a47c
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
99d2107
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
33c980f
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
afad60f
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
93c2cbe
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
373ab65
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
22d6cfc
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
c67a072
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
1fb37be
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
5236941
feat: Initial autogenerated FastAPI implementation
Sep 5, 2024
e4987dc
feat: Initial autogenerated FastAPI implementation
Sep 9, 2024
4f7d550
feat: Initial autogenerated FastAPI implementation
Sep 10, 2024
a34818d
Updated ogcapi-processes submodule to point to new repository
Sep 17, 2024
72869f8
Updated ogcapi-processes submodule to point to new repository
Sep 17, 2024
e40fa8d
chore: Fix static analysis issues
Sep 17, 2024
d44b976
chore: update unit tests
Sep 17, 2024
3f993bb
Merge branch 'develop' into 129-arbitrary-parameters
Sep 17, 2024
b98fc9f
chore: update unit tests
Sep 17, 2024
98230c4
chore: Fix static analysis issues
Sep 17, 2024
a06b518
chore: Fix static analysis issues
Sep 17, 2024
a1d8b70
Merge pull request #15 from unity-sds/129-arbitrary-parameters
drewm-swe Sep 19, 2024
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
8 changes: 5 additions & 3 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Unit Tests

on: [pull_request]
on:
pull_request:
workflow_dispatch:

jobs:
unit-tests:
Expand All @@ -16,8 +18,8 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[test]"
pip install -e "app/.[test]"

- name: Run unit tests
run: |
pytest -vv
pytest -vv app/tests
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "ogcapi-processes"]
path = ogcapi-processes
url = https://github.com/opengeospatial/ogcapi-processes
url = https://github.com/drewm-jpl/ogcapi-processes
5 changes: 3 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ RUN apt-get update && apt-get install -y git gcc libpq-dev
# Copy the current directory contents into the container at /app
COPY ./app /app

WORKDIR /app

# Install any needed packages specified in requirements.txt
COPY pyproject.toml .
RUN pip install .

# Make port 80 available to the world outside this container
EXPOSE 80

# Run app.py when the container launches
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
CMD ["uvicorn", "unity_sps_ogc_processes_api.main:app", "--host", "0.0.0.0", "--port", "80"]
3 changes: 3 additions & 0 deletions app/.flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[flake8]
max-line-length = 88
exclude = .git,__pycache__,__init__.py,.mypy_cache,.pytest_cache,.venv
138 changes: 138 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/
23 changes: 23 additions & 0 deletions app/.openapi-generator-ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator

# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.

# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs

# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux

# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux

# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md
130 changes: 130 additions & 0 deletions app/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
.flake8
.gitignore
.openapi-generator-ignore
Dockerfile
README.md
docker-compose.yaml
openapi.yaml
pyproject.toml
requirements.txt
setup.cfg
src/openapi_server/impl/__init__.py
src/unity_sps_ogc_processes_api/apis/__init__.py
src/unity_sps_ogc_processes_api/apis/api_api.py
src/unity_sps_ogc_processes_api/apis/api_api_base.py
src/unity_sps_ogc_processes_api/apis/conformance_api.py
src/unity_sps_ogc_processes_api/apis/conformance_api_base.py
src/unity_sps_ogc_processes_api/apis/dru_api.py
src/unity_sps_ogc_processes_api/apis/dru_api_base.py
src/unity_sps_ogc_processes_api/apis/jobs_api.py
src/unity_sps_ogc_processes_api/apis/jobs_api_base.py
src/unity_sps_ogc_processes_api/apis/landing_page_api.py
src/unity_sps_ogc_processes_api/apis/landing_page_api_base.py
src/unity_sps_ogc_processes_api/apis/processes_api.py
src/unity_sps_ogc_processes_api/apis/processes_api_base.py
src/unity_sps_ogc_processes_api/main.py
src/unity_sps_ogc_processes_api/models/__init__.py
src/unity_sps_ogc_processes_api/models/bbox.py
src/unity_sps_ogc_processes_api/models/bbox1.py
src/unity_sps_ogc_processes_api/models/bbox_def_crs.py
src/unity_sps_ogc_processes_api/models/bbox_processes.py
src/unity_sps_ogc_processes_api/models/collection_info.py
src/unity_sps_ogc_processes_api/models/collection_info_data_type.py
src/unity_sps_ogc_processes_api/models/collections.py
src/unity_sps_ogc_processes_api/models/conf_classes.py
src/unity_sps_ogc_processes_api/models/crs.py
src/unity_sps_ogc_processes_api/models/crs_one_of.py
src/unity_sps_ogc_processes_api/models/crs_one_of_one_of.py
src/unity_sps_ogc_processes_api/models/crs_one_of_one_of1.py
src/unity_sps_ogc_processes_api/models/crs_one_of_one_of2.py
src/unity_sps_ogc_processes_api/models/data_type.py
src/unity_sps_ogc_processes_api/models/description_type.py
src/unity_sps_ogc_processes_api/models/enumeration.py
src/unity_sps_ogc_processes_api/models/exception.py
src/unity_sps_ogc_processes_api/models/execute.py
src/unity_sps_ogc_processes_api/models/execute200_response.py
src/unity_sps_ogc_processes_api/models/execute200_response1.py
src/unity_sps_ogc_processes_api/models/execute_workflows.py
src/unity_sps_ogc_processes_api/models/execute_workflows1.py
src/unity_sps_ogc_processes_api/models/execution_unit.py
src/unity_sps_ogc_processes_api/models/execution_unit_config.py
src/unity_sps_ogc_processes_api/models/extent.py
src/unity_sps_ogc_processes_api/models/extent_spatial.py
src/unity_sps_ogc_processes_api/models/extent_spatial_grid_inner.py
src/unity_sps_ogc_processes_api/models/extent_spatial_grid_inner_coordinates_inner.py
src/unity_sps_ogc_processes_api/models/extent_spatial_grid_inner_resolution.py
src/unity_sps_ogc_processes_api/models/extent_temporal.py
src/unity_sps_ogc_processes_api/models/extent_temporal_grid.py
src/unity_sps_ogc_processes_api/models/extent_temporal_grid_resolution.py
src/unity_sps_ogc_processes_api/models/extent_uad.py
src/unity_sps_ogc_processes_api/models/extra_models.py
src/unity_sps_ogc_processes_api/models/feature_collection.py
src/unity_sps_ogc_processes_api/models/fields_modifiers.py
src/unity_sps_ogc_processes_api/models/fields_modifiers_properties.py
src/unity_sps_ogc_processes_api/models/format.py
src/unity_sps_ogc_processes_api/models/format_schema.py
src/unity_sps_ogc_processes_api/models/geo_json_feature.py
src/unity_sps_ogc_processes_api/models/geo_json_feature_geometry.py
src/unity_sps_ogc_processes_api/models/geo_json_feature_id.py
src/unity_sps_ogc_processes_api/models/geo_json_line_string.py
src/unity_sps_ogc_processes_api/models/geo_json_multi_line_string.py
src/unity_sps_ogc_processes_api/models/geo_json_multi_point.py
src/unity_sps_ogc_processes_api/models/geo_json_multi_polygon.py
src/unity_sps_ogc_processes_api/models/geo_json_point.py
src/unity_sps_ogc_processes_api/models/geo_json_polygon.py
src/unity_sps_ogc_processes_api/models/inline_or_ref_data.py
src/unity_sps_ogc_processes_api/models/inline_or_ref_data1.py
src/unity_sps_ogc_processes_api/models/inline_or_ref_data_workflows.py
src/unity_sps_ogc_processes_api/models/input.py
src/unity_sps_ogc_processes_api/models/input_collection.py
src/unity_sps_ogc_processes_api/models/input_description.py
src/unity_sps_ogc_processes_api/models/input_description_all_of_max_occurs.py
src/unity_sps_ogc_processes_api/models/input_parameterized.py
src/unity_sps_ogc_processes_api/models/input_process.py
src/unity_sps_ogc_processes_api/models/input_value.py
src/unity_sps_ogc_processes_api/models/input_value1.py
src/unity_sps_ogc_processes_api/models/input_value_no_object.py
src/unity_sps_ogc_processes_api/models/input_value_no_object1.py
src/unity_sps_ogc_processes_api/models/input_value_no_object_workflows.py
src/unity_sps_ogc_processes_api/models/input_value_workflows.py
src/unity_sps_ogc_processes_api/models/input_workflows.py
src/unity_sps_ogc_processes_api/models/input_workflows1.py
src/unity_sps_ogc_processes_api/models/job_control_options.py
src/unity_sps_ogc_processes_api/models/job_list.py
src/unity_sps_ogc_processes_api/models/landing_page.py
src/unity_sps_ogc_processes_api/models/link.py
src/unity_sps_ogc_processes_api/models/metadata.py
src/unity_sps_ogc_processes_api/models/metadata_one_of.py
src/unity_sps_ogc_processes_api/models/metadata_one_of1.py
src/unity_sps_ogc_processes_api/models/metadata_one_of1_value.py
src/unity_sps_ogc_processes_api/models/model_schema.py
src/unity_sps_ogc_processes_api/models/ogcapppkg.py
src/unity_sps_ogc_processes_api/models/ogcapppkg_array_inner.py
src/unity_sps_ogc_processes_api/models/ogcapppkg_execution_unit.py
src/unity_sps_ogc_processes_api/models/output.py
src/unity_sps_ogc_processes_api/models/output_description.py
src/unity_sps_ogc_processes_api/models/output_workflows.py
src/unity_sps_ogc_processes_api/models/output_workflows1.py
src/unity_sps_ogc_processes_api/models/process.py
src/unity_sps_ogc_processes_api/models/process_list.py
src/unity_sps_ogc_processes_api/models/process_summary.py
src/unity_sps_ogc_processes_api/models/processes_list.py
src/unity_sps_ogc_processes_api/models/qualified_input_value.py
src/unity_sps_ogc_processes_api/models/qualified_input_value1.py
src/unity_sps_ogc_processes_api/models/qualified_input_value_workflows.py
src/unity_sps_ogc_processes_api/models/reference.py
src/unity_sps_ogc_processes_api/models/schema1.py
src/unity_sps_ogc_processes_api/models/schema_one_of.py
src/unity_sps_ogc_processes_api/models/schema_one_of_additional_properties.py
src/unity_sps_ogc_processes_api/models/static_indicator.py
src/unity_sps_ogc_processes_api/models/status_code.py
src/unity_sps_ogc_processes_api/models/status_info.py
src/unity_sps_ogc_processes_api/models/subscriber.py
src/unity_sps_ogc_processes_api/security_api.py
tests/conftest.py
tests/test_api_api.py
tests/test_conformance_api.py
tests/test_dru_api.py
tests/test_jobs_api.py
tests/test_landing_page_api.py
tests/test_processes_api.py
1 change: 1 addition & 0 deletions app/.openapi-generator/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.7.0
30 changes: 30 additions & 0 deletions app/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM python:3.7 AS builder

WORKDIR /usr/src/app

RUN python3 -m venv /venv
ENV PATH="/venv/bin:$PATH"

RUN pip install --upgrade pip

COPY . .
RUN pip install --no-cache-dir .


FROM python:3.7 AS test_runner
WORKDIR /tmp
COPY --from=builder /venv /venv
COPY --from=builder /usr/src/app/tests tests
ENV PATH=/venv/bin:$PATH

# install test dependencies
RUN pip install pytest

# run tests
RUN pytest tests


FROM python:3.7 AS service
WORKDIR /root/app/site-packages
COPY --from=test_runner /venv /venv
ENV PATH=/venv/bin:$PATH
Loading