provide-foundation 0.0.0.dev0__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.
- provide/__init__.py +15 -0
- provide/foundation/__init__.py +155 -0
- provide/foundation/_version.py +58 -0
- provide/foundation/cli/__init__.py +67 -0
- provide/foundation/cli/commands/__init__.py +3 -0
- provide/foundation/cli/commands/deps.py +71 -0
- provide/foundation/cli/commands/logs/__init__.py +63 -0
- provide/foundation/cli/commands/logs/generate.py +357 -0
- provide/foundation/cli/commands/logs/generate_old.py +569 -0
- provide/foundation/cli/commands/logs/query.py +174 -0
- provide/foundation/cli/commands/logs/send.py +166 -0
- provide/foundation/cli/commands/logs/tail.py +112 -0
- provide/foundation/cli/decorators.py +262 -0
- provide/foundation/cli/main.py +65 -0
- provide/foundation/cli/testing.py +220 -0
- provide/foundation/cli/utils.py +210 -0
- provide/foundation/config/__init__.py +106 -0
- provide/foundation/config/base.py +295 -0
- provide/foundation/config/env.py +369 -0
- provide/foundation/config/loader.py +311 -0
- provide/foundation/config/manager.py +387 -0
- provide/foundation/config/schema.py +284 -0
- provide/foundation/config/sync.py +281 -0
- provide/foundation/config/types.py +78 -0
- provide/foundation/config/validators.py +80 -0
- provide/foundation/console/__init__.py +29 -0
- provide/foundation/console/input.py +364 -0
- provide/foundation/console/output.py +178 -0
- provide/foundation/context/__init__.py +12 -0
- provide/foundation/context/core.py +356 -0
- provide/foundation/core.py +20 -0
- provide/foundation/crypto/__init__.py +182 -0
- provide/foundation/crypto/algorithms.py +111 -0
- provide/foundation/crypto/certificates.py +896 -0
- provide/foundation/crypto/checksums.py +301 -0
- provide/foundation/crypto/constants.py +57 -0
- provide/foundation/crypto/hashing.py +265 -0
- provide/foundation/crypto/keys.py +188 -0
- provide/foundation/crypto/signatures.py +144 -0
- provide/foundation/crypto/utils.py +164 -0
- provide/foundation/errors/__init__.py +96 -0
- provide/foundation/errors/auth.py +73 -0
- provide/foundation/errors/base.py +81 -0
- provide/foundation/errors/config.py +103 -0
- provide/foundation/errors/context.py +299 -0
- provide/foundation/errors/decorators.py +484 -0
- provide/foundation/errors/handlers.py +360 -0
- provide/foundation/errors/integration.py +105 -0
- provide/foundation/errors/platform.py +37 -0
- provide/foundation/errors/process.py +140 -0
- provide/foundation/errors/resources.py +133 -0
- provide/foundation/errors/runtime.py +160 -0
- provide/foundation/errors/safe_decorators.py +133 -0
- provide/foundation/errors/types.py +276 -0
- provide/foundation/file/__init__.py +79 -0
- provide/foundation/file/atomic.py +157 -0
- provide/foundation/file/directory.py +134 -0
- provide/foundation/file/formats.py +236 -0
- provide/foundation/file/lock.py +175 -0
- provide/foundation/file/safe.py +179 -0
- provide/foundation/file/utils.py +170 -0
- provide/foundation/hub/__init__.py +88 -0
- provide/foundation/hub/click_builder.py +310 -0
- provide/foundation/hub/commands.py +42 -0
- provide/foundation/hub/components.py +640 -0
- provide/foundation/hub/decorators.py +244 -0
- provide/foundation/hub/info.py +32 -0
- provide/foundation/hub/manager.py +446 -0
- provide/foundation/hub/registry.py +279 -0
- provide/foundation/hub/type_mapping.py +54 -0
- provide/foundation/hub/types.py +28 -0
- provide/foundation/logger/__init__.py +41 -0
- provide/foundation/logger/base.py +22 -0
- provide/foundation/logger/config/__init__.py +16 -0
- provide/foundation/logger/config/base.py +40 -0
- provide/foundation/logger/config/logging.py +394 -0
- provide/foundation/logger/config/telemetry.py +188 -0
- provide/foundation/logger/core.py +239 -0
- provide/foundation/logger/custom_processors.py +172 -0
- provide/foundation/logger/emoji/__init__.py +44 -0
- provide/foundation/logger/emoji/matrix.py +209 -0
- provide/foundation/logger/emoji/sets.py +458 -0
- provide/foundation/logger/emoji/types.py +56 -0
- provide/foundation/logger/factories.py +56 -0
- provide/foundation/logger/processors/__init__.py +13 -0
- provide/foundation/logger/processors/main.py +254 -0
- provide/foundation/logger/processors/trace.py +113 -0
- provide/foundation/logger/ratelimit/__init__.py +31 -0
- provide/foundation/logger/ratelimit/limiters.py +294 -0
- provide/foundation/logger/ratelimit/processor.py +203 -0
- provide/foundation/logger/ratelimit/queue_limiter.py +305 -0
- provide/foundation/logger/setup/__init__.py +29 -0
- provide/foundation/logger/setup/coordinator.py +138 -0
- provide/foundation/logger/setup/emoji_resolver.py +64 -0
- provide/foundation/logger/setup/processors.py +85 -0
- provide/foundation/logger/setup/testing.py +39 -0
- provide/foundation/logger/trace.py +38 -0
- provide/foundation/metrics/__init__.py +119 -0
- provide/foundation/metrics/otel.py +122 -0
- provide/foundation/metrics/simple.py +165 -0
- provide/foundation/observability/__init__.py +53 -0
- provide/foundation/observability/openobserve/__init__.py +79 -0
- provide/foundation/observability/openobserve/auth.py +72 -0
- provide/foundation/observability/openobserve/client.py +307 -0
- provide/foundation/observability/openobserve/commands.py +357 -0
- provide/foundation/observability/openobserve/exceptions.py +41 -0
- provide/foundation/observability/openobserve/formatters.py +298 -0
- provide/foundation/observability/openobserve/models.py +134 -0
- provide/foundation/observability/openobserve/otlp.py +320 -0
- provide/foundation/observability/openobserve/search.py +222 -0
- provide/foundation/observability/openobserve/streaming.py +235 -0
- provide/foundation/platform/__init__.py +44 -0
- provide/foundation/platform/detection.py +193 -0
- provide/foundation/platform/info.py +157 -0
- provide/foundation/process/__init__.py +39 -0
- provide/foundation/process/async_runner.py +373 -0
- provide/foundation/process/lifecycle.py +406 -0
- provide/foundation/process/runner.py +390 -0
- provide/foundation/setup/__init__.py +101 -0
- provide/foundation/streams/__init__.py +44 -0
- provide/foundation/streams/console.py +57 -0
- provide/foundation/streams/core.py +65 -0
- provide/foundation/streams/file.py +104 -0
- provide/foundation/testing/__init__.py +166 -0
- provide/foundation/testing/cli.py +227 -0
- provide/foundation/testing/crypto.py +163 -0
- provide/foundation/testing/fixtures.py +49 -0
- provide/foundation/testing/hub.py +23 -0
- provide/foundation/testing/logger.py +106 -0
- provide/foundation/testing/streams.py +54 -0
- provide/foundation/tracer/__init__.py +49 -0
- provide/foundation/tracer/context.py +115 -0
- provide/foundation/tracer/otel.py +135 -0
- provide/foundation/tracer/spans.py +174 -0
- provide/foundation/types.py +32 -0
- provide/foundation/utils/__init__.py +97 -0
- provide/foundation/utils/deps.py +195 -0
- provide/foundation/utils/env.py +491 -0
- provide/foundation/utils/formatting.py +483 -0
- provide/foundation/utils/parsing.py +235 -0
- provide/foundation/utils/rate_limiting.py +112 -0
- provide/foundation/utils/streams.py +67 -0
- provide/foundation/utils/timing.py +93 -0
- provide_foundation-0.0.0.dev0.dist-info/METADATA +469 -0
- provide_foundation-0.0.0.dev0.dist-info/RECORD +149 -0
- provide_foundation-0.0.0.dev0.dist-info/WHEEL +5 -0
- provide_foundation-0.0.0.dev0.dist-info/entry_points.txt +2 -0
- provide_foundation-0.0.0.dev0.dist-info/licenses/LICENSE +201 -0
- provide_foundation-0.0.0.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,469 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: provide-foundation
|
3
|
+
Version: 0.0.0.dev0
|
4
|
+
Summary: Foundation Telemetry: An opinionated, developer-friendly telemetry wrapper for Python.
|
5
|
+
Author-email: Tim Perkins <code@tim.life>
|
6
|
+
Maintainer-email: "provide.io" <code@provide.io>
|
7
|
+
License: Apache-2.0
|
8
|
+
Keywords: telemetry,logging,tracing,python,pyvider
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
10
|
+
Classifier: Intended Audience :: Developers
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
12
|
+
Classifier: Operating System :: OS Independent
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
17
|
+
Classifier: Topic :: System :: Logging
|
18
|
+
Classifier: Topic :: System :: Monitoring
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
20
|
+
Classifier: Typing :: Typed
|
21
|
+
Requires-Python: >=3.11
|
22
|
+
Description-Content-Type: text/markdown
|
23
|
+
License-File: LICENSE
|
24
|
+
Requires-Dist: aiofiles>=23.2.1
|
25
|
+
Requires-Dist: attrs>=23.1.0
|
26
|
+
Requires-Dist: structlog>=25.3.0
|
27
|
+
Requires-Dist: tomli_w>=1.0.0
|
28
|
+
Provides-Extra: cli
|
29
|
+
Requires-Dist: click>=8.1.7; extra == "cli"
|
30
|
+
Provides-Extra: crypto
|
31
|
+
Requires-Dist: cryptography>=45.0.7; extra == "crypto"
|
32
|
+
Provides-Extra: opentelemetry
|
33
|
+
Requires-Dist: opentelemetry-api>=1.22.0; extra == "opentelemetry"
|
34
|
+
Requires-Dist: opentelemetry-sdk>=1.22.0; extra == "opentelemetry"
|
35
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.22.0; extra == "opentelemetry"
|
36
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.22.0; extra == "opentelemetry"
|
37
|
+
Provides-Extra: all
|
38
|
+
Requires-Dist: provide-foundation[cli,crypto,opentelemetry]; extra == "all"
|
39
|
+
Dynamic: license-file
|
40
|
+
|
41
|
+
# provide.foundation
|
42
|
+
|
43
|
+
**A Comprehensive Python Foundation Library for Modern Applications**
|
44
|
+
|
45
|
+
<p align="center">
|
46
|
+
<a href="https://pypi.org/project/provide-foundation/">
|
47
|
+
<img alt="PyPI" src="https://img.shields.io/pypi/v/provide-foundation.svg">
|
48
|
+
</a>
|
49
|
+
<a href="https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml">
|
50
|
+
<img alt="CI Status" src="https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml/badge.svg">
|
51
|
+
</a>
|
52
|
+
<a href="https://codecov.io/gh/provide-io/provide-foundation">
|
53
|
+
<img src="https://codecov.io/gh/provide-io/provide-foundation/branch/main/graph/badge.svg"/>
|
54
|
+
</a>
|
55
|
+
<a href="https://github.com/provide-io/provide-foundation/blob/main/LICENSE">
|
56
|
+
<img alt="License" src="https://img.shields.io/github/license/provide-io/provide-foundation.svg">
|
57
|
+
</a>
|
58
|
+
</p>
|
59
|
+
|
60
|
+
---
|
61
|
+
|
62
|
+
**provide.foundation** is a comprehensive foundation library for Python applications, offering structured logging, CLI utilities, configuration management, error handling, and essential application building blocks. Built with modern Python practices, it provides the core infrastructure that production applications need.
|
63
|
+
|
64
|
+
---
|
65
|
+
|
66
|
+
## Installation
|
67
|
+
|
68
|
+
```bash
|
69
|
+
# Using uv (recommended)
|
70
|
+
uv pip install provide-foundation
|
71
|
+
|
72
|
+
# Using pip
|
73
|
+
pip install provide-foundation
|
74
|
+
```
|
75
|
+
|
76
|
+
### Optional Dependencies
|
77
|
+
|
78
|
+
provide.foundation has optional feature sets that require additional dependencies:
|
79
|
+
|
80
|
+
| Feature | Install Command | Required For |
|
81
|
+
|---------|----------------|--------------|
|
82
|
+
| **Basic logging** | `pip install provide-foundation` | Core logging functionality |
|
83
|
+
| **CLI framework** | `pip install provide-foundation[cli]` | Command-line interface features |
|
84
|
+
| **Cryptography** | `pip install provide-foundation[crypto]` | Hash functions, digital signatures, certificates |
|
85
|
+
| **OpenTelemetry** | `pip install provide-foundation[opentelemetry]` | Distributed tracing and metrics |
|
86
|
+
| **All features** | `pip install provide-foundation[all]` | Everything above |
|
87
|
+
|
88
|
+
> **Quick Start Tip**: For immediate use with just logging, install the base package. Add extras as needed.
|
89
|
+
|
90
|
+
---
|
91
|
+
|
92
|
+
## What's Included
|
93
|
+
|
94
|
+
### Core Components
|
95
|
+
|
96
|
+
#### **Structured Logging**
|
97
|
+
Beautiful, performant logging built on `structlog` with emoji-enhanced visual parsing and zero configuration required.
|
98
|
+
|
99
|
+
```python
|
100
|
+
# Simple usage - works immediately with base install
|
101
|
+
from provide.foundation import logger
|
102
|
+
|
103
|
+
logger.info("Application started", version="1.0.0")
|
104
|
+
logger.error("Database connection failed", host="db.example.com", retry_count=3)
|
105
|
+
|
106
|
+
# Full setup with tracing/metrics (requires [opentelemetry] extra)
|
107
|
+
from provide.foundation import setup_telemetry
|
108
|
+
setup_telemetry() # Configures logging + optional tracing/metrics
|
109
|
+
```
|
110
|
+
|
111
|
+
#### **CLI Framework**
|
112
|
+
Build command-line interfaces with automatic help generation and component registration.
|
113
|
+
|
114
|
+
> **Requires**: `pip install provide-foundation[cli]`
|
115
|
+
|
116
|
+
```python
|
117
|
+
# From examples/12_cli_application.py
|
118
|
+
from provide.foundation.hub import register_command
|
119
|
+
from provide.foundation.cli import echo_success
|
120
|
+
|
121
|
+
@register_command("init", category="project")
|
122
|
+
def init_command(name: str = "myproject", template: str = "default"):
|
123
|
+
"""Initialize a new project."""
|
124
|
+
echo_success(f"Initializing project '{name}' with template '{template}'")
|
125
|
+
```
|
126
|
+
|
127
|
+
#### **Configuration Management**
|
128
|
+
Flexible configuration system supporting environment variables, files, and runtime updates.
|
129
|
+
|
130
|
+
```python
|
131
|
+
# From examples/11_config_management.py
|
132
|
+
from provide.foundation.config import BaseConfig, ConfigManager, field
|
133
|
+
from attrs import define
|
134
|
+
|
135
|
+
@define
|
136
|
+
class AppConfig(BaseConfig):
|
137
|
+
app_name: str = field(default="my-app", description="Application name")
|
138
|
+
port: int = field(default=8080, description="Server port")
|
139
|
+
debug: bool = field(default=False, description="Debug mode")
|
140
|
+
|
141
|
+
manager = ConfigManager()
|
142
|
+
manager.register("app", config=AppConfig())
|
143
|
+
config = manager.get("app")
|
144
|
+
```
|
145
|
+
|
146
|
+
#### **Error Handling**
|
147
|
+
Comprehensive error handling with retry logic and error boundaries.
|
148
|
+
|
149
|
+
```python
|
150
|
+
# From examples/05_exception_handling.py
|
151
|
+
from provide.foundation import logger, with_error_handling
|
152
|
+
|
153
|
+
@with_error_handling
|
154
|
+
def risky_operation():
|
155
|
+
"""Operation that might fail."""
|
156
|
+
result = perform_calculation()
|
157
|
+
logger.info("operation_succeeded", result=result)
|
158
|
+
return result
|
159
|
+
```
|
160
|
+
|
161
|
+
#### **Cryptographic Utilities**
|
162
|
+
Comprehensive cryptographic operations with modern algorithms and secure defaults.
|
163
|
+
|
164
|
+
> **Requires**: `pip install provide-foundation[crypto]`
|
165
|
+
|
166
|
+
```python
|
167
|
+
from provide.foundation.crypto import hash_file, create_self_signed, sign_data
|
168
|
+
|
169
|
+
# File hashing and verification
|
170
|
+
hash_result = hash_file("document.pdf", algorithm="sha256")
|
171
|
+
|
172
|
+
# Digital signatures
|
173
|
+
signature = sign_data(data, private_key, algorithm="ed25519")
|
174
|
+
|
175
|
+
# Certificate generation
|
176
|
+
cert, key = create_self_signed("example.com", key_size=2048)
|
177
|
+
```
|
178
|
+
|
179
|
+
#### **File Operations**
|
180
|
+
Atomic file operations with format support and safety guarantees.
|
181
|
+
|
182
|
+
```python
|
183
|
+
from provide.foundation.file import atomic_write, read_json, safe_copy
|
184
|
+
|
185
|
+
# Atomic file operations
|
186
|
+
atomic_write("config.json", {"key": "value"})
|
187
|
+
data = read_json("config.json")
|
188
|
+
|
189
|
+
# Safe file operations
|
190
|
+
safe_copy("source.txt", "backup.txt")
|
191
|
+
```
|
192
|
+
|
193
|
+
#### **Console I/O**
|
194
|
+
Enhanced console input/output with color support, JSON mode, and interactive prompts.
|
195
|
+
|
196
|
+
```python
|
197
|
+
from provide.foundation import pin, pout, perr
|
198
|
+
|
199
|
+
# Colored output
|
200
|
+
pout("Success!", color="green")
|
201
|
+
perr("Error occurred", color="red")
|
202
|
+
|
203
|
+
# Interactive input
|
204
|
+
name = pin("What's your name?")
|
205
|
+
password = pin("Enter password:", password=True)
|
206
|
+
|
207
|
+
# JSON mode for scripts
|
208
|
+
pout({"status": "ok", "data": results}, json=True)
|
209
|
+
```
|
210
|
+
|
211
|
+
#### **Platform Utilities**
|
212
|
+
Cross-platform detection and system information gathering.
|
213
|
+
|
214
|
+
```python
|
215
|
+
from provide.foundation import platform
|
216
|
+
|
217
|
+
# Platform detection
|
218
|
+
if platform.is_linux():
|
219
|
+
logger.info("Running on Linux")
|
220
|
+
|
221
|
+
system_info = platform.get_system_info()
|
222
|
+
logger.info("System info", **system_info.to_dict())
|
223
|
+
```
|
224
|
+
|
225
|
+
#### **Process Execution**
|
226
|
+
Safe subprocess execution with streaming and async support.
|
227
|
+
|
228
|
+
```python
|
229
|
+
from provide.foundation import process
|
230
|
+
|
231
|
+
# Synchronous execution
|
232
|
+
result = process.run_command(["git", "status"])
|
233
|
+
if result.returncode == 0:
|
234
|
+
logger.info("Git status", output=result.stdout)
|
235
|
+
|
236
|
+
# Streaming output
|
237
|
+
for line in process.stream_command(["tail", "-f", "app.log"]):
|
238
|
+
logger.info("Log line", line=line)
|
239
|
+
```
|
240
|
+
|
241
|
+
#### **Registry Pattern**
|
242
|
+
Flexible registry system for managing components and commands.
|
243
|
+
|
244
|
+
```python
|
245
|
+
# From examples/12_cli_application.py
|
246
|
+
from provide.foundation.hub import Hub
|
247
|
+
|
248
|
+
class DatabaseResource:
|
249
|
+
def __init__(self, name: str) -> None:
|
250
|
+
self.name = name
|
251
|
+
self.connected = False
|
252
|
+
|
253
|
+
def __enter__(self):
|
254
|
+
"""Initialize database connection."""
|
255
|
+
self.connected = True
|
256
|
+
return self
|
257
|
+
|
258
|
+
hub = Hub()
|
259
|
+
hub.add_component(DatabaseResource, name="database", dimension="resource", version="1.0.0")
|
260
|
+
db_class = hub.get_component("database", dimension="resource")
|
261
|
+
```
|
262
|
+
|
263
|
+
See [examples/](examples/) for more comprehensive examples.
|
264
|
+
|
265
|
+
---
|
266
|
+
|
267
|
+
## Quick Start Examples
|
268
|
+
|
269
|
+
### Building a CLI Application
|
270
|
+
|
271
|
+
```python
|
272
|
+
# From examples/12_cli_application.py
|
273
|
+
from provide.foundation.hub import Hub, register_command
|
274
|
+
from provide.foundation.cli import echo_info, echo_success
|
275
|
+
|
276
|
+
@register_command("status", aliases=["st", "info"])
|
277
|
+
def status_command(verbose: bool = False):
|
278
|
+
"""Show system status."""
|
279
|
+
hub = Hub()
|
280
|
+
echo_info(f"Registered components: {len(hub.list_components())}")
|
281
|
+
echo_info(f"Registered commands: {len(hub.list_commands())}")
|
282
|
+
|
283
|
+
if __name__ == "__main__":
|
284
|
+
hub = Hub()
|
285
|
+
cli = hub.create_cli(name="myapp", version="1.0.0")
|
286
|
+
cli()
|
287
|
+
```
|
288
|
+
|
289
|
+
### Configuration-Driven Application
|
290
|
+
|
291
|
+
```python
|
292
|
+
# From examples/11_config_management.py and examples/08_env_variables_config.py
|
293
|
+
from provide.foundation import setup_telemetry, logger
|
294
|
+
from provide.foundation.config import RuntimeConfig, env_field, ConfigManager
|
295
|
+
from attrs import define
|
296
|
+
|
297
|
+
@define
|
298
|
+
class DatabaseConfig(RuntimeConfig):
|
299
|
+
"""Database configuration from environment."""
|
300
|
+
host: str = env_field(default="localhost", env_var="DB_HOST")
|
301
|
+
port: int = env_field(default=5432, env_var="DB_PORT", parser=int)
|
302
|
+
database: str = env_field(default="mydb", env_var="DB_NAME")
|
303
|
+
|
304
|
+
# Setup logging from environment
|
305
|
+
setup_telemetry() # Uses PROVIDE_* env vars automatically
|
306
|
+
|
307
|
+
# Load configuration
|
308
|
+
db_config = DatabaseConfig.from_env()
|
309
|
+
logger.info("Database configured", host=db_config.host, port=db_config.port)
|
310
|
+
```
|
311
|
+
|
312
|
+
### Production Patterns
|
313
|
+
|
314
|
+
```python
|
315
|
+
# From examples/10_production_patterns.py
|
316
|
+
from provide.foundation import logger, error_boundary
|
317
|
+
import asyncio
|
318
|
+
|
319
|
+
class ProductionService:
|
320
|
+
def __init__(self):
|
321
|
+
self.logger = logger.bind(component="production_service")
|
322
|
+
|
323
|
+
async def process_batch(self, items):
|
324
|
+
"""Process items with error boundaries."""
|
325
|
+
results = []
|
326
|
+
for item in items:
|
327
|
+
with error_boundary(self.logger, f"item_{item['id']}"):
|
328
|
+
result = await self.process_item(item)
|
329
|
+
results.append(result)
|
330
|
+
return results
|
331
|
+
```
|
332
|
+
|
333
|
+
---
|
334
|
+
|
335
|
+
## Configuration
|
336
|
+
|
337
|
+
### Environment Variables
|
338
|
+
|
339
|
+
All configuration can be controlled through environment variables:
|
340
|
+
|
341
|
+
| Variable | Description | Default |
|
342
|
+
|----------|-------------|---------|
|
343
|
+
| `PROVIDE_SERVICE_NAME` | Service identifier in logs | `None` |
|
344
|
+
| `PROVIDE_LOG_LEVEL` | Minimum log level | `DEBUG` |
|
345
|
+
| `PROVIDE_LOG_CONSOLE_FORMATTER` | Output format (`key_value` or `json`) | `key_value` |
|
346
|
+
| `PROVIDE_LOG_OMIT_TIMESTAMP` | Remove timestamps from console | `false` |
|
347
|
+
| `PROVIDE_LOG_FILE` | Log to file path | `None` |
|
348
|
+
| `PROVIDE_LOG_MODULE_LEVELS` | Per-module log levels | `""` |
|
349
|
+
| `PROVIDE_CONFIG_PATH` | Configuration file path | `None` |
|
350
|
+
| `PROVIDE_ENV` | Environment (dev/staging/prod) | `dev` |
|
351
|
+
| `PROVIDE_DEBUG` | Enable debug mode | `false` |
|
352
|
+
| `PROVIDE_JSON_OUTPUT` | Force JSON output | `false` |
|
353
|
+
| `PROVIDE_NO_COLOR` | Disable colored output | `false` |
|
354
|
+
|
355
|
+
### Configuration Files
|
356
|
+
|
357
|
+
Support for YAML, JSON, TOML, and .env files:
|
358
|
+
|
359
|
+
```yaml
|
360
|
+
# config.yaml
|
361
|
+
service_name: my-app
|
362
|
+
environment: production
|
363
|
+
|
364
|
+
logging:
|
365
|
+
level: INFO
|
366
|
+
formatter: json
|
367
|
+
file: /var/log/myapp.log
|
368
|
+
|
369
|
+
database:
|
370
|
+
host: db.example.com
|
371
|
+
port: 5432
|
372
|
+
pool_size: 20
|
373
|
+
```
|
374
|
+
|
375
|
+
---
|
376
|
+
|
377
|
+
## Advanced Features
|
378
|
+
|
379
|
+
### Contextual Logging
|
380
|
+
|
381
|
+
```python
|
382
|
+
# From examples/06_trace_logging.py
|
383
|
+
from provide.foundation import logger
|
384
|
+
|
385
|
+
# Add context via structured fields
|
386
|
+
logger.info("request_processing",
|
387
|
+
request_id="req-123",
|
388
|
+
user_id="user-456",
|
389
|
+
method="GET",
|
390
|
+
path="/api/users")
|
391
|
+
```
|
392
|
+
|
393
|
+
### Timing and Profiling
|
394
|
+
|
395
|
+
```python
|
396
|
+
from provide.foundation import timed_block
|
397
|
+
|
398
|
+
with timed_block(logger, "database_query"):
|
399
|
+
results = db.query("SELECT * FROM users")
|
400
|
+
# Automatically logs: "database_query completed duration_seconds=0.123"
|
401
|
+
```
|
402
|
+
|
403
|
+
### Async Support
|
404
|
+
|
405
|
+
```python
|
406
|
+
import asyncio
|
407
|
+
from provide.foundation import logger, process
|
408
|
+
|
409
|
+
async def process_items(items):
|
410
|
+
for item in items:
|
411
|
+
logger.info("Processing", item_id=item.id)
|
412
|
+
await process_item(item)
|
413
|
+
|
414
|
+
# Async process execution
|
415
|
+
result = await process.async_run_command(["curl", "-s", "api.example.com"])
|
416
|
+
logger.info("API response", status=result.returncode)
|
417
|
+
|
418
|
+
# Thread-safe and async-safe logging
|
419
|
+
asyncio.run(process_items(items))
|
420
|
+
```
|
421
|
+
|
422
|
+
### Example Files
|
423
|
+
|
424
|
+
Complete working examples are available in the [examples/](examples/) directory:
|
425
|
+
|
426
|
+
- `00_simple_start.py` - Zero-setup logging (base install)
|
427
|
+
- `01_quick_start.py` - Full telemetry setup (requires [opentelemetry])
|
428
|
+
- `02_custom_configuration.py` - Custom telemetry configuration
|
429
|
+
- `03_named_loggers.py` - Module-specific loggers
|
430
|
+
- `04_das_logging.py` - Domain-Action-Status pattern
|
431
|
+
- `05_exception_handling.py` - Error handling patterns
|
432
|
+
- `06_trace_logging.py` - Distributed tracing
|
433
|
+
- `07_module_filtering.py` - Log filtering by module
|
434
|
+
- `08_env_variables_config.py` - Environment-based config
|
435
|
+
- `09_async_usage.py` - Async logging patterns
|
436
|
+
- `10_production_patterns.py` - Production best practices
|
437
|
+
- `11_config_management.py` - Complete configuration system
|
438
|
+
- `12_cli_application.py` - Full CLI application example
|
439
|
+
|
440
|
+
---
|
441
|
+
|
442
|
+
## Performance
|
443
|
+
|
444
|
+
- **Logging**: 14,000+ messages/second with emoji processing and structured logging
|
445
|
+
- **Configuration**: Lazy loading with multi-source caching for optimal performance
|
446
|
+
- **File Operations**: Atomic writes with format detection prevent corruption
|
447
|
+
- **Process Management**: Efficient streaming with async support and backpressure handling
|
448
|
+
- **Cryptography**: Hardware-accelerated operations with secure algorithm defaults
|
449
|
+
- **Platform Detection**: Cached system information for minimal overhead
|
450
|
+
|
451
|
+
---
|
452
|
+
|
453
|
+
## Contributing
|
454
|
+
|
455
|
+
We welcome contributions! Please see:
|
456
|
+
- [DEVELOPMENT.md](DEVELOPMENT.md) - Development setup and guidelines
|
457
|
+
- [GitHub Issues](https://github.com/provide-io/provide-foundation/issues) - Bug reports and feature requests
|
458
|
+
|
459
|
+
---
|
460
|
+
|
461
|
+
## License
|
462
|
+
|
463
|
+
MIT License - see [LICENSE](LICENSE) file for details.
|
464
|
+
|
465
|
+
---
|
466
|
+
|
467
|
+
<p align="center">
|
468
|
+
Built by <a href="https://provide.io">Provide</a>
|
469
|
+
</p>
|
@@ -0,0 +1,149 @@
|
|
1
|
+
provide/__init__.py,sha256=RhH2b-EgTOCd1EO-FoJZwJrSCIgYPWcG611riYIKA7Q,289
|
2
|
+
provide/foundation/__init__.py,sha256=Zm3qZQTA440aUvxFGv8ev3oiyzvFceMrFW3tEEqBjck,4177
|
3
|
+
provide/foundation/_version.py,sha256=sbKh6ec7EOQ8enfksj-78_Ip8QXHxghRvHJQgiOPOkk,1530
|
4
|
+
provide/foundation/core.py,sha256=0kWXr-1lhhErpMOJg9ZIRp5jrdcEHSaYXxyGkD9I-yI,426
|
5
|
+
provide/foundation/types.py,sha256=NovIg1EtqzWNCGPYBV3B56qU0Sr0VXofMgqyTJ27gsk,656
|
6
|
+
provide/foundation/cli/__init__.py,sha256=yRGO2GR6owKGsH8aPLyFulju_HLjrwR-TLpRuqxg9pI,1383
|
7
|
+
provide/foundation/cli/decorators.py,sha256=JyEAtxWFZvXx4y8yJCsHQTN52PFhBMcwIVIFZjho2cE,7423
|
8
|
+
provide/foundation/cli/main.py,sha256=_uHSUN0Xi7PNydAVYTElg248HpLF-MZzHXAyqqwWW1g,1334
|
9
|
+
provide/foundation/cli/testing.py,sha256=cbhfvfglMQTxLIgrnydl3rtczCWtSTQKz9iaCkbVK5A,5947
|
10
|
+
provide/foundation/cli/utils.py,sha256=zwCcXqk6c0lxFDJhs5nYk-vx0eDzbk17onkkCdXV-5M,5541
|
11
|
+
provide/foundation/cli/commands/__init__.py,sha256=5xzPI5hhN9OB3n4Q6VEGQtNcSuU5hUrcnobj1eDzniE,93
|
12
|
+
provide/foundation/cli/commands/deps.py,sha256=tmS09TMF3dO1CuVcpL3yea5FrF0QZ29HUzdKkhnfCuc,2232
|
13
|
+
provide/foundation/cli/commands/logs/__init__.py,sha256=Ne6s_y3Kbq5xk2Dh0Nw4Zd0B_JyXTV87L6YJH6DJRkM,1852
|
14
|
+
provide/foundation/cli/commands/logs/generate.py,sha256=1a8SfHnuNb7v3EeALLmLtZ8iJELjvzK-YcZUKgBap5o,11016
|
15
|
+
provide/foundation/cli/commands/logs/generate_old.py,sha256=zX7n-Mtg0GEJ5KIQdxBQOpxYLJCsrnqSSP8spdTtpsw,20665
|
16
|
+
provide/foundation/cli/commands/logs/query.py,sha256=U-kRObCcF4-yoU5YRzy_zS06GwCqCtsyarMuNNn4iUA,5193
|
17
|
+
provide/foundation/cli/commands/logs/send.py,sha256=ixygy_wvn9oyBRwlMQoudCLQXWC30yQuNZMOACA5Whs,4610
|
18
|
+
provide/foundation/cli/commands/logs/tail.py,sha256=4MDUoy8hZp-Y8qVfckEqZhQJOMUqGFRVxHPZeP-abcQ,2871
|
19
|
+
provide/foundation/config/__init__.py,sha256=IF-xgTP4dyNvPryW3xq5YhzhdcEM3LqXz_4WA-43-lc,2244
|
20
|
+
provide/foundation/config/base.py,sha256=xYp3EAG8Nv9AGseyDqzWCQh0AumR-9pVIkmOaDNoPEI,9600
|
21
|
+
provide/foundation/config/env.py,sha256=CZwIJmJfrVWi-btvHEiecmdTJFUuI6JP0gaV7mvz3lo,11488
|
22
|
+
provide/foundation/config/loader.py,sha256=oe-VJ6JAFTJOJrrws4mrKz6f9ree50jPRpAA7jU79l8,9805
|
23
|
+
provide/foundation/config/manager.py,sha256=aRhYvcVP5M0TVEJj3HTzC9RZTYrGWjcB7sIeEZorMBE,11189
|
24
|
+
provide/foundation/config/schema.py,sha256=mEi-NuYNL0ohKOOxunlZapWALLzsRIobWFZUdUWPEKM,8319
|
25
|
+
provide/foundation/config/sync.py,sha256=KJVTfhlgwzr_oQU2IsjnQJx0AbtFycvAXap-5eElWlw,8047
|
26
|
+
provide/foundation/config/types.py,sha256=RkJE8GYx8zh04OR6ahSVnjv0V8p_gsjqUhkkBuxLGbE,2159
|
27
|
+
provide/foundation/config/validators.py,sha256=FVhQ3R7H_ZsWqIL7v9JFVS74e8NZigUjdhlOuXxiOIk,2248
|
28
|
+
provide/foundation/console/__init__.py,sha256=Na9znGqtUwR34G2empzREHpWS-nO2gzFf-vC2dmUQgI,537
|
29
|
+
provide/foundation/console/input.py,sha256=tOIVRav4qTlSI0SWmOSeGQf5W-fZPdlPKt_b3Q1y3Rs,11399
|
30
|
+
provide/foundation/console/output.py,sha256=gBJK2zvR4bhhUAtCUpk7odUcFbNog4rKmWP1G_rs_Mg,5520
|
31
|
+
provide/foundation/context/__init__.py,sha256=FBN3hzn7bEMJD9NN72ufoqCqRg75tr8mhtM5WQlNrVE,277
|
32
|
+
provide/foundation/context/core.py,sha256=WCHkuzesoxhpJAGDsQoL54xy3k7xdK4Dqk4wuqa83CQ,12374
|
33
|
+
provide/foundation/crypto/__init__.py,sha256=1b8WoZrN5zAUSsPVAbMHFTKRlhtUR92yjnm2ieM4pu0,4773
|
34
|
+
provide/foundation/crypto/algorithms.py,sha256=-m8e7MhdejXBVfpveaI9ast6Fc1Xw2LTxc17ZNLtpHo,2530
|
35
|
+
provide/foundation/crypto/certificates.py,sha256=j4_lHGshG_kdk0TqwdaQ_RK8g8FsosxBRF8jObEznhs,34593
|
36
|
+
provide/foundation/crypto/checksums.py,sha256=17713Hg79pVRAYioyMjB95AVsQEjAa3kg8W3KFCIsEw,8092
|
37
|
+
provide/foundation/crypto/constants.py,sha256=M0TcWC1C-qHv57JsNVXGJRwADL_KTWWDopeAuFu3lJY,1846
|
38
|
+
provide/foundation/crypto/hashing.py,sha256=N6Qk5D3lO7RtV9qfh5Pl3aA442o6Dq89JJarf-w6cYM,6273
|
39
|
+
provide/foundation/crypto/keys.py,sha256=z8lnAkD6oIp7dGNPwsMItLDBU8MtxqbMSBuoNUnrZAI,5613
|
40
|
+
provide/foundation/crypto/signatures.py,sha256=HEQJPBgQH3AfelW7YC3ihjJyUEP298pJN10t10GCPa0,4455
|
41
|
+
provide/foundation/crypto/utils.py,sha256=-Kll0sgQ3qe_WA24iG7LXHisMORj-BdhLqAWdYkmDZg,4169
|
42
|
+
provide/foundation/errors/__init__.py,sha256=Xqp1CNsUBSmnceFj8V75jBhuwU87M5J5ACHIxC23-OM,2336
|
43
|
+
provide/foundation/errors/auth.py,sha256=eUDaGghBsSVuavqWAlA-i8Y1aAZJrYZH7a4hARuHztM,2307
|
44
|
+
provide/foundation/errors/base.py,sha256=E6oGjrTAayAQbO2vcy1shQb_Q0uwX49bL_bQHb_ahfc,2538
|
45
|
+
provide/foundation/errors/config.py,sha256=rP3wpX0I_R6zuYkZL41pYQbcaDq0-ahN4HeiZB3vIko,3217
|
46
|
+
provide/foundation/errors/context.py,sha256=y6oPKtrGj7MtmhHzh7pek4Txw7j3baAnanBLknUnPCI,9327
|
47
|
+
provide/foundation/errors/decorators.py,sha256=JkHtGRKpEu9lGhPI5ANKKNM1fmhZbJytTF0Nl8buaNE,17515
|
48
|
+
provide/foundation/errors/handlers.py,sha256=feAeTXnTnN6pC-dNEvf74P1gyzjS3sqDvAFnU8n-gDM,11056
|
49
|
+
provide/foundation/errors/integration.py,sha256=K2USyU7gC0jRRTtingw0nsOLEUE8rfCHfAhweYfDdHY,3305
|
50
|
+
provide/foundation/errors/platform.py,sha256=5mnt2ITS6peSDPHtb25-RvjMtGjjriaF5dx31U7rC-k,1122
|
51
|
+
provide/foundation/errors/process.py,sha256=ishT8zbbEVjTtZEcksgA4hGjr_YoKM_v0pqS4h7GsaE,4022
|
52
|
+
provide/foundation/errors/resources.py,sha256=NLbpxVmwK_vj3S0Up-AlGAsXhJjoRCyfQL5BKeAU79I,4193
|
53
|
+
provide/foundation/errors/runtime.py,sha256=cSx7-72nftwXwsIG8P14giLqUnq4xF46XlegyXGAdOc,5309
|
54
|
+
provide/foundation/errors/safe_decorators.py,sha256=TgOapg_HrhB_fpvhBUaF7OTxD8R71gjIXUYQAryDcDM,4723
|
55
|
+
provide/foundation/errors/types.py,sha256=LmbbPOlWc6NZxS2tV3QZtN_pZDBZ8sv5JV2SJacVVU0,8122
|
56
|
+
provide/foundation/file/__init__.py,sha256=05dscJ_fp33pVaqjOKQx1y4lstH4l2beyQWwO-2fnF0,1608
|
57
|
+
provide/foundation/file/atomic.py,sha256=H5cIoH6OyK2tXlh3TcMbG9YtC04tq_4RM1MT5PuWTHs,4695
|
58
|
+
provide/foundation/file/directory.py,sha256=3qSVAlyAWqNCxf1r1Z7hkplbG7IvVvSPMS2uKPr1ITk,3349
|
59
|
+
provide/foundation/file/formats.py,sha256=X2ypHKivgu-ku4I49ZEvL2Xv8tal4O6xJa28bS8TTBc,6161
|
60
|
+
provide/foundation/file/lock.py,sha256=bTSHGRoY497Vo_CncZuj59fVDdyCDjJFJSvQ369MyCY,5508
|
61
|
+
provide/foundation/file/safe.py,sha256=FqeoJUw8wAA6QtCq_dLtIS7wgd0c5PXIjWZdW_vQv44,4675
|
62
|
+
provide/foundation/file/utils.py,sha256=kfGEDhn0vFvjyCWPOuF0qW29fDGLVzoMaNkZyoRzmls,4200
|
63
|
+
provide/foundation/hub/__init__.py,sha256=emtualDpBvDZTf1hPoiU2T30185c15XzZDGg1JZM8y0,2442
|
64
|
+
provide/foundation/hub/click_builder.py,sha256=wELZH3AeXNg7Zt_I3bo2i_61nh2t-iqOfMvrhe9zRCw,9886
|
65
|
+
provide/foundation/hub/commands.py,sha256=5hGA-21tclIkhVHdNv3RtOCCgq_BygZ7S0jmm03nYOU,1355
|
66
|
+
provide/foundation/hub/components.py,sha256=xllzJe-fXhk600rP14hWh3u_b1cBSBk3YkGY0Ndk0IE,20383
|
67
|
+
provide/foundation/hub/decorators.py,sha256=-PpfX-Yz2ytBAKgqZfsRaUAeXlvJiqCnkY5DAr6adqM,6502
|
68
|
+
provide/foundation/hub/info.py,sha256=k5pWFIZuiZDbCD2WIlEFu9ovf4BrvNJ3OBSPB4ITolU,749
|
69
|
+
provide/foundation/hub/manager.py,sha256=g3xtnfd8htvHsJvnPIIeHNIKvhqIOWIH7Wkn_vxZr24,12930
|
70
|
+
provide/foundation/hub/registry.py,sha256=F1wrHJnXBGG34PMZy4vqfIONVQttJ4-vA0CkXch9kTI,8893
|
71
|
+
provide/foundation/hub/type_mapping.py,sha256=dUR3GHdekTIsLsti5YTGfFNyVmr0nO-yDg1t-gD7UAk,1517
|
72
|
+
provide/foundation/hub/types.py,sha256=2fFpNSrRnpvdfJEDKouZ87MWBC-yxd_HTHJiurCjSAc,649
|
73
|
+
provide/foundation/logger/__init__.py,sha256=hGfRkoqOaZwLiJevj34wfrGLErQRePAfeDIZpAXBUiU,1044
|
74
|
+
provide/foundation/logger/base.py,sha256=o51ButJYLQ0paDm7JZf9UFRuk1fOIjCOLJW2ZZi2jws,484
|
75
|
+
provide/foundation/logger/core.py,sha256=8Kj2oUafFXG-DVzndmwfIcLtVHYD8PnVivJsjmQbmoY,8912
|
76
|
+
provide/foundation/logger/custom_processors.py,sha256=fGgIgz7s3or1HUVSqug_CjdLfaOl5Y4q8aLzG7H3T6M,6015
|
77
|
+
provide/foundation/logger/factories.py,sha256=wCp0qdqyLZ1ENlUmX1R81qedTHLdUZFHutfJu4Zg2fw,1445
|
78
|
+
provide/foundation/logger/trace.py,sha256=Ifmejv_y_xsaC-_nAasrAXlK3ZXDgvXcdKw8GeIwsmo,1333
|
79
|
+
provide/foundation/logger/config/__init__.py,sha256=j3vU1y8mbNurkwz92TisPofUXDsmJN6cwZHm-nCPHlg,328
|
80
|
+
provide/foundation/logger/config/base.py,sha256=HG2iMUogBRhuJejQnhmGeoByLkM62iK0pigbFZSptiQ,1286
|
81
|
+
provide/foundation/logger/config/logging.py,sha256=5H8LhhUnGaBWdCm-iVLu-w_GqSsl8fnN-gJvfpxBFOs,16998
|
82
|
+
provide/foundation/logger/config/telemetry.py,sha256=UMQ8sI2rVbYtvHJeqtNawM5cuBfuYwippKwbSVnsCxA,6415
|
83
|
+
provide/foundation/logger/emoji/__init__.py,sha256=eNHvG8F4IcoBzs3QmtaewtpUoajJswiDkuX28-JC8VQ,1008
|
84
|
+
provide/foundation/logger/emoji/matrix.py,sha256=Z1fGAsDscdOllFzEvEhCRaGDGXRPNK9UoWDx6-tD7LE,6777
|
85
|
+
provide/foundation/logger/emoji/sets.py,sha256=IoKqbRUP9EUtiMTsYOuR91AEu9uJDPGMczHGbfU7Nk4,14314
|
86
|
+
provide/foundation/logger/emoji/types.py,sha256=8ekGOSc5cq9l0N5ukAxYFx4v3TcT448zeoiAccgRb1c,1788
|
87
|
+
provide/foundation/logger/processors/__init__.py,sha256=bJ5TmSD3mX02WbzR-w8WFwsZpKK6QwELvCBfwNlKxSA,373
|
88
|
+
provide/foundation/logger/processors/main.py,sha256=BysN-KChha0JGn1jqMy9R5BiCe1KigxuIVO473V2jMA,10011
|
89
|
+
provide/foundation/logger/processors/trace.py,sha256=9EZe5lLUlcTnxyz6opW_1SYv5Gq6PZj6TnpcVWeXGlQ,3596
|
90
|
+
provide/foundation/logger/ratelimit/__init__.py,sha256=eOax-Hl-IMU7dAaeDWNa521Mdqmr_YRWy2Nm5yj24AI,727
|
91
|
+
provide/foundation/logger/ratelimit/limiters.py,sha256=ICIMdrnqoOY-e6QSg8--VvtnrY4xarsmnWwq7gB3xhg,9933
|
92
|
+
provide/foundation/logger/ratelimit/processor.py,sha256=AObce82HhL_KHO4UusNjw3TqDeCrP0buLibbWU0xc30,7523
|
93
|
+
provide/foundation/logger/ratelimit/queue_limiter.py,sha256=qjZuxMFX8pbz-PusVf3inO9dCvqlorfEqjVsjSe8REM,10685
|
94
|
+
provide/foundation/logger/setup/__init__.py,sha256=3LlVoogT5DRH74ifvpMaG88bf5JBOm5ORucI09HE4BI,655
|
95
|
+
provide/foundation/logger/setup/coordinator.py,sha256=k-HYb76ecUQKBTMUG0EIItbbaKEzbnQ4hGo1ZYhcclM,5157
|
96
|
+
provide/foundation/logger/setup/emoji_resolver.py,sha256=cVBpOf2SzcZo7ui74wp2BGP2f8gNY0qI0IRwMqJD8mE,2281
|
97
|
+
provide/foundation/logger/setup/processors.py,sha256=YU5jhadjX5jRfS9pb6OkijeBRMNO7YpAEM3CJarZ3sU,2500
|
98
|
+
provide/foundation/logger/setup/testing.py,sha256=frK0QlasQqfsOFKNCkXx6iHIGFPbtv0wtnJljib-9rg,1012
|
99
|
+
provide/foundation/metrics/__init__.py,sha256=c-r3zl6vxuL-O2lZxI4oczd8TXlkj43lEHPnAF-MsC8,3212
|
100
|
+
provide/foundation/metrics/otel.py,sha256=5Gl34QturMs7fTRYWgDtky_Tb30lqGES-Axyokk5wDM,4077
|
101
|
+
provide/foundation/metrics/simple.py,sha256=szMcxR5Cy4C2l5Krwo1SSG4EkhflaA7oLZo5tm15Ym8,5185
|
102
|
+
provide/foundation/observability/__init__.py,sha256=nDI_9cCMcv6m8FMK-NEHk_iBKBhqBax9S1P3eocBJ1k,1370
|
103
|
+
provide/foundation/observability/openobserve/__init__.py,sha256=RQvl3VdTCDs700F9OGghLKA47xjV4_Q4au5yzxA4xk0,1922
|
104
|
+
provide/foundation/observability/openobserve/auth.py,sha256=1J2jy9M2dED4EX0MfuJ_skjR8MOP3IpRybbC6KFWhVk,1950
|
105
|
+
provide/foundation/observability/openobserve/client.py,sha256=mhDUtw3CswkwCwm0YYRn3FY5LGJncB4ELhCCAUbe5KM,9160
|
106
|
+
provide/foundation/observability/openobserve/commands.py,sha256=-3IjJqhqYmQNN_H5K-UrboPP4nhAnwkDpnikrvI__HA,10170
|
107
|
+
provide/foundation/observability/openobserve/exceptions.py,sha256=semIReHqNo2VWmqf8WC8BXX5q7Pf0DQQEodGpwvRlHI,771
|
108
|
+
provide/foundation/observability/openobserve/formatters.py,sha256=1S065iG4NeKt8UzhNT3MNKZUaEsIyP2OF-wAKCiY7AQ,8697
|
109
|
+
provide/foundation/observability/openobserve/models.py,sha256=pTi6bSPxyAbmhL03vk5dgvdHb8GdXqpDsEf3zoB7Vrw,3986
|
110
|
+
provide/foundation/observability/openobserve/otlp.py,sha256=1V9RjPVlajYrDvKe4Cj6WJZxK41Q7JEE6blQ8gDUeOY,9591
|
111
|
+
provide/foundation/observability/openobserve/search.py,sha256=-KOxphkVS4H2niBJ3suTbA7nvXrhSiPvHi8-CLD3Qvc,5778
|
112
|
+
provide/foundation/observability/openobserve/streaming.py,sha256=qLSvlmzuHN5kFasLRf2-s2jBXA5k3pUTOn0N6F1IjqE,7353
|
113
|
+
provide/foundation/platform/__init__.py,sha256=exY3CSPsTGoTYhXdbbXHg0_xC-68Sl6_JyYmvXhd8P0,867
|
114
|
+
provide/foundation/platform/detection.py,sha256=eBorkzYZy0eN7QfnqY8ZlOqZdZBW1TDptsK6ol713q8,5404
|
115
|
+
provide/foundation/platform/info.py,sha256=25gXTGXGJ2KNWVummTQa8VeVnFtdutrInE6bLpGylZI,3859
|
116
|
+
provide/foundation/process/__init__.py,sha256=ndfU5COg5vTV9uzYjy7eSy7Opyq6WY-ml-ZfjhKzS4Y,910
|
117
|
+
provide/foundation/process/async_runner.py,sha256=AvmR0kv5A2o5JgVXtuRWdyCFNFnmiaGeyy97l0y1_FQ,12160
|
118
|
+
provide/foundation/process/lifecycle.py,sha256=1YuIJnbzAchpNK883jZT3yXuSyyBRMdWgmtL5slw4nw,13808
|
119
|
+
provide/foundation/process/runner.py,sha256=bIIX5VaaPM-PEyhHO3A_lhkgONKKKZJGwitmyaKKvBY,12057
|
120
|
+
provide/foundation/setup/__init__.py,sha256=nQVxccOTnW8npQWzdvsO5T58IpE6nsvpsTcc_Usw8fY,2912
|
121
|
+
provide/foundation/streams/__init__.py,sha256=HLupH4qoy0N5xF2sdsrEJ1eqir2Cfns7bwOsWAcnMc8,920
|
122
|
+
provide/foundation/streams/console.py,sha256=tUUpdAt_Zxd_B901WkQ6xbbdvY-V4c4LKVfYYfZmvQY,1375
|
123
|
+
provide/foundation/streams/core.py,sha256=eGwT2Y0dw2tGFs8TSxraTrMWojz5SCuplgVImM_uAeE,1907
|
124
|
+
provide/foundation/streams/file.py,sha256=LtmnVx__n1YnaB3edwad2oDg2ZJhN81YgjH9Nh1ssIU,3194
|
125
|
+
provide/foundation/testing/__init__.py,sha256=UIKm0NGIjZZNtA0E-KRiaCA3L6D7_CFUgMdZlRUnAT0,4540
|
126
|
+
provide/foundation/testing/cli.py,sha256=rbln5V524ztjJca-tjVdcReTAc_IDAYsHjq7aUj-9Ws,6210
|
127
|
+
provide/foundation/testing/crypto.py,sha256=wGnYEPh2leJ8F2lP6LKxmV6oLizONdMrHLyu7WEdGDw,5938
|
128
|
+
provide/foundation/testing/fixtures.py,sha256=kdqsiKwbJZIbBUzqBVWEgMKQrPaa6bNofb7AS3eJ5xQ,1488
|
129
|
+
provide/foundation/testing/hub.py,sha256=XI-6X8Xn36UXZ0e3iydPd8fxFS6_1ZnCo3u_gR7Slf4,581
|
130
|
+
provide/foundation/testing/logger.py,sha256=INdiZ41gtVEuDMOL9JhRPTvcf2MZ0V7yrPA3dfyhdOo,3220
|
131
|
+
provide/foundation/testing/streams.py,sha256=c8vWlVatTpOUIfsna5JBYwSWh_Z70Ne7GwQUFv1o2Aw,1288
|
132
|
+
provide/foundation/tracer/__init__.py,sha256=VfAadJr8_EBKZfDwcbk24SZoNJVBEgmM0xF0eZm9-Zc,1279
|
133
|
+
provide/foundation/tracer/context.py,sha256=ZVCwM-fbH7b9wnYRi1tedTNV90xrTPFerYll3AJiAS0,2773
|
134
|
+
provide/foundation/tracer/otel.py,sha256=gdLUXipI59jyBh1aB27UO5eFf17I4iMfTVDWTjEwlBM,4307
|
135
|
+
provide/foundation/tracer/spans.py,sha256=fpHfWs_kMEKxzPJTww4Jq9H9elGQSyedlOMSHm-VDng,5909
|
136
|
+
provide/foundation/utils/__init__.py,sha256=gAL1wdO7lR8agX3jrxZpFReOBZ1qGSQm37pMM5j5hCQ,2003
|
137
|
+
provide/foundation/utils/deps.py,sha256=7PgW8fA-OHZyzWyp_dotMdj0TL2DVguZ8d9auXUwFBM,5411
|
138
|
+
provide/foundation/utils/env.py,sha256=h8xrBtY4kFx7Eix0auhpN0YMMavkJ6QGzLpGILutOvA,13056
|
139
|
+
provide/foundation/utils/formatting.py,sha256=W7HoHSAggaUNqZsq7WuAoLRDY17k7KPMzVoh3Vknv8w,11823
|
140
|
+
provide/foundation/utils/parsing.py,sha256=YC33SiOy3z1dB25ljUieXILvEe9wDRLewbpxohKHHgc,6201
|
141
|
+
provide/foundation/utils/rate_limiting.py,sha256=r7sXnNdPnxpaPf573Lqd2dMtwHlC0xpy0SbaCY35s94,4202
|
142
|
+
provide/foundation/utils/streams.py,sha256=zeMIClORB9jZGBXesTt6_JxGH7g2GWz5rK-ZAUbtemI,2241
|
143
|
+
provide/foundation/utils/timing.py,sha256=hJ5nAbcJqDpjGT9Fv3cPrmUNpVht_Phgn1xcUqV4Obk,2889
|
144
|
+
provide_foundation-0.0.0.dev0.dist-info/licenses/LICENSE,sha256=MF41r9jvmup6wWhm4vGl6AcNCIIfi_zyj84Ygf77GAc,11344
|
145
|
+
provide_foundation-0.0.0.dev0.dist-info/METADATA,sha256=xWe7ugifdjoyNLUFC9EJLKsxjNvqNjz3WrFGeMXIX1g,14718
|
146
|
+
provide_foundation-0.0.0.dev0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
147
|
+
provide_foundation-0.0.0.dev0.dist-info/entry_points.txt,sha256=8UyzsVlBIUyV3olZWgIMAxYQG34vUfdQY71LUFGzidQ,69
|
148
|
+
provide_foundation-0.0.0.dev0.dist-info/top_level.txt,sha256=zwyv2grD4005JoQoP1v9wIYXfqgW9sgFuikW7uYZllw,8
|
149
|
+
provide_foundation-0.0.0.dev0.dist-info/RECORD,,
|