vena-etl-python-interface
Python package for interacting with Vena's ETL APIs.
Installation
pip install vepi
Configuration
Create a configuration file (e.g., config.py) with your Vena API credentials:
HUB = 'eu1' # e.g., us1, us2, ca3
API_USER = 'your_api_user'
API_KEY = 'your_api_key'
TEMPLATE_ID = 'your_template_id'
DATA_SOURCE = 'your_erp_or_data_source'
MODEL_ID = 'your_model_id' # Optional, needed for exports
Usage
Basic Setup
from vepi import VenaETL
# Initialize the client
vena_etl = VenaETL(
hub=HUB,
api_user=API_USER,
api_key=API_KEY,
template_id=TEMPLATE_ID,
data_source=DATA_SOURCE
model_id=MODEL_ID,
)
Importing Data
Using DataFrame (start_with_data)
import pandas as pd
# Create a DataFrame with your data
data = {
'Value': ['1000', '2000'],
'Account': ['3910', '3910'],
'Entity': ['V001', 'V001'],
'Department': ['D10', 'D10'],
'Year': ['2020', '2020'],
'Period': ['1', '2'],
'Scenario': ['Actual', 'Actual'],
'Currency': ['Local', 'Local'],
'Measure': ['Value', 'Value']
}
df = pd.DataFrame(data)
# Import the data
vena_etl.start_with_data(df)
Using File (start_with_file)
You can upload data in three ways:
- From a CSV file:
# Upload from a CSV file
vena_etl.start_with_file("path/to/your/data.csv")
- From a DataFrame:
# Upload from a DataFrame
df = pd.DataFrame(data)
vena_etl.start_with_file(df)
- From a file-like object:
# Upload from a file-like object
with open("data.csv", "r") as f:
vena_etl.start_with_file(f)
Exporting Data
# Export data with custom page size
exported_data = vena_etl.export_data(page_size=10000)
print(f"Exported {len(exported_data)} records")
Getting Dimension Hierarchy
# Get dimension hierarchy
hierarchy = vena_etl.get_dimension_hierarchy()
print("Dimension hierarchy:")
print(hierarchy)
Job Management
Running a Job
The simplest way to run a job is using the run_job method:
# Run a job with a specific template ID
result = vena_etl.run_job(
template_id=JOB_TEMPLATE_ID, # Specify the template ID for the job
poll_interval=5, # How often to check job status (seconds)
timeout=3600 # Maximum time to wait (seconds)
)
# Check the result
print(f"Job status: {result.get('status')}")
print(f"Job ID: {result.get('id')}")
print(f"Model: {result.get('modelName')}")
Step-by-Step Job Management
For more control, you can manage jobs step by step:
# Create a new job with a specific template ID
job_id = vena_etl.create_job(template_id=JOB_TEMPLATE_ID)
print(f"Created job with ID: {job_id}")
# Get job status
status = vena_etl.get_job_status(job_id)
print(f"Current status: {status.get('status')}")
# Submit the job
submit_result = vena_etl.submit_job(job_id)
print(f"Submission result: {submit_result}")
# Wait for completion
final_status = vena_etl.wait_for_job_completion(job_id)
print(f"Final status: {final_status.get('status')}")
Canceling a Job
# Cancel a running job
cancel_result = vena_etl.cancel_job(job_id)
print(f"Cancel result: {cancel_result.get('status')}")
Error Handling
The package includes comprehensive error handling for:
- Invalid credentials
- Missing required fields
- API communication errors
- Data validation errors
- Job submission errors
- Job cancellation errors
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for vepi 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vepi-0.1.4.tar.gz | 11.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vepi-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.1 kB
Release files / vepi-0.1.4.tar.gz
| Download URL | vepi-0.1.4.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a8235eb871780d9f3e7683020eed06be90d9e9c588578a55d4d5418300240f2
|
|
BLAKE2b-256 checksum How to use checksums |
a2e251035b1989d7661182fa18bbf1887e06ccdf8da81840d7fcc328a7108532
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / vepi-0.1.4-py3-none-any.whl
| Download URL | vepi-0.1.4-py3-none-any.whl |
|---|---|
| Size | 10.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c67afbfdd85dfbdf71341314a7f6d1fec31ccbebd6bb6a57d925096c6d8dfbee
|
|
BLAKE2b-256 checksum How to use checksums |
ac995a3073ef7bd9530649f30d3d2f40176b20183a67051ee59af88b786d8309
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for vepi 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.