gedcomkit 0.1.6__tar.gz → 0.1.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.
Files changed (98) hide show
  1. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/CHANGELOG.md +66 -0
  2. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/Cargo.lock +1 -1
  3. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/Cargo.toml +1 -1
  4. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/PKG-INFO +1 -1
  5. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/Cargo.lock +2 -2
  6. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/Cargo.toml +1 -1
  7. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/gedcomkit.pyi +8 -2
  8. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/src/lib.rs +25 -5
  9. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/convert.rs +479 -68
  10. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/dates.rs +178 -0
  11. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/LICENSE +0 -0
  12. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/README.md +0 -0
  13. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/LICENSE +0 -0
  14. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/bindings/gedcomkit-py/README.md +0 -0
  15. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/LICENSE +0 -0
  16. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/README.md +0 -0
  17. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/cardinalities.tsv +0 -0
  18. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/enumerations.tsv +0 -0
  19. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/enumerationsets.tsv +0 -0
  20. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/grammar.abnf +0 -0
  21. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/grammar.gedstruct +0 -0
  22. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/payloads.tsv +0 -0
  23. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom-spec/substructures.tsv +0 -0
  24. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/age-invalid.ged +0 -0
  25. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/age-valid.ged +0 -0
  26. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/atsign.ged +0 -0
  27. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_ascii_1.ged +0 -0
  28. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_ascii_2.ged +0 -0
  29. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf16be-1.ged +0 -0
  30. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf16be-2.ged +0 -0
  31. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf16le-1.ged +0 -0
  32. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf16le-2.ged +0 -0
  33. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf8-1.ged +0 -0
  34. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf8-2.ged +0 -0
  35. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/char_utf8-3.ged +0 -0
  36. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/date-all.ged +0 -0
  37. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/date-dual-invalid.ged +0 -0
  38. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/date-dual-valid.ged +0 -0
  39. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/enum-ext.ged +0 -0
  40. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/filename-1.ged +0 -0
  41. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/lang-all.ged +0 -0
  42. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/notes-1.ged +0 -0
  43. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/obje-1.ged +0 -0
  44. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/obsolete-1.ged +0 -0
  45. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/pedi-1.ged +0 -0
  46. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/rela_1.ged +0 -0
  47. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/sour-1.ged +0 -0
  48. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/tiny-1.ged +0 -0
  49. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/5/xref-case.ged +0 -0
  50. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/age-invalid.ged +0 -0
  51. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/age-valid.ged +0 -0
  52. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/atsign.ged +0 -0
  53. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_ascii_1.ged +0 -0
  54. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_ascii_2.ged +0 -0
  55. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf16be-1.ged +0 -0
  56. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf16be-2.ged +0 -0
  57. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf16le-1.ged +0 -0
  58. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf16le-2.ged +0 -0
  59. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf8-1.ged +0 -0
  60. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf8-2.ged +0 -0
  61. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/char_utf8-3.ged +0 -0
  62. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/date-all.ged +0 -0
  63. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/date-dual-invalid.ged +0 -0
  64. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/enum-ext.ged +0 -0
  65. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/filename-1.ged +0 -0
  66. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/lang-all.ged +0 -0
  67. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/notes-1.ged +0 -0
  68. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/obje-1.ged +0 -0
  69. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/obsolete-1.ged +0 -0
  70. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/pedi-1.ged +0 -0
  71. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/rela_1.ged +0 -0
  72. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/sour-1.ged +0 -0
  73. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/tiny-1.ged +0 -0
  74. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/7/xref-case.ged +0 -0
  75. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/LICENSE +0 -0
  76. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/gedcom7code/UPSTREAM-README.md +0 -0
  77. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/zip-interop/README.md +0 -0
  78. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/zip-interop/python-zip64.gdz +0 -0
  79. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/fixtures/vendored/zip-interop/python-zipfile.gdz +0 -0
  80. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/pyproject.toml +0 -0
  81. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/build.rs +0 -0
  82. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/decode.rs +0 -0
  83. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/family.rs +0 -0
  84. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/gedzip.rs +0 -0
  85. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/lib.rs +0 -0
  86. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/names.rs +0 -0
  87. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/schema.rs +0 -0
  88. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/synthetic.rs +0 -0
  89. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/tags.rs +0 -0
  90. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/validate.rs +0 -0
  91. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/src/view.rs +0 -0
  92. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/endurance.rs +0 -0
  93. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/external_charset.rs +0 -0
  94. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/properties.rs +0 -0
  95. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/requirement_corpus.rs +0 -0
  96. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/spec_conformance.rs +0 -0
  97. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/vendored_corpus.rs +0 -0
  98. {gedcomkit-0.1.6 → gedcomkit-0.1.8}/tests/version_conversion.rs +0 -0
@@ -5,6 +5,72 @@ format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
5
5
  the project uses semantic versioning within the usual pre-1.0 compatibility
6
6
  rules.
7
7
 
8
+ ## [0.1.8] - 2026-09-27
9
+
10
+ ### Added
11
+
12
+ - Python wheels for Windows (x86_64) and macOS (Apple silicon and Intel)
13
+ on PyPI, beside the Linux wheel, so installing on those platforms no
14
+ longer compiles Rust from the source distribution. All three are
15
+ cross-compiled on the Linux release runner — macOS with zig, Windows with
16
+ cargo-xwin — and, being abi3, each serves Python 3.9 onward. (PyO3 links
17
+ `python3.dll` by raw-dylib, so the Windows build needs no Windows Python.)
18
+
19
+ ## [0.1.7] - 2026-09-27
20
+
21
+ ### Added
22
+
23
+ - `dates::GedcomDate::to_gedcom_7`, the reading written in GEDCOM 7.0's own
24
+ date grammar (`about 5 January 1882` → `ABT 5 JAN 1882`), or `None` when
25
+ that grammar cannot hold it without loss — no `INT`, no dual year, and the
26
+ calendar as a bare word (`JULIAN 10 MAR 1700`).
27
+ - Python and JavaScript/WASM: `parse_date` / `parseDate`'s reading gained a
28
+ `gedcom7` key alongside `gedcom551`.
29
+ - `convert::to_version_7_with`'s owned-extension-tags parameter, now exposed
30
+ by both bindings: Python's `Gedcom.to_version7(owned=[(tag, uri), ...])`
31
+ and WASM's `toVersion7([[tag, uri], ...])`, either omittable.
32
+
33
+ ### Changed
34
+
35
+ - `convert::to_version_7` now rewrites every `DATE` payload the lenient
36
+ reader understands but that is not version 7's own grammar — `29 May
37
+ 1823`, `about 1575`, `13. september 1900`, `<1873>`, `ABT Oct 1803`,
38
+ `1740/41`, `@#DJULIAN@ 10 MAR 1700`, `44 B.C.`, and the like — instead of
39
+ passing most of them through unreported. Each becomes the version 7
40
+ reading (or, when none exists — an unparsed expression, a dual year, a
41
+ calendar version 7 cannot spell — an empty `DATE`), with the original kept
42
+ verbatim in a `PHRASE` substructure and the change named in the report. A
43
+ payload already in version 7's grammar is left untouched, byte for byte.
44
+ - `convert::to_version_7` now converts `OBJE.FILE.FORM`'s file extension
45
+ (`jpg`, `png`, `pdf`, `html`, `txt`, …) to a version 7 media type
46
+ (`image/jpeg`, `image/png`, `application/pdf`, `text/html`,
47
+ `text/plain`, …) and `FORM.MEDI`'s source medium to version 7's
48
+ enumeration, upper case (`PHOTO`, `NEWSPAPER`, …), folding anything else
49
+ into `OTHER` with the original kept as a `PHRASE`. An extension with no
50
+ known media type is kept as written and reported as kept rather than
51
+ guessed. Both are named in the report under new `FILE.FORM` and
52
+ `FORM.MEDI` notes, alongside the existing `OBJE.FORM` note for the move
53
+ from object to file. This covers 5.5.1's own layout, where `FORM` already
54
+ sits under `FILE` and the source medium is `TYPE` (renamed `MEDI`), as
55
+ well as 5.5's `FORM` on the object. Known extensions now include `heic`,
56
+ `webp`, `svg`, `json`, `xml`, `eml` and `mp4`.
57
+ - `convert::to_version_7` percent-encodes a `FILE` path that is not a URI
58
+ reference, as version 7 requires — a space, a backslash, anything outside
59
+ ASCII — and reports it under a `FILE` note. A path that is already a URI
60
+ reference, escapes included, is untouched.
61
+
62
+ ### Fixed
63
+
64
+ - A `DATE` rewritten by the version 7 conversion no longer keeps the
65
+ `CONT`/`CONC` lines its old payload was split across, which a later read
66
+ folded back into the new payload. A `DATE` that already carries a
67
+ `PHRASE` is left as it is and reported as kept, rather than given a
68
+ second `PHRASE`.
69
+ - `GedcomDate::to_gedcom_7` returns `None` for a Hebrew or French
70
+ Republican date with a month, rather than spelling that month with a
71
+ Gregorian abbreviation (`FRENCH_R 22 MAR 5`). A bare year is still
72
+ written.
73
+
8
74
  ## [0.1.6] - 2026-09-25
9
75
 
10
76
  ### Added
@@ -35,7 +35,7 @@ dependencies = [
35
35
 
36
36
  [[package]]
37
37
  name = "gedcomkit"
38
- version = "0.1.6"
38
+ version = "0.1.8"
39
39
  dependencies = [
40
40
  "flate2",
41
41
  "serde",
@@ -3,7 +3,7 @@
3
3
  # was checked on crates.io, npm, and PyPI before the initial release.
4
4
  [package]
5
5
  name = "gedcomkit"
6
- version = "0.1.6"
6
+ version = "0.1.8"
7
7
  description = "A byte-preserving GEDCOM document model: decoding, parsing, readings, version conversion, plausibility checks, and the GEDZIP container, for GEDCOM 5.5 through 7.x."
8
8
  edition = "2024"
9
9
  # The true minimum, not the workspace's toolchain: a parser library is a leaf
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gedcomkit
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -35,7 +35,7 @@ dependencies = [
35
35
 
36
36
  [[package]]
37
37
  name = "gedcomkit"
38
- version = "0.1.6"
38
+ version = "0.1.8"
39
39
  dependencies = [
40
40
  "flate2",
41
41
  "serde",
@@ -43,7 +43,7 @@ dependencies = [
43
43
 
44
44
  [[package]]
45
45
  name = "gedcomkit-py"
46
- version = "0.1.6"
46
+ version = "0.1.8"
47
47
  dependencies = [
48
48
  "gedcomkit",
49
49
  "pyo3",
@@ -2,7 +2,7 @@
2
2
  # abi3 keeps it to one wheel per platform across Python versions.
3
3
  [package]
4
4
  name = "gedcomkit-py"
5
- version = "0.1.6"
5
+ version = "0.1.8"
6
6
  description = "Python bindings for gedcomkit: an archival-grade GEDCOM library — byte-preserving round-trip, encoding detection, GEDCOM 5.5 through 7.x, GEDZIP."
7
7
  edition = "2024"
8
8
  rust-version = "1.88"
@@ -60,7 +60,12 @@ class Gedcom:
60
60
  def set_logical_value(self, xref: str, path: list[int], value: str) -> None: ...
61
61
  def to_text(self) -> str: ...
62
62
  def to_bytes(self) -> bytes: ...
63
- def to_version7(self) -> tuple[Gedcom, list[dict[str, Any]]]: ...
63
+ def to_version7(
64
+ self, owned: list[tuple[str, str]] | None = None
65
+ ) -> tuple[Gedcom, list[dict[str, Any]]]:
66
+ """Convert to GEDCOM 7.0. ``owned`` declares the caller's own
67
+ extension tags as ``(tag, uri)`` pairs; any other extension is
68
+ declared as undocumented rather than dropped."""
64
69
  def to_version551(self) -> tuple[Gedcom, list[dict[str, Any]]]: ...
65
70
  def __len__(self) -> int: ...
66
71
 
@@ -81,4 +86,5 @@ class ArchiveFileWriter:
81
86
 
82
87
  def archive_total_size(data: bytes) -> int: ...
83
88
  def parse_date(text: str) -> dict[str, Any]:
84
- """A date reading; its ``gedcom551`` key is the 5.5.1 spelling, or None."""
89
+ """A date reading; its ``gedcom551`` and ``gedcom7`` keys are the 5.5.1
90
+ and 7.0 spellings, each ``None`` when that grammar cannot hold it."""
@@ -283,8 +283,24 @@ impl Gedcom {
283
283
 
284
284
  /// An explicit conversion to GEDCOM 7.0: the converted document and the
285
285
  /// notes naming every construct touched, dropped, or kept.
286
- fn to_version7(&self, py: Python<'_>) -> PyResult<(Self, Vec<Py<PyAny>>)> {
287
- let outcome = gedcomkit::convert::to_version_7(&self.document);
286
+ ///
287
+ /// `owned` names the extension tags the caller writes itself, each paired
288
+ /// with the URI it is documented at — `[("_PRIM", "https://example.com/PRIM")]`.
289
+ /// Those are declared by name; any other extension in the file is
290
+ /// declared as undocumented rather than dropped, because it is somebody's
291
+ /// data either way.
292
+ #[pyo3(signature = (owned = None))]
293
+ fn to_version7(
294
+ &self,
295
+ py: Python<'_>,
296
+ owned: Option<Vec<(String, String)>>,
297
+ ) -> PyResult<(Self, Vec<Py<PyAny>>)> {
298
+ let owned = owned.unwrap_or_default();
299
+ let owned: Vec<(&str, &str)> = owned
300
+ .iter()
301
+ .map(|(tag, uri)| (tag.as_str(), uri.as_str()))
302
+ .collect();
303
+ let outcome = gedcomkit::convert::to_version_7_with(&self.document, &owned);
288
304
  let notes = outcome
289
305
  .notes
290
306
  .iter()
@@ -466,20 +482,23 @@ fn os_error(path: &std::path::Path, error: &std::io::Error) -> PyErr {
466
482
  PyOSError::new_err(format!("{}: {error}", path.display()))
467
483
  }
468
484
 
469
- /// A date reading, with the two renderings a caller most often wants.
485
+ /// A date reading, with the renderings a caller most often wants.
470
486
  #[derive(Serialize)]
471
487
  struct DateReading<'a> {
472
488
  #[serde(flatten)]
473
489
  date: &'a GedcomDate,
474
490
  display: String,
475
491
  gedcom551: Option<String>,
492
+ gedcom7: Option<String>,
476
493
  }
477
494
 
478
495
  /// Reads a date as the library reads any `DATE` payload — every language
479
496
  /// and spelling it knows — and returns the reading as a dict: `original`,
480
497
  /// `calendar`, `kind`, `earliest`, `latest`, `phrase`, the `display` form,
481
- /// and `gedcom551`, the reading in GEDCOM 5.5.1's own grammar (`ABT 5 JAN
482
- /// 1882`), or `None` when that grammar cannot hold it without loss.
498
+ /// `gedcom551`, the reading in GEDCOM 5.5.1's own grammar (`ABT 5 JAN
499
+ /// 1882`), and `gedcom7`, the reading in GEDCOM 7.0's own grammar (`ABT 5
500
+ /// JAN 1882`, with no `INT` and no dual year) — either `None` when that
501
+ /// grammar cannot hold it without loss.
483
502
  #[pyfunction]
484
503
  fn parse_date(py: Python<'_>, text: &str) -> PyResult<Py<PyAny>> {
485
504
  let date = GedcomDate::parse(text);
@@ -488,6 +507,7 @@ fn parse_date(py: Python<'_>, text: &str) -> PyResult<Py<PyAny>> {
488
507
  &DateReading {
489
508
  display: date.display(),
490
509
  gedcom551: date.to_gedcom_5_5_1(),
510
+ gedcom7: date.to_gedcom_7(),
491
511
  date: &date,
492
512
  },
493
513
  )