LARA Django Data - gRPC API
This directory contains the gRPC interface for the lara-django-data application, providing a high-performance API for managing data, experiments, evaluations, and machine learning workflows in the LARA database.
Overview
The gRPC API provides remote procedure call access to the LARA Django Data service with support for multiple programming languages through protocol buffer definitions. It also contains a high-level Python interface for easy integration with Python applications.
Package: lara-django-data-grpc
Python Requirement: 3.13.*
Project Structure
api/grpc/
├── go/ # Go gRPC client code
├── connect-es/ # Connect-ES client code
├── connectrpc-es/ # ConnectRPC ES implementations
├── grpc-web/ # gRPC-Web client code
├── gen/ # Generated code from protobuf definitions
├── dist/ # Distribution packages
├── pyproject.toml # Python project configuration
└── python/ # Python API module root
└── lara_django_data_grpc/
├── lara_django_data_data_model.py # Data model definitions
├── lara_django_data_interfaces.py # High-level interface
└── v1/
└── *_pb2.py # Generated protocol buffer code
## Installation
### Using uv (Recommended)
Install the `lara-django-data-grpc` package with uv for faster dependency resolution:
```bash
cd api/grpc
uv pip install .
Or with development dependencies:
uv pip install -e ".[dev]"
For development, install with editable mode and all dependency groups:
cd api/grpc
uv sync --all-groups
Using pip
Alternatively, install with pip:
pip install lara-django-data-grpc
Or from the local directory:
cd api/grpc
pip install .
Dependencies
- Runtime:
grpcio>=1.73.0 - Development:
grpcio-tools>=1.73.0pytest>=8,<9pytest-cov>=6,<7pytest-asyncio
Code Generation
Protocol buffer definitions are located in ../proto/lara_django_data_grpc/. To regenerate gRPC code from protobuf definitions, e.g. in case you changed the .proto file, use the Buf CLI:
cd api
buf generate
This will generate code for multiple targets as configured in buf.gen.yaml:
- Python
- Go
- JavaScript/TypeScript (Connect-ES, ConnectRPC, gRPC-Web)
Running Tests
The test suite is located in api/tests/ and includes tests for all major entities:
Using uv
# From the api/grpc directory
uv run pytest api/tests/
# With coverage
uv run pytest api/tests/ --cov
Using pytest directly
# From the api/grpc directory
pytest api/tests/
# With coverage
pytest api/tests/ --cov
Test Files
test_lara_django_data_Evaluation_grpc.py- Evaluation tests
Usage Examples
Python Client
import grpc
from lara_django_data_grpc import data_pb2, data_pb2_grpc
# Create a channel to the gRPC server
channel = grpc.insecure_channel('localhost:50051')
# Create a stub (client)
stub = data_pb2_grpc.DataServiceStub(channel)
# Make a request
response = stub.GetData(data_pb2.GetDataRequest(id=1))
print(response)
# Don't forget to close the channel when done
channel.close()
For more comprehensive examples, see the demo clients in ../../demo_clients/.
Development
Building
The project uses the uv_build backend for building:
# Using uv (recommended)
uv build
# Or using Python build module
python -m build
Working with uv
This project is configured for uv with the following features:
- Build Backend:
uv_build>=0.9.0,<=0.10.0 - Module Root:
python/(all Python gRPC code should be placed here) - Dependency Groups: Development dependencies are organized in groups
Common uv commands:
# Sync dependencies
uv sync
# Sync with development dependencies
uv sync --all-groups
# Add a new dependency
uv add package-name
# Add a development dependency
uv add --dev package-name
# Run a command in the uv environment
uv run python script.py
# Build the package
uv build
Module Root
The Python module root is configured at python/, meaning all Python gRPC code should be placed in that directory.
Documentation
- Project Documentation: https://larasuite.gitlab.io/lara-django-data/
- Source Code: https://gitlab.com/larasuite/lara-django-data
- Issue Tracker: https://gitlab.com/larasuite/lara-django-data/-/issues
- Protocol Buffer Definitions: ../proto/lara_django_data_grpc/
Protocol Buffer Linting
The project uses Buf for linting and breaking change detection. Configuration is in ../buf.yaml:
- Follows DEFAULT lint rules with specific exceptions
- Breaking change detection enabled
- Ignores certain Google type definitions
Contributing
Contributions are welcome! Please see the CONTRIBUTING.md file in the project root for guidelines.
When modifying protobuf definitions:
- Edit
.protofiles in../proto/lara_django_data_grpc/ - Run
buf generateto regenerate code - Update tests as needed
- Run the test suite to ensure compatibility
License
See the LICENSE file in the project root.
Metadata
Release files for lara-django-data-grpc 0.2.113
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 | Actions |
|---|---|---|---|---|
| lara_django_data_grpc-0.2.113.tar.gz | 30.6 kB | Without provenance | Details for lara_django_data_grpc-0.2.113.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lara_django_data_grpc-0.2.113-py3-none-any.whl | Python 3 | none | any | Details for lara_django_data_grpc-0.2.113-py3-none-any.whl |
Total release size: 63.3 kB
Release files / lara_django_data_grpc-0.2.113.tar.gz
| Download URL | lara_django_data_grpc-0.2.113.tar.gz |
|---|---|
| Size | 30.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb2a99371873ee3f1accb77100f254edf6dccbed57bc7cb09696ac75a9d520a4
|
|
BLAKE2b-256 checksum How to use checksums |
2b720d090aa4673a11579d5954eb3e1ea558923991c7700b8bfb1459d9686ff7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / lara_django_data_grpc-0.2.113-py3-none-any.whl
| Download URL | lara_django_data_grpc-0.2.113-py3-none-any.whl |
|---|---|
| Size | 32.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd278a48647a57eaa6d9f8b4c2033452e259fea731f06ab8dd14aaafc8f140a5
|
|
BLAKE2b-256 checksum How to use checksums |
2bc5f14b950e0635124d37ca4affe217d6defcdcf06eb811bae3841e05ccf926
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Security for lara-django-data-grpc 0.2.113
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.