# Path: roulier/api.py
# class MyValidator(Validator):
# class BaseApi(object):
# class ApiParcel(BaseApi):
# class ApiPackingSlip(BaseApi):
#     def _normalize_coerce_zpl(self, value):
#     def _normalize_coerce_accents(self, value):
#     def __init__(self, config_object):
#     def _validator(self):
#     def _auth(self):
#     def api_schema(self):
#         def wrap_schema(schema):
#     def api_values(self):
#     def errors(self, data):
#     def validate(self, data):
#     def normalize(self, data):
#     def _address(self):
#     def _from_address(self):
#     def _to_address(self):
#     def _parcel(self):
#     def _parcels(self):
#     def _service(self):
#     def _schemas(self):
#     def _packing_slip_number(self):
#     def _parcels_numbers(self):
#     def _schemas(self):
# 
# Path: roulier/carriers/geodis/geodis_api_ws.py
# class GeodisApiWs(Api):
#     def _service(self):
#         schema = super(GeodisApiWs, self)._service()
#         schema["labelFormat"]["allowed"] = GEODIS_LABEL_FORMAT
#         schema["labelFormat"]["default"] = "ZPL"
#         schema["labelFormat"].update({"required": True, "empty": False})
#         schema["product"].update({"required": True, "empty": False})
#         schema["agencyId"].update({"required": False, "empty": True})
#         schema["customerId"].update({"required": True, "empty": False})
#         schema["shippingId"].update({"required": True, "empty": False})
#         schema["hubId"] = {
#             # 'description': 'TEOS : code agence Hub de sortie',
#             "default": ""
#         }
#         schema["is_test"] = {
#             "type": "boolean",
#             "default": True,
#             # 'description': 'Use test Ws'
#         }
#         schema["option"] = {
#             "type": "string",
#             "default": False,
#             # 'description': """Options (RDW, RDV, ETG, ...)"""
#         }
#         schema["notification"] = {
#             "default": GEODIS_ALLOWED_NOTIFICATIONS[0],
#             "allowed": GEODIS_ALLOWED_NOTIFICATIONS,
#         }
# 
#         return schema
# 
#     def _address(self):
#         schema = super(GeodisApiWs, self)._address()
#         schema["country"].update({"required": True, "empty": False})
#         schema["zip"].update({"required": True, "empty": False})
#         schema["city"].update({"required": True, "empty": False})
#         return schema
# 
#     def _from_address(self):
#         schema = super(GeodisApiWs, self)._from_address()
#         schema["phone"].update({"required": True, "empty": False})
#         schema["street1"]["required"] = False
#         return schema
# 
#     def _auth(self):
#         schema = super(GeodisApiWs, self)._auth()
#         schema["login"].update({"required": True, "empty": False})
#         schema["password"]["required"] = False
#         return schema
# 
#     def _parcel(self):
#         schema = super(GeodisApiWs, self)._parcel()
#         schema["volume"] = {
#             "type": "float",
#             "required": False,
#             "empty": True,
#             "default": 0,
#         }
#         schema["reference"] = {
#             "type": "string",
#             "required": False,
#             "empty": True,
#             "default": "",
#             # 'description': 'Description of this parcel'
#         }
#         return schema
# 
#     def _parcels(self):
#         """Allow multiple parcels."""
#         schema = super(GeodisApiWs, self)._parcels()
#         del schema["items"]
#         schema["schema"] = self._parcel()
#         return schema
# 
# GEODIS_ALLOWED_NOTIFICATIONS = (
#     "M",  # Mail
#     "S",  # SMS
#     "P",  # Mail & SMS
# )


from roulier.api import Api, MyValidator
from .geodis_api_ws import GeodisApiWs, GEODIS_ALLOWED_NOTIFICATIONS
            },
            "product": {
                "type": "string",
                "default": "",
                "empty": False,
                "required": True,
            },
            "productTOD": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
            },
            "productPriority": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
                # 'description': """4219, 1: express, 3: normal speed"""
            },
            "productOption": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
                # 'description': """7273, like RDV, B2C, BRT, AEX, A2P..."""
            },
            "notifications": {
                "type": "string",
                "default": GEODIS_ALLOWED_NOTIFICATIONS[0],

# Path: roulier/api.py
# class MyValidator(Validator):
# class BaseApi(object):
# class ApiParcel(BaseApi):
# class ApiPackingSlip(BaseApi):
#     def _normalize_coerce_zpl(self, value):
#     def _normalize_coerce_accents(self, value):
#     def __init__(self, config_object):
#     def _validator(self):
#     def _auth(self):
#     def api_schema(self):
#         def wrap_schema(schema):
#     def api_values(self):
#     def errors(self, data):
#     def validate(self, data):
#     def normalize(self, data):
#     def _address(self):
#     def _from_address(self):
#     def _to_address(self):
#     def _parcel(self):
#     def _parcels(self):
#     def _service(self):
#     def _schemas(self):
#     def _packing_slip_number(self):
#     def _parcels_numbers(self):
#     def _schemas(self):
# 
# Path: roulier/carriers/geodis/geodis_api_ws.py
# class GeodisApiWs(Api):
#     def _service(self):
#         schema = super(GeodisApiWs, self)._service()
#         schema["labelFormat"]["allowed"] = GEODIS_LABEL_FORMAT
#         schema["labelFormat"]["default"] = "ZPL"
#         schema["labelFormat"].update({"required": True, "empty": False})
#         schema["product"].update({"required": True, "empty": False})
#         schema["agencyId"].update({"required": False, "empty": True})
#         schema["customerId"].update({"required": True, "empty": False})
#         schema["shippingId"].update({"required": True, "empty": False})
#         schema["hubId"] = {
#             # 'description': 'TEOS : code agence Hub de sortie',
#             "default": ""
#         }
#         schema["is_test"] = {
#             "type": "boolean",
#             "default": True,
#             # 'description': 'Use test Ws'
#         }
#         schema["option"] = {
#             "type": "string",
#             "default": False,
#             # 'description': """Options (RDW, RDV, ETG, ...)"""
#         }
#         schema["notification"] = {
#             "default": GEODIS_ALLOWED_NOTIFICATIONS[0],
#             "allowed": GEODIS_ALLOWED_NOTIFICATIONS,
#         }
# 
#         return schema
# 
#     def _address(self):
#         schema = super(GeodisApiWs, self)._address()
#         schema["country"].update({"required": True, "empty": False})
#         schema["zip"].update({"required": True, "empty": False})
#         schema["city"].update({"required": True, "empty": False})
#         return schema
# 
#     def _from_address(self):
#         schema = super(GeodisApiWs, self)._from_address()
#         schema["phone"].update({"required": True, "empty": False})
#         schema["street1"]["required"] = False
#         return schema
# 
#     def _auth(self):
#         schema = super(GeodisApiWs, self)._auth()
#         schema["login"].update({"required": True, "empty": False})
#         schema["password"]["required"] = False
#         return schema
# 
#     def _parcel(self):
#         schema = super(GeodisApiWs, self)._parcel()
#         schema["volume"] = {
#             "type": "float",
#             "required": False,
#             "empty": True,
#             "default": 0,
#         }
#         schema["reference"] = {
#             "type": "string",
#             "required": False,
#             "empty": True,
#             "default": "",
#             # 'description': 'Description of this parcel'
#         }
#         return schema
# 
#     def _parcels(self):
#         """Allow multiple parcels."""
#         schema = super(GeodisApiWs, self)._parcels()
#         del schema["items"]
#         schema["schema"] = self._parcel()
#         return schema
# 
# GEODIS_ALLOWED_NOTIFICATIONS = (
#     "M",  # Mail
#     "S",  # SMS
#     "P",  # Mail & SMS
# )


# Path: roulier/carriers/geodis/geodis_api_edi.py
from roulier.api import Api, MyValidator
from .geodis_api_ws import GeodisApiWs, GEODIS_ALLOWED_NOTIFICATIONS

            },
            "product": {
                "type": "string",
                "default": "",
                "empty": False,
                "required": True,
            },
            "productTOD": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
            },
            "productPriority": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
                # 'description': """4219, 1: express, 3: normal speed"""
            },
            "productOption": {
                "type": "string",
                "default": "",
                "empty": True,
                "required": False,
                # 'description': """7273, like RDV, B2C, BRT, AEX, A2P..."""
            },
            "notifications": {
                "type": "string",
                "default": GEODIS_ALLOWED_NOTIFICATIONS[0],

                "allowed": GEODIS_ALLOWED_NOTIFICATIONS,