mostlyright-data 0.19.0__tar.gz → 0.19.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 (72) hide show
  1. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/PKG-INFO +1 -1
  2. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/pyproject.toml +1 -1
  3. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/skills/mr-data-build/SKILL.md +47 -16
  4. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/.gitignore +0 -0
  5. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/README.md +0 -0
  6. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/scripts/hatch_build.py +0 -0
  7. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/skills/mr-data-build/agents/openai.yaml +0 -0
  8. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  9. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/__init__.py +0 -0
  10. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/canonical.py +0 -0
  11. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/formats.py +0 -0
  12. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  13. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/key_seam.py +0 -0
  14. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/page_coverage.py +0 -0
  15. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
  16. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/session_probes.py +0 -0
  17. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/skill_assets.py +0 -0
  18. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/table_manifest.py +0 -0
  19. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  20. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  21. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  22. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/activity.py +0 -0
  23. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  24. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/categories.py +0 -0
  25. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/commands.py +0 -0
  26. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
  27. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/download.py +0 -0
  28. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  29. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/parity.py +0 -0
  30. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/probe.py +0 -0
  31. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/progress_vocabulary.py +0 -0
  32. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/propose.py +0 -0
  33. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  34. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/research.py +0 -0
  35. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/router.py +0 -0
  36. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/runs.py +0 -0
  37. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/session.py +0 -0
  38. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/stream.py +0 -0
  39. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  40. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/transport.py +0 -0
  41. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
  42. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4.py +0 -0
  43. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  44. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
  45. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
  46. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  47. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
  48. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  49. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  50. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  51. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
  52. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  53. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  54. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
  55. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
  56. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  57. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  58. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  59. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  60. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  61. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  62. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  63. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  64. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  65. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  66. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  67. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  68. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/login.py +0 -0
  69. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  70. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  71. {mostlyright_data-0.19.0 → mostlyright_data-0.19.1}/src/mostlyright/data_harness/ux/remediation.py +0 -0
  72. {mostlyright_data-0.19.0 → mostlyright_data-0.19.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.19.0
3
+ Version: 0.19.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.19.0"
3
+ version = "0.19.1"
4
4
  description = "Mostly Right hosted CLI for reviewed datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -596,7 +596,8 @@ seconds -- not a paragraph, and not a report. Use exactly this shape, in this or
596
596
  section out only when there is genuinely nothing to say (shown indented here; the document
597
597
  itself carries the headings at column one):
598
598
 
599
- Two plain sentences: what each row is, where it comes from, and the period it covers.
599
+ Two or three plain sentences: what the data is about, why it is worth a look, and what a
600
+ reader can see or do with it.
600
601
 
601
602
  ## Coverage
602
603
  - **Window:** the exact dates and the time zone.
@@ -618,17 +619,45 @@ itself carries the headings at column one):
618
619
 
619
620
  That is six sections: the opening paragraph, and the five headings under it.
620
621
 
621
- **Opening paragraph rules** (everything before the first `##` heading)
622
- 1. Two sentences, 150 to 240 characters together. The first sentence ends before character 200
623
- and is complete on its own.
624
- 2. Sentence one says what each row is, for where, over what window, from which publisher:
625
- `Each row is one hourly METAR observation at Prague Václav Havel Airport (LKPR), January 2000
626
- to August 2026, from the Iowa Environmental Mesonet ASOS archive.`
627
- 3. Sentence two gives the size and the measured quantities, as numbers and nouns:
628
- `43,812 rows of temperature, dew point, wind, pressure and visibility.`
629
- 4. Full names on first use with the abbreviation in parentheses once. Never "this dataset",
630
- "we", "it", "here".
631
- 5. No Markdown in the opening paragraph: no bold, no links, no bullets, no code.
622
+ **Opening paragraph** (everything before the first `##` heading)
623
+
624
+ Two or three short sentences, 120 to 280 characters, written for somebody who has never heard of
625
+ the source, the venue or the format. Sentence one says what the data is about and what makes it
626
+ worth a look, in at most 110 characters. The rest says, in the same plain words, what a reader can
627
+ see or do with it.
628
+
629
+ 1. No tickers, station codes, series codes, format names, publisher names, row definitions or row
630
+ counts here. Every one of those facts is in the sections below, which is where a reader who
631
+ wants it will look.
632
+ 2. No Markdown: no bold, no links, no bullets, no code.
633
+ 3. A hook is an interesting fact stated plainly, never a pitch. Banned outright: comprehensive,
634
+ rich, valuable, powerful, unlock, explore, dive into, perfect for, insights, "this dataset", a
635
+ rhetorical question, an exclamation mark.
636
+ 4. Every number in it must be one the run established. "About every half hour" and "thousands of
637
+ markets" are claims, and a claim that is not on the run does not go here.
638
+ 5. The stranger test, before anything else is written: read sentence one alone under the title. If
639
+ a curious non-specialist could not say what the data is about and would not want the next line,
640
+ rewrite it.
641
+
642
+ One airport weather table, the shape to avoid and the shape to write. To avoid:
643
+
644
+ Each row is one METAR or SPECI weather report from Beijing (ZBAA), since January 2020, via
645
+ Iowa Environmental Mesonet. 117,876 reports of temperature, wind, pressure, visibility with
646
+ the day's highest and lowest reading.
647
+
648
+ To write:
649
+
650
+ Beijing's weather about every half hour since 2020, with each day's official high and low on
651
+ the same row. Temperature, wind, pressure and visibility as the airport recorded them, ready
652
+ to test a forecast against what actually happened.
653
+
654
+ The station code, the report types, the publisher and the count all moved down to Coverage and to
655
+ Source and rights, where a reader who wants them looks. "About every half hour" stays only because
656
+ Coverage puts a month at 1,302 to 1,591 rows, which is one row every 27 to 33 minutes. "On the same
657
+ row" stays because it says what a reader can see; the row definition rule 1 bans is the sentence
658
+ that begins `Each row is`. Two ways to fail: the pitch (`Unlock real-time insights into how
659
+ prediction markets price the weather!`) and the bare subject with no reason to care (`Beijing
660
+ weather data.`).
632
661
 
633
662
  **Body rules** (the five sections under the headings)
634
663
  1. Every sentence must stay true and complete when quoted alone, away from the page. Never
@@ -644,14 +673,16 @@ That is six sections: the opening paragraph, and the five headings under it.
644
673
  Rules that keep it readable: short sentences; no sentence over about twenty-five words; bullets
645
674
  rather than comma lists; no tables, no code blocks, no links to internal tools, no headings beyond
646
675
  the ones above. Spell out the names a reader would search for -- the place, the identifiers in
647
- every common form, the programme and the publisher -- once each, in the opening sentences and
648
- never as a keyword list. A one-line description is a defect to fix in the revision, not a style
649
- choice. Give `table.description` the grain and the window.
676
+ every common form, the programme and the publisher -- once each, under Coverage and under
677
+ Source and rights, and never as a keyword list. A one-line description is a defect to fix in the
678
+ revision, not a style choice. Give `table.description` the grain and the window.
650
679
 
651
680
  **Check before writing.** Fix and re-check until every line passes:
652
681
  - title: at most 60 characters, contains the place, contains no colon, pipe or exclamation mark,
653
682
  no brand, no "dataset" or "data", no version number, no run date
654
- - opening paragraph: 150 to 240 characters, first full stop before character 200, no Markdown
683
+ - opening paragraph: two or three sentences, 120 to 280 characters, first full stop before
684
+ character 110, no Markdown, no identifier, publisher name, row count or row definition, no
685
+ banned word
655
686
  - category: exactly one fixed ID saved and verified before recipe registration
656
687
  - topics: 3 to 8 descriptive tags, no duplicates, lowercase, at most 40 characters each
657
688
  - licence: an SPDX identifier the sources actually grant, or `--license` left off