LICENSE
MANIFEST.in
README.md
pyproject.toml
setup.py
src/pycharter/__init__.py
src/pycharter/cli.py
src/pycharter/config.py
src/pycharter/py.typed
src/pycharter.egg-info/PKG-INFO
src/pycharter.egg-info/SOURCES.txt
src/pycharter.egg-info/dependency_links.txt
src/pycharter.egg-info/entry_points.txt
src/pycharter.egg-info/requires.txt
src/pycharter.egg-info/top_level.txt
src/pycharter/api/README.md
src/pycharter/api/__init__.py
src/pycharter/api/main.py
src/pycharter/api/utils.py
src/pycharter/api/dependencies/__init__.py
src/pycharter/api/dependencies/auth.py
src/pycharter/api/dependencies/database.py
src/pycharter/api/dependencies/store.py
src/pycharter/api/models/__init__.py
src/pycharter/api/models/contracts.py
src/pycharter/api/models/docs.py
src/pycharter/api/models/etl.py
src/pycharter/api/models/evolution.py
src/pycharter/api/models/metadata.py
src/pycharter/api/models/metadata_entities.py
src/pycharter/api/models/quality.py
src/pycharter/api/models/schemas.py
src/pycharter/api/models/tracking.py
src/pycharter/api/models/validation.py
src/pycharter/api/routes/__init__.py
src/pycharter/api/routes/v1/__init__.py
src/pycharter/api/routes/v1/auth.py
src/pycharter/api/routes/v1/contracts.py
src/pycharter/api/routes/v1/docs.py
src/pycharter/api/routes/v1/etl.py
src/pycharter/api/routes/v1/evolution.py
src/pycharter/api/routes/v1/metadata.py
src/pycharter/api/routes/v1/quality.py
src/pycharter/api/routes/v1/schemas.py
src/pycharter/api/routes/v1/settings.py
src/pycharter/api/routes/v1/templates.py
src/pycharter/api/routes/v1/tracking.py
src/pycharter/api/routes/v1/validation.py
src/pycharter/api/routes/v1/validation_jobs.py
src/pycharter/contract_builder/__init__.py
src/pycharter/contract_builder/builder.py
src/pycharter/contract_parser/__init__.py
src/pycharter/contract_parser/parser.py
src/pycharter/data/__init__.py
src/pycharter/data/seed/coercion_rules.yaml
src/pycharter/data/seed/compliance_frameworks.yaml
src/pycharter/data/seed/contracts.yaml
src/pycharter/data/seed/data_feeds.yaml
src/pycharter/data/seed/domains.yaml
src/pycharter/data/seed/environments.yaml
src/pycharter/data/seed/metadata.yaml
src/pycharter/data/seed/owners.yaml
src/pycharter/data/seed/schemas.yaml
src/pycharter/data/seed/systems.yaml
src/pycharter/data/seed/tags.yaml
src/pycharter/data/seed/validation_rules.yaml
src/pycharter/data/templates/contract/README.md
src/pycharter/data/templates/contract/template_coercion_rules.yaml
src/pycharter/data/templates/contract/template_contract.yaml
src/pycharter/data/templates/contract/template_metadata.yaml
src/pycharter/data/templates/contract/template_schema.yaml
src/pycharter/data/templates/contract/template_validation_rules.yaml
src/pycharter/data/templates/etl/README.md
src/pycharter/data/templates/etl/extract_cloud_azure.yaml
src/pycharter/data/templates/etl/extract_cloud_gcs.yaml
src/pycharter/data/templates/etl/extract_cloud_s3.yaml
src/pycharter/data/templates/etl/extract_database.yaml
src/pycharter/data/templates/etl/extract_database_ssh.yaml
src/pycharter/data/templates/etl/extract_file_csv.yaml
src/pycharter/data/templates/etl/extract_file_glob.yaml
src/pycharter/data/templates/etl/extract_file_json.yaml
src/pycharter/data/templates/etl/extract_file_parquet.yaml
src/pycharter/data/templates/etl/extract_http_paginated.yaml
src/pycharter/data/templates/etl/extract_http_path_params.yaml
src/pycharter/data/templates/etl/extract_http_simple.yaml
src/pycharter/data/templates/etl/extract_with_validation.yaml
src/pycharter/data/templates/etl/load_cloud_azure.yaml
src/pycharter/data/templates/etl/load_cloud_gcs.yaml
src/pycharter/data/templates/etl/load_cloud_s3.yaml
src/pycharter/data/templates/etl/load_file.yaml
src/pycharter/data/templates/etl/load_insert.yaml
src/pycharter/data/templates/etl/load_postgresql.yaml
src/pycharter/data/templates/etl/load_sqlite.yaml
src/pycharter/data/templates/etl/load_truncate_and_load.yaml
src/pycharter/data/templates/etl/load_upsert.yaml
src/pycharter/data/templates/etl/load_with_dlq.yaml
src/pycharter/data/templates/etl/load_with_ssh_tunnel.yaml
src/pycharter/data/templates/etl/load_with_validation.yaml
src/pycharter/data/templates/etl/pipeline_http_to_db.yaml
src/pycharter/data/templates/etl/settings.yaml
src/pycharter/data/templates/etl/transform_combined.yaml
src/pycharter/data/templates/etl/transform_custom_function.yaml
src/pycharter/data/templates/etl/transform_jsonata.yaml
src/pycharter/data/templates/etl/transform_simple.yaml
src/pycharter/db/README.md
src/pycharter/db/__init__.py
src/pycharter/db/cli.py
src/pycharter/db/config.py
src/pycharter/db/metadata_normalizer.py
src/pycharter/db/seed.py
src/pycharter/db/migrations/README
src/pycharter/db/migrations/env.py
src/pycharter/db/migrations/schema_helper.py
src/pycharter/db/migrations/script.py.mako
src/pycharter/db/migrations/versions/20250115120000_add_tier2_tier3_entities.py
src/pycharter/db/migrations/versions/20251209163657_799b73fe9f6c_initial_schema.py
src/pycharter/db/migrations/versions/20251209164144_ae0efda02aa1_initial_schema.py
src/pycharter/db/migrations/versions/20251217160146_f9995dc0f4b3_add_quality_tables.py
src/pycharter/db/migrations/versions/20251217164915_8b08d78068e3_add_data_version_tracking.py
src/pycharter/db/migrations/versions/20260110083000_a1b2c3d4e5f6_add_dead_letter_queue_table.py
src/pycharter/db/migrations/versions/20260120000000_add_name_title_validation_constraints.py
src/pycharter/db/migrations/versions/20260121000000_remove_artifact_versions_from_data_contracts.py
src/pycharter/db/migrations/versions/20260122000000_change_artifact_unique_constraints_to_title_version.py
src/pycharter/db/migrations/versions/20260209000000_add_metadata_records_payload.py
src/pycharter/db/migrations/versions/__init__.py
src/pycharter/db/models/__init__.py
src/pycharter/db/models/api_endpoint.py
src/pycharter/db/models/base.py
src/pycharter/db/models/coercion_rule.py
src/pycharter/db/models/compliance_framework.py
src/pycharter/db/models/data_contract.py
src/pycharter/db/models/data_dependency.py
src/pycharter/db/models/data_feed.py
src/pycharter/db/models/dlq.py
src/pycharter/db/models/domain.py
src/pycharter/db/models/environment.py
src/pycharter/db/models/metadata_record.py
src/pycharter/db/models/owner.py
src/pycharter/db/models/quality_metric.py
src/pycharter/db/models/quality_violation.py
src/pycharter/db/models/schema.py
src/pycharter/db/models/storage_location.py
src/pycharter/db/models/system.py
src/pycharter/db/models/tag.py
src/pycharter/db/models/validation_rule.py
src/pycharter/db/schemas/README.md
src/pycharter/db/schemas/__init__.py
src/pycharter/db/schemas/data_contract.py
src/pycharter/docs_generator/__init__.py
src/pycharter/docs_generator/generator.py
src/pycharter/docs_generator/renderers.py
src/pycharter/domain/__init__.py
src/pycharter/etl_generator/ASYNC_AND_EXECUTION.md
src/pycharter/etl_generator/INTERFACES.md
src/pycharter/etl_generator/README.md
src/pycharter/etl_generator/TRANSFORMATION_GUIDE.md
src/pycharter/etl_generator/__init__.py
src/pycharter/etl_generator/builder.py
src/pycharter/etl_generator/checkpoint.py
src/pycharter/etl_generator/config_generator.py
src/pycharter/etl_generator/config_models.py
src/pycharter/etl_generator/config_validator.py
src/pycharter/etl_generator/context.py
src/pycharter/etl_generator/database.py
src/pycharter/etl_generator/dlq.py
src/pycharter/etl_generator/expression.py
src/pycharter/etl_generator/factory.py
src/pycharter/etl_generator/orchestrator.py
src/pycharter/etl_generator/pipeline.py
src/pycharter/etl_generator/progress.py
src/pycharter/etl_generator/protocols.py
src/pycharter/etl_generator/result.py
src/pycharter/etl_generator/validation.py
src/pycharter/etl_generator/extractors/__init__.py
src/pycharter/etl_generator/extractors/base.py
src/pycharter/etl_generator/extractors/cloud_storage.py
src/pycharter/etl_generator/extractors/database.py
src/pycharter/etl_generator/extractors/factory.py
src/pycharter/etl_generator/extractors/file.py
src/pycharter/etl_generator/extractors/http.py
src/pycharter/etl_generator/extractors/mongodb.py
src/pycharter/etl_generator/extractors/streaming.py
src/pycharter/etl_generator/loaders/__init__.py
src/pycharter/etl_generator/loaders/base.py
src/pycharter/etl_generator/loaders/cloud_storage.py
src/pycharter/etl_generator/loaders/database.py
src/pycharter/etl_generator/loaders/factory.py
src/pycharter/etl_generator/loaders/file.py
src/pycharter/etl_generator/loaders/mongodb.py
src/pycharter/etl_generator/schemas/__init__.py
src/pycharter/etl_generator/transformers/__init__.py
src/pycharter/etl_generator/transformers/base.py
src/pycharter/etl_generator/transformers/config.py
src/pycharter/etl_generator/transformers/custom_function.py
src/pycharter/etl_generator/transformers/jsonata_transformer.py
src/pycharter/etl_generator/transformers/operations.py
src/pycharter/etl_generator/transformers/pipeline.py
src/pycharter/etl_generator/transformers/simple_operations.py
src/pycharter/json_schema_converter/__init__.py
src/pycharter/json_schema_converter/converter.py
src/pycharter/json_schema_converter/reverse_converter.py
src/pycharter/metadata_store/README.md
src/pycharter/metadata_store/__init__.py
src/pycharter/metadata_store/client.py
src/pycharter/metadata_store/in_memory.py
src/pycharter/metadata_store/mongodb.py
src/pycharter/metadata_store/postgres.py
src/pycharter/metadata_store/redis.py
src/pycharter/metadata_store/sqlite.py
src/pycharter/pydantic_generator/__init__.py
src/pycharter/pydantic_generator/converter.py
src/pycharter/pydantic_generator/generator.py
src/pycharter/quality/README.md
src/pycharter/quality/__init__.py
src/pycharter/quality/check.py
src/pycharter/quality/cli.py
src/pycharter/quality/metrics.py
src/pycharter/quality/models.py
src/pycharter/quality/profiling.py
src/pycharter/quality/violations.py
src/pycharter/quality/tracking/__init__.py
src/pycharter/quality/tracking/collector.py
src/pycharter/quality/tracking/exporters.py
src/pycharter/quality/tracking/models.py
src/pycharter/quality/tracking/store.py
src/pycharter/runtime_validator/__init__.py
src/pycharter/runtime_validator/builder.py
src/pycharter/runtime_validator/decorators.py
src/pycharter/runtime_validator/utils.py
src/pycharter/runtime_validator/validator.py
src/pycharter/runtime_validator/validator_core.py
src/pycharter/runtime_validator/wrappers.py
src/pycharter/schema_evolution/__init__.py
src/pycharter/schema_evolution/compatibility.py
src/pycharter/schema_evolution/diff.py
src/pycharter/schema_evolution/models.py
src/pycharter/shared/__init__.py
src/pycharter/shared/errors.py
src/pycharter/shared/json_schema_support.py
src/pycharter/shared/json_schema_validator.py
src/pycharter/shared/name_validator.py
src/pycharter/shared/protocols.py
src/pycharter/shared/schema_parser.py
src/pycharter/shared/schema_resolver.py
src/pycharter/shared/coercions/__init__.py
src/pycharter/shared/coercions/builtin.py
src/pycharter/shared/validations/__init__.py
src/pycharter/shared/validations/builtin.py
src/pycharter/ui/.eslintrc.json
src/pycharter/ui/README.md
src/pycharter/ui/__init__.py
src/pycharter/ui/build.py
src/pycharter/ui/components.json
src/pycharter/ui/dev.py
src/pycharter/ui/package-lock.json
src/pycharter/ui/package.json
src/pycharter/ui/server.py
src/pycharter/ui/tsconfig.json
src/pycharter/ui/static/.gitkeep
src/pycharter/ui/static/404.html
src/pycharter/ui/static/__next.__PAGE__.txt
src/pycharter/ui/static/__next._full.txt
src/pycharter/ui/static/__next._head.txt
src/pycharter/ui/static/__next._index.txt
src/pycharter/ui/static/__next._tree.txt
src/pycharter/ui/static/index.html
src/pycharter/ui/static/index.txt
src/pycharter/ui/static/404/index.html
src/pycharter/ui/static/_next/static/1v6wNNwtREU9el1kimZu3/_buildManifest.js
src/pycharter/ui/static/_next/static/1v6wNNwtREU9el1kimZu3/_clientMiddlewareManifest.json
src/pycharter/ui/static/_next/static/1v6wNNwtREU9el1kimZu3/_ssgManifest.js
src/pycharter/ui/static/_next/static/chunks/11abcac9178a2f16.js
src/pycharter/ui/static/_next/static/chunks/2e5fc487b90ca1e9.js
src/pycharter/ui/static/_next/static/chunks/2ec44711d524c2c6.js
src/pycharter/ui/static/_next/static/chunks/3469d0477bfb3abe.js
src/pycharter/ui/static/_next/static/chunks/45babe0d280f4221.js
src/pycharter/ui/static/_next/static/chunks/4a605405d870bdda.js
src/pycharter/ui/static/_next/static/chunks/5349623edd657e25.js
src/pycharter/ui/static/_next/static/chunks/654acae0dcd861f1.css
src/pycharter/ui/static/_next/static/chunks/6c9fd9745a1d03e3.js
src/pycharter/ui/static/_next/static/chunks/82abf2d65f5428ae.js
src/pycharter/ui/static/_next/static/chunks/974350e444955fda.js
src/pycharter/ui/static/_next/static/chunks/9d2504b99785664e.js
src/pycharter/ui/static/_next/static/chunks/a6dad97d9634a72d.js
src/pycharter/ui/static/_next/static/chunks/a6dad97d9634a72d.js.map
src/pycharter/ui/static/_next/static/chunks/a702a6cb2d99da85.js
src/pycharter/ui/static/_next/static/chunks/a919bdacbee7e204.js
src/pycharter/ui/static/_next/static/chunks/ac00ef74113eaad3.js
src/pycharter/ui/static/_next/static/chunks/c0645d6fea057384.js
src/pycharter/ui/static/_next/static/chunks/d0e81387023dfc85.js
src/pycharter/ui/static/_next/static/chunks/d2be314c3ece3fbe.js
src/pycharter/ui/static/_next/static/chunks/dfce81e7a2c0e61e.js
src/pycharter/ui/static/_next/static/chunks/f2e7afeab1178138.js
src/pycharter/ui/static/_next/static/chunks/f2f58a7e93290fbb.js
src/pycharter/ui/static/_next/static/chunks/ff1a16fafef87110.js
src/pycharter/ui/static/_next/static/chunks/turbopack-a5388f828f04c7dd.js
src/pycharter/ui/static/_not-found/__next._full.txt
src/pycharter/ui/static/_not-found/__next._head.txt
src/pycharter/ui/static/_not-found/__next._index.txt
src/pycharter/ui/static/_not-found/__next._not-found.__PAGE__.txt
src/pycharter/ui/static/_not-found/__next._not-found.txt
src/pycharter/ui/static/_not-found/__next._tree.txt
src/pycharter/ui/static/_not-found/index.html
src/pycharter/ui/static/_not-found/index.txt
src/pycharter/ui/static/contracts/__next._full.txt
src/pycharter/ui/static/contracts/__next._head.txt
src/pycharter/ui/static/contracts/__next._index.txt
src/pycharter/ui/static/contracts/__next._tree.txt
src/pycharter/ui/static/contracts/__next.contracts.__PAGE__.txt
src/pycharter/ui/static/contracts/__next.contracts.txt
src/pycharter/ui/static/contracts/index.html
src/pycharter/ui/static/contracts/index.txt
src/pycharter/ui/static/documentation/__next._full.txt
src/pycharter/ui/static/documentation/__next._head.txt
src/pycharter/ui/static/documentation/__next._index.txt
src/pycharter/ui/static/documentation/__next._tree.txt
src/pycharter/ui/static/documentation/__next.documentation.__PAGE__.txt
src/pycharter/ui/static/documentation/__next.documentation.txt
src/pycharter/ui/static/documentation/index.html
src/pycharter/ui/static/documentation/index.txt
src/pycharter/ui/static/etl/__next._full.txt
src/pycharter/ui/static/etl/__next._head.txt
src/pycharter/ui/static/etl/__next._index.txt
src/pycharter/ui/static/etl/__next._tree.txt
src/pycharter/ui/static/etl/__next.etl.__PAGE__.txt
src/pycharter/ui/static/etl/__next.etl.txt
src/pycharter/ui/static/etl/index.html
src/pycharter/ui/static/etl/index.txt
src/pycharter/ui/static/login/__next._full.txt
src/pycharter/ui/static/login/__next._head.txt
src/pycharter/ui/static/login/__next._index.txt
src/pycharter/ui/static/login/__next._tree.txt
src/pycharter/ui/static/login/__next.login.__PAGE__.txt
src/pycharter/ui/static/login/__next.login.txt
src/pycharter/ui/static/login/index.html
src/pycharter/ui/static/login/index.txt
src/pycharter/ui/static/metadata/__next._full.txt
src/pycharter/ui/static/metadata/__next._head.txt
src/pycharter/ui/static/metadata/__next._index.txt
src/pycharter/ui/static/metadata/__next._tree.txt
src/pycharter/ui/static/metadata/__next.metadata.__PAGE__.txt
src/pycharter/ui/static/metadata/__next.metadata.txt
src/pycharter/ui/static/metadata/index.html
src/pycharter/ui/static/metadata/index.txt
src/pycharter/ui/static/quality/__next._full.txt
src/pycharter/ui/static/quality/__next._head.txt
src/pycharter/ui/static/quality/__next._index.txt
src/pycharter/ui/static/quality/__next._tree.txt
src/pycharter/ui/static/quality/__next.quality.__PAGE__.txt
src/pycharter/ui/static/quality/__next.quality.txt
src/pycharter/ui/static/quality/index.html
src/pycharter/ui/static/quality/index.txt
src/pycharter/ui/static/rules/__next._full.txt
src/pycharter/ui/static/rules/__next._head.txt
src/pycharter/ui/static/rules/__next._index.txt
src/pycharter/ui/static/rules/__next._tree.txt
src/pycharter/ui/static/rules/__next.rules.__PAGE__.txt
src/pycharter/ui/static/rules/__next.rules.txt
src/pycharter/ui/static/rules/index.html
src/pycharter/ui/static/rules/index.txt
src/pycharter/ui/static/schemas/__next._full.txt
src/pycharter/ui/static/schemas/__next._head.txt
src/pycharter/ui/static/schemas/__next._index.txt
src/pycharter/ui/static/schemas/__next._tree.txt
src/pycharter/ui/static/schemas/__next.schemas.__PAGE__.txt
src/pycharter/ui/static/schemas/__next.schemas.txt
src/pycharter/ui/static/schemas/index.html
src/pycharter/ui/static/schemas/index.txt
src/pycharter/ui/static/settings/__next._full.txt
src/pycharter/ui/static/settings/__next._head.txt
src/pycharter/ui/static/settings/__next._index.txt
src/pycharter/ui/static/settings/__next._tree.txt
src/pycharter/ui/static/settings/__next.settings.__PAGE__.txt
src/pycharter/ui/static/settings/__next.settings.txt
src/pycharter/ui/static/settings/index.html
src/pycharter/ui/static/settings/index.txt
src/pycharter/ui/static/validation/__next._full.txt
src/pycharter/ui/static/validation/__next._head.txt
src/pycharter/ui/static/validation/__next._index.txt
src/pycharter/ui/static/validation/__next._tree.txt
src/pycharter/ui/static/validation/__next.validation.__PAGE__.txt
src/pycharter/ui/static/validation/__next.validation.txt
src/pycharter/ui/static/validation/index.html
src/pycharter/ui/static/validation/index.txt
src/pycharter/utils/__init__.py
src/pycharter/utils/value_injector.py
src/pycharter/utils/version.py
src/pycharter/worker/README.md
src/pycharter/worker/__init__.py
src/pycharter/worker/cli.py
src/pycharter/worker/models.py
src/pycharter/worker/processor.py
src/pycharter/worker/backends/__init__.py
src/pycharter/worker/backends/base.py
src/pycharter/worker/backends/spark.py
src/pycharter/worker/queue/__init__.py
src/pycharter/worker/queue/redis_queue.py
tests/test_contract_builder.py
tests/test_contract_parser.py
tests/test_extractors.py
tests/test_integration.py
tests/test_json_schema_compliance.py
tests/test_json_schema_converter.py
tests/test_metadata_stores.py
tests/test_pydantic_generator.py
tests/test_refs_and_definitions.py
tests/test_runtime_validator.py
tests/test_schema_parser.py
tests/test_value_injector.py
tests/test_x_validators.py