Enhanced JSON processing with includes, comments, and more
Project description
pypaya-json
Enhanced JSON processing with includes, comments, and more.
Features
- File Inclusions: Include other JSON files using
"include"declarations - Comment Support: Add comments to JSON files using custom comment characters
- Flexible Configuration: Use as class methods for one-time operations or instances for reusable configurations
- Nested Key Access: Navigate and extract data from nested JSON structures
- Conditional Processing: Enable/disable sections using custom enable keys
- Value Replacement: Replace entire sections with data from external files
Installation
pip install pypaya-json
Quick start
One-time usage (class method)
from pypaya_json import PypayaJSON
# Basic loading
data = PypayaJSON.load("config.json")
# With comments support
data = PypayaJSON.load("config.json", comment_char="#")
# With custom enable key
data = PypayaJSON.load("config.json", enable_key="active")
Reusable configuration (instance)
from pypaya_json import PypayaJSON
# Create a reusable loader
loader = PypayaJSON(enable_key="active", comment_char="//")
# Load multiple files with same settings
config = loader.load_file("config.json")
settings = loader.load_file("settings.json")
Examples
Basic file inclusion
main.json:
{
"app_name": "MyApp",
"include": {
"filename": "database.json"
},
"features": ["auth", "api"]
}
database.json:
{
"host": "localhost",
"port": 5432,
"name": "myapp_db"
}
Result:
data = PypayaJSON.load("main.json")
# {
# "app_name": "MyApp",
# "host": "localhost",
# "port": 5432,
# "name": "myapp_db",
# "features": ["auth", "api"]
# }
Comments support
config.json:
{
"server": {
"host": "0.0.0.0", // Bind to all interfaces
"port": 8080 // Default port
},
// "debug": true, // Commented out
"workers": 4
}
data = PypayaJSON.load("config.json", comment_char="//")
# Comments are automatically stripped
Nested key access
data.json:
{
"database": {
"connections": {
"primary": "postgresql://...",
"replica": "postgresql://..."
}
}
}
main.json:
{
"include": {
"filename": "data.json",
"keys_path": "database/connections/primary"
}
}
Result: "postgresql://..."
Conditional inclusion
{
"base_config": "value",
"include": {
"filename": "optional.json",
"enabled": false
}
}
# With custom enable key
loader = PypayaJSON(enable_key="active")
data = loader.load_file("config.json")
Value replacement
{
"database": {
"replace_value": {
"filename": "secrets.json",
"key": "database_url"
}
}
}
API Reference
PypayaJSON class
Class methods
PypayaJSON.load(path, enable_key="enabled", comment_char=None)- Load JSON file with one-time configuration
Instance methods
PypayaJSON(enable_key="enabled", comment_char=None)- Create reusable loader instanceloader.load_file(path)- Load JSON file using instance configuration
Parameters
path(str): Path to the JSON fileenable_key(str): Key used for conditional inclusion (default: "enabled")comment_char(str, optional): Character that denotes comments (default: None)
Advanced usage
Multiple inclusions
{
"include": [
{"filename": "config1.json"},
{"filename": "config2.json", "keys": ["specific_key"]},
{"filename": "config3.json", "enabled": false}
]
}
Specific key selection
{
"include": {
"filename": "large_config.json",
"keys": ["database", "cache", "logging"]
}
}
Deep nested access
{
"include": {
"filename": "nested.json",
"keys_path": ["level1", "level2", "target_key"]
}
}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypaya_json-0.1.0.tar.gz.
File metadata
- Download URL: pypaya_json-0.1.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da411ed514083cd87038c90da7d1c5b444bb1d11bc25317f486bb6722741b8b2
|
|
| MD5 |
fea3c0883d0158a0e85c3132fcdc7bf3
|
|
| BLAKE2b-256 |
1fa1e85f4304ca1ece8e0f5285b713afcd2c068331e17b5b1614d90f80e9b89c
|
File details
Details for the file pypaya_json-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pypaya_json-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6467f6fe208e7efad5275064677c3efe57e4b7e913ecd834f7d54f935b96af4d
|
|
| MD5 |
3a18f9139cf56780b8633fefa33e2af7
|
|
| BLAKE2b-256 |
fa517fea887eadcc51a71f3cb9a5742e8ef051da2fe0eeea37b6d7482d91a266
|