{ "info": { "author": "Nicklas Reincke", "author_email": "contact@reynke.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Sociology :: Genealogy" ], "description": "# Python GEDCOM Parser\n\n[![PyPI](https://img.shields.io/pypi/v/python-gedcom.svg)](https://pypi.org/project/python-gedcom/)\n[![GitHub release](https://img.shields.io/github/release/nickreynke/python-gedcom.svg)](https://github.com/nickreynke/python-gedcom/releases)\n[![Build Status](https://travis-ci.org/nickreynke/python-gedcom.svg?branch=master)](https://travis-ci.org/nickreynke/python-gedcom)\n![](https://img.shields.io/badge/GEDCOM%20format%20version-5.5-yellowgreen.svg)\n![](https://img.shields.io/badge/Python%20versions-2.7%20and%203.7-yellowgreen.svg)\n\nA Python module for parsing, analyzing, and manipulating GEDCOM files.\n\nGEDCOM files contain ancestry data. The parser is currently supporting\nthe GEDCOM 5.5 format which is detailed [here](https://chronoplexsoftware.com/gedcomvalidator/gedcom/gedcom-5.5.pdf).\n\n> For the latest changes please have a look at the [`CHANGELOG.md`](CHANGELOG.md) file.\n>\n> The current development process can be tracked in the [develop branch](https://github.com/nickreynke/python-gedcom/tree/develop).\n\n## Installation\n\nThe module can be installed via [pip](https://pip.pypa.io/).\n\nRun `pip install python-gedcom` to install or `pip install python-gedcom --upgrade`\nto upgrade to the newest version uploaded to the [PyPI repository](https://pypi.org/project/python-gedcom/).\n\nIf you want to use the latest pre-release of the `python-gedcom` package,\nsimply append the `--pre` option to `pip`: `pip install python-gedcom --pre`\n\n## Example usage\n\n> **For more examples:**\n> Please have a look at the test files found in the `tests/` directory.\n\nWhen successfully installed you may import the `gedcom` package and use it like so:\n\n```python\nfrom gedcom.element.individual import IndividualElement\nfrom gedcom.parser import Parser\n\n# Path to your `.ged` file\nfile_path = ''\n\n# Initialize the parser\ngedcom_parser = Parser()\n\n# Parse your file\ngedcom_parser.parse_file(file_path)\n\nroot_child_elements = gedcom_parser.get_root_child_elements()\n\n# Iterate through all root child elements\nfor element in root_child_elements:\n\n # Is the `element` an actual `IndividualElement`? (Allows usage of extra functions such as `surname_match` and `get_name`.)\n if isinstance(element, IndividualElement):\n\n # Get all individuals whose surname matches \"Doe\"\n if element.surname_match('Doe'):\n\n # Unpack the name tuple\n (first, last) = element.get_name()\n\n # Print the first and last name of the found individual\n print(first + \" \" + last)\n```\n\n## Strict parsing\n\nLarge sites like Ancestry and MyHeritage (among others) don't always produce perfectly formatted GEDCOM files.\nIf you encounter errors in parsing, you might consider disabling strict parsing which is enabled by default:\n\n```python\nfrom gedcom.parser import Parser\n\nfile_path = '' # Path to your `.ged` file\n\ngedcom_parser = Parser()\ngedcom_parser.parse_file(file_path, False) # Disable strict parsing\n```\n\nDisabling strict parsing will allow the parser to gracefully handle the following quirks:\n\n- Multi-line fields that don't use `CONC` or `CONT`\n- Handle the last line not ending in a CRLF (`\\r\\n`)\n\n## Reference\n\n> **Note**: At a later state the documentation may be outsourced into individual, automatically generated wiki pages.\n> (Makes things a little bit easier.)\n\n### `Parser` class\n\nThe `Parser` class represents the actual parser. Use this class to parse a GEDCOM file.\n\n> **Note**: May be imported via `from gedcom.parser import Parser`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`invalidate_cache` | | | Empties the element list and dictionary to cause `get_element_list()` and `get_element_dictionary()` to return updated data\n`get_element_list` | | `list` of `Element` | Returns a list containing all elements from within the GEDCOM file\n`get_element_dictionary` | | `dict` of `Element` | Returns a dictionary containing all elements, identified by a pointer, from within the GEDCOM file\n`get_root_element` | | `RootElement` | Returns a virtual root element containing all logical records as children\n`get_root_child_elements` | | `list` of `Element` | Returns a list of logical records in the GEDCOM file\n`parse_file` | `str` file_path, `bool` strict | | Opens and parses a file, from the given file path, as GEDCOM 5.5 formatted data\n`get_marriages` | `IndividualElement` individual | `tuple`: (`str` date, `str` place) | Returns a list of marriages of an individual formatted as a tuple (`str` date, `str` place)\n`get_marriage_years` | `IndividualElement` individual | `list` of `int` | Returns a list of marriage years (as integers) for an individual\n`marriage_year_match` | `IndividualElement` individual, `int` year | `bool` | Checks if one of the marriage years of an individual matches the supplied year. Year is an integer.\n`marriage_range_match` | `IndividualElement` individual, `int` from_year, `int` to_year | `bool` | Check if one of the marriage years of an individual is in a given range. Years are integers.\n`get_families` | `IndividualElement` individual, `str` family_type = `gedcom.tags.GEDCOM_TAG_FAMILY_SPOUSE` | `list` of `FamilyElement` | Return family elements listed for an individual\n`get_ancestors` | `IndividualElement` individual, `str` ancestor_type = `\"ALL\"` | `list` of `Element` | Return elements corresponding to ancestors of an individual\n`get_parents` | `IndividualElement` individual, `str` parent_type = `\"ALL\"` | `list` of `IndividualElement` | Return elements corresponding to parents of an individual\n`find_path_to_ancestor` | `IndividualElement` descendant, `IndividualElement` ancestor, `path` = `None` | `object` | Return path from descendant to ancestor\n`get_family_members` | `FamilyElement` family, `str` members_type = `FAMILY_MEMBERS_TYPE_ALL` | `list` of `IndividualElement` | Return array of family members: individual, spouse, and children\n`print_gedcom` | | | Write GEDCOM data to stdout\n`save_gedcom` | `IO` open_file | | Save GEDCOM data to a file\n\n### `Element` class\n\nAn element represents a line from within the parsed GEDCOM file.\n\nMay be imported via `from gedcom.element.element import Element`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`get_level` | | `int` | Returns the level of this element from within the GEDCOM file\n`get_pointer` | | `str` | Returns the pointer of this element from within the GEDCOM file\n`get_tag` | | `str` | Returns the tag of this element from within the GEDCOM file\n`get_value` | | `str` | Returns the tag of this element from within the GEDCOM file\n`set_value` | `str` value | `str` | Sets the value of this element\n`get_multi_line_value` | | `str` | Returns the value of this element including concatenations or continuations\n`set_multi_line_value` | `str` value | `str` | Sets the value of this element, adding concatenation and continuation lines when necessary\n`get_child_elements` | | `list` of `Element` | Returns the direct child elements of this element\n`new_child_element` | `str` tag, `str` pointer = `\"\"`, `str` value = `\"\"` | `Element` | Creates and returns a new child element of this element\n`add_child_element` | `Element` child | `Element` | Adds a child element to this element\n`get_parent_element` | | `Element` | Returns the parent element of this element\n`set_parent_element` | `Element` parent | | Adds a parent element to this element. There's usually no need to call this method manually, `add_child_element()` calls it automatically.\n`get_individual` | | `str` | **DEPRECATED**: As of version `v1.0.0` use `to_gedcom_string()` method instead.\n`to_gedcom_string` | `bool` recursive = `False` | `str` | Formats this element and optionally all of its sub-elements into a GEDCOM conform string\n\n> Casting an `Element` to a string will internally call the `to_gedcom_string()` method.\n\n#### `FamilyElement` class (derived from `Element`)\n\nMay be imported via `from gedcom.element.family import FamilyElement`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`is_family` | | `bool` | Checks if this element is an actual family\n\n#### `FileElement` class (derived from `Element`)\n\nMay be imported via `from gedcom.element.file import FileElement`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`is_file` | | `bool` | Checks if this element is an actual file\n\n#### `IndividualElement` class (derived from `Element`)\n\nRepresents a person from within the parsed GEDCOM file.\n\nMay be imported via `from gedcom.element.individual import IndividualElement`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`is_individual` | | `bool` | Checks if this element is an actual individual\n`is_deceased` | | `bool` | Checks if this individual is deceased\n`is_child` | | `bool` | Checks if this element is a child of a family\n`is_private` | | `bool` | Checks if this individual is marked private\n`get_name` | | `tuple`: (`str` given_name, `str` surname) | Returns an individual's names as a tuple: (`str` given_name, `str` surname)\n`surname_match` | `str` surname_to_match | `bool` | Matches a string with the surname of an individual\n`given_name_match` | `str` given_name_to_match | `bool` | Matches a string with the given names of an individual\n`get_gender` | | `str` | Returns the gender of a person in string format\n`get_birth_data` | | `tuple`: (`str` date, `str` place, `list` sources) | Returns the birth data of a person formatted as a tuple: (`str` date, `str` place, `list` sources)\n`get_birth_year` | | `int` | Returns the birth year of a person in integer format\n`get_death_data` | | `tuple`: (`str` date, `str` place, `list` sources) | Returns the death data of a person formatted as a tuple: (`str` date, `str` place, `list` sources)\n`get_death_year` | | `int` | Returns the death year of a person in integer format\n`get_burial_data` | | `tuple`: (`str` date, `str` place, `list` sources) | Returns the burial data of a person formatted as a tuple: (`str` date, `str\u00b4 place, `list` sources)\n`get_census_data` | | `list` of `tuple`: (`str` date, `str` place, `list` sources) | Returns a list of censuses of an individual formatted as tuples: (`str` date, `str\u00b4 place, `list` sources)\n`get_last_change_date` | | `str` | Returns the date of when the person data was last changed formatted as a string\n`get_occupation` | | `str` | Returns the occupation of a person\n`birth_year_match` | `int` year | `bool` | Returns `True` if the given year matches the birth year of this person\n`birth_range_match` | `int` from_year, `int` to_year | `bool` | Checks if the birth year of an individual lies within the given range\n`death_year_match` | `int` year | `bool` | Returns `True` if the given year matches the death year of this person\n`death_range_match` | `int` from_year, `int` to_year | `bool` | Returns `True` if the given year matches the death year of this person\n`criteria_match` | `str` criteria | `bool` | Checks if this individual matches all of the given criteria. Full format for `criteria`: `surname=[name]:given_name=[given_name]:birth[year]:birth_range=[from_year-to_year]`\n\n#### `ObjectElement` class (derived from `Element`)\n\nMay be imported via `from gedcom.element.object import ObjectElement`.\n\nMethod | Parameters | Returns | Description\n-------|------------|---------|------------\n`is_object` | | `bool` | Checks if this element is an actual object\n\n#### `RootElement` class (derived from `Element`)\n\nVirtual GEDCOM root element containing all logical records as children.\n\n## Local development\n\nI suggest using [pyenv](https://github.com/pyenv/pyenv) for local development.\n\n### Running tests\n\n1. Run `pip install --no-cache-dir -r requirements.txt` to install dependencies\n1. Run tests with [tox](https://tox.readthedocs.io/en/latest/index.html) (`tox` in your console)\n * For Python 2.7 run `tox -e py27` (you need to have Python 2.7 installed)\n * For Python 3.4 run `tox -e py34` (you need to have Python 3.4 installed)\n * For Python 3.5 run `tox -e py35` (you need to have Python 3.5 installed)\n * For Python 3.6 run `tox -e py36` (you need to have Python 3.6 installed)\n\n### Uploading a new package to PyPI\n\n1. Run `pip install --no-cache-dir -r requirements.txt` to install dependencies\n1. Run `python setup.py sdist bdist_wheel` to generate distribution archives\n1. Run `twine upload --repository-url https://test.pypi.org/legacy/ dist/*` to upload the archives to the Test Python Package Index repository\n\n> When the package is ready to be published to the real Python Package Index\nthe `repository-url` is `https://upload.pypi.org/legacy/`.\n\n## Changelog\n\nPlease have a look at the [`CHANGELOG.md`](CHANGELOG.md) file.\n\n## History\n\nThis module was originally based on a GEDCOM parser written by \nDaniel Zappala at Brigham Young University (Copyright (C) 2005) which\nwas licensed under the GPL v2 and then continued by\n[Mad Price Ball](https://github.com/madprime) in 2012.\n\nThe project was taken over by [Nicklas Reincke](https://github.com/nickreynke) in 2018.\nTogether with [Damon Brodie](https://github.com/nomadyow) a lot of changes were made and the parser was optimized.\n\n## License\n\nLicensed under the [GNU General Public License v2](http://www.gnu.org/licenses/gpl-2.0.html)\n\n**Python GEDCOM Parser**\n
Copyright (C) 2018 Damon Brodie (damon.brodie at gmail.com)\n
Copyright (C) 2018-2019 Nicklas Reincke (contact at reynke.com)\n
Copyright (C) 2016 Andreas Oberritter\n
Copyright (C) 2012 Madeleine Price Ball\n
Copyright (C) 2005 Daniel Zappala (zappala at cs.byu.edu)\n
Copyright (C) 2005 Brigham Young University\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nickreynke/python-gedcom", "keywords": "python gedcom parser", "license": "GPLv2", "maintainer": "", "maintainer_email": "", "name": "python-gedcom", "package_url": "https://pypi.org/project/python-gedcom/", "platform": "", "project_url": "https://pypi.org/project/python-gedcom/", "project_urls": { "Bug Reports": "https://github.com/nickreynke/python-gedcom/issues", "Homepage": "https://github.com/nickreynke/python-gedcom", "Source": "https://github.com/nickreynke/python-gedcom" }, "release_url": "https://pypi.org/project/python-gedcom/1.0.0/", "requires_dist": [ "setuptools ; extra == 'dev'", "wheel ; extra == 'dev'", "twine ; extra == 'dev'", "tox ; extra == 'test'" ], "requires_python": "", "summary": "A Python module for parsing, analyzing, and manipulating GEDCOM files.", "version": "1.0.0" }, "last_serial": 5050245, "releases": { "0.1.1dev": [ { "comment_text": "", "digests": { "md5": "1df331c7937c5dbb30f4fc5ec3a1dc06", "sha256": "2df30be3741c90f6933ddaefa5f2848d5caa70854ab40b18c22444804d60e4ba" }, "downloads": -1, "filename": "python-gedcom-0.1.1dev.tar.gz", "has_sig": false, "md5_digest": "1df331c7937c5dbb30f4fc5ec3a1dc06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6562, "upload_time": "2014-10-18T17:57:12", "url": "https://files.pythonhosted.org/packages/ba/93/2851d55455bbc5faadbc3ad946d90db0a73bedd38043d44862aa38c0a4c2/python-gedcom-0.1.1dev.tar.gz" } ], "0.1dev": [ { "comment_text": "", "digests": { "md5": "335b10cfa282b2b7185809039c19108c", "sha256": "771055495333e379f6aa9ea019afa86bcd05dbcba5fe275117159b38bb889760" }, "downloads": -1, "filename": "python-gedcom-0.1dev.tar.gz", "has_sig": false, "md5_digest": "335b10cfa282b2b7185809039c19108c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6161, "upload_time": "2012-11-04T20:50:05", "url": "https://files.pythonhosted.org/packages/b3/ec/679bead9bf20057fd60e3f4af5cad8b680344abfc89e512fd6af84475eed/python-gedcom-0.1dev.tar.gz" } ], "0.2.2.dev0": [ { "comment_text": "", "digests": { "md5": "2222a78d71fdbd2ed2438d950c5c51f4", "sha256": "16911aacc95dcf269f316f72d6e9ba555b7cf5946dc09317fd437367f76b7d38" }, "downloads": -1, "filename": "python_gedcom-0.2.2.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "2222a78d71fdbd2ed2438d950c5c51f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21121, "upload_time": "2018-11-19T19:27:30", "url": "https://files.pythonhosted.org/packages/58/fd/36d97254fbb5722a2e2498293ff2dd8198dd1e0f991ff99563720950742e/python_gedcom-0.2.2.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4921cf54ad4dd4ee2e86fa0957191ea", "sha256": "c1243017ae704f647266d3775e757cbbd69c5a57c45ade20fec7c7a171c00ce5" }, "downloads": -1, "filename": "python-gedcom-0.2.2.dev0.tar.gz", "has_sig": false, "md5_digest": "e4921cf54ad4dd4ee2e86fa0957191ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16734, "upload_time": "2018-11-19T19:27:31", "url": "https://files.pythonhosted.org/packages/f1/ea/ec48cae4408833ec94e6613f67778d10093d8fad0523b0165286c1c1fe81/python-gedcom-0.2.2.dev0.tar.gz" } ], "0.2.3.dev0": [ { "comment_text": "", "digests": { "md5": "71d47dbde607883ecf3835e8a6ee27fa", "sha256": "3e1f493eb98b33635ca9380138f1ed204e24b5f7a2d305db7e4b0924e5cd471c" }, "downloads": -1, "filename": "python_gedcom-0.2.3.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "71d47dbde607883ecf3835e8a6ee27fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21545, "upload_time": "2018-11-28T06:19:20", "url": "https://files.pythonhosted.org/packages/fc/f9/70c32b67eb657559a0b7213dd1d946d373811ecb59bd0dd93d1e96752671/python_gedcom-0.2.3.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b32799aaa428afeb35021801f3fb8a48", "sha256": "081514c15cdb97feabcd22871af481ace28735cf8214683fd1db235a0ab2816f" }, "downloads": -1, "filename": "python-gedcom-0.2.3.dev0.tar.gz", "has_sig": false, "md5_digest": "b32799aaa428afeb35021801f3fb8a48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17482, "upload_time": "2018-11-28T06:19:21", "url": "https://files.pythonhosted.org/packages/9c/10/bada724c846a5bd7ac6d3b4b86a10f366fb4f237911fb8597fec87ed3f93/python-gedcom-0.2.3.dev0.tar.gz" } ], "0.2.4.dev0": [ { "comment_text": "", "digests": { "md5": "cffaac5455aafb68e27a8659c889ea17", "sha256": "90959fc53631e3873c10528b0cea00f01108cb474cb7ac7672e019aeb3ef761d" }, "downloads": -1, "filename": "python_gedcom-0.2.4.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "cffaac5455aafb68e27a8659c889ea17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21904, "upload_time": "2018-12-11T20:35:08", "url": "https://files.pythonhosted.org/packages/c7/f7/6cde39d7e06f32d61de953a81996459794792675218004f13366a9bb8e7d/python_gedcom-0.2.4.dev0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c724599fc16165b563442109aea58cb3", "sha256": "ffedc3ddbd1fe6150ae4bbe48e0a52fdefa0692b828a0caa6036a5c3fcc869d0" }, "downloads": -1, "filename": "python-gedcom-0.2.4.dev0.tar.gz", "has_sig": false, "md5_digest": "c724599fc16165b563442109aea58cb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18197, "upload_time": "2018-12-11T20:35:11", "url": "https://files.pythonhosted.org/packages/97/b9/7b92d655909f499e2292476e427fc671eb157aa42b5c5af94dcb07b3b709/python-gedcom-0.2.4.dev0.tar.gz" } ], "0.2.5.dev0": [ { "comment_text": "", "digests": { "md5": "7841d00ab051ee9cf1fda83ba500f692", "sha256": "9c40210873985fe2ed95efe76cfada50713ab0434e95aee244050575c7dd2a92" }, "downloads": -1, "filename": "python_gedcom-0.2.5.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7841d00ab051ee9cf1fda83ba500f692", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22380, "upload_time": "2018-12-15T10:35:34", "url": "https://files.pythonhosted.org/packages/a8/0b/0404f92fb6f9c7e428b118adf8003d6ac3eed3fc321f991fb3ee2693429d/python_gedcom-0.2.5.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9b65f9baa8fc968ccd10137b736a7b0", "sha256": "3952ad768a4aec13a6d9f65903b6aaf431c4c725aa44048d6707f6c133355102" }, "downloads": -1, "filename": "python-gedcom-0.2.5.dev0.tar.gz", "has_sig": false, "md5_digest": "a9b65f9baa8fc968ccd10137b736a7b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22745, "upload_time": "2018-12-15T10:35:35", "url": "https://files.pythonhosted.org/packages/b5/47/85b48cfe727f649946ed4f36056bbb93c24d31f275efc01fcb428b76e4ae/python-gedcom-0.2.5.dev0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "407b605326227db382da58f4557b76cd", "sha256": "66ade46993d6900970e8cfc91652fb9eeb8aef7bc40e3de871cd726e479b190e" }, "downloads": -1, "filename": "python_gedcom-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "407b605326227db382da58f4557b76cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35530, "upload_time": "2019-04-02T14:44:16", "url": "https://files.pythonhosted.org/packages/1d/c0/20b56a9cf44fac3c25799e5a84b6a719ec7d7bc47501c9fe2b484bdabba5/python_gedcom-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0cfbc8bf30fcf078c3d6952bb8a9d15", "sha256": "675f5b0de55d76476d7acf391443aa3139320a2a9ee4bc8109d5f6798dfa0ed4" }, "downloads": -1, "filename": "python-gedcom-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d0cfbc8bf30fcf078c3d6952bb8a9d15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32513, "upload_time": "2019-04-02T14:44:18", "url": "https://files.pythonhosted.org/packages/63/c2/92300fb16e6983d64eb7db675cf118f0d467fddc913f5fbe23ad90b002b3/python-gedcom-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "407b605326227db382da58f4557b76cd", "sha256": "66ade46993d6900970e8cfc91652fb9eeb8aef7bc40e3de871cd726e479b190e" }, "downloads": -1, "filename": "python_gedcom-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "407b605326227db382da58f4557b76cd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 35530, "upload_time": "2019-04-02T14:44:16", "url": "https://files.pythonhosted.org/packages/1d/c0/20b56a9cf44fac3c25799e5a84b6a719ec7d7bc47501c9fe2b484bdabba5/python_gedcom-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0cfbc8bf30fcf078c3d6952bb8a9d15", "sha256": "675f5b0de55d76476d7acf391443aa3139320a2a9ee4bc8109d5f6798dfa0ed4" }, "downloads": -1, "filename": "python-gedcom-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d0cfbc8bf30fcf078c3d6952bb8a9d15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32513, "upload_time": "2019-04-02T14:44:18", "url": "https://files.pythonhosted.org/packages/63/c2/92300fb16e6983d64eb7db675cf118f0d467fddc913f5fbe23ad90b002b3/python-gedcom-1.0.0.tar.gz" } ] }