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
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9, '3.10', 3.11, 3.12]
python-version: [3.9, '3.10', 3.11, 3.12, 3.13]

services:

Expand Down
10 changes: 0 additions & 10 deletions snowexsql/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,16 +420,6 @@ def _filter_campaign(cls, qry, value):
Campaign.name == value
)

@classmethod
def _filter_measurement_type(cls, qry, value):
return qry.join(
cls.MODEL.observation
).join(
PointObservation.measurement_type
).filter(
MeasurementType.name == value
)

@classmethod
def _filter_instrument(cls, qry, value):
return qry.join(
Expand Down
3 changes: 1 addition & 2 deletions snowexsql/tables/campaign_observation.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
from .campaign import InCampaign
from .doi import HasDOI
from .instrument import HasInstrument
from .measurement_type import HasMeasurementType
from .observers import HasObserver


class CampaignObservation(
Base, HasDOI, HasInstrument, HasMeasurementType, HasObserver, InCampaign
Base, HasDOI, HasInstrument, HasObserver, InCampaign
):
"""
A campaign observation holds additional information for a point or image.
Expand Down
3 changes: 2 additions & 1 deletion snowexsql/tables/image_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@

from .base import Base
from .image_observation import HasImageObservation
from .measurement_type import HasMeasurementType


class ImageData(Base, HasImageObservation):
class ImageData(Base, HasImageObservation, HasMeasurementType):
"""
Class representing the images table. This table holds all images/rasters
"""
Expand Down
5 changes: 4 additions & 1 deletion snowexsql/tables/point_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
from sqlalchemy.ext.hybrid import hybrid_property

from .base import Base
from .measurement_type import HasMeasurementType
from .point_observation import HasPointObservation
from .single_location import SingleLocationData


class PointData(Base, SingleLocationData, HasPointObservation):
class PointData(
Base, SingleLocationData, HasPointObservation, HasMeasurementType
):
"""
Class representing the points table. This table holds all point data.
Here a single data entry is a single coordinate pair with a single value
Expand Down
4 changes: 2 additions & 2 deletions tests/api/test_point_measurements.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def setup_method(self, point_data):
def test_all_types(self):
result = self.subject.all_types
assert result == [
record.observation.measurement_type.name
record.measurement_type.name
for record in self.db_data
]

Expand Down Expand Up @@ -124,7 +124,7 @@ def test_unknown_instrument(self):
def test_date_and_measurement_type(self):
result = self.subject.from_filter(
date=self.db_data.datetime.date(),
type=self.db_data.observation.measurement_type.name,
type=self.db_data.measurement_type.name,
)
assert len(result) == 1
assert result.loc[0].value == self.db_data.value
Expand Down
2 changes: 2 additions & 0 deletions tests/factories/point_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from snowexsql.tables import PointData
from .base_factory import BaseFactory
from .measurement_type import MeasurementTypeFactory
from .point_observation import PointObservationFactory


Expand All @@ -21,3 +22,4 @@ class Meta:
elevation = 3148.2

observation = factory.SubFactory(PointObservationFactory)
measurement_type = factory.SubFactory(MeasurementTypeFactory)
2 changes: 0 additions & 2 deletions tests/factories/point_observation.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from .campaign import CampaignFactory
from .doi import DOIFactory
from .instrument import InstrumentFactory
from .measurement_type import MeasurementTypeFactory
from .observer import ObserverFactory


Expand All @@ -22,5 +21,4 @@ class Meta:
campaign = factory.SubFactory(CampaignFactory)
doi = factory.SubFactory(DOIFactory)
instrument = factory.SubFactory(InstrumentFactory)
measurement_type = factory.SubFactory(MeasurementTypeFactory)
observer = factory.SubFactory(ObserverFactory)
7 changes: 6 additions & 1 deletion tests/tables/test_point_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import pytest
from geoalchemy2 import WKBElement

from snowexsql.tables import PointData
from snowexsql.tables import PointData, MeasurementType


@pytest.fixture
Expand Down Expand Up @@ -48,3 +48,8 @@ def test_elevation_attribute(self):

def test_geom_attribute(self):
assert isinstance(self.subject.geom, WKBElement)

def test_has_measurement_type(self):
assert self.subject.measurement_type is not None
assert isinstance(self.subject.measurement_type, MeasurementType)

6 changes: 1 addition & 5 deletions tests/tables/test_point_observation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import pytest

from snowexsql.tables import (
Campaign, DOI, Instrument, MeasurementType, Observer, PointObservation
Campaign, DOI, Instrument, Observer, PointObservation
)


Expand Down Expand Up @@ -41,10 +41,6 @@ def test_has_doi(self):
assert self.subject.doi is not None
assert isinstance(self.subject.doi, DOI)

def test_has_measurement_type(self):
assert self.subject.measurement_type is not None
assert isinstance(self.subject.measurement_type, MeasurementType)

def test_has_instrument(self):
assert self.subject.instrument is not None
assert isinstance(self.subject.instrument, Instrument)
Expand Down