Python SDK for working with the Nova Post API
Project description
Nova_Post
A Python wrapper for the Nova Poshta API, providing an easy-to-use interface for interacting with Nova Poshta's logistics and tracking services.
Features
- Address management: create, update, delete addresses, and retrieve city, warehouse, and street directories.
- Counterparty management: manage sender/receiver contacts and related information.
- Internet document (waybill) management: create, update, delete, and track shipments.
- Common API methods: retrieve time intervals, cargo types, packaging options, and service types.
- Shipment tracking: track parcels via document numbers and phone numbers.
Installation
You can install Nova_Post via pip:
pip install nova-post
Usage
Initialization
from nova_post.api import NovaPostApi
api = NovaPostApi(api_key="your_api_key")
Note: You can obtain your API key from your business account at Nova Poshta Business Cabinet.
Address API
from nova_post.models.address import GetCitiesRequest
request_data = GetCitiesRequest(FindByString="Київ", Limit=5)
cities = api.address.get_cities(request_data)
print(cities)
Shipment Tracking
from nova_post.models.tracking import TrackingRequest
tracking_request = TrackingRequest(DocumentNumber="20400048799000")
tracking_info = api.tracking.track_parcel(tracking_request)
print(tracking_info)
Creating a Waybill (Internet Document)
from nova_post.models.internet_document import SaveInternetDocumentRequest
request = SaveInternetDocumentRequest(
PayerType="Sender",
PaymentMethod="Cash",
DateTime="2025-03-18",
CargoType="Cargo",
Weight=5.0,
ServiceType="WarehouseWarehouse",
SeatsAmount=1,
Description="Test Cargo",
Cost=500,
CitySender="sender_city_ref",
Sender="sender_ref",
SenderAddress="sender_address_ref",
ContactSender="contact_sender_ref",
SendersPhone="contact_sender_phone",
CityRecipient="recipient_city_ref",
Recipient="recipient_ref",
RecipientAddress="recipient_address_ref",
ContactRecipient="contact_recipient_ref",
RecipientsPhone="contact_recipient_phone"
)
document = api.internet_document.save_internet_document(request)
print(document)
Note: To determine
Sender,Recipient, and their parameters (ref,address, etc.), use thecounterpartyadapter.
Documentation: All adapters follow the official Nova Poshta API documentation: Nova Poshta API Documentation.
Issues: Report bugs or suggest features at GitHub Issues.
Error Handling
Nova_Post raises NovaPostApiError when the API returns an error or when a request fails due to timeouts or invalid responses. Example:
from nova_post.exceptions import NovaPostApiError
try:
tracking_info = api.tracking.track_parcel(tracking_request)
print(tracking_info)
except NovaPostApiError as e:
print(f"API error occurred: {e}")
Logging
Nova_Post includes logging for API requests and responses. By default, logs are sent to the standard output. You can configure logging in logger.py to redirect logs to a file or another logging service:
import logging
from nova_post.logger import logger
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler("nova_post.log")
logger.addHandler(file_handler)
Configuration
Nova_Post supports optional configurations such as request timeouts and retries. These settings can be adjusted within the NovaPostApi class:
api = NovaPostApi(api_key="your_api_key")
api.DEFAULT_TIMEOUT = 15 # Increase timeout to 15 seconds
Supported Python Versions
Nova_Post is compatible with Python 3.9 and above.
Running Tests
To run unit and integration tests, use:
pytest tests/
Environment Variables
The library uses an API key, which should be set as an environment variable:
export NOVA_POST_API_KEY="your_api_key"
Planned Performance Improvements
To enhance performance, caching mechanisms will be introduced to store frequently used API responses (e.g., city directories and service lists). This will reduce redundant API calls and improve response times. Additional optimizations include connection pooling for HTTP requests.
Contributing
- Fork the repository.
- Create a feature branch (
git checkout -b feature-name). - Commit your changes (
git commit -m 'Add new feature'). - Push to the branch (
git push origin feature-name). - Open a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nova_post-0.2.2.tar.gz.
File metadata
- Download URL: nova_post-0.2.2.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7e0865e106b6cbccd238d06609d16ba0bc84f0bea1fbaa98dbdda702499724a
|
|
| MD5 |
90028c1a03bca21e2b9abb25b034be1f
|
|
| BLAKE2b-256 |
097889596d2dca1067a59f58ad2d83d6f6dfdd959b0b068d4d96b4ad56873efd
|
File details
Details for the file nova_post-0.2.2-py3-none-any.whl.
File metadata
- Download URL: nova_post-0.2.2-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25eeae42cd4e5f53ec39ca7342fd7c5d732cfffdaa5af0b1a42c3fa040108821
|
|
| MD5 |
f074777d2b974df9f5fe217717f60c3f
|
|
| BLAKE2b-256 |
eff1be47238f73dc6b80b0bcb2c4f0366a9bd3d43e82c7ae4b70550ed03d649d
|