Skip to content

Commit

Permalink
str(null_schema) returns "Null_schema" not None
Browse files Browse the repository at this point in the history
  • Loading branch information
hyanwong authored and benjeffery committed Sep 20, 2024
1 parent cebf8a9 commit a451d7a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
6 changes: 4 additions & 2 deletions python/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
in the presence of non-ancestral material (very rare).
(:user:`petrelharp`, :issue:`2983`, :pr:`1623`)

- Printing ``tskit.MetadataSchema(schema=None)`` now shows ``"Null_schema"`` rather
than ``None``, to avoid confusion (:user:`hyanwong`, :pr:`2720`)

**Features**

- Add ``TreeSequence.extend_haplotypes`` method that extends ancestral haplotypes
Expand Down Expand Up @@ -103,8 +106,7 @@
- Add ``__repr__`` for variants to return a string representation of the raw data
without spewing megabytes of text (:user:`chriscrsmith`, :pr:`2695`, :issue:`2694`)

- Add ``keep_rows`` method to table classes to support efficient in-place
table subsetting (:user:`jeromekelleher`, :pr:`2700`)
**Breaking Changes**

**Bugfixes**

Expand Down
19 changes: 15 additions & 4 deletions python/tests/test_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -1396,9 +1396,10 @@ def test_metadata_schema(self, table_5row):
table2.metadata_schema = tskit.MetadataSchema({"codec": "json"})
with pytest.raises(
AssertionError,
match=f"{type(table_5row).__name__} metadata schemas differ:",
match=f"{type(table_5row).__name__} metadata schemas differ: "
"self=Null_schema other=OrderedDict([('codec', 'json')])",
):
table_5row.assert_equals(table2)
table_5row.assert_equals(table2)
table_5row.assert_equals(table2, ignore_metadata=True)

def test_row_changes(self, table_5row, test_rows):
Expand Down Expand Up @@ -4089,7 +4090,10 @@ def test_metadata_schema(self, t1, t2):
t2.metadata_schema = tskit.MetadataSchema(None)
with pytest.raises(
AssertionError,
match=re.escape("Metadata schemas differ"),
match=re.escape(
"Metadata schemas differ: self=OrderedDict([('codec', 'json')]) "
"other=Null_schema"
),
):
t1.assert_equals(t2)
t1.assert_equals(t2, ignore_metadata=True)
Expand Down Expand Up @@ -4136,6 +4140,10 @@ def test_ignore_metadata(self, t1, t2, table_name):
with pytest.raises(
AssertionError,
match=re.escape(f"{type(table).__name__} metadata schemas differ:"),
match=re.escape(
f"{type(table).__name__} metadata schemas differ: "
f"self=OrderedDict([('codec', 'json')]) other=Null_schema"
),
):
t1.assert_equals(t2)
t1.assert_equals(t2, ignore_metadata=True)
Expand Down Expand Up @@ -4193,7 +4201,10 @@ def test_ignore_reference_sequence(self, t1, t2):
t2.reference_sequence.clear()
with pytest.raises(
AssertionError,
match=re.escape("Metadata schemas differ"),
match=re.escape(
"Metadata schemas differ: "
"self=OrderedDict([('codec', 'json')]) other=Null_schema"
),
):
t1.assert_equals(t2)
t1.assert_equals(t2, ignore_reference_sequence=True)
Expand Down
9 changes: 8 additions & 1 deletion python/tskit/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,14 @@ def __repr__(self) -> str:
return self._string

def __str__(self) -> str:
return pprint.pformat(self._schema)
if isinstance(self._schema, collections.OrderedDict):
s = pprint.pformat(dict(self._schema))
else:
s = pprint.pformat(self._schema)
if "\n" in s:
return f"MetadataSchema(\n{s}\n)"
else:
return f"MetadataSchema({s})"

def __eq__(self, other) -> bool:
return self._string == other._string
Expand Down

0 comments on commit a451d7a

Please sign in to comment.