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
10 changes: 10 additions & 0 deletions fastfuels_sdk/client_library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
"Export",
"ExportStatus",
"FBFM40",
"FeatureDataResponse",
"FeatureGrid",
"FeatureGridAttribute",
"FeatureType",
Expand All @@ -83,6 +84,7 @@
"GeoJsonCRSProperties",
"Geojson",
"Geometry",
"Geometry1",
"GridAttributeMetadataResponse",
"Grids",
"HTTPValidationError",
Expand All @@ -105,6 +107,8 @@
"RoadFeature",
"RoadFeatureSource",
"Scope",
"SpatialOperator",
"SpatialTarget",
"SurfaceGrid",
"SurfaceGridAttribute",
"SurfaceGridFBFMSource",
Expand All @@ -128,6 +132,7 @@
"SurfaceGridModificationFuelLoadCondition",
"SurfaceGridModificationFuelMoistureAction",
"SurfaceGridModificationFuelMoistureCondition",
"SurfaceGridModificationSpatialCondition",
"SurfaceGridSAVRSource",
"SurfaceGridUniformFBFM40Value",
"SurfaceGridUniformValue",
Expand Down Expand Up @@ -235,6 +240,7 @@
from fastfuels_sdk.client_library.models.export import Export as Export
from fastfuels_sdk.client_library.models.export_status import ExportStatus as ExportStatus
from fastfuels_sdk.client_library.models.fbfm40 import FBFM40 as FBFM40
from fastfuels_sdk.client_library.models.feature_data_response import FeatureDataResponse as FeatureDataResponse
from fastfuels_sdk.client_library.models.feature_grid import FeatureGrid as FeatureGrid
from fastfuels_sdk.client_library.models.feature_grid_attribute import FeatureGridAttribute as FeatureGridAttribute
from fastfuels_sdk.client_library.models.feature_type import FeatureType as FeatureType
Expand All @@ -248,6 +254,7 @@
from fastfuels_sdk.client_library.models.geo_json_crs_properties import GeoJsonCRSProperties as GeoJsonCRSProperties
from fastfuels_sdk.client_library.models.geojson import Geojson as Geojson
from fastfuels_sdk.client_library.models.geometry import Geometry as Geometry
from fastfuels_sdk.client_library.models.geometry1 import Geometry1 as Geometry1
from fastfuels_sdk.client_library.models.grid_attribute_metadata_response import GridAttributeMetadataResponse as GridAttributeMetadataResponse
from fastfuels_sdk.client_library.models.grids import Grids as Grids
from fastfuels_sdk.client_library.models.http_validation_error import HTTPValidationError as HTTPValidationError
Expand All @@ -270,6 +277,8 @@
from fastfuels_sdk.client_library.models.road_feature import RoadFeature as RoadFeature
from fastfuels_sdk.client_library.models.road_feature_source import RoadFeatureSource as RoadFeatureSource
from fastfuels_sdk.client_library.models.scope import Scope as Scope
from fastfuels_sdk.client_library.models.spatial_operator import SpatialOperator as SpatialOperator
from fastfuels_sdk.client_library.models.spatial_target import SpatialTarget as SpatialTarget
from fastfuels_sdk.client_library.models.surface_grid import SurfaceGrid as SurfaceGrid
from fastfuels_sdk.client_library.models.surface_grid_attribute import SurfaceGridAttribute as SurfaceGridAttribute
from fastfuels_sdk.client_library.models.surface_grid_fbfm_source import SurfaceGridFBFMSource as SurfaceGridFBFMSource
Expand All @@ -293,6 +302,7 @@
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_load_condition import SurfaceGridModificationFuelLoadCondition as SurfaceGridModificationFuelLoadCondition
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_moisture_action import SurfaceGridModificationFuelMoistureAction as SurfaceGridModificationFuelMoistureAction
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_moisture_condition import SurfaceGridModificationFuelMoistureCondition as SurfaceGridModificationFuelMoistureCondition
from fastfuels_sdk.client_library.models.surface_grid_modification_spatial_condition import SurfaceGridModificationSpatialCondition as SurfaceGridModificationSpatialCondition
from fastfuels_sdk.client_library.models.surface_grid_savr_source import SurfaceGridSAVRSource as SurfaceGridSAVRSource
from fastfuels_sdk.client_library.models.surface_grid_uniform_fbfm40_value import SurfaceGridUniformFBFM40Value as SurfaceGridUniformFBFM40Value
from fastfuels_sdk.client_library.models.surface_grid_uniform_value import SurfaceGridUniformValue as SurfaceGridUniformValue
Expand Down
304 changes: 303 additions & 1 deletion fastfuels_sdk/client_library/api/road_feature_api.py

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions fastfuels_sdk/client_library/api/surface_grid_api.py

Large diffs are not rendered by default.

304 changes: 303 additions & 1 deletion fastfuels_sdk/client_library/api/water_feature_api.py

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fastfuels_sdk/client_library/api_spec.json

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions fastfuels_sdk/client_library/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
from fastfuels_sdk.client_library.models.export import Export
from fastfuels_sdk.client_library.models.export_status import ExportStatus
from fastfuels_sdk.client_library.models.fbfm40 import FBFM40
from fastfuels_sdk.client_library.models.feature_data_response import FeatureDataResponse
from fastfuels_sdk.client_library.models.feature_grid import FeatureGrid
from fastfuels_sdk.client_library.models.feature_grid_attribute import FeatureGridAttribute
from fastfuels_sdk.client_library.models.feature_type import FeatureType
Expand All @@ -52,6 +53,7 @@
from fastfuels_sdk.client_library.models.geo_json_crs_properties import GeoJsonCRSProperties
from fastfuels_sdk.client_library.models.geojson import Geojson
from fastfuels_sdk.client_library.models.geometry import Geometry
from fastfuels_sdk.client_library.models.geometry1 import Geometry1
from fastfuels_sdk.client_library.models.grid_attribute_metadata_response import GridAttributeMetadataResponse
from fastfuels_sdk.client_library.models.grids import Grids
from fastfuels_sdk.client_library.models.http_validation_error import HTTPValidationError
Expand All @@ -74,6 +76,8 @@
from fastfuels_sdk.client_library.models.road_feature import RoadFeature
from fastfuels_sdk.client_library.models.road_feature_source import RoadFeatureSource
from fastfuels_sdk.client_library.models.scope import Scope
from fastfuels_sdk.client_library.models.spatial_operator import SpatialOperator
from fastfuels_sdk.client_library.models.spatial_target import SpatialTarget
from fastfuels_sdk.client_library.models.surface_grid import SurfaceGrid
from fastfuels_sdk.client_library.models.surface_grid_attribute import SurfaceGridAttribute
from fastfuels_sdk.client_library.models.surface_grid_fbfm_source import SurfaceGridFBFMSource
Expand All @@ -97,6 +101,7 @@
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_load_condition import SurfaceGridModificationFuelLoadCondition
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_moisture_action import SurfaceGridModificationFuelMoistureAction
from fastfuels_sdk.client_library.models.surface_grid_modification_fuel_moisture_condition import SurfaceGridModificationFuelMoistureCondition
from fastfuels_sdk.client_library.models.surface_grid_modification_spatial_condition import SurfaceGridModificationSpatialCondition
from fastfuels_sdk.client_library.models.surface_grid_savr_source import SurfaceGridSAVRSource
from fastfuels_sdk.client_library.models.surface_grid_uniform_fbfm40_value import SurfaceGridUniformFBFM40Value
from fastfuels_sdk.client_library.models.surface_grid_uniform_value import SurfaceGridUniformValue
Expand Down
119 changes: 119 additions & 0 deletions fastfuels_sdk/client_library/models/feature_data_response.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# coding: utf-8

"""
FastFuels API

A JSON API for creating, editing, and retrieving 3D fuels data for next generation fire behavior models.

The version of the OpenAPI document: 0.1.0
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
""" # noqa: E501


from __future__ import annotations
import pprint
import re # noqa: F401
import json

from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
from typing import Any, ClassVar, Dict, List, Optional
from fastfuels_sdk.client_library.models.geo_json_crs import GeoJsonCRS
from fastfuels_sdk.client_library.models.geo_json_feature import GeoJSONFeature
from typing import Optional, Set
from typing_extensions import Self

class FeatureDataResponse(BaseModel):
"""
Paginated response structured as a GeoJSON FeatureCollection. Includes standard FeatureCollection fields plus pagination metadata.
""" # noqa: E501
current_page: StrictInt = Field(description="The current page number.", alias="currentPage")
page_size: StrictInt = Field(description="The number of resources per page.", alias="pageSize")
total_items: StrictInt = Field(description="The total number of resources.", alias="totalItems")
crs: Optional[GeoJsonCRS] = Field(default=None, description="The GeoJSON specification formatted coordinate reference system (CRS) of the domain.")
type: Optional[StrictStr] = 'FeatureCollection'
features: List[GeoJSONFeature] = Field(description="A list of standard GeoJSON features.")
__properties: ClassVar[List[str]] = ["currentPage", "pageSize", "totalItems", "crs", "type", "features"]

@field_validator('type')
def type_validate_enum(cls, value):
"""Validates the enum"""
if value is None:
return value

if value not in set(['FeatureCollection']):
raise ValueError("must be one of enum values ('FeatureCollection')")
return value

model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
protected_namespaces=(),
)


def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))

def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return json.dumps(self.to_dict())

@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of FeatureDataResponse from a JSON string"""
return cls.from_dict(json.loads(json_str))

def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.

This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:

* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
excluded_fields: Set[str] = set([
])

_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of crs
if self.crs:
_dict['crs'] = self.crs.to_dict()
# override the default output from pydantic by calling `to_dict()` of each item in features (list)
_items = []
if self.features:
for _item_features in self.features:
if _item_features:
_items.append(_item_features.to_dict())
_dict['features'] = _items
return _dict

@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of FeatureDataResponse from a dict"""
if obj is None:
return None

if not isinstance(obj, dict):
return cls.model_validate(obj)

_obj = cls.model_validate({
"currentPage": obj.get("currentPage"),
"pageSize": obj.get("pageSize"),
"totalItems": obj.get("totalItems"),
"crs": GeoJsonCRS.from_dict(obj["crs"]) if obj.get("crs") is not None else None,
"type": obj.get("type") if obj.get("type") is not None else 'FeatureCollection',
"features": [GeoJSONFeature.from_dict(_item) for _item in obj["features"]] if obj.get("features") is not None else None
})
return _obj


140 changes: 140 additions & 0 deletions fastfuels_sdk/client_library/models/geometry1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# coding: utf-8

"""
FastFuels API

A JSON API for creating, editing, and retrieving 3D fuels data for next generation fire behavior models.

The version of the OpenAPI document: 0.1.0
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
""" # noqa: E501


from __future__ import annotations
import json
import pprint
from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
from typing import Any, List, Optional
from fastfuels_sdk.client_library.models.multi_polygon import MultiPolygon
from fastfuels_sdk.client_library.models.polygon import Polygon
from pydantic import StrictStr, Field
from typing import Union, List, Set, Optional, Dict
from typing_extensions import Literal, Self

GEOMETRY1_ONE_OF_SCHEMAS = ["MultiPolygon", "Polygon"]

class Geometry1(BaseModel):
"""
A GeoJSON Polygon or MultiPolygon geometry defining the spatial area for the condition.
"""
# data type: Polygon
oneof_schema_1_validator: Optional[Polygon] = None
# data type: MultiPolygon
oneof_schema_2_validator: Optional[MultiPolygon] = None
actual_instance: Optional[Union[MultiPolygon, Polygon]] = None
one_of_schemas: Set[str] = { "MultiPolygon", "Polygon" }

model_config = ConfigDict(
validate_assignment=True,
protected_namespaces=(),
)


discriminator_value_class_map: Dict[str, str] = {
}

def __init__(self, *args, **kwargs) -> None:
if args:
if len(args) > 1:
raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`")
if kwargs:
raise ValueError("If a position argument is used, keyword arguments cannot be used.")
super().__init__(actual_instance=args[0])
else:
super().__init__(**kwargs)

@field_validator('actual_instance')
def actual_instance_must_validate_oneof(cls, v):
instance = Geometry1.model_construct()
error_messages = []
match = 0
# validate data type: Polygon
if not isinstance(v, Polygon):
error_messages.append(f"Error! Input type `{type(v)}` is not `Polygon`")
else:
match += 1
# validate data type: MultiPolygon
if not isinstance(v, MultiPolygon):
error_messages.append(f"Error! Input type `{type(v)}` is not `MultiPolygon`")
else:
match += 1
if match > 1:
# more than 1 match
raise ValueError("Multiple matches found when setting `actual_instance` in Geometry1 with oneOf schemas: MultiPolygon, Polygon. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
raise ValueError("No match found when setting `actual_instance` in Geometry1 with oneOf schemas: MultiPolygon, Polygon. Details: " + ", ".join(error_messages))
else:
return v

@classmethod
def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self:
return cls.from_json(json.dumps(obj))

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Returns the object represented by the json string"""
instance = cls.model_construct()
error_messages = []
match = 0

# deserialize data into Polygon
try:
instance.actual_instance = Polygon.from_json(json_str)
match += 1
except (ValidationError, ValueError) as e:
error_messages.append(str(e))
# deserialize data into MultiPolygon
try:
instance.actual_instance = MultiPolygon.from_json(json_str)
match += 1
except (ValidationError, ValueError) as e:
error_messages.append(str(e))

if match > 1:
# more than 1 match
raise ValueError("Multiple matches found when deserializing the JSON string into Geometry1 with oneOf schemas: MultiPolygon, Polygon. Details: " + ", ".join(error_messages))
elif match == 0:
# no match
raise ValueError("No match found when deserializing the JSON string into Geometry1 with oneOf schemas: MultiPolygon, Polygon. Details: " + ", ".join(error_messages))
else:
return instance

def to_json(self) -> str:
"""Returns the JSON representation of the actual instance"""
if self.actual_instance is None:
return "null"

if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
return self.actual_instance.to_json()
else:
return json.dumps(self.actual_instance)

def to_dict(self) -> Optional[Union[Dict[str, Any], MultiPolygon, Polygon]]:
"""Returns the dict representation of the actual instance"""
if self.actual_instance is None:
return None

if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
return self.actual_instance.to_dict()
else:
# primitive type
return self.actual_instance

def to_str(self) -> str:
"""Returns the string representation of the actual instance"""
return pprint.pformat(self.model_dump())


2 changes: 1 addition & 1 deletion fastfuels_sdk/client_library/models/modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

class Modifier(str, Enum):
"""
Modifier
Modifiers for modification actions.
"""

"""
Expand Down
2 changes: 1 addition & 1 deletion fastfuels_sdk/client_library/models/operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

class Operator(str, Enum):
"""
Operator
Comparison operators for attribute-based conditions.
"""

"""
Expand Down
Loading
Loading