|
from pydantic import BaseModel, Field |
|
from typing import Literal, List, Union, Optional |
|
|
|
|
|
class CircumstanceTypeBase(BaseModel): |
|
type: str |
|
|
|
|
|
class RoadVehicleCollision(CircumstanceTypeBase): |
|
type: Literal['road_vehicle'] |
|
infrastructure_number: Optional[str] = None |
|
road_type: Literal['highway', 'main road', |
|
'secondary road', 'local road/path/trail', |
|
'parking lot'] |
|
|
|
class TrainCollision(CircumstanceTypeBase): |
|
type: Literal['train'] |
|
infrastructure_number: str |
|
|
|
class AircraftCollision(CircumstanceTypeBase): |
|
type: Literal['aircraft'] |
|
|
|
class BoatCollision(CircumstanceTypeBase): |
|
type: Literal['boat'] |
|
|
|
class OtherTransportCollision(CircumstanceTypeBase): |
|
type: Literal['other transport collision'] |
|
|
|
class UnknownTransportCollision(CircumstanceTypeBase): |
|
type: Literal['unknown transport collision'] |
|
|
|
|
|
class HuntingDestruction(CircumstanceTypeBase): |
|
type: Literal['hunting'] |
|
method: Literal['shooting', 'bow', 'falconry', |
|
'hounds hunting', 'digging up', |
|
"other hunting", "unknow hunting"] |
|
|
|
class TrapDestruction(CircumstanceTypeBase): |
|
type: Literal['trap'] |
|
method: Literal['killing trap', 'pole trap', 'trap cage', 'corvids nasse', |
|
'net', 'cage trap', 'fall-trap', 'glue trap', 'insect trap', |
|
"other trap", "unknown trap"] |
|
|
|
class PoisoningDestruction(CircumstanceTypeBase): |
|
type: Literal['poisoning'] |
|
|
|
class RemovalDestruction(CircumstanceTypeBase): |
|
type: Literal['removal or direct capture'] |
|
method: Literal['gassing', 'raptor captured at nest', 'brood destruction', |
|
'traffic/trade', 'capture accident', 'scientific sample', |
|
"other removal", "unknown removal"] |
|
|
|
class FishingDestruction(CircumstanceTypeBase): |
|
type: Literal['fishing'] |
|
method: Literal['drowned/tangled', 'beached with capture indications', "other fishing", "unknown fishing"] |
|
|
|
class OtherDestruction(CircumstanceTypeBase): |
|
type: Literal['other destruction'] |
|
|
|
class UnknownDestruction(CircumstanceTypeBase): |
|
type: Literal['unknown destruction'] |
|
|
|
|
|
class PylonElectricGridDestruction(CircumstanceTypeBase): |
|
type: Literal['pylone and electric grid'] |
|
infrastructure: Literal['electric line', 'pole/pylon', "other structure", "unknown structure"] |
|
cause: Literal['collision', 'electrocution'] |
|
|
|
class WindfarmDestruction(CircumstanceTypeBase): |
|
type: Literal['windfarm'] |
|
|
|
class OtherCollisionDestruction(CircumstanceTypeBase): |
|
type: Literal['other collision'] |
|
object: Literal['window', 'building', 'lighthouse', |
|
'cable', 'wire fence/barbed wire', 'other crash', 'unknown crash'] |
|
|
|
class FallDestruction(CircumstanceTypeBase): |
|
type: Literal['fall'] |
|
location: Literal['chimney', 'empty pole', 'hole/well', 'other fall', 'unknown fall'] |
|
|
|
class DevelopmentWorkDestruction(CircumstanceTypeBase): |
|
type: Literal['development work'] |
|
work_type: Literal['transport infrastructure', 'building', 'other work', 'unknown work'] |
|
|
|
class PollutionContaminationDestruction(CircumstanceTypeBase): |
|
type: Literal['pollution / contamination'] |
|
pollution_type: Literal['oil pollution', 'chemical pollution', 'heavy metals', |
|
'light', 'noise', |
|
'plastic ingestion', 'other pollution', 'unknown pollution'] |
|
|
|
class AgriculturalNetProtectionDestruction(CircumstanceTypeBase): |
|
type: Literal['agricultural net protection'] |
|
|
|
class VegetalForestWorkDestruction(CircumstanceTypeBase): |
|
type: Literal['vegetal / forest work'] |
|
work_type: Literal['clearing/mowing/plowing', 'tree felling/pruning', |
|
'other forest work', 'unknown forest work'] |
|
|
|
class OtherIndirectDestruction(CircumstanceTypeBase): |
|
type: Literal['other indirect desctruction'] |
|
|
|
class UnknownIndirectDestruction(CircumstanceTypeBase): |
|
type: Literal['unknown indirect desctruction'] |
|
|
|
|
|
class Predation(CircumstanceTypeBase): |
|
type: Literal['predation'] |
|
predator: Literal['cat', 'dog', 'rooster/hen', |
|
'other domestic animal', 'wild birds', |
|
'wild mammal', 'other predator', 'unknown predator'] |
|
|
|
class Weather(CircumstanceTypeBase): |
|
type: Literal['weather'] |
|
condition: Literal['cold wave', 'drought', 'hail', |
|
'lightening', 'storm', |
|
'other weather', 'unknown weather'] |
|
|
|
class NaturalDisaster(CircumstanceTypeBase): |
|
type: Literal['natural disaster'] |
|
disaster: Literal['fire', 'avalanche', 'rock fall', |
|
'mudslide', 'volcanic eruption/ashes', |
|
'other natural disaster', 'unknown natural disaster'] |
|
|
|
class NestFall(CircumstanceTypeBase): |
|
type: Literal['nest fall'] |
|
|
|
class StrandingExhaustion(CircumstanceTypeBase): |
|
type: Literal['stranding due to exhaustion'] |
|
|
|
class DiseaseParasite(CircumstanceTypeBase): |
|
type: Literal['disease/parasite'] |
|
|
|
class AccidentalDrowning(CircumstanceTypeBase): |
|
type: Literal['accidental drowning'] |
|
drowning_location: Literal['drinking trough', 'pool', |
|
'storm pool', 'irrigation pool', |
|
'natural pool', 'flood', |
|
'other location', 'unknown location'] |
|
|
|
class OtherNaturalCause(CircumstanceTypeBase): |
|
type: Literal['other natural cause'] |
|
|
|
class UnknownNaturalCause(CircumstanceTypeBase): |
|
type: Literal['unknown natural cause'] |
|
|
|
|
|
class UnknownCircumstance(CircumstanceTypeBase): |
|
type: Literal['unknown'] |
|
|
|
|
|
CircumstanceType = Union[ |
|
RoadVehicleCollision, |
|
TrainCollision, |
|
AircraftCollision, |
|
BoatCollision, |
|
OtherTransportCollision, |
|
UnknownTransportCollision, |
|
HuntingDestruction, |
|
TrapDestruction, |
|
PoisoningDestruction, |
|
RemovalDestruction, |
|
FishingDestruction, |
|
OtherDestruction, |
|
UnknownDestruction, |
|
PylonElectricGridDestruction, |
|
WindfarmDestruction, |
|
OtherCollisionDestruction, |
|
FallDestruction, |
|
DevelopmentWorkDestruction, |
|
PollutionContaminationDestruction, |
|
AgriculturalNetProtectionDestruction, |
|
VegetalForestWorkDestruction, |
|
OtherIndirectDestruction, |
|
UnknownIndirectDestruction, |
|
Predation, |
|
Weather, |
|
NaturalDisaster, |
|
NestFall, |
|
StrandingExhaustion, |
|
DiseaseParasite, |
|
AccidentalDrowning, |
|
OtherNaturalCause, |
|
UnknownNaturalCause, |
|
UnknownCircumstance |
|
] |
|
|
|
|
|
class Circumstances(BaseModel): |
|
circumstance_radio: str |
|
circumstance: Optional[str] = None |
|
circumstance_type: Optional[CircumstanceType] = Field(None, discriminator='type') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|