Merge pull request #2 from kxepal/master

Compatibility fixes
This commit is contained in:
Stefan Kögl
2012-09-12 06:39:40 -07:00
2 changed files with 19 additions and 13 deletions

View File

@@ -34,14 +34,20 @@
http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04 """
# Will be parsed by setup.py to determine package metadata
__author__ = 'Stefan Kögl <stefan@skoegl.net>'
__author__ = 'Stefan Kögl <stefan@skoegl.net>'
__version__ = '0.3'
__website__ = 'https://github.com/stefankoegl/python-json-pointer'
__license__ = 'Modified BSD License'
import urllib
from itertools import tee, izip
try:
from urllib import unquote
from itertools import izip
except ImportError: # Python 3
from urllib.parse import unquote
izip = zip
from itertools import tee
class JsonPointerException(Exception):
@@ -105,8 +111,8 @@ def set_pointer(doc, pointer, value):
>>> obj = {'foo': 2, 'bar': [{'x': 5}]}
>>> pointer = JsonPointer('/bar/0')
>>> pointer.set(obj, 10, 'y/0')
>>> obj
{'foo': 2, 'bar': [{'y': [10], 'x': 5}]}
>>> obj == {'foo': 2, 'bar': [{'y': [10], 'x': 5}]}
True
"""
pointer = JsonPointer(pointer)
@@ -121,7 +127,7 @@ class JsonPointer(object):
if parts.pop(0) != '':
raise JsonPointerException('location must starts with /')
parts = map(urllib.unquote, parts)
parts = map(unquote, parts)
parts = [part.replace('~1', '/') for part in parts]
parts = [part.replace('~0', '~') for part in parts]
self.parts = parts
@@ -217,6 +223,6 @@ class JsonPointer(object):
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
for _ in b:
break
return izip(a, b)
__author__ = 'Stefan Kögl <stefan@skoegl.net>'

View File

@@ -1,7 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import doctest
import unittest
import sys
@@ -73,7 +72,8 @@ if coverage is not None:
coverage.erase()
if coverage is None:
print("""
No coverage reporting done (Python module "coverage" is missing)
Please install the python-coverage package to get coverage reporting.
""", file=sys.stderr)
sys.stderr.write("""
No coverage reporting done (Python module "coverage" is missing)
Please install the python-coverage package to get coverage reporting.
""")
sys.stderr.flush()