Skip to content

Commit

Permalink
Merge branch 'main' into fix-ensemble-selector-bug
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenthoms authored Nov 16, 2023
2 parents 000bb14 + 7da32a3 commit c30a5fd
Show file tree
Hide file tree
Showing 52 changed files with 6,706 additions and 8,465 deletions.
239 changes: 128 additions & 111 deletions .github/workflows/webviz.yml
Original file line number Diff line number Diff line change
@@ -1,116 +1,133 @@
name: webviz

on:
push:
pull_request:
branches:
- main
release:
types:
- published
push:
pull_request:
branches:
- main
release:
types:
- published

jobs:
frontend:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: ℹ️ Node and npm versions
run: |
node -v
npm -v
- name: 📦 Install build dependencies
working-directory: ./frontend
run: |
npm ci --include=dev
- name: ℹ️ Installed npm packages (depth = 0)
working-directory: ./frontend
run: npm list --depth=0

- name: 🏗️ Build JavaScript bundle
working-directory: ./frontend
run: npm run build

- name: 🕵️ Check code style, linting & dependencies
working-directory: ./frontend
run: |
npm run validate
- name: 🤖 Run tests
working-directory: ./frontend
run: |
npm run test
- name: 🕵️ Check auto-generated frontend code is in sync with backend
run: |
docker build -f backend.Dockerfile -t backend:latest .
CONTAINER_ID=$(docker run --detach -p 5000:5000 --env UVICORN_PORT=5000 --env UVICORN_ENTRYPOINT=src.backend.primary.main:app --env WEBVIZ_CLIENT_SECRET=0 --env WEBVIZ_SMDA_SUBSCRIPTION_KEY=0 --env WEBVIZ_SMDA_RESOURCE_SCOPE=0 backend:latest)
sleep 5 # Ensure the backend server is up and running exposing /openapi.json
npm run generate-api --prefix ./frontend
docker stop $CONTAINER_ID
git diff --exit-code ./frontend/src/api || exit 1
backend:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- name: 🐍 Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
cache: pip

- name: 📦 Install poetry and dependencies
working-directory: ./backend
run: |
pip install --upgrade pip
pip install poetry
poetry config virtualenvs.create false
poetry lock --check --no-update # Check lock file is consistent with pyproject.toml
poetry install --with dev
- name: 🕵️ Check code style & linting
working-directory: ./backend
run: |
black --check src/ tests/
pylint src/ tests/
bandit --recursive src/
mypy src/ tests/
- name: 🤖 Run tests
working-directory: ./backend
env:
WEBVIZ_CLIENT_SECRET: 0
WEBVIZ_SMDA_SUBSCRIPTION_KEY: 0
WEBVIZ_SMDA_RESOURCE_SCOPE: 0
run: |
pytest ./tests/unit
build_docker_images:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18

- name: 🐳 Verify Docker images build
run: |
docker build -f frontend-prod.Dockerfile .
docker build -f backend.Dockerfile .
frontend:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: ℹ️ Node and npm versions
run: |
node -v
npm -v
- name: 📦 Install build dependencies
working-directory: ./frontend
run: |
npm ci --include=dev
- name: ℹ️ Installed npm packages (depth = 0)
working-directory: ./frontend
run: npm list --depth=0

- name: 🏗️ Build JavaScript bundle
working-directory: ./frontend
run: npm run build

- name: 🕵️ Check code style, linting & dependencies
working-directory: ./frontend
run: |
npm run validate
- name: Install Playwright Browsers
working-directory: ./frontend
run: |
npx playwright install --with-deps
- name: 🤖 Run unit tests
working-directory: ./frontend
run: |
npm run test:unit
- name: 🤖 Run component tests
working-directory: ./frontend
run: |
npm run test:ct
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30

- name: 🕵️ Check auto-generated frontend code is in sync with backend
run: |
docker build -f backend.Dockerfile -t backend:latest .
CONTAINER_ID=$(docker run --detach -p 5000:5000 --env UVICORN_PORT=5000 --env UVICORN_ENTRYPOINT=src.backend.primary.main:app --env WEBVIZ_CLIENT_SECRET=0 --env WEBVIZ_SMDA_SUBSCRIPTION_KEY=0 --env WEBVIZ_SMDA_RESOURCE_SCOPE=0 backend:latest)
sleep 5 # Ensure the backend server is up and running exposing /openapi.json
npm run generate-api --prefix ./frontend
docker stop $CONTAINER_ID
git diff --exit-code ./frontend/src/api || exit 1
backend:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- name: 🐍 Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
cache: pip

- name: 📦 Install poetry and dependencies
working-directory: ./backend
run: |
pip install --upgrade pip
pip install poetry
poetry config virtualenvs.create false
poetry lock --check --no-update # Check lock file is consistent with pyproject.toml
poetry install --with dev
- name: 🕵️ Check code style & linting
working-directory: ./backend
run: |
black --check src/ tests/
pylint src/ tests/
bandit --recursive src/
mypy src/ tests/
- name: 🤖 Run tests
working-directory: ./backend
env:
WEBVIZ_CLIENT_SECRET: 0
WEBVIZ_SMDA_SUBSCRIPTION_KEY: 0
WEBVIZ_SMDA_RESOURCE_SCOPE: 0
run: |
pytest ./tests/unit
build_docker_images:
runs-on: ubuntu-latest

steps:
- name: 📖 Checkout commit locally
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18

- name: 🐳 Verify Docker images build
run: |
docker build -f frontend-prod.Dockerfile .
docker build -f backend.Dockerfile .
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ dist
!.vscode/tasks.json
!.vscode/launch.json

# playwright results
playwright-report/
/test-results/
/playwright/.cache/

# Ignore Jupyter Notebook files
*.ipynb

Expand Down
4 changes: 2 additions & 2 deletions backend/src/backend/primary/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from .routers.well_completions.router import router as well_completions_router
from .routers.well.router import router as well_router
from .routers.seismic.router import router as seismic_router
from .routers.surface_polygons.router import router as surface_polygons_router
from .routers.polygons.router import router as polygons_router
from .routers.graph.router import router as graph_router
from .routers.observations.router import router as observations_router
from .routers.rft.router import router as rft_router
Expand Down Expand Up @@ -62,7 +62,7 @@ def custom_generate_unique_id(route: APIRoute) -> str:
app.include_router(well_completions_router, prefix="/well_completions", tags=["well_completions"])
app.include_router(well_router, prefix="/well", tags=["well"])
app.include_router(seismic_router, prefix="/seismic", tags=["seismic"])
app.include_router(surface_polygons_router, prefix="/surface_polygons", tags=["surface_polygons"])
app.include_router(polygons_router, prefix="/polygons", tags=["polygons"])
app.include_router(graph_router, prefix="/graph", tags=["graph"])
app.include_router(observations_router, prefix="/observations", tags=["observations"])
app.include_router(rft_router, prefix="/rft", tags=["rft"])
Expand Down
76 changes: 76 additions & 0 deletions backend/src/backend/primary/routers/polygons/converters.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
from typing import List
import xtgeo

from src.services.smda_access.types import StratigraphicSurface
from src.services.sumo_access.polygons_types import PolygonsMeta as SumoPolygonsMeta

from . import schemas


def to_api_polygons_data(xtgeo_poly: xtgeo.Polygons) -> List[schemas.PolygonData]:
"""
Create API PolygonsData from xtgeo polygons
"""
polydata: List[schemas.PolygonData] = []
for poly_id, polygon in xtgeo_poly.dataframe.groupby("POLY_ID"):
polydata.append(
schemas.PolygonData(
x_arr=list(polygon.X_UTME),
y_arr=list(polygon.Y_UTMN),
z_arr=list(polygon.Z_TVDSS),
poly_id=poly_id,
)
)
return polydata


def to_api_polygons_directory(
sumo_polygons_dir: List[SumoPolygonsMeta], stratigraphical_names: List[StratigraphicSurface]
) -> List[schemas.PolygonsMeta]:
"""
Convert Sumo polygons directory to API surface directory
"""

polygons_metas = _sort_by_stratigraphical_order(sumo_polygons_dir, stratigraphical_names)
return polygons_metas


def _sort_by_stratigraphical_order(
sumo_polygons_metas: List[SumoPolygonsMeta], stratigraphic_surfaces: List[StratigraphicSurface]
) -> List[schemas.PolygonsMeta]:
"""Sort the Sumo polygons meta list by the order they appear in the stratigraphic column.
Non-stratigraphical polygons are appended at the end of the list."""

polygons_metas_with_official_strat_name = []
polygons_metas_with_custom_names = []

for strat_surface in stratigraphic_surfaces:
for sumo_polygons_meta in sumo_polygons_metas:
if sumo_polygons_meta.name == strat_surface.name:
polygons_meta = schemas.PolygonsMeta(
name=sumo_polygons_meta.name,
name_is_stratigraphic_offical=True,
relative_stratigraphic_level=strat_surface.relative_strat_unit_level,
parent_stratigraphic_identifier=strat_surface.strat_unit_parent,
stratigraphic_identifier=strat_surface.strat_unit_identifier,
attribute_name=sumo_polygons_meta.tagname,
attribute_type=schemas.PolygonsAttributeType(sumo_polygons_meta.content.value),
)
polygons_metas_with_official_strat_name.append(polygons_meta)

# Append non-official strat names
for sumo_polygons_meta in sumo_polygons_metas:
if sumo_polygons_meta.name not in [s.name for s in polygons_metas_with_official_strat_name]:
polygons_meta = schemas.PolygonsMeta(
name=sumo_polygons_meta.name,
name_is_stratigraphic_offical=False,
relative_stratigraphic_level=None,
parent_stratigraphic_identifier=None,
stratigraphic_identifier=None,
attribute_name=sumo_polygons_meta.tagname,
attribute_type=schemas.PolygonsAttributeType(sumo_polygons_meta.content.value),
)

polygons_metas_with_custom_names.append(polygons_meta)

return polygons_metas_with_official_strat_name + polygons_metas_with_custom_names
Loading

0 comments on commit c30a5fd

Please sign in to comment.