mostlyright-data 0.19.7__tar.gz → 0.19.8__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.
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/PKG-INFO +1 -1
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/pyproject.toml +1 -1
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/download.py +9 -1
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/runs.py +32 -1
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/stream.py +10 -2
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/.gitignore +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/README.md +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/skills/mr-data-build/SKILL.md +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/formats.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/page_coverage.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/table_manifest.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/activity.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/categories.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/progress_vocabulary.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/recipe.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/research.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/router.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/session.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/transport.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/attendance.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/clarification.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/remediation.py +0 -0
- {mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/render.py +0 -0
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/download.py
RENAMED
|
@@ -88,7 +88,15 @@ class DownloadedArtifact:
|
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
def _required_headers(session: Mapping[str, Any]) -> dict[str, str]:
|
|
91
|
-
"""The headers
|
|
91
|
+
"""The headers Studio signed, replayed exactly as it stated them.
|
|
92
|
+
|
|
93
|
+
Omitting one, or altering a value, is what invalidates the signature; this builds the outgoing
|
|
94
|
+
set from the session and from nothing else, so neither can happen here. It is NOT an exact
|
|
95
|
+
header set for the request as a whole -- :class:`~mostlyright.data_harness.thin.transport.
|
|
96
|
+
UrlLibTransport` adds this client's identity to every call it makes, signed transfers
|
|
97
|
+
included, and those transfers succeed. What a given storage backend tolerates beyond the
|
|
98
|
+
signature is that backend's business, and nothing in this lane may start depending on it.
|
|
99
|
+
"""
|
|
92
100
|
|
|
93
101
|
declared = session.get("required_headers")
|
|
94
102
|
if declared is None:
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/runs.py
RENAMED
|
@@ -46,6 +46,31 @@ from mostlyright.data_harness.thin.transport import (
|
|
|
46
46
|
#: lane's half of that pin, and ``tests/test_thin_client.py`` holds the two equal.
|
|
47
47
|
PINNED_CONTRACT_VERSION = "3.0.0"
|
|
48
48
|
|
|
49
|
+
#: The header this client names itself under on every Studio call, and the name it gives.
|
|
50
|
+
#:
|
|
51
|
+
#: ⚠ IT IS A COUNTER SELECTOR AND NOTHING ELSE. Studio cannot tell a call from here apart from a
|
|
52
|
+
#: call its own dashboard makes server-side -- both present a Cloud-minted token of the same
|
|
53
|
+
#: credential class, minted by the same function -- so the caller states which one it is and
|
|
54
|
+
#: Studio reads it to decide what to COUNT. It authorizes nothing, no answer changes because it
|
|
55
|
+
#: was sent, and Studio is free to ignore it. Anyone can send it and anyone can withhold it, which
|
|
56
|
+
#: makes the number it feeds a floor with noise in it rather than a measurement of anything.
|
|
57
|
+
#:
|
|
58
|
+
#: Stated per Studio call rather than in the transport, which is the other place every request
|
|
59
|
+
#: passes through and the tempting one, because ``with_user_agent`` is already applied there. The
|
|
60
|
+
#: reason is not that a signed transfer would break under one more header: the transport adds a
|
|
61
|
+
#: user agent to those too, outside the ``required_headers`` the session names, and they succeed.
|
|
62
|
+
#:
|
|
63
|
+
#: The reason is who each header is for. That transport speaks to two kinds of origin -- our own
|
|
64
|
+
#: services, and whatever host a signed transfer URL names, which ``signed_transfer_url`` checks
|
|
65
|
+
#: for a scheme and for the absence of an embedded credential while asserting nothing about whose
|
|
66
|
+
#: storage it is. An identity is owed to every origin a client calls, which is why the user agent
|
|
67
|
+
#: is applied to all of them. A name that means something only to the service keeping the counter
|
|
68
|
+
#: is owed to that service alone, and on the transport it would ride to a third party's storage on
|
|
69
|
+
#: every download, where nothing can count it and nobody asked for it. ``_call`` builds its URL
|
|
70
|
+
#: from ``session.studio_base_url``, so it is the layer that knows the answer is Studio.
|
|
71
|
+
CLIENT_HEADER = "X-Mostlyright-Client"
|
|
72
|
+
CLIENT_NAME = "mr-data"
|
|
73
|
+
|
|
49
74
|
#: The routes. Kept as one table because it is the thing a reviewer checks against the contract.
|
|
50
75
|
START_RUN_PATH = "/v3/runs"
|
|
51
76
|
#: The same collection, read rather than added to. Written out rather than aliased to
|
|
@@ -211,7 +236,11 @@ class StudioApiClient:
|
|
|
211
236
|
shape: type = dict,
|
|
212
237
|
response_headers: dict[str, str] | None = None,
|
|
213
238
|
) -> Any:
|
|
214
|
-
headers = {
|
|
239
|
+
headers = {
|
|
240
|
+
"Accept": "application/json",
|
|
241
|
+
CLIENT_HEADER: CLIENT_NAME,
|
|
242
|
+
**self._session.authorization(),
|
|
243
|
+
}
|
|
215
244
|
if extra_headers:
|
|
216
245
|
headers.update(extra_headers)
|
|
217
246
|
raw_body: bytes | None = None
|
|
@@ -505,6 +534,8 @@ def _studio_refusal(status: int, parsed: Any, path: str) -> ThinLaneError:
|
|
|
505
534
|
|
|
506
535
|
__all__ = [
|
|
507
536
|
"ARTIFACT_DOWNLOAD_SESSION_PATH",
|
|
537
|
+
"CLIENT_HEADER",
|
|
538
|
+
"CLIENT_NAME",
|
|
508
539
|
"GET_RECIPE_PROPOSAL_PATH",
|
|
509
540
|
"GET_RUN_PATH",
|
|
510
541
|
"LIST_RUNS_PATH",
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/stream.py
RENAMED
|
@@ -34,7 +34,11 @@ from mostlyright.data_harness.thin.progress_vocabulary import (
|
|
|
34
34
|
PROGRESS_EVENT_FACTS,
|
|
35
35
|
PROGRESS_SCHEMA_VERSION,
|
|
36
36
|
)
|
|
37
|
-
from mostlyright.data_harness.thin.runs import
|
|
37
|
+
from mostlyright.data_harness.thin.runs import (
|
|
38
|
+
CLIENT_HEADER,
|
|
39
|
+
CLIENT_NAME,
|
|
40
|
+
RUN_EVENTS_STREAM_PATH,
|
|
41
|
+
)
|
|
38
42
|
from mostlyright.data_harness.thin.session import StudioSession
|
|
39
43
|
from mostlyright.data_harness.thin.transport import ThinLaneError, Transport, UrlLibTransport
|
|
40
44
|
|
|
@@ -389,7 +393,11 @@ class RunEventStream:
|
|
|
389
393
|
return True
|
|
390
394
|
return False
|
|
391
395
|
|
|
392
|
-
headers = {
|
|
396
|
+
headers = {
|
|
397
|
+
"Accept": "text/event-stream",
|
|
398
|
+
CLIENT_HEADER: CLIENT_NAME,
|
|
399
|
+
**self._session.authorization(),
|
|
400
|
+
}
|
|
393
401
|
# Resume in Studio's own cursor space when we have one. `from_seq` is only ever the
|
|
394
402
|
# starting position of a watch that has not yet seen a frame.
|
|
395
403
|
if progress.last_event_id:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/__init__.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/canonical.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/key_seam.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/page_coverage.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/session_probes.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/skill_assets.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/table_manifest.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/__init__.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/acquire.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/activity.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/approvals.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/categories.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/commands.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/narrative.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/parity.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/probe.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/propose.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/recipe.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/research.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/router.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/transport.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/user_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_catalog.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_datasets.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_handoff.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_query.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_runs.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_secrets.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_stream.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/v4_tables.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/thin/vocabulary.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/__init__.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/attendance.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/clarification.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/cloud_auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/commands/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/credentials.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/login.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/path_kind.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/plain_file.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/remediation.py
RENAMED
|
File without changes
|
{mostlyright_data-0.19.7 → mostlyright_data-0.19.8}/src/mostlyright/data_harness/ux/render.py
RENAMED
|
File without changes
|