pipeline.src.flows.vessels ========================== .. py:module:: pipeline.src.flows.vessels Functions --------- .. autoapisummary:: pipeline.src.flows.vessels.extract_french_vessels pipeline.src.flows.vessels.extract_eu_vessels pipeline.src.flows.vessels.extract_non_eu_vessels pipeline.src.flows.vessels.extract_vessels_operators pipeline.src.flows.vessels.extract_vessels_logbook_equipement pipeline.src.flows.vessels.extract_french_vessels_navigation_licences pipeline.src.flows.vessels.extract_control_charters pipeline.src.flows.vessels.concat_merge_vessels pipeline.src.flows.vessels.clean_vessels pipeline.src.flows.vessels.add_unknown_vessel pipeline.src.flows.vessels.load_vessels pipeline.src.flows.vessels.vessels_flow Module Contents --------------- .. py:function:: extract_french_vessels() -> pandas.DataFrame Extracts french vessels from Navpro. :returns: french vessels :rtype: pd.DataFrame .. py:function:: extract_eu_vessels() -> pandas.DataFrame Extracts EU vessels from Navpro. :returns: EU vessels :rtype: pd.DataFrame .. py:function:: extract_non_eu_vessels() -> pandas.DataFrame Extracts non-EU vessels from Navpro. :returns: non-EU vessels :rtype: pd.DataFrame .. py:function:: extract_vessels_operators() -> pandas.DataFrame Extracts vessel operators (in the sense of "the people or organisation that operate or manage the operations of the vessel") data from Poséidon (name, contact info). :returns: Vessels operators :rtype: pd.DataFrame .. py:function:: extract_vessels_logbook_equipement() -> pandas.DataFrame Extracts vessels logbook equipement data :returns: Vessels logbook equipment data :rtype: pd.DataFrame .. py:function:: extract_french_vessels_navigation_licences() -> pandas.DataFrame Extracts the navigation licence sailing category and expiration date of french vessels from Gina. :returns: French vessels navigation licence information :rtype: pd.DataFrame .. py:function:: extract_control_charters() -> pandas.DataFrame Extracts vessels with the information of whether they are under control charter or not from Monitorfish, based on historical control data. :returns: Vessels with a boolean column `under_charter` :rtype: pd.DataFrame .. py:function:: concat_merge_vessels(french_vessels: pandas.DataFrame, eu_vessels: pandas.DataFrame, non_eu_vessels: pandas.DataFrame, vessels_logbook_equipement: pandas.DataFrame, vessels_operators: pandas.DataFrame, licences: pandas.DataFrame, control_charters: pandas.DataFrame) -> pandas.DataFrame Concatenates `french_vessels`, `eu_vessels` and `non_eu_vessels`, then performs a left join of the resulting DataFrame with `vessels_operators`, `licences` and `control_charters` successively. Vessels, identified by their `id` should be unique : - accross `french_vessels`, `eu_vessels` and `non_eu_vessels` : a given `id` cannot be in more than one of the three DataFrames, and it must be present just once (a single row) - in `vessels_operators`, `licences` and `control_charters`: a given `id` can be in 1, 2 or all 3 DataFrames, but it cannot have more than one row in each DataFrame. :param french_vessels: French vessels :type french_vessels: pd.DataFrame :param eu_vessels: EU vessels :type eu_vessels: pd.DataFrame :param non_eu_vessels: non-EU vessels :type non_eu_vessels: pd.DataFrame :param vessels_logbook_equipement: vessels logbook equipment data :type vessels_logbook_equipement: pd.DataFrame :param vessels_operators: vessels' operators data :type vessels_operators: pd.DataFrame :param licences: french vessels navigation licences data :type licences: pd.DataFrame :param control_charters: vessels under_charter status :type control_charters: pd.DataFrame :raises ValueError: if a vessel `id` is duplicated :returns: merged vessels data :rtype: pd.DataFrame .. py:function:: clean_vessels(all_vessels: pandas.DataFrame) -> pandas.DataFrame Combines and concatenates data of some columns as coalesced values or lists (phone numbers, emails...) :param all_vessels: Output of concat_merge_vessels :type all_vessels: pd.DataFrame :returns: vessels data ready to be loaded. :rtype: pd.DataFrame .. py:function:: add_unknown_vessel(all_vessels: pandas.DataFrame) -> pandas.DataFrame Adds an "UNKNOWN" vessel to the list, to be used when reporting an action on a vessel that is not part of the officiel vessels list. :param all_vessels: List of vessels :type all_vessels: pd.DataFrame :returns: Same as input with one added "Unknown vessel" :rtype: pd.DataFrame :raises AssertionError: if one of the input vessels has the id reserved for the UNKNOWN :raises vessel: .. py:function:: load_vessels(all_vessels: pandas.DataFrame) Replaces the content of the `vessels` table with the content of the `all_vessels` DataFrame. :param all_vessels: vessels data to load :type all_vessels: pd.DataFrame .. py:function:: vessels_flow()