from oceanbolt.sdk.client import APIClient
from oceanbolt.sdk.helpers import (validate, pb_timeseries_to_pandas)
[docs]class FleetStatusTimeseries:
"""
The ``FleetStatusTimeseries`` returns timeseries on fleet status (number of vessels active in the fleet).
"""
RESOURCE_NAME = "tonnage/fleetstatus"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
df = pb_timeseries_to_pandas(self.client.get_tonnage_fleet_status(request=kwargs, metadata=self.metadata).timeseries)
return df
[docs]class FleetGrowthTimeseries:
"""
The ``FleetGrowthTimeseries`` returns timeseries on fleet growth.
"""
RESOURCE_NAME = "tonnage/fleetgrowth"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
df = pb_timeseries_to_pandas(self.client.get_tonnage_fleet_growth(request=kwargs, metadata=self.metadata).timeseries)
return df
[docs]class TonnageZoneTimeseries:
"""
The ``TonnageZoneTimeseries`` returns timeseries on zone counts.
"""
RESOURCE_NAME = "tonnage/zone"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
df = pb_timeseries_to_pandas(self.client.get_tonnage_zone_count(request=kwargs, metadata=self.metadata).timeseries)
if "avg_speed""" in df.index:
del df["avg_speed"]
return df
[docs]class ZoneChangesTimeseries:
"""
The ``ZoneChangesTimeseries`` returns timeseries on tonnage movements and zone crossings.
"""
RESOURCE_NAME = "tonnage/zonechanges"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
df = pb_timeseries_to_pandas(self.client.get_tonnage_zone_changes(request=kwargs, metadata=self.metadata).timeseries)
return df
[docs]class FleetSpeedTimeseries:
"""
The ``FleetSpeedTimeseries`` returns timeseries on fleet speed.
"""
RESOURCE_NAME = "tonnage/speed"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
df = pb_timeseries_to_pandas(self.client.get_tonnage_fleet_speed(request=kwargs, metadata=self.metadata).timeseries)
if 'vessel_count' in df.columns:
del df["vessel_count"]
if 'vessel_dwt' in df.columns:
del df["vessel_dwt"]
return df
[docs]class ChineseWatersTimeseries:
"""
The ``ChineseWatersTimeseries`` returns timeseries on how many Chinese flagged vessels are trading inside/outside China respectively.
"""
RESOURCE_NAME = "tonnage/chinawaters"
def __init__(self, client: APIClient):
self.client = client._tonnage_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
return pb_timeseries_to_pandas(self.client.get_tonnage_chinese_waters(request=kwargs, metadata=self.metadata).timeseries)
[docs]class CustomPolygonTimeseries:
"""
The ``CustomPolygonTimeseries`` returns timeseries on how many vessels was in a user defined polygon on a daily basis.
"""
RESOURCE_NAME = "tonnage/custompolygon"
def __init__(self, client: APIClient):
self.client = client._custompolygon_client()
self.metadata = client.metadata
[docs] def get(self, **kwargs):
"""Retrieves timeseries data as a pandas.DataFrame"""
kwargs = validate(kwargs)
return pb_timeseries_to_pandas(self.client.get_polygon_counts(request=kwargs, metadata=self.metadata).timeseries)