# provide.foundation
**A Comprehensive Python Foundation Library for Modern Applications**
<p align="center">
<a href="https://pypi.org/project/provide-foundation/">
<img alt="PyPI" src="https://img.shields.io/pypi/v/provide-foundation.svg">
</a>
<a href="https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml">
<img alt="CI Status" src="https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml/badge.svg">
</a>
<a href="https://codecov.io/gh/provide-io/provide-foundation">
<img src="https://codecov.io/gh/provide-io/provide-foundation/branch/main/graph/badge.svg"/>
</a>
<a href="https://github.com/provide-io/provide-foundation/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/provide-io/provide-foundation.svg">
</a>
</p>
---
**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.
---
## Installation
```bash
# Using uv (recommended)
uv pip install provide-foundation
# Using pip
pip install provide-foundation
```
### Optional Dependencies
provide.foundation has optional feature sets that require additional dependencies:
| Feature | Install Command | Required For |
|---------|----------------|--------------|
| **Basic logging** | `pip install provide-foundation` | Core logging functionality |
| **CLI framework** | `pip install provide-foundation[cli]` | Command-line interface features |
| **Cryptography** | `pip install provide-foundation[crypto]` | Hash functions, digital signatures, certificates |
| **OpenTelemetry** | `pip install provide-foundation[opentelemetry]` | Distributed tracing and metrics |
| **All features** | `pip install provide-foundation[all]` | Everything above |
> **Quick Start Tip**: For immediate use with just logging, install the base package. Add extras as needed.
---
## What's Included
### Core Components
#### **Structured Logging**
Beautiful, performant logging built on `structlog` with event-enriched structured logging and zero configuration required.
```python
# Simple usage - works immediately with base install
from provide.foundation import logger
logger.info("Application started", version="1.0.0")
logger.error("Database connection failed", host="db.example.com", retry_count=3)
# Full setup with tracing/metrics (requires [opentelemetry] extra)
from provide.foundation import setup_telemetry
setup_telemetry() # Configures logging + optional tracing/metrics
```
#### **CLI Framework**
Build command-line interfaces with automatic help generation and component registration.
> **Requires**: `pip install provide-foundation[cli]`
```python
# From examples/12_cli_application.py
from provide.foundation.hub import register_command
from provide.foundation.cli import echo_success
@register_command("init", category="project")
def init_command(name: str = "myproject", template: str = "default"):
"""Initialize a new project."""
echo_success(f"Initializing project '{name}' with template '{template}'")
```
#### **Configuration Management**
Flexible configuration system supporting environment variables, files, and runtime updates.
```python
# From examples/11_config_management.py
from provide.foundation.config import BaseConfig, ConfigManager, field
from attrs import define
@define
class AppConfig(BaseConfig):
app_name: str = field(default="my-app", description="Application name")
port: int = field(default=8080, description="Server port")
debug: bool = field(default=False, description="Debug mode")
manager = ConfigManager()
manager.register("app", config=AppConfig())
config = manager.get("app")
```
#### **Error Handling**
Comprehensive error handling with retry logic and error boundaries.
```python
# From examples/05_exception_handling.py
from provide.foundation import logger, with_error_handling
@with_error_handling
def risky_operation():
"""Operation that might fail."""
result = perform_calculation()
logger.info("operation_succeeded", result=result)
return result
```
#### **Cryptographic Utilities**
Comprehensive cryptographic operations with modern algorithms and secure defaults.
> **Requires**: `pip install provide-foundation[crypto]`
```python
from provide.foundation.crypto import hash_file, create_self_signed, sign_data
# File hashing and verification
hash_result = hash_file("document.pdf", algorithm="sha256")
# Digital signatures
signature = sign_data(data, private_key, algorithm="ed25519")
# Certificate generation
cert, key = create_self_signed("example.com", key_size=2048)
```
#### **File Operations**
Atomic file operations with format support and safety guarantees.
```python
from provide.foundation.file import atomic_write, read_json, safe_copy
# Atomic file operations
atomic_write("config.json", {"key": "value"})
data = read_json("config.json")
# Safe file operations
safe_copy("source.txt", "backup.txt")
```
#### **Console I/O**
Enhanced console input/output with color support, JSON mode, and interactive prompts.
```python
from provide.foundation import pin, pout, perr
# Colored output
pout("Success!", color="green")
perr("Error occurred", color="red")
# Interactive input
name = pin("What's your name?")
password = pin("Enter password:", password=True)
# JSON mode for scripts
pout({"status": "ok", "data": results}, json=True)
```
#### **Platform Utilities**
Cross-platform detection and system information gathering.
```python
from provide.foundation import platform
# Platform detection
if platform.is_linux():
logger.info("Running on Linux")
system_info = platform.get_system_info()
logger.info("System info", **system_info.to_dict())
```
#### **Process Execution**
Safe subprocess execution with streaming and async support.
```python
from provide.foundation import process
# Synchronous execution
result = process.run_command(["git", "status"])
if result.returncode == 0:
logger.info("Git status", output=result.stdout)
# Streaming output
for line in process.stream_command(["tail", "-f", "app.log"]):
logger.info("Log line", line=line)
```
#### **Registry Pattern**
Flexible registry system for managing components and commands.
```python
# From examples/12_cli_application.py
from provide.foundation.hub import Hub
class DatabaseResource:
def __init__(self, name: str) -> None:
self.name = name
self.connected = False
def __enter__(self):
"""Initialize database connection."""
self.connected = True
return self
hub = Hub()
hub.add_component(DatabaseResource, name="database", dimension="resource", version="1.0.0")
db_class = hub.get_component("database", dimension="resource")
```
See [examples/](examples/) for more comprehensive examples.
---
## Quick Start Examples
### Building a CLI Application
```python
# From examples/12_cli_application.py
from provide.foundation.hub import Hub, register_command
from provide.foundation.cli import echo_info, echo_success
@register_command("status", aliases=["st", "info"])
def status_command(verbose: bool = False):
"""Show system status."""
hub = Hub()
echo_info(f"Registered components: {len(hub.list_components())}")
echo_info(f"Registered commands: {len(hub.list_commands())}")
if __name__ == "__main__":
hub = Hub()
cli = hub.create_cli(name="myapp", version="1.0.0")
cli()
```
### Configuration-Driven Application
```python
# From examples/11_config_management.py and examples/08_env_variables_config.py
from provide.foundation import setup_telemetry, logger
from provide.foundation.config import RuntimeConfig, env_field, ConfigManager
from attrs import define
@define
class DatabaseConfig(RuntimeConfig):
"""Database configuration from environment."""
host: str = env_field(default="localhost", env_var="DB_HOST")
port: int = env_field(default=5432, env_var="DB_PORT", parser=int)
database: str = env_field(default="mydb", env_var="DB_NAME")
# Setup logging from environment
setup_telemetry() # Uses PROVIDE_* env vars automatically
# Load configuration
db_config = DatabaseConfig.from_env()
logger.info("Database configured", host=db_config.host, port=db_config.port)
```
### Production Patterns
```python
# From examples/10_production_patterns.py
from provide.foundation import logger, error_boundary
import asyncio
class ProductionService:
def __init__(self):
self.logger = logger.bind(component="production_service")
async def process_batch(self, items):
"""Process items with error boundaries."""
results = []
for item in items:
with error_boundary(self.logger, f"item_{item['id']}"):
result = await self.process_item(item)
results.append(result)
return results
```
---
## Configuration
### Environment Variables
All configuration can be controlled through environment variables:
| Variable | Description | Default |
|----------|-------------|---------|
| `PROVIDE_SERVICE_NAME` | Service identifier in logs | `None` |
| `PROVIDE_LOG_LEVEL` | Minimum log level | `DEBUG` |
| `PROVIDE_LOG_CONSOLE_FORMATTER` | Output format (`key_value` or `json`) | `key_value` |
| `PROVIDE_LOG_OMIT_TIMESTAMP` | Remove timestamps from console | `false` |
| `PROVIDE_LOG_FILE` | Log to file path | `None` |
| `PROVIDE_LOG_MODULE_LEVELS` | Per-module log levels | `""` |
| `PROVIDE_CONFIG_PATH` | Configuration file path | `None` |
| `PROVIDE_ENV` | Environment (dev/staging/prod) | `dev` |
| `PROVIDE_DEBUG` | Enable debug mode | `false` |
| `PROVIDE_JSON_OUTPUT` | Force JSON output | `false` |
| `PROVIDE_NO_COLOR` | Disable colored output | `false` |
### Configuration Files
Support for YAML, JSON, TOML, and .env files:
```yaml
# config.yaml
service_name: my-app
environment: production
logging:
level: INFO
formatter: json
file: /var/log/myapp.log
database:
host: db.example.com
port: 5432
pool_size: 20
```
---
## Advanced Features
### Contextual Logging
```python
# From examples/06_trace_logging.py
from provide.foundation import logger
# Add context via structured fields
logger.info("request_processing",
request_id="req-123",
user_id="user-456",
method="GET",
path="/api/users")
```
### Timing and Profiling
```python
from provide.foundation import timed_block
with timed_block(logger, "database_query"):
results = db.query("SELECT * FROM users")
# Automatically logs: "database_query completed duration_seconds=0.123"
```
### Async Support
```python
import asyncio
from provide.foundation import logger, process
async def process_items(items):
for item in items:
logger.info("Processing", item_id=item.id)
await process_item(item)
# Async process execution
result = await process.async_run_command(["curl", "-s", "api.example.com"])
logger.info("API response", status=result.returncode)
# Thread-safe and async-safe logging
asyncio.run(process_items(items))
```
### Example Files
Complete working examples are available in the [examples/](examples/) directory:
- `00_simple_start.py` - Zero-setup logging (base install)
- `01_quick_start.py` - Full telemetry setup (requires [opentelemetry])
- `02_custom_configuration.py` - Custom telemetry configuration
- `03_named_loggers.py` - Module-specific loggers
- `04_das_logging.py` - Domain-Action-Status pattern
- `05_exception_handling.py` - Error handling patterns
- `06_trace_logging.py` - Distributed tracing
- `07_module_filtering.py` - Log filtering by module
- `08_env_variables_config.py` - Environment-based config
- `09_async_usage.py` - Async logging patterns
- `10_production_patterns.py` - Production best practices
- `11_config_management.py` - Complete configuration system
- `12_cli_application.py` - Full CLI application example
---
<p align="center">
Built by <a href="https://provide.io">provide.io</a>
</p>
Raw data
{
"_id": null,
"home_page": null,
"name": "provide-foundation",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "\"provide.io\" <code@provide.io>",
"keywords": "telemetry, logging, tracing, python, pyvider",
"author": null,
"author_email": "Tim Perkins <code@tim.life>",
"download_url": "https://files.pythonhosted.org/packages/ba/68/1f5474fb8901eed11e7be25da48324cb27a247995a77919edb047ea9f999/provide_foundation-0.0.0.dev3.tar.gz",
"platform": null,
"description": "# provide.foundation\n\n**A Comprehensive Python Foundation Library for Modern Applications**\n\n<p align=\"center\">\n <a href=\"https://pypi.org/project/provide-foundation/\">\n <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/provide-foundation.svg\">\n </a>\n <a href=\"https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml\">\n <img alt=\"CI Status\" src=\"https://github.com/provide-io/provide-foundation/actions/workflows/ci.yml/badge.svg\">\n </a>\n <a href=\"https://codecov.io/gh/provide-io/provide-foundation\">\n <img src=\"https://codecov.io/gh/provide-io/provide-foundation/branch/main/graph/badge.svg\"/>\n </a>\n <a href=\"https://github.com/provide-io/provide-foundation/blob/main/LICENSE\">\n <img alt=\"License\" src=\"https://img.shields.io/github/license/provide-io/provide-foundation.svg\">\n </a>\n</p>\n\n---\n\n**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.\n\n---\n\n## Installation\n\n```bash\n# Using uv (recommended)\nuv pip install provide-foundation\n\n# Using pip\npip install provide-foundation\n```\n\n### Optional Dependencies\n\nprovide.foundation has optional feature sets that require additional dependencies:\n\n| Feature | Install Command | Required For |\n|---------|----------------|--------------|\n| **Basic logging** | `pip install provide-foundation` | Core logging functionality |\n| **CLI framework** | `pip install provide-foundation[cli]` | Command-line interface features |\n| **Cryptography** | `pip install provide-foundation[crypto]` | Hash functions, digital signatures, certificates |\n| **OpenTelemetry** | `pip install provide-foundation[opentelemetry]` | Distributed tracing and metrics |\n| **All features** | `pip install provide-foundation[all]` | Everything above |\n\n> **Quick Start Tip**: For immediate use with just logging, install the base package. Add extras as needed.\n\n---\n\n## What's Included\n\n### Core Components\n\n#### **Structured Logging**\nBeautiful, performant logging built on `structlog` with event-enriched structured logging and zero configuration required.\n\n```python\n# Simple usage - works immediately with base install\nfrom provide.foundation import logger\n\nlogger.info(\"Application started\", version=\"1.0.0\")\nlogger.error(\"Database connection failed\", host=\"db.example.com\", retry_count=3)\n\n# Full setup with tracing/metrics (requires [opentelemetry] extra)\nfrom provide.foundation import setup_telemetry\nsetup_telemetry() # Configures logging + optional tracing/metrics\n```\n\n#### **CLI Framework**\nBuild command-line interfaces with automatic help generation and component registration.\n\n> **Requires**: `pip install provide-foundation[cli]`\n\n```python\n# From examples/12_cli_application.py\nfrom provide.foundation.hub import register_command\nfrom provide.foundation.cli import echo_success\n\n@register_command(\"init\", category=\"project\")\ndef init_command(name: str = \"myproject\", template: str = \"default\"):\n \"\"\"Initialize a new project.\"\"\"\n echo_success(f\"Initializing project '{name}' with template '{template}'\")\n```\n\n#### **Configuration Management**\nFlexible configuration system supporting environment variables, files, and runtime updates.\n\n```python\n# From examples/11_config_management.py\nfrom provide.foundation.config import BaseConfig, ConfigManager, field\nfrom attrs import define\n\n@define\nclass AppConfig(BaseConfig):\n app_name: str = field(default=\"my-app\", description=\"Application name\")\n port: int = field(default=8080, description=\"Server port\")\n debug: bool = field(default=False, description=\"Debug mode\")\n\nmanager = ConfigManager()\nmanager.register(\"app\", config=AppConfig())\nconfig = manager.get(\"app\")\n```\n\n#### **Error Handling**\nComprehensive error handling with retry logic and error boundaries.\n\n```python\n# From examples/05_exception_handling.py\nfrom provide.foundation import logger, with_error_handling\n\n@with_error_handling\ndef risky_operation():\n \"\"\"Operation that might fail.\"\"\"\n result = perform_calculation()\n logger.info(\"operation_succeeded\", result=result)\n return result\n```\n\n#### **Cryptographic Utilities**\nComprehensive cryptographic operations with modern algorithms and secure defaults.\n\n> **Requires**: `pip install provide-foundation[crypto]`\n\n```python\nfrom provide.foundation.crypto import hash_file, create_self_signed, sign_data\n\n# File hashing and verification\nhash_result = hash_file(\"document.pdf\", algorithm=\"sha256\")\n\n# Digital signatures\nsignature = sign_data(data, private_key, algorithm=\"ed25519\")\n\n# Certificate generation\ncert, key = create_self_signed(\"example.com\", key_size=2048)\n```\n\n#### **File Operations**\nAtomic file operations with format support and safety guarantees.\n\n```python\nfrom provide.foundation.file import atomic_write, read_json, safe_copy\n\n# Atomic file operations\natomic_write(\"config.json\", {\"key\": \"value\"})\ndata = read_json(\"config.json\")\n\n# Safe file operations\nsafe_copy(\"source.txt\", \"backup.txt\")\n```\n\n#### **Console I/O**\nEnhanced console input/output with color support, JSON mode, and interactive prompts.\n\n```python\nfrom provide.foundation import pin, pout, perr\n\n# Colored output\npout(\"Success!\", color=\"green\")\nperr(\"Error occurred\", color=\"red\")\n\n# Interactive input\nname = pin(\"What's your name?\")\npassword = pin(\"Enter password:\", password=True)\n\n# JSON mode for scripts\npout({\"status\": \"ok\", \"data\": results}, json=True)\n```\n\n#### **Platform Utilities**\nCross-platform detection and system information gathering.\n\n```python\nfrom provide.foundation import platform\n\n# Platform detection\nif platform.is_linux():\n logger.info(\"Running on Linux\")\n\nsystem_info = platform.get_system_info()\nlogger.info(\"System info\", **system_info.to_dict())\n```\n\n#### **Process Execution**\nSafe subprocess execution with streaming and async support.\n\n```python\nfrom provide.foundation import process\n\n# Synchronous execution\nresult = process.run_command([\"git\", \"status\"])\nif result.returncode == 0:\n logger.info(\"Git status\", output=result.stdout)\n\n# Streaming output\nfor line in process.stream_command([\"tail\", \"-f\", \"app.log\"]):\n logger.info(\"Log line\", line=line)\n```\n\n#### **Registry Pattern**\nFlexible registry system for managing components and commands.\n\n```python\n# From examples/12_cli_application.py\nfrom provide.foundation.hub import Hub\n\nclass DatabaseResource:\n def __init__(self, name: str) -> None:\n self.name = name\n self.connected = False\n \n def __enter__(self):\n \"\"\"Initialize database connection.\"\"\"\n self.connected = True\n return self\n\nhub = Hub()\nhub.add_component(DatabaseResource, name=\"database\", dimension=\"resource\", version=\"1.0.0\")\ndb_class = hub.get_component(\"database\", dimension=\"resource\")\n```\n\nSee [examples/](examples/) for more comprehensive examples.\n\n---\n\n## Quick Start Examples\n\n### Building a CLI Application\n\n```python\n# From examples/12_cli_application.py\nfrom provide.foundation.hub import Hub, register_command\nfrom provide.foundation.cli import echo_info, echo_success\n\n@register_command(\"status\", aliases=[\"st\", \"info\"])\ndef status_command(verbose: bool = False):\n \"\"\"Show system status.\"\"\"\n hub = Hub()\n echo_info(f\"Registered components: {len(hub.list_components())}\")\n echo_info(f\"Registered commands: {len(hub.list_commands())}\")\n\nif __name__ == \"__main__\":\n hub = Hub()\n cli = hub.create_cli(name=\"myapp\", version=\"1.0.0\")\n cli()\n```\n\n### Configuration-Driven Application\n\n```python\n# From examples/11_config_management.py and examples/08_env_variables_config.py\nfrom provide.foundation import setup_telemetry, logger\nfrom provide.foundation.config import RuntimeConfig, env_field, ConfigManager\nfrom attrs import define\n\n@define\nclass DatabaseConfig(RuntimeConfig):\n \"\"\"Database configuration from environment.\"\"\"\n host: str = env_field(default=\"localhost\", env_var=\"DB_HOST\")\n port: int = env_field(default=5432, env_var=\"DB_PORT\", parser=int)\n database: str = env_field(default=\"mydb\", env_var=\"DB_NAME\")\n\n# Setup logging from environment\nsetup_telemetry() # Uses PROVIDE_* env vars automatically\n\n# Load configuration\ndb_config = DatabaseConfig.from_env()\nlogger.info(\"Database configured\", host=db_config.host, port=db_config.port)\n```\n\n### Production Patterns\n\n```python\n# From examples/10_production_patterns.py\nfrom provide.foundation import logger, error_boundary\nimport asyncio\n\nclass ProductionService:\n def __init__(self):\n self.logger = logger.bind(component=\"production_service\")\n \n async def process_batch(self, items):\n \"\"\"Process items with error boundaries.\"\"\"\n results = []\n for item in items:\n with error_boundary(self.logger, f\"item_{item['id']}\"):\n result = await self.process_item(item)\n results.append(result)\n return results\n```\n\n---\n\n## Configuration\n\n### Environment Variables\n\nAll configuration can be controlled through environment variables:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `PROVIDE_SERVICE_NAME` | Service identifier in logs | `None` |\n| `PROVIDE_LOG_LEVEL` | Minimum log level | `DEBUG` |\n| `PROVIDE_LOG_CONSOLE_FORMATTER` | Output format (`key_value` or `json`) | `key_value` |\n| `PROVIDE_LOG_OMIT_TIMESTAMP` | Remove timestamps from console | `false` |\n| `PROVIDE_LOG_FILE` | Log to file path | `None` |\n| `PROVIDE_LOG_MODULE_LEVELS` | Per-module log levels | `\"\"` |\n| `PROVIDE_CONFIG_PATH` | Configuration file path | `None` |\n| `PROVIDE_ENV` | Environment (dev/staging/prod) | `dev` |\n| `PROVIDE_DEBUG` | Enable debug mode | `false` |\n| `PROVIDE_JSON_OUTPUT` | Force JSON output | `false` |\n| `PROVIDE_NO_COLOR` | Disable colored output | `false` |\n\n### Configuration Files\n\nSupport for YAML, JSON, TOML, and .env files:\n\n```yaml\n# config.yaml\nservice_name: my-app\nenvironment: production\n\nlogging:\n level: INFO\n formatter: json\n file: /var/log/myapp.log\n\ndatabase:\n host: db.example.com\n port: 5432\n pool_size: 20\n```\n\n---\n\n## Advanced Features\n\n### Contextual Logging\n\n```python\n# From examples/06_trace_logging.py\nfrom provide.foundation import logger\n\n# Add context via structured fields\nlogger.info(\"request_processing\",\n request_id=\"req-123\",\n user_id=\"user-456\",\n method=\"GET\",\n path=\"/api/users\")\n```\n\n### Timing and Profiling\n\n```python\nfrom provide.foundation import timed_block\n\nwith timed_block(logger, \"database_query\"):\n results = db.query(\"SELECT * FROM users\")\n# Automatically logs: \"database_query completed duration_seconds=0.123\"\n```\n\n### Async Support\n\n```python\nimport asyncio\nfrom provide.foundation import logger, process\n\nasync def process_items(items):\n for item in items:\n logger.info(\"Processing\", item_id=item.id)\n await process_item(item)\n\n# Async process execution\nresult = await process.async_run_command([\"curl\", \"-s\", \"api.example.com\"])\nlogger.info(\"API response\", status=result.returncode)\n\n# Thread-safe and async-safe logging\nasyncio.run(process_items(items))\n```\n\n### Example Files\n\nComplete working examples are available in the [examples/](examples/) directory:\n\n- `00_simple_start.py` - Zero-setup logging (base install)\n- `01_quick_start.py` - Full telemetry setup (requires [opentelemetry])\n- `02_custom_configuration.py` - Custom telemetry configuration\n- `03_named_loggers.py` - Module-specific loggers\n- `04_das_logging.py` - Domain-Action-Status pattern\n- `05_exception_handling.py` - Error handling patterns\n- `06_trace_logging.py` - Distributed tracing\n- `07_module_filtering.py` - Log filtering by module\n- `08_env_variables_config.py` - Environment-based config\n- `09_async_usage.py` - Async logging patterns\n- `10_production_patterns.py` - Production best practices\n- `11_config_management.py` - Complete configuration system\n- `12_cli_application.py` - Full CLI application example\n\n---\n\n<p align=\"center\">\n Built by <a href=\"https://provide.io\">provide.io</a>\n</p>\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Foundation Telemetry: An opinionated, developer-friendly telemetry wrapper for Python.",
"version": "0.0.0.dev3",
"project_urls": null,
"split_keywords": [
"telemetry",
" logging",
" tracing",
" python",
" pyvider"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "032f2d394c377cfccf3909b189b8a87b3b6378617eb95f3897d08564d605a0cf",
"md5": "80893ca06ac8842aff1a9f57bbb92fa6",
"sha256": "05c801fdd3584461803a7d5b0b9d7424db1bf84342feb608fdb964c3a1f9cc93"
},
"downloads": -1,
"filename": "provide_foundation-0.0.0.dev3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "80893ca06ac8842aff1a9f57bbb92fa6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 341263,
"upload_time": "2025-09-10T22:23:53",
"upload_time_iso_8601": "2025-09-10T22:23:53.263679Z",
"url": "https://files.pythonhosted.org/packages/03/2f/2d394c377cfccf3909b189b8a87b3b6378617eb95f3897d08564d605a0cf/provide_foundation-0.0.0.dev3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ba681f5474fb8901eed11e7be25da48324cb27a247995a77919edb047ea9f999",
"md5": "992b3157f308eea2bea5671d414c81c5",
"sha256": "401b69fae014eff9480ee6f2aeb2829a7d30eea404e8269de1f45591c58c288d"
},
"downloads": -1,
"filename": "provide_foundation-0.0.0.dev3.tar.gz",
"has_sig": false,
"md5_digest": "992b3157f308eea2bea5671d414c81c5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 261872,
"upload_time": "2025-09-10T22:23:54",
"upload_time_iso_8601": "2025-09-10T22:23:54.869079Z",
"url": "https://files.pythonhosted.org/packages/ba/68/1f5474fb8901eed11e7be25da48324cb27a247995a77919edb047ea9f999/provide_foundation-0.0.0.dev3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-10 22:23:54",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "provide-foundation"
}