focus-data-toolkit 0.11.0__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.
- focus_data_toolkit/__init__.py +69 -0
- focus_data_toolkit/__main__.py +6 -0
- focus_data_toolkit/_version.py +8 -0
- focus_data_toolkit/cli.py +968 -0
- focus_data_toolkit/context/__init__.py +88 -0
- focus_data_toolkit/context/billing.py +54 -0
- focus_data_toolkit/context/provider.py +90 -0
- focus_data_toolkit/convert/__init__.py +708 -0
- focus_data_toolkit/convert/billing_period.py +65 -0
- focus_data_toolkit/convert/contract_applied.py +235 -0
- focus_data_toolkit/convert/contract_commitment.py +182 -0
- focus_data_toolkit/convert/cost_and_usage.py +179 -0
- focus_data_toolkit/convert/detect.py +39 -0
- focus_data_toolkit/convert/invoice_detail.py +199 -0
- focus_data_toolkit/convert/streaming.py +1030 -0
- focus_data_toolkit/errors.py +145 -0
- focus_data_toolkit/focus_json.py +68 -0
- focus_data_toolkit/generators/__init__.py +61 -0
- focus_data_toolkit/generators/_shim.py +43 -0
- focus_data_toolkit/generators/engine/__init__.py +14 -0
- focus_data_toolkit/generators/engine/context.py +12 -0
- focus_data_toolkit/generators/engine/determinism.py +117 -0
- focus_data_toolkit/generators/engine/json_focus.py +63 -0
- focus_data_toolkit/generators/engine/ladder.py +71 -0
- focus_data_toolkit/generators/engine/scenarios_core.py +380 -0
- focus_data_toolkit/generators/engine/serialize.py +151 -0
- focus_data_toolkit/generators/generate_aws_focus_1_2.py +19 -0
- focus_data_toolkit/generators/generate_aws_focus_1_3.py +20 -0
- focus_data_toolkit/generators/generate_azure_focus_1_2.py +17 -0
- focus_data_toolkit/generators/generate_azure_focus_1_3.py +17 -0
- focus_data_toolkit/generators/generate_gcp_focus_1_2.py +17 -0
- focus_data_toolkit/generators/generate_gcp_focus_1_3.py +17 -0
- focus_data_toolkit/generators/providers/__init__.py +29 -0
- focus_data_toolkit/generators/providers/aws.py +186 -0
- focus_data_toolkit/generators/providers/azure.py +191 -0
- focus_data_toolkit/generators/providers/gcp.py +194 -0
- focus_data_toolkit/generators/providers/profile.py +123 -0
- focus_data_toolkit/generators/scenarios.py +178 -0
- focus_data_toolkit/generators/versions/__init__.py +17 -0
- focus_data_toolkit/generators/versions/adapter.py +41 -0
- focus_data_toolkit/generators/versions/v1_2.py +111 -0
- focus_data_toolkit/generators/versions/v1_3.py +154 -0
- focus_data_toolkit/io/__init__.py +1 -0
- focus_data_toolkit/io/atomic_writer.py +462 -0
- focus_data_toolkit/io/csv_io.py +128 -0
- focus_data_toolkit/io/parquet_io.py +528 -0
- focus_data_toolkit/io/records.py +92 -0
- focus_data_toolkit/io/row_source.py +117 -0
- focus_data_toolkit/lifecycle.py +342 -0
- focus_data_toolkit/manifest.py +114 -0
- focus_data_toolkit/model/__init__.py +43 -0
- focus_data_toolkit/model/capabilities.py +66 -0
- focus_data_toolkit/model/focus_1_4_decimal_scale.json +10 -0
- focus_data_toolkit/model/focus_1_4_model.json +1913 -0
- focus_data_toolkit/model/focus_1_4_servicesubcategory.json +84 -0
- focus_data_toolkit/model/focus_json_keys.py +112 -0
- focus_data_toolkit/model/iso_4217_currencies.json +23 -0
- focus_data_toolkit/model/json_schema_check.py +205 -0
- focus_data_toolkit/model/json_schemas/allocatedmethoddetailsobjectschema.json +82 -0
- focus_data_toolkit/model/json_schemas/commitmentprogrameligibilitydetailsobjectschema.json +41 -0
- focus_data_toolkit/model/json_schemas/contractappliedobjectschema.json +104 -0
- focus_data_toolkit/model/json_schemas/contractcommitmentapplicabilityobjectschema.json +290 -0
- focus_data_toolkit/model/json_schemas/json_schemas_provenance.json +38 -0
- focus_data_toolkit/model/model_provenance.json +58 -0
- focus_data_toolkit/model/validator.py +498 -0
- focus_data_toolkit/modes.py +18 -0
- focus_data_toolkit/official_validator.py +61 -0
- focus_data_toolkit/progress.py +89 -0
- focus_data_toolkit/provenance.py +106 -0
- focus_data_toolkit/py.typed +1 -0
- focus_data_toolkit/runtime.py +243 -0
- focus_data_toolkit/schema/__init__.py +17 -0
- focus_data_toolkit/schema/detection.py +274 -0
- focus_data_toolkit/schema/registry.py +127 -0
- focus_data_toolkit/storage/__init__.py +1 -0
- focus_data_toolkit/storage/external_index.py +99 -0
- focus_data_toolkit/storage/spill.py +150 -0
- focus_data_toolkit/studio/__init__.py +19 -0
- focus_data_toolkit/studio/app.py +467 -0
- focus_data_toolkit/studio/config.py +42 -0
- focus_data_toolkit/studio/frontend/app.js +214 -0
- focus_data_toolkit/studio/frontend/index.html +101 -0
- focus_data_toolkit/studio/frontend/style.css +60 -0
- focus_data_toolkit/studio/jobs.py +142 -0
- focus_data_toolkit/studio/preview.py +32 -0
- focus_data_toolkit/studio/security.py +125 -0
- focus_data_toolkit/studio/server.py +71 -0
- focus_data_toolkit/supplement/__init__.py +50 -0
- focus_data_toolkit/supplement/adapters/__init__.py +21 -0
- focus_data_toolkit/supplement/adapters/adapters_provenance.json +39 -0
- focus_data_toolkit/supplement/adapters/aws_invoice_summary.json +24 -0
- focus_data_toolkit/supplement/adapters/aws_savings_plans.json +31 -0
- focus_data_toolkit/supplement/adapters/azure_invoice.json +25 -0
- focus_data_toolkit/supplement/adapters/gcp_compute_commitments.json +28 -0
- focus_data_toolkit/supplement/adapters/registry.py +215 -0
- focus_data_toolkit/supplement/apply.py +318 -0
- focus_data_toolkit/supplement/gaps.py +219 -0
- focus_data_toolkit/supplement/kinds.py +118 -0
- focus_data_toolkit/supplement/loader.py +409 -0
- focus_data_toolkit/supplement/spec.py +74 -0
- focus_data_toolkit/supplement/validate.py +215 -0
- focus_data_toolkit/validate/__init__.py +15 -0
- focus_data_toolkit/validate/allocation.py +333 -0
- focus_data_toolkit/validate/bundle.py +254 -0
- focus_data_toolkit/validate/codes.py +93 -0
- focus_data_toolkit/validate/corrections.py +245 -0
- focus_data_toolkit/validate/reconciliation.py +98 -0
- focus_data_toolkit/validate/referential.py +289 -0
- focus_data_toolkit-0.11.0.dist-info/METADATA +519 -0
- focus_data_toolkit-0.11.0.dist-info/RECORD +116 -0
- focus_data_toolkit-0.11.0.dist-info/WHEEL +5 -0
- focus_data_toolkit-0.11.0.dist-info/entry_points.txt +2 -0
- focus_data_toolkit-0.11.0.dist-info/licenses/LICENSE +21 -0
- focus_data_toolkit-0.11.0.dist-info/licenses/LICENSES/CC-BY-4.0.txt +156 -0
- focus_data_toolkit-0.11.0.dist-info/licenses/NOTICE +60 -0
- focus_data_toolkit-0.11.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""focus-data-toolkit — FOCUS sample-data generation, 1.x -> 1.4 conversion, validation.
|
|
2
|
+
|
|
3
|
+
Public API:
|
|
4
|
+
|
|
5
|
+
- :func:`focus_data_toolkit.convert.convert_to_focus_1_4` — convert FOCUS 1.2/1.3
|
|
6
|
+
rows into the four FOCUS 1.4 datasets (small-volume, in-memory).
|
|
7
|
+
- :func:`focus_data_toolkit.convert.convert_files` — the same conversion, streamed from a
|
|
8
|
+
Cost and Usage file with **bounded memory** (large client data), to CSV or Parquet.
|
|
9
|
+
- :func:`focus_data_toolkit.schema.detect_focus_schema` — identify the FOCUS dataset and
|
|
10
|
+
version of a header row, with a confidence assessment.
|
|
11
|
+
- :func:`validate_dataset_bundle` (alias :func:`validate_bundle`) — cross-dataset
|
|
12
|
+
(referential / reconciliation / split-allocation / lifecycle) validation of a bundle of
|
|
13
|
+
datasets. Distinct from the per-dataset linter below.
|
|
14
|
+
- :func:`focus_data_toolkit.model.validator.lint_focus_1_4_structure` — structurally
|
|
15
|
+
+ semantically lint rows against the committed FOCUS 1.4 data model. (A linter, not a full
|
|
16
|
+
FOCUS conformance validator; ``validate_focus_1_4`` is a deprecated alias.)
|
|
17
|
+
- :mod:`focus_data_toolkit.generators` — deterministic, provider-realistic FOCUS 1.2/1.3
|
|
18
|
+
source generators for AWS, Azure and GCP.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from focus_data_toolkit._version import __version__
|
|
22
|
+
from focus_data_toolkit.convert import (
|
|
23
|
+
ConversionCancelled,
|
|
24
|
+
ConversionResult,
|
|
25
|
+
convert_files,
|
|
26
|
+
convert_to_focus_1_4,
|
|
27
|
+
)
|
|
28
|
+
from focus_data_toolkit.lifecycle import (
|
|
29
|
+
DatasetInstance,
|
|
30
|
+
check_dataset_instances,
|
|
31
|
+
check_instance_chains,
|
|
32
|
+
check_status_transitions,
|
|
33
|
+
)
|
|
34
|
+
from focus_data_toolkit.model.validator import (
|
|
35
|
+
LintReport,
|
|
36
|
+
ValidationReport,
|
|
37
|
+
Violation,
|
|
38
|
+
lint_focus_1_4_structure,
|
|
39
|
+
validate_focus_1_4,
|
|
40
|
+
)
|
|
41
|
+
from focus_data_toolkit.progress import ProgressEvent
|
|
42
|
+
from focus_data_toolkit.schema import SchemaDetectionResult, detect_focus_schema
|
|
43
|
+
from focus_data_toolkit.validate import BundleReport, validate_dataset_bundle
|
|
44
|
+
|
|
45
|
+
# Alias matching the API name used in the P1 plan / docs.
|
|
46
|
+
validate_bundle = validate_dataset_bundle
|
|
47
|
+
|
|
48
|
+
__all__ = [
|
|
49
|
+
"BundleReport",
|
|
50
|
+
"ConversionCancelled",
|
|
51
|
+
"ConversionResult",
|
|
52
|
+
"DatasetInstance",
|
|
53
|
+
"LintReport",
|
|
54
|
+
"ProgressEvent",
|
|
55
|
+
"SchemaDetectionResult",
|
|
56
|
+
"ValidationReport",
|
|
57
|
+
"Violation",
|
|
58
|
+
"__version__",
|
|
59
|
+
"check_dataset_instances",
|
|
60
|
+
"check_instance_chains",
|
|
61
|
+
"check_status_transitions",
|
|
62
|
+
"convert_files",
|
|
63
|
+
"convert_to_focus_1_4",
|
|
64
|
+
"detect_focus_schema",
|
|
65
|
+
"lint_focus_1_4_structure",
|
|
66
|
+
"validate_bundle",
|
|
67
|
+
"validate_dataset_bundle",
|
|
68
|
+
"validate_focus_1_4",
|
|
69
|
+
]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""Single source of truth for the package version.
|
|
2
|
+
|
|
3
|
+
Kept deliberately import-free so the build backend can read
|
|
4
|
+
``[tool.setuptools.dynamic] version = {attr = "focus_data_toolkit._version.__version__"}``
|
|
5
|
+
without importing the package (which would pull in optional/runtime modules at build time).
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "0.11.0"
|