config-as-json configuration encapsulation for tableio.
Project description
tableio-cfg-json
tableio-cfg-json stores
TableIO configuration as validated JSON
by using config-as-json.
Use it when an application uses TableIO for table-like files and wants
persistent, user-editable configuration for formats, implementations and
format-specific options. The configuration objects are both TableIO
ConfigData objects and config-as-json Config objects, so the same object
can be written as configuration file (as JSON), read back later, validated,
and passed to TableIO.
Is this package for you?
This package is a good fit when one or more of these apply:
- Your application uses TableIO.
- You already use config-as-json, or can accept using it for persistent configuration.
- You want one configuration file to describe one TableIO input or output endpoint.
- You want to nest one or more TableIO endpoint configurations inside a larger application configuration file.
- You want validation and generated user documentation for the TableIO options that are relevant to your application's capabilities.
This package is probably not the right one when:
- You are looking for the table reader or writer itself. Use TableIO directly.
- Your program always uses one hard-coded table format and has no persistent configuration.
- You do not want to use config-as-json for configuration files.
Installation
tableio-cfg-json requires Python 3.12 or newer.
pip install --upgrade tableio-cfg-json
Quick start
Create a compact JSON configuration file for one TableIO endpoint:
from pathlib import Path
import sys
from tableio import FileAccess, access_capabilities
from tableio_cfg_json import tio_json_config_default
config_file = Path('tableio.cfg')
file_access = FileAccess.CREATE
capabilities = access_capabilities(file_access, error_file=sys.stderr)
config = tio_json_config_default(capabilities=capabilities,
file_access=file_access,
format_name='CSV')
config.write(to_json_filename=config_file)
For CSV this writes a small file like:
{
"format_name": "CSV"
}
Read the configuration back and use it with TableIO:
from pathlib import Path
import sys
from tableio import FileAccess, access_capabilities, tio_config_create
from tableio_cfg_json import TioJsonConfig
config_file = Path('tableio.cfg')
table_file = Path('capitals.csv')
file_access = FileAccess.CREATE
capabilities = access_capabilities(file_access, error_file=sys.stderr)
config = TioJsonConfig(capabilities=capabilities,
file_access=file_access,
from_json_filename=config_file)
with tio_config_create(config=config, file_name=table_file,
file_access=file_access,
capabilities=capabilities) as table_io:
table_io.write_table_listdata([
['Capital', 'Country'],
['Copenhagen', 'Denmark']
])
If implementation is omitted, TableIO chooses a matching implementation at
runtime. If the user wants to lock down a specific implementation, it can be
stored explicitly in JSON.
Optional settings can be added at the top level or in format-specific nested
sections such as csv, html and latex. Compact output omits unset
optional values, while template-style output can include all current default
options.
Please see the teaching examples for a more thorough introduction.
Main entry points
-
TioJsonConfigComplete JSON-backed TableIO configuration for one endpoint. It can read JSON, write JSON and be passed to TableIO as normal configuration data. -
tio_config_create()create a TableIO object from aTioJsonConfigobject.
Helpers and details
-
tio_json_config_default()Create a validated defaultTioJsonConfigusing TableIO's recommended choices for the requested capabilities and file access. -
TioJsonCsvConfig,TioJsonHtmlConfig,TioJsonLatexConfigOptional nested configuration sections for format-specific settings. -
describe_config(),describe_config_members(),describe_config_reference(),describe_config_example(),get_config_member_names()andget_general_cfg_info()Helpers for generating plain text syntax guides for configuration files. -
tio_json_config_wizard()Interactive helper for creating one TableIO endpoint configuration through a user interface bridge. -
WizardUiBridgeandWizardUiBridgeConsoleInterfaces for connecting the wizard to a console, GUI or scripted UI.
Validation model
The configuration file (in JSON) stores durable TableIO choices such
as format_name, implementation, character encoding, presentation
options and format-specific settings. Runtime values such as the actual
file name are not stored in this configuration.
Validation happens in two layers:
- config-as-json validates JSON structure, member names and member value types.
- TableIO validates whether the selected format, implementation, capabilities and file access can work together.
Choice values are matched case-insensitively where TableIO defines a finite
set of choices. For example, configuration file may use excel and the
config object will store TableIO's normal Excel spelling after validation.
Nested application configs
TioJsonConfig can be used as the whole configuration file for a small
program, or as a nested member inside a larger config-as-json application
configuration. This is useful when one application has several TableIO
endpoints, for example one input table and two independently configured
output tables.
For larger configs, create each nested TioJsonConfig with the capabilities
and file access for that endpoint. A read endpoint and a create endpoint may
need different defaults and may validate different implementations.
The teaching examples show both styles.
Documentation
-
Teaching examples and walkthroughs: example/src/example/README.md
-
Public API notes: doc/api.md
-
Protected/internal API notes: doc/protected_api.md
-
Source repository: tableio_cfg_json
License
MIT
Test summary
- Test result: 380 passed in 14s
- No flake8 warnings.
- No mypy errors found.
- No python layout warnings.
- Built version(s): 0.1
- Build and test using Python 3.14.4
Project details
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 tableio_cfg_json-0.1.tar.gz.
File metadata
- Download URL: tableio_cfg_json-0.1.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f76fa0e60a3e0171b59c16d64539c3796bb723bb324e249cdeb13faafb3b2dc0
|
|
| MD5 |
35bbfbb22700ee7cac55ab347df2e38b
|
|
| BLAKE2b-256 |
9d9ef478e5b5498bf64ba1f077c871ee60917cbe62f5ae1478bb1da6e0aeac13
|
File details
Details for the file tableio_cfg_json-0.1-py3-none-any.whl.
File metadata
- Download URL: tableio_cfg_json-0.1-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
254369ba6b9220e1eb3e00ccaaaaeffdf3117b94a6369538a8061dfe2d2c11a3
|
|
| MD5 |
46f5ec9db3b707f74549c7e3411b6be6
|
|
| BLAKE2b-256 |
67113dc96eb09a3d9b12a06e0655b1cbe801b38019af1dd84f7ca54efc4f3a40
|