Google Maps Route Optimization API client library for assigning tasks and routes to vehicle fleets while optimizing against custom objectives and constraints.
—
Client instantiation, authentication, and configuration options for both synchronous and asynchronous operation modes. This covers how to create and configure Route Optimization clients with various authentication methods and settings.
Synchronous client for Route Optimization API interactions.
class RouteOptimizationClient:
def __init__(
self,
*,
credentials: Optional[ga_credentials.Credentials] = None,
transport: Optional[Union[str, RouteOptimizationTransport, Callable[..., RouteOptimizationTransport]]] = None,
client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None,
client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO
): ...
@classmethod
def from_service_account_info(
cls,
info: dict,
*args,
**kwargs
) -> "RouteOptimizationClient": ...
@classmethod
def from_service_account_file(
cls,
filename: str,
*args,
**kwargs
) -> "RouteOptimizationClient": ...
@property
def transport(self) -> RouteOptimizationTransport: ...
@staticmethod
def common_billing_account_path(billing_account: str) -> str: ...
@staticmethod
def parse_common_billing_account_path(path: str) -> Dict[str, str]: ...
@staticmethod
def common_folder_path(folder: str) -> str: ...
@staticmethod
def parse_common_folder_path(path: str) -> Dict[str, str]: ...
@staticmethod
def common_organization_path(organization: str) -> str: ...
@staticmethod
def parse_common_organization_path(path: str) -> Dict[str, str]: ...
@staticmethod
def common_project_path(project: str) -> str: ...
@staticmethod
def parse_common_project_path(path: str) -> Dict[str, str]: ...
@staticmethod
def common_location_path(project: str, location: str) -> str: ...
@staticmethod
def parse_common_location_path(path: str) -> Dict[str, str]: ...Asynchronous client for non-blocking Route Optimization API interactions.
class RouteOptimizationAsyncClient:
def __init__(
self,
*,
credentials: Optional[ga_credentials.Credentials] = None,
transport: Optional[Union[str, RouteOptimizationAsyncTransport, Callable[..., RouteOptimizationAsyncTransport]]] = None,
client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None,
client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO
): ...
@classmethod
def from_service_account_info(
cls,
info: dict,
*args,
**kwargs
) -> "RouteOptimizationAsyncClient": ...
@classmethod
def from_service_account_file(
cls,
filename: str,
*args,
**kwargs
) -> "RouteOptimizationAsyncClient": ...
@property
def transport(self) -> RouteOptimizationAsyncTransport: ...
# Same path helper methods as sync clientfrom google.maps import routeoptimization_v1
# Use Application Default Credentials (recommended)
client = routeoptimization_v1.RouteOptimizationClient()from google.maps import routeoptimization_v1
# From service account file
client = routeoptimization_v1.RouteOptimizationClient.from_service_account_file(
"path/to/service-account-key.json"
)
# Async client from service account file
async_client = routeoptimization_v1.RouteOptimizationAsyncClient.from_service_account_file(
"path/to/service-account-key.json"
)from google.maps import routeoptimization_v1
# From service account info dictionary
service_account_info = {
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "service-account@your-project.iam.gserviceaccount.com",
"client_id": "client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token"
}
client = routeoptimization_v1.RouteOptimizationClient.from_service_account_info(
service_account_info
)from google.maps import routeoptimization_v1
from google.oauth2 import service_account
# Create credentials manually
credentials = service_account.Credentials.from_service_account_file(
"path/to/service-account-key.json",
scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
client = routeoptimization_v1.RouteOptimizationClient(credentials=credentials)from google.maps import routeoptimization_v1
from google.api_core import client_options
# Use regional endpoint
options = client_options.ClientOptions(
api_endpoint="us-central1-routeoptimization.googleapis.com"
)
client = routeoptimization_v1.RouteOptimizationClient(client_options=options)from google.maps import routeoptimization_v1
# Use specific transport (grpc, rest)
client = routeoptimization_v1.RouteOptimizationClient(transport="grpc")
# For async client
async_client = routeoptimization_v1.RouteOptimizationAsyncClient(transport="grpc_asyncio")from google.maps import routeoptimization_v1
from google.api_core import gapic_v1
# Custom client info
client_info = gapic_v1.client_info.ClientInfo(
client_library_version="1.0.0",
user_agent="MyApp/1.0.0"
)
client = routeoptimization_v1.RouteOptimizationClient(client_info=client_info)Utility methods for constructing and parsing Google Cloud resource paths.
from google.maps import routeoptimization_v1
client = routeoptimization_v1.RouteOptimizationClient()
# Create project path
project_path = client.common_project_path("my-project-id")
# Returns: "projects/my-project-id"
# Parse project path
parsed = client.parse_common_project_path("projects/my-project-id")
# Returns: {"project": "my-project-id"}from google.maps import routeoptimization_v1
client = routeoptimization_v1.RouteOptimizationClient()
# Create location path
location_path = client.common_location_path("my-project-id", "us-central1")
# Returns: "projects/my-project-id/locations/us-central1"
# Parse location path
parsed = client.parse_common_location_path("projects/my-project-id/locations/us-central1")
# Returns: {"project": "my-project-id", "location": "us-central1"}from google.maps import routeoptimization_v1
# Simple client with default credentials
client = routeoptimization_v1.RouteOptimizationClient()
# Test connection with a simple request
request = routeoptimization_v1.OptimizeToursRequest(
parent=client.common_project_path("my-project-id")
)from google.maps import routeoptimization_v1
from google.api_core import client_options, retry
import google.auth
# Production setup with custom configuration
credentials, project_id = google.auth.default(
scopes=["https://www.googleapis.com/auth/cloud-platform"]
)
options = client_options.ClientOptions(
api_endpoint="us-central1-routeoptimization.googleapis.com",
quota_project_id=project_id
)
client = routeoptimization_v1.RouteOptimizationClient(
credentials=credentials,
client_options=options
)
# Use with custom retry configuration
custom_retry = retry.Retry(
initial=1.0,
maximum=60.0,
multiplier=2.0,
predicate=retry.if_exception_type(Exception)
)
response = client.optimize_tours(
request=request,
retry=custom_retry,
timeout=300.0 # 5 minutes
)import asyncio
from google.maps import routeoptimization_v1
async def optimize_routes():
# Create async client
async_client = routeoptimization_v1.RouteOptimizationAsyncClient()
# Create request
request = routeoptimization_v1.OptimizeToursRequest(
parent="projects/my-project-id",
model=your_shipment_model
)
# Make async request
response = await async_client.optimize_tours(request=request)
# Process response
print(f"Optimized {len(response.routes)} routes")
# Close client
await async_client.close()
# Run async function
asyncio.run(optimize_routes())import os
from google.maps import routeoptimization_v1
from google.api_core import client_options
# Configure based on environment
def create_client():
if os.getenv("ENVIRONMENT") == "production":
# Production configuration
options = client_options.ClientOptions(
api_endpoint="us-central1-routeoptimization.googleapis.com"
)
return routeoptimization_v1.RouteOptimizationClient(
client_options=options
)
else:
# Development configuration
return routeoptimization_v1.RouteOptimizationClient()
client = create_client()from google.maps import routeoptimization_v1
from google.api_core import exceptions
import logging
client = routeoptimization_v1.RouteOptimizationClient()
try:
response = client.optimize_tours(request=request)
except exceptions.PermissionDenied as e:
logging.error(f"Permission denied: {e}")
except exceptions.NotFound as e:
logging.error(f"Resource not found: {e}")
except exceptions.DeadlineExceeded as e:
logging.error(f"Request timeout: {e}")
except Exception as e:
logging.error(f"Unexpected error: {e}")Install with Tessl CLI
npx tessl i tessl/pypi-google-maps-routeoptimization