mostlyright-data 0.28.0__tar.gz → 0.28.1__tar.gz

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.
Files changed (120) hide show
  1. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/PKG-INFO +1 -1
  2. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/pyproject.toml +1 -1
  3. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/table_manifest.py +13 -1
  4. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/.gitignore +0 -0
  5. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/README.md +0 -0
  6. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/scripts/hatch_build.py +0 -0
  7. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/SKILL.md +0 -0
  8. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/agents/openai.yaml +0 -0
  9. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/1-open-the-page-and-the-link-to-it-in-the-first-message.md +0 -0
  10. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/2-brief-two-to-four-questions-each-with-a-recommended-answer.md +0 -0
  11. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/3-probe-read-a-source-before-committing-to-it.md +0 -0
  12. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/4-decide-say-what-you-chose-what-you-refused-and-ask-one-question.md +0 -0
  13. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/5-draft-one-recipe-document-one-call.md +0 -0
  14. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/6-build-one-run-sized-to-acquire-every-measured-source-whole.md +0 -0
  15. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/7-interrogate-ask-the-run-what-it-actually-delivered.md +0 -0
  16. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/8-fix-revise-the-document-and-register-it-again.md +0 -0
  17. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/9-present-only-what-survived-inspection-with-caveats.md +0 -0
  18. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/agent-protocol.md +0 -0
  19. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/autonomous-delivery.md +0 -0
  20. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/before-the-first-tool-call.md +0 -0
  21. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/boundaries.md +0 -0
  22. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/cloud-authentication-preflight.md +0 -0
  23. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/commands.md +0 -0
  24. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/cross-repository-protocol-reference.md +0 -0
  25. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/installation-parity.md +0 -0
  26. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/live-run.md +0 -0
  27. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/making-a-table-incremental.md +0 -0
  28. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/narrating-the-run.md +0 -0
  29. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/not-hosted-yet.md +0 -0
  30. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/one-install.md +0 -0
  31. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/prediction-labels.md +0 -0
  32. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/promote.md +0 -0
  33. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/readers.md +0 -0
  34. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/receipts.md +0 -0
  35. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/recording-a-stream-venue.md +0 -0
  36. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/recovering-an-import-failure.md +0 -0
  37. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/reference-pages.md +0 -0
  38. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/required-protocol.md +0 -0
  39. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/source-credentials.md +0 -0
  40. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/sources.md +0 -0
  41. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/the-one-thing-to-say-about-the-skill-itself.md +0 -0
  42. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/transforms.md +0 -0
  43. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/user-communication-contract.md +0 -0
  44. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/references/writing-a-decision-record.md +0 -0
  45. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  46. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/__init__.py +0 -0
  47. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/agent_protocol.py +0 -0
  48. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/canonical.py +0 -0
  49. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/formats.py +0 -0
  50. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  51. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/key_seam.py +0 -0
  52. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/page_coverage.py +0 -0
  53. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
  54. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/session_probes.py +0 -0
  55. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/skill_assets.py +0 -0
  56. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  57. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  58. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  59. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/activity.py +0 -0
  60. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  61. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/categories.py +0 -0
  62. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/commands.py +0 -0
  63. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
  64. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/download.py +0 -0
  65. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/fast_features.py +0 -0
  66. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  67. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/parity.py +0 -0
  68. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/probe.py +0 -0
  69. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/progress_rate.py +0 -0
  70. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/progress_vocabulary.py +0 -0
  71. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/propose.py +0 -0
  72. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  73. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/recipe_brief.py +0 -0
  74. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/recipe_explain.py +0 -0
  75. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/recipe_forecast.py +0 -0
  76. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/recipe_lint.py +0 -0
  77. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/research.py +0 -0
  78. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/router.py +0 -0
  79. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/run_diagnose.py +0 -0
  80. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/runs.py +0 -0
  81. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/session.py +0 -0
  82. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/stream.py +0 -0
  83. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  84. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/studio_capabilities.py +0 -0
  85. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/transport.py +0 -0
  86. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
  87. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4.py +0 -0
  88. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  89. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
  90. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_connected.py +0 -0
  91. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
  92. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  93. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
  94. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  95. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  96. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_public.py +0 -0
  97. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  98. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_reader.py +0 -0
  99. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
  100. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  101. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  102. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
  103. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
  104. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  105. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  106. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  107. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  108. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  109. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  110. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  111. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  112. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  113. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  114. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  115. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  116. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/login.py +0 -0
  117. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  118. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  119. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/remediation.py +0 -0
  120. {mostlyright_data-0.28.0 → mostlyright_data-0.28.1}/src/mostlyright/data_harness/ux/render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mostlyright-data
3
- Version: 0.28.0
3
+ Version: 0.28.1
4
4
  Summary: Mostly Right hosted CLI for reviewed datasets
5
5
  Project-URL: Homepage, https://mostlyright.md/
6
6
  Project-URL: Documentation, https://mostlyright.md/docs/guides/cli/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mostlyright-data"
3
- version = "0.28.0"
3
+ version = "0.28.1"
4
4
  description = "Mostly Right hosted CLI for reviewed datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -56,6 +56,7 @@ __all__ = [
56
56
  "COMPRESSION",
57
57
  "DROPPED_ALL",
58
58
  "MANIFEST_MERGE_KINDS",
59
+ "MANIFEST_PARTITION_ENCODINGS",
59
60
  "MAX_MANIFEST_BYTES",
60
61
  "MAX_PARTS_PER_RUN",
61
62
  "MAX_PARTS_PER_VERSION",
@@ -94,6 +95,15 @@ TABLE_MANIFEST_SCHEMA = "mostlyright-table-manifest.v1"
94
95
  TABLE_MANIFEST_SCHEMA_V2 = "mostlyright-table-manifest.v2"
95
96
  _SUPPORTED_MANIFEST_SCHEMAS = frozenset((TABLE_MANIFEST_SCHEMA, TABLE_MANIFEST_SCHEMA_V2))
96
97
 
98
+ #: The closed spellings a v2 manifest may bind a partition field to: exactly the ones Studio's
99
+ #: table sink writes and Keel's seal binds, and exactly the recipe's ``table.partition.encoding``
100
+ #: vocabulary. A reader narrower than the writers refuses a table the service sealed, which is how
101
+ #: ``iso_month_prefix`` tables read as TABLE_MANIFEST_INVALID on 0.28.0 (planning#807).
102
+ #: ``tests/test_thin_table_manifest_encodings.py`` holds this equal to the vendored recipe schema.
103
+ MANIFEST_PARTITION_ENCODINGS: frozenset[str] = frozenset(
104
+ {"value", "iso_date_prefix", "iso_date_value", "iso_month_prefix"}
105
+ )
106
+
97
107
  #: The two media types the format adds to the closed artifact vocabulary.
98
108
  TABLE_MANIFEST_MEDIA_TYPE = "application/vnd.mostlyright.table-manifest+json"
99
109
  TABLE_PART_MEDIA_TYPE = "application/vnd.apache.parquet"
@@ -744,8 +754,10 @@ class TableManifest:
744
754
  raise _refuse(
745
755
  "TABLE_MANIFEST_INVALID", "a v2 manifest binds every partition encoding"
746
756
  )
757
+ # ``isinstance`` first: a JSON array or object is unhashable, and a set lookup on one
758
+ # would escape as a TypeError rather than as this refusal.
747
759
  if any(
748
- value not in {"value", "iso_date_prefix", "iso_date_value"}
760
+ not isinstance(value, str) or value not in MANIFEST_PARTITION_ENCODINGS
749
761
  for value in self.partition_encodings.values()
750
762
  ):
751
763
  raise _refuse("TABLE_MANIFEST_INVALID", "a v2 partition encoding is not closed")