profile_io
sqllocks_spindle.inference.profile_io
¶
Profile I/O — export, import, and manage portable domain profiles.
Provides :class:ProfileIO for exporting domain profiles to standalone JSON
files, importing them into other domains, listing available profiles, and
inferring distribution profiles from raw DataFrames.
Classes¶
ExportedProfile
dataclass
¶
A portable profile that can be imported into any domain.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Profile identifier (e.g. |
description |
str
|
Human-readable description of what this profile represents. |
source_domain |
str
|
Name of the domain this profile was exported from
(or |
distributions |
dict[str, dict[str, float]]
|
Mapping of |
ratios |
dict[str, float]
|
Mapping of ratio names to float multipliers. |
metadata |
dict[str, Any]
|
Arbitrary extra information (row counts, column types, etc.). |
ProfileIO
¶
Export, import, and list domain profiles.
All public methods are stateless — no configuration is stored on the
instance. Instantiate with ProfileIO() and call methods directly.
Example::
io = ProfileIO()
io.export_profile(RetailDomain(), Path("retail_profile.json"))
io.import_profile(Path("retail_profile.json"), HealthcareDomain(), save_as="from_retail")
io.list_profiles(RetailDomain())
Methods:¶
export_profile(domain, output_path, profile_name='default')
¶
Export a domain's active profile to a standalone JSON file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
domain
|
Any
|
A :class: |
required |
output_path
|
str | Path
|
Destination file path (created if it does not exist). |
required |
profile_name
|
str
|
Label stored in the exported metadata. |
'default'
|
Returns:
| Type | Description |
|---|---|
Path
|
The resolved :class: |
import_profile(profile_path, target_domain, save_as=None)
¶
Import an exported profile into a target domain's profiles/ directory.
The imported file is converted to the standard domain profile format
(i.e. metadata is stripped; only name, description,
distributions, and ratios are kept).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
profile_path
|
str | Path
|
Path to an exported profile JSON file. |
required |
target_domain
|
Any
|
The domain instance to import into. |
required |
save_as
|
str | None
|
Override the profile name (and filename). When None the
name is taken from the file's |
None
|
Returns:
| Type | Description |
|---|---|
str
|
The name the profile was saved as. |
list_profiles(domain)
¶
List all profiles available for a domain.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
domain
|
Any
|
A :class: |
required |
Returns:
| Type | Description |
|---|---|
list[dict[str, str | int]]
|
A list of dicts with keys |
list[dict[str, str | int]]
|
|
from_dataframe(df, table_name='table', name='inferred')
¶
Create a profile by inferring distributions from a DataFrame.
Categorical columns (object dtype or low cardinality) are converted into normalised distribution weights. High-cardinality columns are skipped.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df
|
DataFrame
|
The source DataFrame. |
required |
table_name
|
str
|
Prefix for distribution keys ( |
'table'
|
name
|
str
|
Name to assign to the resulting profile. |
'inferred'
|
Returns:
| Name | Type | Description |
|---|---|---|
An |
ExportedProfile
|
class: |