Skip to content

Commit beb9d9c

Browse files
committed
Simplify formatting for string parameters in repr methods
1 parent 8dfe28b commit beb9d9c

4 files changed

Lines changed: 11 additions & 12 deletions

File tree

src/undate/interval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def __repr__(self) -> str:
7373
init_opts = {
7474
"earliest": repr(self.earliest) if self.earliest else None,
7575
"latest": repr(self.latest) if self.latest else None,
76-
"label": f'"{self.label}"' if self.label else None,
76+
"label": f"{self.label!r}" if self.label else None,
7777
}
7878
init_str = ", ".join(
7979
[f"{key}={val}" for key, val in init_opts.items() if val is not None]

src/undate/undate.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -251,15 +251,14 @@ def __str__(self) -> str:
251251

252252
def __repr__(self) -> str:
253253
init_opts = {k: v for k, v in self.initial_values.items() if v is not None}
254+
# include label if set
254255
if self.label:
255256
init_opts["label"] = self.label
257+
# always include calendar
256258
init_opts["calendar"] = self.calendar.value.title()
257-
init_params = []
258-
for key, val in init_opts.items():
259-
if isinstance(val, str):
260-
val = f'"{val}"'
261-
init_params.append(f"{key}={val}")
262-
return f"undate.Undate({', '.join(init_params)})"
259+
# combine parameters; use !r to quote strings
260+
init_str = ", ".join([f"{key}={val!r}" for key, val in init_opts.items()])
261+
return f"undate.Undate({init_str})"
263262

264263
@classmethod
265264
def parse(cls, date_string, format) -> Union["Undate", UndateInterval]:

tests/test_interval.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def test_repr(self):
7171
fancy_epoch = UndateInterval(Undate(2022), Undate(2023), label="Fancy Epoch")
7272
assert (
7373
repr(fancy_epoch)
74-
== f'undate.UndateInterval(earliest={repr(fancy_epoch.earliest)}, latest={repr(fancy_epoch.latest)}, label="Fancy Epoch")'
74+
== f"undate.UndateInterval(earliest={repr(fancy_epoch.earliest)}, latest={repr(fancy_epoch.latest)}, label='Fancy Epoch')"
7575
)
7676
assert eval(repr(fancy_epoch)) == fancy_epoch
7777

tests/test_undate.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,26 @@ def test_repr(self):
3636
# repr string should provide sufficient details to initialize
3737
assert (
3838
repr(nov2022)
39-
== 'undate.Undate(year=2022, month=11, day=7, calendar="Gregorian")'
39+
== "undate.Undate(year=2022, month=11, day=7, calendar='Gregorian')"
4040
)
4141
# eval on repr string should be equivalent to the object
4242
assert eval(repr(nov2022)) == nov2022
4343
nov2022_labeled = Undate(2022, 11, 7, label="A Special Day")
4444
assert (
4545
repr(nov2022_labeled)
46-
== 'undate.Undate(year=2022, month=11, day=7, label="A Special Day", calendar="Gregorian")'
46+
== "undate.Undate(year=2022, month=11, day=7, label='A Special Day', calendar='Gregorian')"
4747
)
4848
assert eval(repr(nov2022_labeled)) == nov2022_labeled
4949
# different calendar, missing fields
5050
islamic_date = Undate(484, calendar=Calendar.ISLAMIC)
51-
assert repr(islamic_date) == 'undate.Undate(year=484, calendar="Islamic")'
51+
assert repr(islamic_date) == "undate.Undate(year=484, calendar='Islamic')"
5252
assert eval(repr(islamic_date)) == islamic_date
5353

5454
# test string values for month/day
5555
unknown_year = Undate(month="1X", day="3X")
5656
assert (
5757
repr(unknown_year)
58-
== 'undate.Undate(month="1X", day="3X", calendar="Gregorian")'
58+
== "undate.Undate(month='1X', day='3X', calendar='Gregorian')"
5959
)
6060
# unknown dates aren't equal, but string representation should match
6161
assert str(eval(repr(unknown_year))) == str(unknown_year)

0 commit comments

Comments
 (0)