env-use 1.0.0__py3-none-any.whl
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.
- env_use-1.0.0.dist-info/METADATA +401 -0
- env_use-1.0.0.dist-info/RECORD +17 -0
- env_use-1.0.0.dist-info/WHEEL +4 -0
- env_use-1.0.0.dist-info/entry_points.txt +2 -0
- use_env/__init__.py +27 -0
- use_env/cli.py +276 -0
- use_env/config.py +116 -0
- use_env/loader.py +289 -0
- use_env/providers/__init__.py +314 -0
- use_env/providers/aws.py +197 -0
- use_env/providers/azure.py +151 -0
- use_env/providers/built_in.py +37 -0
- use_env/providers/env.py +162 -0
- use_env/providers/file.py +141 -0
- use_env/providers/gcp.py +141 -0
- use_env/providers/hashicorp.py +223 -0
- use_env/providers/onepassword.py +202 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: env-use
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Environment file processor with extensible secret providers
|
|
5
|
+
Author-email: Developer <dev@example.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: cli,configuration,devops,environment,secrets
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Requires-Dist: pydantic>=2.0
|
|
16
|
+
Requires-Dist: pyyaml>=6.0
|
|
17
|
+
Requires-Dist: rich>=13.0
|
|
18
|
+
Provides-Extra: 1password
|
|
19
|
+
Requires-Dist: aiohttp>=3.9.0; extra == '1password'
|
|
20
|
+
Provides-Extra: all
|
|
21
|
+
Requires-Dist: aiohttp>=3.9.0; extra == 'all'
|
|
22
|
+
Requires-Dist: azure-identity>=1.15.0; extra == 'all'
|
|
23
|
+
Requires-Dist: azure-keyvault-secrets>=4.8.0; extra == 'all'
|
|
24
|
+
Requires-Dist: boto3>=1.34.0; extra == 'all'
|
|
25
|
+
Requires-Dist: google-cloud-secret-manager>=2.20.0; extra == 'all'
|
|
26
|
+
Requires-Dist: hvac>=2.1.0; extra == 'all'
|
|
27
|
+
Provides-Extra: aws
|
|
28
|
+
Requires-Dist: boto3>=1.34.0; extra == 'aws'
|
|
29
|
+
Provides-Extra: azure
|
|
30
|
+
Requires-Dist: azure-identity>=1.15.0; extra == 'azure'
|
|
31
|
+
Requires-Dist: azure-keyvault-secrets>=4.8.0; extra == 'azure'
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: coverage[toml]>=7.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: mypy>=1.8; extra == 'dev'
|
|
35
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest-mock>=3.12; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: python-semantic-release>=9.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
40
|
+
Provides-Extra: gcp
|
|
41
|
+
Requires-Dist: google-cloud-secret-manager>=2.20.0; extra == 'gcp'
|
|
42
|
+
Provides-Extra: vault
|
|
43
|
+
Requires-Dist: hvac>=2.1.0; extra == 'vault'
|
|
44
|
+
Description-Content-Type: text/markdown
|
|
45
|
+
|
|
46
|
+
# use-env
|
|
47
|
+
|
|
48
|
+
[](https://github.com/SamCullin/use-env/actions/workflows/release.yml)
|
|
49
|
+
[](https://github.com/SamCullin/use-env/actions/workflows/ci.yml)
|
|
50
|
+
[](https://badge.fury.io/py/env-use)
|
|
51
|
+
[](https://github.com/SamCullin/use-env/releases)
|
|
52
|
+
[](https://opensource.org/licenses/MIT)
|
|
53
|
+
[](https://github.com/SamCullin/use-env/graphs/commit-activity)
|
|
54
|
+
[](https://pypi.org/project/env-use/)
|
|
55
|
+
[](https://github.com/SamCullin/use-env/issues)
|
|
56
|
+
[](https://makeapullrequest.com)
|
|
57
|
+
[](https://conventionalcommits.org)
|
|
58
|
+
[](https://github.com/semantic-release/semantic-release)
|
|
59
|
+
|
|
60
|
+
[use-env](/) > [use_env](/use_env/) > [providers](/use_env/providers/) > [tests](/tests/) > [.github](/.github/) > [docs](/docs/) > [examples](/examples/)
|
|
61
|
+
|
|
62
|
+
[](https://www.buymeacoffee.com/samcullin)
|
|
63
|
+
|
|
64
|
+
## Summary
|
|
65
|
+
**Environment file processor with extensible secret providers.**
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
`use-env` is a CLI tool for developers that processes environment files with secret references and resolves them from various providers (vault, environment variables, files, etc.).
|
|
69
|
+
|
|
70
|
+
## Features
|
|
71
|
+
|
|
72
|
+
- **Extensible Provider System**: Add custom providers for any secret source
|
|
73
|
+
- **Built-in Providers**: Support for environment variables and files (no external dependencies)
|
|
74
|
+
- **Optional Cloud Providers**: Azure, AWS, GCP, HashiCorp Vault, 1Password (install only what you need)
|
|
75
|
+
- **Configuration**: YAML-based configuration for custom providers
|
|
76
|
+
- **Type Safety**: Written in Python with full type annotations
|
|
77
|
+
- **Test Coverage**: Comprehensive test suite
|
|
78
|
+
|
|
79
|
+
## Installation
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Core package only (env and file providers)
|
|
83
|
+
pip install env-use
|
|
84
|
+
|
|
85
|
+
# Or using uv
|
|
86
|
+
uv pip install env-use
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Optional Cloud Providers
|
|
90
|
+
|
|
91
|
+
Install only the providers you need:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Azure Key Vault (Python SDK)
|
|
95
|
+
pip install env-use[azure]
|
|
96
|
+
|
|
97
|
+
# AWS Secrets Manager
|
|
98
|
+
pip install env-use[aws]
|
|
99
|
+
|
|
100
|
+
# Google Cloud Secret Manager
|
|
101
|
+
pip install env-use[gcp]
|
|
102
|
+
|
|
103
|
+
# HashiCorp Vault
|
|
104
|
+
pip install env-use[vault]
|
|
105
|
+
|
|
106
|
+
# 1Password Connect
|
|
107
|
+
pip install env-use[1password]
|
|
108
|
+
|
|
109
|
+
# All cloud providers
|
|
110
|
+
pip install env-use[all]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Quick Start
|
|
114
|
+
|
|
115
|
+
### Basic Usage
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Process .env.dev and output .env
|
|
119
|
+
use-env .env.dev
|
|
120
|
+
|
|
121
|
+
# Specify output file
|
|
122
|
+
use-env .env.prod -o .env.production
|
|
123
|
+
|
|
124
|
+
# List available providers
|
|
125
|
+
use-env --list-providers
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Environment File Example
|
|
129
|
+
|
|
130
|
+
Create a `.env.dev` file:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Regular values
|
|
134
|
+
DATABASE_HOST=localhost
|
|
135
|
+
DATABASE_PORT=5432
|
|
136
|
+
|
|
137
|
+
# Environment variable reference
|
|
138
|
+
API_KEY=${env:MY_API_KEY}
|
|
139
|
+
|
|
140
|
+
# File-based secret (Docker secrets, etc.)
|
|
141
|
+
DB_PASSWORD=${file:/run/secrets/db_password}
|
|
142
|
+
|
|
143
|
+
# Azure Key Vault (requires env-use[azure])
|
|
144
|
+
# Format: ${azure-keyvault:<vault_name>/<secret_name>}
|
|
145
|
+
SECRET_KEY=${azure-keyvault:my-keyvault/db-password}
|
|
146
|
+
|
|
147
|
+
# AWS Secrets Manager (requires env-use[aws])
|
|
148
|
+
# Format: ${aws-secrets:<region>/<secret_name>}
|
|
149
|
+
DB_PASSWORD=${aws-secrets:us-east-1/my-app/database}
|
|
150
|
+
|
|
151
|
+
# GCP Secret Manager (requires env-use[gcp])
|
|
152
|
+
# Format: ${gcp-secrets:<project_id>/<secret_name>}
|
|
153
|
+
API_KEY=${gcp-secrets:my-project/api-key}
|
|
154
|
+
|
|
155
|
+
# HashiCorp Vault (requires env-use[vault])
|
|
156
|
+
# Format: ${vault:<mount_point>/<path>}
|
|
157
|
+
DB_PASSWORD=${vault:secret/my-app/database}
|
|
158
|
+
|
|
159
|
+
# 1Password (requires env-use[1password])
|
|
160
|
+
# Format: ${1password:<vault_id>/<item_id>/<field>}
|
|
161
|
+
API_KEY=${1password:vault-id/item-id/api-key}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Run the tool:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
use-env .env.dev
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
This will create a `.env` file with all references resolved.
|
|
171
|
+
|
|
172
|
+
### Piping Support
|
|
173
|
+
|
|
174
|
+
The tool supports piping for flexible workflows:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Pipe input from stdin, output to stdout
|
|
178
|
+
cat .env.dev | use-env
|
|
179
|
+
|
|
180
|
+
# Pipe input, save output to file
|
|
181
|
+
cat .env.dev | use-env > .env
|
|
182
|
+
|
|
183
|
+
# Pipe output to another command
|
|
184
|
+
use-env .env.prod | grep DB_HOST
|
|
185
|
+
|
|
186
|
+
# Chain with other tools
|
|
187
|
+
cat .env.staging | use-env | jq '.DATABASE_'
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
When input comes from stdin, output automatically goes to stdout. This enables standard Unix workflows.
|
|
191
|
+
|
|
192
|
+
## Core Providers (No Extra Dependencies)
|
|
193
|
+
|
|
194
|
+
### Environment Provider (`env`)
|
|
195
|
+
|
|
196
|
+
Reference environment variables:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
API_KEY=${env:API_KEY}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### File Provider (`file`)
|
|
203
|
+
|
|
204
|
+
Read secrets from files:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
# Absolute path
|
|
208
|
+
DB_PASSWORD=${file:/run/secrets/db_password}
|
|
209
|
+
|
|
210
|
+
# Relative path (relative to config or current directory)
|
|
211
|
+
API_KEY=${file:./secrets/api_key.txt}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Optional Cloud Providers
|
|
215
|
+
|
|
216
|
+
### Azure Key Vault (`azure-keyvault`)
|
|
217
|
+
|
|
218
|
+
Requires: `pip install env-use[azure]`
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Format: ${azure-keyvault:<vault_name>/<secret_name>}
|
|
222
|
+
DB_PASSWORD=${azure-keyvault:my-keyvault/db-password}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Configuration (in `.use-env.yaml`):
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
providers:
|
|
229
|
+
- name: azure
|
|
230
|
+
type: azure-keyvault
|
|
231
|
+
enabled: true
|
|
232
|
+
config:
|
|
233
|
+
tenant_id: "your-tenant-id" # Optional, uses default credential
|
|
234
|
+
client_id: "your-client-id" # Optional
|
|
235
|
+
client_secret: "your-secret" # Optional
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### AWS Secrets Manager (`aws-secrets`)
|
|
239
|
+
|
|
240
|
+
Requires: `pip install env-use[aws]`
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Format: ${aws-secrets:<region>/<secret_name>}
|
|
244
|
+
DB_PASSWORD=${aws-secrets:us-east-1/my-app/database}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Configuration:
|
|
248
|
+
|
|
249
|
+
```yaml
|
|
250
|
+
providers:
|
|
251
|
+
- name: aws
|
|
252
|
+
type: aws-secrets
|
|
253
|
+
enabled: true
|
|
254
|
+
config:
|
|
255
|
+
region: "us-east-1" # Optional, uses default session
|
|
256
|
+
profile: "my-aws-profile" # Optional
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### GCP Secret Manager (`gcp-secrets`)
|
|
260
|
+
|
|
261
|
+
Requires: `pip install env-use[gcp]`
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Format: ${gcp-secrets:<project_id>/<secret_name>}
|
|
265
|
+
API_KEY=${gcp-secrets:my-project/api-key}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Configuration:
|
|
269
|
+
|
|
270
|
+
```yaml
|
|
271
|
+
providers:
|
|
272
|
+
- name: gcp
|
|
273
|
+
type: gcp-secrets
|
|
274
|
+
enabled: true
|
|
275
|
+
config:
|
|
276
|
+
project_id: "my-gcp-project" # Optional, uses default
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### HashiCorp Vault (`vault`)
|
|
280
|
+
|
|
281
|
+
Requires: `pip install env-use[vault]`
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# Format: ${vault:<mount_point>/<path>}
|
|
285
|
+
DB_PASSWORD=${vault:secret/my-app/database}
|
|
286
|
+
DB_HOST=${vault:secret/my-app/host} # Returns specific field if secret is JSON
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Configuration:
|
|
290
|
+
|
|
291
|
+
```yaml
|
|
292
|
+
providers:
|
|
293
|
+
- name: vault
|
|
294
|
+
type: vault
|
|
295
|
+
enabled: true
|
|
296
|
+
config:
|
|
297
|
+
url: "http://127.0.0.1:8200" # Optional, uses VAULT_ADDR env var
|
|
298
|
+
token: "your-vault-token" # Optional, uses VAULT_TOKEN env var
|
|
299
|
+
namespace: "your-namespace" # Optional, for Enterprise Vault
|
|
300
|
+
mount_point: "secret" # Optional, default mount point
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### 1Password Connect (`1password`)
|
|
304
|
+
|
|
305
|
+
Requires: `pip install env-use[1password]`
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# Format: ${1password:<vault_id>/<item_id>/<field>}
|
|
309
|
+
API_KEY=${1password:vault-uuid/item-uuid/api-key}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Configuration:
|
|
313
|
+
|
|
314
|
+
```yaml
|
|
315
|
+
providers:
|
|
316
|
+
- name: onepassword
|
|
317
|
+
type: 1password
|
|
318
|
+
enabled: true
|
|
319
|
+
config:
|
|
320
|
+
connect_url: "http://localhost:8080" # Optional, uses OP_CONNECT_HOST
|
|
321
|
+
connect_token: "your-token" # Optional, uses OP_CONNECT_TOKEN
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Configuration
|
|
325
|
+
|
|
326
|
+
Create a `.use-env.yaml` file to configure providers:
|
|
327
|
+
|
|
328
|
+
```yaml
|
|
329
|
+
providers:
|
|
330
|
+
- name: azure
|
|
331
|
+
type: azure-keyvault
|
|
332
|
+
enabled: true
|
|
333
|
+
config:
|
|
334
|
+
tenant_id: "your-tenant-id"
|
|
335
|
+
|
|
336
|
+
- name: aws
|
|
337
|
+
type: aws-secrets
|
|
338
|
+
enabled: true
|
|
339
|
+
config:
|
|
340
|
+
region: "us-east-1"
|
|
341
|
+
|
|
342
|
+
options:
|
|
343
|
+
strict: true
|
|
344
|
+
verbose: 1
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## Adding Custom Providers
|
|
348
|
+
|
|
349
|
+
See [Provider Development Guide](docs/provider_development.md) for detailed instructions.
|
|
350
|
+
|
|
351
|
+
## Documentation
|
|
352
|
+
|
|
353
|
+
- [Architecture](docs/architecture.md) - Internal design and components
|
|
354
|
+
- [Provider Development](docs/provider_development.md) - Guide for creating custom providers
|
|
355
|
+
- [Usage Guide](docs/usage.md) - Detailed usage instructions
|
|
356
|
+
|
|
357
|
+
## Testing
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Run all tests
|
|
361
|
+
pytest
|
|
362
|
+
|
|
363
|
+
# Run with coverage
|
|
364
|
+
pytest --cov=use_env
|
|
365
|
+
|
|
366
|
+
# Run specific test file
|
|
367
|
+
pytest tests/test_providers.py
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## CI/CD
|
|
371
|
+
|
|
372
|
+
This project uses GitHub Actions for continuous integration and deployment:
|
|
373
|
+
|
|
374
|
+
### Pull Requests
|
|
375
|
+
- Runs on Python 3.12 and 3.13
|
|
376
|
+
- Ruff linting and formatting checks
|
|
377
|
+
- MyPy type checking
|
|
378
|
+
- Pytest with coverage
|
|
379
|
+
- Coverage uploaded to Codecov
|
|
380
|
+
|
|
381
|
+
### Releases
|
|
382
|
+
- Automatically versions using [python-semantic-release](https://python-semantic-release.readthedocs.io/)
|
|
383
|
+
- Maintains a release PR branch from `main`/`master`
|
|
384
|
+
- Pushes a new version tag when a release PR is merged
|
|
385
|
+
- Publishes to PyPI and creates a GitHub Release on version tags
|
|
386
|
+
|
|
387
|
+
### Commit Convention
|
|
388
|
+
|
|
389
|
+
This project uses [Conventional Commits](https://www.conventionalcommits.org/):
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
feat: add new provider
|
|
393
|
+
fix: resolve caching issue
|
|
394
|
+
docs: update documentation
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
|
|
398
|
+
|
|
399
|
+
## License
|
|
400
|
+
|
|
401
|
+
MIT License - see LICENSE file for details.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
use_env/__init__.py,sha256=LKBkbMvFb-4AZhPNL0nIpBSXsPqK4AqeEudxmbtDnoU,652
|
|
2
|
+
use_env/cli.py,sha256=Nre42EmYawP36l30MaE5XLSMzEVkAjoj2cFIbdTV83E,7608
|
|
3
|
+
use_env/config.py,sha256=WXhR3fqH_hxi2sP8uAzg8JMKJFVOiLggQUJmwad9Neo,3431
|
|
4
|
+
use_env/loader.py,sha256=v2NyT6tgpL6hWSDraKUKO8T0v0swbJ3RsWswUnVSLwU,9231
|
|
5
|
+
use_env/providers/__init__.py,sha256=kxlGNqRXIA-32EXdUweKx-r_RqQqOqt7_fQCe1uTm5Q,9431
|
|
6
|
+
use_env/providers/aws.py,sha256=BkwEVQEEYvfnsX8S6scJ_-nJjy42kCeE-CoH5pLQRHw,6535
|
|
7
|
+
use_env/providers/azure.py,sha256=MjXArZVLHI5I_hAJFbETX9YYLpKjRyH-pCQX68g-EYQ,4820
|
|
8
|
+
use_env/providers/built_in.py,sha256=BHYEowIXON1NHuGbo3qds-RVi_J0kMSw7HRS74IWgNg,1025
|
|
9
|
+
use_env/providers/env.py,sha256=ggw65BZm1RmPDCFXTOImWNRXTQ-X5_cVZPsIkjrlP4A,4613
|
|
10
|
+
use_env/providers/file.py,sha256=ozGsORr-aJ3qTlyBIThQKWdCku35Px9eSPF-kxUUxOk,4156
|
|
11
|
+
use_env/providers/gcp.py,sha256=XZclWDrdk7aF2rZ3CRZghhTnH6GchImJwOF4ToTB6I8,4378
|
|
12
|
+
use_env/providers/hashicorp.py,sha256=tjU0pBNHz-tu0sy_kFdddgreHIPetmpbs_mMFtTytag,6906
|
|
13
|
+
use_env/providers/onepassword.py,sha256=DtbsOkcRgejD7kRHQaJIcnWyTf1yh2eDWw-3droZa6Q,6630
|
|
14
|
+
env_use-1.0.0.dist-info/METADATA,sha256=uP4EqAELc4jZkfQzBpPAOhEHHatPkfdBvO16OaQ7Wmk,11002
|
|
15
|
+
env_use-1.0.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
16
|
+
env_use-1.0.0.dist-info/entry_points.txt,sha256=G9Q_GaxH_AZx89h3EzkBVAVUQ-ZwfAh3CO539_W3haE,45
|
|
17
|
+
env_use-1.0.0.dist-info/RECORD,,
|
use_env/__init__.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""
|
|
2
|
+
use-env: Environment file processor with extensible secret providers.
|
|
3
|
+
|
|
4
|
+
This tool allows developers to define environment files with secret references
|
|
5
|
+
that can be resolved from various providers (vault, environment variables, files, etc.).
|
|
6
|
+
|
|
7
|
+
Basic Usage:
|
|
8
|
+
use-env .env.dev
|
|
9
|
+
|
|
10
|
+
For more information, see:
|
|
11
|
+
https://github.com/yourusername/use-env
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from .cli import main
|
|
15
|
+
from .config import UseEnvConfig
|
|
16
|
+
from .loader import EnvLoader
|
|
17
|
+
from .providers import Provider, ProviderError, ProviderRegistry
|
|
18
|
+
|
|
19
|
+
__version__ = "1.0.0"
|
|
20
|
+
__all__ = [
|
|
21
|
+
"main",
|
|
22
|
+
"UseEnvConfig",
|
|
23
|
+
"EnvLoader",
|
|
24
|
+
"Provider",
|
|
25
|
+
"ProviderRegistry",
|
|
26
|
+
"ProviderError",
|
|
27
|
+
]
|