{ "info": { "author": "Da_Blitz", "author_email": "code@pocketnix.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Topic :: Software Development :: Libraries" ], "description": "Objdiff\n=======\nTake 2 sets of containers and provide a (deep) delta between them\n\nThis module is used by the author to diff yaml files and on disk file trees\nand best work out how to transition from one state to another (mainly for \nwork with containers).\n\n**Note:** Requires Python 3.3 or greater due to use of '`yield from`'\n\nHow?\n----\nObjdiff uses `difflib` built into python for lists and tuples (basically sorted \nthings) and implements its own comparison code for dictionaries. User types are \ndetected via the `collections.abc.Mapping `_ \ntype and instance comparison and are treated as dictionaries (ie unsorted item \n=> value mappings)\n\nWhat does this look like?\n-------------------------\n >>> import objdiff\n >>> a = {'a': 1, 'b':[1,2,3], 'c':None}\n >>> b = {'a': 1, 'b':[1,4], 'c':'hello'}\n >>> objdiff.obj_diff(a, b)\n \n\nWe return an iterator and make use of yield from so you can process large trees \nof objects efficiently and incremental\n\n >>> from pprint import pprint\n >>> pprint(list(objdiff.obj_diff(a, b)))\n [modified(path=['c'], old=None, new='hello'),\n modified(path=['b'], old=[1, 2, 3], new=[1, 4]),\n equal(path=['a'], old=1, new=1)]\n \nExpanding out the generator we get back a bunch of tuples containing the \ncommand value, key path, before and after value\n\n >>> c = {'a':{1: None, 2: 2, 3: 3}, 'b': None}\n >>> d = {'a':{1: 1, 2: 2}, 'b': {'1':{}, '2':{'2':2}}}\n >>> pprint(list(objdiff.obj_diff(c, d)))\n [modified(path=['b'], old=None, new={'1': {}, '2': {'2': 2}}),\n modified(path=['a', 1], old=None, new=1),\n equal(path=['a', 2], old=2, new=2),\n deleted(path=['a', 3], val=3)]\n \n**Note:** in the above how you get a full list of keys to the destined object after \nthe command value.\n\nIn total there are 4 types of command, as listed below with one internal type\nthat can be ignored.\n\n * added\n * deleted\n * modified\n * equal (internal, scalar values are equal)\n\nMore documentation can be found at `Blitz works docs `_\n\n\nChangelog\n---------\n\n1.2.3 2016-08-26\n################\n * Actually include module with release\n\n1.2.2 2016-03-28\n################\n * Split out CHANGELOG to seperate file\n * Add documentation\n * Add doctests\n * Protection against PYTHONHASHSEED randomisation for doctests\n * objdiff arg names where renamed to make relationship clearer\n\n1.2.1 2016-03-26\n################\n * Add 'version guard' to prevent install on python older than version 3.3\n \n1.2 2016-03-26\n###############\n * Documentation updates\n * 'deep_update' function\n\n1.1 2016-03-24\n###############\n * Cleanups of code\n * Documentation updates\n * More infrastructure in src module\n\n1.0 2016-03-24\n###############\n * Initial release\n * Working objdiff\n * diffing of lists and dicts functions", "description_content_type": null, "docs_url": "https://pythonhosted.org/objdiff/", "download_url": "http://blitz.works/objdiff/archive/default.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://blitz.works/objdiff", "keywords": "objects diff tree difflib patch diffrence", "license": "MIT BSD", "maintainer": null, "maintainer_email": null, "name": "objdiff", "package_url": "https://pypi.org/project/objdiff/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/objdiff/", "project_urls": { "Download": "http://blitz.works/objdiff/archive/default.zip", "Homepage": "http://blitz.works/objdiff" }, "release_url": "https://pypi.org/project/objdiff/1.2.3/", "requires_dist": null, "requires_python": null, "summary": "Returns a list of commands/delta to go from one tree of objects to another", "version": "1.2.3" }, "last_serial": 2282154, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "34d1ec46a275a9136835b9059901bf83", "sha256": "4dea2731f208919241253fce21717f4a0bb0674a2e4c09ce67ec0b17143bdc49" }, "downloads": -1, "filename": "objdiff-0.1.zip", "has_sig": false, "md5_digest": "34d1ec46a275a9136835b9059901bf83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16156, "upload_time": "2016-03-24T14:28:18", "url": "https://files.pythonhosted.org/packages/a0/0b/06974bcde9392d7c5315e383c489ab5def210e13b31dcbfa4df08af012af/objdiff-0.1.zip" } ], "1.1": [ { "comment_text": "built for Linux-4.0.0-rc7-next-20150407-666-216614-gaa81933-dirty-armv7l-with-glibc2.9", "digests": { "md5": "20eb3d45e51afb34bab753b0c83b3e46", "sha256": "ce32cf5fba0674030cbdaa3c0c4786251c9a27c6f201bc0b9d70b55c8fec7f4a" }, "downloads": -1, "filename": "objdiff-1.1.linux-armv7l.zip", "has_sig": false, "md5_digest": "20eb3d45e51afb34bab753b0c83b3e46", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 3096, "upload_time": "2016-03-24T14:41:55", "url": "https://files.pythonhosted.org/packages/07/81/eccacc1bb88365fecdcb03a3007e5857f665c98d91288d399ccaed679f03/objdiff-1.1.linux-armv7l.zip" }, { "comment_text": "", "digests": { "md5": "1ba3e729083416d3d8a73bbc7d7e9ac4", "sha256": "5b94c2ff66c3f4f3a54ec18fedae31a06813732da423e38a85d54458c6f4ba82" }, "downloads": -1, "filename": "objdiff-1.1.zip", "has_sig": false, "md5_digest": "1ba3e729083416d3d8a73bbc7d7e9ac4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16843, "upload_time": "2016-03-24T14:41:41", "url": "https://files.pythonhosted.org/packages/7e/c9/4f83c8c1ad53c75820c6ea5646a48aa633a4903fdd4f6e6b02019972756b/objdiff-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "e19f99c7ba24d0d47fd2dc7a7e2df887", "sha256": "f2aee50431cb3bb037b021d7a182c765caf3ba609f4e0c481f09ee81de347ee0" }, "downloads": -1, "filename": "objdiff-1.2.tar.bz2", "has_sig": false, "md5_digest": "e19f99c7ba24d0d47fd2dc7a7e2df887", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13436, "upload_time": "2016-03-26T07:54:59", "url": "https://files.pythonhosted.org/packages/2a/90/3b031cb718635888814dc6126eb3d31829b8cbf226f8f0c5491894c531b0/objdiff-1.2.tar.bz2" }, { "comment_text": "", "digests": { "md5": "f20438d65449c074f2c4005859c6c9df", "sha256": "cee08ccc634d00c8c86f78b5ad5983ae0395d6a0c586f168effb6d6e07ab8eb0" }, "downloads": -1, "filename": "objdiff-1.2.zip", "has_sig": false, "md5_digest": "f20438d65449c074f2c4005859c6c9df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20683, "upload_time": "2016-03-26T07:55:06", "url": "https://files.pythonhosted.org/packages/9c/a2/7a4ac1565ea993945aff9868ab34e602679fac17f23e7bcd55932336cab7/objdiff-1.2.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "35d2c86aabc2dbfd671b2c5bbdf4d791", "sha256": "125998d0bbd395f8d6ca0cfe530216c0ccdc829a1133ada7eeedb0da87c313bf" }, "downloads": -1, "filename": "objdiff-1.2.1.tar.bz2", "has_sig": false, "md5_digest": "35d2c86aabc2dbfd671b2c5bbdf4d791", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13726, "upload_time": "2016-03-26T08:19:32", "url": "https://files.pythonhosted.org/packages/5c/99/e418c22e4d83891eef9c47072c82a2b661e3b21354cc68ca87d79f774615/objdiff-1.2.1.tar.bz2" }, { "comment_text": "", "digests": { "md5": "a827eac05bb5857471af83ce33c39a73", "sha256": "27e7c1ea92e41514bf6fa4185d6bd857afbe5ca63ff0ed634fe8e1c17707ab90" }, "downloads": -1, "filename": "objdiff-1.2.1.zip", "has_sig": false, "md5_digest": "a827eac05bb5857471af83ce33c39a73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21136, "upload_time": "2016-03-26T08:19:39", "url": "https://files.pythonhosted.org/packages/d5/ef/b660ebb3bb626a817051ee38f5a02c00fa500daa772e221578c51f322f68/objdiff-1.2.1.zip" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "477915f2fe7a356e6a63f05906431c6c", "sha256": "ba3c1e11807b6386b2f2dab0677709fe306b49fa987f7211363d2dc5d54775cb" }, "downloads": -1, "filename": "objdiff-1.2.2.tar.bz2", "has_sig": false, "md5_digest": "477915f2fe7a356e6a63f05906431c6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17117, "upload_time": "2016-03-28T12:42:55", "url": "https://files.pythonhosted.org/packages/c3/d0/04e14e2958f48881c4f1895978a7176d514f8d8792baafe525105184872a/objdiff-1.2.2.tar.bz2" }, { "comment_text": "", "digests": { "md5": "f3466f62637bab3c6752c3c76f0a1cac", "sha256": "562df3521e461532d22678186266182beb37b5d64e35ed040391a7755ba3d7a8" }, "downloads": -1, "filename": "objdiff-1.2.2.zip", "has_sig": false, "md5_digest": "f3466f62637bab3c6752c3c76f0a1cac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28177, "upload_time": "2016-03-28T12:43:02", "url": "https://files.pythonhosted.org/packages/ce/d6/205c0c3b65cf4f065e0b18446860693f9946386028a2f25832d8d41344eb/objdiff-1.2.2.zip" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "deef84d7358b8e60fa3739de4f0ccf51", "sha256": "9355b42502bcfa52e78d34e467b0ddab37d82d89742ace400025d9bfe14d3ba7" }, "downloads": -1, "filename": "objdiff-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "deef84d7358b8e60fa3739de4f0ccf51", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7468, "upload_time": "2016-08-15T13:31:07", "url": "https://files.pythonhosted.org/packages/88/8d/5e812e6fd8a3db76672a7489a0cf0bdeff3cf273ec49328eda78a20edd6f/objdiff-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65e64905d88d3b4c2e249908590acf79", "sha256": "ca839e7bd7fcba35c953755d7b2262d92f5de11a271051776670676d7bee481e" }, "downloads": -1, "filename": "objdiff-1.2.3.tar.bz2", "has_sig": false, "md5_digest": "65e64905d88d3b4c2e249908590acf79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17308, "upload_time": "2016-08-15T13:30:54", "url": "https://files.pythonhosted.org/packages/78/13/c895a980eeec0595434c940c588c695611806ba09adcd1a9f1ccdb6fc2a0/objdiff-1.2.3.tar.bz2" }, { "comment_text": "", "digests": { "md5": "96bc20607a84daf93e22367836af378b", "sha256": "6c633535f59590704bb34d0de77c555d77ee5a763f11051ef4092d7b2c6c7bf5" }, "downloads": -1, "filename": "objdiff-1.2.3.zip", "has_sig": false, "md5_digest": "96bc20607a84daf93e22367836af378b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29564, "upload_time": "2016-08-15T13:31:00", "url": "https://files.pythonhosted.org/packages/64/32/be1e217cd3b189158a499d4ff7215b0413e43ea51cbf123574d26e247603/objdiff-1.2.3.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "deef84d7358b8e60fa3739de4f0ccf51", "sha256": "9355b42502bcfa52e78d34e467b0ddab37d82d89742ace400025d9bfe14d3ba7" }, "downloads": -1, "filename": "objdiff-1.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "deef84d7358b8e60fa3739de4f0ccf51", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7468, "upload_time": "2016-08-15T13:31:07", "url": "https://files.pythonhosted.org/packages/88/8d/5e812e6fd8a3db76672a7489a0cf0bdeff3cf273ec49328eda78a20edd6f/objdiff-1.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65e64905d88d3b4c2e249908590acf79", "sha256": "ca839e7bd7fcba35c953755d7b2262d92f5de11a271051776670676d7bee481e" }, "downloads": -1, "filename": "objdiff-1.2.3.tar.bz2", "has_sig": false, "md5_digest": "65e64905d88d3b4c2e249908590acf79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17308, "upload_time": "2016-08-15T13:30:54", "url": "https://files.pythonhosted.org/packages/78/13/c895a980eeec0595434c940c588c695611806ba09adcd1a9f1ccdb6fc2a0/objdiff-1.2.3.tar.bz2" }, { "comment_text": "", "digests": { "md5": "96bc20607a84daf93e22367836af378b", "sha256": "6c633535f59590704bb34d0de77c555d77ee5a763f11051ef4092d7b2c6c7bf5" }, "downloads": -1, "filename": "objdiff-1.2.3.zip", "has_sig": false, "md5_digest": "96bc20607a84daf93e22367836af378b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29564, "upload_time": "2016-08-15T13:31:00", "url": "https://files.pythonhosted.org/packages/64/32/be1e217cd3b189158a499d4ff7215b0413e43ea51cbf123574d26e247603/objdiff-1.2.3.zip" } ] }