The feldera python client
Project description
Feldera Python SDK
Feldera Python is the Feldera SDK for Python developers.
Installation
pip install feldera
Installing from Github
pip install git+https://github.com/feldera/feldera#subdirectory=python
Similarly, to install from a specific branch:
$ pip install git+https://github.com/feldera/feldera@{BRANCH_NAME}#subdirectory=python
Replace {BRANCH_NAME} with the name of the branch you want to install from.
Installing from Local Directory
If you have cloned the Feldera repo, you can install the python SDK as follows:
# the Feldera Python SDK is present inside the python/ directory
pip install python/
Documentation
The Python SDK documentation is available at Feldera Python SDK Docs.
To build the html documentation run:
Ensure that you have sphinx installed. If not, install it using pip install sphinx.
Then run the following commands:
cd docs
sphinx-apidoc -o . ../feldera
make html
To clean the build, run make clean.
Testing
To run unit tests:
cd python && python3 -m pytest tests/
- This will detect and run all test files that match the pattern
test_*.pyor*_test.py. - By default, the tests expect a running Feldera instance at
http://localhost:8080. To override the default endpoint, set theFELDERA_HOSTenvironment variable.
To run tests from a specific file:
(cd python && python3 -m pytest ./tests/path-to-file.py)
Running Tests
The tests validate end-to-end correctness of SQL functionality. To run the tests use:
cd python
PYTHONPATH=`pwd` ./tests/run-all-tests.sh
Reducing Compilation Cycles
To reduce redundant compilation cycles during testing:
- Inherit from
SharedTestPipelineinstead ofunittest.TestCase. - Define DDLs (e.g.,
CREATE TABLE,CREATE VIEW) in the docstring of each test method.- All DDLs from all test functions in the class are combined and compiled into a single pipeline.
- If a table or view is already defined in one test, it can be used directly in others without redefinition.
- Ensure that all table and view names are unique within the class.
- Use
@enterprise_onlyon tests that require Enterprise features. Their DDLs will be skipped on OSS builds. - Use
self.set_runtime_config(...)to override the default pipeline config.- Reset it at the end using
self.reset_runtime_config().
- Reset it at the end using
- Access the shared pipeline via
self.pipeline.
Example
from tests.shared_test_pipeline import SharedTestPipeline
class TestAverage(SharedTestPipeline):
def test_average(self):
"""
CREATE TABLE students(id INT, name STRING);
CREATE MATERIALIZED VIEW v AS SELECT * FROM students;
"""
...
self.pipeline.start()
self.pipeline.input_pandas("students", df)
self.pipeline.wait_for_completion(True)
...
Linting and formatting
Use Ruff to run the lint checks that will be executed by the precommit hook when a PR is submitted:
ruff check python/
To reformat the code in the same way as the precommit hook:
ruff format
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 feldera-0.119.0.tar.gz.
File metadata
- Download URL: feldera-0.119.0.tar.gz
- Upload date:
- Size: 37.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41318d9d006af1040ddc46be1eed50061f8d1c1d9c12d3de52d1085213c16d55
|
|
| MD5 |
9528afbacbc2175e13e9d06990511191
|
|
| BLAKE2b-256 |
246b165dd77a73da0b4240176d6e95e6e6cf764ca3897108d973d0f68ea655c4
|
File details
Details for the file feldera-0.119.0-py3-none-any.whl.
File metadata
- Download URL: feldera-0.119.0-py3-none-any.whl
- Upload date:
- Size: 34.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b054e9bcd5fc98343ce95de4ffa41561eee7d54805b4e24756051d245523a3e2
|
|
| MD5 |
18ac582f77cede5afb36dd084a3029be
|
|
| BLAKE2b-256 |
10c00a45e9c40630d5a50a46b09634a40da4c08c4027ee5b52baf8bb92bf90ea
|