Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
64 changes: 0 additions & 64 deletions .basedpyright/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -11753,14 +11753,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/data_exchange_validation/get_op_data_validation.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 23,
"endColumn": 35,
"lineCount": 1
}
},
{
"code": "reportOptionalMemberAccess",
"range": {
Expand Down Expand Up @@ -13429,14 +13421,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/dss/op_intent_ref_access_control.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 24,
"endColumn": 36,
"lineCount": 1
}
},
{
"code": "reportArgumentType",
"range": {
Expand Down Expand Up @@ -13835,14 +13819,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/dss/op_intent_ref_state_transitions.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 24,
"endColumn": 36,
"lineCount": 1
}
},
{
"code": "reportArgumentType",
"range": {
Expand Down Expand Up @@ -15849,14 +15825,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/flight_intent_validation/flight_intent_validation.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 23,
"endColumn": 35,
"lineCount": 1
}
},
{
"code": "reportOptionalMemberAccess",
"range": {
Expand Down Expand Up @@ -16205,14 +16173,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 23,
"endColumn": 35,
"lineCount": 1
}
},
{
"code": "reportAttributeAccessIssue",
"range": {
Expand Down Expand Up @@ -16247,14 +16207,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss_equal_priority_not_permitted.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 33,
"endColumn": 46,
"lineCount": 1
}
},
{
"code": "reportReturnType",
"range": {
Expand All @@ -16265,14 +16217,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/prep_planners.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 23,
"endColumn": 35,
"lineCount": 1
}
},
{
"code": "reportArgumentType",
"range": {
Expand Down Expand Up @@ -16301,14 +16245,6 @@
}
],
"./monitoring/uss_qualifier/scenarios/astm/utm/subscription_notifications/receive_notifications_for_awareness/receive_notifications_for_awareness.py": [
{
"code": "reportAttributeAccessIssue",
"range": {
"startColumn": 23,
"endColumn": 35,
"lineCount": 1
}
},
{
"code": "reportOptionalMemberAccess",
"range": {
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ jobs:
fetch-tags: true
fetch-depth: 0
filter: tree:0
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: '3.14'
- name: Build monitoring images
run: |
make image
Expand Down Expand Up @@ -123,11 +127,11 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: '3.13'
python-version: '3.14'
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: '0.12.21'
version: '0.13.5'
enable-cache: true
- name: Run minimal benchmarker configuration
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion monitoring/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

ARG BASE_STAGE=base-system

FROM ghcr.io/astral-sh/uv:0.13.1-python3.13-trixie-slim AS base-system
FROM ghcr.io/astral-sh/uv:0.13.5-python3.14-trixie-slim AS base-system
# Not -alpine because: https://stackoverflow.com/a/58028091/651139

# Install system tools
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def _extract_numbers(val) -> list[float]:
return res
try:
return [float(val)]
except (ValueError, TypeError):
except ValueError, TypeError:
return []


Expand Down
2 changes: 1 addition & 1 deletion monitoring/benchmarker/reports/analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ def from_data(
x_data: Sequence[float],
y_data: Sequence[float],
discard_probability: float | None = 0.05,
) -> "USLFit":
) -> USLFit:
x_arr = np.array(x_data, dtype=float)
y_arr = np.array(y_data, dtype=float)
if len(x_arr) != len(y_arr):
Expand Down
2 changes: 1 addition & 1 deletion monitoring/mock_uss/ridsp/user_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def record_notification(
UserNotification(observed_at=observed_at_time, message=message)
)

def create_notifications_if_needed(self, record: "database.TestRecord"):
def create_notifications_if_needed(self, record: database.TestRecord):
for notif in check_and_generate_slow_update_notification(record.flights):
self.record_notification("Insufficient update rate", notif)

Expand Down
2 changes: 1 addition & 1 deletion monitoring/mock_uss/tracer/routes/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def tracer_observation_area_ui(observation_area_id: str):
try:
bbox = geo.make_latlng_rect(v)
bbox_str = f"{bbox.lo().lat().degrees:6f},{bbox.lo().lng().degrees:6f},{bbox.hi().lat().degrees:6f},{bbox.hi().lng().degrees:6f}"
except (ValueError, KeyError):
except ValueError, KeyError:
bbox_str = "[unavailable]"
if v.altitude_lower:
alt_lo = f"{v.altitude_lower.value} {v.altitude_lower.units} {v.altitude_lower.reference}"
Expand Down
1 change: 1 addition & 0 deletions monitoring/prober/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ def scd_session(pytestconfig) -> UTMClientSession:

@pytest.fixture(scope="session")
def scd_session_async(pytestconfig):
asyncio.set_event_loop(asyncio.new_event_loop())
session = make_session_async(pytestconfig, "/dss/v1", "scd_auth1")
yield session
session.close()
Expand Down
7 changes: 5 additions & 2 deletions monitoring/uss_qualifier/reports/artifacts.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import json
import os
import time
from multiprocessing import Process
from multiprocessing import get_context

from implicitdict import ImplicitDict
from loguru import logger
Expand Down Expand Up @@ -169,7 +169,10 @@ def make_ai_helpers() -> None:
make_timing_report,
make_ai_helpers,
]
generators = [Process(target=g, daemon=True) for g in artifact_generators]
generators = [
get_context("fork").Process(target=g, daemon=True)
for g in artifact_generators # Note: fork is used, since make_* are not pickable
]
for p in generators:
p.start()
for p in generators:
Expand Down
2 changes: 1 addition & 1 deletion monitoring/uss_qualifier/resources/dev/test_modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def get_extents(self) -> LatLngBoundingBox:
west_meters=self.SQUARE_SIDE_M / 2,
)

def move(self, meters_east: float, meters_north: float) -> "TestSquareResource":
def move(self, meters_east: float, meters_north: float) -> TestSquareResource:
shifted = self.get_extents().expand(
north_meters=meters_north,
east_meters=meters_east,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def get_extents(self) -> LatLngBoundingBox:
rect = rect.union(v4d.rect_bounds)
return LatLngBoundingBox.from_latlng_rect(rect)

def move(self, meters_east: float, meters_north: float) -> "FlightIntentsResource":
def move(self, meters_east: float, meters_north: float) -> FlightIntentsResource:

# Create a new copy
new_spec = ImplicitDict.parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def instance_index(self) -> int:

def with_instance_index(
self, instance_index: int, resource_origin: str | None = None
) -> "IDGeneratorResource":
) -> IDGeneratorResource:
"""Derive an independent generator, replacing rather than adding an index."""
return IDGeneratorResource(
specification=IDGeneratorSpecification(instance_index=instance_index),
Expand Down
2 changes: 1 addition & 1 deletion monitoring/uss_qualifier/resources/planning_area.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def get_extents(self) -> LatLngBoundingBox:
self.resolved_volume4d_with_times(None, None).rect_bounds
)

def move(self, meters_east: float, meters_north: float) -> "PlanningAreaResource":
def move(self, meters_east: float, meters_north: float) -> PlanningAreaResource:
volume_spec = deepcopy(self._volume.specification)
volume_spec.template.transformations = (
volume_spec.template.transformations or []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ def _evaluate_consistency(
):
try:
resp = ImplicitDict.parse(q.response.json, GetVersionResponse)
except (ValueError, KeyError):
except ValueError, KeyError:
# Something was wrong with the response payload; ignore this query
continue
with self.check(
Expand Down
2 changes: 1 addition & 1 deletion monitoring/uss_qualifier/scenarios/interuss/unit_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


class UnitTestScenario(GenericTestScenario):
def __init__(self, step_under_test: Callable[["UnitTestScenario"], None]):
def __init__(self, step_under_test: Callable[[UnitTestScenario], None]):
self._allow_undocumented_checks = True
self.step_under_test = step_under_test
self.declaration = TestScenarioDeclaration(
Expand Down
2 changes: 1 addition & 1 deletion monitoring/uss_qualifier/scenarios/scenario.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ def __init__(self):
def make_test_scenario(
declaration: TestScenarioDeclaration,
resource_pool: dict[ResourceID, ResourceType],
) -> "TestScenario":
) -> TestScenario:
scenario_type = get_scenario_type_by_name(declaration.scenario_type)

constructor_signature = inspect.signature(scenario_type.__init__)
Expand Down
4 changes: 2 additions & 2 deletions monitoring/uss_qualifier/suites/suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,12 +174,12 @@ def _run_test_scenario(self, context: ExecutionContext) -> TestScenarioReport:
with scenario.async_runtime():
try:
scenario.run(context)
except (ScenarioCannotContinueError, TestRunCannotContinueError):
except ScenarioCannotContinueError, TestRunCannotContinueError:
pass
scenario.go_to_cleanup()
try:
scenario.cleanup()
except (ScenarioCannotContinueError, TestRunCannotContinueError):
except ScenarioCannotContinueError, TestRunCannotContinueError:
scenario.ensure_cleanup_ended()
except KeyboardInterrupt:
raise
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ authors = [
]
description = "Monitoring framework to test UAS Service Suppliers"
readme = "README.md"
requires-python = ">=3.13"
requires-python = ">=3.14"
dependencies = [
"aiohttp>=3.14.3",
"arrow>=1.4.0",
Expand Down Expand Up @@ -66,7 +66,7 @@ exclude-newer = "P7D"
exclude-newer-package = { uas-standards = false }

[tool.ruff]
target-version = "py313"
target-version = "py314"
extend-exclude = [
"interfaces/*",
"monitoring/prober/output/*",
Expand Down
2 changes: 1 addition & 1 deletion scripts/git/get_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ def get_pep440_version(
try:
info = get_git_info(component)
return derive_pep440_version(info)
except (subprocess.SubprocessError, FileNotFoundError, OSError):
except subprocess.SubprocessError, FileNotFoundError, OSError:
pass

if os.path.exists(VERSION_FILE_PATH):
Expand Down
2 changes: 1 addition & 1 deletion test/repo_hygiene/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# `docker build` should be run from this folder

FROM ghcr.io/astral-sh/uv:python3.13-alpine
FROM ghcr.io/astral-sh/uv:python3.14-alpine

ADD . /app
WORKDIR /app
Expand Down
2 changes: 1 addition & 1 deletion test/repo_hygiene/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "repo_hygiene"
version = "0.1.0"
readme = "README.md"
requires-python = "==3.13.*"
requires-python = "==3.14.*"
dependencies = [
"marko",
]
Expand Down
4 changes: 2 additions & 2 deletions test/repo_hygiene/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading