redis-featureform 3.0.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- redis_featureform-3.0.0rc1/PKG-INFO +129 -0
- redis_featureform-3.0.0rc1/README.md +78 -0
- redis_featureform-3.0.0rc1/pyproject.toml +220 -0
- redis_featureform-3.0.0rc1/src/featureform/__init__.py +257 -0
- redis_featureform-3.0.0rc1/src/featureform/_apply_wait.py +183 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/openapi/__init__.py +13 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/openapi/_internal.py +1396 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/openapi/github_com_redislabsdev_featureform_internal_rest_types.py +29 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/openapi/server.py +78 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/openapi/types.py +311 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/apply_pb2.py +58 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/apply_pb2.pyi +322 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/apply_pb2_grpc.py +147 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/apply_pb2_grpc.pyi +82 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/audit_pb2.py +47 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/audit_pb2.pyi +140 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/audit_pb2_grpc.py +97 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/audit_pb2_grpc.pyi +49 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/catalog_pb2.py +58 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/catalog_pb2.pyi +270 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/catalog_pb2_grpc.py +192 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/catalog_pb2_grpc.pyi +88 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/common_pb2.py +44 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/common_pb2.pyi +128 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/common_pb2_grpc.py +24 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/common_pb2_grpc.pyi +20 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/dataframe_pb2.py +67 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/dataframe_pb2.pyi +342 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/dataframe_pb2_grpc.py +97 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/dataframe_pb2_grpc.pyi +49 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/provider_pb2.py +117 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/provider_pb2.pyi +1183 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/provider_pb2_grpc.py +277 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/provider_pb2_grpc.pyi +106 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/rbac_pb2.py +157 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/rbac_pb2.pyi +1281 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/rbac_pb2_grpc.py +1072 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/rbac_pb2_grpc.pyi +260 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_pb2.py +108 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_pb2.pyi +1247 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_pb2_grpc.py +24 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_pb2_grpc.pyi +20 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_service_pb2.py +214 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_service_pb2.pyi +2280 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_service_pb2_grpc.py +1645 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/resource_service_pb2_grpc.pyi +373 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/secret_provider_pb2.py +83 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/secret_provider_pb2.pyi +587 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/secret_provider_pb2_grpc.py +277 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/secret_provider_pb2_grpc.pyi +106 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/serving_pb2.py +112 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/serving_pb2.pyi +783 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/serving_pb2_grpc.py +146 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/serving_pb2_grpc.pyi +76 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/version_pb2.py +41 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/version_pb2.pyi +72 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/version_pb2_grpc.py +102 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/version_pb2_grpc.pyi +64 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/workspace_pb2.py +65 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/workspace_pb2.pyi +296 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/workspace_pb2_grpc.py +322 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/featureform/v2/workspace_pb2_grpc.pyi +124 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/v1/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/v1/scheduler_pb2.py +155 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/v1/scheduler_pb2.pyi +1618 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/v1/scheduler_pb2_grpc.py +972 -0
- redis_featureform-3.0.0rc1/src/featureform/_generated/proto/scheduler/v1/scheduler_pb2_grpc.pyi +262 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/__init__.py +1 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/http.py +224 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/logging.py +299 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/telemetry/__init__.py +73 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/telemetry/base.py +126 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/telemetry/config.py +71 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/telemetry/noop.py +89 -0
- redis_featureform-3.0.0rc1/src/featureform/_internal/telemetry/otel.py +152 -0
- redis_featureform-3.0.0rc1/src/featureform/_version.py +39 -0
- redis_featureform-3.0.0rc1/src/featureform/auth/__init__.py +17 -0
- redis_featureform-3.0.0rc1/src/featureform/auth/token.py +346 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/__init__.py +5 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/admin_client.py +888 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/__init__.py +27 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/_common.py +23 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/_provider_config.py +427 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/apply.py +737 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/audit.py +58 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/auth.py +147 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/catalog.py +116 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/config.py +175 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/dataframe.py +182 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/graph.py +538 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/machine_credential.py +142 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/provider.py +518 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/rbac.py +445 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/scheduler.py +955 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/secret_provider.py +305 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/commands/workspace.py +167 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/errors.py +155 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/main.py +475 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/output/__init__.py +13 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/output/base.py +49 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/output/json_fmt.py +71 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/output/table.py +163 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/output/yaml_fmt.py +64 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/scheduler_client.py +1025 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/utils/__init__.py +5 -0
- redis_featureform-3.0.0rc1/src/featureform/cli/utils/context.py +250 -0
- redis_featureform-3.0.0rc1/src/featureform/client.py +4740 -0
- redis_featureform-3.0.0rc1/src/featureform/config.py +118 -0
- redis_featureform-3.0.0rc1/src/featureform/dataframe/__init__.py +10 -0
- redis_featureform-3.0.0rc1/src/featureform/dataframe/client.py +660 -0
- redis_featureform-3.0.0rc1/src/featureform/dataframe/result.py +309 -0
- redis_featureform-3.0.0rc1/src/featureform/errors.py +796 -0
- redis_featureform-3.0.0rc1/src/featureform/py.typed +0 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/__init__.py +112 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/base.py +185 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/dataset.py +224 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/entity.py +47 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/feature.py +368 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/label.py +245 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/provider.py +570 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/realtime_feature.py +593 -0
- redis_featureform-3.0.0rc1/src/featureform/resources/training.py +191 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/__init__.py +12 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/_decode.py +93 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/_metadata.py +99 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/_realtime.py +253 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/cache.py +190 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/client.py +769 -0
- redis_featureform-3.0.0rc1/src/featureform/serving/types.py +134 -0
- redis_featureform-3.0.0rc1/src/featureform/spark.py +151 -0
- redis_featureform-3.0.0rc1/src/featureform/transport/__init__.py +49 -0
- redis_featureform-3.0.0rc1/src/featureform/transport/base.py +42 -0
- redis_featureform-3.0.0rc1/src/featureform/transport/grpc.py +763 -0
- redis_featureform-3.0.0rc1/src/featureform/transport/rest.py +223 -0
- redis_featureform-3.0.0rc1/src/featureform/types/__init__.py +124 -0
- redis_featureform-3.0.0rc1/src/featureform/types/catalog.py +48 -0
- redis_featureform-3.0.0rc1/src/featureform/types/entity.py +39 -0
- redis_featureform-3.0.0rc1/src/featureform/types/provider.py +496 -0
- redis_featureform-3.0.0rc1/src/featureform/types/resource.py +387 -0
- redis_featureform-3.0.0rc1/src/featureform/types/secret.py +104 -0
- redis_featureform-3.0.0rc1/src/featureform/types/secret_provider.py +126 -0
- redis_featureform-3.0.0rc1/src/featureform/types/workspace.py +54 -0
- redis_featureform-3.0.0rc1/src/featureform/version.py +228 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: redis-featureform
|
|
3
|
+
Version: 3.0.0rc1
|
|
4
|
+
Summary: Enterprise Python client for Featureform v2 API
|
|
5
|
+
Author: Simba Khadder
|
|
6
|
+
Author-email: Simba Khadder <simba.khadder@redis.com>
|
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Typing :: Typed
|
|
15
|
+
Requires-Dist: cloudpickle>=3.0.0
|
|
16
|
+
Requires-Dist: httpx>=0.27.0
|
|
17
|
+
Requires-Dist: packaging>=24.0
|
|
18
|
+
Requires-Dist: pydantic>=2.0.0
|
|
19
|
+
Requires-Dist: structlog>=24.0.0
|
|
20
|
+
Requires-Dist: typer>=0.12.0
|
|
21
|
+
Requires-Dist: rich>=13.0.0
|
|
22
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
23
|
+
Requires-Dist: grpcio>=1.60.0
|
|
24
|
+
Requires-Dist: grpcio-health-checking>=1.60.0
|
|
25
|
+
Requires-Dist: protobuf>=4.25.0
|
|
26
|
+
Requires-Dist: pyarrow>=17.0.0
|
|
27
|
+
Requires-Dist: pandas>=2.3.3
|
|
28
|
+
Requires-Dist: tomli>=2.0.0 ; python_full_version < '3.11'
|
|
29
|
+
Requires-Dist: pytest>=8.0.0 ; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest-cov>=4.1.0 ; extra == 'dev'
|
|
31
|
+
Requires-Dist: pytest-asyncio>=0.23.0 ; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest-httpx>=0.30.0 ; extra == 'dev'
|
|
33
|
+
Requires-Dist: psycopg[binary]>=3.2.0 ; extra == 'dev'
|
|
34
|
+
Requires-Dist: requests>=2.33.0 ; extra == 'dev'
|
|
35
|
+
Requires-Dist: redis>=5.0.0 ; extra == 'dev'
|
|
36
|
+
Requires-Dist: schemathesis>=4 ; extra == 'dev'
|
|
37
|
+
Requires-Dist: polars>=1.30.0 ; extra == 'dev'
|
|
38
|
+
Requires-Dist: schemathesis>=4 ; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.8.0 ; extra == 'dev'
|
|
40
|
+
Requires-Dist: mypy>=1.8.0 ; extra == 'dev'
|
|
41
|
+
Requires-Dist: pyright>=1.1.350 ; extra == 'dev'
|
|
42
|
+
Requires-Dist: datamodel-code-generator>=0.55.0 ; extra == 'dev'
|
|
43
|
+
Requires-Dist: opentelemetry-api>=1.20.0 ; extra == 'otel'
|
|
44
|
+
Requires-Dist: opentelemetry-sdk>=1.20.0 ; extra == 'otel'
|
|
45
|
+
Requires-Dist: pyspark>=3.5,<5 ; extra == 'pyspark'
|
|
46
|
+
Requires-Python: >=3.10
|
|
47
|
+
Provides-Extra: dev
|
|
48
|
+
Provides-Extra: otel
|
|
49
|
+
Provides-Extra: pyspark
|
|
50
|
+
Description-Content-Type: text/markdown
|
|
51
|
+
|
|
52
|
+
# Python Client
|
|
53
|
+
|
|
54
|
+
A modern Python client library built with best-in-class tooling.
|
|
55
|
+
|
|
56
|
+
## Features
|
|
57
|
+
|
|
58
|
+
- Built with [UV](https://docs.astral.sh/uv/) for fast, reliable dependency management
|
|
59
|
+
- Type-safe with [mypy](https://mypy-lang.org/)
|
|
60
|
+
- Linted and formatted with [Ruff](https://docs.astral.sh/ruff/)
|
|
61
|
+
- Tested with [pytest](https://docs.pytest.org/)
|
|
62
|
+
- Full type annotations (PEP 561 compatible)
|
|
63
|
+
|
|
64
|
+
## Development Setup
|
|
65
|
+
|
|
66
|
+
### Prerequisites
|
|
67
|
+
|
|
68
|
+
- Python 3.9 or higher
|
|
69
|
+
- [UV](https://docs.astral.sh/uv/) package manager
|
|
70
|
+
|
|
71
|
+
### Installation
|
|
72
|
+
|
|
73
|
+
Install the package with development dependencies:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
make dev-install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Or using UV directly:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
uv sync --all-extras
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Development
|
|
86
|
+
|
|
87
|
+
### Running Tests
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
make test
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Linting
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
make lint
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Formatting
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
make format
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Type Checking
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
make type-check
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Building
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
make build
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Project Structure
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
python-client/
|
|
121
|
+
├── src/
|
|
122
|
+
│ └── python_client/ # Main package
|
|
123
|
+
│ ├── __init__.py
|
|
124
|
+
│ └── py.typed # PEP 561 marker
|
|
125
|
+
├── tests/ # Test suite
|
|
126
|
+
├── pyproject.toml # Project configuration
|
|
127
|
+
├── Makefile # Development commands
|
|
128
|
+
└── README.md # This file
|
|
129
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Python Client
|
|
2
|
+
|
|
3
|
+
A modern Python client library built with best-in-class tooling.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Built with [UV](https://docs.astral.sh/uv/) for fast, reliable dependency management
|
|
8
|
+
- Type-safe with [mypy](https://mypy-lang.org/)
|
|
9
|
+
- Linted and formatted with [Ruff](https://docs.astral.sh/ruff/)
|
|
10
|
+
- Tested with [pytest](https://docs.pytest.org/)
|
|
11
|
+
- Full type annotations (PEP 561 compatible)
|
|
12
|
+
|
|
13
|
+
## Development Setup
|
|
14
|
+
|
|
15
|
+
### Prerequisites
|
|
16
|
+
|
|
17
|
+
- Python 3.9 or higher
|
|
18
|
+
- [UV](https://docs.astral.sh/uv/) package manager
|
|
19
|
+
|
|
20
|
+
### Installation
|
|
21
|
+
|
|
22
|
+
Install the package with development dependencies:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
make dev-install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Or using UV directly:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
uv sync --all-extras
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Development
|
|
35
|
+
|
|
36
|
+
### Running Tests
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
make test
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Linting
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
make lint
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Formatting
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
make format
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Type Checking
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
make type-check
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Building
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
make build
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Project Structure
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
python-client/
|
|
70
|
+
├── src/
|
|
71
|
+
│ └── python_client/ # Main package
|
|
72
|
+
│ ├── __init__.py
|
|
73
|
+
│ └── py.typed # PEP 561 marker
|
|
74
|
+
├── tests/ # Test suite
|
|
75
|
+
├── pyproject.toml # Project configuration
|
|
76
|
+
├── Makefile # Development commands
|
|
77
|
+
└── README.md # This file
|
|
78
|
+
```
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "redis-featureform"
|
|
3
|
+
version = "3.0.0rc1"
|
|
4
|
+
description = "Enterprise Python client for Featureform v2 API"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
authors = [
|
|
7
|
+
{ name = "Simba Khadder", email = "simba.khadder@redis.com" }
|
|
8
|
+
]
|
|
9
|
+
requires-python = ">=3.10"
|
|
10
|
+
dependencies = [
|
|
11
|
+
"cloudpickle>=3.0.0",
|
|
12
|
+
"httpx>=0.27.0",
|
|
13
|
+
"packaging>=24.0",
|
|
14
|
+
"pydantic>=2.0.0",
|
|
15
|
+
"structlog>=24.0.0",
|
|
16
|
+
"typer>=0.12.0",
|
|
17
|
+
"rich>=13.0.0",
|
|
18
|
+
"pyyaml>=6.0.0",
|
|
19
|
+
"grpcio>=1.60.0",
|
|
20
|
+
"grpcio-health-checking>=1.60.0",
|
|
21
|
+
"protobuf>=4.25.0",
|
|
22
|
+
"pyarrow>=17.0.0",
|
|
23
|
+
"pandas>=2.3.3",
|
|
24
|
+
"tomli>=2.0.0; python_version < '3.11'",
|
|
25
|
+
]
|
|
26
|
+
classifiers = [
|
|
27
|
+
"Development Status :: 3 - Alpha",
|
|
28
|
+
"Intended Audience :: Developers",
|
|
29
|
+
"Programming Language :: Python :: 3",
|
|
30
|
+
"Programming Language :: Python :: 3.10",
|
|
31
|
+
"Programming Language :: Python :: 3.11",
|
|
32
|
+
"Programming Language :: Python :: 3.12",
|
|
33
|
+
"Programming Language :: Python :: 3.13",
|
|
34
|
+
"Typing :: Typed",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
dev = [
|
|
39
|
+
"pytest>=8.0.0",
|
|
40
|
+
"pytest-cov>=4.1.0",
|
|
41
|
+
"pytest-asyncio>=0.23.0",
|
|
42
|
+
"pytest-httpx>=0.30.0",
|
|
43
|
+
"psycopg[binary]>=3.2.0",
|
|
44
|
+
"requests>=2.33.0",
|
|
45
|
+
"redis>=5.0.0",
|
|
46
|
+
"schemathesis>=4",
|
|
47
|
+
"polars>=1.30.0",
|
|
48
|
+
"schemathesis>=4",
|
|
49
|
+
"ruff>=0.8.0",
|
|
50
|
+
"mypy>=1.8.0",
|
|
51
|
+
"pyright>=1.1.350",
|
|
52
|
+
"datamodel-code-generator>=0.55.0",
|
|
53
|
+
]
|
|
54
|
+
otel = [
|
|
55
|
+
"opentelemetry-api>=1.20.0",
|
|
56
|
+
"opentelemetry-sdk>=1.20.0",
|
|
57
|
+
]
|
|
58
|
+
pyspark = [
|
|
59
|
+
"pyspark>=3.5,<5",
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
[project.scripts]
|
|
63
|
+
ff = "featureform.cli.main:app"
|
|
64
|
+
|
|
65
|
+
[build-system]
|
|
66
|
+
requires = ["uv_build>=0.9.6,<0.10.0"]
|
|
67
|
+
build-backend = "uv_build"
|
|
68
|
+
|
|
69
|
+
[tool.uv.build-backend]
|
|
70
|
+
module-name = "featureform"
|
|
71
|
+
|
|
72
|
+
[dependency-groups]
|
|
73
|
+
dev = [
|
|
74
|
+
"pytest>=8.0.0",
|
|
75
|
+
"pytest-cov>=4.1.0",
|
|
76
|
+
"pytest-asyncio>=0.23.0",
|
|
77
|
+
"pytest-httpx>=0.30.0",
|
|
78
|
+
"psycopg[binary]>=3.2.0",
|
|
79
|
+
"requests>=2.33.0",
|
|
80
|
+
"redis>=5.0.0",
|
|
81
|
+
"schemathesis>=4",
|
|
82
|
+
"polars>=1.30.0",
|
|
83
|
+
"schemathesis>=4",
|
|
84
|
+
"ruff>=0.8.0",
|
|
85
|
+
"mypy>=1.8.0",
|
|
86
|
+
"pyright>=1.1.350",
|
|
87
|
+
"grpcio-tools>=1.60.0",
|
|
88
|
+
"types-pyyaml>=6.0.12.20250915",
|
|
89
|
+
"types-protobuf>=6.32.1.20251210",
|
|
90
|
+
"grpc-stubs>=1.53.0.6",
|
|
91
|
+
"opentelemetry-api>=1.20.0",
|
|
92
|
+
"opentelemetry-sdk>=1.20.0",
|
|
93
|
+
"boto3>=1.42.35",
|
|
94
|
+
"pyiceberg[s3fs]>=0.8.0",
|
|
95
|
+
"pyspark>=3.5,<5",
|
|
96
|
+
"datamodel-code-generator>=0.55.0",
|
|
97
|
+
"mypy-protobuf>=5.0.0",
|
|
98
|
+
]
|
|
99
|
+
|
|
100
|
+
[tool.ruff]
|
|
101
|
+
line-length = 100
|
|
102
|
+
target-version = "py310"
|
|
103
|
+
exclude = [
|
|
104
|
+
"src/featureform/_generated",
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
[tool.ruff.lint]
|
|
108
|
+
select = [
|
|
109
|
+
"E", # pycodestyle errors
|
|
110
|
+
"W", # pycodestyle warnings
|
|
111
|
+
"F", # pyflakes
|
|
112
|
+
"I", # isort
|
|
113
|
+
"B", # flake8-bugbear
|
|
114
|
+
"C4", # flake8-comprehensions
|
|
115
|
+
"UP", # pyupgrade
|
|
116
|
+
"ARG", # flake8-unused-arguments
|
|
117
|
+
"SIM", # flake8-simplify
|
|
118
|
+
]
|
|
119
|
+
ignore = [
|
|
120
|
+
"E501", # line too long (handled by formatter)
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
[tool.ruff.format]
|
|
124
|
+
quote-style = "double"
|
|
125
|
+
indent-style = "space"
|
|
126
|
+
|
|
127
|
+
[tool.mypy]
|
|
128
|
+
python_version = "3.10"
|
|
129
|
+
warn_return_any = true
|
|
130
|
+
warn_unused_configs = true
|
|
131
|
+
disallow_untyped_defs = true
|
|
132
|
+
disallow_incomplete_defs = true
|
|
133
|
+
check_untyped_defs = true
|
|
134
|
+
no_implicit_optional = true
|
|
135
|
+
warn_redundant_casts = true
|
|
136
|
+
warn_unused_ignores = true
|
|
137
|
+
warn_no_return = true
|
|
138
|
+
strict_equality = true
|
|
139
|
+
strict = true
|
|
140
|
+
exclude = [
|
|
141
|
+
"^src/featureform/_generated/",
|
|
142
|
+
]
|
|
143
|
+
|
|
144
|
+
[[tool.mypy.overrides]]
|
|
145
|
+
module = "featureform._generated.*"
|
|
146
|
+
ignore_errors = true
|
|
147
|
+
|
|
148
|
+
[[tool.mypy.overrides]]
|
|
149
|
+
module = "featureform.transport.grpc"
|
|
150
|
+
disallow_untyped_calls = false
|
|
151
|
+
|
|
152
|
+
[[tool.mypy.overrides]]
|
|
153
|
+
module = ["cloudpickle", "cloudpickle.*"]
|
|
154
|
+
ignore_missing_imports = true
|
|
155
|
+
|
|
156
|
+
[[tool.mypy.overrides]]
|
|
157
|
+
module = "featureform.dataframe.*"
|
|
158
|
+
ignore_errors = true
|
|
159
|
+
|
|
160
|
+
[[tool.mypy.overrides]]
|
|
161
|
+
module = "featureform.cli.commands.dataframe"
|
|
162
|
+
ignore_errors = true
|
|
163
|
+
|
|
164
|
+
[tool.pyright]
|
|
165
|
+
pythonVersion = "3.10"
|
|
166
|
+
typeCheckingMode = "strict"
|
|
167
|
+
reportMissingImports = true
|
|
168
|
+
reportMissingTypeStubs = false
|
|
169
|
+
reportUnknownArgumentType = false
|
|
170
|
+
reportUnknownVariableType = false
|
|
171
|
+
exclude = [
|
|
172
|
+
"src/featureform/_generated/**",
|
|
173
|
+
]
|
|
174
|
+
# OTel SDK has incomplete type stubs
|
|
175
|
+
extraPaths = []
|
|
176
|
+
ignore = [
|
|
177
|
+
"tests/unit/telemetry/test_otel.py",
|
|
178
|
+
# PyArrow has incomplete type stubs - ignore dataframe module
|
|
179
|
+
"src/featureform/dataframe/**",
|
|
180
|
+
"src/featureform/cli/commands/dataframe.py",
|
|
181
|
+
]
|
|
182
|
+
|
|
183
|
+
[tool.pytest.ini_options]
|
|
184
|
+
testpaths = ["tests"]
|
|
185
|
+
python_files = ["test_*.py"]
|
|
186
|
+
python_classes = ["Test*"]
|
|
187
|
+
python_functions = ["test_*"]
|
|
188
|
+
markers = [
|
|
189
|
+
"auth_required: test requires an auth-enabled stack and identity provider",
|
|
190
|
+
"grpc_only: test requires the gRPC server (for example Arrow Flight / dataframe queries)",
|
|
191
|
+
"multi_node: test requires the dedicated two-node auth-enabled stack",
|
|
192
|
+
"rest_only: test requires the REST server",
|
|
193
|
+
]
|
|
194
|
+
addopts = [
|
|
195
|
+
"-v",
|
|
196
|
+
"--strict-markers",
|
|
197
|
+
"--cov=featureform",
|
|
198
|
+
"--cov-report=term-missing",
|
|
199
|
+
"--cov-report=html",
|
|
200
|
+
]
|
|
201
|
+
[tool.coverage.run]
|
|
202
|
+
source = ["src"]
|
|
203
|
+
parallel = true
|
|
204
|
+
omit = [
|
|
205
|
+
"*/tests/*",
|
|
206
|
+
"*/__pycache__/*",
|
|
207
|
+
"src/featureform/_generated/*",
|
|
208
|
+
"src/featureform/_generated/**/*",
|
|
209
|
+
]
|
|
210
|
+
|
|
211
|
+
[tool.coverage.report]
|
|
212
|
+
exclude_lines = [
|
|
213
|
+
"pragma: no cover",
|
|
214
|
+
"def __repr__",
|
|
215
|
+
"raise AssertionError",
|
|
216
|
+
"raise NotImplementedError",
|
|
217
|
+
"if __name__ == .__main__.:",
|
|
218
|
+
"if TYPE_CHECKING:",
|
|
219
|
+
"@abstractmethod",
|
|
220
|
+
]
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"""Featureform Python client library.
|
|
2
|
+
|
|
3
|
+
Enterprise-grade Python client for Featureform v2 API.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from featureform._apply_wait import ApplyWaitError, WaitTarget
|
|
7
|
+
from featureform._internal.logging import (
|
|
8
|
+
LogLevel,
|
|
9
|
+
configure_logging,
|
|
10
|
+
current_request_id,
|
|
11
|
+
get_logger,
|
|
12
|
+
request_id_context,
|
|
13
|
+
temporary_log_level,
|
|
14
|
+
)
|
|
15
|
+
from featureform._internal.telemetry import TelemetryConfig
|
|
16
|
+
from featureform._version import resolve_version
|
|
17
|
+
from featureform.client import (
|
|
18
|
+
ApplyResult,
|
|
19
|
+
ApplyWaitResult,
|
|
20
|
+
Client,
|
|
21
|
+
GraphClientBase,
|
|
22
|
+
GRPCGraphClient,
|
|
23
|
+
PingResult,
|
|
24
|
+
ProviderClient,
|
|
25
|
+
ResourceChange,
|
|
26
|
+
RESTGraphClient,
|
|
27
|
+
SecretProviderClient,
|
|
28
|
+
WorkspaceClient,
|
|
29
|
+
)
|
|
30
|
+
from featureform.config import Config
|
|
31
|
+
from featureform.errors import (
|
|
32
|
+
AlreadyExistsError,
|
|
33
|
+
ConnectionError,
|
|
34
|
+
DataframeFallbackError,
|
|
35
|
+
DataframePlanResolutionError,
|
|
36
|
+
FeatureformError,
|
|
37
|
+
FlightFallbackUnavailableError,
|
|
38
|
+
InternalError,
|
|
39
|
+
InvalidArgumentError,
|
|
40
|
+
NotFoundError,
|
|
41
|
+
SparkExecutionError,
|
|
42
|
+
TimeoutError,
|
|
43
|
+
ValidationError,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
# New DSL resource classes
|
|
47
|
+
from featureform.resources import (
|
|
48
|
+
AggregateFeature,
|
|
49
|
+
AttributeFeature,
|
|
50
|
+
Dataset,
|
|
51
|
+
EnvSecretProvider,
|
|
52
|
+
Feature,
|
|
53
|
+
FeatureBuilder,
|
|
54
|
+
FeatureInput,
|
|
55
|
+
FeatureResource,
|
|
56
|
+
FeatureView,
|
|
57
|
+
FunctionNormalizerDetails,
|
|
58
|
+
IcebergPrimaryDataset,
|
|
59
|
+
IcebergProvider,
|
|
60
|
+
K8sSecretProvider,
|
|
61
|
+
Label,
|
|
62
|
+
LabelBuilder,
|
|
63
|
+
LabelResource,
|
|
64
|
+
PostgresPrimaryDataset,
|
|
65
|
+
PostgresProvider,
|
|
66
|
+
PostgresTransformedDataset,
|
|
67
|
+
PrimaryDataset,
|
|
68
|
+
RealtimeFeature,
|
|
69
|
+
RealtimeInput,
|
|
70
|
+
RedisClusterProvider,
|
|
71
|
+
RedisProvider,
|
|
72
|
+
Resource,
|
|
73
|
+
ResourceRegistry,
|
|
74
|
+
S3Provider,
|
|
75
|
+
Secret,
|
|
76
|
+
SecretProviderBase,
|
|
77
|
+
SerializerDetails,
|
|
78
|
+
SparkIcebergTransformedDataset,
|
|
79
|
+
SparkProvider,
|
|
80
|
+
TrainingSet,
|
|
81
|
+
TransformedDataset,
|
|
82
|
+
VaultSecretProvider,
|
|
83
|
+
)
|
|
84
|
+
from featureform.resources import Provider as ProviderBase
|
|
85
|
+
from featureform.resources.entity import Entity
|
|
86
|
+
from featureform.spark import DataframeExecutionInfo, SparkOptions, get_execution_info
|
|
87
|
+
from featureform.types import (
|
|
88
|
+
CreateWorkspaceRequest,
|
|
89
|
+
DynamoDBConfig,
|
|
90
|
+
EnvSecretConfig,
|
|
91
|
+
KafkaConfig,
|
|
92
|
+
KubernetesSecretConfig,
|
|
93
|
+
PostgresConfig,
|
|
94
|
+
Provider,
|
|
95
|
+
ProviderConfig,
|
|
96
|
+
ProviderType,
|
|
97
|
+
RedisConfig,
|
|
98
|
+
RegisterProviderRequest,
|
|
99
|
+
RegisterSecretProviderRequest,
|
|
100
|
+
S3Config,
|
|
101
|
+
SecretProvider,
|
|
102
|
+
SecretProviderConfig,
|
|
103
|
+
SecretProviderType,
|
|
104
|
+
SnowflakeConfig,
|
|
105
|
+
SparkProviderConfig,
|
|
106
|
+
UpdateProviderRequest,
|
|
107
|
+
UpdateSecretProviderRequest,
|
|
108
|
+
UpdateWorkspaceRequest,
|
|
109
|
+
VaultSecretConfig,
|
|
110
|
+
Workspace,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
# Type helpers from types.resource
|
|
114
|
+
from featureform.types.resource import (
|
|
115
|
+
AggregateFunction,
|
|
116
|
+
FeatureLag,
|
|
117
|
+
IcebergConfig,
|
|
118
|
+
IcebergTableLocation,
|
|
119
|
+
MaterializationEngine,
|
|
120
|
+
PostgresDatasetConfig,
|
|
121
|
+
ScalarType,
|
|
122
|
+
SparkConfig,
|
|
123
|
+
TableLocation,
|
|
124
|
+
TrainingSetType,
|
|
125
|
+
ValueType,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
__version__ = resolve_version()
|
|
129
|
+
|
|
130
|
+
__all__ = [
|
|
131
|
+
# Version
|
|
132
|
+
"__version__",
|
|
133
|
+
# Client
|
|
134
|
+
"ApplyResult",
|
|
135
|
+
"ApplyWaitError",
|
|
136
|
+
"ApplyWaitResult",
|
|
137
|
+
"Client",
|
|
138
|
+
"GRPCGraphClient",
|
|
139
|
+
"GraphClientBase",
|
|
140
|
+
"PingResult",
|
|
141
|
+
"ProviderClient",
|
|
142
|
+
"RESTGraphClient",
|
|
143
|
+
"ResourceChange",
|
|
144
|
+
"SecretProviderClient",
|
|
145
|
+
"WaitTarget",
|
|
146
|
+
"WorkspaceClient",
|
|
147
|
+
# Config
|
|
148
|
+
"Config",
|
|
149
|
+
# Logging
|
|
150
|
+
"LogLevel",
|
|
151
|
+
"configure_logging",
|
|
152
|
+
"current_request_id",
|
|
153
|
+
"get_logger",
|
|
154
|
+
"request_id_context",
|
|
155
|
+
"temporary_log_level",
|
|
156
|
+
# Telemetry
|
|
157
|
+
"TelemetryConfig",
|
|
158
|
+
# Errors
|
|
159
|
+
"AlreadyExistsError",
|
|
160
|
+
"ConnectionError",
|
|
161
|
+
"DataframeFallbackError",
|
|
162
|
+
"DataframePlanResolutionError",
|
|
163
|
+
"FeatureformError",
|
|
164
|
+
"FlightFallbackUnavailableError",
|
|
165
|
+
"InternalError",
|
|
166
|
+
"InvalidArgumentError",
|
|
167
|
+
"NotFoundError",
|
|
168
|
+
"SparkExecutionError",
|
|
169
|
+
"TimeoutError",
|
|
170
|
+
"ValidationError",
|
|
171
|
+
# New DSL - Base
|
|
172
|
+
"Resource",
|
|
173
|
+
"ResourceRegistry",
|
|
174
|
+
# New DSL - Secrets
|
|
175
|
+
"Secret",
|
|
176
|
+
"SecretProviderBase",
|
|
177
|
+
"EnvSecretProvider",
|
|
178
|
+
"VaultSecretProvider",
|
|
179
|
+
"K8sSecretProvider",
|
|
180
|
+
# New DSL - Providers (NOT Resources - registered separately)
|
|
181
|
+
"IcebergProvider",
|
|
182
|
+
"PostgresProvider",
|
|
183
|
+
"ProviderBase",
|
|
184
|
+
"RedisProvider",
|
|
185
|
+
"RedisClusterProvider",
|
|
186
|
+
"S3Provider",
|
|
187
|
+
"SparkProvider",
|
|
188
|
+
"SparkOptions",
|
|
189
|
+
"get_execution_info",
|
|
190
|
+
# New DSL - Entity
|
|
191
|
+
"Entity",
|
|
192
|
+
# New DSL - Datasets
|
|
193
|
+
"Dataset",
|
|
194
|
+
"IcebergPrimaryDataset",
|
|
195
|
+
"PostgresPrimaryDataset",
|
|
196
|
+
"PostgresTransformedDataset",
|
|
197
|
+
"PrimaryDataset",
|
|
198
|
+
"SparkIcebergTransformedDataset",
|
|
199
|
+
"TransformedDataset",
|
|
200
|
+
# New DSL - Features (builder pattern)
|
|
201
|
+
"Feature",
|
|
202
|
+
"FeatureBuilder",
|
|
203
|
+
"FeatureResource",
|
|
204
|
+
"FeatureInput",
|
|
205
|
+
"AttributeFeature",
|
|
206
|
+
"AggregateFeature",
|
|
207
|
+
"FunctionNormalizerDetails",
|
|
208
|
+
# New DSL - Labels (builder pattern)
|
|
209
|
+
"Label",
|
|
210
|
+
"LabelBuilder",
|
|
211
|
+
"LabelResource",
|
|
212
|
+
"RealtimeFeature",
|
|
213
|
+
"RealtimeInput",
|
|
214
|
+
"SerializerDetails",
|
|
215
|
+
# New DSL - Training
|
|
216
|
+
"FeatureView",
|
|
217
|
+
"TrainingSet",
|
|
218
|
+
# Type helpers
|
|
219
|
+
"AggregateFunction",
|
|
220
|
+
"FeatureLag",
|
|
221
|
+
"IcebergConfig",
|
|
222
|
+
"IcebergTableLocation",
|
|
223
|
+
"MaterializationEngine",
|
|
224
|
+
"PostgresDatasetConfig",
|
|
225
|
+
"ScalarType",
|
|
226
|
+
"SparkConfig",
|
|
227
|
+
"DataframeExecutionInfo",
|
|
228
|
+
"TableLocation",
|
|
229
|
+
"TrainingSetType",
|
|
230
|
+
"ValueType",
|
|
231
|
+
# Workspace Types
|
|
232
|
+
"CreateWorkspaceRequest",
|
|
233
|
+
"UpdateWorkspaceRequest",
|
|
234
|
+
"Workspace",
|
|
235
|
+
# Provider Types (legacy)
|
|
236
|
+
"KafkaConfig",
|
|
237
|
+
"PostgresConfig",
|
|
238
|
+
"Provider",
|
|
239
|
+
"ProviderConfig",
|
|
240
|
+
"ProviderType",
|
|
241
|
+
"DynamoDBConfig",
|
|
242
|
+
"RedisConfig",
|
|
243
|
+
"RegisterProviderRequest",
|
|
244
|
+
"S3Config",
|
|
245
|
+
"SparkProviderConfig",
|
|
246
|
+
"SnowflakeConfig",
|
|
247
|
+
"UpdateProviderRequest",
|
|
248
|
+
# SecretProvider Types
|
|
249
|
+
"EnvSecretConfig",
|
|
250
|
+
"KubernetesSecretConfig",
|
|
251
|
+
"RegisterSecretProviderRequest",
|
|
252
|
+
"SecretProvider",
|
|
253
|
+
"SecretProviderConfig",
|
|
254
|
+
"SecretProviderType",
|
|
255
|
+
"UpdateSecretProviderRequest",
|
|
256
|
+
"VaultSecretConfig",
|
|
257
|
+
]
|