Name | traveltimepy JSON |
Version |
4.2.0
JSON |
| download |
home_page | None |
Summary | Python Interface to Travel Time. |
upload_time | 2025-08-01 10:46:11 |
maintainer | None |
docs_url | None |
author | TravelTime |
requires_python | >=3.8 |
license | MIT |
keywords |
traveltimepy
api
maps
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# TravelTime Python SDK
[](https://badge.fury.io/py/traveltimepy)
[](https://github.com/traveltime-dev/traveltime-python-sdk/actions/workflows/ci.yml)
[](https://img.shields.io/badge/python-3.9+-blue)
The TravelTime Python SDK provides a simple and efficient way to access the [TravelTime API](https://docs.traveltime.com/api/overview/introduction), enabling you to calculate travel times and distances, generate isochrones, and perform location-based queries using real-world transportation data.
## Features
- **Time Matrix & Filtering**: Calculate travel times between multiple origins and destinations
- **Isochrone Generation**: Create time-based catchment areas in multiple formats (GeoJSON, WKT)
- **Route Planning**: Get detailed turn-by-turn directions between locations
- **Geocoding**: Convert addresses to coordinates and vice versa
- **Specialized Analysis**: UK postcode analysis, H3 hexagon analysis, and geohash analysis
- **Transportation Modes**: Support for driving, public transport, walking, cycling, and multimodal transport
- **Async Support**: Both synchronous and asynchronous clients available
- **Performance Options**: Fast endpoints for high-volume use cases
## Requirements
- Python 3.9 or higher
To check your Python version:
```bash
python --version
```
## Installation
Install the TravelTime Python SDK using pip:
```bash
pip install traveltimepy
```
### Optional Dependencies
For protocol buffer (protobuf) support (required for TimeFilterFastProto endpoints):
```bash
pip install 'traveltimepy[proto]'
```
## Getting Started
### Authentication
Get your API credentials from the [TravelTime Developer Portal](https://docs.traveltime.com/api/overview/getting-keys).
### Basic Usage
```python
from datetime import datetime
from traveltimepy import Client
from traveltimepy.requests.common import Location, Coordinates, Property
from traveltimepy.requests.time_filter import TimeFilterDepartureSearch
from traveltimepy.requests.transportation import PublicTransport
from traveltimepy.errors import TravelTimeApiError
# Define locations
locations = [
Location(id="London center", coords=Coordinates(lat=51.508930, lng=-0.131387)),
Location(id="Hyde Park", coords=Coordinates(lat=51.508824, lng=-0.167093)),
Location(id="ZSL London Zoo", coords=Coordinates(lat=51.536067, lng=-0.153596))
]
# Option 1: Standard usage (manual session management)
client = Client(app_id="YOUR_APP_ID", api_key="YOUR_API_KEY")
try:
response = client.time_filter(
locations=locations,
departure_searches=[
TimeFilterDepartureSearch(
id="London center",
departure_location_id="London center",
arrival_location_ids=["Hyde Park", "ZSL London Zoo"],
departure_time=datetime.now(),
transportation=PublicTransport(),
travel_time=1800, # 30 minutes
properties=[Property.TRAVEL_TIME]
)
],
arrival_searches=[]
)
print(f"Found {len(response.results)} results")
for result in response.results:
print(f"Search ID: {result.search_id}")
except TravelTimeApiError as e:
print(e)
finally:
client.close() # Manually close session
# Option 2: Context manager (automatic session cleanup)
with Client(app_id="YOUR_APP_ID", api_key="YOUR_API_KEY") as client:
try:
response = client.time_filter(
locations=locations,
departure_searches=[
TimeFilterDepartureSearch(
id="London center",
departure_location_id="London center",
arrival_location_ids=["Hyde Park", "ZSL London Zoo"],
departure_time=datetime.now(),
transportation=PublicTransport(),
travel_time=1800,
properties=[Property.TRAVEL_TIME]
)
],
arrival_searches=[]
)
print(f"Found {len(response.results)} results")
for result in response.results:
print(f"Search ID: {result.search_id}")
except TravelTimeApiError as e:
print(e)
# Session automatically closed when exiting 'with' block
```
### Async Usage
```python
import asyncio
from datetime import datetime
from traveltimepy import AsyncClient
from traveltimepy.requests.common import Location, Coordinates
from traveltimepy.requests.time_filter import TimeFilterDepartureSearch
from traveltimepy.requests.transportation import PublicTransport
from traveltimepy.errors import TravelTimeApiError
locations = [
Location(id="London center", coords=Coordinates(lat=51.508930, lng=-0.131387)),
Location(id="Hyde Park", coords=Coordinates(lat=51.508824, lng=-0.167093)),
Location(id="ZSL London Zoo", coords=Coordinates(lat=51.536067, lng=-0.153596))
]
# Option 1: Standard async usage (manual session management)
async def main():
client = AsyncClient(app_id="YOUR_APP_ID", api_key="YOUR_API_KEY")
try:
response = await client.time_filter(
locations=locations,
departure_searches=[
TimeFilterDepartureSearch(
id="London center",
departure_location_id="London center",
arrival_location_ids=["Hyde Park", "ZSL London Zoo"],
departure_time=datetime.now(),
transportation=PublicTransport(),
travel_time=1800
)
],
arrival_searches=[]
)
print(f"Found {len(response.results)} results")
for result in response.results:
print(f"Search ID: {result.search_id}")
except TravelTimeApiError as e:
print(e)
finally:
await client.close() # Manually close session
# Option 2: Async context manager (automatic session cleanup)
async def main_with_context():
async with AsyncClient(app_id="YOUR_APP_ID", api_key="YOUR_API_KEY") as client:
try:
response = await client.time_filter(
locations=locations,
departure_searches=[
TimeFilterDepartureSearch(
id="London center",
departure_location_id="London center",
arrival_location_ids=["Hyde Park", "ZSL London Zoo"],
departure_time=datetime.now(),
transportation=PublicTransport(),
travel_time=1800
)
],
arrival_searches=[]
)
print(f"Found {len(response.results)} results")
for result in response.results:
print(f"Search ID: {result.search_id}")
except TravelTimeApiError as e:
print(e)
# Session automatically closed when exiting 'async with' block
# Run either version
asyncio.run(main())
# or
asyncio.run(main_with_context())
```
## Core Methods
The SDK provides both synchronous (`Client`) and asynchronous (`AsyncClient`) versions of all methods:
### Time Matrix & Filtering
- [`time_filter()`](https://docs.traveltime.com/api/reference/travel-time-distance-matrix) - Calculate travel times between locations
- [`time_filter_fast()`](https://docs.traveltime.com/api/reference/time-filter-fast) - High-performance version for large datasets
- [`time_filter_proto()`](https://docs.traveltime.com/api/start/travel-time-distance-matrix-proto) - Ultra-fast protocol buffer implementation (requires `pip install 'traveltimepy[proto]'`)
### Isochrone Generation
- [`time_map()`](https://docs.traveltime.com/api/reference/isochrones) - Generate travel time polygons
- [`time_map_geojson()`](https://docs.traveltime.com/api/reference/isochrones) - GeoJSON format isochrones
- [`time_map_wkt()`](https://docs.traveltime.com/api/reference/isochrones) - WKT format isochrones
- [`time_map_fast()`](https://docs.traveltime.com/api/reference/isochrones-fast) - High-performance isochrones
- [`time_map_fast_geojson()`](https://docs.traveltime.com/api/reference/isochrones-fast) - Fast GeoJSON isochrones
- [`time_map_fast_wkt()`](https://docs.traveltime.com/api/reference/isochrones-fast) - Fast WKT isochrones
### Route Planning
- [`routes()`](https://docs.traveltime.com/api/reference/routes) - Calculate detailed routes between locations
### Geocoding
- [`geocoding()`](https://docs.traveltime.com/api/reference/geocoding-search) - Convert addresses to coordinates
- [`reverse_geocoding()`](https://docs.traveltime.com/api/reference/geocoding-reverse) - Convert coordinates to addresses
### Specialized Analysis
- [`h3()`](https://docs.traveltime.com/api/reference/h3) - H3 hexagon analysis
- [`h3_fast()`](https://docs.traveltime.com/api/reference/h3-fast) - Fast H3 analysis
- [`geohash()`](https://docs.traveltime.com/api/reference/geohash) - Geohash analysis
- [`geohash_fast()`](https://docs.traveltime.com/api/reference/geohash-fast) - Fast geohash analysis
- [`postcodes()`](https://docs.traveltime.com/api/reference/postcode-search) - UK postcode analysis
- [`postcode_districts()`](https://docs.traveltime.com/api/reference/postcode-district-filter) - UK postcode district analysis
- [`postcode_sectors()`](https://docs.traveltime.com/api/reference/postcode-sector-filter) - UK postcode sector analysis
- [`distance_map()`](https://docs.traveltime.com/api/reference/distance-map) - Distance-based catchment areas
### Utility Methods
- [`map_info()`](https://docs.traveltime.com/api/reference/map-info) - Get supported countries and features
- [`supported_locations()`](https://docs.traveltime.com/api/reference/supported-locations) - Check location support
## Configuration
The SDK supports various configuration options:
```python
from traveltimepy import Client, AsyncClient
# Synchronous client
client = Client(
app_id="YOUR_APP_ID",
api_key="YOUR_API_KEY",
timeout=300, # Request timeout in seconds
retry_attempts=3, # Number of retry attempts for 5xx errors
max_rpm=60, # Maximum requests per minute
)
# Asynchronous client
async_client = AsyncClient(
app_id="YOUR_APP_ID",
api_key="YOUR_API_KEY",
timeout=300,
retry_attempts=3,
max_rpm=60
)
```
## Error Handling and Retries
The SDK automatically handles both rate limiting and server error retries:
- **Rate limiting**: Automatically handled with exponential backoff
- **Server errors (5xx)**: Automatically retried up to 3 times with immediate retry
- **Client errors (4xx)**: Not retried (indicates invalid request)
```python
# Retries are built-in - no additional code needed
client = Client(app_id="YOUR_APP_ID", api_key="YOUR_API_KEY")
response = client.time_filter(
locations=locations,
departure_searches=searches
) # Automatically retries on 5xx errors
```
### Configuring Retries
You can configure the number of retry attempts:
```python
# Custom retry attempts
client = Client(
app_id="YOUR_APP_ID",
api_key="YOUR_API_KEY",
retry_attempts=5 # Will retry up to 5 times on 5xx errors
)
# Disable retries completely
client = Client(
app_id="YOUR_APP_ID",
api_key="YOUR_API_KEY",
retry_attempts=0 # No retries, fail immediately
)
```
## Examples
The `examples/` directory contains practical examples.
See [examples/README.md](examples/README.md) for setup instructions and detailed descriptions.
## Performance Tips
- Use `*_fast()` methods for high-volume use cases
- Use `time_filter_proto()` for maximum performance with large datasets (install with `pip install 'traveltimepy[proto]'`)
- Use async methods for I/O-bound applications
## Documentation
For comprehensive documentation, including detailed parameter references and advanced usage examples, visit:
- [TravelTime API Documentation](https://docs.traveltime.com/api/overview/introduction)
## Support
If you have questions or need help:
- [Create an issue](https://github.com/traveltime-dev/traveltime-python-sdk/issues) on GitHub
- Check the [API documentation](https://docs.traveltime.com/)
- Contact [TravelTime support](https://traveltime.com/contact-us)
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "traveltimepy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "traveltimepy, api, maps",
"author": "TravelTime",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/ad/6f/a118f85e277614afbd70b2f1ae0312eabeb84a7ecd1ec85403718f25aa03/traveltimepy-4.2.0.tar.gz",
"platform": null,
"description": "# TravelTime Python SDK\n\n[](https://badge.fury.io/py/traveltimepy)\n[](https://github.com/traveltime-dev/traveltime-python-sdk/actions/workflows/ci.yml)\n[](https://img.shields.io/badge/python-3.9+-blue)\n\nThe TravelTime Python SDK provides a simple and efficient way to access the [TravelTime API](https://docs.traveltime.com/api/overview/introduction), enabling you to calculate travel times and distances, generate isochrones, and perform location-based queries using real-world transportation data.\n\n## Features\n\n- **Time Matrix & Filtering**: Calculate travel times between multiple origins and destinations\n- **Isochrone Generation**: Create time-based catchment areas in multiple formats (GeoJSON, WKT)\n- **Route Planning**: Get detailed turn-by-turn directions between locations\n- **Geocoding**: Convert addresses to coordinates and vice versa\n- **Specialized Analysis**: UK postcode analysis, H3 hexagon analysis, and geohash analysis\n- **Transportation Modes**: Support for driving, public transport, walking, cycling, and multimodal transport\n- **Async Support**: Both synchronous and asynchronous clients available\n- **Performance Options**: Fast endpoints for high-volume use cases\n\n## Requirements\n\n- Python 3.9 or higher\n\nTo check your Python version:\n```bash\npython --version\n```\n\n## Installation\n\nInstall the TravelTime Python SDK using pip:\n\n```bash\npip install traveltimepy\n```\n\n### Optional Dependencies\n\nFor protocol buffer (protobuf) support (required for TimeFilterFastProto endpoints):\n\n```bash\npip install 'traveltimepy[proto]'\n```\n\n## Getting Started\n\n### Authentication\n\nGet your API credentials from the [TravelTime Developer Portal](https://docs.traveltime.com/api/overview/getting-keys).\n\n### Basic Usage\n\n```python\nfrom datetime import datetime\nfrom traveltimepy import Client\nfrom traveltimepy.requests.common import Location, Coordinates, Property\nfrom traveltimepy.requests.time_filter import TimeFilterDepartureSearch\nfrom traveltimepy.requests.transportation import PublicTransport\nfrom traveltimepy.errors import TravelTimeApiError\n\n# Define locations\nlocations = [\n Location(id=\"London center\", coords=Coordinates(lat=51.508930, lng=-0.131387)),\n Location(id=\"Hyde Park\", coords=Coordinates(lat=51.508824, lng=-0.167093)),\n Location(id=\"ZSL London Zoo\", coords=Coordinates(lat=51.536067, lng=-0.153596))\n]\n\n# Option 1: Standard usage (manual session management)\nclient = Client(app_id=\"YOUR_APP_ID\", api_key=\"YOUR_API_KEY\")\n\ntry:\n response = client.time_filter(\n locations=locations,\n departure_searches=[\n TimeFilterDepartureSearch(\n id=\"London center\",\n departure_location_id=\"London center\", \n arrival_location_ids=[\"Hyde Park\", \"ZSL London Zoo\"],\n departure_time=datetime.now(),\n transportation=PublicTransport(),\n travel_time=1800, # 30 minutes\n properties=[Property.TRAVEL_TIME]\n )\n ],\n arrival_searches=[]\n )\n \n print(f\"Found {len(response.results)} results\")\n for result in response.results:\n print(f\"Search ID: {result.search_id}\")\n \nexcept TravelTimeApiError as e:\n print(e)\nfinally:\n client.close() # Manually close session\n\n# Option 2: Context manager (automatic session cleanup)\nwith Client(app_id=\"YOUR_APP_ID\", api_key=\"YOUR_API_KEY\") as client:\n try:\n response = client.time_filter(\n locations=locations,\n departure_searches=[\n TimeFilterDepartureSearch(\n id=\"London center\",\n departure_location_id=\"London center\", \n arrival_location_ids=[\"Hyde Park\", \"ZSL London Zoo\"],\n departure_time=datetime.now(),\n transportation=PublicTransport(),\n travel_time=1800,\n properties=[Property.TRAVEL_TIME]\n )\n ],\n arrival_searches=[]\n )\n \n print(f\"Found {len(response.results)} results\")\n for result in response.results:\n print(f\"Search ID: {result.search_id}\")\n \n except TravelTimeApiError as e:\n print(e)\n # Session automatically closed when exiting 'with' block\n```\n\n### Async Usage\n\n```python\nimport asyncio\nfrom datetime import datetime\nfrom traveltimepy import AsyncClient\nfrom traveltimepy.requests.common import Location, Coordinates\nfrom traveltimepy.requests.time_filter import TimeFilterDepartureSearch\nfrom traveltimepy.requests.transportation import PublicTransport\nfrom traveltimepy.errors import TravelTimeApiError\n\nlocations = [\n Location(id=\"London center\", coords=Coordinates(lat=51.508930, lng=-0.131387)),\n Location(id=\"Hyde Park\", coords=Coordinates(lat=51.508824, lng=-0.167093)),\n Location(id=\"ZSL London Zoo\", coords=Coordinates(lat=51.536067, lng=-0.153596))\n]\n\n# Option 1: Standard async usage (manual session management)\nasync def main():\n client = AsyncClient(app_id=\"YOUR_APP_ID\", api_key=\"YOUR_API_KEY\")\n \n try:\n response = await client.time_filter(\n locations=locations,\n departure_searches=[\n TimeFilterDepartureSearch(\n id=\"London center\",\n departure_location_id=\"London center\",\n arrival_location_ids=[\"Hyde Park\", \"ZSL London Zoo\"],\n departure_time=datetime.now(),\n transportation=PublicTransport(),\n travel_time=1800\n )\n ],\n arrival_searches=[]\n )\n \n print(f\"Found {len(response.results)} results\")\n for result in response.results:\n print(f\"Search ID: {result.search_id}\")\n \n except TravelTimeApiError as e:\n print(e)\n finally:\n await client.close() # Manually close session\n\n# Option 2: Async context manager (automatic session cleanup)\nasync def main_with_context():\n async with AsyncClient(app_id=\"YOUR_APP_ID\", api_key=\"YOUR_API_KEY\") as client:\n try:\n response = await client.time_filter(\n locations=locations,\n departure_searches=[\n TimeFilterDepartureSearch(\n id=\"London center\",\n departure_location_id=\"London center\",\n arrival_location_ids=[\"Hyde Park\", \"ZSL London Zoo\"],\n departure_time=datetime.now(),\n transportation=PublicTransport(),\n travel_time=1800\n )\n ],\n arrival_searches=[]\n )\n \n print(f\"Found {len(response.results)} results\")\n for result in response.results:\n print(f\"Search ID: {result.search_id}\")\n \n except TravelTimeApiError as e:\n print(e)\n # Session automatically closed when exiting 'async with' block\n\n# Run either version\nasyncio.run(main())\n# or\nasyncio.run(main_with_context())\n```\n\n## Core Methods\n\nThe SDK provides both synchronous (`Client`) and asynchronous (`AsyncClient`) versions of all methods:\n\n### Time Matrix & Filtering\n\n- [`time_filter()`](https://docs.traveltime.com/api/reference/travel-time-distance-matrix) - Calculate travel times between locations\n- [`time_filter_fast()`](https://docs.traveltime.com/api/reference/time-filter-fast) - High-performance version for large datasets\n- [`time_filter_proto()`](https://docs.traveltime.com/api/start/travel-time-distance-matrix-proto) - Ultra-fast protocol buffer implementation (requires `pip install 'traveltimepy[proto]'`)\n\n### Isochrone Generation\n\n- [`time_map()`](https://docs.traveltime.com/api/reference/isochrones) - Generate travel time polygons\n- [`time_map_geojson()`](https://docs.traveltime.com/api/reference/isochrones) - GeoJSON format isochrones\n- [`time_map_wkt()`](https://docs.traveltime.com/api/reference/isochrones) - WKT format isochrones\n- [`time_map_fast()`](https://docs.traveltime.com/api/reference/isochrones-fast) - High-performance isochrones\n- [`time_map_fast_geojson()`](https://docs.traveltime.com/api/reference/isochrones-fast) - Fast GeoJSON isochrones\n- [`time_map_fast_wkt()`](https://docs.traveltime.com/api/reference/isochrones-fast) - Fast WKT isochrones\n\n### Route Planning\n\n- [`routes()`](https://docs.traveltime.com/api/reference/routes) - Calculate detailed routes between locations\n\n### Geocoding\n\n- [`geocoding()`](https://docs.traveltime.com/api/reference/geocoding-search) - Convert addresses to coordinates\n- [`reverse_geocoding()`](https://docs.traveltime.com/api/reference/geocoding-reverse) - Convert coordinates to addresses\n\n### Specialized Analysis\n\n- [`h3()`](https://docs.traveltime.com/api/reference/h3) - H3 hexagon analysis\n- [`h3_fast()`](https://docs.traveltime.com/api/reference/h3-fast) - Fast H3 analysis\n- [`geohash()`](https://docs.traveltime.com/api/reference/geohash) - Geohash analysis\n- [`geohash_fast()`](https://docs.traveltime.com/api/reference/geohash-fast) - Fast geohash analysis\n- [`postcodes()`](https://docs.traveltime.com/api/reference/postcode-search) - UK postcode analysis\n- [`postcode_districts()`](https://docs.traveltime.com/api/reference/postcode-district-filter) - UK postcode district analysis\n- [`postcode_sectors()`](https://docs.traveltime.com/api/reference/postcode-sector-filter) - UK postcode sector analysis\n- [`distance_map()`](https://docs.traveltime.com/api/reference/distance-map) - Distance-based catchment areas\n\n### Utility Methods\n\n- [`map_info()`](https://docs.traveltime.com/api/reference/map-info) - Get supported countries and features\n- [`supported_locations()`](https://docs.traveltime.com/api/reference/supported-locations) - Check location support\n\n## Configuration\n\nThe SDK supports various configuration options:\n\n```python\nfrom traveltimepy import Client, AsyncClient\n\n# Synchronous client\nclient = Client(\n app_id=\"YOUR_APP_ID\",\n api_key=\"YOUR_API_KEY\",\n timeout=300, # Request timeout in seconds\n retry_attempts=3, # Number of retry attempts for 5xx errors\n max_rpm=60, # Maximum requests per minute\n)\n\n# Asynchronous client\nasync_client = AsyncClient(\n app_id=\"YOUR_APP_ID\",\n api_key=\"YOUR_API_KEY\",\n timeout=300,\n retry_attempts=3,\n max_rpm=60\n)\n```\n\n\n## Error Handling and Retries\n\nThe SDK automatically handles both rate limiting and server error retries:\n\n- **Rate limiting**: Automatically handled with exponential backoff\n- **Server errors (5xx)**: Automatically retried up to 3 times with immediate retry\n- **Client errors (4xx)**: Not retried (indicates invalid request)\n\n```python\n# Retries are built-in - no additional code needed\nclient = Client(app_id=\"YOUR_APP_ID\", api_key=\"YOUR_API_KEY\")\nresponse = client.time_filter(\n locations=locations,\n departure_searches=searches\n) # Automatically retries on 5xx errors\n```\n\n### Configuring Retries\n\nYou can configure the number of retry attempts:\n\n```python\n# Custom retry attempts\nclient = Client(\n app_id=\"YOUR_APP_ID\", \n api_key=\"YOUR_API_KEY\",\n retry_attempts=5 # Will retry up to 5 times on 5xx errors\n)\n\n# Disable retries completely\nclient = Client(\n app_id=\"YOUR_APP_ID\", \n api_key=\"YOUR_API_KEY\",\n retry_attempts=0 # No retries, fail immediately\n)\n```\n\n## Examples\n\nThe `examples/` directory contains practical examples.\nSee [examples/README.md](examples/README.md) for setup instructions and detailed descriptions.\n\n## Performance Tips\n\n- Use `*_fast()` methods for high-volume use cases\n- Use `time_filter_proto()` for maximum performance with large datasets (install with `pip install 'traveltimepy[proto]'`)\n- Use async methods for I/O-bound applications\n\n## Documentation\n\nFor comprehensive documentation, including detailed parameter references and advanced usage examples, visit:\n\n- [TravelTime API Documentation](https://docs.traveltime.com/api/overview/introduction)\n\n## Support\n\nIf you have questions or need help:\n\n- [Create an issue](https://github.com/traveltime-dev/traveltime-python-sdk/issues) on GitHub\n- Check the [API documentation](https://docs.traveltime.com/)\n- Contact [TravelTime support](https://traveltime.com/contact-us)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python Interface to Travel Time.",
"version": "4.2.0",
"project_urls": null,
"split_keywords": [
"traveltimepy",
" api",
" maps"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d890ddbfc0478b6633e3f511189ad89ab7d9b463fc15e8c88747fa2f9816ceec",
"md5": "840a42f32afc74d5ceff97534e39429e",
"sha256": "50e3de6e2372740870651de169ef3f22ff9d3f1e6e65ac43dc2b1708eba119bf"
},
"downloads": -1,
"filename": "traveltimepy-4.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "840a42f32afc74d5ceff97534e39429e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 103499,
"upload_time": "2025-08-01T10:46:10",
"upload_time_iso_8601": "2025-08-01T10:46:10.629708Z",
"url": "https://files.pythonhosted.org/packages/d8/90/ddbfc0478b6633e3f511189ad89ab7d9b463fc15e8c88747fa2f9816ceec/traveltimepy-4.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ad6fa118f85e277614afbd70b2f1ae0312eabeb84a7ecd1ec85403718f25aa03",
"md5": "fe31f4773d5d3b377a8d796aa90c246b",
"sha256": "f8230a018bf48e43bae787c5d4301ddfd9850148aaa3f2a76f6ac324a2ccf493"
},
"downloads": -1,
"filename": "traveltimepy-4.2.0.tar.gz",
"has_sig": false,
"md5_digest": "fe31f4773d5d3b377a8d796aa90c246b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 69454,
"upload_time": "2025-08-01T10:46:11",
"upload_time_iso_8601": "2025-08-01T10:46:11.911900Z",
"url": "https://files.pythonhosted.org/packages/ad/6f/a118f85e277614afbd70b2f1ae0312eabeb84a7ecd1ec85403718f25aa03/traveltimepy-4.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-01 10:46:11",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "traveltimepy"
}